起点加速度不为 0 的 S 型速度规划方法(七段 S 曲线)
S 型速度规划通过限制加加速度(jerk),使加速度连续变化,从而获得平滑的速度和位置轨迹。当初始加速度a₀ ≠ 0时,需对标准 S 曲线进行适配。
1. 初始与目标状态
初始状态:
位置s₀,速度v₀,加速度a₀目标状态:
位置s_f,速度v_f,加速度a_f(通常a_f = 0)系统约束:
最大速度v_max,最大加速度a_max,最大加加速度j_max > 0
2. 恒定加加速度段的运动学公式
在任意一段中,若加加速度j恒定(取值为+j_max或–j_max或 0),则该段内状态随时间t(从该段起始计时)变化为:
加速度:
a(t) = a_i + j · t
速度:
v(t) = v_i + a_i · t + (1/2) · j · t²
位置:
s(t) = s_i + v_i · t + (1/2) · a_i · t² + (1/6) · j · t³
其中:
- a_i, v_i, s_i为该段起始时刻的加速度、速度、位置;
- t ∈ [0, T],T为该段时间长度;
- “·” 表示乘法(可用 × 或空格替代,Word 中推荐用 · 或直接省略);
- 平方和立方使用 Unicode 上标:t²,t³。
3. 关键参数计算(起点 a₀ ≠ 0)
假设系统需从(s₀, v₀, a₀)平滑过渡到(s_f, v_f, 0),且全程满足 |j| ≤ j_max、|a| ≤ a_max、|v| ≤ v_max。
(1)加速度调整所需最小时间
若当前加速度为a₀,目标中间加速度为a_target(例如 0 或 ±a_max),则通过恒定 jerk 调整所需时间为:
T_j = |a_target – a₀| / j_max
此段时间内 jerk 为:
j = sign(a_target – a₀) · j_max
(2)该段结束时的速度和位置
代入上述运动学公式,令t = T_j,得:
a₁ = a₀ + j · T_j = a_target
v₁ = v₀ + a₀ · T_j + (1/2) · j · T_j²
s₁ = s₀ + v₀ · T_j + (1/2) · a₀ · T_j² + (1/6) · j · T_j³
4. 完整七段结构(以加速-匀速-减速为例)
即使 a₀ ≠ 0,完整 S 曲线仍可由最多 7 段组成,每段 jerk 为 {+j_max, 0, –j_max} 之一:
- Jerk⁺:j = +j_max(若需增大加速度)
- Constant Accel:j = 0,a = a_max
- Jerk⁻:j = –j_max(平滑进入匀速)
- Constant Velocity:a = 0, j = 0
- Jerk⁻:j = –j_max(开始减速)
- Constant Decel:j = 0,a = –a_max
- Jerk⁺:j = +j_max(平滑回到 a_f = 0)
当 a₀ ≠ 0 时,第 1 段可能被截断或反向(如 a₀ > 0 但需减速,则第 1 段为 Jerk⁻)。