【自动驾驶】控制算法(三)轮胎侧偏与车辆动力学模型

news2024/11/14 12:05:49

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

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

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

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

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


文章目录

  • 引言
  • 一、运动学模型的不足
    • 1、实际应用中的问题
    • 2、运动学模型不适用高速情况的原因
  • 二、车辆动力学模型的必要性
    • 1、引入自然坐标系
    • 2、纵向控制与横向控制的解耦
    • 3、整体控制思路
  • 三、二自由度车辆动力学模型
    • 1、基本假设
    • 2、轮胎变形与侧偏特性
    • 3、侧偏角的计算
    • 4、车辆动力学模型最终形式
  • 四、侧偏刚度的符号选择与实际应用差异
    • 1、侧偏刚度相差两倍
    • 2、侧偏刚度相差负号
  • 五、总结
  • 参考资料


引言

  本篇博客是 自动驾驶控制算法 系列的第三节。内容整理自 B站知名up主 忠厚老实的老王 的视频,作为博主的学习笔记,分享给大家共同学习。

  本系列博客的第二节介绍了车辆的自行车模型,推导出了运动学方程,并且定义了一系列物理量,比如横摆角 φ \varphi φ、质心侧边角 β \beta β 以及三大坐标系。

  【自动驾驶】控制算法(二)三大坐标系与车辆运动学模型


一、运动学模型的不足

  理论上来说,有了运动学方程就可以做相应的控制算法。像龚建伟的《无人驾驶车辆模型预测控制》这本书里专门有一章讲以运动学模型作为基础做车辆控制。

1、实际应用中的问题

但实际上很少用运动学模型作为理论依据,原因如下:

  • 简化实在太多
  • 做了太多假设
  • 是非线性方程
  • 纵向速度 v v v 和方向盘转角 δ f \delta_f δf 耦合在一起,会增加计算量

  其实运动学方程更多用来做坐标变换,以及一个非常重要的公式,就是角速度和线速度间的关系,可以把它代入到运动学公式里,推导出:
φ ˙ = v tan ⁡ δ L φ ˙ = v R ⇒ 1 R = tan ⁡ δ L tan ⁡ δ = L R \dot{\varphi}=\frac{v\tan\delta}{L}\quad\dot{\varphi}=\frac{v}{R}\quad\Rightarrow\frac{1}{R}=\frac{\tan\delta}{L}\quad\tan\delta=\frac{L}{R} φ˙=Lvtanδφ˙=RvR1=Ltanδtanδ=RL  上述公式是近似相等的。

  严格来说, v v v 除以 R R R 应该等于航向角速度,即
φ ˙ + β ˙ = v R \dot{\varphi}+\dot{\beta}=\frac{v}{R} φ˙+β˙=Rv  但是因为运动学方程中, β ˙ \dot\beta β˙默认为 0 ,所以说运动学方程假设太多,只适用于低速情况,在高速情况下运动学方程就不再适用。

2、运动学模型不适用高速情况的原因

  最主要的原因是没有考虑到轮胎特性,在高速情况下,不能把轮胎看成完全刚性的轮胎,因为在低速情况下轮胎变形不大,可以近似为钢铁轮胎,而高速情况下轮胎变形比较大,所以会有很大误差。


二、车辆动力学模型的必要性

  动力学模型相比运动学模型的最大的区别是考虑轮胎特性,所以更准确。

  目前市面上大多数已经商业化的自动驾驶企业的算法基本都是以动力学模型为基础,很少用运动学模型,因为运动学模型简化太多,其实运动学方程只有 tan ⁡ δ = L R \tan\delta=\frac{L}{R} tanδ=RL 以及坐标变换时可能用得到,其他时候基本用不到。

  其实, tan ⁡ δ = L R \tan\delta=\frac{L}{R} tanδ=RL公式在高速情况下也比较准,因为和横摆角 φ \varphi φ 相比,质心侧偏角 β \beta β 一般都比较小,如果质心侧偏角 β \beta β 很大的话,车辆有侧翻的危险,一般不太可能发生这种情况。

1、引入自然坐标系

  本篇博客讲解车辆动力学模型,如果要做控制的话,有动力学方程还不够,还需要 Frenet 坐标系将纵向控制与横向控制解耦。

  下面来看 自然坐标系(Frenet 坐标系)
在这里插入图片描述

以切向向量 τ \tau τ 和法向向量 n n n 作为坐标系,那么
v ⃗ = d s d t a ⃗ τ = d 2 s d t 2 a n = v 2 R = v 2 tan ⁡ δ L \vec{v}=\frac{ds}{dt}\quad\vec{a}_{\tau}=\frac{d^{2}s}{dt^{2}}\quad a_{n}=\frac{v^{2}}{R}=\frac{v^{2}\tan \delta}{L} v =dtdsa τ=dt2d2san=Rv2=Lv2tanδ可以发现

  • s s s 只与 a τ a_\tau aτ 有关, a τ a_\tau aτ 经过积分两次可得到 s s s
  • a n a_n an v v v δ \delta δ 有关
  • v v v a τ a_\tau aτ 相关, a τ a_\tau aτ 与油门和刹车直接相关

  所以可以通过控制油门和刹车来控制 a τ a_\tau aτ ,然后通过 a τ a_\tau aτ 进行纵向控制,因此在纵向控制中,只需要管油门和刹车就可以,不用管方向盘。

2、纵向控制与横向控制的解耦

  在 Frenet 坐标系中,纵向控制可以解耦,但横向控制和 v v v δ \delta δ 有关,所以横向控制似乎依赖于纵向控制和方向盘。但是当纵向控制稳定后, v v v 变化一般不大,所以横向控制也就只和方向盘有关。

  可以和运动学模型作为类比:
v δ } ⇒ φ ˙ ⇒ φ v } ⇒ X ˙ Y ˙ } ⇒ X Y \left. \begin{array}{c} v\\ \delta\\ \end{array} \right\} \Rightarrow \left. \begin{array}{c} \dot{\varphi}\Rightarrow \varphi\\ v\\ \end{array} \right\} \Rightarrow \left. \begin{array}{c} \dot{X}\\ \dot{Y}\\ \end{array} \right\} \Rightarrow \begin{array}{c} \begin{array}{c} X\\ Y\\ \end{array}\\ \end{array} vδ}φ˙φv}X˙Y˙}XY  所以在运动学方程中,纵向控制和横向控制耦合在一起,没有办法分开。

  而 动力学方程 + Frenet坐标系,可以将纵向控制和横向控制直接分开,把纵向位移设为s,横向位移设为d,将纵向控制和横向控制解耦后,处理起来就会更加简单。

3、整体控制思路

  纵向控制比较简单,就是油门和刹车,和 a τ a_{\tau} aτ 直接相关:
a τ = d 2 s d t 2 a_{\tau}=\frac{d^{2}s}{dt^{2}} aτ=dt2d2s  横向控制和方向盘转角之间 d = f ( v , δ ) d=f(v,\delta) d=f(v,δ) 不是简单导数关系。

  在汽车理论中已经有比较成熟的关于方向盘转角和横向位移之间的动力学方程,但方程是以车身坐标系为参考系,所以汽车理论的知识不能直接用,必须经过坐标变换成自然坐标系才能用。

  首先在车身坐标系上建立关系 y = f ( v , δ ) y=f(v,\delta) y=f(v,δ),再建立关系 y = g ( d ) y=g(d) y=g(d),再通过联立得到 d = h ( v , δ ) d=h(v,\delta) d=h(v,δ) 的关系。

  • y = f ( v , δ ) y=f(v,\delta) y=f(v,δ) 是动力学方程,在汽车理论上可以找到公式。

  • y = g ( d ) y=g(d) y=g(d) 是坐标变换,就是将车身坐标系 ( x , y , x ˙ , y ˙ ) (x,y, \dot x ,\dot y) (x,y,x˙,y˙)变换到 Frenet 坐标系 ( s , d , s ˙ , d ˙ ) (s,d, \dot s, \dot d) (s,d,s˙,d˙)

  那么任务就非常明确了,本节讲解车身坐标系下车辆的动力学方程 y = f ( v , δ ) y=f(v,\delta) y=f(v,δ),下节讲解车身坐标系与 Frenet 坐标系之间的坐标变换。

  本篇博客介绍车辆动力学方程,即 y = f ( v , δ ) y=f(v,\delta) y=f(v,δ)。这一方程在汽车理论书籍中随处可见,理论成熟,看似简单,实则至关重要。其重要性在于,无人驾驶领域有许多非汽车专业背景的从业者,他们可能将这一方程视为一个固定的公式,直接套用。从严格意义上讲,这样并无大错,但车辆动力学方程中包含了许多细节,这些细节虽小,却至关重要。若对这些细节处理不当,可能导致严重后果。

  在上一篇博客中推荐了一些参考书籍,并指出这些书籍中存在诸多错误。这些错误的出现,正是因为作者们对这些细节不够重视,认为动力学方程书上都有,便直接采用,导致内容矛盾。这对初学者来说极为不利,容易使他们陷入自我否定的恶性循环,怀疑自己的能力,甚至放弃学习。

  通过本篇博客的学习,对车辆动力学方程进行深入细致的分析,使大家具备评价他人论文的能力,能够自行判断内容的正确与否。因此,尽管动力学方程简单且成熟,但它的重要性不容忽视,它让我们具备了评判他人著作的能力。我们一定要深入理解并掌握这一知识点。


