陸奇去年在上海車展期間發(fā)布Apollo計(jì)劃,向所有合作伙伴免費(fèi)開(kāi)放無(wú)人駕駛能力,當(dāng)時(shí)有文章評(píng)價(jià)這是百度扔下了原子彈,炸掉了無(wú)人駕駛企業(yè)數(shù)百億美元投入,今天讓我們深度剖析一下Apollo自動(dòng)駕駛平臺(tái),看看是不是有真的“原子彈”。
自百度宣布開(kāi)放 Apollo 自動(dòng)駕駛平臺(tái)以來(lái),很多開(kāi)發(fā)者非常期待可以深入了解 Apollo 平臺(tái)的開(kāi)放內(nèi)容,以便更充分高效的利用這個(gè)自動(dòng)駕駛平臺(tái),研究并落地自己對(duì)于自動(dòng)駕駛的諸多想法。
為此,7 月 22 日,由百度開(kāi)發(fā)者中心主辦、極客邦科技承辦的 73 期百度技術(shù)沙龍?jiān)O(shè)置 Apollo 主題,現(xiàn)場(chǎng)百度資深架構(gòu)師從 Apollo 的開(kāi)放能力、Apollo 代碼開(kāi)放框架以及基于深度學(xué)習(xí)的 End to End 自動(dòng)駕駛方案三個(gè)技術(shù)維度做了深度分享,以期幫助開(kāi)發(fā)者深度了解百度 Apollo 開(kāi)放內(nèi)容和平臺(tái)架構(gòu),設(shè)計(jì)并實(shí)現(xiàn)一套完整的駕駛方案。
Apollo 的開(kāi)放能力和開(kāi)放數(shù)據(jù)
百度資深數(shù)據(jù)平臺(tái)專家楊凡做了開(kāi)場(chǎng)演講,他表示:“Apollo 開(kāi)放內(nèi)容實(shí)質(zhì)上分為兩大部分:能力開(kāi)放和資源開(kāi)放,能力開(kāi)放提供開(kāi)發(fā)者實(shí)現(xiàn)車上自動(dòng)駕駛的平臺(tái),資源開(kāi)放提供開(kāi)發(fā)者探索算法進(jìn)化的平臺(tái),這二者相輔相成,缺一不可?!?/p>
Apollo 的開(kāi)放能力
Apollo1.0 主要開(kāi)放的是封閉場(chǎng)地循跡自動(dòng)駕駛的框架,從上之下分別是服務(wù)層、軟件平臺(tái)層、參考硬件層以及參考汽車層,其中標(biāo)藍(lán)部分為具體開(kāi)放模塊。各層級(jí)的具體功能如下:
參考汽車層:實(shí)現(xiàn)電子化的控制,也就是線控汽車,這是最底層的一步;
參考硬件層:實(shí)現(xiàn)計(jì)算能力,包括計(jì)算單元、GPS/IMU、HMI Device 等;
軟件平臺(tái)層:最核心的層,分為 3 個(gè)部分。1、實(shí)時(shí) RTOS 系統(tǒng),要求保證實(shí)時(shí)反應(yīng);2、運(yùn)行時(shí)框架;3、定位模塊和控制模塊以及 HMI 人機(jī)交互模塊。這三塊構(gòu)成了本期開(kāi)放的封閉場(chǎng)地循跡自動(dòng)駕駛軟件體系;
云服務(wù)層:在云服務(wù)層開(kāi)放了數(shù)據(jù)開(kāi)放平臺(tái)和喚醒萬(wàn)物的 DuerOS。
以上四層構(gòu)成了百度 Apollo 自動(dòng)駕駛平臺(tái)的整個(gè)技術(shù)棧。目前開(kāi)放的 Apollo1.0 具有高效易拓展架構(gòu)、立即可用硬件、一鍵啟動(dòng)更新和完備的開(kāi)發(fā)工具四大特性。
Apollo 的開(kāi)放資源
Apollo1.0 在資源上開(kāi)放了三個(gè)關(guān)鍵數(shù)據(jù)集:2D 紅綠燈、3D 障礙物以及 Road Hackers。百度將這三部分?jǐn)?shù)據(jù)開(kāi)放至云端,以便用戶高效研究運(yùn)用。下圖為 Apollo 數(shù)據(jù)開(kāi)放平臺(tái)的架構(gòu)邏輯介紹。
如圖,用戶通過(guò)云端 Docker Repository,下載基于本地的 VM + Docker 的開(kāi)發(fā)環(huán)境,編寫(xiě)訓(xùn)練和預(yù)測(cè)兩部分算法,配置依賴環(huán)境。通過(guò)云端用戶空間的可視化訓(xùn)練調(diào)試平臺(tái),將用戶在本機(jī)創(chuàng)建的算法容器,在云端實(shí)現(xiàn)調(diào)度,展開(kāi)訓(xùn)練評(píng)估調(diào)試。這樣用戶可以在整個(gè)云中的數(shù)據(jù)開(kāi)放平臺(tái)中,基于海量數(shù)據(jù)利用集群的 CPU+GPU 資源訓(xùn)練調(diào)試 model,并在其中選取有效的 model 使用。
現(xiàn)場(chǎng),楊凡親自展示了 Apollo 平臺(tái)的使用流程和使用方法,本文不再此贅述,想要?jiǎng)邮謱?shí)踐的讀者可以移步至 Apollo 官網(wǎng) apollo.auto,在“開(kāi)發(fā)者”/“數(shù)據(jù)開(kāi)放平臺(tái)”頁(yè)面有詳細(xì)的使用介紹。
Apollo 代碼開(kāi)放框架
自動(dòng)駕駛系統(tǒng)包括障礙物檢測(cè)、紅綠燈識(shí)別、駕駛行為決策、路徑規(guī)劃等系列復(fù)雜的功能模塊,如何將這些獨(dú)立而又相互依賴的模塊集成在一起,構(gòu)建成一個(gè)穩(wěn)定的運(yùn)行系統(tǒng),是一個(gè)巨大的挑戰(zhàn)。百度資深架構(gòu)師何瑋從百度為何選用 ROS 系統(tǒng)、Apollo 中 ROS 的改進(jìn)實(shí)踐、Apollo 框架使用介紹三個(gè)角度分享了 ROS 在百度自動(dòng)駕駛的探索和實(shí)踐。
百度為何選用 ROS 系統(tǒng)?
在百度為何選用 ROS 系統(tǒng)的問(wèn)題上,何瑋給出解釋,ROS 是一個(gè)強(qiáng)大而靈活的機(jī)器人編程框架,同時(shí)也是學(xué)術(shù)界使用最廣泛的框架,它具有三大特性:完整的開(kāi)發(fā)工具包、靈活的計(jì)算調(diào)度模型以及豐富的調(diào)試工具,能夠統(tǒng)一提供配置管理、部署運(yùn)行、底層通信等功能,讓開(kāi)發(fā)者將更多精力放在算法功能的研發(fā)上,快速構(gòu)建系統(tǒng)原型,驗(yàn)證算法和功能。
Apollo 中 ROS 的改進(jìn)實(shí)踐
ROS 系統(tǒng)的優(yōu)勢(shì)顯而易見(jiàn),但其在 Apollo 平臺(tái)的應(yīng)用中也并非一帆風(fēng)順。百度在做研發(fā)調(diào)試到產(chǎn)品化的過(guò)程中,遇到的不少狀況,針對(duì)這些問(wèn)題,百度從通信功能優(yōu)化、去中心化網(wǎng)絡(luò)拓?fù)湟约皵?shù)據(jù)兼容性擴(kuò)展三個(gè)方面做了定制化的改進(jìn)。
1、通信性能優(yōu)化:共享內(nèi)存
問(wèn)題:自動(dòng)駕駛系統(tǒng)為了能夠感知復(fù)雜的道路場(chǎng)景并完成駕駛?cè)蝿?wù),需要多種傳感器協(xié)同工作,以覆蓋不同場(chǎng)景、不同路況的需求。而主流的多傳感器融合方案至少會(huì)包含一個(gè)激光雷達(dá)和多個(gè)相機(jī),如此大的數(shù)據(jù)量對(duì)通信的性能有很大的挑戰(zhàn)。
解決方案:百度采用的解決方案是共享內(nèi)存,減少傳輸中的數(shù)據(jù)拷貝, 提升傳輸效率。
1 對(duì) 1 的傳輸場(chǎng)景下,同一個(gè)機(jī)器上的 ROS 節(jié)點(diǎn)之間是 socket 進(jìn)行進(jìn)程間通信,中間存在多層協(xié)議棧以及多次用戶空間和內(nèi)核空間的數(shù)據(jù)拷貝,造成了很多不必要的資源占用和性能損耗。共享內(nèi)存的方式來(lái)替代 socket 作為進(jìn)程間通信的方式,通過(guò)減少不必要的內(nèi)存拷貝,來(lái)降低了系統(tǒng)的傳輸延時(shí)和資源占用。
單對(duì)多的傳輸場(chǎng)景下,ROS 在處理一對(duì)多的消息傳輸時(shí),底層實(shí)現(xiàn)實(shí)際是多個(gè)點(diǎn)對(duì)點(diǎn)的連接,當(dāng)把一份數(shù)據(jù)要發(fā)給四個(gè)節(jié)點(diǎn)時(shí),相同的數(shù)據(jù)會(huì)傳輸四次,這會(huì)造成很大的資源浪費(fèi)。共享內(nèi)存的傳輸過(guò)程,能夠支持一次寫(xiě)入,多次讀取的功能,對(duì)于一對(duì)多的傳輸場(chǎng)景,相同的數(shù)據(jù)包只需要寫(xiě)入一次即可,成倍地提高了傳輸?shù)男省?/p>
2、去中心化的網(wǎng)絡(luò)拓?fù)洌菏褂?RTPS 服務(wù)發(fā)現(xiàn)協(xié)議
問(wèn)題:ROS 并非完全的分布式框架,每個(gè) ROS 網(wǎng)絡(luò)中需要有一個(gè)中心節(jié)點(diǎn) ROS Master, 各個(gè)節(jié)點(diǎn)在初始化時(shí)會(huì)像 Master 注冊(cè)拓?fù)?a target="_blank">信息并獲取其他節(jié)點(diǎn)的信息。這種方式有兩個(gè)缺點(diǎn):1、Master 作為系統(tǒng)的單點(diǎn),一旦崩潰整個(gè)網(wǎng)絡(luò)將不可用;2、Master 缺乏異常恢復(fù)機(jī)制,崩潰后無(wú)法通過(guò)監(jiān)控重啟等方式自動(dòng)恢復(fù)。
解決方案:為了解決這個(gè)問(wèn)題,百度在 ROS 在框架加入了基于 RTPS 協(xié)議的服務(wù)發(fā)現(xiàn)功能。
整個(gè)網(wǎng)絡(luò)拓?fù)洳辉僖?master 為中心構(gòu)建,而是通過(guò)域的概念進(jìn)行劃分。當(dāng)一個(gè)新的節(jié)點(diǎn)加入網(wǎng)絡(luò)時(shí),會(huì)通過(guò) RTPS 協(xié)議向域內(nèi)的所有其他節(jié)點(diǎn)發(fā)送廣播信息,各個(gè)節(jié)點(diǎn)也會(huì)將自己的服務(wù)信息發(fā)送給新的節(jié)點(diǎn),以代替 Master 的信息交換功能。
通過(guò)這種方式,能夠使 ROS 網(wǎng)絡(luò)的拓?fù)浒l(fā)現(xiàn)不再依賴 Master 單點(diǎn),提高了系統(tǒng)的魯棒性。同時(shí)該修改完全基于 ROS 底層的修改,對(duì)上層應(yīng)用程序完全透明,開(kāi)發(fā)者也不需要對(duì)此功能有任何的代碼適配工作。
3、數(shù)據(jù)兼容性擴(kuò)展:用 Protobuf 替換 Message
問(wèn)題:ROS 系統(tǒng)為了保證收發(fā)雙方的消息格式一致,會(huì)對(duì) message 定義做 MD5 校驗(yàn),任何字段的增減或順序調(diào)整都會(huì)使 MD5 變化,以保證系統(tǒng)的健壯性。然而這種嚴(yán)格的限制也引起了兼容性的問(wèn)題,當(dāng)接口升級(jí)后,不同的模塊之間不再能夠通信,大大增加了模塊版本之間的耦合。
解決方案:使用 protobuf 來(lái)替換 ROS 中的 Message 來(lái)作為消息定義的格式。protobuf 本身有良好的兼容性支持,只需要在使用中定義好 required 字段,后續(xù)新增 optional 字段并不會(huì)對(duì)消息的解析造成影響。
Apollo 框架使用介紹
隨后,何瑋簡(jiǎn)單介紹了 Apollo 框架的使用方法:
第一步:安裝 docher 系統(tǒng)。用 install-dacker 腳本安裝和部署 docker 環(huán)境,包含下載、代碼等一系列工作,安裝完之后需要注銷,并且用戶重新登陸,這其中需要注意的是因?yàn)樯婕坝脩魴?quán)限的變更,需要當(dāng)前用戶注銷之后才能完全生效;
第二步:編譯 Apollo。編譯代碼:bash Apollo.sh build;
第三步,啟動(dòng) Apollo。此步驟下需要對(duì) Apollo 系統(tǒng)進(jìn)行編譯,編譯完成之后啟動(dòng) Apollo。百度提供了一鍵啟動(dòng)版本,可以將后臺(tái)的應(yīng)用和前端顯示完整啟動(dòng)。第一步:安裝 docher 系統(tǒng)。用 install-dacker 腳本安裝和部署 docker 環(huán)境,包含下載、代碼等一系列工作,安裝完之后需要注銷,并且用戶重新登陸,這其中需要注意的是因?yàn)樯婕坝脩魴?quán)限的變更,需要當(dāng)前用戶注銷之后才能完全生效;
目前 Apollo 開(kāi)源代碼已上傳至 Github 網(wǎng)站,具體鏈接為:github.com/apolloauto,感興趣的碼農(nóng)們可前往查閱相關(guān)的工具和文檔。
基于深度學(xué)習(xí)的 End to End 自動(dòng)駕駛方案
開(kāi)發(fā)者想要基于 Apollo 平臺(tái)設(shè)計(jì)一套完整的自動(dòng)駕駛系統(tǒng),前提需要了解百度的自動(dòng)駕駛系統(tǒng)選擇和方案詳情,百度自動(dòng)駕駛事業(yè)部資深架構(gòu)師郁浩為大家分享了基于傳統(tǒng) Rule Based 與 End to End 自動(dòng)駕駛方案的異同與優(yōu)劣,以及 Apollo 平臺(tái)在數(shù)據(jù)和模型上的實(shí)踐。
基于深度學(xué)習(xí)的方案選擇
郁浩表示,目前,業(yè)界和學(xué)術(shù)界主流還是 Rule based 系統(tǒng)。Rule based 從車輛、到傳感器感知、World model、然后進(jìn)行決策、控制、最后到車輛,形成了比較完整的閉環(huán)系統(tǒng)。不過(guò),其在實(shí)際的應(yīng)用上還是有比較明顯的瓶頸:系統(tǒng)復(fù)雜(人工設(shè)計(jì))、高精地圖成本高(需要廣鋪以及實(shí)時(shí)更新),計(jì)算性能(資源浪費(fèi))。而 End-to-End 方式能夠很好的解決這些問(wèn)題。下圖為 Rule based 與 End-to-End 優(yōu)劣對(duì)比。
通過(guò)對(duì)比,可以看到 End-to-End 方案雖然解決了 Rule based 在應(yīng)用上的部分缺點(diǎn),但其在基本功能實(shí)現(xiàn)上需要進(jìn)一步的探索和實(shí)踐。郁浩認(rèn)為,這兩種方案,均有各自的優(yōu)劣勢(shì),在現(xiàn)階段,無(wú)法完全依靠某一種深度學(xué)習(xí)方案實(shí)現(xiàn)自動(dòng)駕駛功能,Rule based 和 End-to-End 在未來(lái)的趨勢(shì)上必將是吸收對(duì)方的優(yōu)點(diǎn)進(jìn)行融合而絕非對(duì)立。
Apollo 實(shí)踐:數(shù)據(jù)
數(shù)據(jù)產(chǎn)生分一般兩類,一類是真實(shí)數(shù)據(jù),一類是模擬器數(shù)據(jù)。目前,關(guān)于中國(guó)國(guó)情的真實(shí)數(shù)據(jù)非常稀少,模擬器數(shù)據(jù)雖然能在一定的能況下起借鑒作用,但大多通過(guò)游戲渲染出來(lái)的,其渲染的紋理與真實(shí)場(chǎng)景的紋理千差萬(wàn)別,幾乎無(wú)法用到真實(shí)的道路上。
百度在這方面投入甚高,每年都會(huì)使用大量數(shù)據(jù)車實(shí)地采集幾百萬(wàn)公里的數(shù)據(jù)進(jìn)行分析。郁浩表示,本次開(kāi)放的數(shù)據(jù)主要摘取了前向數(shù)據(jù),包括 Image、RTK-GPS 以及 IMU 等,每一個(gè)開(kāi)源的數(shù)據(jù)文件對(duì)應(yīng)一次采集任務(wù)。這里比較有意思的是,百度沒(méi)有直接開(kāi)源出精準(zhǔn)坐標(biāo),而是根據(jù)坐標(biāo)參數(shù)繁衍出1/R(拐彎半徑的倒數(shù))和縱向指令。開(kāi)發(fā)者可以里利用它與車廠合作,直接上路行駛。
Apollo 實(shí)踐:模型
百度在去年的時(shí)候使用的是簡(jiǎn)單的橫向模型 CNN 以及縱向控制模型 Convolutional-LSTM,今年,百度將這二者融合到一起,采用的橫向 + 縱向的模式:LRCN,該模型需要關(guān)注點(diǎn)時(shí)序處理、橫縱向關(guān)聯(lián)關(guān)系、因果 VS 軌跡預(yù)測(cè)、Attention 機(jī)制、遷移等問(wèn)題,即能夠精準(zhǔn)的預(yù)測(cè)出周圍的環(huán)境。
自動(dòng)駕駛的模型構(gòu)建還在探索階段。百度希望與開(kāi)發(fā)者和合作伙伴一起,通過(guò)資源和能力的開(kāi)放,開(kāi)發(fā)出一套真正智能、完整、安全的自動(dòng)駕駛解決方案。
-
自動(dòng)駕駛
+關(guān)注
關(guān)注
785文章
13940瀏覽量
167073 -
Apollo
+關(guān)注
關(guān)注
5文章
343瀏覽量
18515
原文標(biāo)題:深度剖析Apollo自動(dòng)駕駛平臺(tái)
文章出處:【微信號(hào):IV_Technology,微信公眾號(hào):智車科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
谷歌的自動(dòng)駕駛汽車是醬紫實(shí)現(xiàn)的嗎?
自動(dòng)駕駛真的會(huì)來(lái)嗎?
自動(dòng)駕駛的到來(lái)
3天造出自動(dòng)駕駛汽車的百度Apollo,背后竟有50多個(gè)后臺(tái)
AI/自動(dòng)駕駛領(lǐng)域的巔峰會(huì)議—國(guó)際AI自動(dòng)駕駛高峰論壇
自動(dòng)駕駛集體爆發(fā)?看看2018CES那些大佬怎么說(shuō)
自動(dòng)駕駛平臺(tái)Apollo,是否帶動(dòng)了行業(yè)變革?
Apollo開(kāi)發(fā)套件加速自動(dòng)駕駛研發(fā)
百度Apollo 5.5自動(dòng)駕駛平臺(tái)發(fā)布,新增了什么功能呢
百度Apollo發(fā)布消息 自動(dòng)駕駛開(kāi)放平臺(tái)將迎來(lái)新的合作伙伴
研制光刻機(jī)難度,比研制原子彈難多了
百度通過(guò)Apollo平臺(tái)和Weltmeister EV展示了全自動(dòng)駕駛
百度Apollo自動(dòng)駕駛平臺(tái)及自動(dòng)駕駛等級(jí)
![百度<b class='flag-5'>Apollo</b><b class='flag-5'>自動(dòng)駕駛</b><b class='flag-5'>平臺(tái)</b>及<b class='flag-5'>自動(dòng)駕駛</b>等級(jí)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評(píng)論