Table of Contents
< ros
Configurazione network
http://wiki.ros.org/ROS/NetworkSetup
Un sistema ROS può essere composto da centinaia di nodi, sparsi su diversi calcolatori. I nodi potrebbero aver bisogno di comunicare tra loro.
Esempio con due computer, su rete locale, ma vale ovunque:
- marvin.example.com : 192.168.1.1
- hal.example.com : 192.168.1.2
NOTA: Solo uno dei due esegue ros core
Testare la rete
Pingare se stesso e gli altri (tutte le macchine reciprocamente)
mario@hal ~ $ hostname mario@hal ~ $ ping hal mario@hal ~ $ ping 192.168.1.2 mario@hal ~ $ ping marvin
In certi casi si può modificare il file /etc/hosts, oppure usare una variabile di ambiente che specifica dove si trova il server ros core
export ROS_IP=10.0.0.1
Nel caso di test locali, prima di avviare ROS CORE impostare
export ROS_HOSTNAME=localhost export ROS_MASTER_URI=http://localhost:11311
Avviare ROS
http://wiki.ros.org/ROS/Tutorials/MultipleMachines
- Tutti i node devono essere configurati per usare lo stesso master, tramite ROS_MASTER_URI.
export ROS_MASTER_URI=http://hal:11311
- Avviare master: roscore va avviato sulla macchina hal
- avviare un listner:
rosrun rospy_tutorials listener.py
- avviare un talker:
rosrun rospy_tutorials talker.py
Ora per magia, grazie all'intermediario ROSCORE, il listner pur trovandosi su una macchina diversa dal talker, riesce ad ascoltare i suoi messaggi. Ovviamente non è obbligatorio che il listner si trovi sulla stessa macchina dove si trova roscore.
Non devo scrivere applicazioni che usano il protocollo TCP o UDP. Basta che sull'altro host ci sia installato (e configurato) ROS e rosrun….
Provare:
rostopic list
Esempio di talker e Subscriber
http://wiki.ros.org/roscpp_tutorials/Tutorials/WritingPublisherSubscriber
Nel mio computer, quando avvio roscore, ottengo in output
started roslaunch server http://pcmobile:36039/ ros_comm version 1.11.13 SUMMARY ======== PARAMETERS * /rosdistro: indigo * /rosversion: 1.11.13 NODES auto-starting new master process[master]: started with pid [4188] ROS_MASTER_URI=http://pcmobile:11311/
Elenco nodi (hostname, nel mio caso vale pcmobile)
rosnode machine pcmobile
/base_controller_spawner /ekf_localization /gazebo /robot_state_publisher /rosout /twist_marker_server /twist_mux