MPC控制器:https://blog.csdn.net/qq_42258099/article/details/95353986?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
内点法:https://zhuanlan.zhihu.com/p/96981554
运动学模型:https://www.cnblogs.com/yrm1160029237/p/10087315.html
基于python的mpc实现:https://blog.csdn.net/u013468614/article/details/103519721
mpc控制器:首先构建一个物理模型,将当前的信息和要输出的量放入其中可以预测之后一段时间的情况,用预测和期望做代价函数,找出可以使得代价函数最小的输出,就是当前的最佳输出。
内点法:要求某个函数值最小,并且有约束函数。通过构建惩罚函数绕过约束。
·本人刚开始学习mpc控制器的内容,想从一个简单易懂的角度阐述一下对mpc控制器的理解,本博客仅供参考
首先参考资料中的第一个连接,得到如下思路:
想做MPC控制器需要做三件事:
1、给物理模型建模
·这部分需要汽车动力学的知识,具体介绍在第三个链接中。这里只取结果
·车辆运动的状态主要有六个值表示:x轴和y轴的位置、速度、偏离中心的角度、横向偏移量、角度变化量。
·而我们能控制的就是在绝对坐标中的加速度(油门)和转向角度(方向盘)
·因为是基于现实的,所以还要对加速度和转向角度进行约束。
·也就是说当我们获得当前时刻的运动状态的六个量,我们再设置两个加速度和转向角度两个输出,我们就可以通过上面的物理模型预测之后数个时刻的六个状态量
2、以理想路线为期望和预测的结果一起为建立代价函数
·这个代价函数代表的是理想路线(通过路径规划的方法得出)和当前预测的结果的差距量。
·带ref的量就是期望量是通过路径规划获得的理想理想路线上的点得到的
·给出一组加速度和转向角度就可以获得一组模型预测而来的未来数个点的六个状态值。不同的状态量可能重要性不同,所以可能要设计一个权重系数。
·那么现在要做的就是找到一组加速度和转向角度使得和理想路径误差最小,也就是这个代价函数最小。
3、求得输出量的最佳值
·这里涉及一个最优化的问题,要在对加速度和转向角的约束下,找到使得代价函数最小的加速度和转向角。为了解决这个问题使用了内点法。
·内点法具体内容参考第二个链接,以下是对内点法的个人理解:
(1)这个问题的难点就在于存在一个不等式的约束,其实如果只是一个二元二次等式可以通过微积分的求导得出最优值。
(2)所以构造一个障碍函数,通过等式的方式代替不等式代表的意义。
·这个f(x)就是那个代价函数,这样在约束下的条件下,求代价函数的最小值的问题就转换成了求一个函数最小值的问题。
(3)这个函数的最小值就可以通过求偏导的方式进行求解了,求得的结果是包含r的。r越小,结果越好。通过r的极限过程,求得加速度和转角的不带r的结果。