TT Lab
博客

한국어 English 日本語 中文

开始
博客

博客

轨迹生成:3次与5次多项式、梯形、最小加加速度、极限内的最短时间、通过点

状态:草稿 (2026-10-18),实测。 数据使用笔记本电脑(Apple M1 Max,macOS 26.5)上的 Python 3.9.6 与 numpy 2.0.2 直接计算得出。原始数据与代码:工作目录 measure/robot-arm-basics/中的 m08_traj.py, out/m08_traj.json。关节速度、加速度极限和转动惯量均为假设值,并非使用实际电机测得的数据(未进行硬件实测)。参考资料查阅于 2026-10-18。编写规则:实测数据为基本原则,未测出的标记为“未实测”,未确认的标记为“未确认”。

目录

1. 直觉:就像开车

从一个红绿灯到下一个红绿灯有多种走法。如果把油门踩到底并在最后急刹车,到达得最快,但乘客会向前倾斜。如果轻轻踩下又轻轻松开会很舒适,但会稍微慢一些。机器人关节也是如此。即使以相同的时间移动相同的距离,根据速度形状的不同,电机需要提供的最高速度、扭矩以及手臂受到的冲击也会有所不同。

乒乓球机器人的轨迹还有一个特殊要求: 它到达的不是静止的位置,而是必须在指定的时间以指定的速度通过 。因为必须在击打瞬间产生第7部分中设定的球拍速度。

2. 图表:速度的形状

정지→정지 이동의 속도 모양(Δ와 T 로 정규화) 0 0.25 0.5 0.75 1 0 0.5 1 1.5 2 시간 t/T 속도 ÷ (Δ/T) 5차(최소 저크) 최고 1.875 3차 최고 1.5 사다리꼴 1.5 S-곡선 3차는 출발 순간 가속도가 0 이 아니다(6Δ/T²로 튐). 5차와 S-곡선은 0 에서 시작한다. 같은 시간이면 매끄러울수록 최고 속도가 높아진다.
图表:3次、5次、梯形和 S 形曲线轨迹的归一化速度曲线

3. 计算

3.1 多项式时间缩放

当单个关节从 q0 移动到 q1 用时 T 时,通过使用 τ = t/T,将其写作 q(t) = q0 + (q1 − q0)·s(τ)。其中 s 是从 0 到 1 的函数。

3차:  s = 3τ² − 2τ³                 끝점 조건: 위치·속도 (4개)
5차:  s = 10τ³ − 15τ⁴ + 6τ⁵          끝점 조건: 위치·속도·가속도 (6개)

《Modern Robotics》9.2.2.1 节指出,3次多项式的最高速度为 (3/2)·Δ/T(在中间),最高加速度为 6·Δ/T²(在两端)。由于3次多项式的出发瞬间加速度从 0 突变为 6Δ/T²,因此该瞬间的加加速度(jerk,加速度的变化率)为无穷大,该节解释说这可能会引起振动。5次多项式将终点加速度也设为 0,从而消除了这个问题。5次多项式的最高速度 15/8·Δ/T 和最高加速度 10/√3·Δ/T² 并非留在书的正文中而是作为练习题,因此我们进行了直接计算,并在第4节中通过数值进行了确认。

3.2 最小加加速度与最小加速度

5次多项式还有一个名字。在所有从静止到静止的光滑轨迹中,它是 加加速度平方的积分最小的轨迹。从变分法来看,使 ∫(q⃛)² 最小化的函数满足 q⁽⁶⁾ = 0,因此它是5次多项式,而6个终点条件唯一确定了系数(由我们推导)。Flash 和 Hogan (1985) 报告称,人类手部的运动可以很好地用手部加加速度平方积分最小化的模型来解释(在摘要中确认,正文中未确认)。

