Apoll进阶课程㉞丨Apollo ROS原理—3
原文鏈接:進階課程?丨Apollo ROS原理—3?
機器人操作系統(ROS)是一個成熟而靈活的機器人編程框架。ROS提供了所需的工具,可以輕松訪問傳感器數據,處理數據,并為機器人的電機和其它執行器生成適當的響應。整個ROS系統被設計為在計算方面完全分布,因此不同的計算機可以參與控制過程,并作為單個實體(機器人)一起行動。
上周阿波君為大家詳細介紹了「進階課程?Apollo ROS原理—2」。
此課程詳細地介紹了Apollo ROS對ROS的改進,主要有兩個方面,第一,去中心化網絡拓撲,使用RTPS服務發現協議完成P2P網絡拓撲;第二,數據兼容性擴展,使用深度整合的Protobuf方法,實現數據兼容性擴展。
本周阿波君將繼續與大家分享Apollo ROS原理—3的相關課程。下面,我們一起進入進階課程第34期。
目前ROS僅適用于Apollo 3.0之前的版本,最新代碼及功能還請參照Apollo 3.5及5.0版本。
目錄
1.TF坐標系轉換
2.RQT用戶接口
3.Robot Models URDF
4.SDF Simulation Description Format
本節主要講解四個比較基礎的方面,如圖所示。第一是TF坐標系轉換,它在自動駕駛中用的非常廣泛;第二是RQT用戶接口;第三是機器人模型;第四是仿真描述。
1.TF坐標系轉換
為什么需要TF坐標系轉換?因為自動駕駛使用的ROS架構是一個松耦合關系,每個節點獨立運行,節點有一套自己的XYZ坐標系,當把他們組裝到一塊時,每個節點的坐標系都是相對獨立的,但整個自動駕駛系統需要把每一個節點所使用的信息和一些參數轉化到同一個世界坐標系里。TF節點就提供了對應的坐標系轉換功能,TF消息也是通過基于Message的訂閱和發布消息來完成的。
例如,當下游的Planning節點想使用Obstacle信息時,需要將Obstacle信息轉化到同一個世界坐標系,這時候它會發起一個TF去查詢Obstacle處于哪一個世界坐標系里面的哪一個位置,從而感知整個車身周圍的情況,基于此再做一個合理的規劃和決策行為。
ROS也提供了一些基本功能查看TF的運行機制。例如Rosrun提供了TF監控節點,通過這個節點我們能看到整個復雜網絡拓撲結構里面節點之間的關系;每個節點之間進行TF轉換時所用到的TF樹的結構。此外,還提供了tf_echo命令,可以打印從A節點到B節點,例如Perception節點到Planning節點中間所使用了TF轉變樹的結構。
TF也提供了一個插件供開發者使用,可以用一些主流開發工具進行ROS工程開發。
下圖是結合之前將Publiser使用TF的一個例子,想使用TF,只需要改動兩部分:第一是定義TF的對象;第二是直接進行TF數據查詢,然后就可以得到一個世界坐標系。
2.RQT用戶接口
RQT顧名思義,R實質是ROS的縮寫,QT是可視化的圖形工具,RQT是ROS給開發者提供的一套比較方便的圖形化相關展示的一套工具。下面介紹幾個比較常用的RQT功能:
1. ?第一個是RQT imageview,這個主要是為自動駕駛頂層的一些傳感器設計的,例如Camera圖像,如果你想實時查看Driver接收圖像是否正確,顏色、方位是否有問題,可以通過此工具簡單選擇對應Camera的channel,用 Camera的topic信息實時查看圖像狀態。
2. ?Multipot可以將二維的數據在一個二維坐標系里面進行實時展示,這樣可以更直觀地看到我們所需要的數據是否符合我們的預期。
3. ?RQT的graph工具,在開發的實際過程當中使用得比較廣泛,這個工具把整個網絡拓撲用圖形化的方式展現出來。例如啟動Perception、 Planning和Roscore這三個節點,它都會在RQT graph工具里面進行實時展示,同時兩個節點之間所用的topic信息也會在里面實時展示。
4. ?RQT console是對應ROS日志系統所提供的一套可視化工具。ROS提供了五種級別的LOG展示:DEBUG 、IFNO、WARN、ERROR、FATAL。每個模塊在某一時刻都會產生大量的日志信息,RQT console把這些信息統一規整到一個可視化工具里面,用戶可以通過配置的方式快速定位和找到自己所需要的一些相關信息。
5. ?RQT logleve是為ROS日志系統所提供的另外一個可視化工具。在寫代碼的時候,可能5種類型的日志都會使用,但是在實際調試過程中可能只想看到某幾種類別的實時信息,通過這個工具可以實時調整,讓節點輸出我們想要的級別的一些信息。例如我們只想看到ERROR或者FATAL信息,就可以把某一個節點的信息級別設置為ERROR,這樣這個節點所打印的ERROR和FATAL的信息可以通過命令行或者LOG文件里面去看到,其它級別的信息不會干擾實時調試。
3.Robot Models URDF
在進行實際模擬的時候,可以用一套語言來定義機器人模型,這套語言被定義為統一機器人描述格式語言URDF。它也是一套xml的語言描述,這個描述格式里面包含兩個核心的概念:一個是節點Link,一個是節點之間的連接關系Joint。Joint會指定Parent節點和Child節點,這樣就可以描述一個完整的拓撲結構,也就是對整個網絡拓撲結構的xml語言化描述。在進行仿真的時候,通過加載對應的URDF文件,在仿真環境里面實時地展示所需要調試的信息。
4.SDF Simulation Description Format
Simulation Description Format(SDF)是另外一個調試工具。之前介紹的Rviz調試工具,更多的是看到消息收發之間的實體化展示,例如展示點云、圖像和其它一些信息。如果進行仿真模擬,如機器人模擬的時候,就用另一套工具Gazebo。Gazebo是ROS的一個開發包,它里面所使用的描述語言就是Simulation Description Format。用Gazebo加載URDF時,Gazebo首先把URDF描述語言轉換成SDF語言,然后再進行加載和展示。
總結
以上是生活随笔為你收集整理的Apoll进阶课程㉞丨Apollo ROS原理—3的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ltmsg.exe是什么进程 有什么用
- 下一篇: 视觉SLAM十四讲(2):初识SLAM