一、轨迹规划概述
1.1 什么是轨迹规划
先问大家一个问题:让机器人从A点走到B点,难吗?
如果你只是说「走过去就行」,那确实不难。但如果你要考虑——怎么走不撞墙?怎么走最省电?怎么走才能让机械臂末端画出一条平滑的弧线?嗯,这就复杂了。
我个人的理解是:轨迹规划,就是给机器人设计一条「带时间标签的路径」。
路径只关心「走哪条路」,而轨迹还要关心「什么时候走到哪里、速度多快、加速度多大」。说白了,路径是空间上的事,轨迹是时空结合的事。
核心定义:轨迹规划 = 路径规划 + 时间规划 + 运动约束
我在项目中遇到过这样一个场景:一个六轴机械臂要抓取传送带上的工件。如果只做路径规划,机械臂确实能避开障碍物到达目标点。但因为没有考虑时间,机械臂要么走得太快导致抖动,要么走得太慢跟不上产线节拍。后来加入了轨迹规划,把速度、加速度都约束好,问题才解决。
1.2 轨迹规划在机器人系统中的位置
你想想看,一个完整的机器人系统,从上到下大概长这样:
从这张图你能看出来,轨迹规划处于中间层。它上面承接任务规划和路径规划,下面驱动运动控制。如果轨迹规划做不好,上层再好的路径也白搭,下层再牛的控制算法也救不回来。
我记得有一次调试AGV小车,路径规划明明给出了最优路径,但轨迹规划参数没调好——加速度设得太激进,结果小车在转弯时直接侧滑了。这就是典型的「上层决策没问题,中间层没兜住」。
我的经验:轨迹规划是机器人系统的「腰」。腰不好,全身都别扭。很多新手只关注路径规划算法(A*、RRT这些),却忽略了轨迹规划的参数调优,结果实际跑起来各种翻车。
1.3 常见轨迹规划方法分类
说到分类,咱们得先搞清楚一个概念:路径规划 vs 轨迹规划。这两个词经常被混用,但在我眼里完全是两码事。
| 对比维度 | 路径规划 | 轨迹规划 |
|---|---|---|
| 关注点 | 空间路径(几何形状) | 时间序列(运动状态) |
| 输出 | 一系列路径点 (x,y,z) | 带时间戳的位置、速度、加速度 |
| 约束类型 | 障碍物、可达空间 | 速度极限、加速度极限、加加速度、力矩 |
| 典型算法 | A*、Dijkstra、RRT、PRM | 梯形速度规划、S形速度规划、多项式插值 |
| 举个栗子 | 导航地图上选一条不堵车的路 | 这条路怎么开——何时加速、何时减速、转弯多快 |
说白了,路径规划回答「能不能到」,轨迹规划回答「怎么到得漂亮」。
1.4 轨迹规划方法分类
我个人习惯把轨迹规划方法分成三大类,每一类都有它的脾气:
1.4.1 基于插值的方法
这是最基础、也最常用的方法。给定几个关键路径点,用数学曲线把它们串起来。
- 多项式插值:三次多项式、五次多项式、七次多项式。次数越高,曲线越平滑,但计算量也越大。
- 样条曲线:B样条、三次样条。适合多段路径拼接,保证连接处连续。
- 梯形速度规划:加速-匀速-减速三段式。简单粗暴,但加速度有突变。
- S形速度规划:加加速度连续,运动更平滑。我项目中用得最多的就是它。
避坑指南:我曾经在一条高速搬运产线上用了梯形速度规划,结果每次加减速时机械臂末端都会抖一下。后来换成S形速度规划,加加速度约束设到合理值,抖动问题就消失了。所以——对平滑度有要求的场景,别省那点计算量。
1.4.2 基于优化的方法
把轨迹规划建模成一个优化问题,目标函数可以是时间最短、能耗最小、冲击最小等。
- 时间最优轨迹:在满足约束的前提下,让运动时间最短。
- 能量最优轨迹:适合电池供电的移动机器人。
- 多目标优化:时间+能量+平滑度,加权求和。
这类方法的优点是能找到「最优解」,但缺点是计算量大,实时性差。我一般在离线场景用,比如焊接路径的预规划。
1.4.3 基于采样的方法
这类方法其实是从路径规划延伸过来的。在路径规划阶段用RRT等算法生成路径,然后在路径上做轨迹优化。
- RRT + 轨迹平滑:先用RRT找路径,再用B样条平滑。
- STOMP:随机轨迹优化,适合高维空间。
- CHOMP:梯度下降优化轨迹,兼顾避障和平滑。
你想想看,这三种方法各有各的适用场景。我做项目时一般这样选:
| 场景 | 推荐方法 | 原因 |
|---|---|---|
| 简单点到点运动(如码垛) | S形速度规划 | 实现简单,平滑度够用 |
| 复杂路径多段连续(如焊接) | 三次样条插值 | 保证连接处连续,路径可控 |
| 高动态运动(如乒乓球机器人) | 时间最优优化 | 追求极限性能 |
| 未知环境避障(如服务机器人) | RRT + 轨迹平滑 | 兼顾避障和运动质量 |
1.5 本章小结
嗯,到这里第一章就差不多了。咱们捋一捋:
- 轨迹规划是给机器人设计带时间标签的运动方案,比路径规划多了一个时间维度。
- 它在机器人系统中处于承上启下的位置,非常重要。
- 常见方法分三类:插值法、优化法、采样法。没有绝对的好坏,看场景选方法。
我个人觉得,学轨迹规划最忌讳的就是「一招鲜吃遍天」。不同的机器人、不同的任务、不同的精度要求,参数调优的思路完全不一样。后面几章我会带着大家一个一个场景去调,把那些坑都踩一遍。
一个小建议:如果你刚开始接触轨迹规划,先别急着上复杂算法。把梯形和S形速度规划吃透,把多项式插值搞明白,这些基础打牢了,后面学优化方法会轻松很多。