7.1.7-Veelgebruikte componenten en functies van ROS

Gedistribueerde communicatie in ROS

ROS (Robot Operating System) is ontworpen als een gedistribueerde rekenomgeving. Dit betekent dat een actief ROS-systeem kan bestaan uit meerdere nodes die verspreid zijn over meerdere machines. Afhankelijk van de configuratie kan elke node op elk moment met elke andere node moeten communiceren.

Om dit mogelijk te maken, stelt ROS specifieke netwerkeisen:

  1. Er moet volledige bidirectionele connectiviteit zijn tussen alle machines op alle poorten.
  2. Elke machine moet zichzelf aankondigen met een naam die door alle andere machines kan worden omgezet.

Implementatiestappen

1. Voorbereiding

Zorg er voordat u ROS configureert voor gedistribueerde communicatie voor dat de verschillende computers zich in hetzelfde netwerk bevinden. Idealiter krijgt elke computer een statisch IP-adres toegewezen. Als u virtuele machines gebruikt, moet u de netwerkadapterinstelling wijzigen in "Bridged Mode" zodat ze op hetzelfde netwerk kunnen communiceren.

2. Configuratiebestanden aanpassen

Op elke computer moet u het bestand /etc/hosts aanpassen om de IP-adressen en hostnamen van de andere machines op te nemen.

  • Op de hostmachine:

    Voeg het IP-adres en de hostnaam van de slavemachine toe.

    plaintext
    <Slave_IP_Address>    <Slave_Hostname>
  • Op de slavemachine:

    Voeg het IP-adres en de hostnaam van de hostmachine toe.

    plaintext
    <Host_IP_Address>    <Host_Hostname>

Nadat u de /etc/hosts-bestanden hebt bijgewerkt, gebruikt u het ping-commando om te testen of de machines met elkaar kunnen communiceren:

  • IP-adres controleren: Gebruik ifconfig of ip addr show.
  • Hostnaam controleren: Gebruik hostname.

3. Het IP-adres van de hostmachine configureren

Op de hostmachine moet u het IP-adres configureren door de volgende regels toe te voegen aan het bestand ~/.bashrc:

bash
export ROS_MASTER_URI=http://<Host_IP_Address>:11311
export ROS_HOSTNAME=<Host_IP_Address>

Deze regels stellen ROS_MASTER_URI in op het IP-adres van de hostmachine, wat ROS vertelt waar de masternode (roscore) draait. ROS_HOSTNAME stelt de hostnaam in van de machine die ROS zal gebruiken.

4. Het IP-adres van de slavemachine configureren

Op elke slavemachine (u kunt meerdere slaves hebben) moet u ook het bestand ~/.bashrc aanpassen door toe te voegen:

bash
export ROS_MASTER_URI=http://<Host_IP_Address>:11311
export ROS_HOSTNAME=<Slave_IP_Address>

Deze configuratie laat elke slavemachine wijzen naar de ROS-master van de host, zodat ze kunnen deelnemen aan het ROS-netwerk.

De setup testen

1. Start roscore op de hostmachine

Start op de hostmachine de ROS-masternode door uit te voeren:

bash
roscore

Deze stap is cruciaal omdat de ROS-masternode de communicatie tussen verschillende nodes in het ROS-netwerk beheert.

2. Test de communicatie van host naar slave

  • Op de hostmachine: Start een subscriber-node.
  • Op de slavemachine: Start een publisher-node.

Controleer of de nodes zoals verwacht kunnen communiceren.

3. Test de communicatie van slave naar host

  • Op de slavemachine: Start een subscriber-node.
  • Op de hostmachine: Start een publisher-node.

Verifieer opnieuw of de communicatie tussen de nodes correct werkt.