自动驾驶车辆的运动学模型建模

本文介绍了在低速大转弯情况下,通过简化车运动状态并基于几何关系建立的车辆模型,用于控制仿真的简化解析,强调了模型的局限性和控制变量之间的相互耦合。
摘要由CSDN通过智能技术生成

前言

  笔者最近学习MPC相关论文,发现好几个月前学的基础建模部分都快忘完了/(ㄒoㄒ)/~~,因此决定在博客上记录一下自己学习思考的过程,一是分享,二是为自己复习巩固用。
  本文基于Bilibili 忠厚老实的老王,主页:https://space.bilibili.com/287989852

思路

  通过简化车运动状态,基于几何关系建立微分方程,适用于低速、大转弯半径情况。

建模

  设定在惯性坐标系XOY下,有一简化的车辆模型,如下图所示。
车辆模型几何

其中:

  • C G CG CG表示质心
  • δ f \delta _{f} δf δ r \delta _{r} δr分别表示前后轮与车辆朝向夹角
  • a a a b b b分别表示车辆前后轮与质心的距离
  • φ φ φ表示车辆的横摆角(车辆朝向与惯性坐标系X轴夹角)
  • β β β表示质心侧滑角(车辆速度与朝向的夹角,比如车辆漂移时就会存在大侧滑角)
  • φ + β φ+\beta φ+β表示车辆的偏航角
  • V 、 V x 、 V y V、V_{x}、V_{y} VVxVy分别表示质心速度以及其在 x 、 y x、y xy方向上的分量
  • R R R表示车辆转弯半径,为前轮转角垂线与后轮转角垂线焦点与质心CG的连线

  对于一辆汽车,从驾驶员角度出发,我们能控的只有方向盘和油门刹车,简化为 V 与 δ ,即 u = [ V δ ] V与δ,即 u=\begin{bmatrix} V & \delta \end{bmatrix} Vδ,即u=[Vδ],同时设定状态量为车辆的横纵向分速度与偏航角速度,则 x = [ V x V y φ ˙ + β ˙ ] x=\begin{bmatrix} V_x & V_y &\dot{\varphi}+\dot{\beta} \end{bmatrix} x=[VxVyφ˙+β˙]
  由几何关系可得:
{ V x = V ∗ c o s ( β + φ ) V y = V ∗ s i n ( β + φ ) φ ˙ + β ˙ = V / R (1) \left\{\begin{matrix} V_x = V*cos(\beta+\varphi ) \\ V_y = V*sin(\beta+\varphi ) \\ \dot{\varphi}+\dot{\beta} = V/R \end{matrix}\right.\tag{1} Vx=Vcos(β+φ)Vy=Vsin(β+φ)φ˙+β˙=V/R(1)
  上式第三行可将车辆转弯理解为绕质心CG做圆周运动,根据线速度与角速度公式 ω = V / R \omega=V/R ω=V/R得到。至此我们就完成了建模的第一步,下面进行近似与变形。

几何近似

  根据简单的几何关系,标出图中三角形内各角度如下:
车辆模型集合
  根据正弦公式(三角形一条边比上对角=另一条边比上对角),我们可以得到:
a s i n ( δ f − β ) ) = R s i n ( π 2 − δ f ) ) (2) \frac{a}{sin(\delta _f-\beta))}=\frac{R}{sin(\frac{\pi}{2}-\delta _f))}\tag{2} sin(δfβ))a=sin(2πδf))R(2)
b s i n ( δ r + β ) ) = R s i n ( π 2 − δ r ) ) (3) \frac{b}{sin(\delta _r+\beta))}=\frac{R}{sin(\frac{\pi}{2}-\delta _r))}\tag{3} sin(δr+β))b=sin(2πδr))R(3)
  将上两式变形可得:
a R = s i n ( δ f − β ) s i n ( π 2 − δ f ) = s i n δ f c o s β − c o s δ f s i n β c o s δ f = t a n δ f c o s β − s i n β (4) \frac{a}{R}=\frac{sin(\delta_f-\beta)}{sin(\frac{\pi}{2}-\delta_f)}=\frac{sin\delta_fcos\beta-cos\delta_fsin\beta}{cos\delta_f}=tan\delta_fcos\beta-sin\beta\tag{4} Ra=sin(2πδf)sin(δfβ)=cosδfsinδfcosβcosδfsinβ=tanδfcosβsinβ(4)
b R = s i n ( δ r + β ) s i n ( π 2 − δ r ) = s i n δ r c o s β + c o s δ r s i n β c o s δ r = t a n δ r c o s β + s i n β (5) \frac{b}{R}=\frac{sin(\delta_r+\beta)}{sin(\frac{\pi}{2}-\delta_r)}=\frac{sin\delta_rcos\beta+cos\delta_rsin\beta}{cos\delta_r}=tan\delta_rcos\beta+sin\beta\tag{5} Rb=sin(2πδr)sin(δr+β)=cosδrsinδrcosβ+cosδrsinβ=tanδrcosβ+sinβ(5)
  因为 C G CG CG表示质心,其位置会随车辆运动过程动态变化,因此 a 、 b a、b ab并非定值,但其和 a + b = L a+b=L a+b=L始终为车辆轴距长度,因此我们将式(4)(5)相加得:
a + b R = t a n δ f c o s β − s i n β + t a n δ r c o s β + s i n β = L R (6) \frac{a+b}{R}=tan\delta_fcos\beta-sin\beta+tan\delta_rcos\beta+sin\beta=\frac{L}{R}\tag{6} Ra+b=tanδfcosβsinβ+tanδrcosβ+sinβ=RL(6)
  因此:
1 R = 1 L ( t a n δ f c o s β + t a n δ r c o s β ) (7) \frac{1}{R}=\frac{1}{L}(tan\delta_fcos\beta+tan\delta_rcos\beta)\tag{7} R1=L1(tanδfcosβ+tanδrcosβ)(7)
  前文我们提过,运动学模型一般仅考虑低速的、大转弯半径的车况,因此通常忽略车辆的侧滑问题,也就是 V y ≈ 0 V_y \approx 0 Vy0,因此 β = a r c t a n V y V x ≈ 0 (8) \beta = arctan \frac{V_y}{V_x} \approx 0\tag{8} β=arctanVxVy0(8)  于是偏航角 β + φ ≈ φ \beta+\varphi \approx \varphi β+φφ。同时我们一般认为车辆后轮无转向,即 δ r ≈ 0 \delta_r\approx0 δr0(低速),最终得到:
{ V x = V ⋅ c o s φ V y = V ⋅ s i n φ φ ˙ = V L ⋅ t a n δ f (9) \left\{\begin{matrix} V_x = V \cdot cos \varphi\\ V_y = V \cdot sin \varphi\\ \dot \varphi = \frac{V}{L} \cdot tan\delta_f \end{matrix}\right.\tag{9} Vx=VcosφVy=Vsinφφ˙=LVtanδf(9)  至此就完成了简化的车辆运动学模型建模。

总结

  对于一般的控制仿真,我们可以使用简化的运动学模型建立微分方程,但是其存在明显的缺点:
  1. 忽略了地面摩擦、轮胎形变、侧向力等众多影响因素,过于简化,模型保真度不足,无法应对复杂问题;
  2. 控制量 V V V δ δ δ相互耦合,不易计算;

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
车辆运动学模型是用来车辆运动的数学模型。在Matlab中,可以使用bicycleKinematics、differentialDriveKinematics或unicycleKinematics对象来创车辆运动学模型。其中,bicycleKinematics对象用于拟简化的类似汽车的车辆动力学,differentialDriveKinematics对象用于拟差速驱动的车辆动力学,unicycleKinematics对象用于拟单轮驱动的车辆动力学。这些对象可以通过调用相应的函数来获取当前状态的导数,例如使用bicycleKinematics对象时,可以使用函数返回一个包含三个元素的向量\[xDot yDot thetaDot\],分别表示车辆在x轴、y轴和角度方向上的速度。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *3* [自行车运动学模型Matlab代码实现](https://blog.csdn.net/stomach2008/article/details/122949276)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [用MATLAB来做智能小车的与仿真](https://blog.csdn.net/best_xiaolong/article/details/130591731)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值