相對過去要控制機器人時,經常會遇到不同公司的設備、程式語言、系統設備等結合時的問題,對此ROS提供了一種對於開發機器人時縮短跨語言、設備結合問題的方法,讓開發人員可以更加便利的專注於開發上[1]。開始使用ROS (Robot Operating System)前,我們會需要先準備好一些相關的了解。
ROS通訊
ROS的通訊方式可以分為三種
- Services[2]: 為一次性的通訊,僅會在client端發出索取訊號時會傳送出回應訊息。
- Topics[3]: 將訊息發布為一個主題,需要接收此訊息的程式,只需要訂閱這個主題就可以接收到訊息。
- Parameter Server[4]: 管理全域變數用的方式。
通訊的層次
以Topics為例,我的想法是,可以將其想像成廣播一樣。廣播電台播製的節目透過廣播發送到FM的某一個頻道後,當我們想要收聽時,只需要將收音機轉到同樣FM頻道後就可以收聽內容。
在使用Topics通訊時,會有三項東西會被使用:
- Nodes: 節點,以上面的例子來說明,廣播公司就像是一個節點,聽眾則是另外一個節點。
- Topics: 即FM的頻道。
- Messages: 發布的訊息格式,如FM 或是AM。

ROS文件層次
使用ROS時會以Packages的方式將每一個功能或是任務的資料整理放在一起。其中可能包含使用者自己建立的訊息格式(即上面提到的Messages)、開發的節點(Node)與相關的設置文件等。
例:

常用的工具
- Gazebo[5]: 建立模擬的工具。

- Rviz[6]: 檢視感測器數值、檢查控制的動作有無錯誤、簡單控制機器人的介面。

常用指令
- 通訊內容相關(以rosoptic 為例)[3]:
- rostopic list: 確認目前有哪些topics存在。
- rostopic pub: 針對特定topic發出測試的訊號。
- rostopic echo: 監聽特定topic的訊息內容。
- rostopic -h: 忘記rostopic 有哪些指令時,提示指令用。
- 通訊連線相關:
- rosrun rqt_graph rqt_graph: 可以直接查看目前連線的節點與主題的連線方式。

- 機器人結構相關:
- rosrun rqt_tf_tree rqt_tf_tree: 查看機器人的物件彼此的連結狀況。

有了以上相關的概念後,接著就可以在我們想要做的應用上加入ROS,做出更靈活的效果。 由於ROS的相關資源太多,因此此處僅做簡易列舉,如需更多資訊,建議可以參考官方的資料[1]。
因文章內容為個人之理解,因此如有錯誤之處,請不吝賜教,感謝您。
參考資料
[1] ROS introduction
[2] ROS Services
[3] ROS Topics
[4] ROS Parameter Server
[5] Gazebo
[6] Rviz
コメント