ros主從機通訊
技術標籤:ROS
1、檢視主從機的ip,並互相ping(主機為A,從機為B)
ip檢視指令ifconfig
假設:
A的ip為:192.168.0.1
B的ip為:192.168.0.2
互相ping對方,只有ping通了才能實現通訊
2、互相修改hosts檔案
首先檢視各自的hostname,在終端裡輸入hostname即可
假設:
主機A的hostname為:hostA
從機B的hostname為:hostB
然後修改主從機的 /etc/hosts 檔案
主機A:
新增從機的相關資訊
192.168.0.2 hostB
從機B:
新增主機的相關資訊
192.168.0.1 hostA
3、設定主從機的.bashrc檔案(zsh對應的.zshrc檔案)
分別修改主從機的.bashrc檔案
主機A新增:
export ROS_HOSTNAME=hostA
export ROS_MASTER_URI=http://192.168.0.1:11311 ##主機的ip
export ROS_IP=192.168.0.1 ##主機的ip
從機B新增:
export ROS_HOSTNAME=hostB ##這個不設定,可能出現主機無法列印從機資訊 export ROS_MASTER_URI=http://192.168.0.1:11311 ##主機的ip export ROS_IP=192.168.0.1 ##我的測試裡主機的ip和從機的ip都可以,去掉也可以
4、測試
要實現雙向的通訊測試,不止要通過 rostopic list 指令檢視是否有接收調對方的topic,還要通過rostopic echo /“topicname” 列印一下,(有時候列表有顯示,但所列印不了,同樣無法實現雙向的控制)
測試方法:1、主從機各自發送topic,互相顯示topic內容;2、使用小烏龜教程,互相作為控制和顯示端,進行測試。
小烏龜為例:
1、在主機中啟動roscore
2、
在主機中啟動顯示程式:
rosrun turtlesim turtlesim_node
在從機中啟動控制程式:
rosrun turtlesim turtle_teleop_key
在從機中輸入上下左右健,看小烏龜是否動作
3、
在從機中啟動顯示程式:
rosrun turtlesim turtlesim_node
在主機中啟動控制程式:
rosrun turtlesim turtle_teleop_key
在主機中輸入上下左右健,看小烏龜是否動作
雙向控制都可以,證明設定成功
參考:
ROS 的工作過程及通訊原理
一遍成功的ROS主從機詳細配置
ROS中設定多機通訊(主從機配置)的方法以及常見問題(節選自ROS2GO手冊)