簡介
本篇主要說明Simulink模型的搭建、MPC控制器的S-function的編寫
新建一個空白的Simulink模型,或複製Carsim自帶的Simulink模型,存放在如下路徑C:UsersPublicDocumentsCarSim2016.1_DataExtensionsSimulink)
單擊下圖中的紅圈按鈕
如下圖所示,將新建好的Simulink模型添加到進來
單擊Send to Simulink按鈕,如下圖紅圈所示,該操作將打開MATLAB及Simulink
步驟1的操作將自動打開MATLAB的Simulink(需等待幾十秒,MATLAB啟動較慢),並且Simulink Library Browser中將出現Carsim S-Function模塊,之前在Carsim里搭建的汽車模型被封裝成S-Function用以被調用。
搭建如下的Simulink模型
經測算,所選車型的方向盤轉角約為車前輪轉角的17.86倍
Simulink模型的下載鏈接
一個很好的S-Function教程
新建MPC_Costfunction.m 、MPC_Nonlcon.m 、MPC_S_Function.m 三個.m文件,存放在如下路徑C:UsersPublicDocumentsCarSim2016.1_DataExtensionsSimulink)
雙擊Simulink模型中的MPC_S_Function中模塊,出現如下的窗口,點擊Edit按鈕
單擊Browse按鈕,添加已經建好的MPC_S_Function.m 文件
a. 參考軌跡有兩個可供選擇
y = 0.5 * sin( 0.1 * pi * x )
y = 1
b. 目標函數中的各個懲罰項權重需要進行調參,過多的懲罰項將大大降低實時性
c. 增加預測的周期周期數可以降低調參的壓力,但是會犧牲實時性
MPC_S_Function.m 程序的下載鏈接
MPC_Costfunction.m 程序的下載鏈接
MPC_Nonlcon.m 程序的下載鏈接
1.龔建偉, 姜岩, 徐威. 無人駕駛車輛模型預測控制[M]. 北京理工大學出版社, 2014.
2.Matlab中S-函數的編寫https://blog.csdn.net/acelit/article/details/59082349