自动驾驶决策规划算法-Frenet坐标系与笛卡尔坐标系的转换

本文为学习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˙=dsdrdtds=τ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˙=dsrdrrdtdsr=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τcdtdsc=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=dscdncdtdsc=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τrdtdsr=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=dsrdnrdtdsr=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=(xcxm,ycym),τ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=(x1x0)2+(y1y0)2 +(x2x1)2+(y2y1)2 ++(xrxm)2+(yrym)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=(rcrr)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((ycyr)cosθr(xcxr)sinθr)(xcxr)2+(ycyr)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˙nrlkrs˙τ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˙=vcnr
转化为标量形式就是:
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¨=acnrkr(1lkr)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(1lkr)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˙=1lkrvcτ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˙=1lkrvccos(θ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)1lkr=(1lkr)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¨=(1lkr)2(vc˙τr+vcτr˙)(1lkr)+(l˙kr+lkr˙)vcτr=1lkracτr+1lkrkrs˙vcnr+1lkr1s˙(krdsdldtds+ldsdkrdtds)=1lkracτr+1lkrkrs˙vcnr+1lkr1s˙(krls˙+lkrs˙)

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=aτ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¨=1lkracτr+1lkrkrs˙2l+1lkrs˙2(krl+lkr)=1lkracτcos(θcθr)+1lkrvc2kcsin(θcθr)+1lkrkrs˙2l+1lkrs˙2(krl+lkr)=1lkracτcos(θcθr)1lkr1[(1lkr)2vc2cos2(θcθr)cos(θcθr)(1lkr)sin(θcθr)kccos(θcθr)1lkr]+1lkrkrs˙2l+1lkrs˙2(krl+lkr)=1lkracτcos(θcθr)s˙2[l(kccos(θcθr)1lkrkr)(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(ls˙)=dtdls˙+ls¨=dsdldtdss˙+ls¨=l′′s˙2+ls¨
可得:
l ′ ′ = l ¨ − l ′ s ¨ s ˙ 2 \begin{equation} l''=\frac{\ddot{l}-l'\ddot{s}}{{\dot{s}}^2} \end{equation} l′′=s˙2l¨ls¨
进一步展开可得:
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)1lkr(cos(θcθr)1lkrkckr)

因此可得笛卡尔向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˙=1lkrvccos(θcθr)s¨=1lkracτcos(θcθr)s˙2[l(kccos(θcθr)1lkrkr)(krl+lkr)]l=sign((ycyr)cosθr(xcxr)sinθr)(xcxr)2+(ycyr)2 l˙=vcsin(θcθr)l¨=acτsin(θcθr)+acncos(θcθr)kr(1lkr)s˙2l=(1lkr)tan(θcθr)l′′=(krl+lkr)tan(θcθr)+cos2(θcθr)1lkr(cos(θcθr)1lkrkckr)
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} snssn+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 ssn,方向近似为 τ 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=(ssn)τ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(ssn)
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=dsdkrsn+1snkn+1kn
τ 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=xrlsinθ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(1lkr)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)=(1lkr)s˙l˙=1lkrl

θ 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(1lkrl)

同理由式(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(1lkr)s˙2]2+[s¨(1lkr)s˙2krls˙2(krl+krl)]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¨(1lkr)s˙2krls˙2(krl+krl)l¨+kr(1lkr)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)1lkr+cos(θcθr)s˙2[l(kccos(θcθr)1lkrkr)(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+krl)tan(θcθr))1lkrcos2(θcθr)+kr)1lkrcos(θ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=xrlsinθryc=yr+cosθrθc=θr+arctan(1lkrl)vc=l˙2+s˙2(1lkr)2 acτ=s¨cos(θcθr)1lkr+cos(θcθr)s˙2[l(kccos(θcθr)1lkrkr)(krl+kr)]kc=((l′′+(krl+krl)tan(θcθr))1lkrcos2(θcθr)+kr)1lkrcos(θcθr)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值