无人驾驶frenet座标系解释

待整理

本文从毕设中整理,尚未整理完成。

Frenet座标系介绍

Frenet–Serret公式用于描述粒子在三维欧氏空间内沿一条连续可微曲线的运动学特征

三维曲线表达
T\vec T称为切向量(Tangent),表示沿曲线运动方向的单位向量;N\vec N称为法向量(Normal),表示当前曲线运动平面内垂直于的单位向量;B\vec B称为当前运动平面的副法向量(Binormal),表示同时垂直于和的单位向量。令r(t)r(t)为这个欧式空间中随着时间tt改变的非退化曲线,可令s(t)s(t)为这条非退化曲线在时间t的弧长。

退化曲线即:两条相交直线,当一个平面过圆锥的顶点截圆锥面得到曲线,其方程为(A1x+B1y+C1) *(A2x+B2y+C2) = 0
形似二次曲线,实际为两条直线

s(t)=0tγ(σ)dσs(t) = \int_0^t ||\gamma'(\sigma)|| d\sigma

tt还可以表示为ss的函数,也即是存在t(s)t(s),从而有r(s)=r(t(s))\vec r(s)=\vec r(t(s)),对于这条将利用弧长表达的曲线函数,可以定义其切向量T\vec T、法向量N\vec N、副法向量B\vec B如下:

假设存在:y(x)z(x)y(x) 、z(x)两个函数
那么存在:用z表示y的函数y(z)=y(x(z))=y(z)y(z) = y(x(z)) = y(z)
注:y=3xx(y)=1/3yy = 3*x 、 x(y) = 1/3 * y z=2xx(z)=1/2z\qquad z = 2*x 、x(z) = 1/2 * z
y(z)=y(x(z))=3x(z)=31/2z\qquad y(z) = y(x(z)) = 3 * x(z) = 3 * 1/2 * z

T\vec Tdrdsdrds\frac{\frac{d\vec r}{ds}}{||\frac{d\vec r}{ds}||}drds\qquad \frac{d\vec r}{ds} 除以自己的范数(长度),得到一个归一化的向量

N\vec NdTdsdTds\frac{\frac{d\vec T}{ds}}{||\frac{d\vec T}{ds}||}

B=T×N\vec B = \vec T ×\vec N

根据公式可知:
dTds=κN\frac{d\vec T}{ds}=\kappa \vec N

dNds=κT+τB\frac{d\vec N}{ds}=-\kappa \vec T+\tau \vec B

dBds=τN\frac{d\vec B}{ds}=-\tau \vec N

其中,κτ\kappa、\taur(t(s))\vec r(t(s))曲线的曲率和挠率。其矩阵表达式如下所示:
[TNB]=\begin{bmatrix} \vec T' \\ \vec N' \\ \vec B' \end{bmatrix}=[0κ0κ0τ0τ0]\begin{bmatrix} 0 &\kappa&0 \\ -\kappa&0&\tau \\ 0&\tau &0 \end{bmatrix}[TNB]\begin{bmatrix}\vec T \\ \vec N\\ \vec B\end{bmatrix}

frenet座标在无人驾驶中的用途

对于当前的无人驾驶研究而言,通常不会单独将高度作为规划因素,因此可以将车辆运动曲线投影到同一平面内,即令τ\tau=0,这样上式就可以简化为:
[TN]\begin{bmatrix}\vec T'\\\vec N'\end{bmatrix}=[0κκ0]\begin{bmatrix}0&\kappa \\ -\kappa &0\end{bmatrix}[TN]\begin{bmatrix}\vec T\\ \vec N\end{bmatrix}

假定r(t(s))\vec r(t(s))是参考线在弧长ss处的位置,xx是当前车辆轨迹点,该向量一般采用UTM座标表示,x=[x,y]T\vec x = [x,y]^T,在Frenet座标系下,一般采用弧长s和横向偏移l描述车辆当前位置对其描述,即x=x(s,l)\vec x =\vec x(s,l)
在这里插入图片描述

