无人驾驶模型预测控制carSIM和MATLAB联合仿真

本文介绍了如何使用carSIM8.02和MATLABR2019a进行无人驾驶车辆模型预测控制的联合仿真。详细步骤包括车辆模型搭建、仿真工况设置、联合仿真模型创建以及S函数配置,最终实现模型在Simulink中的运行。

本例参照龚建伟的《无人驾驶车辆模型预测控制》书中第四章节
1.carSIM软件介绍
carSIM是由美国MSC公司开发的车辆动力学仿真软件,它可以方便灵活地定义实验环境和试验过程,准确预测和仿真汽车的操纵稳定性、动力性、平顺性等,适用于轿车、轻型货车等车型的建模仿真。
在这里插入图片描述
2.仿真实例
所用软件和环境:
(1)carSIM8.02
(2)正版MATLABR2019a
(3)win10
先进行车辆模型的搭建:
(1)运行carSIM8.02
(2)出现“select recent database”(“选择数据库”)对话框,如下图所示:

在这里插入图片描述
选择“continue with the selected database”,弹出如下图所示的对话框:
在这里插入图片描述
选择“select”即可打开carSIM主界面:
在这里插入图片描述
carSIM主界面主要由3大部分组成:车辆参数及仿真工况的设置、数学模型求解与后处理。用户可以修改车辆参数,根据需要来设置仿真工况。
(3)点击“New”,新建一组dataset,如图所示,在两个文本框中分别输入“Example”和“MPCtest1”,点击“Set”完成新建
在这里插入图片描述
(4)选择主菜单的”Datasets"下拉菜单,会发现Example一栏多出“MPCtest”
在这里插入图片描述
(5)点击下图中的下三角,选择相应的车型:
在这里插入图片描述
(6)新建满足要求的仿真工况:
1.点击下图所示工况

在这里插入图片描述
即出现下图所示的界面:
在这里插入图片描述
2.新建仿真工况:点击上图中的“New”,在下图文本框中依次输入“MPC Example”和“newSplit Mu”,点击“Set”,完成新建。
在这里插入图片描述
在这里插入图片描述
3.根据要求设置仿真工况:
目标车速18km/h;
无制动;
档位控制选用闭环AT6档模式;
无转向;
路面选择为1km2摩擦系数为1.0的方形路面;
完成后的设置,如下图所示:
在这里插入图片描述
在这里插入图片描述
4.设置仿真时间
同样在设置仿真工况的主界面,在下图所示的文本框中输入“30”
在这里插入图片描述
5.选择前面新建的仿真工况点击“Home”图标,返回carSIM的主界面,选择前面新建的“Split Mu”工况。
在这里插入图片描述
6.设置仿真步长
在carSIM主界面中,点击下拉菜单“Tools”,选择“Preference",出现如下图所示的界面,将仿真步长设置为“0.001”。
在这里插入图片描述
(7)建立carSIM与simulink联合仿真的模型
1.点击下图所示的Models选项,选择“Models:Simulink"。
在这里插入图片描述
2.点击下图所示的选项,选择“[Link to New Dataset]"。
在这里插入图片描述
此时弹出下图所示对话框,在对话框中依次输入“Example”和“MPCtest1”,点击“Creat and Link”完成新建,如下图所示:
在这里插入图片描述
3.点击下图所示的“MPCtest1”
在这里插入图片描述
将会弹出下图所示界面:
在这里插入图片描述
选择相关路径。以我的路径为例:
浏览工作路径:
E:\CarSim802_Prog\CarSim_Data
simulink Model的路径:
E:\CarSim802_Prog\CarSim_Data\Extensions\Simulink
在该目录下不要新建,复制一个现成的,重命名为:MPCtest.mdl,空的simulink模型是导不过去的
然后回到上图所示界面点击浏览找到MPCtest.mdl,如下图所示:
在这里插入图片描述
【注】这里有一个问题要注意,carSIM8.02是和MATLAB2011搭配的,高版本MATLAB要将下面的选项选上:

4.定义carSIM导入变量
点击下图所示的“Import Channels”,选择“I/O Channels:Import”
在这里插入图片描述
在这里插入图片描述
然后点击下图所示的“[Copy and Link Dataset]”;输入MPCtest1 input在这里插入图片描述点击MPCtest1 input“图标,显示下图所示界面,按照下图所示界面进行设置
在这里插入图片描述
设置好以后返回点击“MPCtest1 output,按照下图进行相应设置:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
需要注意的是:carSIM的导出变量(X0,Y0和Yaw)和simulink中MPC模型的输入量是相对应,carSIM的导出变量(Vx和Steer_SW)为观测量,所以这里的carSIM的导出变量应按照下图所示的顺序进行顺序选择:
在这里插入图片描述
点击“Home“回到carSIM主界面。点击send to simulink 图标,此时之前新建的MPCtest1.mal模型将被打开:
在这里插入图片描述
按照此图对原模型进行修改
MATLAB command Windows命令窗口
完成上述设置后,carSIM通过外部接口将车辆模型发送至指定路径下的simulink仿真文件中,carSIM模块即以S函数的形式增加到simulink模型库中。
在这里插入图片描述

