序
ROS多機通信就是多個裝有ROS的不同計算機之間共用同一個ROS主機(Master)實現節點與話題共享,本人經驗建議當你遇到以下問題時候可以嘗試使用多機通信解決:
Case①: 一個team多個成員共同開發一個ROS項目,但是不同成員可能安裝的ubuntu版本與ROS版本不同,當需要將各個成員完成的模塊進行集成調試時可以使用多機通信;
Case②: 當你要使用一個ROS包卻發現使用軟件源下載提示未發現軟件包,這種問題的基本原因就是你要下載的包不匹配你的ubuntu版本(包括32位、64位區分)、ros版本,這種情況你可以找一臺裝有匹配的ROS版本的電腦(或者虛擬機再安裝一個ubuntu及ROS),在兩臺計算機上進行交互調試。
下面就直接開始設置,假設你有兩臺計算機A和B(在同一局域網下),現在要設置A爲主機。
一、網絡設置
1. 分別查看兩臺計算機IP與名稱
//分別打開A、B兩臺計算機終端並在其中輸入:
$ ifconfig
//查看ip
$ hostname
//查看name
IP查看結果(當然點擊右上角系統設置,直接打開網絡也可以看到ip地址):
Name查看結果:
2. 查看計算機之間能否通信
方法:在A、B計算機終端分別ping對方IP地址,命令如下:
//在A機終端輸入:ping B機IP :
$ ping 192.168.0.104 //IP根據自己實際情況
//B機終端同上
若通信成功,可以看到顯示接收到包的time,通常是0.3ms左右;
若顯示以下結果,則通常是物理連接的問題,檢查你的網線跟路由器設置:
From 192.168.1.2 icmp_seq=3 Destination Host Unreachable
3.修改A、B機hosts文件內容,並重啓網絡設置使其生效
在A、B機上分別打開hosts文件終,端命令:
$ sudo gedit /etc/hosts
然後在文件末添加A、B的IP與hostname(IP與hostname爲上面步驟1查看的結果)並保存(其中紅色區域爲添加的部分,注意這裏在A、B添加的內容是一樣的,添加時候不帶[]):
添加完成後重啓A、B兩機網絡設置,終端命令:
sudo /etc/init.d/networking restart
二、ROS環境設置
分別在A、B兩機上打開~/.bashrc 文件,在文件最後添加ROS主機與分機環境變量(這裏A、B兩機修改內容一樣,add爲修改內容),命令:
$ sudo gedit ~/.bashrc //打開hosts文件
export ROS_HOSTNAME=hostname_B #add
export ROS_MASTER_URI=http://hostname_A:11311 #add
//hostname爲上面步驟1的查看結果
以下爲本人電腦上設置,其中X230爲主機:
三、通信測試
打開主機A,終端roscore啓動ROS,在主機B中直接rostopic list 查看話題,如下圖若可以查看到話題則表示成功: