第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 核心区别:一张图看懂

我习惯用下面这张图来给团队新人讲。你一看就明白了。

路径规划 只关心空间几何 A B 轨迹规划 空间 + 时间信息 t₀ t₁ t₂ t₃ t₄ 核心区别对比 路径 轨迹 只有位置坐标 位置 + 时间戳 不关心速度 隐含速度/加速度 静态几何描述 动态运动描述

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字段上。别小看它,加上这个字段,整个控制系统的复杂度就上了一个台阶——但效果也上了一个台阶。

好了,这一章就到这里。记住一句话:路径告诉你走哪条路,轨迹告诉你什么时候走到哪。搞清楚了这一点,后面的内容你就好理解了。

本章要点回顾:

  • 路径 = 空间几何信息
  • 轨迹 = 空间 + 时间信息
  • 时间维度带来速度、加速度控制能力
  • 简单场景用路径规划,复杂场景用轨迹规划

可可精品资料库