随着自动驾驶技术不断发展,Apollo 已经从研发走向量产产品落地。作为 Apollo 开源软件平台的一部分,Apollo Cyber RT处于底层的实时操作系统(RTOS) 和算法模块之间,能够在保证高吞吐的情况下,又能低延迟的实时响应上层任务,并保证整个系统确定性的运转。
Apollo Cyber RT 框架核心理念是基于组件,组件有预先设定的输入输出。实际上,每个组件就代表一个专用的算法模块。框架可以根据所有预定义的组件生成有向无环图 (DAG)。
在运行时刻,框架把融合好的传感器数据和预定义的组件打包在一起形成用户级轻量任务,之后,框架的调度器可以根据资源可用性和任务优先级来派发这些任务。
TIPS本次沙龙课程,我们有请到Apollo开发者社区荣誉布道师——贺志国来详细讲解Apollo3.5技术架构。
贺志国,毕业于国防科技大学信息与通信工程专业,曾从事部队装备信息化方面的工作,目前负责CiDi(希迪智驾)重卡L4级自动驾驶项目。擅长C++编程,及Apollo实时相对地图及规划模块。在Apollo GitHub上贡献过65 commits,代码9117行(10,450+, 1,333-),解答issues 80+条,近一年来位于Apollo GitHub贡献榜排名第25位。
在这次的分享中,贺志国将从Cyber RT运行原理及如何使用全新的计算框架出发,全面解读Cyber RT计算框架,带领大家更好的学习上手Cyber RT。
以下,ENJOY
Apollo 3.5提供了Cyber RT作为中间件,对计算任务和通信进行优化。本节描述如何将以前的Apollo项目迁移到Cyber RT框架下,主要分三个部分:功能模块代码的迁移,辅助工具的迁移和调试工具的迁移。
功能模块迁移的基本步骤
Cyber RT框架基于组件的概念加载各个功能模块,很多模块都是作为Cyber RT的组件而存在,所有这些组件都是基于Cyber RT提供的调度程序mainboard加载运行。
整个功能模块迁移,是不需要修改任何算法逻辑的,它仅仅需要修改消息接收发布的代码以及基于Cyber RT进行调度的一些配置文件,整个迁移的工作量占整体开发工作量的10%,如下图所示。
基于Cyber RT框架创建和发布新的功能模块组件的基本步骤
下面以规划模块Planning进行阐述,迁移包含五个步骤: