本篇文章實現多臺計算機之間的ROS通訊,筆記本作爲master,放在turtlebot機器人上面,所有指令均在臺式機上操作。特別要注意的是多臺計算機都必須在一個網絡中,比如連接同一個路由器即可。在本文中筆記本連接ywifi,臺式機通過網線連接路由器。
一、時間同步
在臺式機和筆記本上分別運行:
sudo apt-get install chrony
二、獲得主機名hostname
1.在筆記本上運行
hostname
得到筆記本的主機名爲jenny 如下圖所示:
2.同理在臺式機上運行hostname得到我臺式機的主機名爲jennyvv
三、獲得臺式機和筆記本的IP
1.在筆記本上運行
ifconfig
得到筆記本的IP地址爲192.168.1.1042.同理在臺式機上運行ifconfig得到臺式機的IP地址爲 192.168.1.110
四、修改/etc文件夾下的hosts文件,將兩電腦的IP和主機名綁定
首先安裝gksu
sudo apt-get install gksu
打開文件gksu gedit /etc/hosts
以 IP hostname 的形式添加,如下圖所示:
同理在臺式機上也要如此操作。
五、修改~/.bashrc文件
本文中將筆記本jenny作爲主機master, 通過如下命令編輯~/.bashrc文件
gedit ~/.bashrc
在筆記本這邊的~/.bashrc文件最後添加export ROS_HOSTNAME=jenny
export ROS_MASTER_URI=http://jenny:11311
在臺式機上的~/.bashrc文件最後添加
export ROS_HOSTNAME=jennyvv
export ROS_MASTER_URI=http://jenny:11311
六、正式開始通訊
1.相互ping
在筆記本上ping臺式機:
ping jennyvv
得到的結果如下:
同時在臺式機上運行
ping jenny
得到與上圖相似的結果即爲通訊成功。2.小例子:筆記本上發送命令控制檯式機上的小海龜作正方形運動,所有指令均在臺式機上面操作
A.首先在臺式機上面運行ssh進入到筆記本中
ssh jenny
若出現ssh:connect to host jenny port 22: Connect refused
這是因爲jenny筆記本上沒有安裝ssh服務器,通過如下指令安裝
sudo apt-get install openssh-server
再次運行ssh jenny,輸入密碼,當臺式機上@後面的主機名由@jennyvv變爲@jenny後即爲成功。
B.接着在上面那個終端後面運行(此時主機名爲@jenny)
roscore &
此時完成了在臺式機上控制筆記本運行節點管理器roscore
C.在臺式機上的新終端中啓動小海龜
rosrun turtlesim turtlesim_node
ssh jenny
rosrun turtlesim draw_square
此時就可以看到小海龜在畫正方形的框了。
參考 《ros by example》第一版中的4.12章節
參考鏈接:https://blog.csdn.net/heyijia0327/article/details/42080641