一、轨迹跟踪概述:到底什么是轨迹跟踪?
各位同学好,我是你们这门课的老朋友。咱们开门见山——轨迹跟踪,说白了就是让机器人按照我们预先设定好的路径去走。
你可能会说:“这不就是导航吗?”嗯,有点像,但不一样。导航关心的是“从A到B走哪条路”,而轨迹跟踪关心的是“我能不能贴着这条路的中心线走,误差不超过5厘米”。
我刚开始做AGV的时候,就犯过这个糊涂。当时觉得路径规划做好了,车就能自己跑。结果一上路,偏差越来越大,最后直接撞墙。后来才明白——规划是画饼,跟踪才是烙饼。
1.1 轨迹跟踪的数学定义
咱们稍微正式一点。轨迹跟踪问题可以描述为:
给定一条参考轨迹 r(t) = [x_d(t), y_d(t), θ_d(t)]^T
设计控制输入 u(t) = [v(t), ω(t)]^T
使得实际状态 s(t) = [x(t), y(t), θ(t)]^T 满足:
lim(t→∞) ||s(t) - r(t)|| → 0
这里 v 是线速度,ω 是角速度。你想想看,这个公式其实就一句话:让实际轨迹无限逼近参考轨迹。
核心要点:轨迹跟踪 ≠ 路径规划。路径规划只给出一条几何曲线,轨迹跟踪还要加上时间信息——什么时间到什么地方,速度是多少。
1.2 应用场景:AGV / 无人机 / 机械臂
我这些年接触过的项目,基本就这三类。咱们一个一个说。
AGV(自动导引车)
AGV 是轨迹跟踪最典型的应用。仓库里的搬运机器人、工厂里的物料小车,都属于这一类。AGV 的特点是地面运动、非完整约束——它不能像人一样原地转圈,必须边走边转。
- 典型场景:电商仓库的货架搬运、汽车产线的零件配送
- 控制难点:打滑、负载变化、多车协同
- 常用方法:纯追踪(Pure Pursuit)、Stanley 控制器、MPC
我的经验:AGV 项目里,最坑的不是算法本身,而是轮子磨损。我曾经遇到一台车,跑了三个月后跟踪误差从2cm涨到15cm,查了半天才发现是轮胎磨偏了。所以做AGV,一定要留出标定接口。
无人机
无人机是三维空间的轨迹跟踪,比AGV多了一个自由度。我做过一个电力巡检的项目,无人机要沿着高压线飞行,误差不能超过20cm。
- 典型场景:航拍、电力巡检、农药喷洒
- 控制难点:风扰、动力饱和、GPS信号丢失
- 常用方法:PID + 前馈、几何跟踪(L1)、MPC
这里有个有意思的点:无人机对实时性的要求比AGV高得多。AGV的控制周期可以做到50ms甚至100ms,无人机一般要跑到10ms以内。为什么?因为无人机是开环不稳定的,你晚控制10ms,它可能已经翻了。
机械臂
机械臂的轨迹跟踪,关注的是末端执行器的轨迹。比如焊接机器人,焊枪要沿着焊缝走,偏差超过1mm就会出废品。
- 典型场景:焊接、喷涂、装配
- 控制难点:关节摩擦、柔性变形、奇异点
- 常用方法:计算力矩控制、阻抗控制、自适应控制
避坑指南:我曾经在机械臂项目里直接用AGV的跟踪算法,结果抖得跟筛糠一样。后来才意识到——机械臂的动力学耦合比AGV复杂得多,必须考虑关节间的惯性力。所以选算法一定要看对象,别拿AGV的方子去治机械臂的病。
1.3 核心评价指标:精度 / 鲁棒性 / 实时性
做轨迹跟踪,你总得有个标准来衡量好坏。我一般看三个维度:
| 指标 | 定义 | 典型要求 | 我的经验 |
|---|---|---|---|
| 精度 | 实际轨迹与参考轨迹的偏差 | AGV: 5~10cm 无人机: 10~30cm 机械臂: 1~5mm |
精度不是越高越好,够用就行。盲目追求精度会导致控制量过大,反而容易震荡。 |
| 鲁棒性 | 在干扰下保持跟踪的能力 | 抗风、抗打滑、抗负载变化 | 鲁棒性比精度更难调。我见过很多算法仿真精度1mm,一上实车就崩。 |
| 实时性 | 控制周期能否满足要求 | AGV: ≥50Hz 无人机: ≥100Hz 机械臂: ≥200Hz |
实时性不够,算法再牛也是白搭。我习惯先测一遍计算耗时,再决定用哪种算法。 |
这三个指标其实是互相制约的。你想想看:
- 精度要求越高,计算量越大,实时性就会下降
- 鲁棒性越强,控制器越保守,精度可能受影响
- 实时性要求越高,能用的算法就越简单
所以做轨迹跟踪,本质上是在这三个维度之间找平衡。没有银弹,只有取舍。
1.4 本章知识体系总览
下面这张图,是我自己梳理的轨迹跟踪知识体系。你可以把它当成这门课的导航图。
这张图把轨迹跟踪拆成了三个维度:应用场景决定了你要解决什么问题,核心指标决定了你要做到什么程度,控制方法决定了你用什么工具。后面的课程,就是围绕这张图展开的。
给新手的建议:别急着看算法。先搞清楚你的场景是什么,指标要求是多少。我见过太多人一上来就研究MPC,结果连PID都没调明白。先走稳,再跑。
好了,第一章就到这里。内容不多,但都是基础。后面的章节,咱们会一个一个算法地啃,一个一个坑地填。准备好了吗?