Control是Udacity这个课第二学期的最后一个大章节。不过听下来从内容的深度上显然是不够的,讲motion model的部分还比较清楚,其他的MPC只是蜻蜓点水就过了。不过我还是记一下笔记。
第一个session的PID控制讲怎么用PID把汽车的左右控制在一个车道上。
然后讲怎么设计一个好的PID控制器。PID的控制器的原理其实很简单。但是P,I,D控制器各自的参数选取其实是一个比较难的问题。很难一次调准。
课程介绍了一个比较常用的算法叫做twiddle。可以看成是逐维度的一个在线coordinate梯度下降。就是往一个方向调整参数看看误差有没有下降。不行就反向调整。再没有的话就把调整速率降低。
课程讲完PID控制之后开始讲汽车的运动模型。
无人车可以提供的控制输入有两个,一个是刹车|油门,反映在汽车的线性加速度上,一个是方向盘,可以控制在前轮和行驶方向的夹角。
在感知和定位之后,无人车的路线规划会选择路线。而这个时候控制模块要保证无人车安全的贴近这个预计的路线(参考路线)。一般来说一个路线可以用一个三次曲线来描述。
Slip angle(是不是翻译成漂移角)是轮胎前进方向,和轮胎轮盘平面的夹角。也可以用轮胎平面的速度和轮胎的漂移速度的反三角来表示。不同的轮胎产生的力不同。赛车胎在同样的漂移角会产生更大的力。(他这个的意思应该是赛车抓地力更强更不容易出现漂移吧)
另外还有漂移率的概念,就是轮胎在自己平面上面打滑了多少。轮胎受到的力和漂移角是非线性的。另外似乎有一个最优的转向角,那个角度上面轮胎可以提供最大的力来转向,超过那个角度力会下降。另外一般轮胎的转角有30度的限制。
不过这里没讲漂移角产生的力的方向。感觉应该是反向与漂移方向的(垂直于轮胎)?或者这么思考,轮胎不打滑的情况下,轮胎受理的方向应该是垂直于轮胎的。打滑的话,打滑那个方向也会有一个速度。摩擦力应该和速度反向。在不打滑的时候应该有一个可以提供最大转向力的夹角,打滑的时候这个夹角应该会下降。
接下来来到了MPC的环节。MPC是为了能够让一个复杂动力学模型的汽车更好的追踪一个轨迹而设计的。MPC把这个问题变成一个优化问题。这个优化问题的解被称为最优路径。MPC的输入是当前的运行状态和参考轨迹,然后通过建立一个cost来计算出最优路径和控制策略。这种在线的方式会有比较好的鲁棒性,毕竟汽车的动力学模型只是一个近似。
Cost函数可能的项包括了参考速度,汽车到参考目标的距离。汽车的方向(不要猛打方向盘) 。和汽车方向的变化量。
MPC差不多就是考虑1个时刻的状态输入,根据动力学方程考虑连续的0-N个dt之后的一串轨迹。然后求解最优轨迹时,每个时刻应该使用的控制参数。当然这里实际上只会用掉delta_1和a_1来对当前时刻进行控制。然后接着再进行MPC的运算。到这里没多讲。不过无人车也火了挺长时间了,感觉github上面应该可以找到合适的开源模拟项目和对应的MPC代码吧- -?