Frenet坐标推导过程整理

1. 一些基础知识

这些是我在阅读相关文献时遇到的一些基本问题,在这里列出重点

1.1 对向量求导/点的相对运动

这里主要参考理论力学教材

Engineering_Mechanics_Dynamics_(13th_Edition) 第16.8小结

有两个坐标系,全局坐标系OXY,局部坐标系oxy。局部坐标系原点为A,自由运动点B。B可以表示在全局或者局部坐标系下,从图中根据向量关系有:
r ⃗ B = r ⃗ A + r ⃗ B / A (1) \vec{r}_B = \vec{r}_A + \vec{r}_{B/A} \tag{1} r B=r A+r B/A(1)
式中:
r ⃗ B / A = x B i + y B j (2) \vec{r}_{B/A} = x_B\bold{i}+y_B\bold{j} \tag{2} r B/A=xBi+yBj(2)
式中: i \bold{i} i j \bold{j} j分别是沿x,y轴的单位向量在坐标系OXY下的表示, x B x_B xB y B y_B yB分别是在oxy坐标系下的横纵坐标值。

公式两边分别对时间t求导可得:
v ⃗ B = v ⃗ A + d r ⃗ B / A d t (3) \vec{v}_B = \vec{v}_A + \frac{d\vec{r}_{B/A}}{dt} \tag{3} v B=v A+dtdr B/A(3)
式中:
d r ⃗ B / A d t = d ( x B i + y B j ) d t = d x B d t i + x B d i d t + d y B d t j + y B d j d t = ( d x B d t i + d y B d t j ) + ( x B d i d t + y B d j d t ) (4) \begin{aligned} \frac{d\vec{r}_{B/A}}{dt} &= \frac{d(x_B\bold{i}+y_B\bold{j})}{dt} \\ &=\frac{dx_B}{dt}\bold{i}+x_B\frac{d\bold{i}}{dt} + \frac{dy_B}{dt}\bold{j}+y_B\frac{d\bold{j}}{dt} \\ &= (\frac{dx_B}{dt}\bold{i}+\frac{dy_B}{dt}\bold{j})+(x_B\frac{d\bold{i}}{dt}+y_B\frac{d\bold{j}}{dt}) \tag{4} \end{aligned} dtdr B/A=dtd(xBi+yBj)=dtdxBi+xBdtdi+dtdyBj+yBdtdj=(dtdxBi+dtdyBj)+(xBdtdi+yBdtdj)(4)
式中最后一行第一个括号中是B点相对于坐标系oxy的速度分量描述,第二个括号中是在全局坐标系OXY下观测到的oxy的旋转引起的速度分量。
在这里插入图片描述
下面进一步计算第二个括号中的量,参考下图。
在这里插入图片描述
从图中可以看出,单位向量长度是1,因此可以近似的有:
d i d t = 1 ⋅ d θ d t ⋅ j = ω j (5) \frac{d\bold{i}}{dt}=1 \cdot \frac{d\theta}{dt} \cdot \bold{j}=\omega\bold{j} \tag{5} dtdi=1dtdθj=ωj(5)
同理有:
d j d t = − 1 ⋅ d θ d t ⋅ i = − ω i (6) \frac{d\bold{j}}{dt}=-1 \cdot \frac{d\theta}{dt} \cdot \bold{i}=-\omega\bold{i} \tag{6} dtdj=1dtdθi=ωi(6)

1.2 切线法线和曲率的关系

这一部分的内容主要参考如下两篇博客

1.https://math.libretexts.org/Bookshelves/Calculus/Supplemental_Modules_(Calculus)/Vector_Calculus/2%3A_Vector-Valued_Functions_and_Motion_in_Space/2.3%3A_Curvature_and_Normal_Vectors_of_a_Curve
2.http://web.mit.edu/hyperbook/Patrikalakis-Maekawa-Cho/node23.html

首先有切线的定义:
T ⃗ = d r ⃗ d t (7) \vec{T} = \frac{d\vec{r}}{dt} \tag{7} T =dtdr (7)
求切线的单位向量,这里求成单位向量的原因猜测:从单位时间内改变量这一角度,有可能无法进行前后比较去求得法线,只有对单位向量求微分才能获得法线。以下将 (   ) ˙ \dot{(\ )} ( )˙看作对时间t求导,将 (   ) ′ (\ )' ( )看作对距离s求导。单位切线向量:
T ^ = d r ⃗ / d t ∥ d r ⃗ / d t ∥ = d r ⃗ / d t d s / d t = d r ⃗ d s = r ⃗ ′ (8) \hat{T} = \frac{d\vec{r}/dt}{\|d\vec{r}/dt\|}=\frac{d\vec{r}/dt}{ds/dt}=\frac{d\vec{r}}{ds} = \vec{r}' \tag{8} T^=dr /dtdr /dt=ds/dtdr /dt=dsdr =r (8)
由于单位向量自身点成为1:
T ^ ⋅ T ^ = 1 (9) \hat{T} \cdot \hat{T} = 1 \tag{9} T^T^=1(9)
两边对s求导,有:
r ⃗ ′ ⋅ r ⃗ ′ ′ = 0 (10) \vec{r}' \cdot \vec{r}'' = 0 \tag{10} r r =0(10)
上式表明 r ⃗ ′ ′ \vec{r}'' r 是法向量,注意这里:单位切向量的变化量是法向量,但不一定是单位法向量,比如下图
在这里插入图片描述
从图中可以看出,当 r ⃗ ′ \vec{r}' r 在前后两个时刻变化很小时,会导致形成的差向量特别小,也就是曲率特别小,近似一条直线,利用这个原理,可以求曲率。从上图及导数定义有:
r ⃗ ′ ′ = lim ⁡ Δ s → 0 r ⃗ ′ ( s + Δ s ) − r ⃗ ′ ( s ) Δ s (11) \vec{r}''=\lim_{\Delta s \to 0} \frac{\vec{r}'(s+\Delta s)-\vec{r}'(s)}{\Delta s} \tag{11} r =Δs0limΔsr (s+Δs)r (s)(11)
以及:
∥ r ⃗ ′ ′ ∥ = lim ⁡ Δ s → 0 ∥ r ⃗ ′ ( s + Δ s ) − r ⃗ ′ ( s ) ∥ Δ s (12) \|\vec{r}''\|=\lim_{\Delta s \to 0} \frac{\|\vec{r}'(s+\Delta s)-\vec{r}'(s)\|}{\Delta s} \tag{12} r =Δs0limΔsr (s+Δs)r (s)(12)
式中:
∥ r ⃗ ′ ( s + Δ s ) − r ⃗ ′ ( s ) ∥ = 1 ⋅ Δ θ (13) \|\vec{r}'(s+\Delta s)-\vec{r}'(s)\|= 1 \cdot \Delta \theta \tag{13} r (s+Δs)r (s)=1Δθ(13)
并且:
Δ s = ρ ⋅ Δ θ (14) \Delta s = \rho \cdot \Delta \theta \tag{14} Δs=ρΔθ(14)
将式(12)化简可得
∥ r ⃗ ′ ′ ∥ = lim ⁡ Δ s → 0 Δ θ Δ s = lim ⁡ Δ s → 0 Δ θ ρ ⋅ Δ θ = 1 / ρ = κ (15) \|\vec{r}''\|=\lim_{\Delta s \to 0}\frac{\Delta \theta}{\Delta s}=\lim_{\Delta s \to 0} \frac{\Delta \theta}{\rho \cdot \Delta \theta} = 1/\rho=\kappa \tag{15} r =Δs0limΔsΔθ=Δs0limρΔθΔθ=1/ρ=κ(15)

2. Frenet坐标推导过程

推导过程参考了博客:

https://blog.csdn.net/davidhopper/article/details/79162385

考虑下图设定:
在这里插入图片描述

2.1 求解 l ˙ \dot{l} l˙ s ˙ \dot{s} s˙

