给你举个例子吧。
下图是分别用LQR和MPC两种算法来控制一个小球的轨迹让小球的轨迹尽可能接近黑色框。红色是LQR控制下小球的轨迹,蓝色是MPC控制下小球的轨迹。你可以明显看到MPC控制下的轨迹和理想轨迹更接近,但LQR在拐角处过冲太大了。
为什么呢?因为在未到达一个换向点(比如左上角顶点)之前,MPC就已经「看」到了这个点了,MPC提前知道这个点的存在,并在未抵达这个点之前就开始减速了。MPC能做到这点是因为轨迹已经作为约束写进优化问题了。
底下有人说LQR不也是MPC的一种吗?这个问题问得非常好。LQR只能根据固定的系统模型(状态空间A,B,C,D矩阵一直不变)向前推演,推演的只是系统模型的发展行为,但是对外界这个硬约束是是一无所知的。设想一下,轨迹沿着最上面那根黑线向左边走,走到头突然被告知你要向下转向了,LQR此时才会开始调整方向,所以过冲是很大的。
在所有要求精确轨迹规划的场景以及系统有硬约束的场景(大到无人驾驶小到3D打印机打精细图案)MPC的性能是非常优秀的。
后续我会仔细检查,如果我有口误我还会继续修改。