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