ROS 2主題-topics-
前序:ROS 2節(jié)點-nodes-
視頻教程(Linux):https://www.bilibili.com/video/BV16t4y197Br/
本節(jié)詳細(xì)介紹主題topic。
1. 如何理解主題topic:
ROS 2將復(fù)雜的系統(tǒng)分解為許多模塊化的節(jié)點。主題是ROS圖(ROS graph)的重要元素,功能為節(jié)點交換消息的總線。節(jié)點可以將數(shù)據(jù)發(fā)布到任意數(shù)量的主題,與此同時,可以實現(xiàn)對任意數(shù)量主題的訂閱。主題是節(jié)點間數(shù)據(jù)交互的重要方式,同樣也適用于系統(tǒng)各種不同模塊之間的交互。
2. 主題topic有哪些命令功能:
使用如下命令:
ros2 topic -h
顯示如下:
主要有:
bw:顯示所查閱主題的帶寬
delay:顯示延遲
echo:輸出主題消息
find:列出選定主題
hz:輸出平均發(fā)布頻率
info:顯示主題消息
list:列出可使用的主題表
pub:發(fā)布消息到主題
type:輸出主題類型
3. 如何掌握主題topic
如之前一節(jié)學(xué)習(xí)類似,先打開turtlesim和teleop節(jié)點:
ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtle_teleop_key
rqt_graph工具:
3.1 命令工具
在新終端中運行該命令ros2 topic list將返回系統(tǒng)中當(dāng)前活動的所有主題的列表:
更詳細(xì)的功能:ros2 topic list -t
返回相同的主題列表,這次主題類型顯示在每個主題后面的括號中:
主題具有名稱和類型。這些屬性(尤其是類型)是節(jié)點用于交互相同信息的基礎(chǔ)。
3.2 顯示主題消息
要查看有關(guān)某個主題的發(fā)布數(shù)據(jù),使用:
ros2 topic echo
例如:/turtle1/cmd_vel
ros2 topic echo /turtle1/cmd_vel
如果沒有消息,該命令不會返回任何數(shù)據(jù)。
點擊鍵盤方向左鍵。
3.3 顯示主題信息
主題不必只是點對點的交互;它可以是一對多,多對一或多對多。
使用如下命令查閱主題狀態(tài)信息:
ros2 topic info /turtle1/cmd_vel
一個發(fā)布,兩個訂閱,思考分別為哪些?
3.4 訂閱發(fā)布類型
節(jié)點使用消息通過主題發(fā)送和接收數(shù)據(jù)。發(fā)布者和訂閱者必須發(fā)送和接收相同類型的消息才能進(jìn)行通信。
上述主題對應(yīng)的類似分別如下:
/parameter_events [rcl_interfaces/msg/ParameterEvent]
/rosout [rcl_interfaces/msg/Log]
/turtle1/cmd_vel [geometry_msgs/msg/Twist]
/turtle1/color_sensor [turtlesim/msg/Color]
/turtle1/pose [turtlesim/msg/Pose]
其中,
geometry_msgs/msg/Twist
表示在在geometry_msgs包中有一個msg被稱為Twist。
可以運行此類型以了解其詳細(xì)信息,特別是消息期望的數(shù)據(jù)結(jié)構(gòu)。
ros2?interface?show?
如:
ros2 interface show geometry_msgs/msg/Twist.msg
3.5 發(fā)布主題消息
知道消息結(jié)構(gòu)后,可以使用以下命令直接從命令行將數(shù)據(jù)發(fā)布到主題上:
ros2 topic pub
該'
注意,windows使用"
此參數(shù)需要以YAML語法輸入。輸入完整的命令,如下所示:
ros2 topic pub --once /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}"
--once?是一個可選參數(shù),意思是“發(fā)布一條消息然后退出”。
更多參數(shù):
ros2 topic pub --rate 1 /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}"
以1 Hz的頻率發(fā)布速度指令。
改變不同的角速度,可以畫出不同半徑的圓形軌跡。
顯示小烏龜目前的坐標(biāo)信息:
ros2 topic echo /turtle1/pose
3.6 主題頻率
查看主題消息發(fā)布的頻率使用如下命令:
ros2 topic hz /turtle1/pose
頻率約60hz左右,如下圖所示:
4. 關(guān)閉節(jié)點
很多節(jié)點在運行。不要忘記通過關(guān)閉終端窗口或在每個終端中輸入Ctrl+C停止它們。
這些內(nèi)容基本于ROS1相似,部分將rostopic更新為ros2 topic。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。