你好,我是小魚,最近疫情有些嚴重,你們必定要注重好我的防禦。html
你還記得ROS鎮的故事嗎?(ROS2子承父位、ROS鎮長安詳晚年!祈禱鄭州平安!)後來ROS2鎮長來了以後,王二訂報的方式也發生了改變,讓咱們一塊兒來看看吧。node
李四是一名擅長寫小說的做家,王二是一名喜歡看小說且單身多年的單身狗。王二最喜歡看李四寫的《豔娘傳奇》這個小說。算法
因此王二(Node)出於對《豔娘傳奇》(Topic)的興趣,訂閱了(Subscribe)李四(Node)發佈(Publish)的小說。小程序
看完上面的內容,咱們來總結一下,上面其實講了一下ROS2中Topic通訊方式。Topic是一種發佈訂閱模型。markdown
訂閱者(王二)須要經過訂閱話題(豔娘傳奇)來獲取發佈者(李四)的發佈的《豔娘傳奇》的具體內容。app
李四王二通訊模型
仍是一對一(一個發佈者,一個訂閱者)的模型,ROS2中實際上是能夠1對n
,n對1
,n對n
的。ide
而且知足如下規則:工具
ROS2做爲一個強大的工具,在運行過程當中,咱們是能夠經過命令來看到節點和節點之間的數據關係的。oop
運行咱們的第二章中的你說我聽小程序。依次打開三個終端,分別輸入下面三個命令。學習
ros2 run demo_nodes_py listenerros2 run demo_nodes_cpp talkerrqt_graph
複製代碼
你能夠看到下面這張圖
你能夠改變一下,菜單欄的選項,看一看下面圖的變化,感覺一下rqt_graph工具的強大。
這是一個很重要的工具,小魚在學習和使用ROS2中常常使用它,來看一看數據究竟是怎麼走到,它能夠幫咱們搞清楚一個節點的輸入和輸出是什麼。
還記得上一節的ros2 node指令嗎?ros2也支持不少強大的topic指令。可使用下面的指令查看。
ros2 topic -h
複製代碼
這裏小魚先簡單介紹一下,你們能夠手動在終端輸入這幾個命令來嘗試一下。
命令
ros2 topic list
複製代碼
結果
命令
ros2 topic list -t
複製代碼
結果
命令
ros2 topic echo /chatter
複製代碼
結果
命令
ros2 topic info /chatter
複製代碼
結果
上面一個告訴你們這個消息是std_msgs/msg/String,那String裏面有什麼呢?不妨來試一試。
命令
ros2 interface show std_msgs/msg/String
複製代碼
結果
命令
ros2 topic pub /chatter std_msgs/msg/String 'data: "123"'
複製代碼
結果
若是你們想要了解更多的命令,能夠到官網來看一看,下一節小魚就會來帶你們來手動寫Python版本的話題通訊。
我是小魚,一名機器人算法工程師。 目前在作公衆號,歡迎你們關注!