ROS學習之四:ROS話題與ROS消息


運行turlesim

運行roscore(roscore) → 運行turtlesim(rosrun turtlesim turtlesim_node) → 通過鍵盤控制turtle(rosrun turtlesim turtle_teleop_key)

話題

turtlesim_node節點和turtle_teleop_key節點之間是通過一個ROS話題來相互通信的,turtle_teleop_key在話題上發布按鍵按下的消息,turtlesim則訂閱該話題以接收消息

通過運行rqt_graph可以查看節點與話題的示意圖,命令如下:

rosrun rqt_graph rqt_graph

圖中橢圓形中間為節點名稱,箭頭橫線上為話題名稱。

若要查看話題上發布的數據,可使用命令:

rostopic echo [topic]

如查看由turtle_teleop_key節點發布的數據則使用命令:

rostopic echo /turtle1/cmd_vel

通過左上角的刷新按鈕刷新rgq-gtaph,可以看到rostopic echo也訂閱了/turle1/command_velocity話題。

使用命令:

rostopic list

可以列出當前已被訂閱和發布的所有話題,在命令后添加參數-v則可列出所有發布和訂閱的主題及其類型的詳細信息

消息

話題的通信是通過節點間發送ROS消息實現的,為了使發布者和訂閱者進行通信,發布者和訂閱者必須發送和接收相同類型的消息,這意味着話題的類型是由發布在其上的消息類型決定的

使用命令:

rostopic type [topic]

可以查看所發布話題的消息類型。

如查看/turtle1/cmd_vel話題的消息類型則使用命令:

rostopic type /turtle1/cmd_vel

而使用rosmsg命令可以查看消息的詳細信息:

rosmsg show geometry_msgs/Twist

其中,geometry_msgs/Twist為rostopic type命令的查詢結果。

通過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]'

將消息發送給turtlesim,使其以2.0的線速度和1.8的角速度移動

命令解析:

todtopic pub -1 /turtle1/cmd_vel geomtry_msgs/Twist -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'
將消息發布到指定的話題 只發布一條消息然后退出 要發布到的話題的名稱 發布話題時要使用的消息類型 表明之后的參數都不是選項 linear值 angular值

而將參數-1變為-r 1則可實現以1Hz的頻率不斷發布消息

基礎命令

rostopic      echo [topic] 顯示在某個話題上發布的數據
list [topic] 列出當前已被訂閱和發布的所有話題
list -v 列出所有發布和訂閱的主題及其類型的詳細信息
type [topic] 查看所發布話題的消息類型
pub [topic] [msg_type] [args] 把數據發布到當前某個正在廣播的話題上
hz [topic] 報告數據發布的速率
rosmsg show 查看消息的詳細信息


免責聲明!

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



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