运动控制算法全景:从梯形 / S 形曲线、电子凸轮飞剪,到强化学习与”大脑-小脑”分层架构





运动控制算法全景:从梯形 / S 形曲线、电子凸轮飞剪,到强化学习与”大脑-小脑”分层架构

前面两篇,一篇讲运动控制器是什么、五种连 PC 方式怎么选(硬件与接口),一篇讲EtherCAT 的标准体系谁管谁(协议与行规)。但中间还留着最要紧的一层没说:控制器拿到一条”走过去”的指令之后,里面到底在算什么?

同样是”从 A 点走到 B 点”,有的设备走起来稳、停得准、没有异响,有的一启停就”哐”一声、高速拐角还过切。差别不在电机,也不在驱动器,而在轨迹是怎么生成的、多轴之间是怎么对时的。这篇把这一层拆开:从最基础的梯形与 S 形加减速,一路讲到飞剪追剪、龙门同步,最后落到当下最热的强化学习与”大脑-小脑-脊髓”分层架构。

全篇一句话:运动控制的本质,是把几何变成带时间戳的设定值,再让所有轴在同一个时刻生效。所有算法——加减速、插补、电子齿轮、凸轮、交叉耦合——都是在解决这件事的某个侧面;而所谓 AI 时代的分层架构,并不是新发明,只是给这套早就存在的分层换了个最上层。

本文路线(从底层数学到前沿架构,共八节)

① 分层与频率
② 梯形 / 7 段 S 曲线
③ 插补与速度前瞻
④ 电子齿轮 / 凸轮
⑤ 飞剪追剪同步
⑥ 龙门交叉耦合
⑦ 强化学习
⑧ 大脑-小脑-脊髓

多轴运动控制实验台:直线模组、伺服驱动与显示轨迹曲线的笔记本
多轴运动控制实验台:机械、驱动、轨迹规划与实时通信,四者缺一不可

一、先分层:路径、轨迹、设定值、电流

最容易混淆的一组概念是 Path(路径) 与 Trajectory(轨迹):

  • 路径只有几何:一条直线、一段圆弧、一串样条控制点。它回答”经过哪里”,不包含时间。
  • 轨迹是路径 + 时间律:在每个时刻该在什么位置、有多大速度、多大加速度。它回答”何时到达何处”。

把路径变成轨迹叫时间参数化(time parameterization),这是轨迹规划的核心。MoveIt、OMPL 这类规划器输出的通常是路径,后面必须再接一层时间参数化,才能变成驱动器能执行的设定值。

运动控制五层架构:任务工艺、轨迹规划、插补、同步闭环、伺服电机及各自频率
运动控制的五层分工:从一句工艺要求一路落到电机电流,每层都有自己的节拍预算

这张图里最值得记住的不是五个框,而是下面那行频率:

层 典型频率 算什么 典型周期
任务与工艺 1 – 5 Hz 切多长、走哪条线、G 代码 / 示教点 / 指令 200 ms – 1 s
轨迹规划 10 – 200 Hz v(t)、a(t)、j(t)、速度前瞻、时间参数化 5 – 100 ms
插补 0.5 – 4 kHz 把路径变成每周期各轴的设定位置 0.25 – 2 ms
同步与闭环 1 – 4 kHz 电子齿轮 / 凸轮、龙门交叉耦合、总线同拍下发 0.25 – 1 ms
伺服与电机 1k – 10 kHz 位置环 / 速度环 / 电流环、PWM、编码器反馈 0.1 – 1 ms

越往下,节拍越快,也越不能容忍抖动。这也是为什么上一篇讲接口时反复强调”最坏情况”而不是平均延迟——普通以太网平均延迟可能更低,但只要偶发一次抖动,1 ms 的插补周期就漏了一个设定值,表面质量立刻看得出来。

埋个伏笔:本文最后一节会讲”大脑-小脑-脊髓”三层架构。你回头对照这张表会发现,它和传统运动控制器的”任务 / 轨迹规划 → 精插补 → 伺服环”几乎是同一套切法。分层不是 AI 带来的,是毫秒预算逼出来的。

