实时性一直是限制NMPC应用的一个瓶颈,我们在下述论文中讨论了这个问题:
[1] 白国星, 刘丽, 孟宇, 等. 基于非线性模型预测控制的移动机器人实时路径跟踪[J/OL]. 农业机械学报: 1-13 [2020-09-27]. http://kns.cnki.net/kcms/detail/11.1964.S.20200703.1012.004.html.
那么如何在仿真中读出NMPC的运算时间?
首先介绍一个Simulink模块,Real-Time Synchronization。
这个模块的作用是同步Simulink仿真和Windows系统时间,同步后读出的时间即实际运算时间。
读取运算时间采用的函数是clock和etime,mpc001代码修改为如下:
function [sys,x0,str,ts] = mpc001(t,x,u,flag)
switch flag
case 0
[sys,x0,str,ts]=mdlInitializeSizes;
% case 2
% sys = mdlUpdate(t,x,u);
case 3
sys = mdlOutputs(t,x,