时间归一化五次多项式解析解
1. 五次多项式定义
在标准化时间 t ∈ [ 0 , 1 ] t \in [0,1] t∈[0,1] 上,五次多项式定义为:
p ( t ) = c 0 + c 1 t + c 2 t 2 + c 3 t 3 + c 4 t 4 + c 5 t 5 p(t) = c_0 + c_1 t + c_2 t^2 + c_3 t^3 + c_4 t^4 + c_5 t^5 p(t)=c0+c1t+c2t2+c3t3+c4t4+c5t5
其中
t
t
t 是标准化时间:
t
=
time
−
t
start
T
t = \frac{\text{time} - t_{\text{start}}}{T}
t=Ttime−tstart
T
=
t
end
−
t
start
T = t_{\text{end}} - t_{\text{start}}
T=tend−tstart
2. 导数表达式
一阶导数(速度):
p
′
(
t
)
=
c
1
+
2
c
2
t
+
3
c
3
t
2
+
4
c
4
t
3
+
5
c
5
t
4
p'(t) = c_1 + 2c_2 t + 3c_3 t^2 + 4c_4 t^3 + 5c_5 t^4
p′(t)=c1+2c2t+3c3t2+4c4t3+5c5t4
二阶导数(加速度):
p
′
′
(
t
)
=
2
c
2
+
6
c
3
t
+
12
c
4
t
2
+
20
c
5
t
3
p''(t) = 2c_2 + 6c_3 t + 12c_4 t^2 + 20c_5 t^3
p′′(t)=2c2+6c3t+12c4t2+20c5t3
3. 边界条件
我们有6个边界条件来确定6个系数:
起始点 ( t = 0 t = 0 t=0):
- 位置: p ( 0 ) = p 0 p(0) = p_0 p(0)=p0
- 速度: p ′ ( 0 ) = v 0 ⋅ T p'(0) = v_0 \cdot T p′(0)=v0⋅T (注意:这里需要转换为标准化时间的导数)
- 加速度: p ′ ′ ( 0 ) = a 0 ⋅ T 2 p''(0) = a_0 \cdot T^2 p′′(0)=a0⋅T2
终止点 ( t = 1 t = 1 t=1):
- 位置: p ( 1 ) = p 1 p(1) = p_1 p(1)=p1
- 速度: p ′ ( 1 ) = v 1 ⋅ T p'(1) = v_1 \cdot T p′(1)=v1⋅T
- 加速度: p ′ ′ ( 1 ) = a 1 ⋅ T 2 p''(1) = a_1 \cdot T^2 p′′(1)=a1⋅T2
时间缩放说明
实际速度和加速度与标准化时间下的导数关系:
- 实际速度: v real = d p d time = d p d t ⋅ d t d time = p ′ ( t ) ⋅ 1 T v_{\text{real}} = \frac{dp}{d\text{time}} = \frac{dp}{dt} \cdot \frac{dt}{d\text{time}} = p'(t) \cdot \frac{1}{T} vreal=dtimedp=dtdp⋅dtimedt=p′(t)⋅T1
- 实际加速度: a real = d 2 p d time 2 = p ′ ′ ( t ) ⋅ 1 T 2 a_{\text{real}} = \frac{d^2p}{d\text{time}^2} = p''(t) \cdot \frac{1}{T^2} areal=dtime2d2p=p′′(t)⋅T21
因此:
- p ′ ( t ) = v real ⋅ T p'(t) = v_{\text{real}} \cdot T p′(t)=vreal⋅T
- p ′ ′ ( t ) = a real ⋅ T 2 p''(t) = a_{\text{real}} \cdot T^2 p′′(t)=areal⋅T2
4. 系数求解
4.1 前三个系数(直接由起始条件确定)
c
0
c_0
c0: 由
p
(
0
)
=
p
0
p(0) = p_0
p(0)=p0
c
0
=
p
0
c_0 = p_0
c0=p0
c
1
c_1
c1: 由
p
′
(
0
)
=
v
0
⋅
T
p'(0) = v_0 \cdot T
p′(0)=v0⋅T
c
1
=
v
0
⋅
T
c_1 = v_0 \cdot T
c1=v0⋅T
c
2
c_2
c2: 由
p
′
′
(
0
)
=
a
0
⋅
T
2
p''(0) = a_0 \cdot T^2
p′′(0)=a0⋅T2
2
c
2
=
a
0
⋅
T
2
⇒
c
2
=
1
2
a
0
T
2
2c_2 = a_0 \cdot T^2 \Rightarrow c_2 = \frac{1}{2}a_0 T^2
2c2=a0⋅T2⇒c2=21a0T2
4.2 后三个系数(由终止条件确定)
将终止条件代入多项式:
位置条件:
p
(
1
)
=
p
1
p(1) = p_1
p(1)=p1
c
0
+
c
1
+
c
2
+
c
3
+
c
4
+
c
5
=
p
1
c_0 + c_1 + c_2 + c_3 + c_4 + c_5 = p_1
c0+c1+c2+c3+c4+c5=p1
速度条件:
p
′
(
1
)
=
v
1
⋅
T
p'(1) = v_1 \cdot T
p′(1)=v1⋅T
c
1
+
2
c
2
+
3
c
3
+
4
c
4
+
5
c
5
=
v
1
⋅
T
c_1 + 2c_2 + 3c_3 + 4c_4 + 5c_5 = v_1 \cdot T
c1+2c2+3c3+4c4+5c5=v1⋅T
加速度条件:
p
′
′
(
1
)
=
a
1
⋅
T
2
p''(1) = a_1 \cdot T^2
p′′(1)=a1⋅T2
2
c
2
+
6
c
3
+
12
c
4
+
20
c
5
=
a
1
⋅
T
2
2c_2 + 6c_3 + 12c_4 + 20c_5 = a_1 \cdot T^2
2c2+6c3+12c4+20c5=a1⋅T2
4.3 构建线性方程组
将已知的 c 0 c_0 c0、 c 1 c_1 c1、 c 2 c_2 c2 代入,得到关于 c 3 c_3 c3、 c 4 c_4 c4、 c 5 c_5 c5 的线性方程组:
[ 1 1 1 3 4 5 6 12 20 ] [ c 3 c 4 c 5 ] = [ p 1 − c 0 − c 1 − c 2 v 1 T − c 1 − 2 c 2 a 1 T 2 − 2 c 2 ] \begin{bmatrix}1 & 1 & 1 \\3 & 4 & 5 \\6 & 12 & 20\end{bmatrix} \begin{bmatrix}c_3 \\ c_4 \\ c_5\end{bmatrix}= \begin{bmatrix} p_1 - c_0 - c_1 - c_2 \\ v_1 T - c_1 - 2c_2 \\ a_1 T^2 - 2c_2 \end{bmatrix} 13614121520 c3c4c5 = p1−c0−c1−c2v1T−c1−2c2a1T2−2c2
定义右侧向量:
term1
=
p
1
−
p
0
−
v
0
T
−
1
2
a
0
T
2
term2
=
v
1
T
−
v
0
T
−
a
0
T
2
term3
=
a
1
T
2
−
a
0
T
2
\begin{align} \text{term1} &= p_1 - p_0 - v_0 T - \frac{1}{2}a_0 T^2 \\ \text{term2} &= v_1 T - v_0 T - a_0 T^2 \\ \text{term3} &= a_1 T^2 - a_0 T^2 \end{align}
term1term2term3=p1−p0−v0T−21a0T2=v1T−v0T−a0T2=a1T2−a0T2
4.4 求解线性方程组
对矩阵方程:
[
1
1
1
3
4
5
6
12
20
]
[
c
3
c
4
c
5
]
=
[
term1
term2
term3
]
\begin{bmatrix}1 & 1 & 1 \\3 & 4 & 5 \\6 & 12 & 20\end{bmatrix} \begin{bmatrix}c_3 \\ c_4 \\ c_5\end{bmatrix}= \begin{bmatrix} \text{term1} \\ \text{term2} \\ \text{term3} \end{bmatrix}
13614121520
c3c4c5
=
term1term2term3
通过高斯消元法或直接求逆矩阵,得到解析解:
c 3 = 10 ⋅ term1 − 4 ⋅ term2 + 0.5 ⋅ term3 c 4 = − 15 ⋅ term1 + 7 ⋅ term2 − term3 c 5 = 6 ⋅ term1 − 3 ⋅ term2 + 0.5 ⋅ term3 \begin{align} c_3 &= 10 \cdot \text{term1} - 4 \cdot \text{term2} + 0.5 \cdot \text{term3} \\ c_4 &= -15 \cdot \text{term1} + 7 \cdot \text{term2} - \text{term3} \\ c_5 &= 6 \cdot \text{term1} - 3 \cdot \text{term2} + 0.5 \cdot \text{term3} \end{align} c3c4c5=10⋅term1−4⋅term2+0.5⋅term3=−15⋅term1+7⋅term2−term3=6⋅term1−3⋅term2+0.5⋅term3