1. 程式人生 > 其它 >ros主從機通訊

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手冊)