dartsim/dart
Research-focused C++23 physics engine for robotics, animation, and machine learning, with Python bindings
DART – Dynamic Animation and Robotics Toolkit
产品简介 – DART 是一个开源物理引擎,旨在用于机器人、动画和机器学习驱动的模拟研究。它为用户提供底层运动学、动力学、碰撞处理和约束求解的直接访问,而不是将其隐藏在黑盒之后。
重要意义 – 该引擎基于广义坐标和 Featherstone 的 Articulated-Body Algorithm 构建,能够对关节刚体系统(例如人形机器人)提供精确且稳定的模拟。它在 Gazebo 的底层运行,并被许多大学实验室使用,是需要可靠动力学项目的坚实基础。
核心能力
- 研究级动力学 – Featherstone 算法,直接访问力、力矩、雅可比矩阵等。
- 多格式模型加载 – 可以通过单个 API 导入 URDF、SDF 和 MJCF。
- 跨语言支持 – C++ 核心及官方 Python 绑定 (
dartpy)。可通过 Conda、PyPI 和pixi包管理器获取软件包。 - 可扩展架构 – 模块化的数学、碰撞、约束和基准测试组件,便于插入新算法。
- 可扩展计算路线图 – 目前仅支持 CPU,但项目计划引入 SIMD 和加速器后端。
- 生产级测试 – 为 Gazebo 和其他大规模机器人系统提供动力,尽管最新的 DART 7 分支仍处于实验阶段。
典型用例
- 为强化学习研究模拟机器人的运动或操作。
- 为虚拟角色生成物理上真实的动画。
- 对新的接触解析或控制算法进行基准测试。
- 与需要物理层的更大型机器人技术栈(如 Gazebo)集成。
入门指南
- Python (推荐) – 通过
conda install -c conda-forge dartpy安装稳定的 DART 6 系列,或在 wheel 发布后通过pip install --pre dartpy安装实验性的 DART 7 系列。如需从源码构建 DART 7,请克隆仓库并运行pixi run build。 - C++ – 安装预构建包 (
conda install -c conda-forge dartsim-cpp,brew install dartsim等) 或使用提供的pixi命令从源码构建。 - 快速演示 (Python):
import dartpy as dart, numpy as np world = dart.World(time_step=1e-3) opts = dart.RigidBodyOptions(); opts.mass = 1.0; opts.position = np.array([0,0,1]) box = world.add_rigid_body('box', opts) world.enter_simulation_mode() for _ in range(100): world.step() print(f"t={world.time:.3f}s, box z={box.translation[2]:.3f}m")
文档与社区 – 完整文档请访问 https://dart.readthedocs.io/,通过 DeepWiki 获取 AI 增强的问答,并通过 GitHub Discussions 论坛获取支持。
许可证 – BSD 2-Clause(宽松,商业友好)。
成熟度 – DART 6 (分支 release-6.*) 是适用于生产环境的稳定 LTS 版本。DART 7 (main 分支) 是仍在积极开发中的重新设计版本,目前尚不建议用于生产工作负载。
以上所有信息均直接取自仓库的 README。
相关
- 项目
- 项目
- 项目
- 项目
- 项目