二、轨迹规划:梯形与 7 段 S 形,差别全在第三阶导数

先写清三个量:

v = dx/dt(速度)  a = dv/dt(加速度)  j = da/dt(加加速度,jerk)

梯形:只约束 v 和 a

梯形速度曲线是最经典的做法:以恒定 amax 加速到 vmax,匀速一段,再以 -amax 减速到零。速度图形是个梯形(行程短、达不到 vmax 时退化成三角形)。

问题是加速度在三个拐点上是阶跃的:从 0 直接跳到 amax。这意味着 jerk 在这些点趋于无穷。工程后果非常具体:

  • 激起机械共振,尤其龙门、长横梁、皮带这类柔性传动;
  • 转矩需求突变,电流尖峰;
  • 导轨、丝杠、联轴器冲击磨损,加工表面出现振纹;
  • 停稳后要等振动衰减才能开始下一步,整定时间反而变长——所以”梯形更快”经常是个错觉。

7 段 S 形:把 jerk 也管起来

S 形曲线的做法是给 jerk 设上限 jmax,让加速度连续地爬升、保持、回落。标准 rest-to-rest 运动被切成 7 段:

段 jerk 加速度 a 阶段名
1 +J 0 → +A 加加速
2 0 保持 +A 匀加速
3 -J +A → 0 减加速(达到 vmax)
4 0 0 匀速
5 -J 0 → -A 加减速
6 0 保持 -A 匀减速
7 +J -A → 0 减减速(速度归零)

七个段长度分别记作 Tj, Ta, Tj, Tv, Tj, Ta, Tj,只要行程够长就能凑齐;行程短、达不到 vmax 或 amax 时,第 2、4、6 段会塌掉,7 段退化成 6 段、4 段甚至更少——这是实际调机时最容易困惑的地方:同一套参数,长行程漂亮,短行程却”发软”,因为曲线形态根本变了。

梯形与 7 段 S 形加减速的速度、加速度、加加速度三行对比曲线
梯形 vs 7 段 S 形:把 v / a / j 三行摆在一起,差别一目了然
// 7 段 S 曲线骨架(示意:每段给定 jerk 符号与时长)
typedef struct { double T; int sign; } Seg;
Seg prof[7] = {
    { Tj, +1 }, { Ta, 0 }, { Tj, -1 }, { Tv, 0 },
    { Tj, -1 }, { Ta, 0 }, { Tj, +1 }
};
// 每个控制周期 Ts 积分一次,下发设定值
for (int i = 0; i != 7; i++) {
    a += prof[i].sign * Jmax * Ts;
    v += a * Ts;
    s += v * Ts;
    setpoint = s;                 // 送到位置环 / 总线
    if (s >= S_target) break;    // 短行程时提前结束,7 段自然退化
}

真实实现要处理的远不止这些:整数采样周期对齐、端点舍入误差(通常微调 vstart 或 vend 吸收)、以及各段时长随行程动态求解。但骨架就是这个。

参数怎么定:不是拍脑袋,是被物理约束住的

  • amax 由转矩 / 力决定:旋转轴 Treq = Jeq·α + Tload + Tfric,直线轴 Freq = meq·a + Fload + Ffric。别超过驱动器电流上限。
  • jmax 由结构刚性决定,工程经验常取最大加速度的 10 ~ 20 倍/秒量级。柔性系统(龙门、长梁)对 jerk 比对加速度更敏感:出现纹波、余振,先减 jmax 往往比减 amax 更有效。
  • 拐角还要另限速:曲线上 an = v²/R,所以拐角速度必须满足 v ≤ sqrt(a_max · R)。哪怕直线段允许很高速度,曲率也会把速度压下来。

再往上还有三次样条(C¹ 连续,加速度可能跳变)、五次多项式(约束起止位置/速度/加速度共 6 个边界条件,C² 连续,从根上消掉 jerk 尖峰,晶圆搬运、光学检测常用)以及 B 样条 / NURBS(高阶连续,CNC 五轴加工)。还有 TOPP / TOPP-RA 这类时间最优路径参数化:给定路径几何与各轴限制,反解出最快的时间律。它们的共同目标都是一件事——在不激起机械共振的前提下,把节拍压到极限。

三、插补与速度前瞻:小线段加工为什么必须”往前看”

轨迹规划给出时间律,插补负责把它变成每个控制周期、每个轴的具体设定位置。工程上通常分两级:

  • 粗插补:在任务空间(笛卡尔空间)生成路径点、waypoint,处理直线 / 圆弧 / 样条;
  • 精插补:在关节空间或轴空间,按控制周期(典型 1 ms)算出各轴设定值,交给位置环。

单段轨迹好办,麻烦在连续小线段。模具雕刻、激光切割、异形轮廓里有成千上万条几毫米长的线段,如果每段都规规矩矩加速到 v、再减速到 0,节拍会被吃光,机床还会一路”点头”。

无前瞻与有前瞻的小线段加工速度曲线对比,以及拐角限速标注
无前瞻:每段减速到零;有前瞻:拐角限速 + 段间 Blend,速度连续

速度前瞻(look-ahead)就是提前读入后面 N 段,预判拐角、预先限速、让段间平滑过渡:

  1. 按拐角曲率或夹角算出该点允许通过速度 v ≤ sqrt(a_max · R);
  2. 从后往前反推,保证每个拐角都来得及减速;
  3. 段间用 Blend / 多项式过渡,不停车直接换向;
  4. 再叠加整段 S 曲线加减速,保证 a、j 连续。

前瞻段数不是越多越好:要平衡缓冲区内存、计算量和工艺需求。但有一点很确定——没有前瞻,再好的加减速曲线也救不了小线段加工。这也正是开源 CNC 那篇里反复出现的”连续插补型控制器”值钱的地方。

四、从”单轴怎么动”到”轴与轴怎么配合”:电子齿轮与电子凸轮

前面讲的都是一根轴。真实设备里,难点几乎总在多轴之间的时间关系:传送带在走,切刀要跟上;印刷套色要对齐;龙门两端要同步。

机械时代靠齿轮箱、凸轮箱、传动轴硬连;电气时代把这些关系写成软件函数,于是有了电子齿轮与电子凸轮。这里有个关键抽象:主轴(Master)不一定是真实电机,它可以是实轴编码器反馈、外部测速轮,也可以是控制器内部生成的虚轴。虚轴让整条产线有了一个统一的”时间基准”,所有从轴都跟着它的相位走。

电子齿轮的固定传动比直线与电子凸轮的任意位置函数曲线,附 PLCopen MC 功能块
电子齿轮 y = k·x 是固定传动比;电子凸轮 y = f(x) 是写在凸轮表里的任意关系

电子齿轮:固定传动比

从轴位置严格等于主轴位置乘一个有理数比 k(分子/分母表示,避免浮点误差),用于定长送料、无轴传动套色印刷等。PLCopen 把它标准化成 MC_GearIn / MC_GearInPos / MC_GearOut,输出 InGear 表示已进入同步;相位微调用 MC_PhasingAbsolute / MC_PhasingRelative;甚至有 CombineAxes 让一个从轴跟随两个主轴的合成。

高速电子齿轮拼的不是算法,是延迟。同步误差主要来自两处:一是主轴位置采样到从轴执行之间的指令延迟——1 ms 总线周期、300 m/min 线速度下,1 ms 就对应约 5 µm 的位置偏差;二是编码器有限分辨率带来的离散化误差。所以这里的瓶颈落在总线周期与分布式时钟(DC)的抖动上,而不是你的齿轮比算得多精。这也解释了为什么 CSP 模式必须用 DC 同步。

电子凸轮:任意位置函数

凸轮把”主轴相位 → 从轴位置”定义成一张表(常见 256 ~ 1024 点),控制器按表插值。换产品只需换一张表,不用停机修磨机械凸轮,这是包装、印刷设备换型效率的分水岭。PLCopen 对应 MC_CamTableSelect + MC_CamIn / MC_CamOut,输出 InSync。

