文章目录
0. 参考文献
【1】https://github.com/tier4/AutowareArchitectureProposal.proj/blob/master/design/Planning/Planning.md
1. plan模块作用
plan模块是自动驾驶的大脑,它利用定位、感知、地图等模块的输出,做出决策,并把轨迹发送给控制模块
plan模块作用如下
- 计算到达期望目标位置的导航路径
- 规划轨迹来跟踪路径:
(1)确保没有碰撞(人车障碍等)
(2)确保跟随交通规则,包括交通灯,停止线,交叉路口等 - 规划可行驶的轨迹(没有突然转向等问题)
2. use cases
plan模块要满足如下use case
- 将车从起点导航到终点
- 能保持车道
- 能变道
- 满足车速限制
- 符合交通信号灯
- 符合让行/停止信号牌
- 交叉路口完成转向
- 泊车
3. 需求
- 将车从起点导航到终点(uc1)
(1)规划模块能从起始和终止位置获得起始车道线id和终止车道线id,在earth坐标系下给出,或者在map坐标系下给出
(2)plan模块要能给出导航路径(一系列lane 序列)满足最小化cost要求 - 保持车道(uc2)
(1)在左右车道线中间行驶
(2)和其他车至少有2s的间距(这里可以根据法规来) - 能换道(uc3)
(1)换道时机:
a. 全局路径要求换道(在接近路口前不换刀怎么保证的?)
b. 当前的线路被block了(换了要重新全局规划嘛?)
(2)换道前要打3s转向灯
(3)要在本车道保持3s中,给其他车辆提醒
(4)和其他车辆保持2s的车距(可以讨论)
(5)要在路口前30s完成换道
(6)满足如下条件放弃换道:
a. 车辆仍然在原先车道内
b. 和其他车辆没有 保持车距 - 满足车速限制(uc4)
(1)轨迹点的速度限制要低于当前车道的车速限制 - 满足交通信号灯要求(uc5)
(1)plan模块能拿到当前车道线对应的交通信号灯
(2)轨迹点的速度要保证能在红灯停止线前停下来,要留有足够的停车距离 - 在路口左右转(uc6)
(1)除非车辆有路权,不然要停车让行?(这个可以根据情况再讨论讨论) - 泊车(uc8)
(1)泊车过程不能碰撞(人车路肩障碍)要考虑障碍物的轨迹和自身的轨迹 - 通用需求
(1)要满足来自控制模块的需求:
(2)轨迹的速度曲线要在acc和jerk的限制范围内,除非遇到紧急状况
(3)满足车辆运动学约束
(4)横向acc和jerk要在限制范围之内
(5)规划轨迹的前n个点不能变,保证车辆运动的连续性:n=vehicle speed * t_configure
4. 输入
- 车辆当前位姿
- 车辆当前车速
- 地图数据:lane情况,lane几何情况,交通规则
- 障碍物信息
- 目标位姿
- 交通信号灯信息
5. 输出
- 轨迹
- 转向信号灯
6. 设计
将plan模块继续细分,如下图所示:
requirement 1 :通过missionplan来完成整体的导航路径规划
requirement 2-7:同过laneDriving Scenario来在导航路径上继续规划轨迹
requirement 8:泊车
requirement 9:所有轨迹都要满足要求才行
这里作者们研究了不同的自动驾驶库,并且得出结论是,从技术上非常难用一个统一的框架解决所有可能的场景,因此,autoware通过采用不同的planner模块并行计算,然后由scenario selector基于场景进行决策。目前,已经有两种场景添加进来:on-road和parking,后续可以进一步扩展,比如高速,in-emergency等等
scenario的方式目前还并不完善,有时候添加一个新的scenario或者在现有的scenario上添加新的feature是矛盾的。
6.1 mission planner
6.1.1 作用
计算从初始位置到终止位置的导航路径,导航路径是一系列lane。
导航路径的计算只利用静态地图信息(lane连接,lane几何,交通规则等等),动态的信息不在考虑范围之内,只要给定一个goal就有一个路径。(这里有个问题就是什么时候进行重规划)
6.1.2 输入
- 车辆当前位姿
- 车辆目标位姿
- 静态地图
6.1.3 输出
- 导航路径:
6.2 scenario selector
所有的场景模块算出的trajectory都会在这里进行汇总,由这个模块确定向控制发送哪一段路径。
6.2.1 输入
- 地图
- 车辆当前位置
- 导航路径
- trajecotry
6.2.2 输出
- 当前场景
- 轨迹
6.3 场景 scenario
6.3.1 作用
计算trajectory,只有当被selector选择后才工作,这里和上面的有点矛盾,得看看代码怎么解决的
6.3.2 输入
- 地图
- 导航路径
- 障碍物信息
- 场景(scenario selector给出来的)
6.3.3 输出
- 轨迹
- 转向灯信号。