论文信息
- 原标题:Model-based Development for Autonomous Driving Systems Considering Event-driven and Timer-driven Nodes
- 主要作者:Kenshin Obi、Ryo Yoshinaka、Hiroshi Fujimoto、Takuya Azumi
- 研究机构:埼玉大学理工学研究科(Saitama University Graduate School of Science and Engineering)、eSOL 株式会社软件事业部(Software Division eSOL Co., Ltd)
- 引文格式(GB/T 7714):Obi K, Yoshinaka R, Fujimoto H, et al. Model-based Development for Autonomous Driving Systems Considering Event-driven and Timer-driven Nodes[C]//2024 IEEE 50th Euromicro Conference on Software Engineering and Advanced Applications (SEAA). IEEE, 2024: 1-8. DOI:10.1109/SEAA64295.2024.00017.
- 预印本链接:arXiv:2512.23605v1 [cs.SE]
1. 一段话总结
本文针对自动驾驶系统中嵌入式系统复杂度与规模增长带来的并行化挑战,提出了一种支持 ROS 2 的模型驱动开发(MBD)框架。该框架将兼容 ROS 2 的 Simulink 模型分为事件驱动型和定时器驱动型节点进行针对性并行化,通过 MBP 工具生成并行 C 代码并转换为 ROS 2 兼容的 C++ 代码,适配多核/众核处理器(如 Kalray MPPA3-80 Coolidge)。在 POSIX 和 eMCOS 环境下的评估显示,所有模式的执行时间均缩短,且通过增加每个核心的线程数可进一步提升 CPU 利用率,解决了传统 MBD 与 ROS 2 集成困难、并发问题规避等痛点。
研究背景:自动驾驶系统的'并行化困境'
如今的自动驾驶汽车,就像一台'移动的超级计算机'——要处理摄像头、LiDAR、雷达等数十个传感器的实时数据,还要完成路径规划、障碍物识别、速度控制等复杂任务。这背后,是规模和复杂度呈指数级增长的嵌入式系统在支撑。
为了应对这种复杂性,行业里有两个'神器'被广泛使用:一是 ROS 2(机器人操作系统第二代),它就像一个'通信枢纽',让汽车各个功能模块(比如传感器、控制器)能高效交换数据;二是多核/众核处理器,就像工厂里的多条生产线,能同时处理多个任务,提升运算速度。
但问题也随之而来:要让这两个'神器'协同工作,需要对程序进行'并行化'(简单说就是把一个大任务拆成多个小任务,分配给不同核心同时做)。传统的并行化方法面临两大难题:
- 手动并行化:全靠工程师写代码拆分任务,不仅耗时费力,还容易出现数据混乱、程序卡死(死锁)等问题,就像一群工人没协调好分工,要么重复干活,要么互相挡路;
- 模型驱动开发(MBD)自动化并行化:这是更先进的方法,先通过 Simulink 等工具搭建数学模型,再自动生成并行代码,但它'不兼容'ROS 2——MBD 原本是为单个孤立模块优化设计的,而 ROS 2 的核心是模块间的通信协作,尤其是多个传感器同时输入数据时,MBD 根本不知道该怎么处理不同的触发时机(比如有的数据要实时响应,有的要定期处理)。
举个具体例子:自动驾驶中,LiDAR 的点云数据需要每隔 100 毫秒处理一次(定期触发),而摄像头检测到障碍物时需要立即启动避障计算(事件触发)。传统 MBD 无法同时适配这两种触发逻辑,导致 ROS 2 和 MBD 很难'牵手成功',并行化效果大打折扣。
创新点:三大核心突破,破解集成难题
这篇论文的厉害之处,在于精准击中了上述痛点,提出了一套'对症下药'的解决方案,核心创新点有三个:
- 首次明确'双驱动'分类:将 ROS 2 兼容的 Simulink 模型分为事件驱动型(数据来了就立即处理,比如障碍物检测)和定时器驱动型(到点就处理,比如定期更新地图),针对性设计并行逻辑;
- 自动化集成转换:无需手动修改代码,框架能自动把 MBD 工具(MBP)生成的并行 C 代码,转换成 ROS 2 能直接使用的 C++ 代码,打通从模型到实际部署的'最后一公里';
- 多核/众核适配优化:支持单核心分配多个线程,解决了传统并行化中'核心等待通信时没事干'的问题,还专门设计了死锁规避脚本,适配众核处理器(如 80 核的 Kalray MPPA3-80 Coolidge)。
2. 思维导图



