日本无码免费高清在线|成人日本在线观看高清|A级片免费视频操逼欧美|全裸美女搞黄色大片网站|免费成人a片视频|久久无码福利成人激情久久|国产视频一二国产在线v|av女主播在线观看|五月激情影音先锋|亚洲一区天堂av

  • 手機(jī)站
  • 小程序

    汽車測(cè)試網(wǎng)

  • 公眾號(hào)
    • 汽車測(cè)試網(wǎng)

    • 在線課堂

    • 電車測(cè)試

自動(dòng)駕駛軟件平臺(tái)方案對(duì)比

2021-12-31 08:12:43·  來源:智祺的手稿  
 
自動(dòng)駕駛系統(tǒng)的軟件方案包含兩部分:自動(dòng)駕駛算法,和相應(yīng)的軟件平臺(tái)。自動(dòng)駕駛算法通常更受歡迎,一般來說大家不太討論軟件平臺(tái)。這里我們把市面上常見的軟件平
自動(dòng)駕駛系統(tǒng)的軟件方案包含兩部分:自動(dòng)駕駛算法,和相應(yīng)的軟件平臺(tái)。
自動(dòng)駕駛算法通常更受歡迎,一般來說大家不太討論軟件平臺(tái)。這里我們把市面上常見的軟件平臺(tái)的公開信息收集一下,總結(jié)一下常見的自動(dòng)駕駛軟件平臺(tái)都有什么特點(diǎn)。
首先定義一下這里要討論的軟件平臺(tái)的方案。這里討論的軟件平臺(tái)包含狹義的操作系統(tǒng)Kernel和相應(yīng)的中間件。
另外基于MCU的環(huán)境基本上就是autosar cp,是事實(shí)上的標(biāo)準(zhǔn),所以不討論了,下面討論到autosar,都是說的autosar ap.
對(duì)autosar平臺(tái)而言,它包含了OS(可以是linux也可以是QNX等)和一套autosar 服務(wù)(即前面說的“中間件”)。對(duì)于ROS,它包含了Linux和一套上層的中間件。對(duì)于TTTech的motionwise則更加奇怪,它包含一套狹義的操作系統(tǒng)、autosar、還有一層autosar之上的東西,非常神奇。
所以一套軟件平臺(tái)的特性一方面取決于選用的操作系統(tǒng),另一方面也取決于中間件。兩者單獨(dú)一個(gè),都并不能決定整套軟件平臺(tái)的特性。
在操作系統(tǒng)層面,常見的有Linux/QNX等選擇。其中l(wèi)inux開源免費(fèi),有最多的支持,大家最為熟悉,開發(fā)資源最為豐富,不過一般比較少用于安全相關(guān)的場(chǎng)景。QNX封閉,掌握的人比較少,理論上asil-d。
另外還有PikeOS/seL4等小眾的選擇(兩者同宗同源),不討論了。
操作系統(tǒng)kernel這一層面,因?yàn)檫x擇少,信息基本都公開,都已經(jīng)被充分討論了,所以他們的特性大家大致上都清楚,所以這里也就沒必要展開說了。
所以我們主要集中在kernel之上的內(nèi)容。
對(duì)于kernel之上的內(nèi)容,還可以分層兩部分。


