0%

ROS Re-visit

1. Intro

ROS is too heavy for new project with little dependence on open-source project.

Plan: Understand the design and philosophy of ROS1 and ROS2, design my own robotics stack

2. ROS1

2.1. Philosophy and Design Principles

Goal: to support code reuse in robotics

  • as thin as possible? Really?
  • ROS-agnostic
  • Scaling
  • Test, Language

How: Node for executables to be run individually

2.2. Architecture

Ref

Two concepts

Filesystem:

  1. Package
  2. Metapackage
  3. Package Minifests
  4. Repositories
  5. Message Type
  6. Service Type: request and response

Computation Graph:

  • Node
  • Master: name registration, help node find each other
  • Parameter Server: allow data store in central location
  • Message: Nest data
  • Topics: one way
  • Services: good for request reply interaction
  • Bags: storing data

2.3. Middleware

  • Master is implemented via XMLRPC, HTTP based protocal
  • Node
  • Slave API: XMLRPC API, receiving callbacks
  • Topic transport protocal: TCPROS, UDPROS
  • Command-line API
  • Topic: TCP, UDP
  • Message serialization:

3. ROS2

Ref

Why?

  • Multiple Robots
  • Less computation
  • Real time
  • Non ideal network
  • Production
  • Clear pattern
  • New API
  • Use open-source middleware

Most important change: use DDS as middleware

4. New

new middleware

new build (ament)

c++11

4.1. Philosophy and Design Principles

De-centralized nature

4.2. Architecture

Very similar with ROS1, but add discovery

ros-architecture

4.3. Middleware

Apply open-source software

Has a abstract middleware interface

DDS: end2end middleware

  • Publish, subscribe transport
api_levels img