如果对Carsim的基础使用还不了解,可以参考:【Carsim Simulink自动驾驶仿真】基于MPC的速度控制
如果对MPC算法原理不清楚,可以参考:如何理解MPC模型预测控制理论
项目介绍:
教程为北理工的无人驾驶车辆模型预测控制第2版。所用的仿真软件为Carsim2020.0和MatlabR2021a。第六章跟踪算法和 第五章类似。这章的目的是同时使用MPC做轨迹局部规划和跟踪,效果很好玩。代码方面基本没有什么问题。这一章原理都很好理解,主要看调参效果。
参数调整思路与效果
因为车型是自己选择的,所以参数需要自己调整,下面根据效果着重说一下调参思路。这里根据之前的经验,控制步长都设置为2。所以这里调整的参数有三个:规划层预测步长,跟踪层预测步长和避障权重,当然还有速度。
初始值分别为:15,15,100,10
调整规划层参数
这里其实就是调整规划层的预测步长,从左到右依次为15,24,30。能看出来随着预测步长的增加,车的选择会变化,从坚定不移的选择下方通过到犹豫的不知道从哪个方向通过到最后从上方通过,这里其实步长再长一点才能完全消除从下方通过的想法,但是这样计算量就变大了,所以感觉15是一个很好的参数。
调整跟踪层参数
为什么要调整这个参数呢,先看下面的图,这是调整规划层参数时跑出来的3个效果的控制,也就是前轮转角图:
可以看到,在跟踪后续轨迹的时候轨迹极其不平滑,所以考虑调整跟踪层的步长,因为规划层的步长应该是要大于等于跟踪层的,所以这里只能调小,将15调到10的时候效果就已经挺明显了。
调整避障权重
这是因为在第一张图中,有轨迹穿过了障碍物,我的理解是原码中路径的权重和障碍物的权重一样,当偏离太多轨迹的时候,就会考虑跟踪轨迹多一点,而不考虑避障,当然其实这个也不需要调整,但是我看着有曲线穿过障碍物很难受,所以将避障权重加大,从左到右依次是100,300,1000
可以看到300已经不会出现穿过障碍物的效果了,而1000有些太大了。
对速度的鲁棒性
从左到右依次为10m/s,20m/s,30m/s。
我是在30m/s的时候将避障权重重新写成了100才有和低速情况一样的走法
多障碍效果
我们使用调整好的参数可以试试多障碍的情况
速度 | 规划层预测步长 | 规划层控制步长 | 跟踪层预测步长 | 跟踪层控制步长 | 避障权重 |
---|---|---|---|---|---|
10m/s | 15 | 2 | 10 | 2 | 300 |
20m/s | 15 | 2 | 10 | 2 | 300 |
30m/s | 15 | 2 | 10 | 2 | 100 |