侵權(quán)投訴
訂閱
糾錯
加入自媒體

ROS:用于Automated Driving模塊化軟件架構(gòu)

自動駕駛對軟件架構(gòu)-Software Frameworks (SWFs)設(shè)計有著特殊的需求,若開始一個自動駕駛項目,作為開發(fā)者,我們可能會有如下幾方面的訴求。

1、模塊化和可擴(kuò)展性

軟件可被明確劃分為獨立的子模塊,由于它們功能獨立,這些模塊可在Low Effort下被單獨測試和評估,從而提高維護(hù)性并實現(xiàn)高效的協(xié)作開發(fā)。為了實現(xiàn)模塊化,需要定義通用的接口,具有良好接口定義的軟件架構(gòu),可便于功能的擴(kuò)展。

2、性能

在實時計算中,任務(wù)應(yīng)在確定的時間內(nèi)執(zhí)行。硬實時保證了每個計算響應(yīng)都在預(yù)期的時間內(nèi)以特定的速率進(jìn)行。而軟實時則僅保證平均響應(yīng)時間。在自動駕駛領(lǐng)域,至少應(yīng)滿足軟實時的要求。

3、仿真和調(diào)試

自動系統(tǒng)的離線仿真和調(diào)試是非常重要的一方面,因此軟件架構(gòu)應(yīng)提供運行環(huán)境和支持工具以用于車輛不同抽象層的模擬,例如從高層級的預(yù)測到低層級的控制。

4、容錯性和監(jiān)控

SWF應(yīng)能夠在運行時從意外故障中恢復(fù),例如硬件或軟件相關(guān)的中斷,特別是通訊時的噪聲、抖動、延遲等。為了實現(xiàn)容錯,監(jiān)控可實現(xiàn)冗余的邏輯校驗,以保證系統(tǒng)的可靠運行。

5、應(yīng)用及支持

SWF應(yīng)為用戶或開發(fā)者提供簡易的監(jiān)測和數(shù)據(jù)可視化工具,提高其易用性,并可提供大量的文檔、示例和教程。

1、自動駕駛軟件架構(gòu)介紹

在過去的這些年,自動駕駛領(lǐng)域出現(xiàn)了很多不同的軟件架構(gòu)。在自動駕駛項目開始前期,軟件架構(gòu)的選擇和設(shè)計是至關(guān)重要的一步,下面我介紹兩種被人所熟知且被廣泛使用的自動駕駛軟件架構(gòu)。

Real-time Database for Cognitive Automobiles(KogMo-RTDB)

KogMo-RTDB為對象的插入、更新和刪除提供了統(tǒng)一的接口,盡管KogMo-RTDB為數(shù)據(jù)對象提供了動態(tài)內(nèi)存分配,但內(nèi)存需要在對象內(nèi)靜態(tài)分配。這在物體尺寸變化的場景可能會變的麻煩,如通過雷達(dá)掃描設(shè)備獲取的測量數(shù)據(jù)。對象可在共享內(nèi)存中保留一段時間、序列化并寫入存儲中。然而在分布式系統(tǒng)中,KogMo-RTDB并不通過網(wǎng)絡(luò)協(xié)議進(jìn)行通訊。KogMo-RTDB需要額外的工具用于記錄和回放數(shù)據(jù),而且,最關(guān)鍵的是目前該項目的開發(fā)者社區(qū)并不活躍,因此維護(hù)的很差。

時間觸發(fā)式架構(gòu)

EB基于和Audi的合作開發(fā)經(jīng)驗推出的模塊化ADAS開發(fā)環(huán)境平臺—EB Assist Automotive Data and Time-Triggered Framework (ADTF)是目前用于ADAS系統(tǒng)開發(fā)和測試的最常用軟件架構(gòu),可幫助ADAS軟件開發(fā)者快速完成新功能的開發(fā)。作為一種具有分布式進(jìn)程鏈的實時系統(tǒng),其可支持同步和異步數(shù)據(jù)的處理。各進(jìn)程鏈之間的通訊可通過事件、服務(wù)呼叫等方式實現(xiàn)。ADTF可通過自定義模塊進(jìn)行擴(kuò)展,同時也提供諸如設(shè)備驅(qū)動和Matlab/simulink插件等工具箱以提高開發(fā)效率,與KogMo-RTDB一樣,ADTF也提供離線系統(tǒng)的仿真和調(diào)試。由于ADTF是商業(yè)化產(chǎn)品,因此主要用于商業(yè)化公司而不能被我們普通開發(fā)者所使用,除非你既是土豪又對這玩意感興趣,這樣的結(jié)果就是普通開發(fā)者或興趣愛好者很難獲取有關(guān)的應(yīng)用教程和案例。