凸轮曲线设计是真正见功力的地方,要同时满足三类约束:

  • 运动学:速度、加速度、跃度连续,不能有尖峰;
  • 动力学:惯性力与力矩平滑,别把电机和减速机冲击坏(选型参见电机与减速机那篇);
  • 工艺:同步区速度必须精确匹配、返回区时间必须够短,赶得上下一个周期。

顺带说一句标准化:这些功能块属于 PLCopen MC Part 1/2(v2.0,建立在 IEC 61131-3 之上),还定义了每根轴固定的状态机;而驱动层由 IEC 61800-7 与 CiA 402 等行规约束。上下两层标准一叠,才使得”换个品牌的控制器/驱动器,程序还能跑”成为可能。

五、飞剪 / 追剪:电子凸轮的期末考

如果说电子齿轮是课后习题,飞剪(flying shear)就是期末考:材料连续高速前进,绝不能停,切刀必须在运动过程中完成定长切断。

飞剪同步区与返回区的速度曲线:同步区刀速等于料速,返回区快速回退
一个切长周期 = 主轴 360°:同步区跟着料走,返回区抢时间回位

一个周期被切成两段:

  • 同步区:刀的水平速度必须严格等于材料线速度,否则就是撕料、堆料或切斜。切断瞬间两者速度差越小,切口越齐。
  • 返回区:刀快速减速、回退、重新加速到同步速度,赶在下一切点之前就位。这段时间越短,设备能跑的线速度越高。

基本关系很简单:切长 L = v料 × T周期。改切长不用改机械,改周期或改凸轮表即可。

一组公开工程数据(包装机飞剪案例):凸轮曲线采用五次多项式插值,同步区占凸轮周期 60%、返回区 40%;在 300 m/min 线速度下,同步区速度跟踪误差 < 0.01 mm,切长误差 < 0.1 mm。为什么用五次多项式?因为它能同时约束起止点的位置、速度、加速度(6 个边界条件),保证 C² 连续,正好把”加速度和跃度必须连续”这条写进数学里。

同一族的工艺还有旋切(回转刀辊)、飞锯(追上管材再锯断)、追剪(刀架追上材料再剪),差别主要在刀是回转还是往复、同步区占比多少,底层都是电子凸轮 + 相位同步。实机上通常还要配一个外部编码器做全闭环:用测速轮直接测材料实际位置当主轴,才能吃掉打滑和传动间隙带来的误差。

包装产线上的旋切飞剪机组:回转刀辊、伺服电机与连续运行的薄膜
连续运行的薄膜与回转刀辊:材料不能停,所有同步都得在运动中完成

六、龙门双驱与多轴同步:两个轴各控各的,为什么还不够

大型龙门机床、激光切割、玻璃加工常用双驱:横梁左右两端各一套丝杠/直线电机,中间没有机械传动轴硬连。好处是行程可以做得很大,坏处是两端一旦不同步,横梁就会扭摆、憋劲、偏磨导轨,严重时直接别坏。

直觉方案是”两个轴各自把位置环调好”,但这不够。原因是两轴的动态特性天然不同:某双轴龙门案例中左轴惯量 120 kg·m²、右轴 95 kg·m²,差约 26%。即使各自跟踪误差都很小,两端同步误差仍可能很大——因为每个控制器只盯自己的误差,压根不知道对方在干什么。

龙门双驱机械示意与交叉耦合控制 CCC 框图
交叉耦合控制(CCC):把两轴位置差作为新的被控量,再反馈分配回两轴

交叉耦合控制(Cross-Coupled Control, CCC)的做法是:

  1. 定义同步误差 es = yL – yR(减去期望的同步关系);
  2. 由 es 算出一个补偿量;
  3. 按两轴动态特性把补偿量分配回各自的控制输出——响应快的轴多承担,响应慢的少承担。

