1. 理解 ROS 話題:
(Ctrl+Alt+T 打開一個新終端)
運行下面的命令:
$ roscore
(Ctrl+Alt+T 打開一個新終端)
$ rosrun turtlesim turtlesim_node
(Ctrl+Alt+T 打開一個新終端)
$ rosrun turtlesim turtle_teleop_key
我現在可以控制小海龜:(要在 turtle_teleop_key 所在的終端窗口,按鍵盤的 方向鍵 來控制小海龜運動。)
使用 rosnode list
命令來看看這個例子里,都運行了哪些節點:
輸出:
/rosout /teleop_turtle /turtlesim
解釋:
/teleop_turle
節點向 ROS 網絡總線上發布話題;
/turtlesim
節點接收了 /teleop_turle
發布的這個話題。 那么這個話題具體是什么,我們怎樣可以知道呢?
上面打開的終端窗口不要關閉,我們繼續進行下面的教程。
2. 使用圖形化工具可視化話題的發布接收
我們可以使用 ROS 網絡圖形化工具來 直觀 的感受這個話題的發布接收:
如果沒有安裝 rqt ,先安裝。執行下面的命令進行安裝:
$ sudo apt-get install ros-indigo-rqt $ sudo apt-get install ros-indigo-rqt-common-plugins
現在重新打開一個終端, 運行下面的命令:
$ rosrun rqt_graph rqt_graph
# 或者,你也可以直接使用下面的命令。這兩個命令是等價的。
$ rqt_graph
都能得到下面的GUI界面---可直觀的看到了一個節點間通信的可視圖。
3. rostopic 命令的使用:
rostopic
命令的幫助,里面羅列了 rostopic
命令的所有的參數:
rostopic --help
輸出:
rostopic is a command-line tool for printing information about ROS Topics. Commands: rostopic bw display bandwidth used by topic rostopic delay display delay of topic from timestamp in header rostopic echo print messages to screen rostopic find find topics by type rostopic hz display publishing rate of topic rostopic info print information about active topic rostopic list list active topics rostopic pub publish data to topic rostopic type print topic type
Type rostopic <command> -h for more detailed usage, e.g. 'rostopic echo -h'
3.1 list : (列出所有話題(包括發布的和訂閱的))
(新開個終端)
$ rostopic list //能夠列出所有當前正在訂閱和發布的話題
$ rostopic list -v //-v
可以得到當前正在訂閱和發布的話題的詳細內容介紹
輸出:
3.2 echo : (監聽話題)
$ rostopic echo /turtle1/cmd_vel //這個命令的作用就是來打印指定話題內的通信內容的
運行效果: 當你在 turtle_teleop_key 所在終端上控制 方向鍵(發布 /turtle1/cmd_vel
話題), /turtle1/cmd_vel
話題內的數據就會打印出來:
這個時候,你在刷新一下 rqt_gragp 軟件窗口 就可以看到,現在有2個節點訂閱了 /turtle1/cmd_vel
話題:
http://www.cnblogs.com/aobosir/p/5928588.html
總結:
我們這一講介紹了ROS節點之間,如何使用話題進行通信。其實節點之間的通信方式不只話題這一種方式。
節點之間通信的方式 : 話題(rostopic) 和 服務(rosservice)。
所以,我們下一講來講 節點之間如何使用服務(rosservice) 來進行通信。