轨迹规划基础:从定义到评价指标

各位工程师朋友,今天我们来聊聊轨迹规划的基础。说实话,这个章节是整个运动控制算法的地基。地基没打牢,后面做插补、做速度规划,都会出问题。我在刚入行时,就吃过这个亏——当时急着调一个六轴机器人的轨迹,结果因为没搞清楚路径和速度的区别,折腾了整整两周。

好,我们正式开始。

轨迹规划到底是什么?

先给个定义。轨迹规划,说白了就是:给定起点和终点,在满足约束条件的前提下,生成一条位置、速度、加速度随时间变化的连续曲线。

你想想看,一个电机从A点转到B点,怎么转?直接跳过去?不行,会撞。匀速转过去?可以,但效率低。先加速再减速?嗯,这个靠谱。但加速多快?减速多猛?中间要不要拐个弯?这些问题,就是轨迹规划要解决的。

我个人习惯把轨迹规划拆成两个层次来看:

  • 宏观层面:决定走哪条路(路径)
  • 微观层面:决定怎么走(速度)

这两个层次,对应着轨迹规划的两大核心任务。

任务分解:路径规划 + 速度规划

很多新手会把路径规划和轨迹规划混为一谈。我刚开始也犯过这个错。其实它们的关系是这样的:

路径规划 = 只关心空间几何,不关心时间。
速度规划 = 在路径上分配时间,决定快慢。
轨迹规划 = 路径规划 + 速度规划。

举个例子。你要从北京开车到上海:

  • 路径规划:走京沪高速,还是走沿海公路?中间在哪个服务区停?——这是空间上的决策。
  • 速度规划:前200公里开120km/h,中间堵车降到60km/h,最后100公里匀速100km/h。——这是时间上的决策。

两者合在一起,才是一条完整的轨迹。

路径规划的任务

路径规划的输出是一系列空间点,或者说是一条几何曲线。它要解决的问题包括:

  • 避障:不能撞到障碍物
  • 可达性:机器人关节不能超出限位
  • 连续性:路径至少是C²连续(位置、速度、加速度都连续)

我在项目中遇到过最头疼的事,就是路径规划出来的点虽然避开了障碍,但曲率突变太大。结果速度规划一跑,加速度直接爆表,电机嗡嗡响。嗯,这里要注意:路径的几何特性,直接影响速度规划的质量。

速度规划的任务

速度规划是在已知路径的基础上,分配时间。它要解决:

  • 什么时候加速?什么时候减速?
  • 最大速度能到多少?
  • 拐弯处要不要减速?减多少?

我曾经做过一个项目,路径规划完美,但速度规划没做好——在拐弯处没减速,结果工件直接飞出去了。从那以后,我每次做速度规划都会先检查路径的曲率极值点。

下面这张图,把轨迹规划的完整流程画出来了:

轨迹规划任务分解 轨迹规划 路径规划(空间) 速度规划(时间) 输出:几何曲线 / 路径点序列 约束:避障、可达性、连续性 输出:速度-时间曲线 / 加速度曲线 约束:最大速度、最大加速度、加加速度 完整轨迹

评价指标:怎么判断轨迹好不好?

轨迹规划做完了,怎么评价?总不能说"我觉得挺顺的"吧。我们需要量化的指标。我个人常用的评价指标有三个:

指标 核心目标 典型应用场景 代价
时间最优 总时间最短 高速拾放、产线节拍优化 加速度冲击大,电机磨损快
能量最优 能耗最小 电池供电设备、协作机器人 运行时间较长
平滑性 加速度/加加速度最小 精密加工、医疗设备 速度较慢

时间最优

说白了就是"能跑多快跑多快"。在满足电机最大速度、最大加速度约束的前提下,让轨迹时间最短。典型的算法是梯形速度曲线和S形速度曲线的时间最优版本。

但这里有个坑。我曾经在一个高速分拣项目上用了纯时间最优的轨迹,结果机器人在末端抖得厉害。为什么?因为时间最优意味着加速度一直顶着上限跑,加加速度(Jerk)无限大。电机响应跟不上,就会震荡。

避坑指南:时间最优不等于"一直全速"。我曾经在调试一个六轴机器人时,发现时间最优轨迹在拐弯处加速度突变,导致关节电机过流报警。后来加了加加速度约束,虽然总时间多了15%,但系统稳定多了。

能量最优

这个指标在工业机器人里用得越来越多。特别是那些用电池供电的AGV和协作机器人,省电就是省钱。

能量最优的核心思路是:让电机工作在效率最高的转速区间,减少不必要的加减速。我记得有个项目,客户要求机器人一个班次(8小时)的能耗降低20%。我们通过把梯形速度曲线改成能量最优的抛物线曲线,配合重力补偿,最终降了18%。

能量最优的数学表达通常是一个泛函优化问题:

min J = ∫(τ² + kv²) dt
subject to:
  |v(t)| ≤ v_max
  |a(t)| ≤ a_max
  |j(t)| ≤ j_max

其中τ是电机转矩,v是速度。这个优化问题,说白了就是在时间和能量之间找个平衡点。

平滑性

平滑性是我个人最看重的指标。为什么?因为平滑性直接影响轨迹的跟踪精度和系统寿命。

平滑性的量化指标通常是加加速度(Jerk)的积分,或者加速度变化率的平方积分。一个平滑的轨迹,加速度曲线是连续的,加加速度是有界的。

我在做精密激光切割项目时,客户要求切割速度波动不超过±1%。如果用梯形速度曲线,加速度突变会导致速度过冲,根本达不到这个精度。后来换成S形速度曲线,加加速度做了限幅,速度波动才压到0.8%以内。

经验之谈:如果你不确定选哪个指标,我建议优先保证平滑性。因为平滑性差的轨迹,后续调参会非常痛苦。时间最优和能量最优,可以在平滑性的基础上逐步优化。这是我踩过无数坑之后总结出来的。

三个指标的权衡

你想想看,这三个指标其实是互相矛盾的。时间最优要求加速度大,但加速度大必然导致加加速度大,平滑性就差。能量最优要求匀速运行,但匀速意味着加速段短,时间就长。

实际项目中,我们通常的做法是:

  1. 先确定硬约束:最大速度、最大加速度、最大加加速度——这些是电机和机械结构决定的,不能突破。
  2. 再选主指标:根据应用场景,选一个主要优化目标(时间/能量/平滑性)。
  3. 最后做折中:把另外两个指标作为约束条件,在可行域内找最优解。

举个例子。一个高速拾放应用:

  • 硬约束:v_max=3m/s, a_max=10m/s², j_max=100m/s³
  • 主指标:时间最优
  • 约束:加加速度不超过50m/s³(为了平滑性)

这样算出来的轨迹,虽然比纯时间最优慢了8%,但电机不抖了,定位精度也上去了。值不值?我觉得值。