ROS基本概念(ROS Basic Concepts)

相對過去要控制機器人時,經常會遇到不同公司的設備、程式語言、系統設備等結合時的問題,對此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文件層次

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

Package可以方便整理、建立ROS節點資料
常用的工具
  • Gazebo[5]: 建立模擬的工具。
Gazebo提供了方便的模擬環境(以UR手臂為例)
  • Rviz[6]: 檢視感測器數值、檢查控制的動作有無錯誤、簡單控制機器人的介面。
Rviz提供了方便的控制介面(以UR手臂為例)
常用指令
  • 通訊內容相關(以rosoptic 為例)[3]:
    • rostopic list: 確認目前有哪些topics存在。
    • rostopic pub: 針對特定topic發出測試的訊號。
    • rostopic echo: 監聽特定topic的訊息內容。
    • rostopic -h: 忘記rostopic 有哪些指令時,提示指令用。
  • 通訊連線相關:
    • rosrun rqt_graph rqt_graph: 可以直接查看目前連線的節點與主題的連線方式。
rqt_graph 可以審視node連線狀況
  • 機器人結構相關:
    • rosrun rqt_tf_tree 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

コメント

タイトルとURLをコピーしました