三、二自由度车辆动力学模型

1、基本假设

本篇博客介绍最经典的二自由度车辆动力学模型,做了两个假设:

  • 前轮转角 δ f \delta_f δf 相对较小
  • 纵向速度 v x v_x vx 为常数

  注意坐标系都基于车身坐标系,所以 v x v_x vx 和 Frenet 坐标系中纵向控制的 v v v 不是一个东西。

  为什么说二自由度车辆中学方程最经典?因为它最简单,同时能抓住主要矛盾,用两个自由度模型算出来的结果和实际实验结果在不怎么极限和恶劣的环境下能达到比较高的精度。

  车其实是很复杂的系统,如果对汽车精确建模,所有关系都用流动力学来写微分方式的话,根本就不现实。而二自由度动力学模型经典就经典在用最少的自由度算出来的结果相对来说比较准确,能化繁为解。而且二自由度车辆动力学方程能完美契合到控制上,因为假设 v x v_x vx 是常数,也就是不管纵向控制,只管横向控制。而我们控制思路正好也是将纵向控制和横向控制分开控制,这样就完美契合。
  除了 2 2 2 自由度模型,还有 3 3 3 自由度的 7 7 7 自由度的,模型建的越来越复杂,当然算的也越来越精确,但是可能纵向控制和横向控制就混在一起了,没有办法分开,而二自由度模型完美的契合我们控制的思路。

  二自由度动力学方程就是应用牛顿第二定律进行受力分析,不过二自由度模型最重要的是考虑轮胎变形,所以下面先讲轮胎变形。

2、轮胎变形与侧偏特性

  轮胎变形在汽车领域中的专门术语叫 轮胎的侧偏特性,看下面的轮胎三视图:
在这里插入图片描述

  当轮胎装在车上时,地面给轮胎一个力 F F F,车也会给轮胎一个反作用力 F ′ F' F。但是轮胎相对钢铁来说比较软,所以受到力会变形成这样:
在这里插入图片描述

  它不是严格意义上的圆柱体,因为变形等效成圆台。

为什么圆柱有了这样的变形,就会等效成一个圆台呢?

  圆台转 180 ° 180° 180°,也就是前进 180 ° 180° 180°,它还是这样:
在这里插入图片描述

  这就符合轮胎的特性,轮胎转 180 ° 180° 180° 还是会受到这样的侧压力。

但是变成圆台有一个很麻烦的事情,圆台不能走直线,只能走圆弧,会导致一个什么样的一个结果呢?

  看下面的轮胎俯视图:
在这里插入图片描述

  本来轮胎按照 v v v 的方向直线前进, 但由于侧向力的作用,它不是圆柱,变成圆台了,所以实际上轮胎按照红色箭头方向走,存在一个侧偏角 α \alpha α,即轮胎实际速度 v v v 和轮胎横截面之间的夹角。

  定义一个新的物理量:侧偏刚度 C C C ,反映轮胎的软硬程度。侧偏刚度乘以侧偏角等于侧向力:
F = C α F=C\alpha F=Cα  力越大,轮胎变形越厉害,圆台就越斜,侧偏角也就越大,力除以侧偏角定义为侧偏刚度。

