개요

DART (Dynamic Animation and Robotics Toolkit) is a collaborative, cross-platform, open-source, research-focused physics engine developed by the Graphics Lab and Humanoid Robotics Lab at the Georgia Institute of Technology, with ongoing contributions from the Personal Robotics Lab at the University of Washington and the Open Source Robotics Foundation. It provides data structures and algorithms for kinematic and dynamic applications in robotics, animation, and machine learning. DART stands out because it exposes accurate, stable dynamics foundations rather than hiding the simulator behind a black-box API. It uses generalized coordinates for articulated rigid body systems and Featherstone’s Articulated Body Algorithm to compute motion dynamics.

For curated how-to material, visit Key Topics, which aggregates the tutorial series and other deep dives such as the inverse kinematics guide.

For developers and researchers, DART offers full access to internal kinematic and dynamic quantities, such as the mass matrix, Coriolis and centrifugal forces, transformation matrices, and their derivatives, unlike many popular physics engines that treat the simulator as a black box. It also provides efficient computation of Jacobian matrices for arbitrary body points and coordinate frames. The frame semantics of DART allow users to define and use arbitrary reference frames (both inertial and non-inertial) to specify or request data.

DART is intended to be easy to start with and practical to extend. Python and C++ packages cover common installation paths, while pixi-based source builds support reproducible development. Its math, collision, constraint, model-loading, benchmark, and test foundations are organized so new algorithms can be implemented and compared against existing DART baselines. Current platform support is centered on cross-platform CPU execution, with roadmap work tracking multi-core, SIMD, and accelerator backends.

For the DART 7 direction — how the simulation pipeline supports multiple physics domains, multiple solver methods, and multiple compute backends in one step, with the available options at each abstraction seam — see DART 7 Architecture: Multi-Physics, Multi-Solver, Multi-Backend.

For visible citation guidance and credits for research methods implemented or being reproduced in DART, see Research Papers And References.

DART는 게으른 평가로 인해 코드 안전성을 보장하기 위해 자동으로 전진 운동학 및 동력학 값을 업데이트하므로 실시간 컨트롤러에 적합합니다. 또한 사용자가 제공하는 클래스를 DART 데이터 구조에 임베드하여 API를 확장할 수 있습니다. 접촉과 충돌은 암시적 시간 단계, 속도 기반 선형 보완성 문제(LCP)를 사용하여 비침투, 방향성 마찰 및 근사적인 쿨롱 마찰원 조건을 보장합니다.

In summary, DART supports robotics, animation, machine-learning research, and best-effort production use with a transparent multibody dynamics engine, kinematic tools for control and motion planning, and extension points for new algorithms.

특징

일반

  • BSD 라이센스로 배포되는 오픈 소스 C++ 라이브러리 입니다.

  • Ubuntu, FreeBSD, macOS 및 Windows를 비롯한 여러 플랫폼을 지원합니다.

  • Gazebo와 완전히 통합되어 있습니다.

  • URDF 및 SDF 형식의 모델을 지원합니다.

  • Provides a default semi-implicit Euler timestepper plus low-level dynamics access for implementing custom numerical integration methods.

  • 게으른 평가 및 운동학 및 동역학 양의 자동 업데이트를 지원합니다.

  • API를 확장하여 사용자가 제공한 클래스를 데이터 구조에 임베드할 수 있습니다.

  • 시뮬레이션 기록에서 포괄적인 이벤트 기록을 제공합니다.

  • GLFW3 및 Dear ImGui를 지원하는 Filament 기반 3D 시각화 API.

  • 비선형 프로그래밍 및 다목적 최적화와 같은 다양한 최적화 문제와 상호 작용하기 위한 확장 가능한 API.

충돌 감지

  • Built-in native collision detector for normal runtime use, with optional FCL, Bullet, and ODE reference comparisons for tests and benchmarks.

  • 기본 도형, 오목한 메시 및 확률적 복셀 그리드를 비롯한 다양한 충돌 모양을 지원합니다.

  • 최소 거리 계산을 지원합니다.

기구학

  • 다양한 종류의 조인트를 지원합니다.

  • 사용자 정의 가능한 관성 및 물성 속성을 가진 다양한 기본 및 임의의 바디 모양을 지원합니다.

  • 스켈레톤 모델링을 유연하게 지원하며, 스켈레톤 또는 스켈레톤 부분의 복제 및 재구성이 가능합니다.

  • 임의의 개체 및 좌표 프레임의 운동학 상태(변환, 위치, 속도 또는 가속도)에 대한 포괄적인 액세스를 제공합니다.

  • 다양한 자코비안 행렬 및 이들의 미분에 대한 포괄적인 액세스를 제공합니다.

  • 좌표 프레임의 유연한 변환을 지원합니다.

  • 완전히 모듈화된 역운동학 프레임워크를 제공합니다.

  • 플러그 앤 플레이 형태의 계층적 전신 역운동학 솔버를 제공합니다.

  • Analytic inverse kinematics interface with IkFast support (IkFast Support and Integration).

동역학

  • Lie 그룹 표현과 Featherstone 하이브리드 알고리즘을 사용하여 관절 동적 시스템에 대한 고성능을 제공합니다.

  • 일반화된 좌표를 사용하여 바디 노드 간의 관절을 정확하게 강제합니다.

  • 질량 행렬, 코리올리스 힘, 중력 및 기타 외부 및 내부 힘과 같은 동적 양과 이들의 미분에 대한 포괄적인 API를 제공합니다.

  • 강성 및 연성 바디 노드를 모두 지원합니다.

  • 관절 마찰과 하드 관절 한계를 가진 점성탄성 관절 동역학 모델링을 지원합니다.

  • 다양한 유형의 액추에이터를 지원합니다.

  • 암시적 LCP를 사용하여 비침투, 방향성 마찰 및 근사적인 쿨롱 마찰원 조건을 보장하여 접촉 및 충돌을 처리합니다.

  • 효율적인 성능을 위해 제한 조건을 세분화하는 ‘Island’ 기술을 사용합니다.

  • 다양한 카르테시안 제약 조건을 지원하며, 사용자 정의 가능한 제약 조건을 위한 확장 가능한 API를 제공합니다.

  • 여러 제약 해결기를 지원합니다: Lemke 방법, Dantzig 방법 및 PSG 방법.

  • 폐루프 구조의 동적 시스템을 지원합니다.