【MPC】模型预测控制 | 在车辆控制中的应用(一)曲线坐标车辆模型

写在前面:
🌟 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。📝
个人主页清流君_CSDN博客,期待与您一同探索 移动机器人 领域的无限可能。

🔍 本文系 清流君 原创之作,荣幸在CSDN首发🐒
若您觉得内容有价值,还请评论告知一声,以便更多人受益。
转载请注明出处,尊重原创,从我做起。

👍 点赞、评论、收藏,三连走一波,让我们一起养成好习惯😜
在这里,您将收获的不只是技术干货,还有思维的火花

📚 系列专栏:【运动控制】系列,带您深入浅出,领略控制之美。🖊
愿我的分享能为您带来启迪,如有不足,敬请指正,让我们共同学习,交流进步!

🎭 人生如戏,我们并非能选择舞台和剧本,但我们可以选择如何演绎 🌟
感谢您的支持与关注,让我们一起在知识的海洋中砥砺前行~~~

一、车辆运动控制架构

1、整体架构

  本文深入研究如何应用 MPC 进行车辆控制,先看如下架构图:在这里插入图片描述  运动规划模块生成参考路径,同时给出速度参考并构建约束,约束中包含了上层对车辆安全性能的考量,包括安全的驾驶范围。接下来把参考路径和约束作为输入给到 MPC 里, MPC 根据输入的约束和参考路径进行优化。
  MPC 可以根据当前反馈的测量值和模型预测在一定时域内的车辆 预测轨迹(predicted trajectory),同时生成一系列 最优解的控制序列(Optimal control horzion),把其中第一个控制量发给车量的 底层控制器(Low level control),最终产生油门、刹车来控制车辆运动。

2、底层控制器的选取

部分情况下底层控制器不是必需的:

  • 若 MPC 运算足够快,则不需要使用底层控制器也可以直接产生油门、刹车和方向盘的指令。
  • 若 MPC 问题构架复杂,运算量较大,长时间下很难保证系统的实时性,这种情况下需要加入底层控制器避免延时的问题,常用底层控制器:PID,可运行在高频架构下,保证抗干扰性能。

2、控制策略总结

  • MPC 的作用是在有限时域内,对车辆轨迹不断迭代优化,并产生相应的轨迹追踪控制信号,每当收到新的反馈,就需要基于MPC进行新的优化,保证优化的实时性;
  • 好的模型会让 MPC 生成高质量的预测状态从而保证准确性和有效性;
  • 构建的约束会对提高优化解的安全性;
  • 目标函数可以更好选取需要优化的量,从而最大限度保证车辆达到预期行驶的方向和轨迹追踪。

二、车辆运动控制输出

1、控制量的选取策略

  下面考虑MPC输出给底层控制器的变量选择什么,在不同的应用下有不同的选择:

速度
加速度
加加速度
转角
转角速度
转角加速度

  比如可以选择加速度和转角速度,那么就是控制加速度和转向角变化率
  一般来讲,在把 MPC 运用到耦合的横向和纵向运动的,必须都存在这两方面的控制量。

2、一阶与二阶微分组合的应用场景分析

控制量的选取有如下组合:

  • 速度 + + + 转向角度
  • 加速度 + + + 转角速度
  • 加加速度 + + + 转角加速度

具体使用一阶微分的组合还是二阶微分的组合,要根据不同的应用场景。

  比如,使用二阶微分的组合(加加速度 + + + 转角加速度),可以保证速度和加速度具有连续性和平滑性,并且可以有针对性优化加加速度(跃度)和转角加速度

3、MPC车辆控制关键要素

  总的来说,用 MPC 进行车辆控制,需要注意以下几个方面:

a)模型选择

  选择合理的模型构建系统,预测未来信息,针对不同应用场景选择不同的颗粒度。

b)目标函数选择

  保证轨迹追踪的实时性、车辆控制效率、舒适度。

c)约束选择

  保证安全性和模型准确性(满足模型、驱动力限制)。

d)底层控制器选择

  基于底层控制器加入引擎关系、动力模型、执行器模型、轮胎力模型等。


三、经典车辆模型

1、运动学自行车模型 (kinematics bicycle model)

  一个准确的模型可以让我们求解最优控制量时,使预测误差和实际误差比较小。但同时也会导致问题变复杂,所以 MPC 设计很重要的就是选择合适的模型,根据具体问题权衡模型的简化和准确程度。
  运动学自行车模型如下:
