路径跟踪算法之模型预测控制(MPC)跟踪

这篇具有很好参考价值的文章主要介绍了路径跟踪算法之模型预测控制(MPC)跟踪。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

路径跟踪算法之模型预测控制(MPC)跟踪

1.MPC简介

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

2.MPC在轨迹跟踪过程中的应用

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

3.推导过程

3.1双轮差速运动学建模
首先,以双轮中心点作为参考点建立双轮差速运动学状态方程:
mpc模型预测控制,移动机器人规划控制,算法,目标跟踪,自动驾驶

其中状态量为[x,y,z]T,控制量为:[v,w]T。
式 3-1 为非线性方程,角度和位置存在耦合关系,为了便于逻辑计算与后续
结果解算,在期望位置点采用一级泰勒展开进行近似线性化处理:
mpc模型预测控制,移动机器人规划控制,算法,目标跟踪,自动驾驶
其中:
mpc模型预测控制,移动机器人规划控制,算法,目标跟踪,自动驾驶
式 3-2 减去式 3-3 后得到:
mpc模型预测控制,移动机器人规划控制,算法,目标跟踪,自动驾驶
其中:
mpc模型预测控制,移动机器人规划控制,算法,目标跟踪,自动驾驶
线性化完成之后,形成连续的线性运动学模型,为了在控制周期内编程实现,再采用欧拉前项差分法将模型离散化:
mpc模型预测控制,移动机器人规划控制,算法,目标跟踪,自动驾驶
变换得:
mpc模型预测控制,移动机器人规划控制,算法,目标跟踪,自动驾驶
整理得离散化的线性表达式:
mpc模型预测控制,移动机器人规划控制,算法,目标跟踪,自动驾驶
mpc模型预测控制,移动机器人规划控制,算法,目标跟踪,自动驾驶
其中 A ‾ \overline{\text{A}} A = (I + TA), B ‾ \overline{\text{B}} B = TB, A ‾ \overline{\text{A}} A B ‾ \overline{\text{B}} B 是时变矩阵,展开可写作:
mpc模型预测控制,移动机器人规划控制,算法,目标跟踪,自动驾驶
一般为了便于计算,假设 A ‾ \overline{\text{A}} A(k)和 B ‾ \overline{\text{B}} B(k)是固定不变的。至此,运动学模型建模完毕。

3.2.预测模型
为预测下时刻与当前时刻的状态关系与趋势,将当前状态量与上一时刻的控制量进行组合,作为新的状态量输入,形成预测方程。
mpc模型预测控制,移动机器人规划控制,算法,目标跟踪,自动驾驶
根据式 3-6。凑式成的线性齐次的矩阵表达式:
mpc模型预测控制,移动机器人规划控制,算法,目标跟踪,自动驾驶
根据离散化的预测方程,结合预测时域和控制时域,结合式 3-10 列项如下:
mpc模型预测控制,移动机器人规划控制,算法,目标跟踪,自动驾驶
根据规律,写成向量形式如下:
mpc模型预测控制,移动机器人规划控制,算法,目标跟踪,自动驾驶
为了再分解出状态量和控制量,可以令:
mpc模型预测控制,移动机器人规划控制,算法,目标跟踪,自动驾驶
其中:

mpc模型预测控制,移动机器人规划控制,算法,目标跟踪,自动驾驶
n为状态量个数。
则系数矩阵可以作如下更新:

mpc模型预测控制,移动机器人规划控制,算法,目标跟踪,自动驾驶
3.3.目标函数及约束
目标函数的选取基于两个优化原则:1.机器人的位姿尽量靠近参考路径,以实现跟踪的目的;2.机器人的控制量变化率尽量小,以保证速度变化的流畅性。基于此原则构造代价函数如下:
mpc模型预测控制,移动机器人规划控制,算法,目标跟踪,自动驾驶
其中,Q 和 R 为权重系数。ρε2为松弛因子参数,一方面可以保证方程有解,
一方面也为了便于凑式计算。
将目标函数转换成二次规划的形式,便于求解。将预测方程带入代价函数,
矩阵方程凑式成标准的二次规划形式,有:
mpc模型预测控制,移动机器人规划控制,算法,目标跟踪,自动驾驶
约束则有:
mpc模型预测控制,移动机器人规划控制,算法,目标跟踪,自动驾驶
需要根据求解需要,将约束关系凑成标准的约束形式,主要包括不等式约束、等式约束和上下界约束。

