预测
预测车辆/物体的路径点
预测需要具有实时性和准确性
预测的方法分为
基于模型的预测和数据驱动预测
模型预测:基于观察和各种情况的预测轨迹,更新概率得到预测,直观且容易解释
数据驱动:数据训模型,模型预测轨迹
基于车道序列的预测方法:先将道路划分为不同的块,然后预测车辆会经过哪些块(预测车道序列)
障碍物状态:位置、速度、朝向和加速度
预测目标车道块,从而得到车辆轨迹.输入车道块和障碍物状态得到预测的下一个车道,继而预测车道序列得到预测
RNN,预测序列信息,Apollo运用RNN处理车道序列和障碍物状态,继而预测后续的车道序列
轨迹生成:得到车道序列后,计算轨迹,根据速度、加速度等计算可能的合理的轨迹
规划(ADS中最难的)
第一步:路径导航,输入起终点,根据HD地图计算可行路径
第二步:轨迹规划,小的决策避开障碍物,每一个点含有一坐标、到达时间点和速度
路线规划
输入:Map、cur pos、target pos
搜索算法以寻找路线;首先需要将世界表示为图结构,用图中的搜索算法搜索路径
A*算法搜索图中的最短路径
继而将路由结果转化成局部的轨迹,需要处理不属于地图的部分比如障碍物、自行车或行人
评估一条轨迹:避免碰撞、舒适性(轨迹平滑)、可行的轨迹(比如不能让高速车辆掉头)、合法规:使用成本函数给出评价,结合考虑以上因素
Frenet坐标:描述了车辆像对于道路的位置,s代表道路距离,d代表车辆与s中心的偏离,两者始终垂直
路径-速度解藕将路径规划分为路径规划和速度规划,先计算最好的路径,再计算合适的速度
路径规划:首先将车道分为cell,在cell中随机采样点,每个cell中的连接起来构成候选路径
ST图:根据路径规划,计算速度,s距离,t时间,速度就是曲线斜率
将ST图离散化为多个cell,障碍物会将st图中的部分矩形块挡住,对应时间与位置是被遮住的了(这块的信息由预测这一步得到),从而计算出st曲线
离散化将问题简单化,但结果都不平滑,使用二次规划将平滑的非线性曲线与分段式线段拟合
Lattice规划
预测ST图的规划和SL(S和偏)图的规划
分别建立ST和SL规划,再将它们结合
首先将车辆当前状态映射到ST图和SL图中,通过对预选模式中的多个候选最终状态进行采样,决定车辆的最终状态,对每个最终状态构建轨迹,再对轨迹进行评估,挑选代价最低的
ST的最终状态:巡航(所有最终状态的加速度都为0)、跟随(速度和加速度取决于跟随的车辆)和终止(最终状态的速度和加速度均为0)
SL的终止状态,车辆与车道线对齐,既不横向移动也不横向加速
得到ST和SL轨迹,将他们转换为笛卡尔坐标系下的坐标
控制
控制:转向、加速和制动
使用路径点接受轨迹,根据输入让车辆能够通过这些路径点,需要合理且舒适的控制既能通过路径点,也能连续且舒适
方法:PID、LQR、MPC
控制流程:
输入:目标轨迹和车辆状态
输出:转向、加速和制动
PID:
通过偏移量控制
简单且效果好,但是只是线性算法,在复杂情况下还是不够,且依赖于误差的测量,有时候可能会失效
LQR
基于模型的控制器,Apollo用LQR用于横向控制
横向误差、横向误差变化率、朝向误差和朝向误差变化率表示车辆状态:x
转向、加速和制动:u
x=Ax+Bu
x根据u的控制而更新
为了优化,用二次项,代价函数:
LQR(线性二次型调节器,Linear Quadratic Regulator)的代价函数用于衡量系统的状态和控制量的性能。它的形式为二次型函数,通常目标是通过最小化该代价函数来优化系统的控制输入。LQR的代价函数通常定义为:
J ( u ) = ∫ 0 ∞ ( x ( t ) T Q x ( t ) + u ( t ) T R u ( t ) ) d t J(u) = \int_0^\infty (x(t)^T Q x(t) + u(t)^T R u(t)) \, dt J(u)=∫0∞(x(t)TQx(t)+u(t)TRu(t))dt
其中:
- ( J(u) ) 是代价函数,表示在时间 ( t=0 ) 到无穷远的累计代价。
- ( x(t) ) 是系统的状态向量。
- ( u(t) ) 是系统的控制输入。
- ( Q ) 是正半定的状态权重矩阵,用于惩罚系统状态偏离目标值的程度,通常是对状态误差的加权。
- ( R ) 是正定的控制权重矩阵,用于惩罚控制输入的大小,通常用于限制控制输入的幅值。
通过最小化该代价函数,LQR 设计出的控制律既能保证系统状态接近期望值,又能避免使用过大的控制输入,达到平衡控制效果和控制能量消耗的目的。
模型预测控制(MPC)
建立车辆模型(估计了车辆在进行了一组控制之后的状态);使用优化引擎计算有限时间内的控制输入(优化,评估输入);执行第一组控制输入
比PID更准,但更难更难实现