在这里插入图片描述
  只需要四个参数就可以描述车辆的运动轨迹: { p x ˙ = v cos ⁡ ( ψ ) p y ˙ = v sin ⁡ ( ψ ) ψ ˙ = v L tan ⁡ ( δ ) v ˙ = a \begin{cases}\dot{p_x}=v\cos(\psi)\\\dot{p_y}=v\sin(\psi)\\\dot{\psi}=\frac{v}{L}\tan(\delta)\\\dot{v}=a\end{cases} px˙=vcos(ψ)py˙=vsin(ψ)ψ˙=Lvtan(δ)v˙=a

2、动力学自行车模型 (Dynamic bicycle model):

在这里插入图片描述
  需要更多、更复杂的变量来精准描述车辆模型:
x ˙ = v x cos ⁡ ( ψ ) − v y sin ⁡ ( ψ ) φ ˙ = r v ˙ x = 1 m ( F r , x − F f , y sin ⁡ ( δ ) + m v y r ) v ˙ y = 1 m ( F r , y + F f , y cos ⁡ ( δ ) − m v x r ) r ˙ = 1 I z ( F f , y l f cos ⁡ ( δ ) − F r , y l r ) \begin{align*} \dot{x} &=v_{x}\cos(\psi)-v_{y}\sin(\psi) \\ \dot{\varphi} & = r \\ \dot{v}_{x} &=\frac{1}{m}\Big(F_{r,x}-F_{f,y}\sin(\delta)+mv_{y}r\Big) \\ \dot{v}_{y} &=\frac{1}{m}(F_{r,y}+F_{f,y}\cos(\delta)-mv_{x}r) \\ \dot{r}&=\frac{1}{I_{z}}(F_{f,y}l_{f}\cos(\delta)-F_{r,y}l_{r}) \end{align*} x˙φ˙v˙xv˙yr˙=vxcos(ψ)vysin(ψ)=r=m1(Fr,xFf,ysin(δ)+mvyr)=m1(Fr,y+Ff,ycos(δ)mvxr)=Iz1(Ff,ylfcos(δ)Fr,ylr)
包括车辆侧边角等参数。

实际使用要根据不同应用场景选择模型:

  • 在低速情况下,使用运动学模型就足够了。
  • 在高速情况下,比如赛车场景,需要快速且能过急转弯,就必须考虑轮胎侧滑和摩擦的影响,需要使用动力学模型。

总而言之,要结合具体问题选择适合的模型。


四、曲线坐标车辆模型 (Curvilinear Coordinates vehicle model)

  下面来介绍一个能够有效描述车辆与参考轨迹之间关系的车辆模型:曲线坐标车辆模型(Curvilinear Coordinates Vehicle Model)
  该模型描述车辆相对轨迹的速度与车辆自身速度之间的关系,与轨迹之间的横向误差、轨迹曲率之间的关系。
在这里插入图片描述

下面来看一下这个模型的这个状态量和输入量都有哪些?

1、模型状态量

  模型的状态量是由两部分组成:①参考轨迹②车辆自身

a)参考轨迹

  参考轨迹通过 s 描述,也就是有走了多远的距离,轨迹的行进速度用 s ˙ = d s d t \dot s = \frac{ds}{dt} s˙=dtds 描述。在任意一点用 ϕ \phi ϕ ϕ s \phi_s ϕs 表示当前点的轨迹朝向。把 s ˙ \dot s s˙ 的方向平移到车辆当前点的位置,可以得到 v s v_s vs 和车辆自身 v x v_x vx 之间的夹角,就是车辆当前朝向相对参考轨迹匹配点的朝向 μ \mu μ。车辆的参考轨迹是绕着转动中心以 ϕ ˙ s \dot \phi_s ϕ˙s 的速度转动,旋转半径为 r r r,车辆与匹配点之间沿着垂直于轨迹切线方向的距离为 n n n

b)车辆自身

  车辆速度 v v v 是横向 v x v_x vx 和纵向 v y v_y vy 的合成速度,加速度 a a a 是车辆在行进方向的速度变化,转向角为 δ \delta δ ,由此构成了 7 7 7 个状态变量的模型:
x = [ s n μ v a δ δ ˙ ] x=\left[ \begin{array}{c} s \\ n\\ \mu\\ v\\ a\\ \delta\\ \dot{\delta}\\ \end{array} \right] x= snμvaδδ˙ 其中, s s s 为车辆沿参考轨迹的行驶距离,n车辆与参考点的横向误差, μ \mu μ 为车辆当前的航向, v v v 为车辆的速度, a a a 为车辆行驶方向上的加速度, δ \delta δ 为转向角, δ ˙ \dot{\delta} δ˙ 为转向速率。
  其中有些变量是为了描述约束而建立,并不是要把所有变量都给底层控制器。

