控制是驱使车辆前行的策略,对于汽车而言 最基本的控制输入为转向、加速和制动。
控制器使用一系列路径点来接收轨迹,其任务是使用控制输入,让车辆通过这些路径点。
控制器要求:
控制策略:
控制器预计的两种输入,用此来计算目标轨迹与实际行进轨迹的偏差
控制器的输出是控制输入(转向、加速和制动)的值,当偏离目标轨迹时,我们希望通过采取行动(转向、加速、制动)来纠正这种偏差。
这个控制器的优点在于它非常简单,只需知道与目标轨迹有多大的偏离。
PID的第一个组件为P代表“比例”(proportional)。设想一辆车正试图遵循目标轨迹,P控制器在车辆开始偏离时,立即将其拉回目标轨迹。比例控制意味着车辆偏离越远,控制器就越难将其拉回目标轨迹。
在实践中P控制器的一个问题在于,它很容易超出参考轨迹。当车辆越来越接近目标轨迹时,我们需要控制器更加稳定。
PID控制器中的D项致力于使运动处于稳定状态,D代表“微分”,PD控制器类似于P控制器,它增加了一个阻尼项,可最大限度地减少控制器输出的变化速度。
PID控制器中的最后一项I表示积分,该项负责纠正车辆的任何系统性偏差。
如转向失准可能造成恒定的转向偏移。为此控制器会对系统的累计误差进行惩罚。
P、I、D相结合形成PID控制器。
缺点 |
---|
是一种线性算法,对于非常复杂的系统而言这是不够的,需要应用不同的PID控制器来控制转向和加速,这意味着很难将横向和纵向控制结合起来 |
PID控制器依赖于实时误差测量,这意味着受到测量延迟限制时可能会失效 |
线性二次调节器(LQR)是基于模型的控制器,它使用车辆的状态来使误差最小化。
Apollo使用LQR进行横向控制。
横向控制包含四个组件:横向误差、横向误差的变化率、朝向误差、朝向的变化率。变化率与导数相同。称这四个组件的集合为x,这个集合x捕获车辆的状态。
三个控制输入:转向、加速和制动,控制输入集合称为u。
LQR处理线性控制(L),该模型用等式表示如下:
X(上方带点)向量是导数,或x向量的变化率,所以x点的每个分量只是x相应分量的导数。
等式x点=Ax+Bu捕捉状态里的变化,即x点是如何受当前状态x,和控制输入u的影响的。
线性的:
目标是让误差最小化,但也希望尽可能少地使用控制输入(因为有成本)。为了减少这些因素,可以保持误差的运行总和和控制的运行总和。
eg.
当右偏转很厉害,添加到误差总和;控制输入将车向左偏转,从控制输入总和减去。这样会导致问题,因为右侧的正误差只需将左侧的负误差消除即可*(???)*
Q和R代表x和u的权重集合
找到最优的u就是找到最优的K
模型预测控制(MPC)是一种更复杂的控制器,,它非常依赖于数学优化。
基本上可以将MPC归结为三个步骤:
优化引擎可间接评估控制输入,是通过使用这些方法对车辆轨迹进行建模的。
可根据成本函数对轨迹进行评估,成本函数主要基于与目标轨迹的偏差,其次基于其他因素如加速度,和提升乘客舒适度的措施。
为使乘客感觉更舒适,对控制输入的调整应该很小,因为动作变化幅度过大会让乘客感到不舒服。
模型、约束和成本函数合并并作为优化问题加以解决。
优点 | 缺点 |
---|---|
考虑了车辆模型,因此比PID控制更精确 | 与PID控制相比,模型预测控制相对更复杂、更缓慢、更难以实现 |
适用于不同的成本函数,所以可以在不同情况下优化不同的成本 |