NMPC轨迹跟踪控制器推导及Simulink验证

文章目录

NMPC轨迹跟踪控制器推导及Simulink验证

NMPC与MPC的不同特点

MPC(模型预测控制):

  1. 线性或线性化模型:MPC通常基于线性系统模型,或者将非线性系统模型在工作点附近进行线性化处理。
  2. 优化问题:在每一个控制周期内,MPC解决一个线性规划或二次规划问题,以优化未来的控制行为。
  3. 适用范围:适用于线性系统或者可以在操作点附近线性化的非线性系统。
  4. 计算复杂度:相对较低,因为优化问题相对简单。

NMPC(非线性模型预测控制):

  1. 非线性模型:NMPC直接使用非线性系统模型,不进行线性化处理。
  2. 优化问题:在每一个控制周期内,NMPC解决一个非线性规划问题,这通常比线性或二次规划问题更复杂。
  3. 适用范围:适用于非线性系统,尤其是当线性化处理无法准确描述系统动态时。
  4. 计算复杂度:相对较高,因为非线性优化问题通常更难求解。

NMPC轨迹跟踪控制器推导

一 系统模型建立

将非线性系统表述如下:
X ˙ = f ( X , u ) \dot{X} = f(X,u) X˙=f(X,u)

二 预测区间状态和变量推导

采用4阶Runge-Kutta方法对系统状态变量进行预测:

针对非线性微分方程 X ˙ = f ( X , u ) \dot{X} = f(X,u) X˙=f(X,u),以时间间隔 Δ t \Delta{t} Δt进行数值求解:

{ k 1 = f ( X t , u t ) k 2 = f ( X t + k 1 Δ t 2 , u t ) k 3 = f ( X t + k 2 Δ t 2 , u t ) k 4 = f ( X t + k 3 Δ t , u t ) X t + 1 = X t + ( k 1 + 2 k 2 + 2 k 3 + k 4 ) Δ t 6 \left\{ \begin{aligned} k_1 & = f(X_t,u_t)\\ k_2 & = f(X_t+k_1\frac{\Delta{t}}{2},u_t)\\ k_3 & = f(X_t+k_2\frac{\Delta{t}}{2},u_t)\\ k_4 & = f(X_t+k_3\Delta{t},u_t)\\ X_{t+1} & = X_t + (k_1+2k_2+2k_3+k_4)\frac{\Delta{t}}{6}\\ \end{aligned} \right. ⎩ ⎨ ⎧k1k2k3k4Xt+1=f(Xt,ut)=f(Xt+k12Δt,ut)=f(Xt+k22Δt,ut)=f(Xt+k3Δt,ut)=Xt+(k1+2k2+2k3+k4)6Δt

三 代价函数推导

定义代价函数为阶段成本和最终成本之和:
J = ∫ t t + N Δ t L ( X ( τ ) , u ( τ ) ) d τ + V ( X ( t + N Δ t ) ) J = \int_{t}^{t+N\Delta{t}}L(X(\tau),u(\tau))d\tau + V(X(t+N\Delta{t})) J=∫tt+NΔtL(X(τ),u(τ))dτ+V(X(t+NΔt))

其中, N N N为预测步长, L 、 V L、V L、V分别为阶段成本和最终成本函数。

定义阶段成本函数为:
L ( X ( τ ) , u ( τ ) ) = ( X ( τ ) − R e f ( τ ) ) T Q ( X ( τ ) − R e f ( τ ) ) + u ( τ ) T R u ( τ ) L(X(\tau),u(\tau)) = (X(\tau)-R_{ef}(\tau))^TQ(X(\tau)-R_{ef}(\tau)) + u(\tau)^TRu(\tau) L(X(τ),u(τ))=(X(τ)−Ref(τ))TQ(X(τ)−Ref(τ))+u(τ)TRu(τ)

包含位置误差成本和控制输入成本两部分。

最终成本函数为:
V ( X ( t + N Δ t ) ) = X ( t + N Δ t ) T F X ( t + N Δ t ) V(X(t+N\Delta{t}) )= X(t+N\Delta{t})^TFX(t+N\Delta{t}) V(X(t+NΔt))=X(t+NΔt)TFX(t+NΔt)

为最终误差成本。

四 优化求解

通过3. 代价函数推导 ,采用内点优化方法使得代价 J J J最小,进而进行控制,定义优化问题如下:
min ⁡ u k J = ∫ t t + N Δ t L ( X ( τ ) , u ( τ ) ) d τ + V ( X ( t + N Δ t ) ) subject to u m i n ≤ u ( τ ) ≤ u m a x \begin{aligned} \underset{u_k}\min \quad & J = \int_{t}^{t+N\Delta{t}}L(X(\tau),u(\tau))d\tau + V(X(t+N\Delta{t})) \\ \text{subject to}\quad & u_{min}\leq u(\tau) \leq u_{max}\\ \end{aligned} ukminsubject toJ=∫tt+NΔtL(X(τ),u(τ))dτ+V(X(t+NΔt))umin≤u(τ)≤umax

在MATLAB中可使用函数fmincon (fmincon函数介绍)求解:

根据MATLAB中quadprog要求,定义:
{ f u n = J A = b = A e q = b e q = l b = u m i n u b = u m a x \left\{ \begin{aligned} fun & = J \\ A & = \\quad\\ b & = \\quad\\ A_{eq} & = \\quad\\ b_{eq} & = \\quad\\ lb & = u_{min}\\ ub & = u_{max}\\ \end{aligned} \right. ⎩ ⎨ ⎧funAbAeqbeqlbub=J=\[\]=\[\]=\[\]=\[\]=umin=umax

调用 fmincon(fun,A,b,Aeq,beq,lb,ub) 即可求解代价函数 J J J取最小值时,最优控制输入 u k u_k uk。

基于MPC的倒立摆控制系统

采用这篇文章建立的倒立摆模型进行仿真测试。

simulink 中搭建控制仿真模型如下:

输入计算出的反馈增益 K K K仿真结果如下:

相关资料

MATLAB代码和simulink模型点击这里

MPC控制器推导及Simulink验证点击这里

欢迎大家与我交流!!!

Reference:

  1. 推导倒立摆模型并使用LQR进行位置跟踪控制:https://blog.csdn.net/weixin_55249340/article/details/140421091?spm=1001.2014.3001.5501
  2. MATLAB fmincon函数:https://ww2.mathworks.cn/help/optim/ug/fmincon.html?searchHighlight=optim&s_tid=srchtitle_support_results_9_optim
相关推荐
菜鸡爱玩15 小时前
线性代数矩阵相乘
线性代数·算法·矩阵
硅谷秋水20 小时前
HARBOR:一个面向具身智体机器人强化学习的驾驭框架
人工智能·深度学习·机器学习·机器人
Rocky Ding*1 天前
Latent Consistency Models:一篇读懂扩散模型的少步生成核心基础知识
人工智能·深度学习·机器学习·ai作画·stable diffusion·aigc·ai-native
学术头条1 天前
清华团队开源SCAIL-2:角色动画告别骨骼依赖,端到端还原视频中动作细节
人工智能·科技·机器学习·ai·开源·音视频·agi
Black蜡笔小新1 天前
制造业AI质检工作站/企业AI算力工作站DLTM助力制造业质检智能化升级
人工智能·深度学习·机器学习
大C聊AI1 天前
通用大模型纷纷收费,垂直场景AI工具的价值正在被重估
大数据·人工智能·机器学习·办公效率·ai 工具·智标领航·ai 辅助办公
苏州邦恩精密1 天前
2026江苏GOM三维扫描仪定制厂家找哪家?企业数字化转型视角
人工智能·机器学习·3d·自动化·制造
王小王-1231 天前
基于机器学习算法的恶意软件行为分析与检测系统设计与实现
机器学习·pyqt5·检测系统·恶意软件行为检测
Godspeed Zhao1 天前
Level 4自动驾驶系统设计0——功能与场景0
人工智能·机器学习·自动驾驶