跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
C++AI算法

从 Simulink 到 ROS 2:基于模型驱动的自动驾驶并行代码生成框架

针对自动驾驶嵌入式系统复杂度增长问题,提出支持 ROS 2 的模型驱动开发(MBD)框架。该框架将 Simulink 模型分为事件驱动和定时器驱动节点,通过 MBP 工具生成并行 C 代码并转换为 ROS 2 兼容 C++ 代码。实验表明,在 POSIX 和 eMCOS 环境下,增加核心数及线程数可显著缩短执行时间,解决了传统 MBD 与 ROS 2 集成困难及并发问题,提升了开发效率和系统可靠性。

ByteFlow发布于 2026/4/11更新于 2026/7/2138 浏览
从 Simulink 到 ROS 2:基于模型驱动的自动驾驶并行代码生成框架

论文信息

  • 原标题: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(机器人操作系统第二代),它就像一个'通信枢纽',让汽车各个功能模块(比如传感器、控制器)能高效交换数据;二是多核/众核处理器,就像工厂里的多条生产线,能同时处理多个任务,提升运算速度。

但问题也随之而来:要让这两个'神器'协同工作,需要对程序进行'并行化'(简单说就是把一个大任务拆成多个小任务,分配给不同核心同时做)。传统的并行化方法面临两大难题:

  1. 手动并行化:全靠工程师写代码拆分任务,不仅耗时费力,还容易出现数据混乱、程序卡死(死锁)等问题,就像一群工人没协调好分工,要么重复干活,要么互相挡路;
  2. 模型驱动开发(MBD)自动化并行化:这是更先进的方法,先通过 Simulink 等工具搭建数学模型,再自动生成并行代码,但它'不兼容'ROS 2——MBD 原本是为单个孤立模块优化设计的,而 ROS 2 的核心是模块间的通信协作,尤其是多个传感器同时输入数据时,MBD 根本不知道该怎么处理不同的触发时机(比如有的数据要实时响应,有的要定期处理)。

举个具体例子:自动驾驶中,LiDAR 的点云数据需要每隔 100 毫秒处理一次(定期触发),而摄像头检测到障碍物时需要立即启动避障计算(事件触发)。传统 MBD 无法同时适配这两种触发逻辑,导致 ROS 2 和 MBD 很难'牵手成功',并行化效果大打折扣。

创新点:三大核心突破,破解集成难题

这篇论文的厉害之处,在于精准击中了上述痛点,提出了一套'对症下药'的解决方案,核心创新点有三个:

  1. 首次明确'双驱动'分类:将 ROS 2 兼容的 Simulink 模型分为事件驱动型(数据来了就立即处理,比如障碍物检测)和定时器驱动型(到点就处理,比如定期更新地图),针对性设计并行逻辑;
  2. 自动化集成转换:无需手动修改代码,框架能自动把 MBD 工具(MBP)生成的并行 C 代码,转换成 ROS 2 能直接使用的 C++ 代码,打通从模型到实际部署的'最后一公里';
  3. 多核/众核适配优化:支持单核心分配多个线程,解决了传统并行化中'核心等待通信时没事干'的问题,还专门设计了死锁规避脚本,适配众核处理器(如 80 核的 Kalray MPPA3-80 Coolidge)。
2. 思维导图

思维导图

3. 详细总结
一、研究背景与问题
  1. 技术趋势:自动驾驶领域嵌入式系统的复杂度和规模显著增长,促使行业采用 ROS 2(机器人操作系统第二代)作为中间件,以及多核/众核处理器满足实时处理需求。
  2. 核心挑战:
    • 传统手动程序并行化面临数据完整性维护、死锁等并发问题;
    • 模型驱动开发(MBD)虽能自动化并行化,但在 ROS 2 多输入场景下集成困难,因 ROS 2 侧重节点间通信协作,而传统 MBD 并行化聚焦孤立节点优化。
