美團分布式自動駕駛引擎

編輯 | Qingquan
來源 |  美團無人配送

美團分布式自動駕駛引擎的圖1

背景與挑戰(zhàn)


經(jīng)過數(shù)年的積累,美團無人車已經(jīng)從技術(shù)探索進入到業(yè)務(wù)運營階段,這個階段對于自動駕駛車端系統(tǒng)和離線系統(tǒng)都有了新的要求。

在車端系統(tǒng)上,我們更加關(guān)注如何構(gòu)建低成本、低功耗、高穩(wěn)定性的自動駕駛系統(tǒng)來支撐大規(guī)模運營,對此業(yè)界常用多片ARM芯片并配合邊緣計算技術(shù)來實現(xiàn),這對于上層軟件自動駕駛引擎來說也有了新的要求,即需要它能夠支撐多計算節(jié)點的協(xié)作運行。

外在離線仿真系統(tǒng)上,仿真任務(wù)的迅速增長,要求我們需要具備高效管理、運行超大規(guī)模仿真任務(wù)的能力,由于不同類型的仿真任務(wù)對硬件算力的需求并不一樣,那么在仿真系統(tǒng)所能使用的硬件資源配比相對固定的情況下,我們就需要將最大化資源所能承載的任務(wù)同樣作為引擎的優(yōu)化目標(biāo)。

美團無人車技術(shù)團隊如何應(yīng)對以上挑戰(zhàn),下文將展開講述。


1)往分布式計算平臺的平滑遷移


在從傳統(tǒng)IPC向分布式計算平臺的過渡過程中,我們希望上層功能模塊在移入到分布式計算平臺上運行時無需任何適配,功能模塊也無需關(guān)心它所運行的節(jié)點是否跟上下游模塊在同一個節(jié)點上。


為完成上述目標(biāo),我們就需要自動駕駛引擎能夠提供運行環(huán)境的抽象與隔離,引擎為完成這一層抽象,必須解決三個關(guān)鍵點:分布式環(huán)境下高實時性的數(shù)據(jù)傳輸、高實時性的調(diào)度、關(guān)鍵自動駕駛數(shù)據(jù)的實時記錄。

美團分布式自動駕駛引擎的圖2
圖1.  引擎需要將算力向端上平滑遷移

2) 拆分調(diào)度仿真任務(wù)


仿真系統(tǒng)是自動駕駛研發(fā)的重要手段,在自動駕駛進入到運營階段之后,仿真任務(wù)也迅速增長,目前美團自動駕駛仿真系統(tǒng)每天執(zhí)行數(shù)百萬仿真任務(wù),峰值流量每小時上百萬任務(wù),仿真里程每天上千萬公里。


前面提到,不同的仿真任務(wù)對硬件算力的需求是不一樣的,比如感知預(yù)測仿真任務(wù)必須依賴GPU運行,在硬件資源(或者其硬件資源的配比)是固定的前提下,為擺脫這種仿真任務(wù)的硬性依賴進一步提升資源利用率,我們需要將仿真任務(wù)中不同的子任務(wù)按照計算屬性拆分到不同的機器上運行,其中引擎要負責(zé)完成同一任務(wù)在不同機器間的通信和執(zhí)行調(diào)度,并做到這種拆分對上層仿真任務(wù)無感。


美團分布式自動駕駛引擎的圖3
圖2.  如何在仿真環(huán)境中依據(jù)任務(wù)屬性調(diào)度任務(wù)


在美團,我們打造了統(tǒng)一的自動駕駛引擎來同時滿足車端計算平臺和離線仿真系統(tǒng)的需求,因此面向運營的分布式引擎也會遵循這一策略,使用統(tǒng)一的架構(gòu)來滿足車端分布式計算平臺和離線仿真系統(tǒng)在大規(guī)模運營階段的新需要。

美團分布式自動駕駛引擎的圖4

分布式自動駕駛引擎架構(gòu)


