电子凸轮——五次多项式计算

五次多项式是常用的轨迹规划算法。由于其数学特性,可保证一阶和二阶导数连续,能够实现从起点到终点的位置、速度、加速度三重平滑过渡,避免突跳带来的机械冲击,提高系统稳定性与寿命。所以常用于凸轮设计、机器人路径规划、数据拟合等场景中。

公式

位置函数

P(x)=k5x5+k4x4+k3x3+k2x2+k1x+k0P(x) = k_5x^5 + k_4x^4 + k_3x^3 + k_2x^2 + k_1x + k_0

速度函数(一阶导数)

V(x)=5k5x4+4k4x3+3k3x2+2k2x+k1V(x) = 5k_5x^4 + 4k_4x^3 + 3k_3x^2 + 2k_2x + k_1

加速度函数(二阶导数)

A(x)=20k5x3+12k4x2+6k3x+2k2A(x) = 20k_5x^3 + 12k_4x^2 + 6k_3x + 2k_2

给定的起始和结束的 主轴位置 x、从轴位置 y、速度 v、加速度 a 所构造的约束方程。

P(x0)=y0!V(x0)=v0A(x0)=a0P(x1)=y1V(x1)=v1A(x1)=a1\begin{aligned} P(x_0) = y_0 \\! V(x_0) = v_0 \\ A(x_0) = a_0 \\ P(x_1) = y_1 \\ V(x_1) = v_1 \\ A(x_1) = a_1 \end{aligned}

系数k0~k5通用解

根据给定的起始和结束的从轴位置、速度、加速度以及主轴相对位移 ( Δx ),可以得到如下解:

Δx=x1x0Δy=y1y0k0=y0k1=v0k2=a02k3=12Δx3[20Δy(8v1+12v0)Δx(3a0a1)Δx2]k4=12Δx4[30Δy+(14v1+16v0)Δx+(3a02a1)Δx2]k5=12Δx5[12Δy6(v1+v0)Δx+(a1a0)Δx2]\begin{aligned} \Delta x &= x_1 - x_0 \\ \Delta y &= y_1 - y_0 \\ k_0 &= y_0 \\ k_1 &= v_0 \\ k_2 &= \frac{a_0}{2} \\ k_3 &= \frac{1}{2\Delta x^3} \left[ 20\Delta y - (8v_1 + 12v_0)\Delta x - (3a_0 - a_1)\Delta x^2 \right] \\ k_4 &= \frac{1}{2\Delta x^4} \left[ -30\Delta y + (14v_1 + 16v_0)\Delta x + (3a_0 - 2a_1)\Delta x^2 \right] \\ k_5 &= \frac{1}{2\Delta x^5} \left[ 12\Delta y - 6(v_1 + v_0)\Delta x + (a_1 - a_0)\Delta x^2 \right] \end{aligned}

代入数据计算

数据来源

已知凸轮点数据

(x0,y0,v0,a0) = (100,100,1,0)

(x1,y1,v1,a1) = (360,0,0,0)

结合上方公式,求得:

k0=100k1=1k2=0k3=0.000145653k4=0.000000783411k5=0.00000000116148\begin{aligned} k_0 &= 100\\ k_1 &= 1\\ k_2 &= 0\\ k_3 &= -0.000145653\\ k_4 &= 0.000000783411\\ k_5 &= -0.00000000116148 \end{aligned}

所以:

位置函数

P(x)=0.00000000116148x5+0.000000783411x40.000145653x3+1x+100P(x) = -0.00000000116148 x^5 + 0.000000783411 x^4 - 0.000145653 x^3 + 1 x + 100

速度函数

V(x)=0.0000000058074x4+0.000003133644x30.000436959x2+1V(x) = -0.0000000058074 x^4 + 0.000003133644 x^3 - 0.000436959 x^2 + 1

加速度函数

A(x)=0.0000000232296x3+0.000009400932x20.000873918xA(x) = -0.0000000232296 x^3 + 0.000009400932 x^2 - 0.000873918 x

最大值求解

求位置函数的最大值,其实就是 速度函数 V(x) = 0[0, 260] 区间内所有方程的实根。

但是速度函数是 一元四次方程,要去求它的根???

我并不清楚在数学上如何求解,所以只能通过程序,采用二分法尽量去逼近 f’(x) = 0 时,x 的值。

最后得到当 x ≈ 61.209535 时,最大值 V(61.209535) = 137.806057

最大值验证

再通过Geogebra 画出函数验证一下极值,确实符合计算结果。

位置函数


电子凸轮——五次多项式计算
https://jacobblog.pages.dev/2026/03/08/电子凸轮-五次多项式计算/
作者
Jacob Chen
发布于
2026年3月8日
许可协议