好处是不必推翻原来调好的各轴独立控制器,只在上面加一层耦合,就能显著压小同步误差。工业实现里还会叠加:EtherCAT DC 保证两轴设定值同一时刻生效、龙门专用力矩均衡算法抑制扭振、以及同步偏差超阈值立即报警停机这条保命逻辑。

和前面几篇的接点:CCC 之所以能成立,前提是”设定值能同时到达、反馈能同一时刻采样”。这正是 CSP + 分布式时钟(DC)双主站验证 要解决的问题;也是 五种连 PC 方式里,实时工业以太网最终胜出 的根本原因——低抖动比低平均延迟更重要。再往上,TSN 想做的是把这种确定性搬回标准以太网。

七、前沿之一:强化学习能进控制环吗

这几年论文里 RL 很热闹,但工程上必须先问一句:它到底该站在哪一层?

强化学习运动控制闭环:仿真环境、策略网络、动作、安全投影层、被控对象与状态奖励回流
主流做法不是让 RL 直接输出力矩,而是让它做上层决策,外面套一层确定性安全兜底

合适的落点

  • 轨迹优化与避障:在任务/动作层处理非结构化环境、动态障碍,PPO、SAC、DDPG 都有大量工作;
  • 伺服增益自整定:让策略根据响应自动调 PID / 前馈参数,替代人工整定;
  • 摩擦、间隙、热漂移的误差补偿:这些恰恰是解析模型最难写准的部分;
  • 柔顺力控与装配接触:接触动力学难建模,学习相对有优势。

已有公开结果可参考:SA-PPO(模拟退火 + PPO)在抓取轨迹规划上把成功率从 92% 提到 98%,并在 AUBO-i5 实机完成迁移;也有研究用 VLM + 边缘 AI 做焊接/涂胶的实时轨迹修正,效果优于传统自适应 PID。

但边界非常清楚

RL 不该、也目前不能进 1 ms 的伺服环。公开的三层分层 RL(战略层给 waypoint → 战术层连续策略 → 反应层安全投影)在 RTX 4070 上单次规划延迟约 17.1 ms;这个数字比插补周期大了一个数量级。再叠加 Sim-to-Real Gap、样本效率、训练稳定性、可解释性与功能安全认证,端到端”神经网络直接出力矩”在产线上仍不现实。

所以业界的共识架构是:把学出来的策略放在确定性控制器的外面,中间加一层安全投影(safety projection)——把策略输出的每个原始动作投影进满足约束的可行域,再交给传统位置环/电流环执行;急停、限位、超差这些硬安全完全不经过模型,由独立的安全控制器兜底。

一句话判断:RL 不是来取代 PID 的,它是来替上面几层做”人调不出来的参数与策略”的。这跟前面讲的”分层”完全是同一个逻辑。

八、前沿之二:”大脑-小脑-脊髓”分层,其实是老架构的新名字

具身智能这两年最常被提到的一句话是”大脑 + 小脑”。听起来很新,但把它翻译成控制工程师的语言,立刻就熟了:

大脑 3-20Hz、小脑 50-200Hz、脊髓 1k-10kHz 三层频率分工与延迟预算
三层按毫秒预算切开:理解一句话可以慢,维持平衡和电流环不能慢
层 频率 算力 职责
大脑(认知规划) 3 – 20 Hz NPU / GPU 看懂环境、听懂指令、任务拆解、长程规划;VLM / VLA / 世界模型,可上云
小脑(运动协调) 50 – 200 Hz 实时核 / MCU 全身轨迹、平衡、阻抗力控、避障策略;把目标翻译成连续平滑的关节动作
脊髓(关节执行) 1k – 10 kHz 关节 MCU / FPGA 电流环、位置环、PWM、编码器反馈;急停与碰撞反射本地独立完成

两个代表性架构很能说明问题:

  • NVIDIA GR00T N1:慢系统是视觉语言模型,约 1 – 5 Hz 做规划;快系统用扩散 Transformer 把计划转成连续动作。
  • Figure Helix:慢系统 70 亿参数 VLM,7 – 9 Hz;快系统仅 8000 万参数,却以 200 Hz 输出上半身 35 个自由度的控制指令;两者通过共享表征空间通信,端到端延迟压在 50 ms 内。2026 年 1 月 Figure 又加了 System 0,用神经网络控制器替换掉十万行以上手写运动控制代码。

