Articulated Body Algorithm
- 又称: ABA, Featherstone's algorithm, Featherstone algorithm
- 类别: Software & tooling › Simulation & twins
- 标签: rigid-body-dynamics, forward-dynamics, simulation, algorithms, physics-engines
一种高效的递归算法,由 Featherstone 于 1983 年提出,能以与关节数成正比的时间,根据施加的力矩计算机器人的关节加速度。
定义
铰接体算法(Articulated body algorithm,ABA)是指 Roy Featherstone 提出的一种方法,用于计算由关节以树状结构连接的刚体所组成的机器人的正向动力学:给定当前的关节位置、速度和施加的力矩,求出由此产生的关节加速度。Featherstone 于 1983 年提出了这一算法,它是他的著作 Rigid Body Dynamics Algorithms 中的核心算法之一。
计算正向动力学的直接方法是构建关节空间质量矩阵(例如用复合刚体算法),然后求解一个线性方程组。构建并分解这个矩阵的开销随关节数的增长快于线性增长。ABA 避免了形成这个矩阵,其运行时间与刚体数量成正比,记为 O(n)。
它通过对运动学树的三次遍历来实现这一点。第一次向外遍历计算每个刚体的速度以及与速度相关的偏置项。向内遍历从叶节点向基座进行,计算每个刚体的铰接体惯量:即该刚体连同其外侧所连接的全部部分所表现出的等效惯量,并计入其间的关节。最后一次向外遍历从基座到叶节点计算关节加速度。该算法用空间向量代数写成,这是一种把线性量和角量结合起来的六维记法。
ABA 已在 Pinocchio、RBDL 和 Drake 等刚体动力学库中实现。对于只有少数几个关节的机器人,质量矩阵方法在实践中可能同样快,而对于更长的运动链和人形机器人这类分支结构的机器人,ABA 的优势会增大。其背后的递归思想已被推广到相关的量,例如操作空间惯量和接触动力学。
为何重要
仿真器、模型预测控制器和轨迹优化器要对正向动力学进行成千上万次求值。ABA 这样的高效算法直接影响这些工具的运行速度,以及它们能实时处理多复杂的机器人。
主要应用
- 物理仿真器中的正向动力学
- 腿足机器人的模型预测控制和轨迹优化
- 用于基于梯度的优化的动力学导数
- 高自由度人形机器人和机械臂的实时仿真
实际应用
大多数机器人团队通过库来使用 ABA,而不是自己实现它。控制工程师可能会把人形机器人的 URDF 加载到 Pinocchio 中,在仿真器或模型预测控制器里调用它的正向动力学例程,或者调用它的解析导数来进行基于梯度的轨迹优化。自己编写动力学代码的工程师以 Featherstone 的书为参考,并在同一个模型上用质量矩阵方法检验自己的实现。
常见误解
- ABA 计算的是逆向动力学 — 它计算的是正向动力学;逆向动力学通常用递归牛顿-欧拉算法计算
- ABA 总是比质量矩阵方法快 — 对于关节较少的机器人,差别可能很小,甚至相反
- ABA 能直接处理闭合运动链 — 它是针对运动学树构建的;闭环需要额外的约束处理
谁需要了解
- 物理仿真器和动力学库的开发者
- 从事模型预测控制和轨迹优化的控制工程师
- 腿足运动和人形机器人领域的研究人员
相关技术
- 递归牛顿-欧拉算法(Recursive Newton–Euler Algorithm)
- 复合刚体算法(Composite Rigid Body Algorithm)
- 空间向量代数(Spatial Vector Algebra)
- Pinocchio
- RBDL
- Drake
相关术语
相关项目
- GENESIS: World's fastest physics engine: 43M FPS for embodied AI learning
- LeRobot: HuggingFace ML library for real-world robotics in PyTorch
- PyBullet: Python physics simulator for robotics and RL research with fast CPU-based simulation
- RLinf: Scalable infrastructure for post-training foundation models via RL
- Webots: Cross-platform robot simulator with built-in models, sensors, and development environment
- NVIDIA Isaac Sim: NVIDIA Omniverse app for AI-driven robot simulation and testing