4.matlab 仿真

4.1 参考轨迹生成

%% 生成直线轨迹
pos_num = 500; % 目标轨迹点的数量
sampling_period = 0.05; % 采样周期50ms
reference_pos_data = zeros(pos_num,3); % 用于存储目标轨迹点上的车辆状态;车辆共有3个状态变量:X轴坐标、Y轴坐标、航向角
for i = 1:1:pos_num
    %reference_pos_data(i,1) = (i-1)*sampling_period; % 设置目标轨迹点的X轴坐标
    reference_pos_data(i,2) = 2;
    reference_pos_data(i,2) = cos(reference_pos_data(i,1)/5)*reference_pos_data(i,1)/4;%曲线; % 设置目标轨迹点的Y轴坐标
    if i>1              
        reference_pos_data(i-1,3) = atan((reference_pos_data(i,2) - reference_pos_data(i-1,2))/(reference_pos_data(i,1) - reference_pos_data(i-1,1))); % 设置目标轨迹点的航向角
    end
    if i == pos_num
        reference_pos_data(i,3) = reference_pos_data(i-1,3);
    end
end
reference_velocity(1) = 0.15;%期望线速度1m/s
reference_velocity(2) = 0;%期望角速度0m/s

4.2 预测模型

%二次规划标准式 (X'*(1/2 *H) *X +f*X 最小值
H_cell = cell(2,2);
H_cell{1,1} = THETA'*Q*THETA + R;
H_cell{1,2} = zeros(control_length *control_num,1);
H_cell{2,1} = zeros(1,control_length *control_num);
H_cell{2,2} = relaxation_factor;
H = cell2mat(H_cell);
H = (1/2)*H;

f_cell = cell(1,2);
f_cell{1,1} = 2*(PHI*kesi)'*Q*THETA;
f_cell{1,2} = 0;
f = cell2mat(f_cell);

4.3 求解

options = optimset('Algorithm','interior-point-convex');
[u_result,fval,exitflag,~] = quadprog(H,f',A_cons,b_cons,[],[],lb,ub,[],options);

control_variable(1) = last_controlerror(1) + u_result(1);%当前时刻的控制量偏差 = 上一时刻的控制量偏差 + 计算得到的偏差增量值
control_variable(2) = last_controlerror(2) + u_result(2);%当前时刻的控制增量 = 上一时刻的控制增量 + 计算得到的偏差增量值

4.4 仿真效果
mpc模型预测控制,移动机器人规划控制,算法,目标跟踪,自动驾驶
5.参考资料及链接:
[1].B 站:《模型预测控制 MPC 轨迹跟踪》(手稿+视频)
[2].CSDN:《无人驾驶运动学模型——线性时变模型预测控制的思路推演过程》
[3].CSDN:《Apollo 代码学习(六)—模型预测控制(MPC)》

仿真代码链接:
mpc跟踪仿真代码链接文章来源地址https://www.toymoban.com/news/detail-819230.html

到了这里,关于路径跟踪算法之模型预测控制(MPC)跟踪的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 模型预测控制(MPC)解析(一):模型

    1.1 预测控制的日常应用         模型预测控制的设计目标是计算未来控制变量u的轨迹,以优化未来的系统输出y。优化过程在一个有限的时间窗口进行,并且利用优化时间窗口开始时的系统信息进行优化。为了理解预测控制的基本思想,以一个日常工作为例来进行说明。

    2024年02月02日
    浏览(48)
  • mpc模型预测控制原理详解

    本文是对mpc模型预测控制学习的记录,主要参照了DR_CAN老师的视频进行学习。视频专栏链接:DR_CAN老师mpc视频专栏。在这篇博客中博主也针对DR_CAN老师的讲解做了详尽的笔记和代码实现。读者可以相结合地进行学习。 MPC算法主要包括以下三步: 估计/测量读取当前系统状态

    2023年04月14日
    浏览(46)
  • 【运动规划算法项目实战】如何使用MPC算法进行路径跟踪(附ROS C++代码)

    自动驾驶和机器人领域中,路径跟踪是一项关键技术,它使车辆或机器人能够沿着预定轨迹行驶或移动。传统的控制方法往往难以应对复杂的动态环境和非线性特性,而模型预测控制(Model Pr

    2024年02月12日
    浏览(41)
  • MPC(模型预测控制)-Simulink仿真

    一、为什么使用MPC控制器? ① MPC可以处理多输入耦合控制多输出的问题: ② MPC可以处理对于控制量有约束的问题 比如,驾驶汽车的时候,汽车速度和转角都有上限 ③ MPC具有预测效果 即MPC考虑的不是根据当前参考值进行控制,而是根据预测时间内的参考去预测当前的控制量,

    2024年01月25日
    浏览(44)
  • 模型预测控制(MPC)简介及matlab实现

    全称 :Model-based Predictive Control(MPC)—模型预测控制 本质 :MPC利用一个已有的模型、系统当前的状态和未来的控制量,来预测系统未来的输出,然后与我们期望的系统输出做比较,得到代价函数,通过优化的方法,优化出未来控制量,使得代价函数最小。优化出来的控制量即

    2023年04月08日
    浏览(41)
  • MPC模型预测控制数学推导以及MatLab实现

    研究动机:在一定的 约束条件 下达到 最优的 系统表现。 关于最优的,举个车变道的例子,从表面上来看,轨迹1行车轨迹很平滑,很舒适,没有什么急转弯;轨迹2是快速的,但是假如前面有了障碍物,也需要一种快速的紧急避障能力,所以关于最优的,还得分析特定的情况

    2023年04月08日
    浏览(40)
  • 机器人模型预测控制MPC(model predictive control)

    当前控制动作是在每一个采样瞬间通过求解一个有限时域开环最优控制问题而获得。过程的当前状态作为最优控制问题的初始状态,解得的最优控制序列只实施第一个控制作用。这是它与那些使用预先计算控制律的算法的最大不同。本质上模型预测控制求解一个开环最优控制

    2024年02月07日
    浏览(47)
  • 【模型预测控制MPC】使用离散、连续、线性或非线性模型对预测控制进行建模(Matlab代码实现)

     💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码实现 本文的

    2024年02月14日
    浏览(48)
  • MATLAB - 利用非线性模型预测控制(Nonlinear MPC)来控制四旋翼飞行器

    本示例展示了如何利用非线性模型预测控制(MPC)为四旋翼飞行器设计一个跟踪轨迹的控制器。 四旋翼飞行器有四个向上的旋翼。从四旋翼飞行器的质量中心出发,旋翼呈等距离的正方形排列。四旋翼飞行器动力学数学模型采用欧拉-拉格朗日方程 [1]。 四旋翼飞行器的十二种

    2024年01月22日
    浏览(69)
  • USV的MPC轨迹跟踪控制

    该博客用以记录MPC轨迹控制的理论和matlab程序 被控对象运动学模型,为无人艇USV模型: x ˙ ( k ) = f ( x , u ) = { x ˙ = u cos ⁡ ( ψ ) − v sin ⁡ ( ψ ) y ˙ = u sin ⁡ ( ψ ) + v cos ⁡ ( ψ ) ψ ˙ = r begin{equation} dot{bold{x}}(k)= f(bold{x},bold{u})=left{ begin{aligned} dot{x}=ucos(psi)-vsin(psi) \\\\

    2024年01月19日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包