下面我將切入該篇重點,著重介紹被研究結(jié)構(gòu)和很多國際團(tuán)隊,哪怕我們普通開發(fā)者也可廣泛使用的一種用于自動駕駛項目開發(fā)的軟件架構(gòu):ROS。

2、Robot Operating System(ROS)

樓主開通公眾號時寫的第一篇文章就是關(guān)于ROS的,主要就是對ROS的發(fā)展史、特性及系統(tǒng)架構(gòu)做了簡單的介紹《ROS簡介及其系統(tǒng)框架》,下面我將結(jié)合文章開頭提到的軟件架構(gòu)需求闡述ROS應(yīng)用于自動駕駛領(lǐng)域的優(yōu)勢。

系統(tǒng)架構(gòu)

ROS架構(gòu)是一多服務(wù)器分布式計算環(huán)境,其允許應(yīng)用跨服務(wù)器通訊并有機(jī)的組成一個系統(tǒng)整體。Master是ROS中一特殊的服務(wù)器,其負(fù)責(zé)應(yīng)用的注冊、執(zhí)行并運行參數(shù)服務(wù)器(Parameter Server)和信息記錄服務(wù)(Logging Service)。從服務(wù)器(Slave Server)與Master可使用TCP或UDP協(xié)議通過局域網(wǎng)與Master建立連接。

軟件架構(gòu)

運行在ROS環(huán)境中的應(yīng)用為Nodes(節(jié)點)和Nodelets(結(jié)點),兩者之間的區(qū)別就是Nodes(節(jié)點)是單獨的OS進(jìn)程,而Nodelets(結(jié)點)則是將多個算法打包并運行在單個OS進(jìn)程中,這樣避免了數(shù)據(jù)傳輸(因進(jìn)程內(nèi)部是共享的,傳數(shù)據(jù)的話傳個指針即可),從而實現(xiàn)零拷貝(Zero Copy),因此Nodelet可有效降低Node之間的消息傳輸(進(jìn)程間通訊)。ROS應(yīng)用代碼可使用C++、Python或Lisp進(jìn)行編寫,ROS的交互層能提供如下服務(wù):

1、  單向異步信息通訊

2、  雙向同步信息通訊

3、  診斷信息傳輸

4、  局部和全局參數(shù)處理

5、  基于時間的坐標(biāo)轉(zhuǎn)換

6、  關(guān)鍵信息記錄等

模塊化和可擴(kuò)展性

Message通訊機(jī)制:基于Message通訊的ROS支持兩種類型的Message通訊:同步和異步。但同步通訊其實用的很少,因此主要介紹一下異步通訊。異步通訊在ROS中的應(yīng)用以發(fā)布-訂閱的形式設(shè)計,如下圖所示:

提供信息的節(jié)點會首先定義一發(fā)布器并將其注冊到ROS系統(tǒng)中,訂閱信息的節(jié)點則需要定義和注冊一訂閱器,注冊的發(fā)布器和訂閱器之間以獨有的主題名(Topic)相互進(jìn)行通訊。

即插即用的模塊化特性:在新系統(tǒng)開發(fā)時,最終采用的算法往往在原型設(shè)計之后,為了實現(xiàn)功能子組件的及時替換,需要組件之間建立簡潔且完善的接口。而在ROS內(nèi)部,所需的接口在上述介紹的Message機(jī)制中得到了很好的解決。每個節(jié)點都遵守組件的輸入和輸出消息格式,例如圖像處理的ROS節(jié)點可不經(jīng)任何修改的情況下插入系統(tǒng)。

1  2  下一頁>  
聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權(quán)或其他問題,請聯(lián)系舉報。

發(fā)表評論

0條評論,0人參與

請輸入評論內(nèi)容...

請輸入評論/評論長度6~500個字

您提交的評論過于頻繁,請輸入驗證碼繼續(xù)

暫無評論

暫無評論

文章糾錯
x
*文字標(biāo)題:
*糾錯內(nèi)容:
聯(lián)系郵箱:
*驗 證 碼:

粵公網(wǎng)安備 44030502002758號