2、模型输入量

  下面来研究模型的输入量:
u = [ u j e r k u δ ¨ ] u=\begin{bmatrix}u_{jerk}\\u_{\ddot{\delta}}\end{bmatrix} u=[ujerkuδ¨]
  选用加加速度(jerk) v ¨ \ddot v v¨ 和转角加速度 δ ¨ \ddot{\delta} δ¨ 来作为输入量,这就是 加加速度 + + + 转角加速度的控制量组合。

为什么要来选择这两个参数作为输入量?

a)积分比微分准确

  如果求出了速度,再把它二次微分求加加速度的话,这个加加速度会包含很多噪声,而其反向操作——积分会准确得多。反之如果拿到了加加速度,可以反向积分求加速度以及速度, 同样对于转向角也一样。

b)输入项和舒适度相关

  可以有针对的去优化 加加速度转角加速度,因为这两项和舒适度息息相关。


五、车辆模型推导

下面来介绍整个模型是如何推导的。

1、车辆运动和参考轨迹之间的关系

  曲线坐标车辆模型的核心是建立车辆相对于参考轨迹的关系,可以通过用弧速度 s ˙ = d s d t \dot s=\frac{ds}{dt} s˙=dtds 来描述车辆沿着参考轨迹的运动。

  车辆重心沿着 s 的速度为 v s v_s vs,方向和 s ˙ \dot s s˙ 的切线方向一致,大小等于车辆自身坐标系下纵向速度 v x v_x vx 和横向速度 v y v_y vy v s v_s vs 方向上的分量之和:
v s = v x c o s μ − v y s i n μ = ( R − n ) ϕ ˙ s v_{s}=v_{x}cos\mu-v_{y}\mathrm{sin}\mu=(R-n)\dot{\phi}_{s} vs=vxcosμvysinμ=(Rn)ϕ˙s
  车辆沿参考轨迹的运动速度可以通过参考点旋转半径 R R R 减去车辆与参考点之间的距离 n n n,再乘以旋转速度 ϕ ˙ s \dot \phi_s ϕ˙s , 参考轨迹点的行进速度 s ˙ \dot s s˙等于 R R R 乘以旋转速度 ϕ ˙ s \dot \phi_s ϕ˙s ,联立起来,可以写成如下形式:
v s = ( R − n ) ϕ ˙ s s ˙ = R ϕ ˙ s } ⇒ s ˙ = R R − n ( v x c o s μ − v y s i n μ ) \left.\begin{array}{c}{v_{s}=(R-n)\dot{\phi}_{s}}\\{\dot{s}=R\dot{\phi}_{s}}\\\end{array}\right\}\Rightarrow\dot{s}=\frac{R}{R-n}\big(v_{x}cos\mu-v_{y}\mathrm{sin}\mu\big) vs=(Rn)ϕ˙ss˙=Rϕ˙s}s˙=RnR(vxcosμvysinμ)这样就可以建立起参考轨迹 s ˙ \dot{s} s˙ 和车辆速度 v x 、 v y v_x、v_y vxvy 之间的关系。

  一般来说,对于路径或轨迹,用曲率来描述旋转角度的大小。所以用曲率 κ \kappa κ 来代替旋转半径的倒数 1 R \frac{1}{R} R1,可以得到用曲率 κ \kappa κ 来表示参考轨迹 s ˙ \dot{s} s˙ 和车辆速度 v x 、 v y v_x、v_y vxvy 之间的关系:
s ˙ = R R − n ( v x c o s μ − v y s i n μ ) κ = 1 R } ⇒ s ˙ = v x c o s μ − v y sin ⁡ μ 1 − n κ \left. \begin{array}{c} \dot{s}=\frac{R}{R-n}\left( v_xcos\mu -v_ysin\mu \right)\\ \kappa =\frac{1}{R}\\ \end{array} \right\} \Rightarrow \dot{s}=\frac{v_xcos\mu -v_y\sin \mu}{1-n\kappa} s˙=RnR(vxcosμvysinμ)κ=R1}s˙=1vxcosμvysinμ这样就建立起了车辆运动和参考轨迹之间的关系。

2、与自行车模型的结合

  下面将车辆运动和参考轨迹之间的关系与 自行车模型(Bicycle model) 结合:
