3. 机器人动力学基础:牛顿-欧拉方程、拉格朗日方程、动力学建模方法
3.1 为什么需要动力学模型
运动学只回答“机器人各关节以什么角度、速度、加速度运动”,而动力学回答的是更本质的问题:“要让机器人实现这样的运动,各关节需要施加多大的驱动力矩/力?”。动力学模型是机器人控制系统设计、仿真验证、力矩前馈补偿、负载辨识以及结构强度校核的基础。没有准确的动力学模型,高速高精度运动控制就无从谈起。
机器人动力学研究通常围绕两大经典方法展开:牛顿-欧拉法(基于力/力矩平衡的递推算法)与拉格朗日法(基于能量标量的解析建模)。两种方法在数学形式、计算效率与物理直观性上各有侧重,适用于不同场景。
核心概念速览:动力学方程的一般形式可写为:
M(q)q̈ + C(q, q̇)q̇ + G(q) + τ_f(q̇) = τ
其中 M(q) 为惯性矩阵,C(q,q̇)q̇ 包含科氏力和离心力,G(q) 为重力项,τ_f 为摩擦力矩,τ 为关节驱动力矩。
3.2 牛顿-欧拉法:递推的灵魂
牛顿-欧拉法从单个刚体的牛顿方程(平动)和欧拉方程(转动)出发,将机器人连杆视为一系列通过关节连接的刚体。其核心思想是先向外(从基座到末端)递推各连杆的角速度、角加速度、线加速度,再向内(从末端到基座)递推各连杆间的相互作用力和力矩,最终得到关节驱动力矩。
对于第 i 个连杆,其牛顿方程与欧拉方程分别为:
f_i − f_{i+1} + m_i g = m_i v̇_c,i
n_i − n_{i+1} − (p_{i+1}−p_i) × f_{i+1} + (p_{c,i}−p_i) × m_i g
= I_i ω̇_i + ω_i × (I_i ω_i)
其中 f_i、n_i 为连杆 i−1 作用于连杆 i 的力与力矩,p_i 为关节位置,p_{c,i} 为质心位置,I_i 为惯性张量。
实际工程中,通常使用改进的牛顿-欧拉递推算法(Luh-Walker-Paul 方法),将计算复杂度控制在 O(n),非常适合实时控制中的力矩前馈计算。许多工业机器人控制器(如 KUKA、ABB 的某些控制模式)内部即采用该算法的变体。
3.3 拉格朗日法:从能量视角建模
拉格朗日法不直接分析每个连杆上的力,而是从系统的总动能 K 和总势能 P出发,构造拉格朗日函数 L = K − P,然后代入第二类拉格朗日方程:
d/dt (∂L/∂q̇_i) − ∂L/∂q_i = τ_i (i = 1, 2, …, n)
对于 n 自由度机器人,展开后得到 n 个二阶常微分方程,整理成矩阵形式即为:
M(q)q̈ + C(q, q̇)q̇ + G(q) = τ
拉格朗日法的优势在于:
- 不需要考虑内部约束力,只需关注系统的能量标量,建模过程更系统化;
- 得到的方程具有解析结构,便于分析惯性耦合、科氏力特性,也便于设计基于模型的控制律(如计算力矩法、自适应控制);
- 对于并联机器人或闭链机构,拉格朗日法配合约束方程往往比牛顿-欧拉法更易处理。
缺点是对于自由度较多的机器人,手工推导拉格朗日方程会非常繁琐,通常借助符号计算工具(如 MATLAB Symbolic、SymPy)完成。
3.4 两连杆机械臂建模案例
以一个平面两连杆机械臂为例(杆长 l₁、l₂,质量集中在末端 m₁、m₂),用拉格朗日法建立其动力学方程。
步骤 1:求末端位置与速度。设关节角为 q₁、q₂,则杆 2 末端位置为:
x = l₁cos(q₁) + l₂cos(q₁+q₂)
y = l₁sin(q₁) + l₂sin(q₁+q₂)
对时间求导得到速度分量 ẋ、ẏ,进而计算系统动能:
K = ½m₁(l₁q̇₁)² + ½m₂(ẋ² + ẏ²)
步骤 2:系统势能(取基座水平面为零势能面):
P = m₁g·l₁sin(q₁) + m₂g·[l₁sin(q₁) + l₂sin(q₁+q₂)]
步骤 3:构造 L = K − P,分别对 q̇₁、q₁、q̇₂、q₂ 求偏导并代入拉格朗日方程,整理后得到:
M(q) = [[(m₁+m₂)l₁² + m₂l₂² + 2m₂l₁l₂cos(q₂), m₂l₂² + m₂l₁l₂cos(q₂)],
[m₂l₂² + m₂l₁l₂cos(q₂), m₂l₂²]]
C(q,q̇)q̇ = [[−m₂l₁l₂sin(q₂)(2q̇₁q̇₂ + q̇₂²)],
[m₂l₁l₂sin(q₂)q̇₁²]]
G(q) = [[(m₁+m₂)gl₁cos(q₁) + m₂gl₂cos(q₁+q₂)],
[m₂gl₂cos(q₁+q₂)]]
可以看到,惯性矩阵 M(q) 中出现了 cos(q₂) 项,说明两关节之间存在惯性耦合——关节 2 的位置直接影响关节 1 的等效惯量。这正是动力学建模揭示的重要特性,也是设计解耦控制器的关键依据。
| 建模方法 | 数学基础 | 计算复杂度 | 主要优势 | 典型应用场景 |
|---|---|---|---|---|
| 牛顿-欧拉法 | 力/力矩平衡 + 递推 | O(n),效率高 | 适合实时计算、数值仿真 | 工业机器人实时力矩控制 |
| 拉格朗日法 | 能量标量 + 变分法 | O(n³) 矩阵运算(若直接求逆) | 解析结构清晰,便于控制律设计 | 控制器设计、动力学分析 |
| 凯恩法(Kane) | 达朗贝尔原理 + 广义速率 | 介于两者之间 | 避免内力项,适合复杂多体系统 | 航天器、仿人机器人 |
3.5 动力学建模的工程流程
在实际工程项目中,建立机器人动力学模型通常遵循以下流程:
- 运动学准备:建立 D-H 参数表,明确各连杆坐标系变换关系;
- 惯性参数获取:通过 CAD 模型计算或实验辨识获得各连杆的质量、质心位置、惯性张量;
- 选择建模方法:根据用途选择牛顿-欧拉法(实时控制)或拉格朗日法(控制设计);
- 符号推导或数值生成:利用工具(如 MATLAB Robotics Toolbox、SymPyBotics)自动生成动力学方程;
- 模型验证:对比仿真力矩与实测力矩,或通过能量守恒检查模型一致性;
- 参数辨识与修正:设计激励轨迹,用最小二乘法辨识实际惯性参数,修正理论模型。
实操建议:对于六轴工业机器人,不建议手工推导完整拉格朗日方程。推荐使用 Robotics Toolbox(Peter Corke)中的 rne() 函数直接计算逆动力学,或使用 pinv 方法进行参数辨识。例如:
% MATLAB 示例:计算关节力矩
mdl_puma560; % 加载 PUMA560 模型
q = [0.1 0.2 0.3 0 0 0]; % 关节角
qd = zeros(1,6); % 关节速度
qdd = [1 0.5 0 0 0 0]; % 关节加速度
tau = p560.rne(q, qd, qdd); % 逆动力学计算力矩
3.6 常见误区与复盘
误区一:混淆运动学与动力学。初学者常试图用雅可比矩阵直接计算力矩,但雅可比只描述速度/力映射关系(静力传递),不包含惯性力和科氏力。只有在极低速、忽略动态效应的准静态场景下,才可用 τ = JᵀF 近似。
误区二:忽略科氏力和离心力项。在低速或小型机器人中,C(q,q̇)q̇ 项可能较小,但在高速运动或大负载场景下,科氏力可能占驱动力矩的 30% 以上。若在控制器中完全忽略该项,会导致轨迹跟踪误差显著增大。
误区三:惯性参数“拍脑袋”设定。直接使用 CAD 理论值而不进行实验辨识,往往导致模型与实际系统偏差较大(尤其是摩擦力和连杆质心位置)。工程中应设计充分激励的辨识轨迹(如傅里叶级数轨迹),通过实测关节力矩数据反推惯性参数。
误区四:忽视摩擦力建模。库仑摩擦 + 粘性摩擦是最基础模型,但实际系统中还存在 Stribeck 效应和位置依赖性摩擦。对于高精度应用,建议采用 LuGre 摩擦模型或基于神经网络的摩擦补偿。
复盘提醒:在调试动力学参数时,若发现仿真力矩与实测力矩存在系统性偏差,首先检查:① 连杆坐标系方向是否与 D-H 表一致;② 重力项符号是否正确(基座朝上/朝下安装时重力方向不同);③ 减速比与传动效率是否已折算到关节侧。这三处是最常见的“模型对但符号错”的根源。
综上所述,牛顿-欧拉法与拉格朗日法分别从“力平衡递推”和“系统能量”两个角度揭示了机器人动力学的本质。前者适合计算、后者适合分析,二者在数学上等价,工程中常配合使用。掌握这两种方法,并熟悉参数辨识与模型验证的流程,是进行机器人动力学控制、仿真与优化设计的基本功。