51WORLD受邀出席C-ASAM大會,深度講解基于ASAM OpenSCENARIO 2.0自研編譯器實(shí)現(xiàn)
11月25日,第二屆ASAM中國區(qū)域大會上,C-ASAM邀請51WORLD高級研發(fā)經(jīng)理、ASAM OpenSCENARIO 2.0 Implementers Forum(以下簡稱“實(shí)現(xiàn)者論壇”)仿真組組長毛祖秋作為代表,介紹了實(shí)現(xiàn)者論壇的工作內(nèi)容,并講解了支持ASAM OpenSCENARIO 2.0標(biāo)準(zhǔn)的編譯器實(shí)現(xiàn)。
本屆大會上,C-ASAM邀請了51WORLD、上海機(jī)動車檢測認(rèn)證中心、四維圖新、大疆創(chuàng)新等多家中外權(quán)威機(jī)構(gòu)、整車企業(yè)、科技公司圍繞自動駕駛仿真標(biāo)準(zhǔn)Open X的應(yīng)用案例等內(nèi)容展開了深層次探討,進(jìn)一步促進(jìn)了汽車技術(shù)標(biāo)準(zhǔn)化、國際化進(jìn)程。
作為ASAM中國區(qū)的重要會員,51WORLD積極參與ASAM標(biāo)準(zhǔn)的制定,同時自主研發(fā)了支持ASAM Open系列標(biāo)準(zhǔn)的開發(fā)工具,對標(biāo)準(zhǔn)制定工作提供了有效的反饋。
51WORLD的51Sim-One編譯器實(shí)踐驗(yàn)證ASAM OpenSCENARIO 2.0并提供反饋。今年3月,51Sim-One 2.0正式發(fā)布,在場景構(gòu)建、傳感器仿真、用戶定制化、平臺開放四大能力方面進(jìn)行了全面提升。
在推動場景標(biāo)準(zhǔn)落地、場景挖掘、定制化場景庫等領(lǐng)域,51WORLD正在積極發(fā)揮價值,努力通過產(chǎn)業(yè)化實(shí)現(xiàn)場景測試的市場化高效運(yùn)作。
ASAM OpenSCENARIO 2.0 Implementers Forum實(shí)現(xiàn)者論壇
為了支持企業(yè)對于ASAM OpenSCENARIO 2.0標(biāo)準(zhǔn)更深層次的理解,ASAM舉辦了ASAM OpenSCENARIO 2.0 實(shí)現(xiàn)者論壇,提供了一個交流技術(shù)的平臺,促進(jìn)開發(fā)工作與標(biāo)準(zhǔn)相結(jié)合。毛祖秋在本次大會上詳細(xì)介紹了ASAM OpenSCENARIO 2.0 Implementers Forum實(shí)現(xiàn)者論壇活動。
實(shí)現(xiàn)者論壇定期與開發(fā)項(xiàng)目交流反饋,目標(biāo)確保制定出更易理解、并可得到工具部分支持的標(biāo)準(zhǔn)。該論壇將提供用于合作討論、使用及實(shí)施ASAM OpenSCENARIO V2的框架。目前,該論壇一直與標(biāo)準(zhǔn)的制定并行運(yùn)行,并已為標(biāo)準(zhǔn)持續(xù)改進(jìn)提供了寶貴的反饋。
▲ASAM OpenSCENARIO并行項(xiàng)目和實(shí)現(xiàn)者論壇
實(shí)現(xiàn)者論壇設(shè)有兩個小組,一個專注于使用使用ASAM OpenSCENARIO 2.0創(chuàng)建和描述場景(規(guī)范組),另一個專注于在現(xiàn)有工具或新工具中實(shí)現(xiàn)ASAM OpenSCENARIO(仿真組)。
ASAM OpenSCENARIO 2.0標(biāo)準(zhǔn)支持具體場景、邏輯場景和抽象場景。實(shí)現(xiàn)者論壇還討論了具體場景的定義。如,具體場景的定義是什么?具體到什么程度才算具體場景?僅僅沒有描述車輛顏色而其他參數(shù)都確定的場景是不是具體場景?論壇為此進(jìn)行了多次討論,并將具體場景的定義向開發(fā)項(xiàng)目進(jìn)行了反饋。
另外,論壇還進(jìn)行了大量的實(shí)現(xiàn)結(jié)果展示、討論和反饋,比如車道保持,邏輯場景,控制切換,路口場景,切出場景等。
▲ASAM OpenSCENARIO 2.0實(shí)現(xiàn)者論壇工作流程
基于ASAM OpenSCENARIO 2.0標(biāo)準(zhǔn)的編譯器實(shí)現(xiàn)
目前,在ASAM OpenSCENARIO 2.0實(shí)現(xiàn)者論壇中,仿真組有兩種方式實(shí)現(xiàn)ASAM OpenSCENARIO 2.0標(biāo)準(zhǔn)語言,第一種是將ASAM OpenSCENARIO 2.0轉(zhuǎn)換為內(nèi)部或工具特定的格式;第二種則是通過基于ASAM OpenSCENARIO 2.0標(biāo)準(zhǔn)開發(fā)的專用編譯器直接使用ASAM OpenSCENARIO 2.0這一場景領(lǐng)域特定語言(DSL)。后者可以更直接地為標(biāo)準(zhǔn)制定過程提供寶貴的技術(shù)意見,有助于為標(biāo)準(zhǔn)開發(fā)項(xiàng)目提供反饋循環(huán),以探尋任何潛在的問題。
ASAM OpenSCENARIO 2.0作為場景領(lǐng)域特定語言(DSL),在其標(biāo)準(zhǔn)制定過程中需要專用編譯器為其提供技術(shù)反饋。
基于ASAM OpenSCENARIO 2.0標(biāo)準(zhǔn)開發(fā)的兩大編譯器:
51WORLD自研51Sim-One編譯器
毛祖秋在實(shí)現(xiàn)者論壇中介紹了51WORLD自主研發(fā)的基于ASAM OpenSCENARIO 2.0標(biāo)準(zhǔn)開發(fā)的51Sim-One編譯器,其框架也分為三個階段,預(yù)處理、編譯器前端、編譯器后端。
預(yù)處理,第一階段是進(jìn)行預(yù)處理以獲取整個內(nèi)容,當(dāng)你得到一個場景時,它可能會導(dǎo)入另一個文件或標(biāo)準(zhǔn)庫;
編譯器前端,它使用ANTLR4來實(shí)現(xiàn)EBNF,可以生成詞法分析器和語法分析器,之后,它可以得到抽象的語法樹并將其傳遞給語義分析器;
編譯器后端,場景引擎使用腳本引擎和語義模型作為后端,腳本引擎實(shí)現(xiàn)了函數(shù)調(diào)用和表達(dá)式計算,它通過棧幀實(shí)現(xiàn)函數(shù)調(diào)用。語義模型實(shí)現(xiàn)ASAM OpenSCENARIO 2.0的領(lǐng)域模型,例如駕駛(Drive)、變道(changeLane),它使用狀態(tài)機(jī)控制車輛運(yùn)動。
▲51Sim-One編譯器框架
經(jīng)典的編譯器開發(fā)主要包括三個部分,前端、中端、后端。例如,在使用方面,利用LLVM模塊化和可重用的方法,不同語言可統(tǒng)一使用LLVM中端和中間代碼。編譯器支持一種新的的編程語言只需實(shí)現(xiàn)一個新的前端,例如C++、Rust、Fortran只需實(shí)現(xiàn)各自的前端;而其支持一種新的硬件比如X86、ARM和Power PC等硬件,只需實(shí)現(xiàn)一個新的后端。
▲傳統(tǒng)編譯器的三個組成部分
博世YASE場景編譯器
實(shí)現(xiàn)者論壇上,博世公司介紹的場景編譯器YASE(Yet Another Scenario Engine)正是經(jīng)典編譯器應(yīng)用的典型案例,它借鑒了經(jīng)典編譯器中類似LLVM的模塊化和可重用的方法。YASE場景編譯器的框架也分為三個階段,前端、中端、后端。ASAM OpenSCENARIO 1.x、ASAM OpenSCENARIO 2.0和內(nèi)部工具實(shí)現(xiàn)各自的前端,并統(tǒng)一使用YASE中端,不同的模擬器實(shí)現(xiàn)各自的后端,如esmini、OpenPASS和內(nèi)部工具。YASE使用Unity和UE等常在游戲引擎中用到的行為樹進(jìn)行場景執(zhí)行。
▲YASE場景編譯器
值得一提的是,YASE是一個開源項(xiàng)目,點(diǎn)擊鏈接可查看項(xiàng)目詳情:
https://gitlab.eclipse.org/mbauerm6f/simopenpass/-/tree/master/common
支持ASAM OpenSCENARIO 2.0標(biāo)準(zhǔn)的編譯器開發(fā)難點(diǎn):
ASAM OpenSCENARIO 1.0用XML Schema來驗(yàn)證場景的合法性。在沒有編譯器時,ASAM OpenSCENARIO 2.0可以使用EBNF語法來驗(yàn)證場景的合法性。例如,使用ANTLR4來實(shí)現(xiàn)EBNF,做基本的詞法和語法檢查,不僅對場景編寫者有用,而且對開發(fā)基于ASAM OpenSCENARIO 2.0標(biāo)準(zhǔn)編譯器的企業(yè)也有幫助。
▲51Sim-One編譯器使用EBNF語法驗(yàn)證場景合法性
在開發(fā)編譯器的過程中,ASAM OpenSCENARIO 2.0標(biāo)準(zhǔn)的語法并沒有制定完成,尤其在開始階段,需求的經(jīng)常改變,對于程序員編程實(shí)現(xiàn)來說是一大困難和挑戰(zhàn),不得不綜合參考各方面的信息,比如概念版、早期版本、M-SDL、Python語法等。因此,在研發(fā)51Sim-One編譯器時,51WORLD采用模塊化架構(gòu),前端定期更新以應(yīng)對變化及跨廠商兼容性挑戰(zhàn),后端基本保持穩(wěn)定的方案。
▲51Sim-One編譯器在開發(fā)時應(yīng)對的變化挑戰(zhàn)
目前,51WORLD正計劃實(shí)現(xiàn)ANTLR4版本的EBNF并開源。
51WORLD基于ASAM OpenSCENARIO 2.0自研的51Sim-One編譯器支持語法編譯錯誤檢查,能及時發(fā)現(xiàn)語法錯誤,提高用戶使用效率。
下方視頻展示了在腳本中發(fā)現(xiàn)括號不匹配的格式錯誤,修復(fù)BUG后,直到編譯器不報錯再運(yùn)行仿真。
51WORLD高級研發(fā)經(jīng)理毛祖秋在會議中提到,對于從事計算機(jī)軟件專業(yè)的人來說,編譯器是亟待挑戰(zhàn)的硬核技術(shù)。ASAM Open系列標(biāo)準(zhǔn)作為目前自動駕駛仿真技術(shù)最重要的標(biāo)準(zhǔn)之一,對企業(yè)開發(fā)過程的影響深遠(yuǎn)。未來,51WORLD將進(jìn)一步結(jié)合ASAM Open系列標(biāo)準(zhǔn),打造更多標(biāo)準(zhǔn)應(yīng)用案例。
此外,關(guān)于計劃開源EBNF的實(shí)現(xiàn)正在根據(jù)最新ASAM OpenSCENARIO 2.0標(biāo)準(zhǔn)迭代改進(jìn)中,Sim-One未來將有更多開源計劃,請大家持續(xù)關(guān)注。
C-ASAM和ASAM OpenSCENARIO 2.0實(shí)現(xiàn)者論壇都是可以促進(jìn)行業(yè)交流加強(qiáng)交叉驗(yàn)證的優(yōu)質(zhì)社區(qū)。未來,51WORLD將繼續(xù)積極參與各項(xiàng)行業(yè)標(biāo)準(zhǔn)的制定,與更多仿真工具和編譯器廠商共同推動自動駕駛仿真技術(shù)行業(yè)的發(fā)展。