MPC轨迹跟踪控制器详解

news/2024/11/23 5:45:38/

动力学模型的建立

在轨迹跟踪MPC中,我们需要先建立车辆的动力学模型。这里我们假设车辆的动力学模型为单轮模型,即车辆只有一个驱动轮,并忽略车辆的质量分布、车辆的空气阻力等因素,简化为一个二维平面模型。在这个模型中,车辆的状态可以表示为 x = [ x , y , θ , v ] T x = [x, y, \theta, v]^T x=[x,y,θ,v]T,其中 x x x y y y 分别表示车辆在平面坐标系中的位置, θ \theta θ 表示车辆的航向角, v v v 表示车辆的速度。
在这个模型中,车辆的运动可以由下列方程组表示:

x ˙ = v cos ⁡ ( θ ) y ˙ = v sin ⁡ ( θ ) θ ˙ = v L tan ⁡ ( δ ) v ˙ = a \begin{aligned} \dot x &= v \cos(\theta) \ \dot y &= v \sin(\theta) \ \dot \theta &= \frac{v}{L} \tan(\delta) \ \dot v &= a \end{aligned} x˙=vcos(θ) y˙=vsin(θ) θ˙=Lvtan(δ) v˙=a

其中, δ \delta δ 表示车辆的转向角度, a a a 表示车辆的加速度, L L L 表示车辆的轴距。这个方程组可以理解为:车辆的位置和航向角随着速度的变化而变化,车辆的航向角随着转向角度的变化而变化,车辆的速度随着加速度的变化而变化。

MPC控制器的设计

MPC是一种模型预测控制方法,它通过预测未来一段时间内的状态和控制变量来求解最优的控制策略。在轨迹跟踪MPC中,我们需要根据车辆的动力学模型和目标轨迹来设计MPC控制器。
假设我们要让车辆沿着一条给定的轨迹运动,我们可以将目标轨迹表示为一系列坐标点 p i = [ x i , y i ] T p_i = [x_i, y_i]^T pi=[xi,yi]T,其中 i = 1 , 2 , ⋯ , N i = 1, 2, \cdots, N i=1,2,,N。我们的目标是让车辆沿着这些点运动,并尽可能接近这些点。

在MPC控制器中,我们需要定义一个代价函数,用于衡量车辆距离目标轨迹的偏差。代价函数可以表示为下列形式:
KaTeX parse error: Expected 'EOF', got '\end' at position 9: y_{p_k} \̲e̲n̲d̲{bmatrix} \righ…

其中 x k x_k xk y k y_k yk 分别表示车辆在第 k k k 个时间步的位置, x p k x_{p_k} xpk y p k y_{p_k} ypk 分别表示车辆在第 k k k 个时间步应该到达的目标点的位置。第一项代表车辆距离目标轨迹的偏差,第二项代表车辆的控制变量(转向角度和加速度)的变化程度。

我们的目标是求解一个最优的控制变量序列,使得代价函数最小。这个问题可以通过一个优化问题来求解:

minimize  J subject to  x k + 1 = f ( x k , δ k , a k ) k = 0 , 1 , ⋯ , N − 1 \begin{aligned} &\text{minimize } J \ &\text{subject to } x_{k+1} = f(x_k, \delta_k, a_k) \ &\quad\quad\quad\quad\quad\quad\quad\quad k = 0, 1, \cdots, N-1 \end{aligned} minimize J subject to xk+1=f(xk,δk,ak) k=0,1,,N1

其中 f ( x k , δ k , a k ) f(x_k, \delta_k, a_k) f(xk,δk,ak) 表示车辆在第 k k k 个时间步的状态转移方程。这个方程可以根据车辆的动力学模型计算得到。我们的目标是求解最优的控制变量序列 δ 0 , a 0 , δ 1 , a 1 , ⋯ , δ N − 1 , a N − 1 {\delta_0, a_0, \delta_1, a_1, \cdots, \delta_{N-1}, a_{N-1}} δ0,a0,δ1,a1,,δN1,aN1,使得代价函数最小,并且满足车辆的动力学模型和约束条件。

