1.书中Carsim版本8.01,大部分人用的版本为2016及以上,轨迹出来的是一条直线。是因为输入的前轮转角没有加到Carsim中,2016版本好像不能直接通过前轮转角直接控制汽车转向。解决办法:添加opt_steer_ext(1) 4,(4前有空格)如图所示:
2.提示超出索引值,是因为约束超出了范围,代码有错误。解决办法:将代码0.05改为-0.05,即:delta_umin=[-0.05;-0.0082;];
3.提示有效集法已移除,换成内点法求解二次规划问题,解决办法将代码中有效集解法这一行注释掉,内点法前的注释去掉,即: %options = optimset('Algorithm','active-set');
options = optimset('Algorithm','interior-point-convex');
4.至于还有Flag(3)什么的我刚开始也遇到过,应该把采样时间改成Ts=0.05就不会出现维度不一致的错误,一般放宽采样时间就可以解决。
尽量用低版本的matlab,例如16版本,有时候同一个程序在不同版本的matlab上运行,高版本的会报错,低版本的就不会报错。此外,预测时域,控制时域,权重系数和约束都可能会导致索引超出维度,通过不停的调参也会解决报错问题。
最后运行即可得到类似圆的轨迹。