第2章:路径与轨迹的区别:路径规划 vs 轨迹规划,时间维度的引入
说实话,我刚入行那会儿,也搞混过这两个概念。
那时候带我的老工程师问我:“你做的到底是路径规划还是轨迹规划?”我愣了半天,答不上来。后来在项目里吃过亏,才真正搞明白——路径和轨迹,差了一个时间维度,结果天差地别。
2.1 什么是路径?
路径,说白了就是一条几何线。
它只关心“从A点到B点怎么走”,不关心速度、不关心时间。你想想看,就像在地图上画一条路线——这条路经过哪些点,拐几个弯,仅此而已。
路径的核心特征:
- 只包含空间信息(位置坐标)
- 没有时间标签
- 不描述运动状态
举个例子。我让机器人从(0,0)走到(10,10)。路径规划给出的结果可能是:
路径点序列:
(0, 0) → (3, 2) → (7, 5) → (10, 10)
你看,这就是一串坐标点。它没告诉你什么时候该到哪个点,也没说速度是多少。
2.2 什么是轨迹?
轨迹就不一样了。它给每个路径点都贴上了时间标签。
嗯,这里要注意:轨迹 = 路径 + 时间信息。它不光告诉你“去哪儿”,还告诉你“什么时候到”、“以什么速度去”。
轨迹的核心特征:
- 包含空间信息 + 时间信息
- 每个点都有时间戳
- 隐含速度、加速度信息
同样的例子,轨迹规划给出的结果是:
轨迹点序列(带时间):
t=0s → (0, 0) 速度 0 m/s
t=1s → (3, 2) 速度 3.6 m/s
t=2s → (7, 5) 速度 4.1 m/s
t=3s → (10, 10) 速度 0 m/s
看到了吗?每个点都绑定了时间。这样控制器才知道:哦,1秒后我要到(3,2),速度大概是3.6。
2.3 核心区别:一张图看懂
我习惯用下面这张图来给团队新人讲。你一看就明白了。
2.4 为什么时间维度这么重要?
你可能觉得:不就是加个时间嘛,能有多大区别?
我在项目里遇到过这么一件事。有一次做AGV小车的调度,我们只做了路径规划,没做轨迹规划。结果两辆车在交叉口同时到达——撞上了。为什么?因为路径只告诉它们“走哪条路”,没告诉它们“什么时候走”。
血的教训:
我曾经在一个仓储机器人项目里,只用了路径规划。结果机器人转弯时速度太快,货物全甩出去了。后来加上轨迹规划,给每个弯道分配了合适的速度曲线,问题才解决。
时间维度的引入,带来了三个关键变化:
| 维度 | 路径规划 | 轨迹规划 |
|---|---|---|
| 避障能力 | 只能静态避障 | 可以动态避障(预测未来位置) |
| 运动平滑性 | 不保证平滑 | 强制速度/加速度连续 |
| 多机协作 | 容易冲突 | 可以时间协调 |
| 能耗控制 | 无法优化 | 可以优化速度曲线省电 |
2.5 实际项目中的选择策略
你可能会问:那我到底该用路径规划还是轨迹规划?
我的经验是这样的:
- 简单场景(比如固定路线、匀速运动):路径规划就够了。我早期做的一个码垛机器人,路径固定,速度恒定,根本不需要轨迹规划。
- 复杂场景(比如动态环境、变速运动):必须上轨迹规划。去年做的一个协作机器人项目,要和工人配合,速度时快时慢,没有轨迹规划根本没法用。
我的建议:
如果你刚开始做机器人控制,先跑通路径规划。等遇到运动不平滑、抖动、撞车这些问题时,再引入轨迹规划。别一开始就搞得太复杂——我见过太多新人一上来就搞轨迹规划,结果被时间同步、速度曲线这些东西搞晕了。
2.6 代码层面的区别
嗯,最后用代码来收个尾。这是我在项目中实际用过的简化版本:
// 路径规划:只返回坐标点
std::vector<Point> pathPlanning(Point start, Point goal) {
// 比如用A*算法
return {start, waypoint1, waypoint2, goal};
}
// 轨迹规划:返回带时间戳的状态
struct TrajectoryPoint {
Point position;
double time; // 时间戳
double velocity; // 期望速度
double acceleration; // 期望加速度
};
std::vector<TrajectoryPoint> trajectoryPlanning(
Point start, Point goal,
double startTime, double endTime) {
// 比如用S形速度曲线
// 每个点都算好时间、速度、加速度
return trajectoryPoints;
}
你看,区别就在那个time字段上。别小看它,加上这个字段,整个控制系统的复杂度就上了一个台阶——但效果也上了一个台阶。
好了,这一章就到这里。记住一句话:路径告诉你走哪条路,轨迹告诉你什么时候走到哪。搞清楚了这一点,后面的内容你就好理解了。
本章要点回顾:
- 路径 = 空间几何信息
- 轨迹 = 空间 + 时间信息
- 时间维度带来速度、加速度控制能力
- 简单场景用路径规划,复杂场景用轨迹规划
可可精品资料库