一、轨迹规划概述:从“怎么走”到“走得好”
大家好,我是老张。在机器人这行摸爬滚打了十几年,今天咱们聊聊轨迹规划。
说白了,轨迹规划就是回答一个问题:机器人怎么从A点走到B点?
你可能会说,这还不简单?直线走过去不就行了?嗯,如果路上空无一物,确实可以。但现实世界哪有那么干净?
我2018年做一个仓储机器人项目时,就遇到过这种情况。仓库里堆满了货架,机器人要穿过一条只有60厘米宽的通道,两侧全是易碎品。直线走?撞得稀碎。绕远路?效率太低。这时候,轨迹规划的价值就体现出来了。
1.1 什么是轨迹规划?
轨迹规划,不是简单的路径规划。
路径规划只告诉你“走哪条路”,比如从北京到上海,走京沪高速。但轨迹规划要告诉你:什么时候加速、什么时候减速、拐弯时速度多快、最终停在哪个精确位置。
用公式表达就是:
轨迹 = 路径 + 时间信息
即:q(t) = [x(t), y(t), θ(t), v(t), ω(t)]
其中q(t)是机器人在t时刻的状态,包括位置、朝向、线速度、角速度。
我个人习惯把轨迹规划分成两类:
- 全局轨迹规划:事先规划好整条轨迹,适合静态环境
- 局部轨迹规划:边走边规划,适合动态环境
复杂避障场景,两者缺一不可。
1.2 为什么在复杂避障场景中它如此重要?
你想想看,一个工厂车间里,有移动的AGV、有突然出现的工人、有临时堆放的物料。如果机器人只会走直线,那它就是个“瞎子”。
我做过一个汽车焊装车间的项目,机器人要在20秒内完成焊接,同时避开3台移动的AGV。有一次,AGV突然急刹车,机器人如果按原轨迹走,肯定撞上。幸好轨迹规划算法实时调整了速度曲线,在最后0.3秒刹住了车。
为什么会这样?因为轨迹规划提供了三个关键能力:
| 能力 | 作用 | 我的经验 |
|---|---|---|
| 避障能力 | 实时检测障碍物并调整轨迹 | 别只依赖传感器,算法要留余量 |
| 平滑能力 | 避免急停急转,保护机械结构 | 电机抖动多半是轨迹不平滑 |
| 实时能力 | 毫秒级响应,适应动态环境 | 我曾经吃过10ms延迟的亏 |
1.3 核心评价指标:平滑性、安全性、实时性
这三个指标,是衡量轨迹规划好坏的“三把尺子”。
1.3.1 平滑性
平滑性,说白了就是轨迹“顺不顺”。
我见过一些新手写的轨迹,速度曲线像锯齿一样,机器人走起来一卡一卡的。这不仅影响效率,还会加速电机磨损。
平滑性的量化指标通常有:
- 加加速度(Jerk):加速度的变化率,越小越平滑
- 曲率连续性:路径曲率不能突变
- 速度波动率:实际速度与目标速度的偏差
我的经验:加加速度控制在 0.5 m/s³ 以内,人基本感觉不到顿挫。超过 1.0 m/s³,坐在机器人上就像坐过山车。
1.3.2 安全性
安全是底线,没得商量。
安全性不只是“不撞墙”,还包括:
- 碰撞检测:轨迹与障碍物保持安全距离
- 动态避障:对移动障碍物有预测能力
- 紧急制动:突发情况能安全停车
避坑指南:我曾经在安全距离上吃过亏。当时设了5cm的安全阈值,觉得够了。结果传感器有3cm的误差,加上控制延迟,实际距离只剩2cm。后来我改成10cm,再也没出过问题。记住:安全距离 = 传感器误差 + 控制延迟 + 机械间隙 + 你的心理余量。
1.3.3 实时性
实时性,就是“快不快”。
在复杂避障场景中,环境每秒钟都在变化。轨迹规划必须在几毫秒内完成计算。
我一般这样要求:
| 场景 | 允许延迟 | 说明 |
|---|---|---|
| 静态环境 | 100ms | 可以离线规划 |
| 低速动态 | 20ms | 如仓储AGV |
| 高速动态 | 5ms | 如自动驾驶 |
小技巧:如果实时性不够,可以试试“分层规划”。先粗规划,再细优化。我常用的做法是:全局规划用A*,局部规划用DWA,两者配合,实时性提升40%。
1.4 知识体系总览
下面这张图,是我自己总结的轨迹规划知识体系。你可以把它当成一张“地图”,后面每章都会对应到其中的一个节点。
嗯,这张图基本涵盖了轨迹规划的核心内容。后面每一章,我们都会深入其中一个模块。
1.5 本章小结
这一章,我们聊了:
- 轨迹规划是什么——不只是路径,还有时间
- 为什么重要——复杂环境下的“保命符”
- 三个核心指标——平滑性、安全性、实时性
我个人觉得,这三个指标里,安全性永远是第一位的。平滑性和实时性可以妥协,但安全不行。你想想看,一个轨迹规划算法,就算再平滑、再快,如果撞了人,那一切归零。
下一章,我们会深入全局轨迹规划,聊聊A*算法和RRT算法在实际项目中的坑与技巧。到时候见。