参照上文所述理论力学公式部分(1)(2)(3)(4)有:
x ⃗ = r ⃗ + l ( s ) ⋅ N ⃗ r (16) \vec{x}=\vec{r}+l(s) \cdot \vec{N}_r \tag{16} x =r +l(s)N r(16)
对公式两边求导获得速度关系:
x ⃗ ˙ = r ⃗ ˙ + l ˙ ( s ) ⋅ N ⃗ r + l ( s ) ⋅ N ⃗ ˙ r (17) \dot{\vec{x}}=\dot{\vec{r}}+\dot{l}(s) \cdot \vec{N}_r + l(s) \cdot \dot{\vec{N}}_r \tag{17} x ˙=r ˙+l˙(s)N r+l(s)N ˙r(17)
下面进行逐项替换, r ⃗ ˙ \dot{\vec{r}} r ˙等于速度大小乘以速度方向,有下式
r ⃗ ˙ = s ˙ ⋅ T ⃗ r (18) \dot{\vec{r}} = \dot{s} \cdot \vec{T}_r \tag{18} r ˙=s˙T r(18)
根据上文公式(6)可以得到:
N ⃗ ˙ r = − ω ⋅ T ⃗ r = − s ˙ ⋅ κ ⋅ T ⃗ r (19) \dot{\vec{N}}_r = -\omega \cdot \vec{T}_r =- \dot{s} \cdot \kappa \cdot \vec{T}_r \tag{19} N ˙r=ωT r=s˙κT r(19)
将式(18)(19)带入式(17)可得:
x ⃗ ˙ = s ˙ T ⃗ r − s ˙ κ l T ⃗ r + l ˙ N ⃗ r (20) \dot{\vec{x}}=\dot{s}\vec{T}_r-\dot{s}\kappa l \vec{T}_r+ \dot{l}\vec{N}_r \tag{20} x ˙=s˙T rs˙κlT r+l˙N r(20)
现在目的是求出 s ˙ \dot{s} s˙ l ˙ \dot{l} l˙,求解方法时消元,将上式两侧分别向 T ⃗ r \vec{T}_r T r N ⃗ r \vec{N}_r N r方向投影。首先向 N ⃗ r \vec{N}_r N r方向投影,等式(20)两侧分别点乘 N ⃗ r \vec{N}_r N r,可得:
x ⃗ ˙ N ⃗ r = l ˙ N ⃗ r N ⃗ r (21) \dot{\vec{x}} \vec{N}_r=\dot{l}\vec{N}_r\vec{N}_r \tag{21} x ˙N r=l˙N rN r(21)
化简可得:
l ˙ = v sin ⁡ ( Δ θ ) (22) \dot{l}=v\sin(\Delta \theta) \tag{22} l˙=vsin(Δθ)(22)
再将等式(20)向 T ⃗ r \vec{T}_r T r方向投影,可得:
x ⃗ ˙ T ⃗ r = s ˙ ( 1 − κ l ) T ⃗ r T ⃗ r (23) \dot{\vec{x}} \vec{T}_r =\dot{s}(1-\kappa l)\vec{T}_r \vec{T}_r \tag{23} x ˙T r=s˙(1κl)T rT r(23)
化简可得:
s ˙ = v cos ⁡ ( Δ θ ) 1 − κ l (24) \dot{s}=\frac{v \cos(\Delta \theta)}{1-\kappa l} \tag{24} s˙=1κlvcos(Δθ)(24)

2.2 求解 l ′ l' l

以下接着求解 l ′ l' l,考虑到
l ˙ = d l d t = d l d s d s d t = s ˙ d l d s = s ˙ l ′ (25) \dot{l}=\frac{dl}{dt}= \frac{dl}{ds} \frac{ds}{dt}=\dot{s}\frac{dl}{ds} = \dot{s} l' \tag{25} l˙=dtdl=dsdldtds=s˙dsdl=s˙l(25)
代入式(22),可得:
s ˙ l ′ = v sin ⁡ ( Δ θ ) (26) \dot{s} l' = v \sin(\Delta \theta) \tag{26} s˙l=vsin(Δθ)(26)
借助式(24)化简:
l ′ = v s ˙ sin ⁡ ( Δ θ ) = ( 1 − κ l ) tan ⁡ ( Δ θ ) (27) l'=\frac{v}{\dot{s}} \sin(\Delta \theta)=(1-\kappa l)\tan(\Delta \theta) \tag{27} l=s˙vsin(Δθ)=(1κl)tan(Δθ)(27)

2.3 求解 l ′ ′ l'' l

