原文: http://wiki.ros.org/ROS/Tutorials/UnderstandingTopics
上一篇我們談到ROS的node,每一個node就是一個獨立的process,在實務上我們會將負責不同功能的程式獨立成不同的node,這樣子的寫法是比較直覺且易於debug的。不過node跟node之間往往需要彼此溝通,其中一種常用的溝通機制就是Topic。
————————————————————————————
1.1 Setup & 1.2 ROS Topics
這邊啟動了一個簡單的環境,當你按照步驟執行指令之後,你應該就可以在啟動teleop的終端機頁面下按方向鍵來控制機器人移動(如果不是在終端機的頁面按方向鍵就無法操控)。
這個小範例實際建構起的node graph長得像這樣:
從node的觀念來理解,可以把turtle這個虛擬的機器人想成一個node(/turtlesim),然後把遙控這個機器人的teleop想成另一個node(/teleop_turtle),所以問題變成/teleop_turtle要怎麼把遙控的指令傳遞給/turtlesim。
這邊當然就是透過Topic來傳輸。
1.2的後續都是指令的操作,基本上並沒有太多新的觀念,這邊建議可以當作熟悉一下玩過去就好,只要知道有這些指令,需要用到的時候再用help看一下用法或是查一下cheat sheet就好。
1.3 Message
這邊最重要觀念主要就只有一個,就是兩個node在透過Topic傳遞訊息時,必須先講好這個訊息的格式,彼此在溝通的時候才不會出錯。在上面的例子中使用的訊息格式就是turtlesim/Velocity,我們在之後會看到要怎麼在寫程式的時候指定訊息的格式。
在大多數的情況下,你會使用到的訊息格式大家都會用到,所以如果你要寫自己的node,並讓這些node可以發布或訂閱Topic,你可以在common_msgs裡面找到大部分你會用到的message type。
1.4 rostopic continued
這一小節教的東西平常都是用在debug或是學習別人建構的系統的時候會用到的,也是大致知道有哪些用法就可以了。