根据同样的逻辑,如果最小化 加速度平方的积分,则由于 q⁽⁴⁾ = 0,从而得出3次多项式。Koç 等人于 2018 年的乒乓球机器人以此标准优化了每个关节的3次多项式轨迹。加速度的平方与扭矩的平方成正比,即与电机的铜损(发热)成正比,因此这是从能量角度出发的选择。

3.3 梯形、S形曲线与时间最优

当只有速度极限 v_max 和加速度极限 a_max 时,最快的运动是“最大加速度加速 → 保持最高速度 → 最大减速度减速”。由于速度曲线呈梯形,因此被称为梯形轮廓;如果距离太短而无法达到最高速度,则会变成三角形(bang-bang)轮廓。

Δ ≤ v_max²/a_max:   T_opt = 2·√(Δ / a_max)                 (삼각형)
그 밖:              T_opt = Δ / v_max + v_max / a_max        (사다리꼴)

梯形轮廓的加速度也像阶梯一样变化,导致加加速度为无穷大。如果连加速度的变化也加以限制,加速段就会再次被分为三段,从而变成7段 S 形曲线(《Modern Robotics》9.2.2.3 节)。

3.4 击打轨迹:末端速度不为 0

乒乓球机器人的关节轨迹分为两段。

  1. 挥拍: 从当前状态(静止)到击打时刻 T 时达到 (q_h, q̇_h, q̈ = 0)。如果在击打瞬间将加速度设为 0,则在接触的极短时间内球拍速度几乎保持恒定。
  2. 停止(随动): 从该状态再次回到静止。

由于5次多项式的6个终点条件可以赋予任意值,因此这两段都可以用相同的函数来构造。只需进行一次 6×6 线性联立方程求解即可得出系数,该计算耗时 7.2 µs。Mülling 等人于 2013 年将动态运动原语(DMP)的目标移动替换为5次多项式,连同终点速度和加速度一起匹配,也是出于同样的原因(第3.2节,公式 8)。

def quintic_coeffs(q0, v0, a0, q1, v1, a1, T):
    A = [[1, 0, 0,    0,      0,       0      ],
         [0, 1, 0,    0,      0,       0      ],
         [0, 0, 2,    0,      0,       0      ],
         [1, T, T**2, T**3,   T**4,    T**5   ],
         [0, 1, 2*T,  3*T**2, 4*T**3,  5*T**4 ],
         [0, 0, 2,    6*T,    12*T**2, 20*T**3]]
    return np.linalg.solve(A, [q0, v0, a0, q1, v1, a1])     # q(t) = Σ c_k t^k

当球的预测被修正时,只需将当前状态(位置、速度、加速度)作为新的出发点,针对剩余时间重新求解即可。由于连出发点的加速度也进行了衔接,因此在修正时加速度也不会发生跳变。

타격 궤적: 0.12초 만에 10 rad/s 로 지나고, 0.1초에 멈춘다 0 0.1 0.2 0.3 0 4 8 12 시간(초) 속도(rad/s) 0 0.4 0.8 1.2 각(rad) 타격 속도 각 구간 1: (0, 0, 0) → (0.6 rad, 10 rad/s, 0) 5차. 구간 2: 같은 상태 → 정지 5차. 타격 순간 가속도를 0 으로 두어 라켓 속도가 접촉 동안 거의 일정하다.
图表:击打轨迹的关节角度与速度:在 0.12 秒时以 10 rad/s 的速度通过并停止 0.1 秒

4. 实测

4.1 相同的距离,相同的时间,不同的形状

对以 T = 0.3 s 移动 Δ = 1 rad 的四种轨迹进行了 100,001 个点的采样并进行了数值微分。

轨迹 最高速度 最高加速度 出发瞬间加速度 最高加加速度(内部) ∫加速度² dt
3次 5.00 rad/s 66.7 rad/s² 66.7 457 rad/s³ 444
5次(最小加加速度) 6.25 64.2 0.01 2,262 635
梯形(各占 1/3) 5.00 50.0 50.0 (阶梯) 500
S形曲线(加加速度段 10%) 5.00 71.4 0.03 2,385 612

公式值分别为:3次 5.0·66.7,5次 6.25·64.15·2222(加加速度),梯形 5.0·50.0。数值微分结果与公式相符(5次加加速度由于差分误差大 2%)。

4.2 在极限内能走多快

在给定关节极限(v_max, a_max)的情况下,比较了各轨迹的最短时间。

极限 Δ 时间最优 5次 3次 5次 ÷ 最优
20 rad/s, 300 rad/s² 0.2 rad 0.052 s 0.062 s 0.063 s 1.20
20 rad/s, 300 rad/s² 1.0 rad 0.115 s 0.139 s 0.141 s 1.20
20 rad/s, 300 rad/s² 2.0 rad 0.167 s 0.196 s 0.200 s 1.18
10 rad/s, 100 rad/s² 1.0 rad 0.200 s 0.240 s 0.245 s 1.20
10 rad/s, 100 rad/s² 2.0 rad 0.300 s 0.375 s 0.346 s 1.25

5次多项式通常比时间最优 慢 20%的人民币或时间。在受限于加速度极限的短距离移动中,该比例保持恒定为 √(10/√3 ÷ 4) = 1.20(由我们计算得出)。对于第1部分中时间预算紧张的快球来说,这 20% 的时间非常宝贵。因此,应使用接近时间最优的轨迹(梯形、S形曲线,或将极限作为约束的优化方法),并通过 S 形曲线的加加速度限制来保证平滑性。

4.3 击打轨迹的最短时间

在速度极限 20 rad/s 和加速度极限 300·600 rad/s² 的范围内,创建了从静止出发、经过 Δ 的瞬间达到 q̇_h 的最短时间轨迹。对于5次多项式,通过二分法找到了最短的 T;对于时间最优,则从“最大加速度 →(如有必要)以最大减速度达到 q̇_h”的形式中找到。

Δ q̇_h a_max 5次 T 时间最优 T 停下所需的额外转动角度与时间
0.3 rad 10 rad/s 300 0.054 s 0.046 s 0.17 rad, 33 ms
0.6 rad 10 rad/s 300 0.082 s 0.068 s 0.17 rad, 33 ms
0.6 rad 10 rad/s 600 0.062 s 0.051 s 0.08 rad, 17 ms
0.6 rad 15 rad/s 300 0.076 s 0.064 s 0.38 rad, 50 ms
1.0 rad 15 rad/s 300 0.102 s 0.085 s 0.38 rad, 50 ms

4.4 通过点:停下,还是继续

当关节必须通过多个通过点时,比较了两种方法:(a) 在每个通过点停下的5次多项式段,(b) 在通过点不停下的3次样条曲线(两端速度为 0)。样条曲线分别采用了平分段时间和与移动距离平方根成正比分段这两种方法,并通过二分法找到了极限(20 rad/s, 300 rad/s²)内的最小总时间。

通过点 (rad) 停下的5次多项式 样条曲线(等间隔) 样条曲线(与 √距离 成正比)
0 → 0.3 → 0.7 → 1.0(单向) 0.240 s 0.170 s 0.184 s
0 → 0.6 → 0.2 → 1.0(折返) 0.319 s 0.357 s 0.325 s

在单向路径中,不停车的速度快了 29%,但在需要变向的路径中,由于无论如何速度都要降为 0,反而使停车的 5 次方多项式 更快。样条曲线总是更快的直觉可能是错的, 如何划分区间时间与形状同样重要(《Modern Robotics》第 9.3 节讨论了途径点多项式)。

5. 局限性

6. 总结

TT 的一句话。 挥拍不是为了停在某个地方,而是为了朝要通过的地方挥去。而且击球之后必须留出停下来的位置。否则手臂会撞到墙上!

参考资料

所有资料查阅于 2026-10-18。

登录后即可点赞

评论

还没有评论。

登录后即可发表评论