二、核心基础概念与工具
技术/工具关键特性核心作用
MBP(Model-Based Parallelizer)3 个阶段(信息添加、核心分配、代码生成),依赖 BLXML 和 SHIM从 Simulink 模型自动生成并行 C 代码,适配多核处理器
ROS 2节点为基本执行单元,基于发布/订阅模式(话题通信)实现复杂机器人系统的组件集成与数据交互
众核处理器(Kalray MPPA3-80 Coolidge)80 核,分为 5 个计算集群(CC),通过 NoC 共享内存提供高性能、低功耗的并行处理能力
操作系统POSIX(Ubuntu 22.04/Windows 10)、eMCOS(实时操作系统)前者用于通用评估,后者支持众核处理器,微内核架构减少资源竞争
三、提出的 MBD 框架设计
  1. 框架目标:自动将 Simulink 模型转换为 ROS 2 兼容的并行 C++ 代码,支持事件驱动和定时器驱动节点,适配多核/众核处理器。
  2. 输入与输出:
    • 输入:MBP 生成的并行 C 代码、ROS 2 节点信息(话题名、消息类型、回调函数名);
    • 输出:事件驱动型或定时器驱动型的 ROS 2 并行 C++ 代码。
  3. 节点类型设计:
    • 定时器驱动型:按固定时间间隔触发处理(如 LiDAR 点云接收),通过定时器回调函数触发多线程处理,数据更新通过订阅回调写入中央数据区;
    • 事件驱动型(3 种模式):
      1. 所有输入话题接收数据后触发处理;
      2. 特定输入话题接收数据后触发处理;
      3. 特定输入话题接收且时间戳接近时触发处理(基于 message_filters 同步)。
  4. 性能优化策略:
    • 单核心分配多线程:解决 MBP 默认 1 核 1 线程导致的通信等待空闲问题,提升 CPU 利用率;
    • 死锁规避:针对 Kalray MPPA3-80 Coolidge 设计转换脚本,避免线程占用核心导致的死锁。
四、评估环境与结果
  1. 评估环境参数:
    环境处理器核心数内存ROS 2 版本其他
    POSIXIntel Core i5-12400F6 物理核32.0 GBHumble Hawksbill线程调度策略 SCHED_FIFO
    eMCOSKalray MPPA3-80 Coolidge80 核(5 个 CC)-Humble Hawksbill单核心最大线程数 32
  2. 评估方法:使用随机 Simulink 模型(通过 SLForge 生成),重复测量 1000 次执行时间,取中位数 80% 的平均值作为结果。
  3. 核心结果:
    • 基本并行化效果:两种环境下,核心数增加(1→2→4 核)均导致执行时间缩短;POSIX 环境中事件驱动与定时器驱动模式执行时间接近;
    • 多线程优化效果:
      • POSIX 环境:2 核下线程数从 8 增至 64,执行时间显著缩短;
      • eMCOS 环境:2 核/4 核下线程数从 8 增至 32,执行时间总体缩短,但 4 核下线程数从 8→16 时因上下文切换成本增加,执行时间暂时上升;
    • 环境差异:相同核心/线程数下,POSIX 环境(2.5GHz)执行时间短于 eMCOS 环境(1.0GHz),因处理器频率差异。
五、相关工作与结论
  1. 相关工作对比:现有 MBD 并行化方案(如 Scilab/Xcos、CoCoSim)未同时支持 ROS 2 集成与事件/定时器驱动节点,本文框架填补了这一空白(见表 II)。
  2. 研究贡献:
    • 实现 Simulink 模型的定时器驱动和事件驱动并行化;
    • 支持 ROS 2 多输入模型的自动并行化;
    • 适配多核/众核处理器,提升执行效率。
  3. 未来方向:
    • 扩展至多模型互联的并行化优化;
    • 增加更多实用的节点模式,提升框架灵活性。
4. 关键问题
问题 1:本文提出的 MBD 框架如何解决传统 MBD 与 ROS 2 集成的核心矛盾?

答案:核心矛盾在于传统 MBD 并行化聚焦孤立节点优化,而 ROS 2 侧重节点间通信协作,且多输入场景下处理时序复杂。框架通过两点解决:① 将 ROS 2 兼容的 Simulink 模型明确分为事件驱动型和定时器驱动型节点,针对性设计并行逻辑(如事件驱动的 3 种触发模式、定时器驱动的固定间隔触发);② 自动整合 MBP 生成的并行 C 代码与 ROS 2 输入输出接口,补充话题名、消息类型等节点信息,无需手动修改代码即可实现 ROS 2 节点的并行化,避免了传统方案中 ROS 2 模块与 MBD 并行化的兼容性问题。

