慕尼黑工业大学研究团队如何让AI自动“编写“自动驾驶测试剧本?

慕尼黑工业大学研究团队如何让AI自动“编写“自动驾驶测试剧本? 这项由德国慕尼黑工业大学自主车辆系统教席、慕尼黑机器人与机器智能研究所以及伦敦大学学院联合开展的研究已被2026年IEEE国际智能机器人与系统大会IROS 2026接收发表。论文编号为arXiv:2607.14387有兴趣深入了解的读者可通过该编号在arXiv平台查询完整原文。自动驾驶汽车上路之前工程师们需要对它进行海量的模拟考试。这些考试不能只在真实道路上做因为真实道路上很难刻意制造出闯红灯的行人或突然失控的前车这类危险场景而且成本极高、风险极大。于是工程师们转向了虚拟仿真在电脑里搭建一个虚拟城市让虚拟汽车在里面跑各种各样的险境以此来检验自动驾驶系统是否足够可靠。然而这里有一个长期困扰研究者的难题这些模拟考试剧本是用一种特殊的编程语言写成的工程师得一行行手写代码才能描述在十字路口一辆卡车突然从左侧闯入这样的场景。随着法规要求越来越复杂——光是联合国的车辆法规就有几百条——手工编写这些剧本既费时又费力根本无法覆盖所有需要测试的情况。这个困境催生了一个自然而然的设想能不能让AI大语言模型直接读懂法规条文然后自动帮我们写出测试代码研究团队围绕这个设想开发出了Chat2Scenic系统这是第一个将迭代式检索增强生成思路用于自动驾驶场景脚本生成的完整框架并在123个真实监管规范场景构成的公开基准上将代码编译成功率从此前最好方法的30%大幅提升至76%以上。一、自动驾驶测试为何像在写剧本要理解这项研究解决的问题可以把自动驾驶测试想象成一场大型话剧的排练。话剧导演工程师需要给演员虚拟汽车准备详细的剧本什么时候进场、走哪条路线、遇到什么道具行人、障碍物、红绿灯、剧情如何发展、在什么条件下结束这场戏。这份剧本必须用仿真软件能看懂的格式写成也就是一种叫做领域特定语言Domain Specific Language简称DSL的专用编程语言。其中最常用的一种DSL叫做Scenic它可以和CARLA这款开源自动驾驶仿真平台配合使用。用Scenic写出的一段代码可以描述在一个有四条车道的十字路口一辆林肯MKZ沿直线行驶同时一辆垃圾车静止在行车道中央天气为晴天场景在自动驾驶车辆行驶超过50米后结束。这段代码一旦运行CARLA就会在虚拟城市里真实呈现出这个画面。问题在于法规文本用的是自然语言比如当前方有静止障碍物时车辆应能在规定距离内完成紧急变道。把这句话翻译成几十行Scenic代码对人类工程师来说就已经很费脑筋对AI来说更是挑战重重AI必须理解场景的语义、掌握Scenic的语法规则、还要确保生成出来的代码能真正跑起来而不报错。在这项研究之前学术界主要有两种思路来应对这个挑战但两种思路都有各自的硬伤。第一种叫检索拼装先把大量已有的Scenic代码片段存进数据库遇到新场景需求时AI从数据库里找相似的片段拼在一起。这种方式就像用现成的乐高积木拼房子拼出来的东西通常能用但如果遇到数据库里没有的形状就完全束手无策。第二种叫直接生成让AI从头到尾一口气写出完整的Scenic程序。这种方式创造力强但就像让一个人一口气背诵一篇从未见过的几百字文章出错率极高生成出来的代码往往因为语法问题根本跑不起来。Chat2Scenic的核心创新正是找到了一条绕开这两条路各自死角的第三条道路。二、三个核心模块像流水线一样协作的剧本工厂Chat2Scenic的工作方式可以用一家专业剧本工厂来类比。这家工厂有三个车间前台接待室负责听清楚客户的需求、资料查阅室负责找到相关的专业资料、生产车间负责一个零件一个零件地组装剧本。**前台接待室互动模块**当用户用自然语言输入一段场景描述比如前车突然向左变道以躲避一辆静止的摩托车导致自动驾驶跟车处于高度紧急状态时互动模块首先登场。这个模块基于Gradio框架搭建了一个聊天机器人界面用户可以像和人聊天一样描述场景甚至可以在AI理解有偏差时进一步修正和追加说明。更关键的是互动模块内置了一个解读员。这个解读员会把用户的自然语言描述分解成四类结构化信息空间关系路的形状、各个车辆的相对位置、自动驾驶主车的行为参数、其他参与者的信息比如那辆静止的摩托车、以及限制条件比如场景什么时候结束。这四类信息合起来加上地图、天气、车辆型号等全局配置就构成了一张完整的场景需求清单。这张清单的每一个条目都被压缩成一句简洁的描述比如一辆摩托车静止在车道中央作为障碍物。这句话随后会被送到资料查阅室去匹配相关素材。整个解读过程还支持多轮对话——用户发现AI理解有误时可以直接追加说明系统会记住整个对话历史无需重新开始。**资料查阅室RAG模块**RAG是检索增强生成Retrieval-Augmented Generation的缩写简单说就是在AI生成答案之前先让它查一查相关资料避免凭空乱编。Chat2Scenic的资料查阅室里存放着两类档案。第一类是代码片段数据库。研究团队把官方Scenic示例代码拆解成一个个独立的小零件每个零件对应一类场景元素——比如车辆直行、行人穿越马路、车辆在路口转弯等等。每个零件都配有一句自然语言说明用向量嵌入一种让AI理解语义的技术的方式存储方便后续根据语义相似度快速检索。第二类是文档数据库里面存放着Scenic的官方语法文档以及联合国车辆法规R152、R157、R171等真实监管规范。这些文档被切割成语义完整的段落块同时支持两种检索方式一种是基于关键词精确匹配的BM25检索类似于搜索引擎的关键词搜索另一种是基于语义相似度的向量检索。两种检索结果通过一种叫做互惠排名融合的算法合并排序确保既能找到精确的API定义也能捕捉到语义相关的背景知识。这种双检索器架构的好处在于当AI准备写某个代码片段时它既能看到别人是怎么写类似代码的代码片段也能查阅这个功能的官方说明是什么文档两者结合大大降低了生成出语法错误代码的概率。**生产车间生成模块**有了需求清单和参考资料生产车间就开始按顺序逐块组装剧本。这个逐块组装正是Chat2Scenic区别于以往方法的最关键特点。工厂不是让AI一口气写完整个剧本而是把整个剧本拆成几个标准零件按照严格的依赖顺序逐个生成先生成全局配置地图、天气、车辆型号再生成空间关系代码然后是主车行为代码接着是每一个场景参与者的代码最后是限制条件代码。每生成完一个零件就把它加入已生成代码的上下文作为下一个零件生成时的参考。这就像流水线上的工人做车门的工人先量好车身的尺寸确保车门装得上去装发动机的工人参考了车底盘的规格确保发动机能塞进去。每一步都参考前一步的成果最终组装出来的整车各零件之间天然兼容不会出现车门装不上去这种问题。相比之下直接生成整个剧本就像让一个工人同时记住所有零件的规格一次性焊接完成出错的概率自然高得多。三、四种提示技巧教AI说专业语言的四套教材生产车间里的每个AI生成步骤都使用了四种精心设计的提示工程技巧可以把它们理解为教AI完成任务时用到的四套配套教材。第一套叫情境提示Contextual Prompting。在发给AI的指令里直接塞入Scenic语言的语法规则、类型层次体系比如道路网络元素→线性元素→道路/车道这样的分类树和可用的操作符。这就像给刚接手新工作的员工一份详尽的岗位手册让他在完成任务时随时查阅。第二套叫思维链Chain of Thought。要求AI在生成代码之前先按照规定的步骤思考一遍。比如生成主车行为代码时AI必须依次完成理解需求→检查上下文→选择车辆类型→定义参数→定义行为→实例化→验证这七个思考步骤然后再输出代码。这就像让工人在动手之前先在脑子里过一遍施工图纸减少返工。第三套叫少样本学习In-Context Learning。在指令里提供若干示例包括正确写法的范例和常见错误的对照示例。AI通过观察这些例子理解什么叫对、什么叫错。研究者特别设计了包含错误修正的负面示例帮助AI主动规避已知的坑。第四套叫检索增强少样本学习Retrieval-Augmented In-Context Learning。这套教材是动态的每次生成时系统会根据当前任务的具体描述实时从数据库里捞取最相关的代码片段最多三个作为示例同时检索最相关的文档段落作为背景说明。与固定的示例集相比动态检索的好处在于示例始终和眼前的任务最相关并且数据库可以持续扩充让整个系统随时间推移越来越聪明。实验结果清晰地揭示了这四套教材叠加的效果。从完全没有任何提示技巧的零样本基线出发代码编译成功率是0%——AI完全不知道怎么写Scenic代码。加入情境提示后成功率升到12.2%。再加入少样本学习跳升至47.15%。进一步叠加思维链达到54.47%。最终四种技巧全部叠加但去掉文档检索因为文档检索反而增加耗时但不提升成功率编译成功率达到76.42%整体框架准确率为58.17%。四、用123个真实法规场景来阅卷为了客观衡量Chat2Scenic的表现研究团队专门搭建了一套评测基准这在这个领域此前是空白的。这套基准收录了123个真实场景描述来源涵盖三个方向。其一是CARLA自动驾驶挑战赛的24个官方测试场景覆盖无信号灯路口通行、紧急变道等典型危险情况。其二是美国国家公路交通安全管理局NHTSA的47个事故分析场景其中16个来自真实碰撞数据31个来自碰撞前的预警情境包括行人横穿多车道这类高危场景。其三是联合国车辆法规中的52个测试场景涉及R152紧急制动辅助、R157自动变道系统和R171驾驶员警示系统三部法规场景复杂度最高描述往往包含大量技术细节和约束条件。这123个场景分布极为多样有纯车辆交互场景有涉及行人和骑行者的脆弱道路使用者场景有需要响应交通信号的场景有不同天气时段的场景还有描述复杂动态行为的场景。如此丰富的覆盖面确保评测结果不会是在某类简单场景上的偏科表现。评测使用了两层指标体系。框架性能层面研究团队统计了代码编译成功率生成的代码能否真正在CARLA里跑起来不报错、每个场景的平均生成时间以及消耗的平均词元数量衡量AI的思考量和经济成本。场景生成质量层面由人工评测员对成功编译的场景逐层打分评分维度包括道路几何是否正确、交通设施是否到位、时间天气是否符合描述、动态物体行为是否准确、环境条件是否匹配最终汇总成一个场景质量分。框架准确率则等于编译成功率乘以场景质量分是衡量端到端整体水平的综合指标。五、大比武哪款AI最擅长写自动驾驶剧本研究团队在同一套基准上测试了十余款大语言模型和两套此前的最优方法结果呈现出几个鲜明的规律。先看开源模型的表现。Qwen3-Coder:30B、Qwen3:30B和Gemma3:27B三款模型的编译成功率均为0%几乎完全无法生成可运行的Scenic代码。GPT-OSS:20B和Mistral-Small3.2:24B略好但成功率也只有不到2%。开源模型的集体失利主要归因于参数规模相对较小、预训练数据覆盖的Scenic代码量有限以及在多种复杂提示技巧交织使用时跟随指令的能力不足。商业模型的表现则参差不齐。DeepSeek-V3.2的两种模式聊天版12.2%推理版14.63%、Qwen系列各版本从1.63%到15.44%不等均远低于Gemini-3系列。Gemini-3-Pro达到60.16%而Gemini-3-Flash以76.42%的编译成功率和58.17%的框架准确率拔得头筹成为Chat2Scenic框架的最优搭档。一个出人意料的发现是Gemini-3-Flash非思维增强版的表现优于Gemini-3-Pro。研究者给出的解释是带有深度内部推理能力的思维模型在面对包含多种外部提示结构的复杂指令时内外两套思考机制之间容易相互干扰反而降低效率而专门针对指令跟随优化的Flash版本能更稳定地执行结构化提示模板从而发挥出更强的整体性能。再看与两套前辈方法的横向对比。ChatScene采用检索拼装方式从CARLA挑战赛的现有代码库里检索片段进行拼接在Gemini-3-Flash的加持下编译成功率为30.08%框架准确率11.03%。NL2Scenic采用检索式完整脚本生成编译成功率仅16.26%框架准确率10.86%。Chat2Scenic的76.42%编译成功率分别是这两套方法的2.5倍和4.7倍框架准确率则分别是5.3倍和5.4倍。ChatScene略优于NL2Scenic的原因也在情理之中ChatScene用的是真实可运行的代码片段拼在一起只要片段本身没问题拼装结果通常能编译而NL2Scenic要让AI一口气生成完整程序对于复杂场景描述任何一处语法疏漏都会导致整个程序崩溃。Chat2Scenic的逐块迭代生成策略则从根本上化解了这两种方式各自的软肋。至于响应时间的代价Chat2Scenic平均每个场景需要约222秒。相比ChatScene的10秒和NL2Scenic的43秒确实慢了许多。不过研究者指出自动驾驶测试场景的生成属于离线工作——工程师不需要实时等待花三四分钟换来可靠的测试代码这笔账在实际工程中完全划算。六、三幅真实画面系统生成的场景长什么样论文中展示了三个成功生成并在CARLA中运行的典型场景从鸟瞰视角、第一人称视角和第三人称视角多角度展示了虚拟场景的视觉效果。第一个场景来自CARLA挑战赛的描述呈现的是自动驾驶主车需要通过一个无信号灯路口与其他车辆协商通行权的情境遵循先到先过的规则。从生成的视频画面可以看到虚拟城市路口的细节相当真实车辆的相对位置和运动轨迹与描述完全吻合。第二个场景来自联合国R171法规描述的是主车跟随前车行驶前车突然向旁边车道偏移以躲避车道中央静止的摩托车或重型卡车。生成的场景在时间步进画面中清晰展示了前车的偏移轨迹和静止障碍物的位置完全符合法规测试的意图。第三个场景来自NHTSA事故数据描述行人在无人察觉的情况下横穿多车道道路驾驶员当时的注意力分散在其他车辆和交通控制设施上。这类涉及脆弱道路使用者的场景正是自动驾驶系统最难应对的危险情况之一也是测试中最重要的覆盖点。---说到底Chat2Scenic干的事情是在自动驾驶验证这个领域打通了一条此前走不通的捷径。工程师不再需要逐行手写仿真测试代码也不再受限于数据库里现有的有限场景只需要用普通语言描述一个场景甚至直接粘贴一段法规原文系统就能自动生成可以真正运行的测试剧本。76%的编译成功率意味着大约每生成四个场景只有一个需要人工干预修复这在工程实践中已经足够有用。当然这条路还没走到尽头。目前系统还只能处理文字描述如果能让工程师直接上传一张手绘的路口草图、或者一段真实事故的行车记录仪视频系统自动据此生成测试场景那将会更直接、更直观。另外现在生成的场景在运行一遍之后就结束了未来如果能让仿真结果实时反馈给生成系统——比如这个场景里主车根本没有机会触发紧急制动请调整参数使场景更具挑战性——就能形成一个自我进化的闭环让测试覆盖越来越全面、越来越有针对性。这项研究提醒我们大语言模型不只是写文章、聊天的工具当它和专业领域的结构化知识、迭代反馈机制结合在一起时可以成为工程师手中真正好用的专业工具。对自动驾驶行业来说更高效地覆盖测试边界最终意味着路上的每一辆自动驾驶汽车更安全、更可靠。---QAQ1Chat2Scenic生成的Scenic代码能直接用于真实自动驾驶系统的测试吗AChat2Scenic生成的Scenic代码适用于CARLA仿真平台中的虚拟测试生成的场景是在电脑里运行的虚拟仿真剧本而非控制真实道路上的汽车。工程师可以用这些虚拟场景来验证自动驾驶算法的行为但从仿真结果到真实道路部署之间还需要额外的验证步骤。Q2Chat2Scenic为什么选择逐块生成而不是一口气生成完整代码A一次性生成完整Scenic程序时大语言模型需要同时兼顾所有组件之间的语法兼容性任何一处疏漏都会导致整个程序报错无法运行。Chat2Scenic的逐块迭代方式让每个代码片段在生成时能参考已有的上下文确保各部分天然兼容这是编译成功率从16%跳升至76%的核心原因。Q3开源大语言模型能不能在Chat2Scenic框架里达到和Gemini相近的效果A根据论文的测试结果目前测试的开源模型包括Qwen3:30B、Gemma3:27B等编译成功率几乎为零主要原因是参数规模和预训练数据的差距以及在处理多种提示技巧交织的复杂指令时指令跟随能力不足。未来随着开源模型能力持续提升这一差距有望缩小。