本文根据B站up:忠厚老实的老王 的视频《自动驾驶决策规划算法第一章第三节(上) 直角坐标与自然坐标转换》整理,连接:https://www.bilibili.com/video/BV1tQ4y1r7fh?spm_id_from=333.1007.top_right_bar_window_history.content.click
Planning-Frenet坐标和Cartesian坐标转换中
Planning-Frenet坐标和Cartesian坐标转换下
1 基础知识
1.1 曲线坐标系和直角坐标系的两点不同
1.1.1 曲线坐标系的基向量一般不是常向量
在直角坐标系中,基向量为 i ⃗ , j ⃗ \vec{i},\vec{j} i,j,则 d i ⃗ d x = 0 ⃗ \frac{d\vec{i}}{dx} = \vec{0} dxdi=0,在曲线坐标系中,基向量 τ ⃗ \vec{\tau} τ的模 ∣ τ ⃗ ∣ = 1 |\vec{\tau}| = 1 ∣τ∣=1,但是其方向会随着 s s s的变化而变化,即 d τ ⃗ d s ≠ 0 ⃗ \frac{d \vec{\tau}}{ds} \neq \vec{0} dsdτ=0。
1.1.2 点的曲线坐标变化与点的实际位移一般不一致
在直角坐标系中一个点移动距离等于其在相应坐标轴上移动的距离,然而在曲线坐标系中则不一定相等,例如在直角坐标系中的点 ( x , y ) (x,y) (x,y)移动到 ( x + Δ x , y ) (x+\Delta x, y) (x+Δx,y),则在 x x x上投影也移动了 Δ x \Delta x Δx的距离。曲线坐标系中的点 ( s , l ) (s,l) (s,l)移动到点 ( s + Δ s h , l ) (s+\Delta s_h, l) (s+Δsh,l),然而其投影在曲线上移动了 Δ s r \Delta s_r Δsr的距离, Δ s h \Delta s_h Δsh和 Δ s r \Delta s_r Δsr一般不相等。 因此在曲线坐标系中的弧微分有两个:一是点实际运动曲线的弧微分 d d s h \frac{d}{d{s_h}} dshd,一是点在参考曲线(坐标系)上的弧微分 d d s r \frac{d}{d{s_r}} dsrd。
在自动驾驶系统中,当车辆沿着参考线行驶时,点在车辆行驶轨迹上 s h s_h sh对时间 t t t的微分是车速,即 d s h d t = ∣ v ⃗ ∣ \frac{d {s_h}}{dt} = |\vec{v}| dtdsh=∣v∣,此点在参考线上投影的微分却于此不相等,即 d s r d t = s ˙ \frac{d {s_r}}{dt} = \dot{s} dtdsr=s˙。
1.2 位矢的导数
轨迹上一个点的位置矢量为
r
⃗
\vec{r}
r,方向为
τ
⃗
\vec{\tau}
τ,沿轨迹移动了
d
s
ds
ds,位置矢量移动了
Δ
r
⃗
\Delta \vec{r}
Δr,则
r
˙
⃗
=
d
r
⃗
d
t
=
d
r
⃗
d
s
×
d
s
d
t
\vec{\dot{r}} = \frac{d \vec{r}}{dt} = \frac{d \vec{r}}{ds} \times \frac{ds}{dt}
r˙=dtdr=dsdr×dtds,当
d
t
→
0
dt \rightarrow 0
dt→0时,
∣
Δ
r
⃗
∣
d
s
→
1
\frac{|\Delta \vec{r}|}{ds} \rightarrow 1
ds∣Δr∣→1,方向趋近于轨迹在位置矢量
r
⃗
\vec{r}
r处的切线方向。因此:
r
˙
⃗
=
1
×
τ
⃗
×
d
s
d
t
=
∣
v
⃗
∣
τ
⃗
=
v
⃗
(1-1)
\vec{\dot{r}} = 1 \times \vec{\tau} \times \frac{ds}{dt} = |\vec{v}| \vec{\tau} = \vec{v} \tag{1-1}
r˙=1×τ×dtds=∣v∣τ=v(1-1)
1.3 Frenet公式
向量
τ
⃗
\vec{\tau}
τ是切线方向,向量
n
⃗
\vec{n}
n是法线方向,有:
{
d
τ
⃗
d
s
=
κ
n
⃗
d
n
⃗
d
s
=
−
κ
τ
⃗
\begin{cases} \frac{d \vec{\tau}}{ds} = \kappa \vec{n} \\ \frac{d \vec{n}}{ds} = - \kappa \vec{\tau} \end{cases}
{dsdτ=κndsdn=−κτ
对
d
τ
⃗
d
s
=
κ
n
⃗
\frac{d \vec{\tau}}{ds} = \kappa \vec{n}
dsdτ=κn的证明如下:
∣
d
τ
⃗
∣
=
2
×
1
×
s
i
n
(
d
θ
2
)
|d \vec{\tau}| = 2 \times 1 \times sin(\frac{d \theta}{2})
∣dτ∣=2×1×sin(2dθ),当
d
s
→
0
ds \rightarrow 0
ds→0时,
d
τ
⃗
d \vec{\tau}
dτ的方向趋近于
τ
⃗
\vec{\tau}
τ垂直方向,即
n
⃗
\vec{n}
n的方向。因此:
d
τ
⃗
d
s
=
∣
d
τ
⃗
∣
d
s
×
n
⃗
=
2
s
i
n
(
d
θ
2
)
d
s
×
n
⃗
=
d
θ
d
s
×
n
⃗
=
κ
×
n
⃗
\frac{d \vec{\tau}}{ds} = \frac{|d \vec{\tau}|}{ds} \times \vec{n} = \frac{2 sin(\frac{d \theta}{2})}{ds} \times \vec{n}= \frac{d \theta}{ds} \times \vec{n} = \kappa \times \vec{n}
dsdτ=ds∣dτ∣×n=ds2sin(2dθ)×n=dsdθ×n=κ×n
1.3 ADC在轨迹和道路几何上向量 τ ⃗ \vec{\tau} τ和 n ⃗ \vec{n} n的导数
在质点轨迹上:
{
τ
h
˙
⃗
=
d
τ
h
⃗
d
t
=
d
τ
h
⃗
d
s
h
×
d
s
h
d
t
=
κ
h
∣
v
h
⃗
∣
n
h
⃗
n
h
˙
⃗
=
d
n
h
⃗
d
s
=
d
n
h
⃗
d
s
h
×
d
s
h
d
t
=
−
κ
h
∣
v
h
⃗
∣
τ
h
⃗
(1-2)
\begin{cases} \vec{\dot{\tau_h}} = \frac{d \vec{\tau _h}}{dt} = \frac{d \vec{\tau _h}}{ds_h} \times \frac{d s_h}{dt} = \kappa_h |\vec{v_h}| \vec{n_h} \\ \vec{\dot{n_h}} = \frac{d \vec{n _h}}{ds} = \frac{d \vec{n _h}}{ds_h} \times \frac{d s_h}{dt} = - \kappa_h |\vec{v_h}| \vec{\tau_h} \tag{1-2} \end{cases}
{τh˙=dtdτh=dshdτh×dtdsh=κh∣vh∣nhnh˙=dsdnh=dshdnh×dtdsh=−κh∣vh∣τh(1-2)
在参考线轨迹上:
{
τ
r
˙
⃗
=
d
τ
r
⃗
d
t
=
d
τ
r
⃗
d
s
r
×
d
s
r
d
t
=
κ
r
s
r
˙
n
r
⃗
n
r
˙
⃗
=
d
n
r
⃗
d
t
=
d
n
r
⃗
d
s
r
×
d
s
r
d
t
=
−
κ
r
s
r
˙
τ
r
⃗
(1-3)
\begin{cases} \vec{\dot{\tau_r}} = \frac{d \vec{\tau _r}}{dt} = \frac{d \vec{\tau _r}}{ds_r} \times \frac{d s_r}{dt} = \kappa_r \dot{s_r} \vec{n_r} \\ \vec{\dot{n_r}} = \frac{d \vec{n _r}}{dt} = \frac{d \vec{n _r}}{ds_r} \times \frac{d s_r}{dt} = - \kappa_r \dot{s_r} \vec{\tau_r} \tag{1-3} \end{cases}
{τr˙=dtdτr=dsrdτr×dtdsr=κrsr˙nrnr˙=dtdnr=dsrdnr×dtdsr=−κrsr˙τr(1-3)
已知
r
⃗
,
τ
⃗
,
n
⃗
,
κ
\vec{r},\vec{\tau},\vec{n},\kappa
r,τ,n,κ,则
v
⃗
=
r
˙
⃗
=
∣
v
⃗
∣
τ
⃗
\vec{v} = \vec{\dot{r}} = |\vec{v}| \vec{\tau}
v=r˙=∣v∣τ,
a
⃗
=
d
v
⃗
d
t
=
d
∣
v
⃗
∣
τ
⃗
d
t
=
d
∣
v
⃗
∣
d
t
τ
⃗
+
∣
v
⃗
∣
d
τ
⃗
d
t
=
∣
v
˙
⃗
∣
τ
⃗
+
∣
v
⃗
∣
τ
˙
⃗
=
∣
v
˙
⃗
∣
τ
⃗
+
∣
v
⃗
∣
2
κ
n
⃗
(1-4)
\vec{a} = \frac{d \vec{v}}{dt} = \frac{d |\vec{v}| \vec{\tau}}{dt} = \frac{d |\vec{v}|}{dt} \vec{\tau} + |\vec{v}|\frac{d \vec{\tau}}{dt} = |\vec{\dot{v}}| \vec{\tau} + |\vec{v}| \vec{\dot{\tau}} = |\vec{\dot{v}}| \vec{\tau} + |\vec{v}|^2 \kappa \vec{n} \tag{1-4}
a=dtdv=dtd∣v∣τ=dtd∣v∣τ+∣v∣dtdτ=∣v˙∣τ+∣v∣τ˙=∣v˙∣τ+∣v∣2κn(1-4)