问题 2:该框架在多核/众核处理器上的性能优化策略是什么?效果如何?

答案:优化策略主要是单核心分配多线程(突破 MBP 默认 1 核 1 线程的限制),通过在核心等待跨核通信时切换线程执行其他任务,提升 CPU 利用率。效果验证如下:① POSIX 环境中,2 核处理器线程数从 8 增至 64 时,执行时间显著缩短;② eMCOS 环境中,2 核/4 核处理器线程数从 8 增至 32 时,执行时间总体下降(仅 4 核 8→16 线程时因上下文切换成本上升暂时变长);③ 两种环境下,核心数从 1 增至 4 时,所有模式均实现执行时间缩短,验证了并行化的有效性。

问题 3:本文提出的事件驱动型节点有哪几种模式?各自适用场景是什么?

答案:事件驱动型节点分为 3 种模式,适用场景不同:① 所有输入话题接收数据后触发:适用于需多源数据协同处理的场景(如多传感器数据融合);② 特定输入话题接收数据后触发:适用于以某一核心数据为触发条件的场景(如仅当摄像头检测到障碍物时启动避障计算);③ 特定输入话题接收且时间戳接近时触发:适用于对数据时序一致性要求高的场景(如自动驾驶中摄像头图像与 LiDAR 点云的时间同步处理),通过 message_filters 的 ApproximateTime/ExactTime 策略保证时序匹配。

研究方法:一步步看懂'并行化框架'的工作流程

这篇论文的研究思路非常清晰,就像搭积木一样,把复杂的方法论拆成了 4 个关键步骤:

第一步:打好基础——准备核心工具与数据
  • 用 Simulink 搭建自动驾驶系统的模型(比如传感器数据处理、控制逻辑);
  • 通过 MBP 工具对模型进行自动化并行化:先生成模型的结构信息(BLXML 文件)和单核心 C 代码,再根据处理器性能(通过 SHIM 工具获取)分配核心任务,最终生成并行 C 代码;
  • 收集 ROS 2 节点信息:包括话题名(数据传输的'通道名')、消息类型(数据格式)、回调函数名(数据处理的'触发器')。
第二步:核心转换——适配'双驱动'节点

框架根据模型的触发逻辑,将并行 C 代码转换成两种 ROS 2 节点类型:

节点类型工作原理应用场景
定时器驱动型按固定时间间隔触发回调函数,启动多线程处理;数据通过订阅话题写入中央数据区LiDAR 点云处理、定期地图更新
事件驱动型分 3 种模式:
  1. 所有输入话题都收到数据才触发;
  2. 特定输入话题收到数据就触发;
  3. 特定话题收到数据且时间戳接近才触发(时序同步) | 多传感器数据融合、障碍物检测触发避障、摄像头与 LiDAR 数据同步 |
第三步:性能优化——提升 CPU 利用率

针对传统 MBD'1 核 1 线程'导致的资源浪费问题,框架采用'单核心多线程'策略:

  • 比如一个核心原本只处理 1 个线程,等待跨核通信时就会闲置;现在分配多个线程,等待时可以切换到其他线程继续工作,就像一个工人在等待物料时,先去处理另一个订单,效率大幅提升;
  • 针对众核处理器可能出现的死锁问题,设计转换脚本,避免线程长期占用核心。
第四步:实验验证——在两种环境下测试效果

为了证明框架的有效性,作者搭建了两种测试环境:

环境硬件配置软件配置
POSIXIntel Core i5-12400F(6 核,2.5GHz)、32GB 内存Ubuntu 22.04/Windows 10、ROS 2 Humble Hawksbill、MBP 2.3.1
eMCOSKalray MPPA3-80 Coolidge(80 核,1.0GHz)实时操作系统 eMCOS、ROS 2 Humble Hawksbill
  • 测试用例:通过 SLForge 工具生成随机 Simulink 模型(模拟自动驾驶多输入场景);
  • 测试方法:重复运行 1000 次,取中位数 80% 的平均执行时间作为结果,确保数据可靠性。

主要成果和贡献:实实在在的价值的是什么?

这篇论文的成果不是'纸上谈兵',而是能直接落地的实用技术,核心价值有 3 点:

