Apollo自动驾驶:Planning模块深度解析

需积分: 1 6 下载量 89 浏览量 更新于2024-06-18 2 收藏 6.45MB PDF 举报
"Apollo自动驾驶框架中的Planning模块是一个关键组件,主要负责根据来自上游模块的环境感知数据、地图定位导航信息及全局路径规划,为自动驾驶车辆生成一条运动轨迹。轨迹包括了坐标、速度、加速度、jerk(加加速度)以及时间等详细参数,之后这些信息会被传递给控制模块来执行。Planning模块由多个子package组成,如planning_base、pnc_map、scenarios、tasks和traffice_rules,它们各自承担不同的功能,如基础算法、参考线生成、场景处理、任务插件和交通规则等。此外,Planning模块自3.5版本开始采用双层状态机的场景机制,实现了更灵活和独立的场景管理。" 在Apollo自动驾驶系统中,Planning模块的职责非常核心。它接收来自感知模块的数据,这些数据可能包括雷达、摄像头等传感器对周围环境的实时感知,以及高精度地图和定位信息。Planning模块使用这些输入来规划车辆的动态行驶路径,确保安全且高效地达到目的地。 planning_base包是Planning模块的核心,它包含了对外的接口、父类定义、主流程框架以及基础算法库。这个包是整个Planning模块的入口,负责组织和协调模块内的各个部分。 pnc_map包则专注于生成参考线,根据输入的规划导航命令或地图信息,创建出可供局部路径规划使用的参考路径。这对于车辆在复杂环境中的路径选择至关重要。 scenarios包内包含了一系列场景插件,每个场景插件针对一个特定的驾驶情况,如常规的车道跟随(LaneFollow)或紧急停车(PullOver)。场景机制使得Planning模块能够根据当前的驾驶环境动态切换合适的场景策略。 tasks包中则是各种任务插件,每个插件包包含一个或多个特定任务的实现,这些任务可能涉及路径优化、避障策略等,它们在Planning流程中按顺序执行。 traffice_rules包则负责定义和实现通用的交通规则,确保车辆在行驶过程中遵循交通法规,例如遵守速度限制、红绿灯规则等。 从Apollo 3.5版本开始,Planning模块引入了双层状态机的场景机制。这一改进允许更精细的场景划分和独立的故障隔离,TopLayer的Scenario状态机负责场景切换,而BottomLayer的Stage状态机则处理具体阶段的执行。这样的设计使得Planning模块能够更加灵活地应对不同驾驶情境,提高了自动驾驶系统的鲁棒性和适应性。