參考apollo的方案,開發(fā)軟件平臺(tái)部分,可以分為RTOS / Cyber RT /(地圖引擎、定位……),最下面的RTOS部分上面我們已經(jīng)提過了,就是狹義的操作系統(tǒng)內(nèi)核,這里不討論了。最上層面這一層(地圖引擎、定位……), 是一些跟應(yīng)用有關(guān)的東西,比如高精定位,這個(gè)功能可能不同應(yīng)用都要用,所以apollo平臺(tái)就幫做了一個(gè)平臺(tái)化的統(tǒng)一實(shí)現(xiàn),保證了質(zhì)量,簡(jiǎn)化了開發(fā)。這一層,套用現(xiàn)在汽車行業(yè)的時(shí)髦話來說,就是SOA服務(wù)層。這一層本質(zhì)上是一些預(yù)置的應(yīng)用,從我的角度來說,其實(shí)不算我理解的“軟件平臺(tái)”的概念。
所以這里討論的重點(diǎn),就是中間的apollo cyber rt這一層,以及其他平臺(tái)上類似的層。估計(jì)每個(gè)公司其實(shí)都有一層這樣的架構(gòu),但是如果不是開放平臺(tái)的話,基本都是私有機(jī)密,所以我們只能找?guī)讉€(gè)開放的平臺(tái)來對(duì)比,以及一些不開放,但是商業(yè)化出售的平臺(tái),他們多少得有一些PR材料,能看出一點(diǎn)點(diǎn)東西。
根據(jù)平臺(tái)開放程度以及網(wǎng)上是否能找到資料,選定了下面幾種平臺(tái)來分析:
Apollo Cyber RT
ROS2
AutoSar AP
Nvidia DriveOS
TTTech Motionwise
Apollo cyber rt
https://apollo.auto/Apollo-Homepage-document/Apollo_Doc_CN_6_0/%E4%B8%8A%E6%9C%BA%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/%E5%AE%9E%E6%97%B6%E9%80%9A%E4%BF%A1%E6%A1%86%E6%9E%B6CyberRT%E7%9A%84%E4%BD%BF%E7%94%A8/CyberRT%E4%BB%8B%E7%BB%8D
參考官方網(wǎng)站上的介紹,cyber rt主要有以下特點(diǎn):
Component
在自動(dòng)駕駛系統(tǒng)中,模塊(如感知、定位、控制系統(tǒng)等)在 Cyber RT 下以 Component 的形式存在。不同 Component 之間通過 Channel 進(jìn)行通信。Component 概念不僅解耦了模塊,還為將模塊拆分為多個(gè)子模塊提供了靈活性。
Channel
Channel 用于管理 Cyber RT 中的數(shù)據(jù)通信。用戶可以發(fā)布/訂閱同一個(gè) Channel,實(shí)現(xiàn) P2P 通信。
Task
Task 是 Cyber RT 中異步計(jì)算任務(wù)的抽象描述。
Node
Node 是 Cyber RT 的基本組成部分。每個(gè)模塊都包含一個(gè) Node 并通過 Node 進(jìn)行通信。通過在節(jié)點(diǎn)中定義 Reader/Writer 或 Service/Client,模塊可以具有不同類型的通信形式。
Reader/Writer
Reader/Writer 通常在 Node 內(nèi)創(chuàng)建,作為 Cyber RT 中的主要消息傳輸接口。
Service/Client
除 Reader/Writer 外,Cyber RT 還提供了用于模塊通信的 Service/Client 模式。它支持節(jié)點(diǎn)之間的雙向通信。當(dāng)對(duì)服務(wù)發(fā)出請(qǐng)求時(shí),客戶端節(jié)點(diǎn)將收到響應(yīng)。
Parameter
參數(shù)服務(wù)在 Cyber RT 中提供了全局參數(shù)訪問接口。它是基于 Service/Client 模式構(gòu)建的。
服務(wù)發(fā)現(xiàn)
作為一個(gè)去中心化的框架,Cyber RT 沒有用于服務(wù)注冊(cè)的主/中心節(jié)點(diǎn)。所有節(jié)點(diǎn)都被平等對(duì)待,可以通過“服務(wù)發(fā)現(xiàn)”找到其他服務(wù)節(jié)點(diǎn)。使用 UDP 用來服務(wù)發(fā)現(xiàn)。
CRoutine
參考協(xié)程(Coroutine)的概念,Cyber RT 實(shí)現(xiàn)了 Coroutine 來優(yōu)化線程使用和系統(tǒng)資源分配。
Scheduler
為了更好地支持自動(dòng)駕駛場(chǎng)景,Cyber RT 提供了多種資源調(diào)度算法供開發(fā)者選擇。
Message
Message 是 Cyber RT 中用于模塊之間數(shù)據(jù)傳輸?shù)臄?shù)據(jù)單元。
Dag 文件
Dag 文件是模塊拓?fù)潢P(guān)系的配置文件。您可以在 dag 文件中定義使用的 Component 和上游/下游通道。
Launch 文件
Launch 文件提供了一種啟動(dòng)模塊的簡(jiǎn)單方法。通過在 launch 文件中定義一個(gè)或多個(gè) dag 文件,可以同時(shí)啟動(dòng)多個(gè)模塊。
Record 文件
Record 文件用于記錄從 Cyber RT 中的 Channel 發(fā)送/接收的消息?;胤?Record 文件可以幫助重現(xiàn) Cyber RT 之前操作的行為。
把這些內(nèi)容稍微分組,可以看到以下幾組概念:
架構(gòu)概念:cyber rt是怎么描述整個(gè)系統(tǒng)的,可以看到cyber rt用 compoenent 、channel、task、node,DAG, Launch文件這幾種概念來描述這個(gè)系統(tǒng)
通信:可以看到cyber rt能支持reader/writer, service/client,parameter,message,服務(wù)發(fā)現(xiàn)這些通信概念 - >和DDS / SOME/IP非常像,感覺像是某種魔改DDS。
調(diào)度:可以看到cyber rt有一個(gè)scheduler,還支持協(xié)程。可以大膽推測(cè)cyber rt支持協(xié)程級(jí)別的任務(wù)調(diào)度。
輔助工具:Record文件,用來支持離線分析。
再看ROS2
ROS2沒有一個(gè)特別完善的頁(yè)面說現(xiàn)在支持的功能,可以從下面幾個(gè)地方總結(jié)出來
Feature Status


可以看到大部分的功能其實(shí)是通信的功能
下一個(gè)release中要加入的新功能


框框里的和調(diào)度相關(guān),其他的大致上還是和通信相關(guān)
再看New Feature idea


ROS2能看到的細(xì)節(jié)比CyberRT多很多。總的來說,給我的感覺主要是圍繞這兩個(gè)topic:通信和調(diào)度
Autosar ap:


Autosar ap給我的感覺, 一個(gè)是通信管理Communication Management,其他的部分我都可以歸結(jié)于“輔助”,比如Persistency,PHM等,這些確實(shí)都是一個(gè)平臺(tái)需要的部分,但是你說它多關(guān)鍵,多重要吧,也不覺得。所以autosar ap總結(jié)下來, 就是通信管理+其他輔助組件。事實(shí)上,很多公司買autosar ap,他們經(jīng)常就買一個(gè)通信管理communication management,其他的可能就自己開發(fā)了。
Nvidia DriveOS & TTTech Motion wise
參考https://mp.weixin.qq.com/s/Pfm0NBPPQ0UmIpFN6kJtZQ
Nvidia DriveOS不是完全開放的,需要有合作關(guān)系,但是從上面的佐思的公眾號(hào)文章可以看到(別的地方看不到這個(gè)信息),DriveOS集成了TTTech的Motionwise


可以看到DriveOS也通過Motionwise提供了通信、調(diào)度等的功能。然后我們?nèi)TTech的官網(wǎng)看一看