就像弹簧一样,弹簧的力越大,它的位移也就越大,力除以位移定义为弹簧刚度,那么对于轮胎也一样。

  注意,侧偏刚度一定是负数,因为坐标系都是右手系,看下面建立的右手系俯视图:
在这里插入图片描述

  侧向力 F F F 指向 y y y 轴负方向,所以负的侧向力会导致正的侧偏角。

   一般通过做轮胎实验得到侧偏刚度,侧偏刚度是一个比较难以估计准的参数,实际上就是把轮胎等效于一个特殊的弹簧,认为侧偏角和力呈线性关系,但实际上因为轮胎是橡胶,并不是理想弹簧,所以在比较极限的工况下,侧向力和侧偏角并不成正比例关系。而且更重要的一点是侧偏刚度和轮胎的垂向力息息相关。但是在比较平缓的工况,可以认为侧向力和侧偏角是线性关系,并且侧偏刚度是常数

  再看一下自行车模型:
在这里插入图片描述

  一般车辆后轮不转向,所以后轮方向和车辆轴线基本一样,但前轮可以转向。在质心处建立车身坐标系,前轮转角为 δ f \delta_f δf ,车辆质心到前轮的距离为 a a a,到后轮的距离为 b b b,两个轮子受到侧向力的作用,分别为 F y f F_{yf} Fyf F y r F_{yr} Fyr, 就是 frontrear 英文单词缩写前和后的意思。

  由于轮胎侧偏特性,轮胎有侧偏角,注意侧偏角永远和所受侧向力的方向相反,正的侧向力会得到负的侧偏角,质心速度和车轴线的夹角叫做 质心侧偏角。前轮和后轮的侧偏角分别为 α f \alpha_f αf α r \alpha_r αr,显然都是负的。

  受力分析,列出方程:
Σ F y = m a y ⇒ m a y = F y f cos ⁡ δ + F y r \Sigma F_y=ma_y\Rightarrow ma_y=F_{yf}\cos \delta +F_{yr} ΣFy=maymay=Fyfcosδ+Fyr  力矩方程: Σ M = I φ ¨ ⇒ F y f cos ⁡ δ ⋅ a − F y r b = I φ ¨ \Sigma M=I\ddot{\varphi}\Rightarrow F_{yf}\cos \delta \cdot a-F_{yr}b=I\ddot{\varphi} ΣM=Iφ¨FyfcosδaFyrb=Iφ¨  假设 δ \delta δ 比较小,那么 cos ⁡ δ ≈ 1 \cos\delta \approx1 cosδ1,代入化解,再把侧向力写成侧偏刚度乘以侧偏角的形式,可得到如下方程: m a y = F y f + F y r = C α f α f + C α r α r ma_y=F_{yf}+F_{yr}=C_{\alpha f}\alpha _f+C_{\alpha r}\alpha _r may=Fyf+Fyr=Cαfαf+Cαrαr I φ ¨ = F y f a − F y r b = a C α f α f − b C α r α r I\ddot{\varphi}=F_{yf}a-F_{yr}b=aC_{\alpha f}\alpha _f-bC_{\alpha r}\alpha _r Iφ¨=FyfaFyrb=aCαfαfbCαrαr

有人可能会觉得 cos ⁡ δ ≈ 1 \cos\delta \approx1 cosδ1 的近似真的可以接受吗?

  可以用 tan ⁡ δ = L R \tan\delta=\frac{L}{R} tanδ=RL 进行验证。车的轴距一般都是 3 m 3m 3m,在通常交通情况下,最小转弯半径差不多是 8 m 8m 8m ,所以 tan ⁡ δ = 3 8 \tan\delta=\frac{3}{8} tanδ=83,那么算出来 cos ⁡ δ ≈ 0.93 \cos \delta \approx 0.93 cosδ0.93,可以接受。