θrTrNr\theta_r、\vec T_r、\vec N_r分别为规划轨迹的方位角、单位切向角和单位法向角,θrTrNr\theta_r、\vec T_r、\vec N_r分别为当前轨迹的方位角、单位切向角和单位法向角。由正交定义可得:

Tr=[cosθrsinθr]\vec T _r=\begin{bmatrix}\cos\theta_r\\\sin\theta_r\end{bmatrix}

Nr=[sinθrcosθr]\vec N_r =\begin{bmatrix}-\sin\theta_r&\cos\theta_r\end{bmatrix}

Tx=[cosθxsinθx]\vec T_x =\begin{bmatrix}\cos\theta_x\\\sin\theta_x\end{bmatrix}

Nx=[sinθxcosθx]\vec N_x =\begin{bmatrix}-\sin\theta_x&\cos\theta_x\end{bmatrix}

因为正交,所以可知:Tr×Nr\vec T_r×\vec N_r=0、Tx×Nx\vec T_x×\vec N_x=0

通过对平面向量的加减可得:
x(s,l)=r(s)+l(s)Nr(s)\vec x(s,l)=\vec r(s)+l(s)\vec N_r(s)

根据公式得:
lNTN=NT(xr)l\vec N^T \vec N=\vec N^T(\vec x-\vec r)

根据外积的反称性可知:
l=[xr]Nrl=\begin{bmatrix}\vec x\\\vec r\end{bmatrix}\vec N_r

假设有任意a\forall a
a˙=\dot{a}=d(a)dt\frac{d(a)}{dt}

a¨=\ddot{a}=d(a˙)dt\frac{d(\dot{a})}{dt}

a=a'=d(a)ds\frac{d(a)}{ds}

a=a''=d(a)ds\frac{d(a')}{ds}

在上式中,俺们规定,a˙\dot{a}表示aa对时间tt的一阶求导,a¨\ddot{a}表示aa对时间tt的一阶求导,aa'表示aa对弧长ss的一阶求导,aa''表示aa对弧长ss的二阶求导。
则有:
l˙=[x˙r˙]TNr[xr]TNr˙\dot{l}=\begin{bmatrix}\dot{\vec x} -\dot{\vec r}\end{bmatrix}^T\vec N_r-\begin{bmatrix}\vec x-\vec r\end{bmatrix}^T \dot{\vec {N_r}}

由单位切向量和单位法向量的定义可得:
x˙=\dot{\vec x}=dxdt\frac {d||\vec x||}{dt}Tx=vxTx\vec T_x=v_x\vec T_x

r˙=\dot{\vec r}=drdt\frac {d||\vec r||}{dt}Tr=s˙T\vec T_r=\dot{s}\vec T

将公式互相带入,结合平面几何知识可知:
l˙=vxsinΔθ\dot{l}=v_x\sin\Delta \theta

其中Δθ\Delta\thetaθxθr\theta_x-\theta_r
同样地可知:
x˙=\dot{\vec x}=d(r+lNr)dt\frac{d(\vec r+l\vec N_r)}{dt}=r˙+l˙Nr+lNr˙=\dot{\vec r}+\dot{l}\vec N_r+l\dot{\vec N_r}

即是:

vx=x˙=v_x=||\dot{\vec x}||=[s˙(1κt)l]2+l˙2\sqrt{[\dot{s}(1-\kappa_t)l]^2+\dot{l}^2}

最终可以将ll'll''表示如下:
l=l'=vxs˙\frac{v_x}{\dot{s}}sinΔθ\sin\Delta\theta(1κrl)tanΔθ(1-\kappa_rl)\tan\Delta\theta

l=l''=(κrl+κrl)tanΔθ+-(\kappa_r'l+\kappa_rl')\tan\Delta\theta+(1κrl)cos2Δθ\frac{(1-\kappa_rl)}{\cos^2\Delta\theta}(κx(\kappa_x1κrlcosΔθ\frac{1-\kappa_rl}{\cos\Delta\theta}κr)-\kappa_r)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章