似乎TTTech的產(chǎn)品特點(diǎn)就是任務(wù)的調(diào)度什么的,都是實(shí)時(shí)的、確定的。畢竟人家公司的名字就叫time triggered technology
總結(jié):
這些方案比較下來,我的一個(gè)感覺是,一個(gè)自動(dòng)駕駛軟件平臺(tái)主要需要實(shí)現(xiàn)如下內(nèi)容:
1.通信
2.調(diào)度
3.安全&安全
4.輔助功能:log、記錄、診斷、升級(jí),等等。
其中我覺得最核心的,是其中的通信和調(diào)度的部分。
通信的部分, 通信中間件概念這兩三年是汽車行業(yè)的當(dāng)紅炸子雞概念,第一次在全車架構(gòu)層面成為技術(shù)基石,SOME/IP技術(shù)也迅速地從無人知曉到小甜甜變牛夫人,如今嫌棄SOME/IP獨(dú)寵DDS成為新的政治正確。通信中間件技術(shù)已經(jīng)得到非常充分的討論,這里就不再討論了。只能說如今DDS風(fēng)頭正盛,各家的通信中間件就算不是DDS,也是類似DDS,或者是DDS魔改。
所以剩下的一個(gè)話題就是任務(wù)調(diào)度。
本來,狹義的操作系統(tǒng),他的核心工作就是任務(wù)調(diào)度,根據(jù)一系列算法來切換不同任務(wù)對(duì)CPU的占用。
那這種情況下,為什么需要在用戶空間重新實(shí)現(xiàn)一遍任務(wù)調(diào)度呢?核心的需求的為了集成。設(shè)想假設(shè)整個(gè)自動(dòng)駕駛算法都由一個(gè)大神在一個(gè)進(jìn)程內(nèi)寫完,他完全熟悉掌握多線程,完全熟悉懂得怎么調(diào)配CPU,那他完全可以在這個(gè)進(jìn)程內(nèi)寫一個(gè)私有化的CPU資源調(diào)配機(jī)制,也完全不需要將調(diào)度信息暴露出來給集成團(tuán)隊(duì),因?yàn)樗约壕褪羌蓤F(tuán)隊(duì)。
但現(xiàn)實(shí)生活不是這樣的,現(xiàn)實(shí)生活中,自動(dòng)駕駛算法的是由不同的工程師,不同的團(tuán)隊(duì),獨(dú)立開發(fā)出來的。不同的模塊一定有上下游邏輯關(guān)系,一定有時(shí)序關(guān)系。所以兩個(gè)模塊之間一定要去協(xié)商這樣的關(guān)系。如果只有兩個(gè)模塊,那也不需要一個(gè)平臺(tái)化的方案來控制這些上下游邏輯和時(shí)序關(guān)系,兩個(gè)模塊的開發(fā)團(tuán)隊(duì)完全可以私下去協(xié)商一套機(jī)制。但是自動(dòng)駕駛系統(tǒng)有非常多的不同節(jié)點(diǎn),所以不可能都是各個(gè)節(jié)點(diǎn)的團(tuán)隊(duì)獨(dú)立地去弄私有的邏輯時(shí)序關(guān)系,因此需要一套平臺(tái)化的調(diào)度解決方案。
其次,即使不考慮平臺(tái)化地控制邏輯時(shí)序關(guān)系,還會(huì)存在別的問題。以linux為例,Linux其實(shí)提供了不錯(cuò)的實(shí)時(shí)性。但是如果沒有一個(gè)平臺(tái)化的調(diào)度方案,每個(gè)應(yīng)用都說為了提高我自己的實(shí)時(shí)性,我都設(shè)成sched_fifo + prio99,那最后整個(gè)系統(tǒng)的表現(xiàn)仍是混亂的。要充分地利用linux的實(shí)時(shí)性,不只是說要提高優(yōu)先級(jí),而是要有一些中心化的方案來統(tǒng)籌,優(yōu)化這些問題,才能取得整體的好效果。因此,需要一套平臺(tái)化的調(diào)度解決方案。
最后,即使各節(jié)點(diǎn),都按照系統(tǒng)設(shè)計(jì)好的方案,合理地調(diào)用系統(tǒng)的資源,各個(gè)模塊的私有方案都協(xié)調(diào)得很好(不存在的,沒有這種事情),還有一個(gè)驅(qū)動(dòng)因素可能使得我們需要一套用戶空間的,中央化的調(diào)度方案,就是輔助分析。因?yàn)槿绻麤]有一個(gè)用戶空間的中央化的調(diào)度方案,我們要看任務(wù)調(diào)度的情況,就需要從內(nèi)核打log出來,比較麻煩。用戶空間的調(diào)度器就可以比較方便地解決這個(gè)問題。
綜上,自動(dòng)駕駛平臺(tái)需要一個(gè)平臺(tái)化的用戶空間的任務(wù)調(diào)度機(jī)制,cyberRT,ROS2, Nvidia/TTTech已經(jīng)做出了表率。
所以接下來的問題是,用戶空間的任務(wù)調(diào)度器要實(shí)現(xiàn)什么功能(實(shí)現(xiàn)原理就不討論了)。內(nèi)核空間的調(diào)度器是由社區(qū)(Linux)或者開發(fā)公司(QNX)自己定義的。用戶空間的調(diào)度器提供的功能就完全由各個(gè)軟件平臺(tái)的開發(fā)方來實(shí)現(xiàn)了。下面分別介紹一下。
Cyber RT和ROS2開始在用戶空間做任務(wù)調(diào)度的緣由都是吐槽ROS1沒有類似機(jī)制,沒有實(shí)時(shí)性,于是百度切換成了自己的方案CyberRT,ROS社區(qū)則開始了ROS2,不過做法比較不一樣。
CyberRT官網(wǎng)有描述它的思路,一個(gè)是為了解決任務(wù)之間的執(zhí)行順序,調(diào)度器的配置文件里會(huì)說明一個(gè)執(zhí)行鏈上各任務(wù)的邏輯先后關(guān)系,調(diào)度器會(huì)保證按順序執(zhí)行。另一個(gè)是為了簡(jiǎn)化多核并行處理的編程難度,開發(fā)者只關(guān)心各個(gè)任務(wù)的業(yè)務(wù)邏輯,然后在配置表里寫明白這幾個(gè)任務(wù)是要并行處理的,調(diào)度器就知道主動(dòng)地把這幾個(gè)任務(wù)分配到各個(gè)不同的核上去執(zhí)行。具體可以參見CyberRT官網(wǎng)和github
ROS2則做的事情好像就有點(diǎn)雞肋。它只是根據(jù)報(bào)文到達(dá)的時(shí)間來決定某個(gè)任務(wù)是否ready,然后順序執(zhí)行這些ready的任務(wù)。除了能防止任務(wù)的互相搶占從而避免不必要的開銷外,看不出來有什么用。具體可以參見知乎這一篇
https://zhuanlan.zhihu.com/p/404067881
Nvidia/TTTech做的事情好像就比較簡(jiǎn)單,把任務(wù)按照時(shí)間計(jì)劃排布,從時(shí)間上進(jìn)行隔離。
綜上通過對(duì)市面上能看到的軟件平臺(tái)的分析,可以知道一個(gè)自動(dòng)駕駛軟件平臺(tái)最核心的事情有兩件,一件是通信中間件,一件是任務(wù)調(diào)度。通信中間件方面,DDS有一統(tǒng)天下的趨勢(shì)。不過任務(wù)調(diào)度方面,則各家有各家的想法,沒有統(tǒng)一的方案。
分享到:
 
反對(duì) 0 舉報(bào) 0 收藏 0 評(píng)論 0
滬ICP備11026917號(hào)-25