ROS2零基礎快速入門

  • 2019 年 12 月 20 日
  • 筆記

ROS2入門最快需要多少時間?3天;

ROS2開發一款基礎機器人需要多久?3個星期;

ROS2怎麼才能算「精通」?不可能,3年也不行……

如何判斷一款通用性軟體成熟並可以投入精力去學習呢?

  • 一個最簡潔的標準就是全平台(Windows、MacOS、Linux……)
  • +全語言支援(C++、Python、Java……)

有句毒雞湯不知道該不該講…… 叫做合格的程式設計師都該會點Linux,我不贊同。 不論是理論還是應用,都不依託系統平台實現,或者說好的軟體是跨平台的。

那麼,ROS2符合這樣標準嗎?2019年5月之後的ROS1和2都符合。

為什麼要學習ROS2?

  • 如果喜歡鑽研機器人,推薦
  • 如果對機器人無感,不推薦
  • 不要試圖通過學習ROS入門或者研究機器人(學)
  • 先有機器人(學)……然後才有ROS……

如何避免入門後無方向感?

  • ROS本來就沒有方向,「通訊架構平台」何來方向一說?
  • 學ROS之前,如果沒有明確目標,學完後依然不會有
  • 這個問題和ROS無關,不要通過學習一門工具,去探索人生的方向性……

目前github上:

  1. ROS1(1.2k star):https://github.com/ros/ros
  2. ROS2(1.4k star):https://github.com/ros2/ros2

ROS1和2官網入門教程已經趨於一致,不要通過學習ROS1掌握ROS2,如果之前沒有接觸過ROS,可以直接了解一下ROS2,有需要再學習,「ROS不是萬能的」。

這裡給出課程中提供的兩個ROS2資料:

  1. ROS2 190912:鏈接:https://share.weiyun.com/5P5Z4HP 密碼:hxdnvx
  2. 機器人作業系統ROS2淺析:鏈接:https://share.weiyun.com/5ma4aPa 密碼:xaacrd

零基礎快速入門ROS2的基礎知識點:

  • 節點:ROS中的每個節點用於實現單個模組功能(例如,一個節點用於控制電機,一個節點用於控制雷射測距儀等)。每個節點都可以通過主題topic,服務service,行動action或參數param向其他節點發送和接收數據。一個完整的機器人系統由許多協同工作的節點組成。在ROS 2中,單個可執行文件(C ++程式或Python程式等)可以包含一個或多個節點。(https://blog.csdn.net/ZhangRelay/article/details/103476650
  • 主題:ROS 2將複雜的系統分解為許多模組化的節點。主題是ROS圖(ROS graph)的重要元素,功能為節點交換消息的匯流排。節點可以將數據發布到任意數量的主題,與此同時,可以實現對任意數量主題的訂閱。主題是節點間數據交互的重要方式,同樣也適用於系統各種不同模組之間的交互。(https://blog.csdn.net/ZhangRelay/article/details/103477891
  • 服務:服務是ROS圖中節點通訊的另一種方法。 服務基於調用-響應模型,不同於主題的發布-訂閱模型。 主題實現節點訂閱數據流並獲得連續更新,但是服務僅在客戶端專門調用它們時才提供數據。(https://blog.csdn.net/ZhangRelay/article/details/103493612
  • 參數:參數是節點的配置值。 可以將參數視為節點設置。 節點可以將參數存儲為整數、浮點數、布爾值、字元串和列表。 在ROS 2中,每個節點都維護自己的參數。 所有參數都是可以動態重新配置的,並且是基於ROS 2服務構建的。(https://blog.csdn.net/ZhangRelay/article/details/103495888
  • 行動:行動action是ROS 2中用於長時間運行任務的通訊類型之一。 它由三部分組成:目標,結果和回饋。行動基於主題和服務。 它們的功能與服務相似,但行動是可搶佔的模式(即,可以在執行時將其取消)。 與返回單個響應的服務不同,它們還提供穩定的回饋(過程狀態回饋)。行動使用客戶端-伺服器端模型,類似於發布者-訂閱者模型(已經在主題教程中進行了介紹)。 「行動客戶端」節點將目標發送到「行動伺服器」節點,該節點確認目標並返回回饋流和一個結果。(https://blog.csdn.net/ZhangRelay/article/details/103496999
  • 啟動:啟動文件launch可以同時啟動和配置許多包含ROS 2節點的可執行文件。(https://blog.csdn.net/ZhangRelay/article/details/103498784
  • 工具:rqt、logger、bag和doctor等。(https://blog.csdn.net/ZhangRelay/article/details/103500469

很多朋友留言建議使我受益匪淺,後續內容將以源碼分析為主,戲說那些有趣又實用的ROS案例源程式碼,描繪一個由數學公式到程式碼復現再到具體應用的奇妙機器人世界。