在这里插入图片描述

  车辆速度v和车辆轴线之间的夹角是侧偏角 β \beta β,可以得到其与 v x 、 v y v_x、v_y vxvy 关系 ,把这两个式子带进去:
s ˙ = v x c o s μ − v y s i n μ 1 − n κ v x = v c o s β v y = v s i n β } ⇒ s ˙ = v c o s β c o s μ − v s i n β s i n μ 1 − n κ = v c o s ( β + μ ) 1 − n κ \left. \begin{array}{c} \begin{array}{c} \begin{aligned} \dot{s}&=\frac{v_xcos\mu -v_ysin\mu}{1-n\kappa}\\ \end{aligned}\\ v_x=vcos\beta\\ \end{array}\\ v_y=vsin\beta\\ \end{array} \right\} \Rightarrow \dot{s}=\frac{vcos\beta cos\mu -vsin\beta sin\mu}{1-n\kappa}=\frac{vcos\left( \beta +\mu \right)}{1-n\kappa} s˙=1vxcosμvysinμvx=vcosβvy=vsinβ s˙=1vcosβcosμvsinβsinμ=1vcos(β+μ)其中, β + μ \beta + \mu β+μ 就是车辆速度 v v v 和轨迹参考点速度 s ˙ \dot s s˙ 之间的夹角。

   n ˙ \dot n n˙ 就是 v x 、 v y v_x、v_y vxvy 沿着横向的分量,可以写成如下形式:
n ˙ = v x s i n μ + v y c o s μ = v c o s β s i n μ + v s i n β c o s μ = v s i n ( β + μ ) \dot{n}=v_{x}sin\mu+v_{y}cos\mu=vcos\beta sin\mu+vsin\beta cos\mu=vsin(\beta+\mu) n˙=vxsinμ+vycosμ=vcosβsinμ+vsinβcosμ=vsin(β+μ)车头朝向的旋转速度 μ \mu μ 就是车本身的旋转速度 r r r 和参考系旋转速度 ϕ ˙ s \dot{\phi}_s ϕ˙s 之差。用 r 来代表车自身的旋转速度,可以写作 r = v R v r=\frac{v}{R_v} r=Rvv R v R_v Rv 是车辆的旋转半径,由于 s ˙ = R ϕ s \dot s=R\phi _s s˙=Rϕs,把 R R R 换成 κ \kappa κ,那么就是等于 ϕ ˙ s κ \frac{\dot{\phi}_s}{\kappa} κϕ˙s,这样就可以写成 ϕ ˙ s = κ s ˙ \dot{\phi}_s=\kappa \dot{s} ϕ˙s=κs˙,那么可以推导出如下关系:
μ ˙ = r − ϕ ˙ s = v R v − κ v c o s ( β + μ ) 1 − n κ = v s i n β l r − κ v c o s ( β + μ ) 1 − n κ \dot{\mu}=r-\dot{\phi}_{s}=\frac{v}{R_{v}}-\kappa \frac{vcos(\beta+\mu)}{1-n\kappa}=\frac{vsin\beta}{l_{r}}-\kappa \frac{vcos(\beta+\mu)}{1-n\kappa} μ˙=rϕ˙s=Rvvκ1vcos(β+μ)=lrvsinβκ1vcos(β+μ)把刚才的推导整理一下,可以得到以下车辆模型:
x ˙ = [ s ˙ n ˙ μ ˙ v ˙ a ˙ δ ˙ δ ¨ ] = [ v c o s ( μ + β ) 1 − n κ v s i n ( μ + β ) v l r sin ⁡ ( β ) − κ v c o s ( μ + β ) 1 − n κ a u j e r k δ ˙ u δ ¨ ] \dot{x}=\begin{bmatrix}\dot{s}\\\dot{n}\\\dot{\mu}\\\dot{v}\\\dot{a}\\\dot{\delta}\\\ddot{\delta}\end{bmatrix}=\begin{bmatrix}\frac{vcos(\mu+\beta)}{1-n\kappa}\\vsin(\mu+\beta)\\\frac{v}{l_r}\sin(\beta)-\kappa\frac{vcos(\mu+\beta)}{1-n\kappa}\\a\\u_{jerk}\\\dot{\delta}\\u_{\ddot{\delta}}\end{bmatrix} x˙= s˙n˙μ˙v˙a˙δ˙δ¨ = 1vcos(μ+β)vsin(μ+β)lrvsin(β)κ1vcos(μ+β)aujerkδ˙uδ¨


