简介

本篇主要说明Simulink模型的搭建、MPC控制器的S-function的编写

1、Carsim设置

新建一个空白的Simulink模型,或复制Carsim自带的Simulink模型,存放在如下路径C:\Users\Public\Documents\CarSim2016.1_Data\Extensions\Simulink)

单击下图中的红圈按钮

如下图所示,将新建好的Simulink模型添加到进来

单击Send to Simulink按钮,如下图红圈所示,该操作将打开MATLAB及Simulink

2、Simulink模型搭建

步骤1的操作将自动打开MATLAB的Simulink(需等待几十秒,MATLAB启动较慢),并且Simulink Library Browser中将出现Carsim S-Function模块,之前在Carsim里搭建的汽车模型被封装成S-Function用以被调用。

搭建如下的Simulink模型

经测算,所选车型的方向盘转角约为车前轮转角的17.86

Simulink模型的下载链接

3、S-Function的编写

一个很好的S-Function教程

新建MPC_Costfunction.m 、MPC_Nonlcon.m 、MPC_S_Function.m 三个.m文件,存放在如下路径C:\Users\Public\Documents\CarSim2016.1_Data\Extensions\Simulink)

双击Simulink模型中的MPC_S_Function中模块,出现如下的窗口,点击Edit按钮

单击Browse按钮,添加已经建好的MPC_S_Function.m 文件

4、源码

a. 参考轨迹有两个可供选择

y = 0.5 * sin( 0.1 * pi * x )

y = 1

b. 目标函数中的各个惩罚项权重需要进行调参,过多的惩罚项将大大降低实时性

c. 增加预测的周期周期数可以降低调参的压力,但是会牺牲实时性

MPC_S_Function.m 程序的下载链接

MPC_Costfunction.m 程序的下载链接

MPC_Nonlcon.m 程序的下载链接

Reference

1.龚建伟, 姜岩, 徐威. 无人驾驶车辆模型预测控制[M]. 北京理工大学出版社, 2014.

2.Matlab中S-函数的编写blog.csdn.net/acelit/ar