Tartalom
  1. ROS 1 (ROS) alapfoglamak
    1. Verziók
  2. Koncepciók
    1. Nodes
    2. Topics
    3. Messages
      1. Üzenetek típusai
    4. Publishing / Subscribing
    5. Parameters
    6. Launch fájlok
    7. ROS Master

ROS 1 (ROS) alapfoglamak

Az ROS olyan szoftverkönyvtárak és eszközök készlete (middleware), amelyek segítenek robotalkalmazások fejlesztésében. Definíció szerint a middleware egy szoftver komponenseket összekötő szoftver. Olyan réteg, amely az operációs rendszer és az alkalmazások között helyezkedik el az elosztott számítógépes hálózat mindkét oldalán.

A legtöbb robotikai fejlesztő már a robtika hajnalán úgy gondolta, hogy nem célszerű minden robotnak teljesen egyedi szoftvert létrehozni, célszerűbb lenne valamilyen keretrendszerben gondolkozni. Erre az igényre volt az egyik válasz az ROS. Az egységes mértékegységek, standardizált kommunkáció, beépített vizualizációs és debug lehetőségek miatt ma az egyik legnépszerűbb ilyen rendszer.

Verziók

ROS verziók és telepítés

Melodic

Noetic

Koncepciók

Nodes

A node legegyszerűbben fogalmazva ROS programot (magyarosítva csomópont) jelent. Jellemzőik:

  • “Végrehajthatóak” (c++ / py).
  • Minden node egy folyamat
  • ROS kezeli a szálakat (threading).
  • Egy node belsejében több szál is lehet.
  • publish/subscribe to topics.
  • Több node is “közzétehet” egy topicra, és egy node több topicot is “meghallgathat”.

Topics

  • A node-ok közötti információ áramlásért felel.
  • Minden topic típusát az “üzenet” határozza meg
  • A node-ok között megengedett a “many-to-many” kommunikáció

Messages

  • Egy topic tartalmát és szerkezetét az üzenet határozza meg
  • Alkalmazásprogramozási interfész (API) a Node-ok számára .msg kiterjesztésű fájlokban vannak definiálva

Üzenetek típusai

  • Primitive built-in types (std_msgs)
    • bool, string, float32, int32,
  • Higher-level built in types:
    • geometry_msgs: Point, Polygon, Vector, Pose, PoseWithCovariance,
    • nav_msgs: OccupancyGrid, Odometry, Path,
    • sensors_msgs: Joy, Imu, NavSatFix, PointCloud, LaserScan, …
  • Támogatottak továbbá:
    • Konstansok
    • Felsorolások
    • Beágyazott definíciók

Példa:

$ rosmsg show geometry_msgs/Point
float64 x
float64 y
float64 z
$ rosmsg show std_msgs/Header
uint32 seq
time stamp
string frame_id

A Header és aPoint a típusból épül fel a PoseStamped típus struktúrája:

$ rosmsg show geometry_msgs/PoseStamped
std_msgs/Header header
  uint32 seq
  time stamp
  string frame_id
geometry_msgs/Pose pose
  geometry_msgs/Point position
    float64 x
    float64 y
    float64 z
  geometry_msgs/Quaternion orientation
    float64 x
    float64 y
    float64 z
    float64 w

Publishing / Subscribing

A következőkben az urban_road_filt nevű node a points adatokra iratkozik fel, ami PointCloud2 típusú, és hirdet PointCloud2, MarkerArray típusú üzeneteket:

flowchart LR

P[points]:::light -->|sensor_msgs/PointCloud2| U([urban_road_filt]):::red
U --> |sensor_msgs/PointCloud2| A[curb]:::light
U --> |sensor_msgs/PointCloud2| B[road]:::light 
U --> |sensor_msgs/PointCloud2| C[road_probably]:::light
U --> |sensor_msgs/PointCloud2| D[roi]:::light
U --> |visualization_msgs/MarkerArray| E[road_marker]:::light

n1([ /node]):::white -- publishes</br>topic_type --> t[ /topic]:::white
t -- subscribes</br>topic_type --> n2([ /node]):::white

classDef light fill:#34aec5,stroke:#152742,stroke-width:2px,color:#152742  
classDef dark fill:#152742,stroke:#34aec5,stroke-width:2px,color:#34aec5
classDef white fill:#ffffff,stroke:#152742,stroke-width:2px,color:#152742
classDef red fill:#ef4638,stroke:#152742,stroke-width:2px,color:#fff

Parameters

  • Publish/Subscribe segítségével nem írható le minden
  • A Node-oknak néha szükségük lehet paraméterezésre
  • Paraméterek lehetnek:
    • Vezérlő típusa
    • Szín küszöbértékek;
    • Kamera felbontás, stb

Launch fájlok

Több node (ROS program) kötegelt végehajtása. XML formátumú fájl, amely az ROS szinte minden aspektusát / műveletét meghatározhatja. Node indítás, paraméterek beállítása / betöltése, topic leképezése, parancssori argumentumok átadása.

ROS Master

  • Egy speciális node
  • Összekapcsolja a publisher és subscriber node-okat a topic-okon keresztül
  • Segíti a node-ok közti kommunikációt
  • Tényleges forgalom nem megy rajta keresztül
  • TCP/IP protokoll

ROS bevezetés (online google prezentáció magyarul)