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:

1.ROS NETWORKING : a good tutorial


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM