【模糊预测控制】线性MPC低曲率道路车道保持和避障【含Matlab源码 3702期】

本文介绍了无人机圆轨迹MPC控制器的设计原理,包括模型预测控制的步骤,以及在轨迹跟踪中的应用,特别是基于双轮差速运动学的建模和Matlab中的实现。文中详细阐述了控制器的工作机制,并给出了部分Matlab源代码示例。
摘要由CSDN通过智能技术生成

💥💥💥💥💥💥💥💥💞💞💞💞💞💞💞💞💞Matlab领域博客之家💞💞💞💞💞💞💞💞💞💥💥💥💥💥💥💥💥
🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀
在这里插入图片描述
🔊博主简介:985研究生,Matlab领域科研开发者;
🏫个人主页:Matlab领域
🏆代码获取方式:
CSDN Matlab领域—代码获取方式

🚅座右铭:路漫漫其修远兮,吾将上下而求索。
更多Matlab信号处理仿真内容点击👇
Matlab信号处理(高阶版)
付费专栏Matlab信号处理(进阶版)
付费专栏Matlab信号处理(初级版)

⛳️关注CSDN Matlab领域,更多资源等你来!!

⛄一、无人机圆轨迹MPC控制器设计简介

1 MPC简介
模型预测控制(以下简称 MPC)是一种依赖于系统模型进行数学优化的复杂控制器。它利用优化算法计算有限时间范围内一系列的控制输入序列,并优化该序列,但控制器仅执行序列中的第一组控制输入,然后再次重复该循环。MPC 主要分为 3 个关键步骤:模型预测、滚动优化、反馈校正。

2 MPC在轨迹跟踪过程中的应用
在轨迹跟踪应用领域,通常 MPC 建模可根据机器人的控制方式选择基于运动学运动状态方程建模或者基于动力学运动状态方程建模。前者是根据车辆转向的几何学角度关系和速度位置关系来建立描述车辆的运动的预测模型,一般只适用于低速运动场景;后者是对被控对象进行综合受力分析,从受力平衡的角度建模,一般应用在高速运动场景,如汽车无人驾驶。本文基于双轮差速运动学模型,推导实现差速运动的MPC轨迹跟踪控制。 双轮差速运动学线性 MPC 轨迹跟踪实现的基本思路是状态方程–线性化–离散化–预测方程–约束线性化–非线性目标函数转为二次规划–求解最优问题。其中线性化可采用泰勒级数展开忽略高次项的方式,离散化可采用后向差分法,这两个部分都有一定的模型精度丢失。

3 作用机理
MPC作用机理描述为:在每一个采用时刻,根据获得的当前测量信息,在线求解一个有限时间开环优化问题,并将得到的控制序列的第一个元素作用于被控对象。在下一个采样时刻,重复上述过程:用新的测量值作为此时预测系统未来动态的初始条件,刷新优化问题并重新求解 。
即MPC算法包括三个步骤:
(1)预测系统未来动态;
(2)(数值)求解开环优化问题;
(3)将优化解的第一个元素(或者说第一部分)作用于系统
这三步是在每个采样时刻重复进行的,且无论采用什么样的模型,每个采样时刻得到的测量值都作为当前时刻预测系统未来动态的初始条件
在线求解开环优化问题获得开环优化序列是MPC和传统控制方法的主要区别,因为后者通常是离线求解一个反馈控制律,并将得到的反馈控制律一直作用于系统。

⛄二、部分源代码

%% Prepare
clc
clear
close all

%% Constants
g = 9.81; % m/s^2
m = 2050; % kg
I = 3344; % kg-m^2
% mu = .3; % Slipery
rho = Inf; % m
W_line = 3; % m
x_dot_ref = 125/9; % m/s

% Geometry
a = 2;
b = 2;
c = 1.8;

C_fu = (4200-(-4200))/(4-(-4)); % ? +
C_rL = (3800-(-3800))/(5-(-5)*8); % ? +
C_ru = (2000-(-2000))/(2-(-2))*8; % ?

%% Variables
T_sampling = 0.1;
T_duration = 20;
N_horizon = 30;
R_rho = .01;
x_0 = [0 0 0 0 0]‘;
umin = [-pi/3 1]’;
umax = [pi/3 1]';
xmin = [];
xmax = [];
f_x = [
0 0 0 1 0; % e_y
0 0 0 -1 0;
0 0 0 0 1; % delta
0 0 0 0 -1;
1/x_dot_ref a/x_dot_ref 0 0 -1; % alpha_f,lim
-1/x_dot_ref -a/x_dot_ref 0 0 1;
1/x_dot_ref -b/x_dot_ref 0 0 0; % alpha_r,lim
-1/x_dot_ref b/x_dot_ref 0 0 0;
];
f_u = [];
f_u_eq = [
0 1
];
v_x = [
W_line/2; % e_y
W_line/2;
pi/3; % delta
pi/3;
pi/6; % alpha_f_lim
pi/6; % alpha_f_lim
pi/6; % alpha_r_lim
pi/6; % alpha_r_lim
];
v_u = [];
v_u_eq = [
1
];
obstacle1.duration = [5 6];
obstacle1.width = [1 -0.5];
obstacle2.duration = [15 16];
obstacle2.width = [.2 -0.5];
obstacle3.duration = [10 12];
obstacle3.width = [.2 -0.1];
Obstacles = [obstacle1 obstacle2 obstacle3];
[f_x_TV, v_x_TV, TV_x] = CreateObstacle(Obstacles, T_sampling);

showPlots = true;
Psi_r = 1/rho;

%% State Space Modeling
States = [“y_dot”, “Phi_dot”, “e_Phi”, “e_y”, “delta”];
A_c = [ (C_fu+C_ru)/(x_dot_refm) , (-x_dot_ref + (C_fua-bC_ru)/(x_dot_refm)), 0, 0, -C_fu/m ;
(aC_fu-bC_rL)/(Ix_dot_ref), (aaC_fu+bbC_rL)/(Ix_dot_ref), 0, 0, -aC_fu/I ;
0, 1, 0, 0, 0; % Constant Term
1, 0, x_dot_ref, 0, 0;
0, 0, 0, 0, 0 ];
B_c = [0 0 0 0 1; 0 0 -x_dot_ref
Psi_r 0 0]';
C_c = [0 0 0 1 0];
D_c = [0 0];

%% Discritize
[A, B, C, D] = DiscritizeStateSpace(A_c, B_c, C_c, D_c, T_sampling);

[X, U, Y] = MPC_DualMode(A, B, C, D, N_horizon, T_sampling, T_duration, R_rho, x_0, umin, umax, xmin, xmax, f_x, f_u, f_u_eq, f_x_TV, v_x_TV, TV_x, v_x, v_u, v_u_eq, showPlots);

⛄三、运行结果

在这里插入图片描述
在这里插入图片描述

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]季冬冬.MPC控制器的FPGA实现及其应用[J].吉林大学学报(信息科学版). 2013,21(11)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Matlab领域

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值