本文为学习B站视频《自动驾驶决策规划算法第一章第三节(上) 直角坐标与自然坐标转换》的学习笔记。
1 预备知识
(1)如下图黑色曲线为车辆轨迹点,则有:
r
˙
=
d
r
d
s
⋅
d
s
d
t
=
τ
⋅
v
=
v
\begin{equation} \boldsymbol{\dot{r}}=\frac{d\boldsymbol{r}}{ds}\cdot\frac{ds}{dt}=\boldsymbol{\tau}\cdot{v}=\boldsymbol{v} \end{equation}
r˙=dsdr⋅dtds=τ⋅v=v
(2)如下图黑色曲线为车辆轨迹点,绿色曲线为参考线,则有:
r
c
˙
=
v
\begin{equation} \boldsymbol{\dot{r_c}}=\boldsymbol{v} \end{equation}
rc˙=v
r
r
˙
=
d
r
r
d
s
r
⋅
d
s
r
d
t
=
s
r
˙
⋅
τ
r
\begin{equation} \boldsymbol{\dot{r_r}}=\frac{d\boldsymbol{r_r}}{ds_r}\cdot{\frac{ds_r}{dt}}=\dot{s_r}\cdot{\boldsymbol{\tau_r}} \end{equation}
rr˙=dsrdrr⋅dtdsr=sr˙⋅τr
其中,下标
c
c
c表示车辆轨迹上的点,下标
r
r
r表示在参考线上的投影点。
注意,这里
s
r
s_r
sr对应的是参考线,而不是车辆的实际轨迹线,注意区分,其中车辆轨迹点与在参考线上的投影点的连线垂直与投影点的切线。
(3)frenet公式
由于
τ
\boldsymbol{\tau}
τ是单位向量,当
θ
\theta
θ趋于0时,
d
τ
d\boldsymbol{\tau}
dτ的方向垂直于
τ
\boldsymbol{\tau}
τ,即为
n
\boldsymbol{n}
n,且
∣
d
τ
∣
=
2
s
i
n
θ
2
=
θ
\begin{equation} |d\boldsymbol{\tau}|=2sin{\frac{\theta}{2}}=\theta \end{equation}
∣dτ∣=2sin2θ=θ
因此
d
τ
d
s
=
θ
d
s
n
=
k
n
\begin{equation} \frac{d\boldsymbol{\tau}}{ds}=\frac{\theta}{ds}\boldsymbol{n}=k\boldsymbol{n} \end{equation}
dsdτ=dsθn=kn
其中
k
k
k是曲率。
由于
n
\boldsymbol{n}
n是单位向量,当
α
\alpha
α趋于0时,
d
n
d\boldsymbol{n}
dn的方向垂直于
n
\boldsymbol{n}
n,方向为
τ
\boldsymbol{\tau}
τ的反方向,且
∣
d
n
∣
=
2
s
i
n
α
2
=
α
\begin{equation} |d\boldsymbol{n}|=2sin{\frac{\alpha}{2}}=\alpha \end{equation}
∣dn∣=2sin2α=α
因此
d
n
d
s
=
−
α
d
s
τ
=
−
k
τ
\begin{equation}\frac{d\boldsymbol{n}}{ds}=-\frac{\alpha}{ds}\boldsymbol{\tau}=-k\boldsymbol{\tau}\end{equation}
dsdn=−dsατ=−kτ
同样,可得如下公式:
τ
c
˙
=
d
τ
c
d
t
=
d
τ
c
d
s
c
⋅
d
s
c
d
t
=
k
c
n
c
v
c
\begin{equation}\dot{\boldsymbol{\tau_c}}=\frac{d\boldsymbol{\tau_c}}{dt}=\frac{d\boldsymbol{\tau_c}}{ds_c}\cdot{\frac{ds_c}{dt}}=k_c\boldsymbol{n_c}v_c\end{equation}
τc˙=dtdτc=dscdτc⋅dtdsc=kcncvc
n
c
˙
=
d
n
c
d
t
=
d
n
c
d
s
c
⋅
d
s
c
d
t
=
−
k
c
τ
c
v
c
\begin{equation}\dot{\boldsymbol{n_c}}=\frac{d\boldsymbol{n_c}}{dt}=\frac{d\boldsymbol{n_c}}{ds_c}\cdot{\frac{ds_c}{dt}}=-k_c\boldsymbol{\tau_c}v_c\end{equation}
nc˙=dtdnc=dscdnc⋅dtdsc=−kcτcvc
τ
r
˙
=
d
τ
r
d
t
=
d
τ
r
d
s
r
⋅
d
s
r
d
t
=
k
r
n
r
s
r
˙
\begin{equation}\dot{\boldsymbol{\tau_r}}=\frac{d\boldsymbol{\tau_r}}{dt}=\frac{d\boldsymbol{\tau_r}}{ds_r}\cdot{\frac{ds_r}{dt}}=k_r\boldsymbol{n_r}\dot{s_r}\end{equation}
τr˙=dtdτr=dsrdτr⋅dtdsr=krnrsr˙
n
r
˙
=
d
n
r
d
t
=
d
n
r
d
s
r
⋅
d
s
r
d
t
=
−
k
r
τ
r
s
r
˙
\begin{equation} \dot{\boldsymbol{n_r}}=\frac{d\boldsymbol{n_r}}{dt}=\frac{d\boldsymbol{n_r}}{ds_r}\cdot{\frac{ds_r}{dt}}=-k_r\boldsymbol{\tau_r}\dot{s_r} \end{equation}
nr˙=dtdnr=dsrdnr⋅dtdsr=−krτrsr˙
2 坐标转换
2.1 自车状态
笛卡尔坐标系下车辆状态表示为
[
x
c
,
v
c
,
a
c
,
θ
c
,
k
c
]
[\boldsymbol{x_c}, \boldsymbol{v_c}, \boldsymbol{a_c}, \theta_c, k_c]
[xc,vc,ac,θc,kc],分别表示质心坐标,质心速度,质心加速度,质心航向角,质心实际轨迹的曲率。
在Frenet坐标系下,自车在任意时刻
t
t
t的状态(以参考线为基准)可以表示为
[
s
,
s
˙
,
s
¨
,
l
,
l
˙
,
l
¨
,
l
′
,
l
′
′
]
[s, \dot{s}, \ddot{s}, l, \dot{l}, \ddot{l}, l', l'']
[s,s˙,s¨,l,l˙,l¨,l′,l′′],其中:
s
s
s: 坐标系下纵标下投影点的值(沿道路的距离);
s
˙
=
d
s
d
t
\dot{s}=\frac{ds}{dt}
s˙=dtds: Frenet坐标系下纵坐标对时间的导数,即Frenet坐标系下纵坐标上的速度;
s
¨
=
d
s
˙
d
t
\ddot{s}=\frac{d\dot{s}}{dt}
s¨=dtds˙: Frenet坐标下纵坐标上的加速度;
l
l
l: Frenet纵坐标下横向坐标值(即与参考线的距离);
l
˙
=
d
l
d
t
\dot{l}=\frac{dl}{dt}
l˙=dtdl: Frenet坐标系下横向速度;
l
¨
=
d
l
˙
d
t
\ddot{l}=\frac{d\dot{l}}{dt}
l¨=dtdl˙: Frenet坐标系下横向加速度;
l
′
=
d
l
d
s
l'=\frac{dl}{ds}
l′=dsdl: Frenet坐标下横向坐标对纵向坐标的一阶导数;
l
′
′
l''
l′′: Frenet坐标系下横坐标对纵坐标的二阶导数;
自车在任意时刻
t
t
t,车辆质心在实际轨迹某轨迹点处的单位正交向量定义为
τ
c
\boldsymbol{\tau_c}
τc和
n
c
\boldsymbol{n_c}
nc,在参考线上的对应的投影点处的单位正交向量定义为
τ
r
\boldsymbol{\tau_r}
τr和
n
r
\boldsymbol{n_r}
nr和, 用相应的航向角可以表示为:
τ
c
=
[
c
o
s
θ
c
,
s
i
n
θ
c
]
T
,
n
c
=
[
−
s
i
n
θ
c
,
c
o
s
θ
c
]
T
\begin{equation} \boldsymbol{\tau_c}=[cos\theta_c, sin\theta_c]^T , \boldsymbol{n_c}=[-sin\theta_c, cos\theta_c]^T \end{equation}
τc=[cosθc,sinθc]T,nc=[−sinθc,cosθc]T
τ
r
=
[
c
o
s
θ
r
,
s
i
n
θ
r
]
T
,
n
r
=
[
−
s
i
n
θ
r
,
c
o
s
θ
r
]
T
\begin{equation}\boldsymbol{\tau_r}=[cos\theta_r, sin\theta_r]^T, \boldsymbol{n_r}=[-sin\theta_r, cos\theta_r]^T \end{equation}
τr=[cosθr,sinθr]T,nr=[−sinθr,cosθr]T
2.1 笛卡尔坐标系向Frenet坐标系转换
2.1.1 计算投影点
Frenet坐标系的参考线都是由规划模块得到的一系列离散点,假设车辆当前的质心位置矢量为
(
x
c
,
y
c
)
(x_c, y_c)
(xc,yc),找到参考线上距离车辆质心最近的离散点
(
x
m
,
y
m
)
(x_m, y_m)
(xm,ym)作为匹配点,匹配点至车辆质心的向量
l
m
c
\boldsymbol{l_{mc}}
lmc,以及匹配点的单位切向量
τ
m
\boldsymbol{\tau_{m}}
τm
l
m
c
=
(
x
c
−
x
m
,
y
c
−
y
m
)
,
τ
m
=
(
c
o
s
θ
m
,
s
i
n
θ
m
)
\begin{equation}\boldsymbol{l_{mc}}=(x_c-x_m, y_c-y_m) , \boldsymbol{\tau_{m}}=(cos\theta_m, sin\theta_m) \end{equation}
lmc=(xc−xm,yc−ym),τm=(cosθm,sinθm)
投影点在笛卡尔坐标系下的向量值
r
r
\boldsymbol{r_r}
rr近似等于匹配点的向量值
r
m
\boldsymbol{r_{m}}
rm加上向量
l
m
c
\boldsymbol{l_{mc}}
lmc在
τ
m
\boldsymbol{\tau_{m}}
τm方向上的投影分量,得:
r
r
=
r
m
+
(
l
m
c
⋅
τ
m
)
⋅
τ
m
\begin{equation} \boldsymbol{r_r}=\boldsymbol{r_m}+(\boldsymbol{l_{mc}}\cdot\boldsymbol{\tau_m})\cdot\boldsymbol{\tau_m} \end{equation}
rr=rm+(lmc⋅τm)⋅τm
参考线是直线时是精确解,参考线是曲线时这是一种近似解,参考点越密,曲率越小越精确,如下图所示,其中绿色点为离散的参考点
m
m
m,紫色点为求得的投影点:
投影点处的曲率可近似等于匹配点处的曲率:
k
r
=
k
m
\begin{equation} k_r=k_m \end{equation}
kr=km
这样,从匹配点到投影点的曲线可认为是圆弧,弧长近似为
l
m
c
⋅
τ
m
\boldsymbol{l_{mc}\cdot\tau_m}
lmc⋅τm,则有:
θ
r
=
θ
m
+
k
m
(
l
m
c
⋅
τ
m
)
\begin{equation} \theta_r=\theta_m+k_m(\boldsymbol{l_{mc}\cdot\tau_m}) \end{equation}
θr=θm+km(lmc⋅τm)
2.1.2 坐标转换
参考点的起始点是
(
x
0
,
y
0
)
(x_0,y_0)
(x0,y0),往后依次编号,用两点间的直线距离近似取代曲线距离,则有:
s
=
(
x
1
−
x
0
)
2
+
(
y
1
−
y
0
)
2
+
(
x
2
−
x
1
)
2
+
(
y
2
−
y
1
)
2
+
⋯
+
(
x
r
−
x
m
)
2
+
(
y
r
−
y
m
)
2
\begin{equation}s=\sqrt{(x_1-x_0)^2+(y_1-y_0)^2}+\sqrt{(x_2-x_1)^2+(y_2-y_1)^2}+\dots+\sqrt{(x_r-x_m)^2+(y_r-y_m)^2}\end{equation}
s=(x1−x0)2+(y1−y0)2+(x2−x1)2+(y2−y1)2+⋯+(xr−xm)2+(yr−ym)2
这里使用直线近似曲线具有较好的鲁棒性,也可以使用圆弧
(
θ
/
k
)
(\theta/{k})
(θ/k)近似曲线,但是不够鲁棒(当曲率很小时,微小的误差就会导致结果偏差很大)。
根据向量关系:
r
c
=
r
r
+
l
n
r
\begin{equation}\boldsymbol{r_c}=\boldsymbol{r_r}+l\boldsymbol{n_r}\end{equation}
rc=rr+lnr
可得
l
=
(
r
c
−
r
r
)
⋅
n
r
\begin{equation}l=(\boldsymbol{r_c-r_r})\cdot\boldsymbol{n_r}\end{equation}
l=(rc−rr)⋅nr
这是向量形式的表达式,转化为标量表达式就是:
l
=
s
i
g
n
(
(
y
c
−
y
r
)
c
o
s
θ
r
−
(
x
c
−
x
r
)
s
i
n
θ
r
)
(
x
c
−
x
r
)
2
+
(
y
c
−
y
r
)
2
\begin{equation}l=sign((y_c-y_r)cos\theta_r-(x_c-x_r)sin\theta_r)\sqrt{(x_c-x_r)^2+(y_c-y_r)^2}\end{equation}
l=sign((yc−yr)cosθr−(xc−xr)sinθr)(xc−xr)2+(yc−yr)2
将式(19)对时间求导:
v
c
=
s
˙
τ
r
+
l
˙
n
r
+
l
n
r
˙
=
s
˙
τ
r
+
l
˙
n
r
−
l
k
r
s
˙
τ
r
\begin{equation}\boldsymbol{v_c}=\dot{s}\boldsymbol{\tau_r}+\dot{l}\boldsymbol{n_r}+l\dot{\boldsymbol{n_r}}=\dot{s}\boldsymbol{\tau_r}+\dot{l}\boldsymbol{n_r}-lk_r\dot{s}\boldsymbol{\tau_r} \end{equation}
vc=s˙τr+l˙nr+lnr˙=s˙τr+l˙nr−lkrs˙τr
式(22)两边同时点乘
n
r
\boldsymbol{n_r}
nr后化简可得:
l
˙
=
v
c
⋅
n
r
\begin{equation} \dot{l}=\boldsymbol{v_c}\cdot\boldsymbol{n_r} \end{equation}
l˙=vc⋅nr
转化为标量形式就是:
l
˙
=
v
c
s
i
n
(
θ
c
−
θ
r
)
\begin{equation} \dot{l}=v_csin(\theta_c-\theta_r) \end{equation}
l˙=vcsin(θc−θr)
式(23)对时间求导可得:
l
¨
=
a
c
⋅
n
r
−
k
r
(
1
−
l
k
r
)
s
˙
2
\begin{equation} \ddot{l}=\boldsymbol{a_c}\cdot{\boldsymbol{n_r}}-k_r(1-lk_r){\dot{s}}^2 \end{equation}
l¨=ac⋅nr−kr(1−lkr)s˙2
进一步展开得:
l
¨
=
a
c
τ
s
i
n
(
θ
c
−
θ
r
)
+
a
c
n
c
o
s
(
θ
c
−
θ
r
)
−
k
r
(
1
−
l
k
r
)
s
˙
2
\begin{equation} \ddot{l}=a_{c\tau}sin(\theta_c-\theta_r)+a_{cn}cos(\theta_c-\theta_r)-k_r(1-lk_r){\dot{s}}^2 \end{equation}
l¨=acτsin(θc−θr)+acncos(θc−θr)−kr(1−lkr)s˙2
同时,式(22)两边同时点乘
τ
r
\boldsymbol{\tau_r}
τr后化简可得:
s
˙
=
v
c
⋅
τ
r
1
−
l
k
r
\begin{equation} \dot{s}=\frac{\boldsymbol{v_c\cdot{\tau_r}}}{1-lk_r} \end{equation}
s˙=1−lkrvc⋅τr
转化为标量形式就是:
s
˙
=
v
c
c
o
s
(
θ
c
−
θ
r
)
1
−
l
k
r
\begin{equation} \dot{s}=\frac{v_ccos(\theta_c-\theta_r)}{1-lk_r} \end{equation}
s˙=1−lkrvccos(θc−θr)
根据定义:
l
′
=
d
l
d
s
=
d
l
d
t
d
t
d
s
=
v
c
s
i
n
(
θ
c
−
θ
r
)
1
−
l
k
r
v
c
c
o
s
(
θ
c
−
θ
r
)
=
(
1
−
l
k
r
)
t
a
n
(
θ
c
−
θ
r
)
\begin{equation} l'=\frac{dl}{ds}=\frac{dl}{dt}\frac{dt}{ds}=v_csin(\theta_c-\theta_r)\frac{1-lk_r}{v_ccos(\theta_c-\theta_r)}=(1-lk_r)tan(\theta_c-\theta_r) \end{equation}
l′=dsdl=dtdldsdt=vcsin(θc−θr)vccos(θc−θr)1−lkr=(1−lkr)tan(θc−θr)
式(27)对时间求导可得:
s
¨
=
(
v
c
˙
⋅
τ
r
+
v
c
⋅
τ
r
˙
)
(
1
−
l
k
r
)
+
(
l
˙
k
r
+
l
k
r
˙
)
v
c
⋅
τ
r
(
1
−
l
k
r
)
2
=
a
c
⋅
τ
r
1
−
l
k
r
+
k
r
s
˙
v
c
⋅
n
r
1
−
l
k
r
+
1
1
−
l
k
r
s
˙
(
k
r
d
l
d
s
d
s
d
t
+
l
d
k
r
d
s
d
s
d
t
)
=
a
c
⋅
τ
r
1
−
l
k
r
+
k
r
s
˙
v
c
⋅
n
r
1
−
l
k
r
+
1
1
−
l
k
r
s
˙
(
k
r
l
′
s
˙
+
l
k
r
′
s
˙
)
\begin{equation} \begin{aligned} \ddot{s}=\frac{(\dot{\boldsymbol{v_c}}\cdot{\boldsymbol{\tau_r}}+\boldsymbol{v_c}\cdot\boldsymbol{\dot{\tau_r}})(1-lk_r)+(\dot{l}k_r+l\dot{k_r})\boldsymbol{v_c}\cdot{\boldsymbol{\tau_r}}}{(1-lk_r)^2}\\ =\frac{\boldsymbol{a_c}\cdot\boldsymbol{\tau_r}}{1-lk_r}+\frac{k_r\dot{s}\boldsymbol{v_c}\cdot{\boldsymbol{n_r}}}{1-lk_r}+\frac{1}{1-lk_r}\dot{s}(k_r\frac{dl}{ds}\frac{ds}{dt}+l\frac{dk_r}{ds}\frac{ds}{dt})\\ =\frac{\boldsymbol{a_c}\cdot\boldsymbol{\tau_r}}{1-lk_r}+\frac{k_r\dot{s}\boldsymbol{v_c}\cdot{\boldsymbol{n_r}}}{1-lk_r}+\frac{1}{1-lk_r}\dot{s}(k_rl'\dot{s}+l{k_r'}\dot{s}) \end{aligned} \end{equation}
s¨=(1−lkr)2(vc˙⋅τr+vc⋅τr˙)(1−lkr)+(l˙kr+lkr˙)vc⋅τr=1−lkrac⋅τr+1−lkrkrs˙vc⋅nr+1−lkr1s˙(krdsdldtds+ldsdkrdtds)=1−lkrac⋅τr+1−lkrkrs˙vc⋅nr+1−lkr1s˙(krl′s˙+lkr′s˙)
而
a
c
⋅
τ
r
=
a
c
τ
⋅
τ
r
+
a
c
n
⋅
τ
r
=
a
c
τ
c
o
s
(
θ
c
−
θ
r
)
−
v
c
2
k
c
s
i
n
(
θ
c
−
θ
r
)
\begin{equation} \boldsymbol{a_c}\cdot\boldsymbol{\tau_{r}}=\boldsymbol{a_{c\tau}\cdot\tau_r+\boldsymbol{a_{cn}}\cdot\tau_r}=a_{c\tau}cos(\theta_c-\theta_r)-v^2_ck_csin(\theta_c-\theta_r)\end{equation}
ac⋅τr=acτ⋅τr+acn⋅τr=acτcos(θc−θr)−vc2kcsin(θc−θr)
代入式(30)可得标量形式:
s
¨
=
a
c
⋅
τ
r
1
−
l
k
r
+
k
r
s
˙
2
l
′
1
−
l
k
r
+
s
˙
2
1
−
l
k
r
(
k
r
l
′
+
l
k
r
′
)
=
a
c
τ
c
o
s
(
θ
c
−
θ
r
)
1
−
l
k
r
+
v
c
2
k
c
s
i
n
(
θ
c
−
θ
r
)
1
−
l
k
r
+
k
r
s
˙
2
l
′
1
−
l
k
r
+
s
˙
2
1
−
l
k
r
(
k
r
l
′
+
l
k
r
′
)
=
a
c
τ
c
o
s
(
θ
c
−
θ
r
)
1
−
l
k
r
−
1
1
−
l
k
r
[
v
c
2
c
o
s
2
(
θ
c
−
θ
r
)
(
1
−
l
k
r
)
2
(
1
−
l
k
r
)
s
i
n
(
θ
c
−
θ
r
)
c
o
s
(
θ
c
−
θ
r
)
k
c
1
−
l
k
r
c
o
s
(
θ
c
−
θ
r
)
]
+
k
r
s
˙
2
l
′
1
−
l
k
r
+
s
˙
2
1
−
l
k
r
(
k
r
l
′
+
l
k
r
′
)
=
a
c
τ
c
o
s
(
θ
c
−
θ
r
)
−
s
˙
2
[
l
′
(
k
c
1
−
l
k
r
c
o
s
(
θ
c
−
θ
r
)
−
k
r
)
−
(
k
r
l
′
+
l
k
r
′
)
]
1
−
l
k
r
\begin{equation} \begin{aligned} \ddot{s}=\frac{\boldsymbol{a_c}\cdot\boldsymbol{\tau_r}}{1-lk_r}+\frac{k_r\dot{s}^2l'}{1-lk_r}+\frac{\dot{s}^2}{1-lk_r}(k_rl'+l{k_r'})\\ =\frac{a_{c\tau}cos(\theta_c-\theta_r)}{1-lk_r}+\frac{v^2_ck_csin(\theta_c-\theta_r)}{1-lk_r}+\frac{k_r\dot{s}^2l'}{1-lk_r}+\frac{\dot{s}^2}{1-lk_r}(k_rl'+l{k_r'})\\ =\frac{a_{c\tau}cos(\theta_c-\theta_r)}{1-lk_r}- \frac{1}{1-lk_r}[\frac{v_c^2cos^2(\theta_c-\theta_r)}{(1-lk_r)^2}\frac{(1-lk_r)sin(\theta_c-\theta_r)}{cos(\theta_c-\theta_r)}k_c\frac{1-lk_r}{cos(\theta_c-\theta_r)}]\\+\frac{k_r\dot{s}^2l'}{1-lk_r}+\frac{\dot{s}^2}{1-lk_r}(k_rl'+l{k_r'})\\ =\frac{a_{c\tau}cos(\theta_c-\theta_r)-\dot{s}^2[l'(k_c\frac{1-lk_r}{cos(\theta_c-\theta_r)}-k_r)-(k_rl'+lk_r')]}{1-lk_r} \end{aligned} \end{equation}
s¨=1−lkrac⋅τr+1−lkrkrs˙2l′+1−lkrs˙2(krl′+lkr′)=1−lkracτcos(θc−θr)+1−lkrvc2kcsin(θc−θr)+1−lkrkrs˙2l′+1−lkrs˙2(krl′+lkr′)=1−lkracτcos(θc−θr)−1−lkr1[(1−lkr)2vc2cos2(θc−θr)cos(θc−θr)(1−lkr)sin(θc−θr)kccos(θc−θr)1−lkr]+1−lkrkrs˙2l′+1−lkrs˙2(krl′+lkr′)=1−lkracτcos(θc−θr)−s˙2[l′(kccos(θc−θr)1−lkr−kr)−(krl′+lkr′)]
根据定义:
l
¨
=
d
l
˙
d
t
=
d
(
l
′
s
˙
)
d
t
=
d
l
′
d
t
s
˙
+
l
′
s
¨
=
d
l
′
d
s
d
s
d
t
s
˙
+
l
′
s
¨
=
l
′
′
s
˙
2
+
l
′
s
¨
\begin{equation} \ddot{l}=\frac{d\dot{l}}{dt}=\frac{d(l'\dot{s})}{dt}=\frac{dl'}{dt}\dot{s}+l'\ddot{s}=\frac{dl'}{ds}\frac{ds}{dt}\dot{s}+l'\ddot{s}=l''{\dot{s}}^2+l'\ddot{s} \end{equation}
l¨=dtdl˙=dtd(l′s˙)=dtdl′s˙+l′s¨=dsdl′dtdss˙+l′s¨=l′′s˙2+l′s¨
可得:
l
′
′
=
l
¨
−
l
′
s
¨
s
˙
2
\begin{equation} l''=\frac{\ddot{l}-l'\ddot{s}}{{\dot{s}}^2} \end{equation}
l′′=s˙2l¨−l′s¨
进一步展开可得:
l
′
′
=
−
(
k
r
l
′
+
l
k
r
′
)
t
a
n
(
θ
c
−
θ
r
)
+
1
−
l
k
r
c
o
s
2
(
θ
c
−
θ
r
)
(
1
−
l
k
r
c
o
s
(
θ
c
−
θ
r
)
k
c
−
k
r
)
\begin{equation} l''=-(k_rl'+lk'_r)tan(\theta_c-\theta_r)+\frac{1-lk_r}{cos^2(\theta_c-\theta_r)}(\frac{1-lk_r}{cos(\theta_c-\theta_r)}k_c-k_r) \end{equation}
l′′=−(krl′+lkr′)tan(θc−θr)+cos2(θc−θr)1−lkr(cos(θc−θr)1−lkrkc−kr)
因此可得笛卡尔向Frenet转换的公式:
{
s
˙
=
v
c
c
o
s
(
θ
c
−
θ
r
)
1
−
l
k
r
s
¨
=
a
c
τ
c
o
s
(
θ
c
−
θ
r
)
−
s
˙
2
[
l
′
(
k
c
1
−
l
k
r
c
o
s
(
θ
c
−
θ
r
)
−
k
r
)
−
(
k
r
l
′
+
l
k
r
′
)
]
1
−
l
k
r
l
=
s
i
g
n
(
(
y
c
−
y
r
)
c
o
s
θ
r
−
(
x
c
−
x
r
)
s
i
n
θ
r
)
(
x
c
−
x
r
)
2
+
(
y
c
−
y
r
)
2
l
˙
=
v
c
s
i
n
(
θ
c
−
θ
r
)
l
¨
=
a
c
τ
s
i
n
(
θ
c
−
θ
r
)
+
a
c
n
c
o
s
(
θ
c
−
θ
r
)
−
k
r
(
1
−
l
k
r
)
s
˙
2
l
′
=
(
1
−
l
k
r
)
t
a
n
(
θ
c
−
θ
r
)
l
′
′
=
−
(
k
r
l
′
+
l
k
r
′
)
t
a
n
(
θ
c
−
θ
r
)
+
1
−
l
k
r
c
o
s
2
(
θ
c
−
θ
r
)
(
1
−
l
k
r
c
o
s
(
θ
c
−
θ
r
)
k
c
−
k
r
)
\begin{equation} \begin{cases} \dot{s}=\frac{v_ccos(\theta_c-\theta_r)}{1-lk_r}\\ \ddot{s}=\frac{a_{c\tau}cos(\theta_c-\theta_r)-\dot{s}^2[l'(k_c\frac{1-lk_r}{cos(\theta_c-\theta_r)}-k_r)-(k_rl'+lk_r')]}{1-lk_r}\\ l=sign((y_c-y_r)cos\theta_r-(x_c-x_r)sin\theta_r)\sqrt{(x_c-x_r)^2+(y_c-y_r)^2}\\ \dot{l}=v_csin(\theta_c-\theta_r)\\ \ddot{l}=a_{c\tau}sin(\theta_c-\theta_r)+a_{cn}cos(\theta_c-\theta_r)-k_r(1-lk_r){\dot{s}}^2\\ l'=(1-lk_r)tan(\theta_c-\theta_r)\\ l''=-(k_rl'+lk'_r)tan(\theta_c-\theta_r)+\frac{1-lk_r}{cos^2(\theta_c-\theta_r)}(\frac{1-lk_r}{cos(\theta_c-\theta_r)}k_c-k_r) \end{cases} \end{equation}
⎩
⎨
⎧s˙=1−lkrvccos(θc−θr)s¨=1−lkracτcos(θc−θr)−s˙2[l′(kccos(θc−θr)1−lkr−kr)−(krl′+lkr′)]l=sign((yc−yr)cosθr−(xc−xr)sinθr)(xc−xr)2+(yc−yr)2l˙=vcsin(θc−θr)l¨=acτsin(θc−θr)+acncos(θc−θr)−kr(1−lkr)s˙2l′=(1−lkr)tan(θc−θr)l′′=−(krl′+lkr′)tan(θc−θr)+cos2(θc−θr)1−lkr(cos(θc−θr)1−lkrkc−kr)
s
s
s的计算参考式(18)。
2.2 Frenet坐标系向笛卡尔坐标系转换
已知 [ s , s ˙ , s ¨ , l , l ˙ , l ¨ , l ′ , l ′ ′ ] [s, \dot{s}, \ddot{s}, l, \dot{l}, \ddot{l}, l', l''] [s,s˙,s¨,l,l˙,l¨,l′,l′′],求 [ r c , v c , a c , k c ] [\boldsymbol{r_c}, \boldsymbol{v_c}, \boldsymbol{a_c}, k_c] [rc,vc,ac,kc]
2.2.1 计算投影点
在离散的参考点集上找到
(
x
n
,
y
n
)
(x_n,y_n)
(xn,yn)和
(
x
n
+
1
,
y
n
+
1
)
(x_{n+1},y_{n+1})
(xn+1,yn+1),使得
s
n
≤
s
≤
s
n
+
1
s_n≤s≤s_{n+1}
sn≤s≤sn+1,如下图所示,有:
r
r
=
r
n
+
r
d
\begin{equation} \boldsymbol{r_r}=\boldsymbol{r_n}+\boldsymbol{r_d}\end{equation}
rr=rn+rd
其中
r
d
\boldsymbol{r_d}
rd的长度为
s
−
s
n
s-s_n
s−sn,方向近似为
τ
n
=
(
c
o
s
θ
n
,
s
i
n
θ
n
)
\boldsymbol{\tau_n}=(cos\theta_n, sin\theta_n)
τn=(cosθn,sinθn),这里角度也可以取
θ
n
\theta_n
θn和
θ
n
+
1
\theta_{n+1}
θn+1的均值:
r
d
=
(
s
−
s
n
)
τ
n
\begin{equation} \boldsymbol{r_d}=(s-s_n)\boldsymbol{\tau_n} \end{equation}
rd=(s−sn)τn
可以求出
r
r
\boldsymbol{r_r}
rr,进而求出
(
x
r
,
y
r
)
(x_r, y_r)
(xr,yr),同时可计算得到如下变量:
θ
r
=
θ
n
+
k
n
(
s
−
s
n
)
\begin{equation}\theta_r=\theta_n+k_n(s-s_n)\end{equation}
θr=θn+kn(s−sn)
k
r
=
k
n
+
k
n
+
1
2
\begin{equation}k_r=\frac{k_n+k_{n+1}}{2}\end{equation}
kr=2kn+kn+1
k
r
′
=
d
k
r
d
s
≈
k
n
+
1
−
k
n
s
n
+
1
−
s
n
\begin{equation}k'_r=\frac{dk_r}{ds}\approx{\frac{k_{n+1}-k_n}{s_{n+1}-s_n}}\end{equation}
kr′=dsdkr≈sn+1−snkn+1−kn
τ
r
=
(
c
o
s
θ
r
,
s
i
n
θ
r
)
\begin{equation}\boldsymbol{\tau_r}=(cos\theta_r, sin\theta_r)\end{equation}
τr=(cosθr,sinθr)
n
r
=
(
−
s
i
n
θ
r
,
c
o
s
θ
r
)
\begin{equation}\boldsymbol{n_r}=(-sin\theta_r, cos\theta_r)\end{equation}
nr=(−sinθr,cosθr)
由公式(19)可得:
x
c
=
x
r
−
l
s
i
n
θ
r
\begin{equation} x_c=x_r-lsin\theta_r \end{equation}
xc=xr−lsinθr
y
c
=
y
r
+
c
o
s
θ
r
\begin{equation} y_c=y_r+cos\theta_r \end{equation}
yc=yr+cosθr
由上一章节
s
˙
\dot{s}
s˙和
l
˙
\dot{l}
l˙的表达式可得:
v
c
=
l
˙
2
+
s
˙
2
(
1
−
l
k
r
)
2
\begin{equation} v_c=\sqrt{\dot{l}^2+\dot{s}^2(1-lk_r)^2} \end{equation}
vc=l˙2+s˙2(1−lkr)2
t a n ( θ c − θ r ) = l ˙ ( 1 − l k r ) s ˙ = l ′ 1 − l k r \begin{equation} tan(\theta_c-\theta_r)=\frac{\dot{l}}{(1-lk_r)\dot{s}}=\frac{l'}{1-lk_r} \end{equation} tan(θc−θr)=(1−lkr)s˙l˙=1−lkrl′
θ c = θ r + a r c t a n ( l ′ 1 − l k r ) \begin{equation} \theta_c=\theta_r+arctan(\frac{l'}{1-lk_r}) \end{equation} θc=θr+arctan(1−lkrl′)
同理由式(25)和(30)可得:
a
c
=
[
l
¨
+
k
r
(
1
−
l
k
r
)
s
˙
2
]
2
+
[
s
¨
(
1
−
l
k
r
)
−
s
˙
2
k
r
l
′
−
s
˙
2
(
k
r
l
′
+
k
r
′
l
)
]
2
\begin{equation} a_c=\sqrt{[\ddot{l}+k_r(1-lk_r)\dot{s}^2]^2+[\ddot{s}(1-lk_r)-\dot{s}^2k_rl'-\dot{s}^2(krl'+k'_rl)]^2} \end{equation}
ac=[l¨+kr(1−lkr)s˙2]2+[s¨(1−lkr)−s˙2krl′−s˙2(krl′+kr′l)]2
假设加速度方向与
x
x
x轴的夹角为
θ
a
c
\theta_{ac}
θac,有:
θ
a
c
=
a
r
c
t
a
n
(
l
¨
+
k
r
(
1
−
l
k
r
)
s
˙
2
s
¨
(
1
−
l
k
r
)
−
s
˙
2
k
r
l
′
−
s
˙
2
(
k
r
l
′
+
k
r
′
l
)
)
+
θ
r
\begin{equation} \theta_{ac}=arctan(\frac{\ddot{l}+k_r(1-lk_r)\dot{s}^2}{\ddot{s}(1-lk_r)-\dot{s}^2k_rl'-\dot{s}^2(k_rl'+k'_rl)})+\theta_r \end{equation}
θac=arctan(s¨(1−lkr)−s˙2krl′−s˙2(krl′+kr′l)l¨+kr(1−lkr)s˙2)+θr
由式(32)可得:
a c τ = s ¨ 1 − l k r c o s ( θ c − θ r ) + s ˙ 2 c o s ( θ c − θ r ) [ l ′ ( k c 1 − l k r c o s ( θ c − θ r ) − k r ) − ( k r l ′ + k r ′ ) ] \begin{equation} a_{c\tau}=\ddot{s}\frac{1-lk_r}{cos(\theta_c-\theta_r)}+\frac{\dot{s}^2}{cos(\theta_c-\theta_r)}[l'(k_c\frac{1-lk_r}{cos(\theta_c-\theta_r)}-k_r)-(k_rl'+k'_r)] \end{equation} acτ=s¨cos(θc−θr)1−lkr+cos(θc−θr)s˙2[l′(kccos(θc−θr)1−lkr−kr)−(krl′+kr′)]
由式(35)可得:
k c = ( ( l ′ ′ + ( k r l ′ + k r ′ l ) t a n ( θ c − θ r ) ) c o s 2 ( θ c − θ r ) 1 − l k r + k r ) c o s ( θ c − θ r ) 1 − l k r \begin{equation} k_c=((l''+(k_rl'+k'_rl)tan(\theta_c-\theta_r))\frac{cos^2(\theta_c-\theta_r)}{1-lk_r}+k_r)\frac{cos(\theta_c-\theta_r)}{1-lk_r} \end{equation} kc=((l′′+(krl′+kr′l)tan(θc−θr))1−lkrcos2(θc−θr)+kr)1−lkrcos(θc−θr)
因此可得Frenet向笛卡尔转换的公式:
{ x c = x r − l s i n θ r y c = y r + c o s θ r θ c = θ r + a r c t a n ( l ′ 1 − l k r ) v c = l ˙ 2 + s ˙ 2 ( 1 − l k r ) 2 a c τ = s ¨ 1 − l k r c o s ( θ c − θ r ) + s ˙ 2 c o s ( θ c − θ r ) [ l ′ ( k c 1 − l k r c o s ( θ c − θ r ) − k r ) − ( k r l ′ + k r ′ ) ] k c = ( ( l ′ ′ + ( k r l ′ + k r ′ l ) t a n ( θ c − θ r ) ) c o s 2 ( θ c − θ r ) 1 − l k r + k r ) c o s ( θ c − θ r ) 1 − l k r \begin{equation} \begin{cases} x_c=x_r-lsin\theta_r\\ y_c=y_r+cos\theta_r\\ \theta_c=\theta_r+arctan(\frac{l'}{1-lk_r})\\ v_c=\sqrt{\dot{l}^2+\dot{s}^2(1-lk_r)^2}\\ a_{c\tau}=\ddot{s}\frac{1-lk_r}{cos(\theta_c-\theta_r)}+\frac{\dot{s}^2}{cos(\theta_c-\theta_r)}[l'(k_c\frac{1-lk_r}{cos(\theta_c-\theta_r)}-k_r)-(k_rl'+k'_r)]\\ k_c=((l''+(k_rl'+k'_rl)tan(\theta_c-\theta_r))\frac{cos^2(\theta_c-\theta_r)}{1-lk_r}+k_r)\frac{cos(\theta_c-\theta_r)}{1-lk_r} \end{cases} \end{equation} ⎩ ⎨ ⎧xc=xr−lsinθryc=yr+cosθrθc=θr+arctan(1−lkrl′)vc=l˙2+s˙2(1−lkr)2acτ=s¨cos(θc−θr)1−lkr+cos(θc−θr)s˙2[l′(kccos(θc−θr)1−lkr−kr)−(krl′+kr′)]kc=((l′′+(krl′+kr′l)tan(θc−θr))1−lkrcos2(θc−θr)+kr)1−lkrcos(θc−θr)