将simulink浏览窗口中的“S-Function”图标拖拽到MPCtest1.mdl中,显示新的S函数模块。双击该图标,弹出如下图所示的对话框,在“S-Function name”中输入MY_MPCController3
在这里插入图片描述
在模型中拖入延迟模块,目的是防止出现代数环
在这里插入图片描述
MY_MPCController3控制器模块的输出为车速和前轮转角,需对其转换成满足carSIM模块要求的导入变量:IMP_SPEED(质心车速[km/h]).IMP_STEER_l1(左前轮转角[°]),IMP_STEER_人(右前轮转角[°]),IMP_STEER_L2,IMP_STEER_R2。所以,在MY_MPCController3控制器模块的输出量与carSIM模块的导入变量之间加入了转换函数:
在这里插入图片描述
在simulink界面点击运行,运行处的结果如下图所示:
在这里插入图片描述
仿真动画
关于模型预测控制理论部分的内容以及公式推导部分的内容,可以观看B站天神的视频讲解,讲解的很到位也很详细,链接地址:
https://space.bilibili.com/387233952/dynamic
也非常感谢天神将书上第四章MPCcontroller的代码修改过来了,才得以跑出和书中一样的路径。

<think>嗯,用户想了解的是《无人驾驶车辆模型预测控制》第四章中关于CarSimMatlab联合仿真的步骤。首先,我得回忆一下这本书的内容。第四章应该讲的是模型预测控制(MPC)在无人车上的应用,而联合仿真部分可能涉及如何将CarSim的车辆动力学模型Matlab的控制器结合起来。 首先,用户可能是学生或者研究人员,正在做相关项目,需要实际操作指导。他们的需求很明确,就是步骤,但可能对细节不太清楚,比如软件配置、接口设置、参数调整等。深层需求可能包括遇到问题时的解决方法,或者如何验证仿真结果是否正确。 接下来,我需要整理出详细的步骤。通常,联合仿真需要安装必要的软件,比如CarSimMatlab,并确保版本兼容。然后是环境配置,比如设置CarSim的S-Function接口,以便与Simulink通信。可能需要生成CarSim的DLL文件,并在Simulink中加载。 然后是模型搭建部分,用户需要在CarSim中建立车辆模型,设置参数,然后在Matlab中设计MPC控制器。这里可能需要考虑如何将CarSim的输出作为MPC的输入,比如车辆状态信息,同时将控制指令发送回CarSim。 还要注意数据交互的同步问题,比如仿真步长设置是否一致,变量命名是否正确。还有可能提到的常见错误,比如路径问题、编译器不支持,或者S-Function加载失败的情况。 此外,用户可能需要知道如何测试调试,比如先用简单的控制算法验证联合仿真是否正常,再逐步替换为MPC控制器。结果分析部分,如何通过Matlab绘制曲线,或者CarSim的动画来验证控制效果。 最后,确保回答结构清晰,分步骤说明,并给出注意事项常见问题解决方法。这样用户能一步步跟着操作,减少遇到的障碍。</think>《无人驾驶车辆模型预测控制》第四章中CarSimMATLAB联合仿真核心步骤如下: --- ### 一、环境配置 1. **软件版本匹配** - 确保CarSimMATLAB版本兼容(推荐CarSim 2016+ 与 MATLAB 2018b+) - 安装CarSimMATLAB接口工具包(S-Function模块) 2. **路径设置** - 在MATLAB中添加CarSim接口文件路径: ```matlab addpath('C:\CarSim**\Programs\Simulink'); ``` --- ### 二、CarSim模型搭建 1. **车辆参数配置** - 在CarSim中设置车辆动力学参数(质量、悬架、轮胎模型等) - 选择输出信号:横摆角速度$\gamma$、侧向加速度$a_y$、方向盘转角$\delta$等 2. **生成S-Function模块** - 通过CarSim导出`vs_generic_driver.dll`动态链接库 - 生成`carsim_block.slx` Simulink接口模块 --- ### 三、MATLAB/Simulink控制器设计 1. **MPC控制器建模** - 在Simulink中搭建MPC控制器(使用Model Predictive Control Toolbox) - 定义目标函数与约束条件: $$ \min_{\Delta U} \sum_{k=1}^{N_p} \| y(k) - y_{ref}(k) \|^2_Q + \sum_{k=0}^{N_c-1} \| \Delta u(k) \|^2_R $$ 2. **接口信号连接** - 将CarSim输出信号与MPC控制器输入端口对齐 - 设置控制量(如方向盘转角$\delta$、加速度$a$)输出到CarSim --- ### 四、联合仿真设置 1. **仿真参数同步** - 固定步长设置(推荐0.01s) - 通信协议选择TCP/IP或共享内存 2. **启动流程** ```matlab % 初始化CarSim模型 vs_command('load "vehicles/test_car.par"'); vs_command('simulation.start'); ``` --- ### 五、结果验证 1. **数据可视化** - 在MATLAB中绘制轨迹跟踪误差$e(t)$: $$ e(t) = \sqrt{(x_{ref} - x)^2 + (y_{ref} - y)^2} $$ - 分析控制量变化曲线(如方向盘转角$\delta(t)$) 2. **动画回放** - 使用CarSim Replay Tool查看3D车辆运动轨迹 --- ### 常见问题解决 1. **DLL加载失败** - 检查MATLAB工作目录权限 - 重新编译CarSim S-Function接口 2. **通信超时** - 关闭防火墙/杀毒软件 - 缩短仿真步长(尝试0.005s) --- 通过以上步骤可实现从控制器设计到车辆动力学验证的闭环仿真,建议先通过阶跃转向工况验证基础通信,再逐步增加MPC复杂度。
评论 46
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yhwang-hub

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值