推薦學習教程:深藍學院 機器人操作系統ROS理論與實踐學習
在學習到第2講ROS基礎的分布式通信時,一直卡在這里,主機開啟小海龜后,從機雖然可以通過
rostopic list
列出當前的所有topic列表,但是訂閱不成功,后來經過一天的各種找資料,找到一篇博文(ROS多機的通訊配置:https://www.jianshu.com/p/69815d79d37f),終於找到問題所在,和ROS_IP的配置有關系,特此記錄下!!!
下面開始搬磚了
多機通訊
想在PC上直接按鍵控制樹莓派上的烏龜運動,要如何操作呢?
主機與樹莓派信息如下:
Item | IP | Hostname |
---|---|---|
PC | 192.168.31.111 |
robot-dekstop |
樹莓派 | 192.168.31.107 |
pi-desktop |
相互ip可以通,因為未添加hostname ip映射,相互無法通過hostname聯系
1.在樹莓派上運行roscore
和啟動turtlesim_node
2.PC上想要與之通訊首先必須設置ROS_MASTER_URI
,export ROS_MASTER_URI='http:192.168.31.107:11311'
即可,在PC中斷輸入rostopic
list即可看到當前的所有topic列表,說明PC已經可以與ROS_MASTER建立通訊了
3.這時PC端啟動rosrun turtlesim turtle_teleop_key
無法控制烏龜運動,為什么呢?這里明明rostopic
明明可以看到/turtle/cmd_vel
。 鍵入rostopic info /turtle/cmd_vel
顯示如下
這就明顯了,主機從master里面取到的node發送/訂閱的topic
信息,node
地址為http://pi-desktop:46395
, PC根本不認識pi-desktop
為何物,自然無法發送數據。
4.如何修改?自然有2個方法:
- 這個我不認識換個我認識的來,修改樹莓派端的
ROS_IP
環境變量export ROS_IP=192.168.31.107
再次查看topic
信息,

- 現在就認識了,啟動
rosrun turtlesim turtle_teleop_key
節點,發現仍然無法控制。問題是我認識你,可是你不認我啊,所有本地PC也需要export ROS_IP=192.168.31.111
,現在就正常了 - 這個我不認識,我現在認識下不就行了,PC端修改
/etc/hosts
添加一個192.168.31.107 pi-desktop
,同時樹莓派端一樣修改/etc/hosts
添加192.168.31.111 robot-desktop