自動駕駛引擎作為車載自動駕駛系統(tǒng)和離線仿真系統(tǒng)的運行調(diào)度管理中心,負責(zé)構(gòu)建自動駕駛功能模塊(定位、感知、預(yù)測、規(guī)劃等)的運行環(huán)境,讓上層功能模塊的開發(fā)者專注于模塊的核心功能開發(fā)。

而諸如模塊的如何穩(wěn)定執(zhí)行、上下游的數(shù)據(jù)如何傳輸、自動駕駛數(shù)據(jù)如何可靠記錄等問題則由引擎來處理。

在自動駕駛進入運營階段之后,為應(yīng)對前述講到的分布式計算平臺的新需求和仿真系統(tǒng)的挑戰(zhàn),自動駕駛引擎需要關(guān)注以下關(guān)鍵點

a).能夠提供底層不同硬件平臺和計算場景(單IPC/分布式計算平臺/仿真集群)的高度抽象與隔離,對上層功能模塊提供統(tǒng)一的執(zhí)行接口,上層模塊不需要任何改變就可以運行在不同的業(yè)務(wù)場景中,這種隔離和抽象是對高效研發(fā)的重要支撐。

b).提供高效的自動駕駛各功能模塊的數(shù)據(jù)交互機制,各場景下的通信接口完全一致。

c).統(tǒng)一管理自動駕駛各模塊的公共基礎(chǔ)依賴,比如配置、地圖、環(huán)境等,并對上層模塊提供統(tǒng)一的接口。

d).提供可靠的自動駕駛系統(tǒng)運行數(shù)據(jù)記錄,并要保證數(shù)據(jù)完備、一致。

基于以上考量,美團自動駕駛引擎的整體架構(gòu)如下圖所示,后續(xù)章節(jié)會對架構(gòu)中關(guān)鍵模塊做進一步闡述。

美團分布式自動駕駛引擎的圖5
圖3.  美團面向運營場景的自動駕駛引擎架構(gòu)


美團分布式自動駕駛引擎的圖6

關(guān)鍵技術(shù)


3.1 分布式通信總線

為應(yīng)對自動駕駛運營階段的新需求,我們構(gòu)建了一套基于Pub-Sub模式的可擴展的通信機制,并已經(jīng)將之?dāng)U展到多種通信場景中,比如單節(jié)點多進程間的IPC通信、多節(jié)點間也根據(jù)需要提供了gRPC和PCIe等多種通信方式來滿足分布式計算平臺和仿真平臺上的需要,而上層功能模塊在不同場景下均使用統(tǒng)一的通信接口。


下圖是分布式通信總線的層次結(jié)構(gòu)示意圖。

美團分布式自動駕駛引擎的圖7
圖4.  分布式通信總線層次結(jié)構(gòu)

通信總線關(guān)鍵組件解釋:

a).CallbackManager負責(zé)管理上層功能模塊訂閱者的回調(diào)函數(shù)及其執(zhí)行。

b).Dispatcher負責(zé)構(gòu)建通信路由,并根據(jù)路由將消息分發(fā)到對應(yīng)的節(jié)點,他是通信總線的核心組件,他決定了自動駕駛數(shù)據(jù)流的完整通路,圖5是一個模塊間通信的數(shù)據(jù)流轉(zhuǎn)過程的示例。

c).Channel負責(zé)實際的消息傳輸,并根據(jù)不同的場景構(gòu)建了不同方式的Channel來供上層業(yè)務(wù)模塊選擇。

美團分布式自動駕駛引擎的圖8
圖5.  自動駕駛消息流轉(zhuǎn)過程示例

3.2 自動駕駛數(shù)據(jù)記錄

自動駕駛數(shù)據(jù)的記錄對于我們分析自動駕駛問題至關(guān)重要,數(shù)據(jù)記錄的完整性和可靠性直接決定了研發(fā)效率的下限。

對于分布式場景下的自動駕駛數(shù)據(jù)記錄來說,我們關(guān)心以下幾點:

a).數(shù)據(jù)的高度有序性:各計算節(jié)點間的數(shù)據(jù)按照時間線進行有序統(tǒng)一記錄是事后高效數(shù)據(jù)分析的基礎(chǔ),如何在分布式場景中保證海量數(shù)據(jù)(100+GB/Hour量級)的有序性是數(shù)據(jù)記錄的一個難點。


b).數(shù)據(jù)的完整性:自動駕駛的數(shù)據(jù)要做到不遺漏,不重復(fù),在需要記錄的數(shù)據(jù)中,除了自動駕駛業(yè)務(wù)模塊的數(shù)據(jù)外,通信鏈路本身的Trace數(shù)據(jù)和模塊執(zhí)行數(shù)據(jù)對于分析系統(tǒng)問題同樣重要,實際應(yīng)用中我們發(fā)現(xiàn)這類數(shù)據(jù)量非常大,一般會達到2-3萬條/秒,對這些數(shù)據(jù)的記錄不能影響到自動駕駛系統(tǒng)的平穩(wěn)運行。

針對這些挑戰(zhàn),我們的解決方案是,采取集中式 + 主動拉取式的數(shù)據(jù)記錄落盤策略,即通信數(shù)據(jù)和系統(tǒng)數(shù)據(jù)統(tǒng)一進入通信總線,使用單一Recorder主動監(jiān)聽總線進行數(shù)據(jù)記錄落盤,最大化減少數(shù)據(jù)記錄對系統(tǒng)正常運行的影響,在主動拉取的工作方式上運用重排機制,解決了分布式場景下可能出現(xiàn)的亂序問題。

下圖是一個典型的數(shù)據(jù)流記錄的示例流程。

美團分布式自動駕駛引擎的圖9
圖6.  自動駕駛關(guān)鍵數(shù)據(jù)記錄流程示例

3.3 分布式環(huán)境下地圖管理的挑戰(zhàn)

自動駕駛地圖是自動駕駛系統(tǒng)正常運行不可或缺的一部分,并且它是上層功能模塊的一個通用組件,因此分布式引擎也負責(zé)管理車端地圖。


在自動駕駛進入運營階段之后,自動駕駛地圖的管理有了新的挑戰(zhàn):


a).在運營階段,ODD的不斷快速擴展成為常態(tài),全量地圖數(shù)據(jù)已經(jīng)無法全部載入內(nèi)存,顯然這是地圖管理在運營階段需要著重解決的主要問題之一。

b).另外在實際大規(guī)模化運營過程中,自動駕駛地圖類信息更新比較頻繁,比如某個交通燈壞掉、車道線更新、路兩側(cè)植被環(huán)境短時間內(nèi)變化較大等等,這就要求我們能夠支撐高頻的自動駕駛地圖更新需求。

針對地圖數(shù)據(jù)的不斷擴張等問題,我們通過精細化地圖服務(wù),使用車輛位置動態(tài)加載瓦片地圖,很好地解決了這一阻礙。

此外我們引入了動態(tài)圖層管理,提供了準(zhǔn)實時更新高頻變化的地圖數(shù)據(jù)的手段,為保證全天候的自動駕駛運營提供了重要支撐。


下圖是自動駕駛引擎中地圖管理流程的示意圖。

美團分布式自動駕駛引擎的圖10
圖7.  分布式引擎地圖服務(wù)管理方案示意圖


結(jié)束語



美團自動駕駛引擎的演進有效支撐了上層業(yè)務(wù)在不同階段的需求,為分布式計算平臺提供了系統(tǒng)級的軟件解決方案,也為仿真系統(tǒng)進一步提升資源利用率掃除了主要障礙,促進了美團無人車規(guī)模化快速落地運營的進程。

未來,美團無人車技術(shù)團隊也將持續(xù)深耕末端物流無人配送領(lǐng)域,努力成為構(gòu)建“幫大家吃得更好,生活更好”美好生活中的重要一環(huán)。

登錄后免費查看全文
立即登錄
App下載
技術(shù)鄰APP
工程師必備
  • 項目客服
  • 培訓(xùn)客服
  • 平臺客服

TOP