1. 程式人生 > >ROS學習筆記(6): 理解ROS話題

ROS學習筆記(6): 理解ROS話題

目錄

1.開始

1.開始

在三個終端中分別輸入下面的一條。,用鍵盤的方向鍵控制海龜移動

roscore

rosrun turtlesim turtlesim_node

rosrun turtlesim turtle_teleop_key

2.ROS Topics

turtlesim_node節點和turtle_teleop_key節點之間是通過一個ROS話題來互相通訊的。turtle_teleop_key在一個話題上釋出按鍵輸入訊息,而turtlesim則訂閱該話題以接收該訊息。

2.1 rqt_graph

在新終端中執行

rosrun rqt_graph rqt_graph

如果將滑鼠放在/turtle1/command_velocity上方,相應的ROS節點(藍色和綠色)和話題(紅色)就會高亮顯示。正如你所看到的,turtlesim_node和turtle_teleop_key節點正通過一個名為 /turtle1/command_velocity的話題來互相通訊。

2.2 rostopic介紹

rostopic命令工具能讓你獲取有關ROS話題的資訊

2.3 rostopic echo

列印話題的資訊,通過按鍵盤方向鍵控制烏龜移動後顯示資訊

再次執行

rosrun rqt_graph rqt_graph

多了rostopic的訂閱

2.4 rostopic list

3.ROS Messages

話題之間的通訊是通過在節點之間傳送ROS訊息實現的。對於釋出器(turtle_teleop_key)和訂閱器(turtulesim_node)之間的通訊,釋出器和訂閱器之間必須傳送和接收相同型別的訊息。這意味著話題的型別是由釋出在它上面的訊息型別決定的。使用rostopic type命令可以檢視釋出在某個話題上的訊息型別

rostopic type 命令用來檢視所釋出話題的訊息型別。結合使用rostopic list

4.繼續rostopic

4.1 rostopic pub

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

-1(單個破折號)這個引數選項使rostopic釋出一條訊息後馬上退出。

(雙破折號)這會告訴命令選項解析器接下來的引數部分都不是命令選項。這在引數裡面包含有破折號-(比如負號)時是必須要新增的。

這是因為turtle需要一個穩定的頻率為1Hz的命令流來保持移動狀態。我們可以使用rostopic pub -r命令來發佈一個穩定的命令流

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

這條命令以1Hz的頻率釋出速度命令到速度話題上。

4.2 rostopic hz

rostopic hz [topic]

5. rqt_plot

rqt_plot命令可以實時顯示一個釋出到某個話題上的資料變化圖形。這裡我們將使用rqt_plot命令來繪製正在釋出到/turtle1/pose話題上的資料變化圖形

6.參考資料