规划分两步:规划路线、轨迹规划
- 前者讲究怎样到达目的地
- 后者讲究怎么样同时保证安全和舒适
轨迹规划由许多点组成,这些点包含了到达该位置时的速度和时间戳
路线规划(Routing)
输入:
- 地图:同时包含了交通状况等信息
- 我们的位置
- 目标位置
Map to Gragh(将地图转化为图)
我们将道路当成节点,道路的连通情况当成线,构建出我们的图。
这样,A到B的道路搜索,就能转化为图的路径搜索,从而用到图论中的搜索算法。
A*算法
目标:找到一条从橙色到绿色的最佳路径
方法:f = g + h
g:当前节点到相邻节点的成本
h:相邻节点到目标节点的估计成本(启发值)
选择f最小,但又没访问过的点进行拓展,直到到达我们的目的地。
举个实例
路径规划
评估一条路径
- 无碰撞、过程平滑舒适
- 实际可行(开得出来)
- 合法
而达成这些目标的路线可能有很多,我们用成本函数做进一步评估,得到最好的路线(不同的场景可以用不同的成本函数)
Frenet坐标
描述的是车辆和车道的相对位置
处理的时候是按照垂直来处理的
路径-速度解耦规划
速度曲线+路径曲线相结合
路径的生成和选择
这里主要说一下生成:
将车道划分为很多区域,每个区域随机生成许多点,将这些点随机连接,生成路径。
ST图
利用ST图来构建速度曲线:(斜率代表速度)
速度规划
我们将连续曲线离散化,将ST图划分为许多小方格,每个方格内确保速度不变。将可能的障碍物在图像中用矩形表示。
这样处理我的理解是:“毕竟也不可能说速度在每个时刻都进行变化吧”(但明显这里还是有问题:拐点的速度应该也实现不了突变吧)
优化
使用二次曲线将图像变得平滑:
路径-速度轨迹生成
四步:随机生成、成本估计(选出最优)、二次优化(平滑处理)、拟合
ST轨迹的终止状态
- 巡航:定速
- 跟车:根据前车变化
- 停止:保证在停车点上速度、加速度为0
Lattice规划的轨迹生成
ST是纵向偏移和时间的函数图像
SL是纵向偏移和横向偏移的函数
总结
A*算法进行路线规划
路径-速度解耦(路径时间图像、速度时间图像)、Lattice规划(ST SL图像)形成规划路径
最终构建出三维路径规划图(x y t)