2. 机器人控制基础
机器人控制的核心任务,是让机械系统在不确定环境中按照期望轨迹运动,并保持足够的精度、鲁棒性与安全性。要达成这一目标,工程师必须首先建立对机器人本体行为的数学描述——运动学描述“位置与姿态”,动力学描述“力与运动的关系”,控制架构则负责将期望指令转化为实际力矩。本章作为《机器人控制中的机器学习与强化学习策略》课程的基础章节,将系统梳理运动学、动力学、经典控制架构与状态空间表示方法,为后续引入学习型控制策略奠定必要的理论框架。
上图展示了机器人控制基础四大模块之间的逻辑关系:运动学负责描述机器人的几何关系,动力学揭示其惯性、科氏力与重力特性,控制架构基于上述模型生成力矩指令,而状态空间表示则为统一分析与现代控制方法(包括强化学习)提供了数学框架。下面逐一展开。
2.1 运动学:从关节空间到笛卡尔空间
2.1.1 核心原理
运动学研究机器人各连杆之间的几何关系,不考虑产生运动的力。正运动学(Forward Kinematics)给定关节角度向量 q = [q₁, q₂, ..., qₙ]ᵀ,求解末端执行器的位置与姿态(通常用齐次变换矩阵 T ∈ SE(3) 表示)。逆运动学(Inverse Kinematics)则相反,给定期望的末端位姿,反解关节角。对于六自由度串联机械臂,逆运动学通常存在多解或无解情况,需要根据关节限位、避障等约束进行最优选择。
雅可比矩阵 J(q) 建立了关节速度与末端笛卡尔速度之间的线性映射:
ν = J(q) · q̇
其中 ν = [v; ω] 为末端线速度与角速度向量。雅可比矩阵的秩决定了机器人的奇异位形——当 rank(J) < 6 时,末端在某些方向上失去运动能力,此时关节速度可能趋于无穷大,必须通过阻尼最小二乘等方法进行奇异鲁棒处理。
2.1.2 判断方法与操作流程
在实际工程中,运动学求解通常遵循以下流程:
- 建立DH参数表:根据连杆长度 aᵢ、连杆偏距 dᵢ、连杆转角 αᵢ、关节角 θᵢ 建立坐标系变换矩阵。
- 正运动学计算:连乘各关节变换矩阵,得到末端位姿 T₀ₙ = A₁·A₂·...·Aₙ。
- 逆运动学求解:优先采用解析法(如Pieper准则适用于多数六轴工业机器人),若解析解不存在则使用数值迭代法(如Levenberg-Marquardt)。
- 雅可比计算:通过微分变换法或矢量积法求取 J(q),并检查奇异值。
2.1.3 案例拆解:六轴关节机器人的逆解选择
以典型的六自由度关节型工业机器人为例(如类似UR5构型),其逆运动学存在8组可能的关节角组合。实际场景中,某焊接工位要求末端以特定姿态到达焊缝位置,同时必须避开夹具障碍物。初始现象:使用数值迭代法求解时,算法收敛到一组关节角,但该组解导致第3关节接近限位(-170°),且第5关节处于奇异位形附近。分析过程:通过解析法获得全部8组候选解,逐一检查关节限位、奇异值、避障条件,最终选择第2组解(q = [-45°, -90°, 120°, 0°, 90°, 0°]),该组解关节角度远离限位,且雅可比矩阵最小奇异值 σ_min = 0.32,远离奇异。操作步骤:在离线编程软件中预先计算所有候选解,并设计评分函数(权重:限位余量0.4、奇异距离0.3、避障距离0.3),自动选择最优解。结果对比:相比数值迭代法,解析法+评分策略将求解成功率从78%提升至99.2%,且关节力矩峰值降低15%。复盘经验:逆运动学求解必须结合任务约束进行多解评估,不能简单依赖单一数值方法。
2.2 动力学:力与运动的深层关系
2.2.1 核心原理
动力学描述机器人运动与驱动力矩之间的因果关系。最常用的两种建模方法:牛顿-欧拉法基于力/力矩平衡递推,计算复杂度为 O(n),适合实时控制;拉格朗日法基于系统能量(动能-势能)推导,形式简洁但计算量较大。标准动力学方程可写为:
M(q)q̈ + C(q, q̇)q̇ + G(q) + F_friction(q̇) = τ
其中 M(q) 为惯性矩阵(对称正定),C(q,q̇) 为科氏力和离心力矩阵,G(q) 为重力项,F_friction 为摩擦力(通常包含库仑摩擦与粘性摩擦),τ 为关节驱动力矩。该方程揭示了机器人系统的非线性、耦合性和时变性——这些特性正是传统线性控制难以取得高性能的根本原因。
2.2.2 动力学参数辨识流程
| 步骤 | 操作内容 | 关键工具/方法 | 输出 |
|---|---|---|---|
| 1. 模型线性化 | 将动力学方程改写为 Y(q,q̇,q̈)·θ = τ | 符号计算、最小参数集 | 回归矩阵 Y,参数向量 θ |
| 2. 激励轨迹设计 | 设计有限傅里叶级数轨迹,保证回归矩阵条件数小 | 优化算法、条件数评估 | 激励轨迹 q_des(t) |
| 3. 数据采集 | 以1kHz采样关节角、力矩指令 | 伺服驱动器、编码器 | 时间序列数据 |
| 4. 参数估计 | 加权最小二乘、岭回归 | MATLAB/Python | 辨识后的 θ̂ |
| 5. 模型验证 | 对比预测力矩与实际力矩 | 残差分析、R²指标 | 验证报告 |
2.2.3 实战场景:计算力矩法中的模型误差补偿
计算力矩法(Computed Torque Control)的核心思想是利用动力学模型进行非线性补偿,将原系统线性化为双积分器形式。控制律为:
τ = M(q)·(q̈_des + K_d·ė + K_p·e) + C(q,q̇)q̇ + G(q)
其中 e = q_des - q 为跟踪误差,K_p、K_d 为PD增益。理想情况下,闭环误差方程为 ë + K_d·ė + K_p·e = 0,可通过极点配置设计增益。然而实际中模型参数存在误差(如负载变化、摩擦未完全补偿),导致系统出现稳态误差甚至不稳定。某装配机器人负载从2kg变为5kg后,未更新模型参数,导致轨迹跟踪误差从±0.5mm增大到±3.2mm。分析发现惯性矩阵 M(q) 误差约40%,重力项 G(q) 误差约25%。解决方案:采用自适应控制策略,在线估计负载参数,将误差收敛至±0.8mm。操作步骤:在计算力矩控制律中增加参数自适应律 θ̂̇ = -Γ·Yᵀ·Bᵀ·P·x,其中 Γ 为自适应增益矩阵,Y 为回归矩阵,P 为Lyapunov方程解。结果对比:自适应计算力矩法相比固定参数法,最大跟踪误差降低75%,且无需离线重新辨识。风险提示:自适应增益过大可能导致参数漂移,需加入σ-修正或死区。
2.3 控制架构:从PID到现代方法
2.3.1 核心原理与对比
经典PID控制器因其结构简单、无需模型、鲁棒性强而广泛应用于工业机器人关节控制。其控制律为:
τ = K_p·e + K_i·∫e dt + K_d·ė
然而,PID本质上是线性控制器,对于机器人这类强耦合非线性系统,难以在所有工况下获得一致的高性能。计算力矩法通过模型补偿实现全局线性化,但依赖精确模型。实际工程中常采用“PID+重力补偿”或“PID+前馈”的折中方案。
| 控制方法 | 模型依赖 | 稳态精度 | 动态性能 | 鲁棒性 | 计算复杂度 | 适用场景 |
|---|---|---|---|---|---|---|
| PID | 无 | 中(有静差) | 一般 | 高 | 低 | 低速、低精度要求 |
| PID+重力补偿 | 部分(重力项) | 较好 | 中等 | 较高 | 低 | 垂直关节机器人 |
| 计算力矩法 | 完整模型 | 高 | 优秀 | 低(模型失配时) | 中 | 高速高精度轨迹跟踪 |
| 滑模控制 | 部分(边界已知) | 高 | 良好 | 极高 | 中 | 强扰动、参数大范围变化 |
| 阻抗控制 | 部分(动力学) | 力控精度高 | 柔顺 | 中 | 中 | 人机交互、装配 |
2.3.2 操作流程:PID参数整定
- 系统辨识:获取关节的近似传递函数(如通过阶跃响应或频率响应)。
- 先整定P:从小到大增加 K_p,观察响应直至出现轻微振荡。
- 再整定D:增加 K_d 抑制超调,改善阻尼。
- 最后整定I:缓慢增加 K_i 消除稳态误差,注意积分饱和问题。
- 联合验证:在不同速度、负载下测试,必要时采用增益调度。
2.3.3 案例拆解:SCARA机器人高速拾取控制
某SCARA机器人用于电子元件高速拾取,节拍要求0.8s完成“下降-拾取-上升-移动-放置”动作。初始方案采用纯PID控制,在高速运行时末端振动明显,定位误差达±1.5mm,超出±0.5mm的规格要求。关键数据:关节2(大臂)PID参数 K_p=120, K_i=5, K_d=8,最大速度 180°/s。分析过程:通过频谱分析发现末端振动频率约12Hz,与关节2的机械谐振频率接近。操作步骤:① 在PID基础上增加二阶低通滤波器(截止频率30Hz)抑制高频噪声;② 增加速度前馈项 τ_ff = K_v·q̇_des,K_v 通过辨识得到约0.85;③ 采用计算力矩法替代纯PID,利用辨识的动力学模型进行补偿。结果对比:采用“计算力矩+前馈”方案后,定位误差降至±0.3mm,节拍缩短至0.65s,振动幅度降低70%。复盘经验:对于高速轻载机器人,动力学前馈比单纯提高PID增益更有效,且不会激发机械谐振。
2.4 状态空间表示:统一分析与学习的基础
2.4.1 核心原理
状态空间表示将机器人动力学方程转化为一阶微分方程组形式,便于现代控制理论与机器学习方法的应用。定义状态向量 x = [q; q̇] ∈ R²ⁿ,则:
ẋ = f(x, u) = [q̇; M⁻¹(q)·(u - C(q,q̇)q̇ - G(q) - F_friction)]
其中 u = τ 为控制输入。该表示具有以下优势:① 统一描述多输入多输出系统;② 便于进行能控性、能观性分析;③ 为LQR、MPC等现代控制方法提供标准形式;④ 直接作为强化学习的状态输入(state)与动作输入(action)。
2.4.2 线性化与离散化
在平衡点 (x₀, u₀) 附近进行泰勒展开,可得线性化状态方程:
δẋ = A·δx + B·δu
其中 A = ∂f/∂x|₀, B = ∂f/∂u|₀。对于数字控制系统,还需进行离散化(如零阶保持法),得到 x(k+1) = A_d·x(k) + B_d·u(k)。离散化步长通常取控制周期的1/10~1/5。
2.4.3 实战场景:基于状态空间的LQR控制器设计
针对一个二连杆平面机械臂,期望在关节空间实现高精度定位。设计步骤如下:
- 建立状态空间模型:取 x = [q₁, q₂, q̇₁, q̇₂]ᵀ,在垂直向下平衡点线性化。
- 能控性检查:计算能控性矩阵 Q_c = [B, AB, A²B, A³B],验证 rank(Q_c)=4。
- LQR增益计算:选择权重矩阵 Q = diag(100, 100, 1, 1),R = diag(0.1, 0.1),求解Riccati方程得到 K = [31.6, 31.6, 14.1, 14.1]。
- 仿真验证:在Simulink中搭建非线性模型,验证LQR在平衡点附近的性能。
- 鲁棒性测试:在末端增加0.5kg负载,观察响应变化。
结果:LQR在平衡点附近表现出良好的调节性能(调节时间0.4s,超调5%),但当负载增加后,稳态误差增大至0.02rad。分析:线性化模型未包含重力变化项,导致模型失配。改进方案:在LQR基础上增加积分项(LQI控制器),将稳态误差降至0.005rad以下。
2.5 常见误区与总结复盘
2.5.1 常见误区
- 误区一:忽视动力学模型的重要性。许多工程师认为PID足够,但在高速、高负载变化场景下,模型补偿是提升性能的关键。
- 误区二:逆运动学求解只关注单一解。忽略多解评估可能导致关节限位或奇异问题。
- 误区三:状态空间表示仅用于线性系统。非线性状态空间模型同样是强化学习环境搭建的基础。
- 误区四:计算力矩法万能。模型误差较大时,该方法可能比PID更不稳定,需配合鲁棒项。
- 误区五:忽略离散化影响。连续域设计的控制器在数字实现时可能因采样延迟而性能退化。
2.5.2 总结复盘
本章从运动学、动力学、控制架构与状态空间四个维度构建了机器人控制的基础框架。运动学解决“机器人能到达哪里”的问题,动力学回答“需要多大扭矩才能到达”,控制架构决定“如何计算扭矩指令”,状态空间则为“如何统一描述与分析”提供了数学语言。对于后续的机器学习与强化学习策略,这四者分别对应:状态/动作空间定义(运动学+状态空间)、环境动力学模型(动力学)、底层安全控制器(控制架构)、以及学习算法的输入输出接口(状态空间)。建议读者在进入后续章节前,务必掌握以下核心技能:① 能够独立推导并编程实现正逆运动学;② 理解动力学方程各项的物理意义并能进行参数辨识;③ 能够根据任务需求选择合适的控制架构并完成参数整定;④ 熟练将动力学模型转化为状态空间形式,并完成线性化与离散化。