(六)ROS話題---節點之間通信的方式


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) 來進行通信。

 

 

 

 



免責聲明!

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



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