轨迹规划与控制¶
有了运动学和动力学模型,最终目标是让机器人按照期望轨迹精确运动——这需要轨迹规划生成期望运动、控制算法消除误差。
一、轨迹规划基础¶
1.1 路径 vs 轨迹¶
| 概念 | 含义 | 数学描述 |
|---|---|---|
| 路径(Path) | 空间中的几何曲线,不含时间信息 | \(q = f(s)\),\(s\) 是路程参数 |
| 轨迹(Trajectory) | 路径 + 时间规律(每个时刻在哪里) | \(q = q(t)\),包含速度、加速度信息 |
轨迹规划的目标:生成 \(q(t)\),使得运动满足位置、速度、加速度的边界条件,并且平滑可执行。
1.2 关节空间 vs 笛卡尔空间¶
| 空间 | 描述 | 优点 | 缺点 |
|---|---|---|---|
| 关节空间 | 对每个关节变量 \(\theta_i(t)\) 分别规划 | 简单,天然满足关节限位 | 无法直接控制末端路径形状 |
| 笛卡尔空间 | 对末端位姿 \((x, y, z, \alpha, \beta, \gamma)(t)\) 规划 | 可精确控制末端走直线/圆弧 | 每步需逆运动学,可能遇奇异 |
二、关节空间轨迹规划¶
2.1 三次多项式插值¶
问题:关节从 \(q_0\) 运动到 \(q_f\),总时间 \(t_f\),起止速度分别为 \(\dot{q}_0, \dot{q}_f\)。
设:
4 个未知数由 4 个边界条件确定:
求解系数:
由 \(q(0) = a_0 = q_0\),\(\dot{q}(0) = a_1 = \dot{q}_0\),以及
联立得:
数值示例
设 \(q_0 = 10°\),\(q_f = 60°\),\(t_f = 2\text{s}\),起止速度均为 0:
最大速度在 \(t = 1\text{s}\)(中点)处:\(\dot{q}_{\max} = 37.5°/\text{s}\)。
2.2 五次多项式插值¶
三次多项式只能约束位置和速度,加速度不连续会导致力矩跳变。五次多项式增加加速度约束:
6 个系数由 6 个边界条件确定:\(q, \dot{q}, \ddot{q}\) 在起止点各一个。
| 多项式阶数 | 可约束条件 | 连续性保证 | 应用场景 |
|---|---|---|---|
| 三次 | 位置 + 速度 | 速度连续,加速度可能不连续 | 一般场景 |
| 五次 | 位置 + 速度 + 加速度 | 加速度连续 | 高精度/高速场景 |
2.3 多路径点的三次多项式¶
经过多个中间路径点 \(q_0, q_1, \ldots, q_m\) 时,在相邻点之间各用一段三次多项式,要求在中间点处速度和加速度连续。
中间点速度的选取方法:
- 指定速度:直接给出
- 连续性条件自动计算:要求前后段的加速度在中间点相等,联立方程组求解
2.4 用抛物线过渡的线性插值(LSPB)¶
Linear Segments with Parabolic Blends——工业机器人中最常用的轨迹类型。
基本思路:匀速段 + 抛物线过渡段(匀加速/匀减速)
三段的数学描述:
设总时间 \(t_f\),过渡时间 \(t_b\),加速度 \(\ddot{q}\):
| 阶段 | 时间范围 | 位置 | 速度 |
|---|---|---|---|
| 加速段 | \(0 \leq t \leq t_b\) | \(q(t) = q_0 + \frac{1}{2}\ddot{q} t^2\) | \(\dot{q} = \ddot{q} t\) |
| 匀速段 | \(t_b \leq t \leq t_f - t_b\) | \(q(t) = q_0 + V(t - \frac{t_b}{2})\) | \(\dot{q} = V\) |
| 减速段 | \(t_f - t_b \leq t \leq t_f\) | \(q(t) = q_f - \frac{1}{2}\ddot{q}(t_f - t)^2\) | \(\dot{q} = \ddot{q}(t_f - t)\) |
其中匀速段速度 \(V\) 和过渡时间 \(t_b\) 满足:
给定 \(\ddot{q}\),可以求出:
约束条件
- \(t_b < t_f / 2\)(否则没有匀速段,退化为纯抛物线)
- \(\ddot{q} > \frac{4(q_f - q_0)}{t_f^2}\)(加速度要足够大,否则无法在规定时间内完成运动)
数值示例
设 \(q_0 = 0°\),\(q_f = 90°\),\(t_f = 3\text{s}\),\(\ddot{q} = 60°/\text{s}^2\):
解得 \(t_b = 0.634\text{s}\),\(V = 38.0°/\text{s}\)。
三段运动:0~0.634s 加速,0.634~2.366s 匀速,2.366~3s 减速。
2.5 多路径点的 LSPB¶
当有多个路径点(via points)时,在每个中间点附近使用抛物线过渡,使机器人无需停下来即可平滑通过。
在中间点 \(q_k\) 附近,速度从前一段的 \(V_{k-1}\) 变为后一段的 \(V_k\),抛物线过渡使速度平滑切换。
三、笛卡尔空间轨迹规划¶
3.1 直线轨迹¶
末端在笛卡尔空间中走直线:
\(s(t)\) 是时间参数化函数——可以用三次多项式或 LSPB 来规划 \(s\) 随时间的变化。
3.2 姿态插值¶
四元数球面线性插值(SLERP):
其中 \(\Omega = \arccos(q_0 \cdot q_1)\) 是两个四元数之间的角度。SLERP 保证姿态变化角速度恒定,且无万向节死锁。
3.3 笛卡尔规划的完整流程¶
graph TD
A[给定起止位姿] --> B[位置: 直线插值]
A --> C[姿态: SLERP 插值]
B --> D[合成每个时刻的目标位姿]
C --> D
D --> E[逆运动学 → 关节角]
E --> F[检查关节限位/奇异性]
F --> G[发送关节指令]
笛卡尔空间规划的注意事项
- 每个时间步都需要做逆运动学(计算量大)
- 中间路径可能穿越奇异配置或工作空间边界
- 关节速度/加速度不一定平滑,需要事后验证
四、关节伺服控制¶
4.1 独立关节 PID 控制¶
最基础的控制策略:将每个关节看作独立的单输入-单输出系统,用 PID 控制器消除位置误差。
其中 \(e_i = q_{d_i} - q_i\) 是第 \(i\) 个关节的位置误差。
graph LR
A[期望 q_d] --> B((+))
B -->|e| C[PID 控制器]
C -->|τ| D[电机 + 关节]
D -->|q| E[编码器]
E --> B
B -.->|"-"| E
PID 控制的局限
- 没有考虑连杆间的动力学耦合
- 在高速运动或变负载时性能下降
- 重力补偿不足——静止时也有稳态误差(除非积分项足够大)
4.2 计算力矩控制(CTC / 逆动力学控制)¶
利用完整的动力学模型进行前馈补偿,从根源上消除非线性耦合。
控制律:
其中辅助控制信号:
代入动力学方程后,闭环系统变为线性:
这是一个简单的二阶线性系统——通过调整 \(K_p, K_d\) 即可设定期望的响应特性。
为什么 CTC 有效?
CTC 本质上是用动力学模型做了非线性项的精确对消。模型越准,对消越干净,控制越好。模型误差大时需要结合自适应或鲁棒控制。
五、力控制¶
5.1 为什么需要力控制¶
纯位置控制在接触环境时会出问题:
- 刚性环境碰撞 → 巨大接触力,可能损坏工件/机器人
- 柔性装配需要控制施加的力,而非仅仅位置
典型应用:打磨、装配、擦拭、人机交互。
5.2 阻抗控制(Impedance Control)¶
让末端像一个弹簧-阻尼系统一样响应外部力:
其中 \(M_d, B_d, K_d\) 是期望的惯量、阻尼和刚度——这些是设计参数,决定机器人的"柔顺程度"。
直觉理解
阻抗控制不试图精确控制位置或力,而是控制力与位移的关系。就像用弹簧连接末端——碰到障碍物时弹簧会让开,施加的力由弹簧刚度决定。
5.3 力/位混合控制(Hybrid Force/Position Control)¶
在不同方向上分别控制力或位置:
- 约束方向:控制力(如磨削时压紧工件的法向力)
- 自由方向:控制位置(如磨削的进给运动)
用选择矩阵 \(S\) 划分:
其中 \(S\) 是对角矩阵,对角线元素为 0(位控)或 1(力控)。
六、总结¶
graph TD
A[任务目标] --> B[轨迹规划]
B -->|"q_d, q̇_d, q̈_d"| C[控制器]
C -->|τ| D[电机 + 关节]
D -->|运动| E[机器人本体]
E -->|传感器反馈| C
F[动力学模型] -->|前馈| C
| 层级 | 功能 | 关键方法 |
|---|---|---|
| 轨迹规划 | 生成平滑的运动序列 | 三次/五次多项式、LSPB、笛卡尔直线 + SLERP |
| 位置控制 | 跟踪期望轨迹 | PID、计算力矩法(CTC) |
| 力控制 | 控制接触力 | 阻抗控制、力/位混合控制 |