ROS學習(七)—— 理解ROS Topic


一、准備工作

1、打開roscore

roscore

 

2、turtlesim

  打開一個turtulesim節點

rosrun turtlesim turtlesim_node

 

3、turtle keyboard teleoperation

rosrun turtlesim turtle_teleop_key

     現在你可以使用鍵盤上的方向鍵來控制turtle運動了。如果不能控制,請選中turtle_teleop_key所在的終端窗口以確保你的按鍵輸入能夠被捕獲。

 

二、ROS Topic

  turtlesim_node節點和turtle_teleop_key節點之間是通過一個ROS話題來互相通信的。turtle_teleop_key在一個話題上發布按鍵輸入消息,而turtlesim訂閱該話題以接收該消息。下面讓我們使用rqt_graph來顯示當前運行的節點和話題。

 

1、Using rqt_graph

  rqt_graph能夠創建一個顯示當前系統運行情況的動態圖形

(1)安裝:

sudo apt-get install ros-kinetic-rqt

 

(2)使用:

rosrun rqt_graph rqt_graph

 

              

  如果你將鼠標放在適當位置,相應的ROS節點(藍色和綠色)和話題(紅色)就會高亮顯示。正如你所看到的,turtlesim_nodeturtle_teleop_key節點正通過一個名為 /turtle1/cmd_vel的話題來互相通信。

 

2、介紹rostopic

  rostopic命令工具能讓你獲取有關ROS話題的信息。

rostopic bw     display bandwidth used by topic          
rostopic echo   print messages to screen
rostopic hz     display publishing rate of topic    
rostopic list   print information about active topics
rostopic pub    publish data to topic
rostopic type   print topic type

 

 

3、使用rostopic echo

(1)語法:

rostopic echo [topic]

 

 

(2)作用:

   Rostopic echo可以顯示在某個話題上發布的數據。

 

(3)demo

rostopic echo /turtle1/cmd_vel

 

 

4、使用rostopic list

(1)作用:

   Rostopic list能夠列出所有當前訂閱和發布的話題。

 

(2)語法:

Usage: rostopic list [/topic]

Options:
  -h, --help            show this help message and exit
  -b BAGFILE, --bag=BAGFILE
                        list topics in .bag file
  -v, --verbose         list full details about each topic
  -p                    list only publishers
  -s                    list only subscribers

 

 

(3)demo

rostopic list -v

 

 

三、ROS Messages

      話題之間的通信是通過在節點之間發送ROS消息實現的。對於發布器(turtle_teleop_key)和訂閱器(turtulesim_node)之間的通信,發布器和訂閱器之間必須發送和接收相同類型的消息。這意味着話題的類型是由發布在它上面的消息類型決定的。使用rostopic type命令可以查看發布在某個話題上的消息類型

 

1、使用rostopic type

(1)作用:

   可以返回所發布話題的消息類型

 

(2)語法:

rostopic type [topic]

 

(3)demo

rostopic type /turtle1/cmd_vel

 

    返回  geometry_msgs/Twist   我們可以看看這個消息類型的具體信息(使用rosmsg)

rosmsg show geometry_msgs/Twist

 

 

 四、使用rostopic發送消息

1、rostopic pub

(1)語法:

rostopic pub [topic] [msg_type] [args]

 

 

(2)作用:

  可以把數據發布到當前某個正在廣播的話題上。

 

(3)demo

 

命令成分 作用  
rostopic pub 發布消息到話題的指令 
-1 只發送一次
-r 表示重復發送命令
/turtle1/cmd_vel 發送給哪個話題
geometry_msgs/Twist 發送消息類型
-- 表示后面出現的 ' - '  不表示命令
'[2,0,0]' '[0,0,1.8]' 發送消息內容,格式可以查詢http://wiki.ros.org/ROS/YAMLCommandLine

發送一次命令:

rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist -- '[2,0,0]' '[0,0,1.8]'

 

 

 重復發送命令

rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'

 

 

 

2、rostopic hz

(1)作用:

  查詢消息發布的頻率

 

(2)語法:

rostopic hz [topic]

 

 

(3)demo:

rostopic hz /turtle1/pose

 

 

(4)我們也可以結合rostopic typerosmsg show命令來獲取關於某個話題的更深層次的信息

rostopic type /turtle1/cmd_vel | rosmsg show

 

 

 5、rqt_plot

(1)作用:

   rqt_plot命令可以實時顯示一個發布到某個話題上的數據變化圖形

 

(2)用法:

rosrun rqt_plot rqt_plot

 

   然后可以跳出的小程序中加入話題數據即可。

 


免責聲明!

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



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