Open Source Robotics

精选高质量开源机器人项目、工具和软件,推动机器人社区发展。

DART

用于铰接刚体动力学和机器人仿真的 C++ 物理引擎

许可证

BSD-2-Clause

概述

DART(Dynamic Animation and Robotics Toolkit)是一个 C++20 物理引擎,用于仿真铰接刚体动力学,并采用基于约束的接触处理。它由佐治亚理工学院开发,提供正/逆运动学、正向动力学、雅可比矩阵计算和碰撞检测。与 Isaac Gym 或 MuJoCo 的 MJX 等 GPU 并行仿真器不同,DART 专注于铰接体仿真的数学精度,支持 URDF、SDF 和 MJCF 格式。附带 Python 绑定(dartpy),并可与 Gazebo 集成。

DART(Dynamic Animation and Robotics Toolkit)是由佐治亚理工学院开发的开源 C++20 物理引擎,为铰接刚体系统的运动学和动力学仿真提供数据结构和算法。它采用广义坐标和 Featherstone 铰接体算法,提供机器人应用所需的数值精度和稳定性。

DART 的一大特点是通过单一 API 统一支持所有主要的机器人描述格式——URDF、SDF、MJCF 以及其自有的 SKEL 格式。它集成了多个碰撞检测后端(FCL、Bullet、ODE),并在耦合的约束动力学框架中求解接触约束、关节限位和闭环机构。Python 绑定(dartpy)可通过 PyPI 和 conda 获取。

DART 已持续开发超过 14 年,每年提交超过 500 次,是机器人领域维护最活跃的物理引擎之一。它为 Gazebo 仿真器的 DART 物理后端提供支持,并被全球研究实验室用于控制算法开发、运动规划和计算机动画。

为何重要

DART 十四年多来一直是机器人仿真领域的核心物理引擎,为 Gazebo 仿真器和全球众多研究实验室提供支持。它结合广义坐标与 Featherstone 铰接体算法,提供机器人应用所需的精度和稳定性,而其多格式支持(URDF、SDF、MJCF)则使其具有独特的通用性。

解决的问题

机器人仿真需要一个能够以高数值精度正确处理铰接体动力学、关节约束、接触和碰撞的物理引擎。DART 以简洁的 API 提供了这一基础:支持从所有主要格式加载机器人模型、接入多个碰撞检测后端,并计算既适用于控制算法开发又适用于计算机动画的动力学。

要点

  • 在广义坐标上使用 Featherstone 铰接体算法,实现精确的动力学
  • 通过统一 API 加载 URDF、SDF、MJCF 和 SKEL 机器人描述格式
  • 多个碰撞检测后端,包括 FCL、Bullet 和 ODE
  • 约束动力学求解器可同时处理关节限位、接触和闭环机构
  • 跨平台(Linux、macOS、Windows),并通过 PyPI 和 conda 上的 dartpy 提供 Python 绑定

适用人群

  • 在仿真中开发和测试控制算法的机器人研究人员
  • 需要理解或定制底层物理引擎的 Gazebo 用户
  • 需要物理精确的铰接体仿真的计算机动画开发者
  • 需要稳定仿真后端的强化学习从业者

局限

  • 尽管能力相当,但在强化学习研究中的使用不如 MuJoCo 或 Isaac Sim 广泛
  • GPU 加速仿真目前不是重点——在 CPU 上运行
  • C++20 要求可能对锁定在旧版编译器的项目造成限制
  • 与 MuJoCo 或 PyBullet 相比,社区较小,预构建环境较少

本网站需要 JavaScript 才能正常运行。请启用 JavaScript 以浏览我们的开源机器人项目。