这里又整了一遍车辆运动学,之前在Autoware那会,已经在控制那一部分整过一次了,就当复习了吧。

前言

车辆的控制目前用的最广的有三种方式:

  1. PID
  2. LQR
  3. MPC

其中,PID是一种对模型无要求的控制算法,就算丝毫不了解其控制模型,都可以凭经验将其参数调试出来,并且保证其可靠性与精度。
另外两种控制算法,要想实现对车辆的控制就必须了解,车辆的运动学或者动力学模型,在控制专栏下,也有描述过使用的相关模型,但是不同的人使用的控制方式不一样,建立的模型也不一致,这里主要是针对Apollo中的相关模型。
Apollo中,计算控制命令需要车辆的定位信息、底盘信息以及规划信息等,具体的可以直接去看代码,这里就不赘述了。

单车模型

建立模型时,应尽可能使模型简单易用,且能真实反映车辆特性,现在使用较多的车辆运动学模型多基于单车模型,使用此模型要做出如下假设:

  1. 不考虑车辆在Z轴方向的运动,只考虑XY水平面的运动,如图1所示;
  2. 左右侧车轮转角一致,这样可将左右侧轮胎合并为一个轮胎,以便于搭建单车模型,如图2所示;
  3. 车辆行驶速度变化缓慢,忽略前后轴载荷的转移;
  4. 车身及悬架系统是刚性的。


图 1 车 辆 模 型 图 1 车辆模型 图1车辆模型

单车模型(Bicycle Model)将左/右前轮合并为一个点,位于A点;将左/右后轮合并为一个点,位于B点;点C为车辆质心点。

图 2 单 车 模 型 图 2 单车模型 图2单车模型

其中, O O O为OA、OB的交点,是车辆的瞬时滚动中心,线段OA、OB分别垂直于两个滚动轮的方向; β \beta β为滑移角(Tire Slip Angle),指车辆速度方向和车身朝向两者间所成的角度, ψ \psi ψ为航向角(Heading Angle),指车身与X轴的夹角。

符号 定义 符号 定义
A 前轮中心 B 后轮中心
C 车辆质心 O 转向圆心
V 质心车速 R 转向半径
ℓ r \ell_{r} ℓr​ 后悬长度 ℓ f \ell_{f} ℓf​ 前悬长度
β \beta β 滑移角 ψ \psi ψ 航向角
δ r \delta_{r} δr​ 后轮偏角 δ f \delta_{f} δf​ 前轮偏角

当车辆为前轮驱动时,后轮偏角 δ r \delta_{r} δr​恒为0。

车辆运动学模型

运动学是从几何学的角度研究物体的运动规律,包括物体在空间的位置、速度等随时间而产生的变化,因此,车辆运动学模型应该能反映车辆位置、速度、加速度等与时间的关系。在车辆轨迹规划过程中应用运动学模型,可以使规划出的轨迹更切合实际,满足行驶过程中的运动学几何约束,且基于运动学模型设计出的控制器也能具有更可靠的控制性能。

