Frenet坐标系及其与笛卡尔坐标的转换(1)——原理

目录

文章目录

  • 目录
  • 1 Frenet坐标系
  • 2 Frenet坐标系基本概念
  • 3 位置:笛卡尔与Frenet坐标点位置的转换
    • 3.1 位置:笛卡尔坐标 —> Frenet坐标
      • 3.1.1 求解 s ∗ s^{\ast} s , P M PM PM 长度最短的第一种方法称为二阶最小化方法
      • 3.1.2 求解 s ∗ s^{\ast } s , 求 P M PM PM 长度最短的第二种方法称为牛顿法
      • 3.1.3 两种方法比较
      • 3.1.4 求解 l ∗ l^{\ast } l
    • 3.2 位置:Frenet坐标 —> 笛卡尔坐标
  • 4 运动状态:笛卡尔与Frenet坐标点运动状态的转换
    • 4.1 运动状态:笛卡尔坐标 —> Frenet坐标
      • 4.1.1 推导 l ˙ \dot{l} l˙
      • 4.1.2 推导 l ′ l' l

1 Frenet坐标系

大多数道路行车场景中的道路走势是笔直的,但弯曲道路仍不少见。道路的弯曲形态多种多样,难以找到统一的曲线类型描述弯曲道路。车辆不应与道路边缘线相撞,这一类碰撞躲避约束的有效建模依赖对于道路布局的精细描述。如何统一简洁地描述道路边缘走势对于轨迹规划问题的求解效率有着重要影响。
与非结构化泊车场景相比,结构化道路场景中存在指引线,车辆行驶轨迹不会大幅度偏离指引线,因此可以考虑以指引线的存在为契机简化规划任务的建模复杂度——构建Frenet坐标系可实现此理念。

2 Frenet坐标系基本概念

在正式介绍 Frenet 坐标系之前,我们认为有必要先做一些基础铺垫。但凡构建一套坐标系即构建一套可用于有效表征空间中各点位置的数据格式。以最基本的笛卡尔坐标系为例,它将平面上每一点的位置向平面内两根相互正交的数轴投影,分别将投影到两条数轴的刻度记录下来,将其整合起来即构成每一点在笛卡尔坐标系中的位置描述,即坐标值。一套理想的坐标系应保证平面内每一点对应且仅对应唯一的坐标值,即坐标值与平面内实际的点位具有一一对应关系,这意味着我们可以放心地使用坐标值代指平面上的点而不会引发理解分歧。

那么,是否还有除笛卡尔坐标系之外的点位描述方式呢?答案是肯定的。假设某人将进村访问某户人家,在没有地图或导航工具辅助的前提下,不得不向他人问路,得到的答复是“沿村口大路向前走,直至遇到三棵大柳树时,右手边距路边十余步的那户人家便是”。在不使用笛卡尔坐标系的条件下,以上描述仍足以精确无误地将某人指引至既定目标点位,那条村中大路和三棵柳树在这里起到了至关重要的作用。 Frenet 坐标系与这种指路模式非常相似,以下将进行详细介绍。

Frenet 坐标系依赖条指引线构建起来,它可以描述平面上一定范围内的点位(稍后介绍其有效表征范围),将每一点用沿指引线延伸方向前行的“进展刻度”与游离于指引线的“编移刻度”表征,分别将两个刻度记录、整合即构成每一点在 Frenet 坐标系中的坐标值。如图下图F1所示,二维平面上每一点 P P P 在指引线上的投影点 M M M 能够反映 P P P 点沿着指引线的进展到度,而 M P MP MP 线段长度反映了 P P P 点游离于指引线的偏移刻度。在上述问路例子中,村中大路代表看指引线, P P P 点代表目的地, M M M 点代表路旁三棵柳树。 Frenet 坐标系早在数十年前已应用于车辆轨迹跟踪控制领域开环轨迹被视为指引线,车辆当前位置 P P P 的进展刻度与闹侈刻度分别用于衡量车辆的纵向、横偏差,据此计算横纵方向上的反馈跟踪控制量。 Weiling 等于2010年首次将 Frenet 坐标系引人结构化道路上的轨迹规划问题中。

图F1:使用Frenet坐标系表示点的方式
Frenet坐标系及其与笛卡尔坐标的转换(1)——原理_第1张图片

在接下来的两小节中介绍笛卡尔坐标系与 Frenet 坐标系之间的转换法,其中第3章节介绍点的转换方法,第4章节介绍运动状态的转换方法 。最后,在第5章节将指出 Frenet 坐标系的局限性。

3 位置:笛卡尔与Frenet坐标点位置的转换

二维平面上的一个点在笛卡尔坐标系中表示为 ( x , y ) (x,y) (x,y),也可基于指引线在 Frenet 坐标系中表示为 ( s , l ) (s,l) (s,l)。本节将介绍如何在给定 ( x , y ) (x,y) (x,y)的条件下确定 ( s , l ) (s,l) (s,l),以及如何在给定 ( s , l ) (s,l) (s,l)的条件下确定 ( x , y ) (x,y) (x,y)

图F2:笛卡尔/Frenet坐标系位置转换模型
Frenet坐标系及其与笛卡尔坐标的转换(1)——原理_第2张图片

3.1 位置:笛卡尔坐标 —> Frenet坐标

首先介绍如何将笛卡尔坐标转化为 Frenet 坐标。已知笛卡尔坐标系下的一段长度为 L L L 的参数化指引线,将其记为

Γ [ x ( s ) , y ( s ) ] , s ε [ 0 , L ] , (1) \begin{aligned} &\Gamma [ x(s), y(s) ],s\varepsilon [0,L],\\\end{aligned}\tag{1} Γ[x(s),y(s)],sε[0,L],(1)

其中, s s s 为沿着指引线的里程。已知点 P P P 在笛卡尔坐标系中的坐标为 ( x e , y e ) (x_{e}, y_{e}) (xe,ye),为了确定 P P P 在 Frenet 坐标系中的坐标值,需要在曲线段 Γ \Gamma Γ 上寻找与 P P P 匹配的投影点 M = ( x ( s ∗ ) , y ( s ∗ ) ) M=(x(s^{\ast}),y(s^{\ast})) M=(x(s),y(s)) ,并使线段 P M PM PM 长度最短,即

a r g m i n [ D ( s ) ] s = s ∗ (2) \begin{aligned} &\underset{s=s^{\ast}}{arg \quad min[D(s)]}\\\end{aligned}\tag{2} s=sargmin[D(s)](2)

其中, D ( s ) D(s) D(s) 为线段 P M PM PM 长度:

D ( s ) = [ x ( s ) − x e ] 2 + [ y ( s ) − y e ] 2 (3) \begin{aligned} &D(s)=[x(s)-x_{e}]^{2}+[y(s)-y_{e}]^{2}\\\end{aligned}\tag{3} D(s)=[x(s)xe]2+[y(s)ye]2(3)

符合条件的 P P P 点能够使曲线在该点处的切线方向与 P M PM PM 方向垂直。如 P M PM PM 长度为 ∣ L ∗ ∣ |L^{\ast}| L M M M点位于指引线里程 s = s ∗ s=s^{\ast} s=s 处,则 P P P 在 Frenet 坐标系中的坐标值可确定为 ( s ∗ , l ∗ ) (s^{\ast},l^{\ast}) (s,l) 。不难发现,确定 M M M 点坐标的关键在于计算 s ∗ s^{\ast} s ,这里提供了两种具体计算方案。

3.1.1 求解 s ∗ s^{\ast} s , P M PM PM 长度最短的第一种方法称为二阶最小化方法

第一种方法称为二阶最小化方法,其核心思路是通过多点采样对 D ( s ) D(s) D(s) 进行二阶拟合,将拟合而成的二次函数 D ~ ( s ) \widetilde{D}(s) D (s) D ( s ) D(s) D(s) 的估计,随后寻找使 D ~ ( s ) \widetilde{D}(s) D (s) 取最小值的闭合解。具体而言:

  • a 第一步:在曲线上对 s ∗ s^{\ast} s 形成三个不同的初步估算值,分别将其记为 s 1 s_{1} s1 , s 2 s_{2} s2 以及 s 3 s_{3} s3
  • b 第二步:应针对 D ( s ) D(s) D(s) 实施二阶拟合,由于此时可以求出 D ( s ) D(s) D(s) s 1 s_{1} s1 s 2 s_{2} s2 s 3 s_{3} s3 处的函数值,可据此确定 D ( s ) D(s) D(s) 的二阶拟合函数为:
    D ~ ( s ) = ( s − s 2 ) ( s − s 3 ) ( s 1 − s 2 ) ( s 1 − s 3 ) ⋅ D ( s 1 ) + ( s − s 1 ) ( s − s 3 ) ( s 2 − s 1 ) ( s 2 − s 3 ) ⋅ D ( s 2 ) + ( s − s 1 ) ( s − s 2 ) ( s 3 − s 1 ) ( s 3 − s 23 ) ⋅ D ( s 3 ) (4) \begin{aligned} &\widetilde{D}(s) = \frac{(s-s_{2})(s-s_{3})}{(s_{1}-s_{2})(s_{1}-s_{3})} \cdot D(s_{1}) + \frac{(s-s_{1})(s-s_{3})}{(s_{2}-s_{1})(s_{2}-s_{3})} \cdot D(s_{2}) + \frac{(s-s_{1})(s-s_{2})}{(s_{3}-s_{1})(s_{3}-s_{23})} \cdot D(s_{3})\\\end{aligned}\tag{4} D (s)=(s1s2)(s1s3)(ss2)(ss3)D(s1)+(s2s1)(s2s3)(ss1)(ss3)D(s2)+(s3s1)(s3s23)(ss1)(ss2)D(s3)(4)
    由于 D ~ ( s ) \widetilde{D}(s) D (s) 是二次函数,可通过初等数学知识对其求极值 s ^ \widehat{s} s
    s ^ = 1 2 ⋅ s q 23 ⋅ D ( s 1 ) + s q 13 ⋅ D ( s 2 ) + s q 12 ⋅ D ( s 3 ) e r r 23 ⋅ D ( s 1 ) + e r r 13 ⋅ D ( s 2 ) + e r r 12 ⋅ D ( s 3 ) , e r r i j = s i − s j , s q i j = s i 2 − s j 2 (5) \begin{aligned} &\widehat{s} = \frac{1}{2} \cdot \frac{sq_{23} \cdot D(s_{1}) + sq_{13} \cdot D(s_{2}) + sq_{12} \cdot D(s_{3})}{err_{23} \cdot D(s_{1}) + err_{13} \cdot D(s_{2}) + err_{12} \cdot D(s_{3})}, err_{ij} = s_{i} - s_{j}, sq_{ij} = s^{2}_{i} - s^{2}_{j}\\\end{aligned}\tag{5} s =21err23D(s1)+err13D(s2)+err12D(s3)sq23D(s1)+sq13D(s2)+sq12D(s3),errij=sisj,sqij=si2sj2(5)
  • c 第三步:需将 s 1 s_{1} s1 s 2 s_{2} s2 s 3 s_{3} s3 以及 s ^ \widehat{s} s 这4个里程数值分别代人 D ~ ( s ) \widetilde{D}(s) D (s),选取对应函数值较大的3个里程值,将其重新记为 s 1 s_{1} s1 s 2 s_{2} s2 s 3 s_{3} s3 并重复第二步,反复执行迭代直至 s ^ \widehat{s} s 收敛,此时收敛的 s ^ \widehat{s} s 即为 s ∗ s^{\ast} s l ∗ l^{\ast} l 为区分正负号的变量,其绝对值为 D ( s ∗ ) D(s^{\ast}) D(s) ,如 P P P 位于指引线延伸方向左侧则取负号,反之取正。至此可确定 P P P 在 Frenet 坐标系中的坐标值 ( s ∗ , l ∗ ) (s^{\ast},l^{\ast}) (s,l)

在工程实践中,通过历史数据提前缩小 s ∗ s^{\ast} s 的可能取值范围,这种做法在曲线里程 L L L 较大时意义显著。假设限定 s ε [ s k , s k + 1 ] s\varepsilon [s_{k},s_{k+1}] sε[sk,sk+1],则可将 s ∗ s^{\ast} s 的3个初始估计值设置为 s k s_{k} sk s k + 1 s_{k+1} sk+1 以及 ( s k + s k + 1 ) / 2 (s_{k}+s_{k+1})/2 (sk+sk+1)/2 。若最终 s ∗ s^{\ast} s 收敛至区间 [ s k , s k + 1 ] [s_{k}, s_{k+1}] [sk,sk+1] 之外,则判定选取的区间 [ s k , s k + 1 ] [s_{k}, s_{k+1}] [sk,sk+1] 无效,应在相邻区间中继续进行 s ∗ s^{\ast} s 的迭代求解。

3.1.2 求解 s ∗ s^{\ast } s , 求 P M PM PM 长度最短的第二种方法称为牛顿法

第二种方法称为牛顿法,其核心思想是以牛顿方法迭代求取使 D ′ ( s ) = 0 D^{'}(s)=0 D(s)=0 成立的极值 s = s ∗ s=s^{\ast } s=s 。具体地,在提供 s ∗ s^{\ast } s 的某一初始值 s i n i t s_{init} sinit 后,进行以下迭代:

s ^ = s i n i t − D ′ ( s i n i t ) D ′ ′ ( s i n i t ) (6) \begin{aligned} &\widehat{s} = s_{init} - \frac{D'(s_{init})}{D''(s_{init})}\\\end{aligned}\tag{6} s =sinitD(sinit)D(sinit)(6)

随后使用 s ^ \widehat{s} s s i n i t s_{init} sinit 赋值并继续重复计算上式,直至: s ^ \widehat{s} s 取值收敛时将收敛值记为 s ∗ s^{\ast } s

3.1.3 两种方法比较

  • 第一种方法收敛速度快(超线性收敛),但采用二阶拟合会造成求解精度损失;
  • 第二种方法因利用 D ( s ) D(s) D(s) 二阶导数信息而具有较高求解精度,但收敛速度仅满足二次收敛。
  • 在工程实践中可首先利用第一种方法获取粗略解,随后在其微小邻域内采用第二种方法进行精细计算。

3.1.4 求解 l ∗ l^{\ast } l

根据求解出的 s ∗ s^{\ast } s,代入指引线参数方程,得到点 P = ( x e , y e ) P=(x_{e} ,y_{e}) P=(xe,ye) 的投影点(参考点)坐标 M = ( x ( s ∗ ) , y ( s ∗ ) ) M=(x(s^{\ast }) ,y(s^{\ast })) M=(x(s),y(s)) ,则 l ∗ l^{\ast } l 的绝对值为:
∣ l ∗ ∣ = [ x e − x ( s ∗ ) ] 2 + [ y e − y ( s ∗ ) ] 2 (7) |l^{\ast }| = \sqrt{[x_{e}-x(s^{\ast })]^{2} + [y_{e}-y(s^{\ast })]^{2}}\tag{7} l=[xex(s)]2+[yey(s)]2 (7)
现在求 l ∗ l^{\ast } l 的正负方向, P P P 位于指引线延伸方向左侧则取正号,反之取负(一般情况左正右负,看具体定义)。:

在笛卡尔坐标系下,如图F3,根据向量关系,已知向量 e → = O P → = [ x e y e ] 、 r → = O M → = [ x ( s ∗ ) y ( s ∗ ) ] \overrightarrow{e}=\overrightarrow{OP}=\begin{bmatrix} x_{e}\\ y_{e}\\ \end{bmatrix}、\overrightarrow{r}=\overrightarrow{OM}=\begin{bmatrix} x(s^{\ast })\\ y(s^{\ast })\\ \end{bmatrix} e =OP =[xeye]r =OM =[x(s)y(s)] ,很容易得出:
e → = r → + ∣ l ∗ ∣ ⋅ N → r e → − r → = ∣ l ∗ ∣ ⋅ N → r [ x e − x ( s ∗ ) y e − y ( s ∗ ) ] = ∣ l ∗ ∣ ⋅ N → r N → r = 1 ∣ l ∗ ∣ ⋅ [ x e − x ( s ∗ ) y e − y ( s ∗ ) ] , M点处单位法向量 T → r = 1 ∣ l ∗ ∣ ⋅ [ y e − y ( s ∗ ) − ( x e − x ( s ∗ ) ) ] = [ c o s θ r s i n θ r ] , M点处单位切向量 N → r × T → r = ( y e − y ( s ∗ ) ) c o s θ r − ( x e − x ( s ∗ ) ) s i n θ r   , 叉积在z方向的分量 (8) \begin{aligned}&\overrightarrow{e} = \overrightarrow{r} + |l^{\ast }| \cdot \overrightarrow{N}_{r}\\&\overrightarrow{e} - \overrightarrow{r} = |l^{\ast }| \cdot \overrightarrow{N}_{r}\\&\begin{bmatrix} x_{e}-x(s^{\ast })\\ y_{e}-y(s^{\ast })\\ \end{bmatrix} = |l^{\ast }| \cdot \overrightarrow{N}_{r}\\&\overrightarrow{N}_{r} = \frac{1}{|l^{\ast }|} \cdot \begin{bmatrix} x_{e}-x(s^{\ast })\\ y_{e}-y(s^{\ast })\\ \end{bmatrix} , \text{M点处单位法向量}\\&\overrightarrow{T}_{r} = \frac{1}{|l^{\ast }|} \cdot \begin{bmatrix} y_{e}-y(s^{\ast })\\ -(x_{e}-x(s^{\ast }))\\ \end{bmatrix} = \begin{bmatrix} cos\theta_{r}\\ sin\theta_{r}\\ \end{bmatrix}, \text{M点处单位切向量}\\&\overrightarrow{N}_{r} \times \overrightarrow{T}_{r} = (y_{e}-y(s^{\ast }))cos\theta_{r} - (x_{e}-x(s^{\ast }))sin\theta_{r} \ , \text{叉积在z方向的分量}\end{aligned}\tag{8} e =r +lN re r =lN r[xex(s)yey(s)]=lN rN r=l1[xex(s)yey(s)],M点处单位法向量T r=l1[yey(s)(xex(s))]=[cosθrsinθr],M点处单位切向量N r×T r=(yey(s))cosθr(xex(s))sinθr ,叉积在z方向的分量(8)

l ∗ l^{\ast } l 的正负号与z分量的符号相同,即:
l ∗ = s i g n [ ( y e − y ( s ∗ ) ) c o s θ r − ( x e − x ( s ∗ ) ) s i n θ r ] ⋅ [ x e − x ( s ∗ ) ] 2 + [ y e − y ( s ∗ ) ] 2 l ∗ = s t d : : c o p y s i g n ( [ x e − x ( s ∗ ) ] 2 + [ y e − y ( s ∗ ) ] 2 , [ ( y e − y ( s ∗ ) ) c o s θ r − ( x e − x ( s ∗ ) ) s i n θ r ] ) (9) \begin{aligned}&l^{\ast } = sign[(y_{e}-y(s^{\ast }))cos\theta_{r} - (x_{e}-x(s^{\ast }))sin\theta_{r}] \cdot \sqrt{[x_{e}-x(s^{\ast })]^{2} + [y_{e}-y(s^{\ast })]^{2}}\\&l^{\ast } = std::copysign(\sqrt{[x_{e}-x(s^{\ast })]^{2} + [y_{e}-y(s^{\ast })]^{2}}\quad, [(y_{e}-y(s^{\ast }))cos\theta_{r} - (x_{e}-x(s^{\ast }))sin\theta_{r}])\\\end{aligned}\tag{9} l=sign[(yey(s))cosθr(xex(s))sinθr][xex(s)]2+[yey(s)]2 l=std::copysign([xex(s)]2+[yey(s)]2 ,[(yey(s))cosθr(xex(s))sinθr])(9)

3.2 位置:Frenet坐标 —> 笛卡尔坐标

将Frenet 坐标向笛卡尔坐标的转换则相对简单。

已知一段参数化指引线 Γ [ x ( s ) , y ( s ) ] \Gamma [ x(s), y(s) ] Γ[x(s),y(s)],以及点 P P P 在 Frenet 坐标系中的坐标 ( s ∗ , l ∗ ) (s^{\ast },l^{\ast }) (s,l) ,为确定 P P P 点在笛卡尔坐标系中的坐标值,首先需确定该点在指引线上的投影点 M = ( s ∗ , 0 ) M=(s^{\ast },0) M=(s,0) (Frenet坐标下) / M = ( x ( s ∗ ) , y ( s ∗ ) ) M=(x(s^{\ast }),y(s^{\ast })) M=(x(s),y(s)) (笛卡尔坐标下) 处的指引线切线方向 θ r \theta_{r} θr :

θ r = a r c t a n [ y ′ ( s ∗ ) x ′ ( s ∗ ) ] (10) \begin{aligned} &\theta_{r} = arctan[\frac{y'(s^{\ast })}{x'(s^{\ast })}]\\\end{aligned}\tag{10} θr=arctan[x(s)y(s)](10)

随后即可利用几何关系推导出 P P P 点在笛卡尔坐标系中的坐标值 ( x e , y e ) (x_{e} ,y_{e}) (xe,ye)

( x e , y e ) ≡ [ x ( s ∗ ) + l ∗ ⋅ c o s ( θ r + π 2 ) , y ( s ∗ ) + l ∗ ⋅ s i n ( θ r + π 2 ) ] (11) \begin{aligned} &(x_{e},y_{e}) \equiv [ x(s^{\ast }) + l^{\ast } \cdot cos(\theta_{r} + \frac{\pi }{2}), y(s^{\ast }) + l^{\ast } \cdot sin(\theta_{r} + \frac{\pi }{2})]\\\end{aligned}\tag{11} (xe,ye)[x(s)+lcos(θr+2π),y(s)+lsin(θr+2π)](11)

4 运动状态:笛卡尔与Frenet坐标点运动状态的转换

前文将平面上一个点在笛卡尔/Frenet 坐标系之间转换。然而,给构化道路上的目标往往存在着运动趋势。例如,社会车辆在笛卡尔坐标系中的未来预测轨迹需要转换至Frenet坐标系中,或是Frenet坐标系中求解的轨迹转换至笛卡尔坐标系中。在对轨迹转换坐标系时倘若仅将轨迹上的一系列采样点按照前文的点位置介绍的方法进行转换,则轨迹原有的速度、加速度等运动状态信息很可能在转换过程中丢失。本小节将探讨如何转换运动状态。

图F3:面向轨迹的笛卡尔/Frenet坐标系运动状态转换模型
Frenet坐标系及其与笛卡尔坐标的转换(1)——原理_第3张图片

针对图所示的一般情况,我们将介绍轨迹上的某一点 P P P 的运动状态如何在两个坐标系中相互转换。假设图中存在某一原点 O O O(图中未画出),则向量 O P → \overrightarrow{OP} OP 体现了点 P P P 在笛卡尔坐标系下的位置。

P P P 点在笛卡尔坐标系下的运动状态:(e: Ego)

  • 速度 v e v_{e} ve
  • 加速度 a e a_{e} ae
  • 姿态角 θ e \theta _{e} θe
  • 曲率 k e k_{e} ke

P P P 点在 Frenet 坐标系下的运动状态:

  • 坐标 ( s , l ) (s,l) (s,l)
  • s ( t ) s(t) s(t) 的一阶导 s ˙ \dot{s} s˙ s ˙ = d s d t \dot{s}=\frac{ds}{dt} s˙=dtds
  • s ( t ) s(t) s(t)的二阶导 s ¨ \ddot{s} s¨ s ¨ = d s ˙ d t \ddot{s}=\frac{d \dot{s} }{dt} s¨=dtds˙
  • l ( t ) l(t) l(t)的一阶导 l ˙ \dot{l} l˙ l ˙ = d l d t \dot{l}=\frac{dl}{dt} l˙=dtdl
  • l ( t ) l(t) l(t)的二阶导 l ¨ \ddot{l} l¨ l ¨ = d l ˙ d t \ddot{l}=\frac{d \dot{l} }{dt} l¨=dtdl˙
  • l ( s ) l(s) l(s)的一阶导 l ′ l' l l ′ = d l d s l'=\frac{dl}{ds} l=dsdl
  • l ( s ) l(s) l(s)的二阶导 l ′ ′ l'' l l ′ = d l ′ d s l'=\frac{dl'}{ds} l=dsdl

4.1 运动状态:笛卡尔坐标 —> Frenet坐标

**Q:已知笛卡尔坐标系下 O P → 、 v e 、 a e 、 θ e 、 κ e \overrightarrow{OP}、v_{e}、a_{e}、\theta _{e}、\kappa _{e} OP veaeθeκe 的条件下推导Frenet坐标系下的 s ˙ 、 s ¨ 、 l ˙ 、 l ¨ 、 l ′ 、 l ′ ′ \dot{s}、\ddot{s}、\dot{l}、\ddot{l}、l'、l'' s˙s¨l˙l¨ll 。 **

在已知 O P → \overrightarrow{OP} OP 条件下,设 P P P ( x e , y e ) (x_{e},y_{e}) (xe,ye) ,可利用3.1小节介绍的方法确定 ( s , l ) (s,l) (s,l) ,以及投影点 ( s , 0 ) (s,0) (s,0) 处指引线切线与水平线成角 θ r \theta_{r} θr ,以及该点在指引线上的曲率 κ r ( s ) = ∣ y ( s ) ′ ′ x ( s ) ′ − x ( s ) ′ ′ y ( s ) ) ′ ∣ { [ x ( s ) ′ ] 2 + [ y ( s ) ′ ] 2 } 3 / 2 \kappa_{r}(s)= \frac{ \left| y(s)''x(s)'-x(s)''y(s))' \right|}{\{[x(s)']^{2} + [y(s)']^{2}\}^{3/2}} κr(s)={[x(s)]2+[y(s)]2}3/2y(s)x(s)x(s)y(s))
向量相关公式 { O P → = [ x 0 y 0 ] , OP向量 ∣ O P → ∣ = x 0 2 + y 0 2 , OP向量的模 O P → ^ = [ x 0 x 0 2 + y 0 2 y 0 x 0 2 + y 0 2 ] , OP向量的单位向量(法向量同向) O P → ~ = [ y 0 x 0 2 + y 0 2 − x 0 x 0 2 + y 0 2 ] = [ c o s θ s i n θ ] , OP向量的单位切向量(与法向量垂直) ∣ O P → ∣ = O P → ⋅ O P → ^ (12) \text{向量相关公式}\left\{\begin{aligned} &\overrightarrow{OP} = \begin{bmatrix} x_{0}\\ y_{0}\\ \end{bmatrix}, \text{OP向量}\\&\left| \overrightarrow{OP} \right| = \sqrt{x_{0}^{2}+y_{0}^{2}}, \text{OP向量的模}\\&\widehat{\overrightarrow{OP}} = \begin{bmatrix} \frac{x_{0}}{\sqrt{x_{0}^{2}+y_{0}^{2}}}\\ \frac{y_{0}}{\sqrt{x_{0}^{2}+y_{0}^{2}}}\\ \end{bmatrix} , \text{OP向量的单位向量(法向量同向)}\\&\widetilde{\overrightarrow{OP}}=\begin{bmatrix} \frac{y_{0}}{\sqrt{x_{0}^{2}+y_{0}^{2}}}\\ -\frac{x_{0}}{\sqrt{x_{0}^{2}+y_{0}^{2}}}\\ \end{bmatrix} = \begin{bmatrix} cos\theta\\ sin\theta\\ \end{bmatrix}, \text{OP向量的单位切向量(与法向量垂直)}\\&\left| \overrightarrow{OP} \right| = \overrightarrow{OP} \cdot \widehat{\overrightarrow{OP}}\\\end{aligned}\right.\tag{12} 向量相关公式OP =[x0y0],OP向量OP =x02+y02 ,OP向量的模OP =x02+y02 x0x02+y02 y0,OP向量的单位向量(法向量同向)OP =x02+y02 y0x02+y02 x0=[cosθsinθ],OP向量的单位切向量(与法向量垂直)OP =OP OP (12)

参数方程的曲线的曲率推导:

参考:曲率、曲率(对弧长)的导数以及曲率导数(对弧长)的导数的计算

参数方程确定的曲线的曲率表达式如何推导?
曲率及其一阶导 { Γ [ x ( t ) , y ( t ) ] , t ε [ 0 , L ] , 曲线的参数方程 κ = d θ d s , 曲率定义:角度对弧度的导数 d y d x = d y / d t d x / d t = y t ′ x t ′ = t a n θ , 这里的dt是对应的参数方程中的参数t d s 2 = ( d x ) 2 + ( d y ) 2 = ( x t ′ ⋅ d t ) 2 + ( y t ′ ⋅ d t ) 2 = [ ( x t ′ ) 2 + ( y t ′ ) 2 ] ⋅ ( d t ) 2 d s = ( x t ′ ) 2 + ( y t ′ ) 2 d t , 弧微分 c o s θ = x t ′ ( x t ′ ) 2 + ( y t ′ ) 2 s i n θ = y t ′ ( x t ′ ) 2 + ( y t ′ ) 2 s e c 2 θ = ( x t ′ ) 2 + ( y t ′ ) 2 ( x t ′ ) 2 y t ′ ′ x t ′ − x t ′ ′ y t ′ x t ′ 2 = d   t a n θ d t κ = d θ d s = s e c 2 θ   d θ s e c 2 θ   d s = d   t a n θ s e c 2 θ   d s = ( d   t a n θ / d t ) s e c 2 θ   ( d s / d t ) = 1 s e c 2 ⋅ y t ′ ′ x t ′ − x t ′ ′ y t ′ x t ′ 2 ( x t ′ ) 2 + ( y t ′ ) 2 = ( x t ′ ) 2 ( x t ′ ) 2 + ( y t ′ ) 2 ⋅ y t ′ ′ x t ′ − x t ′ ′ y t ′ x t ′ 2 ( x t ′ ) 2 + ( y t ′ ) 2 = y t ′ ′ x t ′ − x t ′ ′ y t ′ [ ( x t ′ ) 2 + ( y t ′ ) 2 ] 3 / 2 κ ′ = d κ d s = d κ d t d t d s = d ( y t ′ ′ x t ′ − x t ′ ′ y t ′ [ ( x t ′ ) 2 + ( y t ′ ) 2 ] 3 / 2 ) d t d t d s = ( y t ′ ′ x t ′ − x t ′ ′ y t ′ ) ′   [ ( x t ′ ) 2 + ( y t ′ ) 2 ] 3 / 2 − ( y t ′ ′ x t ′ − x t ′ ′ y t ′ )   ( [ ( x t ′ ) 2 + ( y t ′ ) 2 ] 3 / 2 ) ′ [ ( x t ′ ) 2 + ( y t ′ ) 2 ] 3 ⋅ 1 [ ( x t ′ ) 2 + ( y t ′ ) 2 ] 1 / 2 = ( y t ′ ′ ′ x t ′ + y t ′ ′ x t ′ ′ − x t ′ ′ ′ y t ′ − x t ′ ′ y t ′ ′ )   [ ( x t ′ ) 2 + ( y t ′ ) 2 ] 3 / 2 − ( y t ′ ′ x t ′ − x t ′ ′ y t ′ )   ( 3 2 [ [ ( x t ′ ) 2 + ( y t ′ ) 2 ] 1 / 2 ]   ( 2 x t ′ x t ′ ′ + 2 y t ′ y t ′ ′ ) ) [ ( x t ′ ) 2 + ( y t ′ ) 2 ] 3 ⋅ 1 [ ( x t ′ ) 2 + ( y t ′ ) 2 ] 1 / 2 = [ ( x t ′ ) 2 + ( y t ′ ) 2 ] 1 / 2 { ( y t ′ ′ ′ x t ′ − x t ′ ′ ′ y t ′ ) [ ( x t ′ ) 2 + ( y t ′ ) 2 ] − 3 2 ( y t ′ ′ x t ′ − x t ′ ′ y t ′ )   ( 2 x t ′ x t ′ ′ + 2 y t ′ y t ′ ′ ) } [ ( x t ′ ) 2 + ( y t ′ ) 2 ] 3 ⋅ 1 [ ( x t ′ ) 2 + ( y t ′ ) 2 ] 1 / 2 = ( y t ′ ′ ′ x t ′ − x t ′ ′ ′ y t ′ ) [ ( x t ′ ) 2 + ( y t ′ ) 2 ] − 3 ( y t ′ ′ x t ′ − x t ′ ′ y t ′ )   ( x t ′ x t ′ ′ + y t ′ y t ′ ′ ) [ ( x t ′ ) 2 + ( y t ′ ) 2 ] 3 (13) \text{曲率及其一阶导}\left\{\begin{aligned} &\Gamma [ x(t), y(t) ],t\varepsilon [0,L],\text{曲线的参数方程}\\&\kappa =\frac{d\theta }{ds}, \text{曲率定义:角度对弧度的导数}\\&\frac{dy}{dx}=\frac{dy/dt}{dx/dt}=\frac{y_{t}'}{x_{t}'}=tan\theta,\text{这里的dt是对应的参数方程中的参数t}\\&ds^{2}=(dx)^{2}+(dy)^{2}= (x_{t}' \cdot dt)^{2}+(y_{t}' \cdot dt)^{2}=[(x_{t}')^{2}+(y_{t}')^{2}] \cdot (dt)^{2}\\&ds= \sqrt{(x_{t}')^{2} + (y_{t}')^{2}} \quad dt, \text{弧微分}\\&cos\theta= \frac{x_{t}'}{\sqrt{(x_{t}')^{2} + (y_{t}')^{2}}}\\&sin\theta= \frac{y_{t}'}{\sqrt{(x_{t}')^{2} + (y_{t}')^{2}}}\\&sec^{2}\theta= \frac{(x_{t}')^{2} + (y_{t}')^{2}}{(x_{t}')^{2}}\\&\frac{y_{t}''x_{t}'-x_{t}''y_{t}'}{x_{t}'^{2}} = \frac{d \ tan\theta} {dt}\\&\kappa =\frac{d\theta }{ds} =\frac{sec^{2}\theta \ d\theta }{sec^{2}\theta \ ds}= \frac{d \ tan\theta}{sec^{2}\theta \ ds}=\frac{(d \ tan\theta/ dt)}{sec^{2}\theta \ (ds/dt)}\\&=\frac{1}{sec^{2}} \cdot \frac{\frac{y_{t}''x_{t}'-x_{t}''y_{t}'}{x_{t}'^{2}}}{\sqrt{(x_{t}')^{2} + (y_{t}')^{2}}}\\&=\frac{(x_{t}')^{2}}{(x_{t}')^{2} + (y_{t}')^{2}} \cdot \frac{\frac{y_{t}''x_{t}'-x_{t}''y_{t}'}{x_{t}'^{2}}}{\sqrt{(x_{t}')^{2} + (y_{t}')^{2}}}\\&=\frac{y_{t}''x_{t}'-x_{t}''y_{t}'}{[(x_{t}')^{2} + (y_{t}')^{2}]^{3/2}}\\&\kappa'=\frac{d\kappa}{ds}=\frac{d\kappa}{dt}\frac{dt}{ds}\\&=\frac{d(\frac{y_{t}''x_{t}'-x_{t}''y_{t}'}{[(x_{t}')^{2} + (y_{t}')^{2}]^{3/2}})}{dt} \frac{dt}{ds}\\&=\frac{(y_{t}''x_{t}'-x_{t}''y_{t}')' \ [(x_{t}')^{2} + (y_{t}')^{2}]^{3/2} \quad-\quad (y_{t}''x_{t}'-x_{t}''y_{t}') \ ([(x_{t}')^{2} + (y_{t}')^{2}]^{3/2})' }{[(x_{t}')^{2} + (y_{t}')^{2}]^{3}} \cdot \frac{1}{[(x_{t}')^{2} + (y_{t}')^{2}]^{1/2}}\\&=\frac{(y_{t}'''x_{t}' + y_{t}''x_{t}'' - x_{t}'''y_{t}' - x_{t}''y_{t}'') \ [(x_{t}')^{2} + (y_{t}')^{2}]^{3/2} \quad-\quad (y_{t}''x_{t}'-x_{t}''y_{t}') \ (\frac{3}{2}[[(x_{t}')^{2} + (y_{t}')^{2}]^{1/2}] \ (2x_{t}'x_{t}''+2y_{t}'y_{t}'')) }{[(x_{t}')^{2} + (y_{t}')^{2}]^{3}} \cdot \frac{1}{[(x_{t}')^{2} + (y_{t}')^{2}]^{1/2}}\\&=\frac{ [(x_{t}')^{2} + (y_{t}')^{2}]^{1/2} \quad \{ (y_{t}'''x_{t}' - x_{t}'''y_{t}') [(x_{t}')^{2} + (y_{t}')^{2}] \quad-\quad \frac{3}{2} (y_{t}''x_{t}'-x_{t}''y_{t}') \ (2x_{t}'x_{t}''+2y_{t}'y_{t}'') \} }{[(x_{t}')^{2} + (y_{t}')^{2}]^{3}} \cdot \frac{1}{[(x_{t}')^{2} + (y_{t}')^{2}]^{1/2}}\\&=\frac{ (y_{t}'''x_{t}' - x_{t}'''y_{t}') [(x_{t}')^{2} + (y_{t}')^{2}] \quad-\quad 3(y_{t}''x_{t}'-x_{t}''y_{t}') \ (x_{t}'x_{t}''+y_{t}'y_{t}'') }{[(x_{t}')^{2} + (y_{t}')^{2}]^{3}} \\\end{aligned}\right.\tag{13} 曲率及其一阶导Γ[x(t),y(t)],tε[0,L],曲线的参数方程κ=dsdθ,曲率定义:角度对弧度的导数dxdy=dx/dtdy/dt=xtyt=tanθ,这里的dt是对应的参数方程中的参数tds2=(dx)2+(dy)2=(xtdt)2+(ytdt)2=[(xt)2+(yt)2](dt)2ds=(xt)2+(yt)2 dt,弧微分cosθ=(xt)2+(yt)2 xtsinθ=(xt)2+(yt)2 ytsec2θ=(xt)2(xt)2+(yt)2xt2ytxtxtyt=dtd tanθκ=dsdθ=sec2θ dssec2θ dθ=sec2θ dsd tanθ=sec2θ (ds/dt)(d tanθ/dt)=sec21(xt)2+(yt)2 xt2ytxtxtyt=(xt)2+(yt)2(xt)2(xt)2+(yt)2 xt2ytxtxtyt=[(xt)2+(yt)2]3/2ytxtxtytκ=dsdκ=dtdκdsdt=dtd([(xt)2+(yt)2]3/2ytxtxtyt)dsdt=[(xt)2+(yt)2]3(ytxtxtyt) [(xt)2+(yt)2]3/2(ytxtxtyt) ([(xt)2+(yt)2]3/2)[(xt)2+(yt)2]1/21=[(xt)2+(yt)2]3(ytxt+ytxtxtytxtyt) [(xt)2+(yt)2]3/2(ytxtxtyt) (23[[(xt)2+(yt)2]1/2] (2xtxt+2ytyt))[(xt)2+(yt)2]1/21=[(xt)2+(yt)2]3[(xt)2+(yt)2]1/2{(ytxtxtyt)[(xt)2+(yt)2]23(ytxtxtyt) (2xtxt+2ytyt)}[(xt)2+(yt)2]1/21=[(xt)2+(yt)2]3(ytxtxtyt)[(xt)2+(yt)2]3(ytxtxtyt) (xtxt+ytyt)(13)

根据图F3所示的几何关系可得:
l = M P → T ⋅ N r → = ( O P → − O M → ) T ⋅ N r → (14) \begin{aligned} &l=\overrightarrow{MP}^{T} \cdot \overrightarrow{N_{r}} = (\overrightarrow{OP} - \overrightarrow{OM})^{T} \cdot \overrightarrow{N_{r}}\\\end{aligned}\tag{14} l=MP TNr =(OP OM )TNr (14)

其中 N r → \overrightarrow{N_{r}} Nr 为经过投影点 M M M 的单位法向量。为叙述简便,现约定了 e → = O P → 、 r → = O M → \overrightarrow{e}=\overrightarrow{OP}、\overrightarrow{r}=\overrightarrow{OM} e =OP r =OM ,则上式改写为:

l = ( e → − r → ) T ⋅ N r → (15) \begin{aligned} &l= (\quad \overrightarrow{e} - \overrightarrow{r} \quad)^{T} \cdot \overrightarrow{N_{r}}\\\end{aligned}\tag{15} l=(e r )TNr (15)

4.1.1 推导 l ˙ \dot{l} l˙

首先考虑如何确定 l ˙ \dot{l} l˙ 。将 l l l 对时间求导可得:(向量位移求导为速度)

l ˙ = ( e → ˙ − r → ˙ ) T ⋅ N r → + ( e → − r → ) T ⋅ N r → ˙ = v e T e → T N r → − s ˙ T r → T N r → + l N r → T N r → ˙ (16) \begin{aligned} \dot{l}&= (\dot{\overrightarrow{e}} - \dot{\overrightarrow{r}})^{T} \cdot \overrightarrow{N_{r}} + (\overrightarrow{e} - \overrightarrow{r})^{T} \cdot \dot{\overrightarrow{N_{r}}} \\&=v_{e}\overrightarrow{T_{e}}^{T}\overrightarrow{N_{r}} - \dot{s} \overrightarrow{T_{r}}^{T} \overrightarrow{N_{r}} +l \overrightarrow{N_{r}}^{T}\dot{\overrightarrow{N_{r}}}\end{aligned}\tag{16} l˙=(e ˙r ˙)TNr +(e r )TNr ˙=veTe TNr s˙Tr TNr +lNr TNr ˙(16)

其中, T e → \overrightarrow{T_{e}} Te P P P 点处的单位切向量; T r → \overrightarrow{T_{r}} Tr M M M 点处的单位切向量。由向量微积分学科中的Frenet-Serret公式可知:

d   N r → d s = − κ r T r → (17) \frac{d\ \overrightarrow{N_{r}}} {ds} = - \kappa_{r} \overrightarrow{T_{r}} \tag{17} dsd Nr =κrTr (17)

这意味着:

N r → ˙ = d   N r →   d s d s   d t = − κ r T r → s ˙ (18) \dot{\overrightarrow{N_{r}}}=\frac{d\ \overrightarrow{N_{r}}\ ds}{ds\ dt} = - \kappa_{r} \overrightarrow{T_{r}} \dot{s} \tag{18} Nr ˙=ds dtd Nr  ds=κrTr s˙(18)
将公式 (18) \text{(18)} (18) 代入公式 (16) \text{(16)} (16) ,并考虑 T r → T N r → = N r → T T r → = 0 \overrightarrow{T_{r}}^{T} \overrightarrow{N_{r}} = \overrightarrow{N_{r}}^{T}\overrightarrow{T_{r}}=0 Tr TNr =Nr TTr =0 ,则有:

l ˙ = v e T e → T N r → (19) \dot{l}=v_{e} \overrightarrow{T_{e}}^{T} \overrightarrow{N_{r}} \tag{19} l˙=veTe TNr (19)

其中, T e → T N r → \overrightarrow{T_{e}}^{T} \overrightarrow{N_{r}} Te TNr 为两个单位向量 T e → , N r → \overrightarrow{T_{e}}, \overrightarrow{N_{r}} Te ,Nr 的夹角余弦值,即 c o s ( π / 2 − θ e + θ r ) cos(\pi / 2 - \theta_{e} + \theta_{r}) cos(π/2θe+θr) ,将其代入公式 (19) \text{(19)} (19) 且令 Δ θ = θ e − θ r \Delta\theta=\theta_{e}-\theta_{r} Δθ=θeθr 则有:

l ˙ = v e s i n ( θ e − θ r ) = v e s i n ( Δ θ ) (20) \dot{l}=v_{e}sin(\theta_{e} - \theta_{r}) = v_{e}sin(\Delta\theta) \tag{20} l˙=vesin(θeθr)=vesin(Δθ)(20)

4.1.2 推导 l ′ l' l

l ′ = d l d s = d l d t d t d s = v e s i n ( Δ θ ) s ˙ (21) l'= \frac{dl}{ds} = \frac{dl}{dt} \frac{dt}{ds} = \frac {v_{e}sin(\Delta\theta)}{\dot{s}} \tag{21} l=dsdl=dtdldsdt=s˙vesin(Δθ)(21)

其中分母 s ˙ \dot{s} s˙ 暂时未确定。为了使推导能够进行下去、先聚焦于 (21) \text{(21)} (21) 中的 v e v_{e} ve 部分:

v e = e → ˙ T e → ˙ (22) v_{e} = \sqrt{ \dot{\overrightarrow{e}}^{T} \quad \dot{\overrightarrow{e}} } \tag{22} ve=e ˙Te ˙ (22)

其中 e → ˙ \dot{\overrightarrow{e}} e ˙ 部分有以下关系式:

e → ˙ = d   e → d t = d   ( r → + l N r → ) d t = r → ˙ + ( l ˙ N r → + l N r → ˙ ) = s ˙ T r →   +   l ˙ N r → −   κ r T r → s ˙ l = s ˙ T r → ( 1 − κ r l ) + l ˙ N r → (23) \begin{aligned}\dot{\overrightarrow{e}} &= \frac{d \ \overrightarrow{e} }{dt} = \frac{d \ (\overrightarrow{r} + l \overrightarrow{N_{r}}) }{dt} = \dot{\overrightarrow{r}} \quad + \quad (\dot{l} \overrightarrow{N_{r}} + l \dot{\overrightarrow{N_{r}}} )\\&= \dot{s} \overrightarrow{T_{r}} \ + \ \dot{l} \overrightarrow{N_{r}} - \ \kappa_{r} \overrightarrow{T_{r}} \dot{s} l \\&= \dot{s} \overrightarrow{T_{r}} (1 - \kappa_{r} l ) + \dot{l} \overrightarrow{N_{r}}\\\end{aligned} \tag{23} e ˙=dtd e =dtd (r +lNr )=r ˙+(l˙Nr +lNr ˙)=s˙Tr  + l˙Nr  κr

你可能感兴趣的:(自动驾驶,人工智能,机器学习)