轨迹规划:角怎样随时间走,手才会不甩
WARNING
🧪 Beta公测版本提示:教程主体已完成,正在优化细节,欢迎大家提Issue反馈问题或建议。
运动学 告诉你起点、终点各自对应哪组关节角。轨迹规划问的是中间每一时刻
怎么走:太陡电机跟不上,两端速度不为零会「甩一下」,在关节空间走直线手却走出香蕉弯。本章只做关节空间的线性插值与起停速度为 0 的三次多项式,并用 FK 看见手路径。笛卡尔直线、障碍、时间最优是下一层(工业里的 MoveIt / TOPP),本课先把「在哪一组坐标里插值」钉死。前置:导论 的构型空间。
公式先看结论;多项式四个系数怎么定、为什么 smoothstep 两端导数为 0,点开推导。
一、通俗理解:路径是形状,轨迹是形状 + 时刻表
- 路径(path):一串构型,不管快慢。像地图上的线。
- 轨迹(trajectory):路径加上时间,
。像「几点开到哪、速度多少」。
电机真正执行的是轨迹:每个控制周期要一个
两套坐标系,两条完全不同的「直线」:
| 在哪插值 | 直线的含义 | 手看起来 |
|---|---|---|
| 关节空间 | 每个关节匀速或按多项式转 | 末端一般是曲线 |
| 笛卡尔空间 | 手走直线 / 圆弧 | 关节角往往要连续求 IK,还可能跳支、过奇异 |
工业里「直线指令」是笛卡尔的;关节 PTP(point-to-point)是构型空间的。demo 只做 PTP:给定

图解说明:左:
线性,手走弯路。右:三次多项式两端速度为 0,中间才加速。底栏:先在关节空间规划,再用 FK 看手去哪。
动画说明:灰虚线是整条手路径(左右相同)。红/蓝实线跟着走。底部速度曲线同步画出:线性
是常数(起停像悬崖),三次两端为 0、中间更快。此例线性末端 几乎不变,是雅可比碰巧变化小,不是笛卡尔匀速。
二、最差的方案:关节线性插值
时间
角速度恒为
和 速度阶跃。真实电机不能瞬间达到额定速度,跟踪误差会在起停处炸。 - 手路径由非线性 FK 决定,不是两点连线。导论那根香蕉弯就是它。
- 若某关节跨越
不先做角度展开(unwrap),可能绕远路。
线性插值只适合「看一眼几何」,不适合上伺服。
保姆级:阶跃有多糟。 假设某关节要从
三、三次多项式:把两端速度按成 0
四个边界条件:
若还要求起停加速度为 0,要用五次多项式;若要加速度有界、匀速巡航,用梯形速度(加速—匀速—减速)。思想相同:先规定
对每个关节分别套同一条

图解说明:左:
是 S 形 smoothstep。中: 两端为 0、中间鼓包。右:线性插值的速度是带悬崖的矩形。
逐步推导:四个边界条件怎样定出 (点击展开)
每个关节独立,下面把
四个条件:
。 (一次项必须没有,否则 处速度不是 0)。 。 ,即 。
把 4 代入 3:
其中
令
验证导数:
五次多项式再加
四、数字直觉
取
- 线性:
常数,两端像悬崖。 - 三次:两端
,中间鼓包。 - 两条手路径都是弯的,而且是同一条弯:关节空间走同一条线段,FK 的像就是同一条曲线。时间分配只改变沿这条弯路的快慢(以及
),不改变形状。只有笛卡尔规划才能强迫手走直线。
五、常见疑问
Q:为什么不在
可以,那叫笛卡尔直线。必须每步 IK,还要选肘上/肘下保持连续,靠近工作空间边界会奇异。本课先把关节 PTP 讲透,避免两套规划搅在一起。
Q:三次会不会超关节限?
两端在限位内,smoothstep 单调,
Q:和 PID 什么关系?
轨迹生成参考
Q:时间
看电机额定速度 / 加速度:三次峰值
六、代码在做什么
traj_joint.png 三张:关节角、角速度模、FK 末端路径。虚线线性,实线三次。C++ 本课不另写:插值是标量多项式,Python 更合适。运动学章的 fk2r.hpp 可用来核对手坐标。

cd docs/robotics/trajectory/code
python demo.py七、小结
| 概念 | 一句话 |
|---|---|
| 路径 / 轨迹 | 形状 vs 形状+时刻表 |
| 关节 PTP | 在 |
| 线性插值 | 简单,起停速度跳 |
| smoothstep | |
| 下游 | 逆动力学前馈、笛卡尔直线、ROS 2 的 joint trajectory |
下一章 动力学:有了
,要产生 该用多大 。
📥 Code
| File | View | Download |
|---|---|---|
| demo.py | Open | Download |
| exercise.py | Open | Download |
参考
- Craig, Introduction to Robotics(关节空间三次 / 五次)
- Biagiotti & Melchiorri, Trajectory Planning for Automatic Machines and Robots