Apollo6.0 planning模块代码框架梳理–整体结构
文章目录
简介
- 本文是基于Apollo6.0的planning模块代码进行的框架梳理
- planning模块的工程实现主体思想是三分策略:分场景、分阶段、分任务实现。
- 即将运动规划问题,先划分到不同场景中(泊车、左转等),再分阶段执行(减速、观察、转弯等),最后分任务执行。
- Apollo开源框架经过近几年的发展,已经开发了多种方案的规划器,此处采用基于车道线规划的LatticePlanner进行示例解释
- 时间有限,梳理过程难免有一定的不足,欢迎探讨交流
代码库结构介绍
代码库地址
- 官方网站:https://apollo.auto/
- 国外库:https://github.com/apolloauto
- 国内库:https://gitee.com/ApolloAuto/apollo
代码库结构简图

代码库结构简单介绍
第一级
- 第一层级主要由cyber、modules两个目录构成
- cyber是操作系统的组成部分,实现了节点管理、资源调度、消息通讯等功能
- modules集合了各模块的实现,包括perception、location、planning等
第二级
- 在modules中与planning比较相关的是planning、map、common等目录
- planning内部是所有规划(planning)模块的实现代码
- map内部是地图接口相关实现,planning规划时需要调用
- common内部是一些通用代码,包括math函数、proto协议(通信协议的设定)等,属于模块间的共享代码
第三级
- 在planning目录内部,都是与planning模块相关的实现
- 其中launch、dag、conf都是与模块启动相关的配置参数,用于模块在cyber系统中的注册
- planning_component.h实现了planning模块的封装,以作为操作系统cyber的组件使用
- on_lane_planning.h

本文详细梳理了Apollo6.0的Planning模块代码框架,重点介绍了LatticePlanner。规划模块基于车道线,采用三分策略:分场景、分阶段、分任务。文章涵盖了代码库结构、Planning主流程、初始化和消息响应流程。规划器动态调度通过dispatcher实现,LatticePlanner在ST、SL规划中生成轨迹。后续将深入解析LatticePlanner的逻辑细节。
最低0.47元/天 解锁文章

6083

被折叠的 条评论
为什么被折叠?



