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