为什么不能一个大模型全包

因为延迟预算是按任务类型分档的,而且越”接触”越苛刻:

任务 可接受推理延迟
机械臂空中自由移动 50 – 100 ms
插装、装配等持续接触任务 10 – 20 ms
抓取传送带上移动的物体 < 50 ms
安全急停 < 1 ms,且必须由独立安全控制器完成,不能依赖大模型

一次普通无线往返就要 10 – 50 ms,所以100 Hz 以上的控制环基本不可能离开本体,能上云的只有 20 Hz 以下的规划。比平均延迟更麻烦的是抖动:指令忽早忽晚,控制器不知道下一次更新何时到,只能按最坏情况加缓冲,代价是每次动作都为最坏情况买单。工程上的折中是动作分块(一次输出 8 – 50 个未来动作,边执行边算下一块)和异步双系统(慢 VLM 定目标,快模块高频纠偏)。

这一节最想说的一句:把”大脑-小脑-脊髓”和本文第一张图并排放,你会发现它们几乎是同一张图。传统运动控制器早就分成「任务/工艺 → 轨迹规划 → 精插补 → 伺服环」,AI 时代只是把最上层从 G 代码 / 示教器换成了 VLM,中间层和底层一点没变,频率约束更是一点没变。

所以别被”端到端大模型”这个词吓住。真正落地的系统,依然是上层慢而聪明、下层快而确定;而把下层做扎实——加减速、插补、同步、DC、安全兜底——恰恰是长期做运动控制的人最擅长、也最难被替代的部分。具身智能不缺”大脑”,缺的是能把 200 Hz 和 10 kHz 这两层写稳的”小脑和脊髓”。

九、给工程师的落地清单

现象 优先排查 涉及本文
启停”哐”一声、停稳慢、表面有振纹 是不是还在用梯形?a 阶跃导致 jerk 无穷。先加 jerk 限制 / 降 jmax,而不是一味降 amax 二
长行程正常、短行程发软或过冲 7 段 S 因达不到 vmax/amax 退化成 4/6 段,需按行程重解各段时长 二
小线段加工节拍上不去、机床”点头” 前瞻段数不足、拐角未按 v ≤ √(a·R) 限速、段间没做 Blend 三
高速电子齿轮有固定微米级偏差 先算指令延迟(周期 × 线速度),再查编码器分辨率;确认 DC 已启用 四
飞剪切长忽长忽短、切口发斜 同步区速度是否真等于料速;主轴是否用了外部测速轮做全闭环;凸轮表 a/j 是否连续 五
龙门横梁扭振、导轨偏磨 两轴惯量/摩擦是否差异大;加 CCC 与力矩均衡;设定值是否同拍生效 六
想把 RL / 大模型接进控制器 先问推理延迟属于哪一档;安全投影层与独立急停做了没有;别让学习策略进硬实时环 七、八

调试顺序建议:机械与惯量匹配 → 电流环 / 速度环 → 位置环与增益 → 加减速曲线与 jerk → 前瞻与插补 → 多轴同步与总线抖动 → 最后才轮到上层智能。这个顺序反过来做,几乎一定会在现场反复返工。

写在最后

把这篇和前几篇连起来看,一条线就清楚了:

算法会换、模型会换、总线也会换(TSN 还在往前走),但那个最朴素的约束一直没变:在正确的时间,把正确的位置,送到正确的轴上。理解了这句,梯形曲线、凸轮表、交叉耦合、乃至”大脑-小脑”分层,都只是它的不同写法而已。

运动控制轨迹规划S 形加减速插补电子凸轮飞剪龙门同步PLCopen MC强化学习具身智能

本文为海川嵌入式电子网原创技术文章。文中工程数据来自公开的工业案例与学术文献,用于说明量级关系,实际参数请以设备手册与现场调试为准。


发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部