MPC控制器的实现
MPC控制器的实现分为两个部分:预测和控制。在预测部分,我们需要计算出未来一段时间内的状态和控制变量序列。在控制部分,我们需要选择最优的控制变量,并将其应用到车辆上。
在预测部分,我们可以通过迭代的方式计算出未来的状态和控制变量。假设我们已知当前时刻的状态 x 0 x_0 x0,我们可以首先计算出当前时刻到下一个时间步的控制变量序列 δ 0 , a 0 {\delta_0, a_0} δ0,a0。然后,我们可以使用车辆的动力学模型,从当前时刻开始模拟车辆的运动,并计算出未来 N N N 个时间步的状态 x 1 , x 2 , ⋯ , x N x_1, x_2, \cdots, x_{N} x1,x2,,xN 和控制变量序列 δ 1 , a 1 , δ 2 , a 2 , ⋯ , δ N − 1 , a N − 1 {\delta_1, a_1, \delta_2, a_2, \cdots, \delta_{N-1}, a_{N-1}} δ1,a1,δ2,a2,,δN1,aN1
在控制部分,我们需要选择最优的控制变量序列,并将其应用到车辆上。我们可以使用一个优化求解器,例如IPOPT或者Ipopt,来求解这个优化问题。在这个问题中,我们需要定义一个目标函数和一些约束条件。

目标函数是代价函数 J J J,我们希望找到一个最小化代价函数的控制变量序列,使得车辆能够跟随目标轨迹。

约束条件包括车辆的动力学模型和一些限制条件,例如转向角度的最大值和加速度的最大值等。我们可以将这些约束条件转化为等式约束和不等式约束,并使用优化求解器来求解这个优化问题。


http://www.ppmy.cn/news/59593.html

相关文章

3分钟快速实现mysql全量增量备份

需求说明: mysql数据库ip地址为192.168.1.100,端口3306,root密码111111, 服务器cantos7中ip地址192.168.1.101 利用xtrabackup每周六进行全量备份,每天进行增量备份,保留2个礼拜的备份,并且保存…

安卓联发科MT6737手机开发核心板 开发模块

MT6737核心板是一款基于联发科MT6737T平台高性能、可运行安卓操作系统的4G智能模块。它支持多种制式,包括LTE-FDD/LTE-TDD/WCDMA/TD-SCDMA/EVDO/CDMA/GSM等。此外,它还支持WiFi 802.11a/b/g/n和BT4.0LE近距离无线通信,并支持GPS/GLONASS/北斗…

系统运维(Docker篇)

前言 打怪升级之路,从未停息 ​ 在这个社会信息技术的发展速度越来越快,这种快速发展带来了激烈的竞争。在这个竞争性的环境中,只有不断学习和更新自己的技能,才能保持竞争力。其次随着云计算、容器化、自动化等技术的出现&…

【14.HTML-移动端适配】

移动端适配 1 布局视口和视觉视口1.1 设置移动端布局视口宽度 2 移动端适配方案2.1 rem单位动态html的font-size;2.2 vw单位2.3 rem和vw对比2.4 flex的弹性布局 1 布局视口和视觉视口 1.1 设置移动端布局视口宽度 避免布局视口宽度默认980px带了的缩放问题,并且禁止…

没结过婚的我,所了解的婚姻

没结过婚的我,所了解的婚姻 富人不敢结婚?不结婚的理由 VS 结婚的理由年轻人不想结婚?不结婚的理由 VS 结婚的理由女人被情伤害?男人眼里的男人 VS 女人眼里的男人最高级别的爱情?欲望时期的爱情 VS 家族共同体的爱情一…

python基础实战7-字符串的format方法

1 概念 str.format()方法通过字符串中的大括号{}来识别替换字段replacement field,从而完成字符串的格式化。替换字段由字段名field name和转换字段conversion field以及格式说明符 format specifier组成,即一般形式为 {字段名!转换字段:格式说明符}。字…

菜鸡shader:L1基于兰伯特原理的玉石、条纹、点阵材质

目录 玉石材质条纹材质点阵效果 这里就简单说下原理吧,使用unity很久之前的一个插件shaderforge,最近几年好像在unity资源商店已经不再维护了,但是有shader forge的官网:在这,碰到节点不会的时候可以查一下官方文档&am…

《用于准确连续非侵入性血压监测的心跳内生物标志物》阅读笔记

目录 0 基础知识 1 论文摘要 2 论文十问 3 实验结果 4 论文亮点与不足之处 5 与其他研究的比较 6 实际应用与影响 7 个人思考与启示 参考文献 0 基础知识 非侵入性是指在进行医学检查或治疗时,不需要切开皮肤或穿刺体内组织,而是通过外部手段进…