一般开车时:

  • 转直角弯时,转弯半径为 8 − 10 m 8-10m 810m
  • 变道时,转弯半径为 20 − 30 m 20-30m 2030m

  这样的话近似程度就相当高了,所以上述近似在通常情况下可以接受。

  得到这两个方程还是不太满意,我们希望找 a y a_y ay y y y 的关系,以及侧偏角 α f \alpha_f αf α r \alpha_r αr 的具体表达式,因为最终目的是希望通过前轮转角 δ f \delta_f δf 实现对横向位移 y y y 以及车辆横摆角 φ \varphi φ 的控制,那就需要找到前轮转角 δ f \delta_f δf y y y φ \varphi φ之间的具体关系。

  直接给出结果:
v y = y ˙ a y = y ¨ + v x φ ˙ v_{y}=\dot{y}\quad\quad a_y=\ddot{y}+v_{x}\dot{\varphi} vy=y˙ay=y¨+vxφ˙

为什么 a y a_y ay后面带个小尾巴?

  加速度是速度的导数,本质上是矢量关系,在这里是
a ⃗ = d v ⃗ d t = d ( v x e ⃗ x + v y e ⃗ y ) d t \vec{a}=\frac{d\vec{v}}{dt}=\frac{d(v_{x}\vec{e}_{x}+v_{y}\vec{e}_{y})}{dt} a =dtdv =dtd(vxe x+vye y)
  在直角坐标系下,单位基础量 e ⃗ x \vec{e}_{x} e x e ⃗ y \vec{e}_{y} e y 是常矢量,不会变,所以 e ⃗ ˙ x \dot {\vec{e}}_{x} e ˙x e ⃗ ˙ y \dot {\vec{e}}_{y} e ˙y 都是 0 0 0,所以
a ⃗ = d v x d t e ⃗ x + v x ⋅ d e ⃗ x d t + d v y d t e ⃗ y + v y ⋅ d e ⃗ y d t \vec{a}=\frac{dv_{x}}{dt}\vec{e}_{x}+v_{x}\cdot\frac{d\vec{e}_{x}}{dt}+\frac{dv_{y}}{dt}\vec{e}_{y}+v_y\cdot\frac{d\vec{e}_{y}}{dt} a =dtdvxe x+vxdtde x+dtdvye y+vydtde y  在直角坐标系下,由于 e ⃗ x \vec{e}_{x} e x e ⃗ y \vec{e}_{y} e y 都是常矢量,所以
a ⃗ = v ˙ x e ⃗ x + v ˙ y e ⃗ y \vec{a}=\dot v_{x}\vec{e}_{x}+\dot v_{y}\vec{e}_{y} a =v˙xe x+v˙ye y  所以 a y = v ˙ y a_{y}=\dot v_{y} ay=v˙y

  但在车身坐标系:
在这里插入图片描述

   e ⃗ x \vec{e}_{x} e x e ⃗ y \vec{e}_{y} e y 显然不是常矢量,所以 e ⃗ ˙ x \dot {\vec{e}}_{x} e ˙x e ⃗ ˙ y \dot {\vec{e}}_{y} e ˙y不等于0,所以加速度后面要带个小尾巴。

物理解释:车身坐标系不是惯性系。那个小尾巴其实就是惯性力,要把惯性力加上。

3、侧偏角的计算

  下面推导侧偏角的计算式,先看如下自行车模型:
在这里插入图片描述

  根据刚体运动学的速度合成与分解,把 v r v_r vr 移到质心,连接 v r v_r vr v v v 的矢量一定与车的轴线垂直,并且大小轮等于 φ ˙ b \dot \varphi b φ˙b。放大图如下:
在这里插入图片描述

  横着的蓝线长度 v x = v c o s β v_x =v cos\beta vx=vcosβ ,竖着的蓝线长度 φ ˙ b − v sin ⁡ β = φ ˙ b − v y \dot{\varphi}b-v\sin\beta=\dot{\varphi}b-v_y φ˙bvsinβ=φ˙bvy,那么
tan ⁡ α r = φ ˙ b − v y v x ≈ α r \tan\alpha_{r}=\frac{\dot{\varphi}b-v_{y}}{v_{x}}\approx\alpha_{r} tanαr=vxφ˙bvyαr因为 α r \alpha_{r} αr 是负的,所以要换过来:
α r = v y − φ ˙ b v x \alpha_{r}=\frac{v_{y}-\dot{\varphi}b}{v_{x}} αr=vxvyφ˙b 其中, v y v_y vy 是非常小的,但是 φ ˙ b \dot{\varphi}b φ˙b 一般比较大,所以能保证 α r \alpha_{r} αr 是个负值。

  正负号其实是非常重要的,因为只有坐标系确定之后,才能判断正负。我们所有坐标系都是右手系,对于轮胎,往左转是正的,往右边转是负的。

  对于前轮也一样,做运动的合成与分解:
