翻译: 自动驾驶 一步一步解释基本的2D自行车模型
Posted AI架构师易筋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了翻译: 自动驾驶 一步一步解释基本的2D自行车模型相关的知识,希望对你有一定的参考价值。
1. 介绍
二维自行车模型可以表示为简化的汽车模型。这是一款经典车型,在正常驾驶条件下能够很好地捕捉车辆运动。
我们将开发的自行车模型称为前轮转向模型,因为可以相对于车辆的前进方向控制前轮方向。后轮方向无法控制。它只跟随前轮。我们的目标是计算状态[x, y, θ, δ]
,θ 是航向角,δ 是转向角。输入是[ν, φ]
,ν 是速度,φ 是转向率。
要分析自行车模型的运动学,我们必须在车辆上选择一个参考点(X,Y)
,该参考点可以放置在后轴中心、前轴中心或重心或 cg 处。 .
2. 模型分析
我们知道车辆或自行车是刚体。
2.1 如果所需的点在后轴的中心,我们可以绘制下图:
θ 为航向角,δ 为转向角。
接下来应用瞬时旋转中心 (ICR)。
为了得到状态变化 [x, y, θ, δ],我们首先需要计算状态变化率:[x_dot, y_dot, θ_dot, δ_dot]
。
x_dot = v * cos(θ)
y_dot = v * sin(θ)
θ_dot = ω
,
ω 为旋转速率。
ω = ν / R
,R 为半径。
我们首先需要知道如何计算 R。 如上图所示,L 是自行车长度,δ 是转向角,因此 R 可以计算为:
R = L / tan(δ)
所以我们可以到达:
θ_dot = ν / (L / tan(δ)) = ν * tan(δ) / L
δ_dot = φ
(φ 是输入:转向角的变化率)。
综上所述,状态变化率 [x_dot, y_dot, θ_dot, δ_dot]
为:
[v * cos(θ), v * sin(θ), ν * tan(δ)/L, φ]
2.2 如果所需点位于前轴的中心:
如上图所示,所需点在前轮的中心。我们可以到达:
R = L / sin(δ)
。
所以我们可以得到变化率[x_dot, y_dot, θ_dot, δ_dot]
如下:
x_dot = v * cos(δ + θ)
y_dot = v * sin(δ + θ)
θ_dot = v / R = v / (L/sin(δ)) = v * sin(δ)/L
δ_dot = φ
总结一下,状态变化率为:
[v * cos(δ + θ), v * sin(δ + θ), ν * sin(δ)/L, φ]
2.3 如果所需的点在重心或 cg,我们可以有下图:
β 是滑移角。根据图示,我们可以得出以下等式:
x_dot = v * cos(β + θ)
y_dot = v* sin(β + θ)
这个模型有点复杂。我们需要首先计算 R 以获得 θ_dot。如上图所示,我们可以先计算S。
S = L / tan(δ)
然后我们可以使用 S 和 β 角来计算 R。
R = S / cos(β) = L / (tan(δ) *cos(β))
正如我们现在知道的 R,我们可以得到 θ_dot 如下:
θ_dot = v / R = v *tan(δ) *cos(β) / L
此外,如果我们知道表示为 l_r 的后轮和 cg 之间的距离,我们还可以计算滑移角 β。
tan(β) = l_r / S = l_r /(L / tan(δ)) = l_r * tan(δ) / L
所以滑移角β = arctan(l_r * tan(δ) / L)
转向角变化率为:δ_dot = φ
总结一下,状态变化率为:
[v * cos(β + θ), v* sin(β + θ), v *tan(δ) *cos(β), φ]
,
其中β = arctan(l_r * tan(δ) / L)
3. 总结
回顾一下,我们的模型是已经分析过的自行车运动学模型。状态(输出)是[x, y, θ, δ]
。输入是 [ν, φ]
,ν 是速度,φ 是转向率。我们可以计算出[x, y, θ, δ]
的变化率,即x_dot, y_dot, θ_dot, δ_dot
。为了得到最终状态 [x, y, θ, δ]
,我们可以使用离散时间模型。
x_(t+1) = x_t + x_dot * Δt
y_(t+1) = y_t + y_dot * Δt
θ_(t+1) = θ_t + θ_dot * Δt
δ_(t+1) = δ_t + δ_dot * Δt
参考
http://www.shuffleai.blog/blog/Simple_Understanding_of_Kinematic_Bicycle_Model.html
以上是关于翻译: 自动驾驶 一步一步解释基本的2D自行车模型的主要内容,如果未能解决你的问题,请参考以下文章
长期豪赌人工智能,Alphabet是怎样一步一步偷偷改变世界的?
一步一步教你在 docker 容器下使用 mmdetection 训练自己的数据集
翻译: AWS DeepRacer一步一步详细步骤的自定义航点更快地运行 自定义waypoints