1. 执行效率显著提升
  • POSIX 环境:核心数从 1 增至 4 时,所有模式的执行时间均缩短;2 核处理器下,线程数从 8 增至 64,执行时间大幅下降;
  • eMCOS 环境:核心数从 1 增至 4 时,执行时间总体缩短(虽 2 核→4 核时因通信开销略有波动,但并行化收益仍超过开销);
  • 两种驱动模式效果相当:事件驱动和定时器驱动的执行时间差异极小,说明框架能适配不同场景的需求。
2. 开发效率大幅提高
  • 自动化程度高:从 Simulink 模型到 ROS 2 并行代码,全程无需手动修改,解决了传统 MBD 与 ROS 2 集成的'手动适配'痛点,缩短开发周期;
  • 可靠性提升:框架自动处理数据完整性、死锁等并发问题,减少工程师的调试工作量,降低出错概率。
3. 领域突破性贡献
研究问题(RQ)对比对象实验结论
MBD 能否高效集成 ROS 2 多输入场景?传统 MBD(不支持 ROS 2 集成)能!框架自动生成 ROS 2 兼容代码,支持事件/定时器双驱动
单核心多线程策略是否有效?传统 1 核 1 线程并行化有效!CPU 利用率提升,执行时间进一步缩短
框架能否适配多核/众核处理器?仅支持多核的传统方案能!适配 6 核 POSIX 环境和 80 核众核环境,还能规避死锁
开源资源

目前论文未提及开源代码或数据集。

总结

这篇论文针对自动驾驶嵌入式系统中

目录

  1. 论文信息
  2. 1. 一段话总结
  3. 研究背景:自动驾驶系统的“并行化困境”
  4. 创新点:三大核心突破,破解集成难题
  5. 2. 思维导图
  6. 3. 详细总结
  7. 一、研究背景与问题
  8. 二、核心基础概念与工具
  9. 三、提出的 MBD 框架设计
  10. 四、评估环境与结果
  11. 五、相关工作与结论
  12. 4. 关键问题
  13. 问题 1:本文提出的 MBD 框架如何解决传统 MBD 与 ROS 2 集成的核心矛盾?
  14. 问题 2:该框架在多核/众核处理器上的性能优化策略是什么?效果如何?
  15. 问题 3:本文提出的事件驱动型节点有哪几种模式?各自适用场景是什么?
  16. 研究方法:一步步看懂“并行化框架”的工作流程
  17. 第一步:打好基础——准备核心工具与数据
  18. 第二步:核心转换——适配“双驱动”节点
  19. 第三步:性能优化——提升 CPU 利用率
  20. 第四步:实验验证——在两种环境下测试效果
  21. 主要成果和贡献:实实在在的价值的是什么?
  22. 1. 执行效率显著提升
  23. 2. 开发效率大幅提高
  24. 3. 领域突破性贡献
  25. 开源资源
  26. 总结
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Python 音乐下载工具 Musicdl 使用指南
  • 基于 FPGA 的 CLAHE 自适应限制对比度直方图均衡算法硬件实现
  • C++ 继承机制详解:从基础概念到多继承模型
  • PostgreSQL INSERT INTO 语句详解与实战技巧
  • 使用动态规划求解斐波那契数列
  • 2026 年高校 AIGC 检测政策汇总
  • C++ 类和对象基础详解
  • DeepSeek-R1 大模型基于 MS-Swift 框架的部署、推理与微调实践
  • OSCP 密码攻击实践:获取并破解 Net-NTLMv2 哈希(上)
  • LobeChat 与 Stable Diffusion 联动实现 AI 绘画描述生成
  • Llama 3-8B-Instruct 在昇腾 NPU 上的 SGLang 性能实测
  • Redis Set 数据类型 C++ 实战指南
  • 流处理与 RAG 驱动的 Python 智能 ETL 框架:构建智能数据管道 (上)
  • Spring Boot 4.0 核心新特性解析与实操指南
  • 零基础读懂大型语言模型的工作原理与训练机制
  • 赋予大型语言模型多模态能力的技术架构与训练方法
  • 基于 LangChain 的 RAG 系统语义保留与防丢失方案
  • LangChain.js 实战指南:基础调用与功能应用
  • Java 后端 Web API 开发实战:基于 Spring Boot 的全流程指南
  • GitHub Copilot 实战:AI 编程助手如何提升开发效率

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online