Articulated-Body Algorithm (ABA) 笔记
简介
Articulated-Body Algorithm(简称 ABA)是 Featherstone 提出的机器人动力学高效算法,主要用于 前向动力学 (Forward Dynamics) 计算:
- 已知:关节位置 q、关节速度 q̇、关节力矩 τ
- 计算:关节加速度 q̈
与传统方法相比,ABA 避免了质量矩阵 M(q) 的显式求逆,将复杂度从 O(n³) 降到 O(n)(n 为关节数)。
动力学背景
动力学方程:
- M(q):质量矩阵
- h(q, q̇):科氏力、离心力、重力等
- τ:广义力矩
直接解需要:
但矩阵求逆代价高, ABA 通过递归传播替代矩阵求逆。
算法流程
Step 1: 前向遍历 (Forward pass)
- 从基座到末端
- 计算每个关节的:
- 空间速度 vᵢ
- 偏加速度 cᵢ(Coriolis/重力项)
Step 2: 反向遍历 (Backward pass)
- 从末端到基座
- 计算每个关节的:
- 有效惯性 (articulated-body inertia) Iᵢ*
- 偏广义力 pᵢ*
- 聚合子关节的信息,逐层往上传递
Step 3: 前向求解 (Forward pass)
- 从基座再到末端
- 解出每个关节的加速度 q̈ᵢ
- 结合 τ 和上一步结果,传播最终加速度
算法示意图
三关节机械臂的递归传播
- 蓝色箭头:速度/偏加速度从基座传到末端
- 红色箭头:力和惯性从末端传回基座
- 绿色箭头:加速度从基座传到末端
(见图:三关节机械臂的 ABA 流程)
应用
- 机器人仿真引擎:Gazebo、MuJoCo、Isaac Sim
- 动力学库:RBDL、Pinocchio、Drake
- 控制算法:MPC、RL 等需要实时动力学计算的场景
伪代码示例
function ABA(q, qd, tau): |
参考
1) R. Featherstone, The Calculation of Robot Dynamics Using Articulated-Body Inertias, 1983.
2) Featherstone, Rigid Body Dynamics Algorithms, 2008.
3) Pinocchio / RBDL 源码实现