进一步求解 l ′ ′ l'' l,将式(27)对弧长s求导,可得:
l ′ ′ = ( 1 − κ l ) ′ tan ⁡ ( Δ θ ) + ( 1 − κ l ) tan ⁡ ′ ( Δ θ ) = − ( κ ′ l + κ l ′ ) tan ⁡ ( Δ θ ) + ( 1 − κ l ) 1 cos ⁡ 2 ( Δ θ ) ( Δ θ ) ′ (28) \begin{aligned} l'' &=(1-\kappa_ l)' \tan(\Delta \theta)+(1-\kappa l) \tan'(\Delta \theta) \\ &= -(\kappa ' l + \kappa l')\tan(\Delta \theta)+(1-\kappa l) \frac{1}{\cos^2(\Delta \theta)}(\Delta \theta)' \tag{28} \end{aligned} l=(1κl)tan(Δθ)+(1κl)tan(Δθ)=(κl+κl)tan(Δθ)+(1κl)cos2(Δθ)1(Δθ)(28)
利用公式(15)(24),求解 ( Δ θ ) ′ (\Delta \theta)' (Δθ)
( Δ θ ) ′ = ( θ x − θ r ) ′ = d θ x d s − d θ r d s = d θ x d s x d s x d s − κ r = d θ x d s x d s x d t d t d s − κ r = κ x ⋅ v s ˙ − κ r = κ x ( 1 − κ r l ) cos ⁡ ( Δ θ ) − κ r (29) \begin{aligned} (\Delta \theta)' &=(\theta_x-\theta_r)' \\ &=\frac{d\theta_x}{ds}-\frac{d\theta_r}{ds} \\ &=\frac{d\theta_x}{ds_x}\frac{ds_x}{ds}-\kappa_r \\ &=\frac{d\theta_x}{ds_x}\frac{ds_x}{dt}\frac{dt}{ds}-\kappa_r\\ &=\frac{\kappa_x \cdot v}{\dot{s}} - \kappa_r \\ &=\frac{\kappa_x(1-\kappa_r l)}{\cos(\Delta \theta)} - \kappa_r \tag{29} \end{aligned} (Δθ)=(θxθr)=dsdθxdsdθr=dsxdθxdsdsxκr=dsxdθxdtdsxdsdtκr=s˙κxvκr=cos(Δθ)κx(1κrl)κr(29)
将式(29)代入式(28),可得:
l ′ ′ = − ( κ ′ l + κ l ′ ) tan ⁡ ( Δ θ ) + ( 1 − κ l ) 1 cos ⁡ 2 ( Δ θ ) ( κ x ( 1 − κ r l ) cos ⁡ ( θ ) − κ r ) (30) l''= -(\kappa ' l + \kappa l')\tan(\Delta \theta)+(1-\kappa l) \frac{1}{\cos^2(\Delta \theta)}(\frac{\kappa_x(1-\kappa_r l)}{\cos(\theta)} - \kappa_r) \tag{30} l=(κl+κl)tan(Δθ)+(1κl)cos2(Δθ)1(cos(θ)κx(1κrl)κr)(30)

2.4 求解 a x = v ˙ x a_x = \dot{v}_x ax=v˙x

根据式(24)可得:
v = s ˙ ( 1 − κ l ) cos ⁡ ( Δ θ ) v=\frac{\dot{s}(1-\kappa l)}{\cos(\Delta \theta)} v=cos(Δθ)s˙(1κl)
两边求导,可以根据式(29)进一步展开:
v ˙ = s ¨ 1 − κ l cos ⁡ ( Δ θ ) + s ˙ d d s ( 1 − κ l cos ⁡ ( Δ θ ) ) d s d t = s ¨ 1 − κ l cos ⁡ ( Δ θ ) + s ¨ 2 [ ( 1 − κ l ) ′ ( 1 cos ⁡ ( Δ θ ) ) − ( 1 − κ l ) ( tan ⁡ ( Δ θ ) cos ⁡ ( Δ θ ) ( Δ θ ) ′ ) ] \begin{aligned} \dot{v}&=\ddot{s} \frac{1-\kappa l}{\cos(\Delta \theta)} + \dot{s} \frac{d}{ds}(\frac{1-\kappa l}{\cos(\Delta \theta)})\frac{ds}{dt} \\ &=\ddot{s} \frac{1-\kappa l}{\cos(\Delta \theta)} + \ddot{s}^2[(1-\kappa l)'(\frac{1}{\cos(\Delta \theta)})-(1-\kappa l)(\frac{\tan(\Delta \theta)}{\cos(\Delta \theta)}(\Delta \theta)')] \end{aligned} v˙=s¨cos(Δθ)1κl+s˙dsd(cos(Δθ)1κl)dtds=s¨cos(Δθ)1κl+s¨2[(1κl)(cos(Δθ)1)(1κl)(cos(Δθ)tan(Δθ)(Δθ))]

到此完成了Frenet坐标转换过程的推导。后续会看看该方法在轨迹规划过程中的应用。

  • 6
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值