基于单车模型,如图2所示,搭建车辆运动学模型。由正弦法则,有:
sin ⁡ ( δ f − β ) ℓ f = sin ⁡ ( π / 2 − δ f ) R (1) \frac{\sin(\delta_{f}-\beta)}{\ell_{f}}=\frac{\sin(\pi /2-\delta_{f})}{R} \tag{1} ℓf​sin(δf​−β)​=Rsin(π/2−δf​)​(1)
sin ⁡ ( β − δ r ) ℓ r = sin ⁡ ( π / 2 + δ r ) R (2) \frac{\sin(\beta-\delta_{r})}{\ell_{r}}=\frac{\sin(\pi /2+\delta_{r})}{R} \tag{2} ℓr​sin(β−δr​)​=Rsin(π/2+δr​)​(2)
将式(1),(2)展开,有
sin ⁡ δ f cos ⁡ β − sin ⁡ β cos ⁡ δ f ℓ f = cos ⁡ δ f R (3) \frac{\sin\delta_{f}\cos\beta-\sin\beta\cos\delta_{f}}{\ell_{f}}=\frac{\cos\delta_{f}}{R} \tag{3} ℓf​sinδf​cosβ−sinβcosδf​​=Rcosδf​​(3)
cos ⁡ δ r sin ⁡ β − cos ⁡ β sin ⁡ δ r ℓ r = cos ⁡ δ r R (4) \frac{\cos\delta_{r}\sin\beta-\cos\beta\sin\delta_{r}}{\ell_{r}}=\frac{\cos\delta_{r}}{R} \tag{4} ℓr​cosδr​sinβ−cosβsinδr​​=Rcosδr​​(4)
结合式(3),(4)有
( tan ⁡ δ f − tan ⁡ δ r ) cos ⁡ β = ℓ f + ℓ r R (5) (\tan\delta_{f}-\tan\delta_{r})\cos\beta=\frac{\ell_{f}+\ell_{r}}{R} \tag{5} (tanδf​−tanδr​)cosβ=Rℓf​+ℓr​​(5)
低速环境下,车辆行驶路径的转弯半径变化缓慢,此时可以假设车辆的方向变化率等于车辆的角速度。则车辆的横摆角速度为
ψ ˙ = V R (6) \dot{\psi}=\frac{V}{R} \tag{6} ψ˙​=RV​(6)
联立式(5),(6)有
ψ ˙ = V cos ⁡ β ℓ f + ℓ r ( tan ⁡ δ f − tan ⁡ δ r ) (7) \dot{\psi}=\frac{V\cos\beta}{\ell_{f}+\ell_{r}}(\tan\delta_f-\tan\delta_r) \tag{7} ψ˙​=ℓf​+ℓr​Vcosβ​(tanδf​−tanδr​)(7)
则在惯性坐标系下,有车辆运动学模型:
{ X ˙ = V cos ⁡ ( ψ + β ) Y ˙ = V sin ⁡ ( ψ + β ) ψ ˙ = V cos ⁡ β ℓ f + ℓ r ( tan ⁡ δ f − tan ⁡ δ r ) (8) \begin{cases} \dot{X}=V\cos(\psi+\beta) \\ \dot{Y}=V\sin(\psi+\beta) \\ \dot\psi=\frac{V\cos\beta}{\ell_{f}+\ell_{r}}(\tan\delta_f-\tan\delta_r) \end{cases} \tag{8} ⎩⎪⎨⎪⎧​X˙=Vcos(ψ+β)Y˙=Vsin(ψ+β)ψ˙​=ℓf​+ℓr​Vcosβ​(tanδf​−tanδr​)​(8)
滑移角 β \beta β可以由公式(3),(4)求得:
β = tan ⁡ − 1 ( ℓ f tan ⁡ δ r + ℓ r tan ⁡ δ f ℓ f + ℓ r ) (9) \beta=\tan^{-1}(\frac{\ell_f\tan\delta_r+\ell_r\tan\delta_f}{\ell_f+\ell_r}) \tag{9} β=tan−1(ℓf​+ℓr​ℓf​tanδr​+ℓr​tanδf​​)(9)
可以看出模型的输入参数有三个 V V V, δ f \delta_f δf​, δ r \delta_r δr​。
一般的车辆只有前轮转角 δ f \delta_f δf​,后轮转角 δ r = 0 \delta_r=0 δr​=0,因此, β \beta β也近似为0,这样就与之前的文章中另一种推导方式结果相同。

阿克曼模型

在单车模型中,将转向时左/右前轮偏角假设为同一角度,虽然通常两个角度大致相等,但实际并不是,通常情况下,内侧轮胎转角更大。
如下图所示, δ o \delta_o δo​​和 δ i \delta_i δi​​分别为外侧前轮和内侧前轮偏角,当车辆右转时,右前轮胎为内侧轮胎,其转角 δ i \delta_i δi​​​较左前轮胎转角 δ o \delta_o δo​更大。 ℓ w \ell_w ℓw​​为轮距, L L L为轴距,后轮两轮胎转角始终为0°。
当以后轴中心为参考点时,转向半径 R R R为下图中红线。

当滑移角 β \beta β很小,后轮偏角为0时(其实前轮转向车辆大部分时候都这样)公式(7)可以转换为:
ψ ˙ V ≈ 1 R = δ L (10) \frac{\dot\psi}{V}\approx\frac{1}{R}=\frac{\delta}{L} \tag{10} Vψ˙​​≈R1​=Lδ​(10)
由于内外侧轮胎的转向半径不同,因此有:
δ o = L R + ℓ w / 2 (11) \delta_{o}=\frac{L}{R+\ell_{w}/2} \tag{11} δo​=R+ℓw​/2L​(11)
δ i = L R − ℓ w / 2 (12) \delta_{i}=\frac{L}{R-\ell_{w}/2} \tag{12} δi​=R−ℓw​/2L​(12)
则前轮平均转角
δ = δ o + δ i 2 ≈ L R (13) \delta=\frac{\delta_{o}+\delta_{i}}{2}\approx\frac{L}{R} \tag{13} δ=2δo​+δi​​≈RL​(13)
内外转角之差
Δ δ = δ i − δ o = L R 2 ℓ w = δ 2 ℓ w L (14) \Delta\delta=\delta_{i}-\delta_{o}=\frac{L}{R^2}\ell_{w}=\delta^2\frac{\ell_w}{L} \tag{14} Δδ=δi​−δo​=R2L​ℓw​=δ2Lℓw​​(14)
可以看出,两个前轮的转向角之差 Δ δ \Delta\delta Δδ与平均转向角 δ \delta δ的平方成正比。

依据阿克曼转向几何设计的车辆,沿着弯道转弯时,利用四连杆的相等曲柄使内侧轮的转向角比外侧轮大大约2~4度,使四个轮子路径的圆心大致上交会于后轴的延长线上瞬时转向中心,让车辆可以顺畅的转弯。

图 4 梯 形 拉 杆 装 置 差 动 转 向 机 构 图 4 梯形拉杆装置差动转向机构 图4梯形拉杆装置差动转向机构

Apollo学习笔记(7)车辆运动学模型相关推荐

  1. Apollo代码学习(二)—车辆运动学模型

    Apollo代码学习-车辆运动学模型 前言 车辆模型 单车模型(Bicycle Model) 车辆运动学模型 阿克曼转向几何(Ackerman turning geometry) 小结 Apollo( ...

  2. Apollo学习笔记

    Apollo学习笔记 Apollo课程 智能驾驶入门课程 无人驾驶概览 1.软件层分为三层: 实时操作系统(RTOS):确保在给定时间内完成特定任务,实时时确保系统稳定性.驾驶安全性的重要要求.通过在 ...

  3. 《无人驾驶车辆模型预测控制》之车辆运动学模型

    车辆运动学模型是根据车辆转向的几何学的角度关系来描述车辆的运动的.主要关注车辆的轴长.转弯半径.和前轮转角.车辆运动学只需要用较少的车辆参数就可以基本描述车辆的运动情况,但是一般只适合在低速下有一定的 ...

  4. Apollo学习笔记3-定位模块配置

    Apollo学习笔记3-定位模块配置 环境介绍 导航设备参数配置 导航设备配置 (1)杆臂配置 (2)GNSS 航向配置 (3)导航模式配置 (4) USB 接口输出设置 (5)网口配置 (6) PP ...

  5. WinSock学习笔记3:Select模型

    WinSock学习笔记3:Select模型 unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, G ...

  6. CUDA学习笔记之 CUDA存储器模型

    CUDA学习笔记之 CUDA存储器模型 标签: cuda存储bindingcache编程api 2010-12-14 01:33 1223人阅读 评论(0) 收藏 举报 分类: CUDA(26) GP ...

  7. Python数据挖掘学习笔记】九.回归模型LinearRegression简单分析氧化物数据

    #2018-03-23 16:26:20 March Friday the 12 week, the 082 day SZ SSMR [Python数据挖掘学习笔记]九.回归模型LinearRegre ...

  8. 2020-4-20 深度学习笔记20 - 深度生成模型 3 (实值数据上的玻尔兹曼机)

    第二十章 深度生成模型 Deep Generative Models 中文 英文 2020-4-17 深度学习笔记20 - 深度生成模型 1 (玻尔兹曼机,受限玻尔兹曼机RBM) 2020-4-18 ...

  9. 2020-4-22 深度学习笔记20 - 深度生成模型 5 (有向生成网络--sigmoid信念网络/可微生成器网络/变分自编码器VAE/生产对抗网络GAN/生成矩匹配网络)

    第二十章 深度生成模型 Deep Generative Models 中文 英文 2020-4-17 深度学习笔记20 - 深度生成模型 1 (玻尔兹曼机,受限玻尔兹曼机RBM) 2020-4-18 ...

最新文章

  1. python【力扣LeetCode算法题库】1162- 地图分析(BFS)
  2. windows查看端口占用的进程和杀死进程
  3. etal斜体吗 参考文献_参考文献类有关论文范例,与日语文提纲2016年,日语文提纲科目相关本科毕业论文范文...
  4. 复杂的c语言,c语言复杂数据类型
  5. Linux Shell脚本专栏_批量检测网站是否异常脚本_08
  6. 09-03 Java 抽象类
  7. JS你可能还不知道的一些知识点(一)
  8. 一文带你认识MindSpore新一代分子模拟库SPONGE
  9. 怎么修改地磅服务器的修改记录,地磅无人值守系统软件怎么修改数据
  10. Hive sql语句必练50题
  11. access阿里云 mysql_如何使用access数据库
  12. win7触摸板怎么关闭_笔记本电脑触摸板快速关闭,避免误碰影响操作
  13. linux下打字软件,桌面应用|与 Linux 一起学习:学习打字
  14. Flutter TextField输入文字时,若页面刷新,会导致光标位置发生变化。
  15. 微信小程序生成二维码工具类附带完整示例和源码
  16. java+ssm驾校管理教练用户驾校系统@ssm
  17. 怎么使用大疆无人机建模?
  18. 漂亮的在线Css字体
  19. CDLinux制作U盘启动器,并设置电脑以U盘启动(一次失败经历的学习笔记)
  20. 结对编程之单元测试 201421123108 王坤彬

热门文章

  1. 使用计算机处理问题的步骤,1.1使用计算机解决问题的一般过程 课件.ppt
  2. 【Android】SD卡工具类
  3. 一步步搞定Android行情K线蜡烛图(带十字光标)
  4. 谷歌SEO优化技巧方法
  5. hashcode是什么意思?
  6. 深度Deep系统的使用问题记录
  7. 神经网络、机器学习和人工智能的基本介绍
  8. 2018 年 CSDN 排名第一 [不出意外应该是永远的第一了]
  9. BP神经网络预测模型输入数据表是一个表还是可以多个表
  10. 猫狗坦克内测了,大家多支持