運行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 | 查看消息的詳細信息 |
