11月25日,第二届ASAM中国区域大会上,C-ASAM邀请51WORLD高级研发经理、ASAMOpenSCENARIO2.0ImplementersForum(以下简称“实现者论坛”)仿真组组长毛祖秋作为代表,介绍了实现者论坛的工作内容,并讲解了支持ASAMOpenSCENARIO2.0标准的编译器实现。
本届大会上,C-ASAM邀请了51WORLD、上海机动车检测认证中心、四维图新、大疆创新等多家中外权威机构、整车企业、科技公司围绕自动驾驶仿真标准OpenX的应用案例等内容展开了深层次探讨,进一步促进了汽车技术标准化、国际化进程。
作为ASAM中国区的重要会员,51WORLD积极参与ASAM标准的制定,同时自主研发了支持ASAMOpen系列标准的开发工具,对标准制定工作提供了有效的反馈。
51WORLD的51Sim-One编译器实践验证ASAMOpenSCENARIO2.0并提供反馈。今年3月,51Sim-One2.0正式发布,在场景构建、传感器仿真、用户定制化、平台开放四大能力方面进行了全面提升。
在推动场景标准落地、场景挖掘、定制化场景库等领域,51WORLD正在积极发挥价值,努力通过产业化实现场景测试的市场化高效运作。
ASAMOpenSCENARIO2.0ImplementersForum实现者论坛
为了支持企业对于ASAMOpenSCENARIO2.0标准更深层次的理解,ASAM举办了ASAMOpenSCENARIO2.0实现者论坛,提供了一个交流技术的平台,促进开发工作与标准相结合。毛祖秋在本次大会上详细介绍了ASAMOpenSCENARIO2.0ImplementersForum实现者论坛活动。
实现者论坛定期与开发项目交流反馈,目标确保制定出更易理解、并可得到工具部分支持的标准。该论坛将提供用于合作讨论、使用及实施ASAMOpenSCENARIOV2的框架。目前,该论坛一直与标准的制定并行运行,并已为标准持续改进提供了宝贵的反馈。
▲ASAMOpenSCENARIO并行项目和实现者论坛
实现者论坛设有两个小组,一个专注于使用使用ASAMOpenSCENARIO2.0创建和描述场景(规范组),另一个专注于在现有工具或新工具中实现ASAMOpenSCENARIO(仿真组)。
ASAMOpenSCENARIO2.0标准支持具体场景、逻辑场景和抽象场景。实现者论坛还讨论了具体场景的定义。如,具体场景的定义是什么?具体到什么程度才算具体场景?仅仅没有描述车辆颜色而其他参数都确定的场景是不是具体场景?论坛为此进行了多次讨论,并将具体场景的定义向开发项目进行了反馈。
另外,论坛还进行了大量的实现结果展示、讨论和反馈,比如车道保持,逻辑场景,控制切换,路口场景,切出场景等。
▲ASAMOpenSCENARIO2.0实现者论坛工作流程
基于ASAMOpenSCENARIO2.0标准的编译器实现
目前,在ASAMOpenSCENARIO2.0实现者论坛中,仿真组有两种方式实现ASAMOpenSCENARIO2.0标准语言,第一种是将ASAMOpenSCENARIO2.0转换为内部或工具特定的格式;第二种则是通过基于ASAMOpenSCENARIO2.0标准开发的专用编译器直接使用ASAMOpenSCENARIO2.0这一场景领域特定语言(DSL)。后者可以更直接地为标准制定过程提供宝贵的技术意见,有助于为标准开发项目提供反馈循环,以探寻任何潜在的问题。
ASAMOpenSCENARIO2.0作为场景领域特定语言(DSL),在其标准制定过程中需要专用编译器为其提供技术反馈。
基于ASAMOpenSCENARIO2.0标准开发的两大编译器:
51WORLD自研51Sim-One编译器
毛祖秋在实现者论坛中介绍了51WORLD自主研发的基于ASAMOpenSCENARIO2.0标准开发的51Sim-One编译器,其框架也分为三个阶段,预处理、编译器前端、编译器后端。
预处理,第一阶段是进行预处理以获取整个内容,当你得到一个场景时,它可能会导入另一个文件或标准库;
编译器前端,它使用ANTLR4来实现EBNF,可以生成词法分析器和语法分析器,之后,它可以得到抽象的语法树并将其传递给语义分析器;
编译器后端,场景引擎使用脚本引擎和语义模型作为后端,脚本引擎实现了函数调用和表达式计算,它通过栈帧实现函数调用。语义模型实现ASAMOpenSCENARIO2.0的领域模型,例如驾驶(Drive)、变道(changeLane),它使用状态机控制车辆运动。
▲51Sim-One编译器框架
经典的编译器开发主要包括三个部分,前端、中端、后端。例如,在使用方面,利用LLVM模块化和可重用的方法,不同语言可统一使用LLVM中端和中间代码。编译器支持一种新的的编程语言只需实现一个新的前端,例如C++、Rust、Fortran只需实现各自的前端;而其支持一种新的硬件比如X86、ARM和PowerPC等硬件,只需实现一个新的后端。
▲传统编译器的三个组成部分
博世YASE场景编译器
实现者论坛上,博世公司介绍的场景编译器YASE(YetAnotherScenarioEngine)正是经典编译器应用的典型案例,它借鉴了经典编译器中类似LLVM的模块化和可重用的方法。YASE场景编译器的框架也分为三个阶段,前端、中端、后端。ASAMOpenSCENARIO1.x、ASAMOpenSCENARIO2.0和内部工具实现各自的前端,并统一使用YASE中端,不同的模拟器实现各自的后端,如esmini、OpenPASS和内部工具。YASE使用Unity和UE等常在游戏引擎中用到的行为树进行场景执行。
▲YASE场景编译器
值得一提的是,YASE是一个开源项目,点击链接可查看项目详情: