一、轨迹规划基础:什么是轨迹规划

大家好,我是老张。做机器人控制十几年了,今天咱们聊聊轨迹规划。

说白了,轨迹规划就是回答三个问题:去哪儿、怎么去、什么时候到

你想想看,让机器人从A点走到B点,听起来简单吧?但实际做起来,要考虑的事情可多了。不能撞墙、不能抖得太厉害、速度不能太快也不能太慢——这些全是轨迹规划要干的活。

核心定义:轨迹规划是指在满足运动学/动力学约束的前提下,生成一条从起始状态到目标状态的、平滑且可行的运动路径,并给出每个时刻的位置、速度、加速度。

1.1 轨迹 vs 路径:别搞混了

我刚开始带团队的时候,发现很多新人把这两个词混着用。其实区别很明显:

  • 路径(Path):只关心空间上的几何曲线。比如「从桌子左边绕到右边」,不关心怎么走、走多快。
  • 轨迹(Trajectory):路径 + 时间信息。比如「3秒内从桌子左边匀速走到右边,中间经过点P1、P2」。

嗯,这里要注意:路径是轨迹的骨架,时间是轨迹的灵魂

1.2 轨迹规划在机器人中的应用

我这些年做过的项目里,轨迹规划几乎无处不在。给你列几个典型的:

应用场景 典型需求 我踩过的坑
工业机械臂 焊接、喷涂、码垛 曾经因为加速度突变,焊枪抖了一下,整条焊缝报废
移动机器人 仓储搬运、巡检 急转弯时货物侧翻,后来加了速度约束才解决
自动驾驶 车道保持、变道、泊车 有一次泊车轨迹太激进,乘客直接晕车了...
无人机 航点飞行、避障 风大的时候轨迹偏差大,得实时修正

个人经验:我建议你在做轨迹规划之前,先搞清楚三个约束——运动学约束(最大速度、加速度)、动力学约束(力矩、力)、环境约束(障碍物、边界)。少一个,后面调试的时候就会哭。

二、位置/速度/加速度曲线

这三个曲线,是轨迹规划的「三件套」。我习惯把它们放在一张图里看,因为它们是导数关系:

  • 位置对时间求导 → 速度
  • 速度对时间求导 → 加速度
  • 加速度对时间求导 → 加加速度(Jerk)

为什么会这样?说白了,物理世界就是这么运转的。你开车的时候,踩油门(加速度)决定了车速变化,车速变化又决定了位置变化。

2.1 位置曲线

位置曲线描述的是机器人末端或车辆中心在空间中的移动轨迹。它可以是直线、圆弧、样条曲线等。

我记得有一次做机械臂的直线轨迹,单纯用直线插补,结果在起点和终点处速度突变,机械臂「哐」地一下——嗯,那声音听着就心疼。

避坑指南:我曾经在位置曲线两端忘记做平滑处理,结果电机过载报警。后来养成了习惯:位置曲线必须保证一阶(速度)和二阶(加速度)连续

2.2 速度曲线

速度曲线决定了机器人运动的快慢变化。常见的速度曲线有:

  • 梯形速度曲线:加速-匀速-减速,简单但加速度有突变
  • S形速度曲线:加速和减速过程平滑,Jerk可控
  • 多项式速度曲线:更灵活,但计算量大

我个人习惯用S形速度曲线。虽然比梯形复杂一点,但胜在平滑。你想想看,坐电梯的时候,如果启动和停止都是「嗖」的一下,你肯定不舒服。S形曲线就是让启动和停止都「软着陆」。

2.3 加速度曲线

加速度曲线直接反映了机器人的「舒适度」和「机械冲击」。加速度变化越剧烈,对电机和减速器的冲击越大。

这里有个关键指标——加加速度(Jerk),也就是加速度的变化率。我做过一个测试:

Jerk值 机械臂末端抖动 电机电流波动
大(>100 m/s³) 明显抖动 电流尖峰高
中(10-100 m/s³) 轻微抖动 电流波动可接受
小(<10 m/s³) 几乎无感 电流平稳

核心结论:好的轨迹规划,就是让位置曲线连续、速度曲线平滑、加速度曲线可控。三者的关系就像开车——位置是导航路线,速度是油门控制,加速度是踩油门的力度。

三、知识体系总览

下面这张图,是我自己总结的轨迹规划知识框架。每次带新人,我都会先让他们看这张图:

轨迹规划知识体系 输入 起始位置/姿态 目标位置/姿态 运动学/动力学约束 环境障碍物信息 核心模块 路径生成 速度规划 加速度平滑 Jerk控制 碰撞检测 输出 位置曲线 p(t) 速度曲线 v(t) 加速度曲线 a(t) 控制指令序列 应用:工业机械臂 | 移动机器人 | 自动驾驶 | 无人机 评价指标:平滑性 | 时间最优 | 能量最优 | 安全性 | 实时性 关键约束:最大速度 | 最大加速度 | 最大Jerk | 力矩限制

这张图把轨迹规划的流程讲得很清楚:输入 → 核心模块 → 输出。你每次做轨迹规划的时候,都可以拿这张图对照一下,看看自己卡在哪一步。

我的习惯:做轨迹规划之前,先把约束条件列清楚。比如最大速度是多少、加速度上限是多少、有没有障碍物。这些不搞清楚,后面做的全是无用功。

四、一个简单的例子

咱们来看一个最简单的梯形速度曲线。假设机器人要从0走到10米,最大速度1m/s,加速度0.5m/s²:

# 梯形速度曲线参数计算
总位移 = 10 m
最大速度 v_max = 1 m/s
加速度 a = 0.5 m/s²

# 加速阶段
加速时间 t_acc = v_max / a = 2 s
加速位移 s_acc = 0.5 * a * t_acc² = 1 m

# 减速阶段(对称)
减速时间 t_dec = t_acc = 2 s
减速位移 s_dec = s_acc = 1 m

# 匀速阶段
匀速位移 s_const = 总位移 - s_acc - s_dec = 8 m
匀速时间 t_const = s_const / v_max = 8 s

# 总时间
总时间 = t_acc + t_const + t_dec = 12 s

你看,这个计算很简单。但实际项目中,我很少直接用梯形曲线——因为加速度在起点和终点处突变,机械冲击太大。我一般会换成S形曲线,虽然计算复杂一点,但效果天差地别。

注意:梯形速度曲线虽然简单,但加速度不连续。如果你的机器人对冲击敏感(比如精密装配、医疗手术),千万别用梯形曲线。我曾经吃过这个亏,后来再也不敢偷懒了。

五、总结

这一章咱们聊了轨迹规划的基础:

  • 轨迹规划就是回答「去哪儿、怎么去、什么时候到」
  • 位置/速度/加速度是轨迹规划的三大核心曲线,它们之间是导数关系
  • 平滑性是衡量轨迹好坏的关键指标,Jerk控制很重要

我个人觉得,轨迹规划就像教一个新手开车——你得告诉他走哪条路(路径)、油门踩多少(速度)、刹车怎么踩(加速度)。每一步都要平滑,不然乘客会晕车,机器也会受伤。

下一章咱们会深入聊具体的轨迹规划算法,比如多项式插值、样条曲线这些。到时候我会拿实际项目中的代码给你看,保证干货满满。


公众号:蓝海资料掘金营,微信deep3321