在这里插入图片描述
  图中蓝色角为 θ \theta θ
tan ⁡ θ = φ ˙ a + v y v x \tan\theta=\frac{\dot{\varphi}a+v_y}{v_x} tanθ=vxφ˙a+vy  再回到自行车模型:
在这里插入图片描述
  绿色角是 θ \theta θ,绿色角上面的角是 α f \alpha_f αf,由于 α f \alpha_f αf 是负的,所以: α f = θ − δ = φ ˙ a + v y v x − δ \alpha_{f}=\theta-\delta=\frac{\dot{\varphi}a+v_{y}}{v_{x}}-\delta αf=θδ=vxφ˙a+vyδ

4、车辆动力学模型最终形式

  把侧偏角方程带到动力学的牛顿第二定律公式里,得到下面两个方程:
m a y = C α f α f + C α r α r ma_y=C_{\alpha f}\alpha _f+C_{\alpha r}\alpha _r may=Cαfαf+Cαrαr ⇒ m ( v y + v x φ ˙ ) = C α f ( φ ˙ a + v y v x − δ ) + C α r ( v y − φ ˙ b v x ) \Rightarrow m\left( v_y+v_x\dot{\varphi} \right) =C_{\alpha f}\left( \frac{\dot{\varphi}a+v_y}{v_x}-\delta \right) +C_{\alpha r}\left( \frac{v_y-\dot{\varphi}b}{v_x} \right) m(vy+vxφ˙)=Cαf(vxφ˙a+vyδ)+Cαr(vxvyφ˙b) I φ ¨ = a C α f α f − b C α r α r I\ddot{\varphi}=aC_{\alpha f}\alpha _f-bC_{\alpha r}\alpha _r Iφ¨=aCαfαfbCαrαr ⇒ I φ ¨ = a C α f ( φ ˙ a + v y v x − δ ) − b C α r ( v y − φ ˙ b v x ) \Rightarrow I\ddot{\varphi}=aC_{\alpha f}\left( \frac{\dot{\varphi}a+v_y}{v_x}-\delta \right) -bC_{\alpha r}\left( \frac{v_y-\dot{\varphi}b}{v_x} \right) Iφ¨=aCαf(vxφ˙a+vyδ)bCαr(vxvyφ˙b) v y v_y vy y ˙ \dot y y˙ 代替,代入得到:

在这里插入图片描述

其中, x = ( y ˙ φ ˙ ) , u = δ x=\left(\begin{array}{c}{\dot{y}}\\{\dot{\varphi}}\\\end{array}\right), u=\delta x=(y˙φ˙)u=δ 就是我们所要的控制方程:
X ˙ = A X + B u \dot X=AX+Bu X˙=AX+Bu  通过改变 δ \delta δ ,实现对 y ˙ \dot{y} y˙ φ ˙ \dot{\varphi} φ˙ 的控制。


四、侧偏刚度的符号选择与实际应用差异

  如果各位有百度 Apollo 的代码,或者有《车辆动力学及控制》这本书的话,可能会发现这里讲的控制方程和他们代码里或者书上写的控制方程不一样,差别在以下两点:

1、侧偏刚度相差两倍

  本篇博客只考虑了两个轮子,虽然是自行车模型,但实际的车辆并不是真的自行车,所以每个侧偏刚度 α \alpha α 都要乘以 2 2 2,相当于两个轮子合并在一起的自行车模型。

2、侧偏刚度相差负号

  除此之外其他都一样,这是为什么呢?前面也说过了,认为侧偏刚度是负的,一般的车辆工程的关于车辆动力学知识都认为侧偏刚度是负的,在汽车理论里就明确的写出了侧偏刚度永远是负的。
  但在阿波罗的代码或者在《车辆动力学及控制》这本书里,他们认为侧偏刚度是正的,所以相差一个负号,其实无论正和负,得到的结果都一样。

  大家可以根据自己的喜好来,博主比较喜欢侧偏刚度是负的,因为侧偏刚度是负的是汽车理论的知识,而且也和车辆动力学相关知识的坐标系能对得上,也比较符合物理认知逻辑。


