1. 轨迹规划概述
各位同学,欢迎来到《轨迹规划算法工程应用实战》。我是你们这门课的主讲。
先问大家一个问题:什么是轨迹规划?
说白了,就是让机器人知道「怎么动」。不是随便动,而是安全、高效、平滑地动。你想想看,一个机械臂要从A点抓个零件放到B点,中间怎么走?直接直线过去?万一中间有障碍物呢?走快了会不会抖?到了B点怎么减速才能不把零件甩出去?
这些,都是轨迹规划要解决的问题。
核心定义:轨迹规划 = 在满足运动学/动力学约束的前提下,生成一条从起点到终点的、带时间信息的连续运动曲线。
1.1 轨迹规划在机器人系统中的位置
我习惯把机器人软件系统分成三层:
- 感知层:看世界。激光雷达、相机、IMU……告诉机器人「我在哪,周围有什么」。
- 决策规划层:想怎么走。全局路径规划 + 局部轨迹规划,这是今天的主角。
- 控制执行层:动起来。PID、MPC 把轨迹转成电机电流。
轨迹规划卡在中间,承上启下。感知给的数据再准,规划层算不出轨迹,机器人就是个瞎子。控制层调得再好,轨迹本身是锯齿状的,机器人照样抖成筛子。
我在项目中遇到过好几次:控制工程师调了一周参数,机器人还是抖。最后发现是轨迹规划输出的速度曲线不连续,加速度跳变。嗯,这里要注意——轨迹规划的质量,直接决定了控制的上限。
1.2 常见应用场景
轨迹规划不是实验室里的玩具。我做了十年机器人,三个场景最典型:
1.2.1 机械臂
机械臂的轨迹规划,核心是关节空间 vs 笛卡尔空间。
- 关节空间规划:只关心每个关节怎么转,计算快,但末端轨迹不可控。
- 笛卡尔空间规划:末端走直线/圆弧,直观,但可能有奇异点。
我记得有一次给汽车产线做焊接机械臂。客户要求焊枪末端必须走直线,否则焊缝不合格。我选了笛卡尔空间规划,结果在某个姿态下机械臂突然「抽搐」——奇异点问题。后来加了阻尼伪逆才解决。
我的经验:产线场景优先用笛卡尔空间规划,但一定要做奇异点检测。实验室里关节空间规划更省事,但别拿到现场用。
1.2.2 AGV / 移动机器人
AGV 的轨迹规划,核心是全局 vs 局部。
| 维度 | 全局路径规划 | 局部轨迹规划 |
|---|---|---|
| 输入 | 静态地图 | 实时传感器数据 |
| 输出 | 离散路径点 | 连续速度/加速度指令 |
| 算法 | A*、Dijkstra、RRT | TEB、DWA、MPC |
| 频率 | 低频(秒级) | 高频(毫秒级) |
我曾经给仓储AGV做过一个项目。全局路径用A*算好了,结果局部规划没处理好动态障碍物——一个叉车突然倒车,AGV直接撞上去了。从那以后,我坚持局部规划必须加碰撞检测的硬约束,不能只靠代价函数软约束。
避坑指南:我曾经以为全局路径够好,局部规划随便写写就行。结果现场跑起来,AGV在走廊里来回「画龙」。后来发现是局部规划的目标点选择太激进,每次都在全局路径上跳来跳去。解决方案:加一个「参考路径跟踪」的软约束,让局部轨迹贴着全局路径走。
1.2.3 无人机
无人机轨迹规划,核心是三维空间 + 动力学约束。
无人机不能像AGV那样急停急转。它有惯性,有最小转弯半径,还有升力限制。我见过一个团队做无人机编队表演,轨迹规划没考虑最大加速度,结果无人机在空中「点头」——俯仰角震荡,差点炸机。
无人机轨迹规划常用方法:
- 多项式轨迹:最小加加速度(Jerk)轨迹,平滑但计算量大。
- 贝塞尔曲线:凸包性质好,适合避障。
- 混合A*:考虑运动学约束,适合狭窄空间。
我个人偏好多项式轨迹。为什么呢?因为它的物理意义清晰——最小化加加速度意味着执行器磨损最小,电池续航最长。当然,实时性是个问题,后面章节我会讲怎么用QP求解器加速。
1.3 本章小结
这一章我们聊了:
- 轨迹规划是什么——让机器人「怎么动」。
- 它在系统中的位置——感知和控制的桥梁。
- 三个典型场景——机械臂、AGV、无人机,各有各的脾气。
你可能会问:这些场景的轨迹规划算法能通用吗?我的答案是:核心思想通用,工程实现各有侧重。后面29章,我会一个一个拆开讲。
一句话记住本章:轨迹规划不是「走哪条路」,而是「怎么走才稳、才快、才安全」。