1. 程式人生 > >ROS 教程之 network:多臺計算機之間網路通訊(2)

ROS 教程之 network:多臺計算機之間網路通訊(2)

    在上一篇文章中我們已經搭建好了兩臺計算機間通訊的條件,但是每次都需要在新的終端裡輸入一長串export ROS_MASTER_URI之類的。實際弄起來的時候也不方便,因此在本文中,我們更進一步,簡化兩臺計算機通訊的操作。並通過兩個例子,讓你感受感受ROS這種分散式架構和網路通訊的強大,使得你的兩臺計算機就像一臺計算機一樣處理程式。通過網路通訊,所有的節點你可以執行在任意一臺電腦上。

一、修改.bashrc檔案

      修改這個檔案的目的是為了配置ROS的環境變數,ROS必須知道有哪些機器在執行,因此的知道每一臺機器的名字,這可以通過設定ROS_HOSTNAME環境變數為每一臺機器本身的主機名來完成。另外,必須給ROS提供master節點的URI,在上一章中我們也看到了,各個節點都是通過這個URI指向master,也就是指向執行roscore的那個節點。

      在兩臺電腦上都使用下面的命令來編輯.bashrc檔案:

gedit ~/.bashrc
在臺式機這邊在bashrc檔案的最後新增:
export ROS_HOSTNAME=desktop_hostname
export ROS_MASTER_URI=http://laptop_hostname:11311
在筆記本那邊,最後新增:
export ROS_HOSTNAME=laptop_hostname
export ROS_MASTER_URI=http://laptop_hostname:11311
注意:我們這裡的新增方式裡面ROS_MASTER_URI都是指向的筆記本的主機名,說明是在筆記本上執行roscore
.

二、開始測試網路通訊了 -- enjoy time!

      下面我們來一個簡單的遙控程式,筆記本上發出控制指令遙控桌上型電腦上的一個小漁龜:

      1.首先在我們的筆記本上,也就是移動機器人那一端開啟roscore

      2.然後在臺式機上啟動小漁龜的模擬節點:

rosrun turtlesim turtlesim_node
   

   3.然後在筆記本上新開一個終端,遙控小漁龜:

rosrun turtlesim draw_square
    這時候你就可以看到桌上型電腦上的小漁龜正在走正方形了。

當然我們也可以試試《Ros by Example 1》的move_base例程,在臺式機上用rviz進行觀察:

在筆記本上:

執行 roscore

然後新開一個終端輸入:

roslaunch rbx1_bringup fake_turtlebot.launch
在筆記本上再新開一個終端輸入:
roslaunch rbx1_nav fake_move_base_blank_map.launch
在臺式機上執行Rviz:
rosrun rviz rviz -d `rospack find rbx1_nav`/nav.rviz
然後在筆記本一端進行move_base控制:
rosrun rbx1_nav move_base_square.py
你將看到桌上型電腦上的RVIZ正在監控:



      總結:至此,ROS的networking系列完成了,通過network,使得兩臺計算機執行著不同的ROS節點,兩個計算機相當於一個計算機了。通常在使用過程中,把RViz這種特耗CPU的東西放到了桌上型電腦上,減輕了機載計算機的負擔。LZ在自己的實驗室專案中是在臺式機上執行rviz,指定移動機器人的移動目標點,機載筆記本上執行著定位和路徑規劃的主要演算法。



文章為原創,

請注重博主勞動成果,

錯誤請指出,轉載請註明。

                                --白巧克力


reference: