Robotics

ROS tutorials 系列(5) Understanding ROS Topics

原文: 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長得像這樣:

1

從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或是學習別人建構的系統的時候會用到的,也是大致知道有哪些用法就可以了。

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s