关于Matlab和Carsim联合仿真问题

Matlab和Carsim联合仿真中遇到的问题

在学习《无人驾驶车辆模型预测控制》这本书时,第4、5章分别展示了基于运动学和动力学的Matlab和Carsim联合仿真。除了书上所展示的步骤之外,在联合仿真时还遇到不少问题,在此进行记录。

1. Carsim8.02 应用高版本的 Matlab

按照书上附录A尝试后,发现仍然找不到Carsim S-function,可以据此方法进行设置:
https://cloud.tencent.com/developer/news/388100

其中步骤一:更改matlab的起始位置为carsim求解器的位置,可以不用,把当前文件夹设置成这个位子就行。
以及,步骤四的设置是关键,如果之前尝试的时候已经将这个Fix的页面点开又关闭了的话,只要在左侧菜单空白处右键,Refresh Library Browser就会重新弹出提示框。

2. Matlab报错:索引超出数组元素的数目(0)

在这里插入图片描述其直接原因是MPCController S-function中quadprog函数求不出解时X为空,后续调用X则会导致索引超出数组元素的数目。
解决方法:在MPCController S-function中,每次求完X,判断其是否为有效的解,若不是则令u保持为前一时刻的值。

此外,还需要在Carsim的求解设置中,勾选Advanced Setting,在下方框框内写入:
opt_steer_ext 4
! This parameter indicates that, for the front
! axle, the entire steering system is to be
! replaced.

3. 联合仿真时MATLAB的版本切换方法

为了调试问题2,我又下了Matlab 2013a,结果发现Carsim只能连接到新下载的13版Matlab。
可以按照此方法切换其连接的Matlab版本:
https://zhaodi.me/switch-matlab-simulink-version-in-carsim-simulink-cosim/

4. 检查仿真时代码中的约束条件

下载的代码版本有可能是别人调试过的,一些参数都已被修改过,尤其需要检查其中约束条件的数据,我在第五章仿真时没有注意到前轮转向角变化量的上下限delta_umin和delta_umin都被乘以了0.4,导致约束太紧,quadprog函数总是找不到可行解,根据2的判断,U会总为0。如果还是解不出来的话,松弛因子的上限M再放大。
以及To workspace的数据,在MATLAB command window中输入命令workspace即可看到,To file的数据在Carsim_Data文件夹下。

此外,CH4仿真中原代码的LTV模型的b矩阵有误,需改为:

    b=[cos(t_d)*T   0;
       sin(t_d)*T   0;
       tan(vd2)*T/L      vd1*T/(L*cos(vd2)^2);];

其他相关参考资料

  • 13
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 21
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值