五、总结

  本篇博客讲解了车辆动力学模型,下一篇博客讲解比较难的坐标变换,坐标变换是整个课程中最难也是最核心的一节,非常重要,因为只有会坐标变换才能将现在得到的基于车身坐标的控制方程转化到基于 Frenet 坐标系下的控制方程,而那个方程才是整个控制的核心。

  后续博客继续讲解自动驾驶控制算法系列,欢迎关注!


参考资料

  【基础】自动驾驶控制算法第三讲 轮胎侧偏与车辆动力学方程


后记:

🌟 感谢您耐心阅读这篇关于 轮胎侧偏与车辆动力学模型 的技术博客。 📚

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2056861.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

苍鹰来啦!快来看呀!NGO-BiTCN-BiGRU-Attention北方苍鹰算法优化多重双向深度学习回归预测

苍鹰来啦!快来看呀!NGO-BiTCN-BiGRU-Attention北方苍鹰算法优化多重双向深度学习回归预测 目录 苍鹰来啦!快来看呀!NGO-BiTCN-BiGRU-Attention北方苍鹰算法优化多重双向深度学习回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实…

Java实现MQTT通信(发布订阅消息)

文章目录 前言一、相关pom依赖二、相关代码1.MQTT工具类2.MQTT回调函数3.订阅消息4.发布消息 三、安装mosquitto1.mosquitto简介2.下载 四、安装MQTT.fx1.MQTT.fx简介2.下载3.使用 五、java订阅消息六、java发布消息 前言 MQTT是一种轻量级的物联网通信协议,基于客…

[Meachines] [Easy] Blue MS17-010永恒之蓝

信息收集 IP AddressOpening Ports10.10.10.40TCP:135/tcp msrpc, 139/tcp netbios-ssn, 445/tcp microsoft-ds, 49152/tcp msrpc, 49153/tcp msrpc, 49154/tcp msrpc, 49155/tcp msrpc, 49156/tcp msrpc, 49157/tcp msrpc $ nmap -p- 10.10.10.40 --min-rate 1000 -sC -sV …

YOLOV8 POSE姿态检测对图片绘制矩形和和关节点序号

代码如下 import cv2 import torchfrom ultralytics import YOLO# Load a model # model YOLO("yolov8n-pose.yaml") # build a new model from YAML model YOLO("yolov8n-pose.pt") # load a pretrained model (recommended for training) # model …

SQL— DQL语句学习【后端 11】

DQL语句 引言 DQL(Data Query Language,即数据查询语言)是SQL(Structured Query Language)中用于从数据库中检索数据的重要部分。在数据库管理中,DQL语句是日常工作中最常用的工具之一。通过DQL&#xff0…

leetcode-538. 把二叉搜索树转换为累加树

题目描述 给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。 提醒一下,二叉搜索树满足下列约束…

C++11:右值引用、移动语义和完美转发

目录 前言 1. 左值引用和右值引用 2. 引用范围 3. 左值引用的缺陷 4. 右值引用的作用 5. 右值引用的深入场景 6. 完美转发 总结 前言 C11作为一次重大的更新,引入了许多革命性的特性,其中之一便是右值引用和移动语义。本文将深入探讨其中引入的…

Unity抖音直播玩法开发流程

前言 近两年直播玩法逐渐新兴起来了,也出现不少质量还不错的作品,比如下列《红蓝对决》《三国全战》等。近期我们也做了一款直播玩法,就此记录下开发流程。 1,申请应用 进入抖音开发者平台,在首页入驻平台。 如果是…

Unity的粒子系统

目录 基础参数与模块 创建与编辑 功能与应用 实例与教程 结论 Unity粒子系统的最新功能和更新有哪些? 如何在Unity中使用Visual Effect Graph创建复杂粒子效果? Unity粒子系统的高级应用技巧有哪些? 在Unity中实现粒子系统时的性能优…

回溯算法(基于Python)

