Generelle begreber¶

Lad os se på ROS-systemet fra et meget højt niveau. Der er ingen grund til at bekymre sig om, hvordan noget af det følgende fungerer, det vil vi dække senere.

ROS starter med ROS Master. Masteren gør det muligt for alle andre ROS-softwarestykker (Nodes) at finde og tale sammen. på den måde behøver vi aldrig specifikt at sige “Send disse sensordata til den computer på 127.0.0.0.1. Vi kan blot bede Node 1 om at sende meddelelser til Node 2.”

Hvordan gør Nodes det? Ved at udgive og abonnere på emner.

Lad os sige, at vi har et kamera på vores robot. Vi vil gerne kunne se billederne fra kameraet, både på selve robotten og på en anden bærbar computer.

I vores eksempel har vi en Camera Node, der tager sig af kommunikationen med kameraet, en Image Processing Node på robotten, der behandler billeddata, og en Image Display Node, der viser billederne på en skærm. Til at begynde med har alle noder registreret sig hos masteren. tænk på masteren som en opslagstabel, hvor alle noder går hen for at finde ud af, hvor de præcis skal sende meddelelser hen.

I registreringen hos ROS-masteren angiver kameranoden, at den vil offentliggøre et emne kaldet /image_data (for eksempel).Begge de andre noder registrerer, at de erSubscribed to the Topic /image_data.

Når kameraknuden modtager nogle data fra kameraet, sender den således /image_data-meddelelsen direkte til de to andre noder. (Gennem det, der i det væsentlige er TCP/IP)

Nu tænker du måske: Hvad nu, hvis jeg ønsker, at billedbehandlingsnoden skal anmode om data fra kameranoden på et bestemt tidspunkt? For at gøre dette implementerer ROS Services.

En node kan registrere en specifik service hos ROS Master, ligesom den registrerer sine meddelelser.I nedenstående eksempel anmoder billedbehandlingsnoden først om /image_data, kamera-noden indsamler data fra kameraet og sender derefter svaret.