王二是如何看到李四的《豔娘傳奇》的,快來了解一下ROS2的話題機制吧!

你好,我是小魚,最近疫情有些嚴重,你們必定要注重好我的防禦。html

你還記得ROS鎮的故事嗎?(ROS2子承父位、ROS鎮長安詳晚年!祈禱鄭州平安!)後來ROS2鎮長來了以後,王二訂報的方式也發生了改變,讓咱們一塊兒來看看吧。node

1.講個故事

李四是一名擅長寫小說的做家,王二是一名喜歡看小說且單身多年的單身狗。王二最喜歡看李四寫的《豔娘傳奇》這個小說。算法

因此王二(Node)出於對《豔娘傳奇》(Topic)的興趣,訂閱了(Subscribe)李四(Node)發佈(Publish)的小說。小程序

2.話題介紹

看完上面的內容,咱們來總結一下,上面其實講了一下ROS2中Topic通訊方式。Topic是一種發佈訂閱模型。markdown

訂閱者(王二)須要經過訂閱話題(豔娘傳奇)來獲取發佈者(李四)的發佈的《豔娘傳奇》的具體內容。app

圖片

李四王二通訊模型仍是一對一(一個發佈者,一個訂閱者)的模型,ROS2中實際上是能夠1對n,n對1,n對n的。ide

2.1話題通訊有哪些須要注意的規則呢?

而且知足如下規則:工具

  • 話題名字是關鍵,訂閱者必須知道話題的名稱才能完成訂閱;
  • 同一我的能夠訂閱多個話題,同時也能夠發佈多個話題,就像一本書的做者也能夠是另一本書的讀者;
  • 同一個小說不能有多個做者(版權問題),但同一個話題能夠有多個發佈者。

3.topic工具

3.1 查看節點關係查看rqt_graph

ROS2做爲一個強大的工具,在運行過程當中,咱們是能夠經過命令來看到節點和節點之間的數據關係的。oop

運行咱們的第二章中的你說我聽小程序。依次打開三個終端,分別輸入下面三個命令。學習

ros2 run demo_nodes_py listenerros2 run demo_nodes_cpp talkerrqt_graph
複製代碼

你能夠看到下面這張圖

圖片

3.1.1 rqt_graph

你能夠改變一下,菜單欄的選項,看一看下面圖的變化,感覺一下rqt_graph工具的強大。

這是一個很重要的工具,小魚在學習和使用ROS2中常常使用它,來看一看數據究竟是怎麼走到,它能夠幫咱們搞清楚一個節點的輸入和輸出是什麼。

3.2 ros2 topic 指令

還記得上一節的ros2 node指令嗎?ros2也支持不少強大的topic指令。可使用下面的指令查看。

ros2 topic -h
複製代碼

圖片

這裏小魚先簡單介紹一下,你們能夠手動在終端輸入這幾個命令來嘗試一下。

ros2 topic list 返回系統中當前活動的全部主題的列表

命令

ros2 topic list
複製代碼

結果

圖片

ros2 topic list -t 增長消息類型

命令

ros2 topic list -t
複製代碼

結果

圖片

ros2 topic echo 打印實時話題內容

命令

ros2 topic echo /chatter
複製代碼

結果

圖片

ros2 topic info 查看主題信息

命令

ros2 topic info  /chatter
複製代碼

結果

圖片

ros2 interface show 查看消息類型

上面一個告訴你們這個消息是std_msgs/msg/String,那String裏面有什麼呢?不妨來試一試。

命令

ros2 interface show std_msgs/msg/String
複製代碼

結果

圖片

ros2 topic pub arg 手動發佈命令

命令

ros2 topic pub /chatter std_msgs/msg/String 'data: "123"'
複製代碼

結果

圖片

4.最後

若是你們想要了解更多的命令,能夠到官網來看一看,下一節小魚就會來帶你們來手動寫Python版本的話題通訊。

References

[1] docs.ros.org/en/foxy/Tut…

我是小魚,一名機器人算法工程師。 目前在作公衆號,歡迎你們關注!

相關文章
相關標籤/搜索