递归 递归(recursion)是一种算法策略,通过函数调用自身来解决问题。"递"指程序不断深入地调用自身,通常传入更小或更简化的参数,直到达到“终止条件”。"归"指触发终止条件后,程序从最深层的递归函数开始逐层…

代码块分类

局部代码块 public class Test {public static void main(String[] args) {{int a 10;}// 执行到此处时候,变量a已经从内存中消失了。 // System.out.println(a);} } 构造代码块 public class Test {private String name;private int age;{// 构造代码块System.out.…

【STM32 Blue Pill编程】-定时器与中断

定时器与中断 文章目录 定时器与中断1、硬件准备及接线2、GPIO配置3、代码实现STM32F103C8 配有四个定时器,分别为 TIM1、TIM2、TIM3 和 TIM4。 它们充当时钟并用于跟踪基于时间的事件。 我们将展示如何使用 HAL 库在 STM32Cube IDE 中对这些定时器进行编程。 本文将涉及如下内…

【网络】抓包工具的使用

抓包工具 文章目录 1.tcpdump抓包1.1安装 tcpdump1.2常见使用 2.wireshark抓包 1.tcpdump抓包 TCPDump 是一款强大的网络分析工具, 主要用于捕获和分析网络上传输的数据包。 1.1安装 tcpdump tcpdump 通常已经预装在大多数 Linux 发行版中。 如果没有安装&#…

常见java OOM异常分析排查思路分析

Java 虚拟机(JVM)发生 OutOfMemoryError(OOM)异常时,表示 JVM 在尝试分配内存时无法找到足够的内存资源。以下是几种常见的导致 OOM 异常的情况: 1. Java 堆空间不足 (Java Heap Space) 这种情况发生在 J…

【小球下落反弹】小球自由落下,每次落地后反跳回原高度的一半

一小球从100米高度自由落下&#xff0c;每次落地后反跳回原高度的一半&#xff1b;再落下&#xff0c;求它在第10次落地时&#xff0c;共经过多少米&#xff1f;第10次反弹多高&#xff1f; 使用C语言实现&#xff0c;具体代码&#xff1a; #include<stdio.h>int main(…

wo是如何克服编程学习中的挫折感的?

你是如何克服编程学习中的挫折感的&#xff1f; 编程学习之路上&#xff0c;挫折感就像一道道难以逾越的高墙&#xff0c;让许多人望而却步。然而&#xff0c;真正的编程高手都曾在这条路上跌倒过、迷茫过&#xff0c;却最终找到了突破的方法。你是如何在Bug的迷宫中找到出口的…

HarmonyOs透明弹窗(选择照片弹窗样式)

1.鸿蒙中需要实现一个如下图的弹窗 2.由上图中可以得出&#xff0c;只需要三个Text组件依次向下排列&#xff0c;弹窗背景设置透明即可&#xff0c;弹窗代码如下(仅展示弹窗样式)&#xff1a; /**** 自定义选择图片弹窗** 外部定义需要导出*/ CustomDialog //自定义弹窗 export…

Linux驱动学习之点灯(一)

学习不同的板子我们都是从点灯开始&#xff0c;linux驱动也不例外 驱动开发基础知识 何为驱动&#xff1f; 驱使硬件正常工作的代码就叫做驱动。 在一些mcu里&#xff1a; 无非就是直接操作寄存器&#xff0c;或者用库函数初始化外设&#xff0c;使外设正常工作如初始化iic&…

leetcode13. 罗马数字转整数,流程图带你遍历所有情况

leetcode13. 罗马数字转整数 示例 1: 输入: s “III” 输出: 3 示例 2: 输入: s “IV” 输出: 4 示例 3: 输入: s “IX” 输出: 9 示例 4: 输入: s “LVIII” 输出: 58 解释: L 50, V 5, III 3. 示例 5: 输入: s “MCMXCIV” 输出: 1994 解释: M 1000, CM 900, XC…

一个贼好用的开源导航网站项目——pintree!【送源码】

这两天发现了一个项目&#xff0c;它可以快速的将收藏夹里的网址导出&#xff0c;然后快速生成一个在线的网站。这个项目就是 pintree。 项目简介 Pintree 是一个开源项目&#xff0c;旨在将浏览器书签转换为导航网站。只需几个简单的步骤&#xff0c;就可以将书签转变为美观…