1.技术解析
1. planning模块运行机制
on lane planning tasks::常规车道线规划,包括高速路,城区;
open space planning tasks:: 没有车道线的情况下,包括自主泊车、狭窄路口掉头
2.Apollo决策功能
利用了环境信息。
(1)参考路径reference line::(Apollo中规划中重要的一个点)
(2)交规决策 traffic rule process
这里的虚拟墙::影响车辆的速度规划,在代码中看一看
(3)路径决策 path decider
判断是否需要换道,根据参考线的优先级,是否安全换道。
路径决策只考虑静态障碍物,速度决策中才会考虑进去动态障碍物。
路径边界::对车道线和静态障碍物生成一个bound
(4)速度决策 speed decider
planning 模块流程图::决策+规划一体
Apollo 的 规划 关键点解析
(1)场景 scenarios
lane follow::主要场景,一段路中没有与交通灯
(利于开发者开发自己的场景)
2.交规决策场景实现机制
(1)交规配置
(2)交规执行流程
输入的参考线referencelineInfo 中会包含()很多信息;
场景管理器scenario manager 会判断是不是有车道线与交通场景有重合,去判断进入哪个场景scenario,然后stage阶段是分段执行,每一个stage都有路径决策,路径优化,速度决策,速度优化,以task形式出现
(3)代码解析--场景进入
1.scenario
首先是通过Overlap判断是不是进入信号灯的场景,
然后根据进一步信息判断是哪一个scenario:有保护左转、无保护左转、左转代转。。。
2.stage
上面是stage阶段注册的过程。
进入scenario 后 执行 stage ::定义stage (都有哪几个阶段);stage具有优先级,approach阶段的优先级400高于cruise优先级,所以会先执行approach;
阶段进入的方法(Approach阶段)
(Cruise阶段)
(在两个阶段之间 有一个 交通灯通过检测)
停止墙的生成::遇到红灯会生成一个停止墙
在common.cc中定义了停止墙,traffic_light.cc中具体实现方法,实现方法中需要输入一些信息,停止距离,这个信息的获取在配置文件.pb.txt中,
等整个阶段完成,在恢复到默认阶段 lane follow
3.交通灯场景仿真实现
(1)创建场景
1.bash ::
2.输出日志::
conf 的scenario里面放着各场景的配置文件
日志输出::
referenceline_info:里面包含所需环境信息,根据overlap判断所处场景;
traffic_light.cc:包含交规;
scenario.cc:进入场景,根据优先级进入stage;
common.cc:包含设定信息;
workspace中需要编译;直接在根目录下Apollo修改不需要编译。
3.ls :: 查看目录下文件
4.代码需要看 开放平台bete文档 下载安装。安装插件在docker环境内装,才可以同步到本地。dockers::