Allmänna begrepp¶

Låt oss titta på ROS-systemet från en mycket hög nivå. Du behöver inte oroa dig för hur något av följande fungerar, vi kommer att ta upp det senare.

ROS börjar med ROS Master. Mästaren gör det möjligt för alla andra ROS-programvaror (noder) att hitta och prata med varandra.På så sätt behöver vi aldrig specifikt säga ”Skicka dessa sensordata till den där datorn på 127.0.0.1.” Vi kan helt enkelt säga till nod 1 att skicka meddelanden till nod 2.

Hur gör noderna det här? Genom att publicera och prenumerera på ämnen.

Vi kan säga att vi har en kamera på vår robot. Vi vill kunna se bilderna från kameran, både på själva roboten och på en annan bärbar dator.

I vårt exempel har vi en kameranod som sköter kommunikationen med kameran, en bildbehandlingsnod på roboten som behandlar bilddata och en bildvisningsnod som visar bilderna på en skärm. Till att börja med har alla noder registrerat sig hos Master.Tänk på Master som en uppslagstabell dit alla noder går för att hitta exakt vart de ska skicka meddelanden.

I registreringen hos ROS Master uppger kameranoden att den kommer att publicera ett ämne som heter /image_data (till exempel).Båda de andra noderna registrerar att de ärSubscribed to the Topic /image_data.

När kameranoden tar emot data från kameran skickar den alltså meddelandet /image_data direkt till de två andra noderna. (Genom vad som i huvudsak är TCP/IP)

Nu kanske du tänker, vad händer om jag vill att bildbehandlingsnoden ska begära data från kameranoden vid en viss tidpunkt? För att göra detta implementerar ROS tjänster.

En nod kan registrera en specifik tjänst hos ROS Master, precis som den registrerar sina meddelanden.I exemplet nedan begär bildbehandlingsnoden först /image_data, kameranoden samlar in data från kameran och skickar sedan svaret.