Obstacle Avoidance Using Adaptive Model Predictive Control

本文介绍Matlab官网使用自适应模型预测控制的小车避障例子,包括小车模型的状态变量、控制变量,自适应控制的更新方式及优化目标。还提及mpcmoveAdaptive函数可求解时变离散线性化模型,且计算开销小。不过官网例子存在bug,对非线性小车模型控制效果差。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Matlab官网例子:使用自适应模型预测控制的小车避障https://ww2.mathworks.cn/help/mpc/ug/obstacle-avoidance-using-adaptive-model-predictive-control.html

例子中的小车模型是连续非线性时不变的,状态变量x=[小车全局X坐标,小车全局Y坐标,小车航向角θ,小车车速v],控制变量u=[油门开度T,转角δ]。

这里的自适应是指在每个预测时间步,根据测量输出(这里就是状态x)和控制输入u,更新小车模型为(x,u)处的离散线性化模型,并且更新避障所需的约束条件。由于只有2个控制自由度,为了达到零稳态误差的完美跟踪,只能跟踪两个系统输出,这里的优化目标是使小车Y坐标和车速v跟踪参考信号(其中refSignal=[0 0 0 20]),因此mpc控制器里对测量输出的权重设置为

mpcobj.Weights.OutputVariables = [0 30 0 1]

查看matalb自带函数mpcmoveAdaptive,发现其甚至能求解时变离散线性化小车模型,也即可以显式指定每一预测时间步的小车模型!

P.S. mpcmoveAdaptive.m 里有一段话:

%   [u, Info] = mpcmoveAdaptive(MPCobj,x,Plant,Nominal,y,r,v,MoveOptions)

%   NOTE:  This command allows you to modify the controller's prediction
%   model(s) without re-defining the controller object, which involves 
%   considerable overhead.  If Plant and Nominal are constant, use MPCMOVE
%   instead.

意味着为了达到自适应控制的目的,除了使用mpcmoveAdaptive命令,还有一种方法是在每一计算时间步根据新的对象模型重新定义常规的mpc controller object,但是自适应mpc命令的计算开销要更小。

但官网的这个例子有点bug:小车原本的非线性模型只有一个平衡点[0,0,0,0],而随后设计AdaptiveMPC控制器时在其他状态处进行线性化,我尝试过,发现这样得到的控制器只能控制住线性化的(连续时间/离散时间)小车模型,而对原本的非线性小车模型控制效果很差。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值