ROS機器人系統學習——踩坑之路


推薦學習教程:深藍學院 機器人操作系統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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM