General Concepts¶

Lassen Sie uns das ROS-System von einer sehr hohen Ebene aus betrachten. Sie brauchen sich keine Gedanken darüber zu machen, wie irgendetwas von dem Folgenden funktioniert, wir werden das später behandeln.

ROS beginnt mit dem ROS Master. Der Master ermöglicht es allen anderen ROS-Programmen (Nodes), einander zu finden und miteinander zu kommunizieren, so dass wir nicht mehr ausdrücklich sagen müssen: „Sende diese Sensordaten an den Computer unter 127.0.0.1“, sondern einfach Node 1 anweisen können, Nachrichten an Node 2 zu senden.

Wie machen Nodes das? Durch das Veröffentlichen und Abonnieren von Themen.

Angenommen, wir haben eine Kamera auf unserem Roboter. Wir möchten die Bilder der Kamera sowohl auf dem Roboter selbst als auch auf einem anderen Laptop sehen.

In unserem Beispiel haben wir einen Kameraknoten, der sich um die Kommunikation mit der Kamera kümmert, einen Bildverarbeitungsknoten auf dem Roboter, der die Bilddaten verarbeitet, und einen Bildanzeigeknoten, der die Bilder auf einem Bildschirm anzeigt. Stellen Sie sich den Master als eine Nachschlagetabelle vor, an die sich alle Knoten wenden, um herauszufinden, wohin genau sie Nachrichten senden sollen.

Bei der Registrierung beim ROS-Master gibt der Kameraknoten an, dass er ein Thema namens /image_data (zum Beispiel) veröffentlichen wird.Die beiden anderen Knoten registrieren, dass sie das Topic /image_data abonniert haben.

Sobald der Kameraknoten also Daten von der Kamera erhält, sendet er die Nachricht /image_data direkt an die beiden anderen Knoten. (Im Wesentlichen über TCP/IP)

Nun werden Sie vielleicht denken, was ist, wenn ich möchte, dass der Bildverarbeitungsknoten zu einem bestimmten Zeitpunkt Daten vom Kameraknoten anfordert? Um dies zu tun, implementiert ROS Dienste.

Ein Knoten kann einen bestimmten Dienst beim ROS-Master registrieren, genauso wie er seine Nachrichten registriert.

Im folgenden Beispiel fordert der Bildverarbeitungsknoten zunächst /image_data an, der Kameraknoten sammelt Daten von der Kamera und sendet dann die Antwort.