一、ROS分布式多機通訊簡介
ROS是一種分布式軟件框架,節點之間通過松耦合的方式組合,在很多應用場景下,節點可以運行在不同的計算平台上,通過Topic,Service通信。
但是各個節點只能共同擁有一個Master,在多機系統中Master只能運行在一台機器上,其他機器通過ssh方式和Master取得聯系。所以多機ROS系統需要進行一些配置。
二、兩台電腦的ROS通訊配置
兩台機器的hostname與IP假設如下:
主機名與IP地址為:A IP_A
從機名與IP地址為:B IP_B
1:先使用下面命令查看兩台計算機的局域網IP地址
ifconfig
然后打開hosts文件:
sudo gedit /etc/hosts
接着在hosts中加入(間隔為tab鍵):
IP_A A
IP_B B
2:重啟網絡服務:
sudo /etc/init.d/networking restart
3:裝上chrony包,用於實現同步:
sudo apt-get install chrony
4:安裝ssh工具
sudo apt-get install openssh-server
安裝完以后,確認服務器是否已經啟動:
ps -e|grep ssh
如果看到sshd那說明ssh-server已經啟動了。
5:相互ping一下對方機子,看網絡通不通:
ping A //主機
pnig B //從機
對主機與從機相同地執行上述操作,第六條略有不同
6:把下面的內容增加到.bashrc末尾
export ROS_HOSTNAME=[本機的hostname] #!!!注意是本機的hostname 端口號11311是固定值,照抄即可 export ROS_MASTER_URI=http://[主機的hostname]:11311
執行以下命令,使之有效:
source ~/.bashrc
三、注意事項
如果在從機運行一個roslaunch,需要現在主機上運行roscore后,從機才能啟動起來。
原本一個pc上運行roslaunch的時候,會默認啟動rosmaster,但是現在主機是另一個pc了,所以需要這樣先把master跑起來
盡量把最常用的pc設置為master。