参考文章:
https://blog.csdn.net/weixin_38135620/article/details/124655340
参考视频:
【carsim+prescan+simulink自动驾驶联合仿真及版本问题解决方案】https://www.bilibili.com/video/BV1tY4y1g7ex?vd_source=fe0ee94de37a998505f85f8fdcdcfa59
【carsim_prescan联合仿真】https://www.bilibili.com/video/BV1844y1b7sD?vd_source=fe0ee94de37a998505f85f8fdcdcfa59
一、carsim+prescan+simulink联合仿真中:(各个版本如下)
- Carsim提供更精确的车辆动力学模型
- Prescan提供自动驾驶场景和传感器
- Simulink提供控制算法,及联合作用
二、CarSim
(看了大多教学视频都是用prescan已经建好的cpar文件,自己直接创建的carsim可能有问题)
1.新建一个数据库,找到prescan自己medo中的Demo_PreScanCarSim3D.cpar
文件(我的在D:\appd\PreScan_8.5.0\Documents\Experiments\DemoTemplates\Demo_PreScanCarSim3D),然后打开,创建一个新的文件Carsim_Prescan_2024_data保存。
加载后界面
2.之后开锁,并send to simulink。
3.删除空模块,加入新的CarSim S-Function模块,之后run,成功即可
注意:运行报错可能是没有求解器,matlab预设路径中添加D:\appd\CarSim2023.2\CarSim2023.2_Prog\Programs\solvers保存
可能还会说求解器有问题,需要64位,按如下设置
之后run成功即可
4.进行保存
注意不能关闭上面软件,接着配置Prescan
三、Prescan
- 打开Prescan,新建一条路径和车辆模型(一定要是奥迪A8,因为prescan就只提供了奥迪A8的接口)
2.对奥迪A8进行设置,右击奥迪A8进入Object configuration
- 动力学参数设置为用户自定义的,动力学模型就选择在Carsim步骤中生成的模型CarSim_VehicleDynamics.mdl,模型类型为Carsim Contact。(此处我的路径:D:\appd\CarSim2023.2\Carsim_Prescan_2024_data\Extensions\Simulink)
- Animation—Wheel displacement也需要勾选。驾驶员模型Path Follower可以根据实际仿真需求增加控制勾选
- 设置驾驶员模型,勾选路径跟踪
3.在工具栏点击 进入Simulation Scheduler ,仿真频率需要设置和前面Carsim的一致,这里都是1000hz。
4.之后点击parse和build进行编译,然后发送到simulink,回跳到这个界面
5.找到自己build的slx文件,双击打开,并regenerate
6.双击进入Audi_A8_Sedan_1模块,再右键open in new tab进入CarSim_Vehicle,(本来是接地的,需要自己重新连接)
7.特别注意,需指定simfile.sim的绝对位置或相对位置
我的是 D:\appd\CarSim2023.2\Carsim_Prescan_2024_data\simfile.sim
找不到的话,可以回到carsim,勾选Identify Simulink working directory,可以指定simfile.sim的生成路径,之后要重新send to simulink
8.连接carsim S-function的输入输出,其中Mux设置参数如下,连接好如下
- 也可以参考prescan中自带的mode修改连接
8.之后 点击run即可
其中报错可能会有
1.版本问题:看第一个视频需要在carsim中Export: Outputs右下角Optional equations输入代码:
DEFINE_OUTPUT mod1_L1 = 0; - ; mod1_L1
DEFINE_OUTPUT mod2_L1 = 0; - ; mod2_L1
EQ_OUT MOD1_L1 = (ABS(FY_L1)/FZ_REF(1,1))*MUY_L1;
EQ_OUT MOD2_L1 = SIN(MIN(ABS(ALPHL_L1), 15/DR))*ABS(VXCENL1);
2.车速问题:各个软件设置的位置下图给出,据说是simulink优先,可以试