六、模型特点

1、非线性模型

  可以看到曲线坐标车辆模型有7个状态变量,有很多 c o s 、 s i n cos、sin cossin 在里面,所以是非线性模型

2、横纵向耦合

  其最大特点是把纵向和横向运动耦合起来,也就是在 s ˙ \dot s s˙ 里和 n n n 建立关系。

3、描述车辆运动与参考轨迹之间的关系

  该模型给很好地描述了车辆运动和参考轨迹之间的关系


七、车辆侧偏角的计算

  下面看一下车辆模型的变量, v v v 直接可以测得,当前航向 μ \mu μ 可以通过两个 朝向相减得到, n n n 可以通过相对距离计算。 κ \kappa κ 是个轨迹里自带的属性,其中唯一需要计算的就是 β \beta β,根据自行车模型的几何关系得到:
在这里插入图片描述
  根据互余可知 ∠ A O G = β \angle AOG=\beta AOG=β,所以 sin ⁡ β = l r R \sin \beta =\frac{l_r}{R} sinβ=Rlr,可以得到
R = l r sin ⁡ β R=\frac{l_r}{\sin \beta} R=sinβlr同时还知道 ∠ A B O = π 2 − δ f \angle ABO=\frac{\pi}{2}-\delta _f ABO=2πδf,根据三角关系可得 ∠ G O B = δ f − β \angle GOB=\delta _f-\beta GOB=δfβ。在 △ O G B \bigtriangleup OGB OGB 中应用正弦定理:
l f sin ⁡ ( δ f − β ) = R sin ⁡ ( π 2 − δ f ) \frac{l_f}{\sin(\delta_f-\beta)}=\frac{R}{\sin(\frac{\pi}{2}-\delta_f)} sin(δfβ)lf=sin(2πδf)R把这个式子展开,分母同除以 cos ⁡ δ f cos ⁡ β \cos \delta _f\cos \beta cosδfcosβ,得到以下关系:
l f sin ⁡ δ f c o s β − c o s δ f s i n β = l r c o s δ f s i n β ⇒ l f tan ⁡ δ f − t a n β = l r t a n β \frac{l_{f}}{\sin\delta_{f}cos\beta-cos\delta_{f}sin\beta}=\frac{l_{r}}{cos\delta_{f}sin\beta}\\\Rightarrow\frac{l_{f}}{\tan\delta_{f}-tan\beta}=\frac{l_{r}}{tan\beta} sinδfcosβcosδfsinβlf=cosδfsinβlrtanδftanβlf=tanβlr可计算出
tan ⁡ β = l r l f + l r tan ⁡ δ f \tan \beta =\frac{l_r}{l_f+l_r}\tan \delta _f tanβ=lf+lrlrtanδf因此可得 β \beta β
β = arctan ⁡ ( l r l r + l f tan ⁡ δ f ) \beta=\arctan(\frac{l_{r}}{l_{r}+l_{f}}\tan\delta_{f}) β=arctan(lr+lflrtanδf)其他量都可以实时计算出来,那么就可以建立起曲线坐标车辆模型


八、MPC的模型选取

  用什么模型构建MPC,要根据需求或具体情况来进行分析:

1、要求精确度

  • 非线性(Nonlinearity)
  • 动力学模型(Dynamics)
  • 横纵向耦合(Coupled)

2、要求快速性

  • 线性(Linear)
    使用二次规划QP求解。
  • 运动学模型(Kinematics)
    适用于低速情况,忽略轮胎特性和轮胎刚度,牺牲部分准确度。
  • 解耦合(Decoupled)
    降低模型复杂度,求解起来更快速。但这种方法存在缺点:缺少横纵向之间的联系,需要在后续增加把横纵向联合起来的过程,或者是在前期的运动规划模块中解决。

  综合来看,模型选取需要取舍,并不是越准确或越快越好,要有效选择适合的模型


后记:
🌟 感谢您耐心阅读这篇关于 曲线坐标车辆模型 的技术博客。 📚

🎯 如果您觉得这篇博客对您有所帮助,请不要吝啬您的点赞和评论 📢

🌟您的支持是我继续创作的动力。同时,别忘了收藏本篇博客,以便日后随时查阅。🚀

🚗 让我们一起期待更多的技术分享,共同探索移动机器人的无限可能!💡

🎭感谢您的支持与关注,让我们一起在知识的海洋中砥砺前行 🚀

  • 25
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值