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}
rB=rA+rB/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}
rB/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}
vB=vA+dtdrB/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}
dtdrB/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=1⋅dtdθ⋅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=−1⋅dtdθ⋅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/dt∥dr/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′′=Δs→0limΔ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′′∥=Δs→0limΔs∥r′(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′′∥=Δs→0limΔsΔθ=Δs→0limρ⋅ΔθΔθ=1/ρ=κ(15)
2. Frenet坐标推导过程
推导过程参考了博客:
https://blog.youkuaiyun.com/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)⋅Nr(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)⋅Nr+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˙⋅Tr(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=−ω⋅Tr=−s˙⋅κ⋅Tr(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˙Tr−s˙κlTr+l˙Nr(20)
现在目的是求出
s
˙
\dot{s}
s˙和
l
˙
\dot{l}
l˙,求解方法时消元,将上式两侧分别向
T
⃗
r
\vec{T}_r
Tr和
N
⃗
r
\vec{N}_r
Nr方向投影。首先向
N
⃗
r
\vec{N}_r
Nr方向投影,等式(20)两侧分别点乘
N
⃗
r
\vec{N}_r
Nr,可得:
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˙Nr=l˙NrNr(21)
化简可得:
l
˙
=
v
sin
(
Δ
θ
)
(22)
\dot{l}=v\sin(\Delta \theta) \tag{22}
l˙=vsin(Δθ)(22)
再将等式(20)向
T
⃗
r
\vec{T}_r
Tr方向投影,可得:
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˙Tr=s˙(1−κl)TrTr(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θx−dsdθr=dsxdθxdsdsx−κr=dsxdθxdtdsxdsdt−κr=s˙κx⋅v−κ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坐标转换过程的推导。后续会看看该方法在轨迹规划过程中的应用。