Open Source Robotics

Uma coleção selecionada de projetos, ferramentas e software de robótica de código aberto de alta qualidade.

DART

Motor de física em C++ para dinâmica de corpos rígidos articulados e simulação robótica

Licença

BSD-2-Clause

Visão geral

O DART (Dynamic Animation and Robotics Toolkit) é um motor de física em C++20 para simular a dinâmica de corpos rígidos articulados com tratamento de contato baseado em restrições. Desenvolvido na Georgia Tech, ele oferece cinemática direta/inversa, dinâmica direta, cálculo de jacobianos e detecção de colisões. Diferentemente de simuladores paralelos em GPU, como o Isaac Gym ou o MJX do MuJoCo, o DART foca na precisão matemática para a simulação de corpos articulados, com suporte aos formatos URDF, SDF e MJCF. Inclui bindings Python (dartpy) e se integra ao Gazebo.

O DART (Dynamic Animation and Robotics Toolkit) é um motor de física de código aberto em C++20, desenvolvido na Georgia Tech, que fornece estruturas de dados e algoritmos para a simulação cinemática e dinâmica de sistemas de corpos rígidos articulados. Ele usa coordenadas generalizadas e o Articulated Body Algorithm de Featherstone para oferecer a precisão numérica e a estabilidade exigidas por aplicações de robótica.

Uma característica distintiva do DART é o suporte unificado a todos os principais formatos de descrição de robôs — URDF, SDF, MJCF e seu próprio formato SKEL — por meio de uma única API. Ele integra vários backends de detecção de colisão (FCL, Bullet, ODE) e resolve restrições de contato, limites de juntas e mecanismos de malha fechada em uma estrutura acoplada de dinâmica de restrições. Os bindings Python (dartpy) estão disponíveis via PyPI e conda.

Com mais de 14 anos de desenvolvimento contínuo e mais de 500 commits por ano, o DART é um dos motores de física mantidos de forma mais ativa na robótica. Ele alimenta o backend de física DART do simulador Gazebo e é usado em laboratórios de pesquisa do mundo todo para desenvolvimento de algoritmos de controle, planejamento de movimento e animação computacional.

Por que importa

O DART é há mais de 14 anos um motor de física fundamental na simulação robótica, dando suporte ao simulador Gazebo e a inúmeros laboratórios de pesquisa no mundo todo. O uso de coordenadas generalizadas com o Articulated Body Algorithm de Featherstone proporciona a precisão e a estabilidade que as aplicações de robótica exigem, enquanto o suporte a múltiplos formatos (URDF, SDF, MJCF) o torna excepcionalmente versátil.

Problema que resolve

A simulação robótica exige um motor de física que trate corretamente a dinâmica de corpos articulados, restrições de juntas, contatos e colisões com alta precisão numérica. O DART oferece essa base com uma API limpa que permite carregar modelos de robôs de todos os principais formatos, conectar vários backends de detecção de colisão e calcular uma dinâmica adequada tanto ao desenvolvimento de algoritmos de controle quanto à animação computacional.

Pontos principais

  • Usa o Articulated Body Algorithm de Featherstone sobre coordenadas generalizadas para uma dinâmica precisa
  • Carrega os formatos de descrição de robôs URDF, SDF, MJCF e SKEL por meio de uma API unificada
  • Vários backends de detecção de colisão, incluindo FCL, Bullet e ODE
  • O solucionador de dinâmica de restrições trata limites de juntas, contatos e mecanismos de malha fechada em conjunto
  • Multiplataforma (Linux, macOS, Windows) com bindings Python via dartpy no PyPI e no conda

Para quem é

  • Pesquisadores de robótica que desenvolvem e testam algoritmos de controle em simulação
  • Usuários do Gazebo que precisam entender ou personalizar o motor de física subjacente
  • Desenvolvedores de animação computacional que precisam de simulação fisicamente precisa de corpos articulados
  • Profissionais de aprendizado por reforço que precisam de um backend de simulação estável

Limitações

  • Menos usado em pesquisa de RL do que MuJoCo ou Isaac Sim, apesar de capacidades comparáveis
  • A simulação acelerada por GPU não é um foco atual: roda em CPU
  • A exigência de C++20 pode ser restritiva para projetos presos a versões antigas de compilador
  • Comunidade menor e menos ambientes prontos em comparação com MuJoCo ou PyBullet

Este site requer JavaScript. Por favor, habilite o JavaScript para explorar nossos projetos de robótica.