Open Source Robotics

Una raccolta curata di progetti, strumenti e software di robotica open source di alta qualità per la comunità della robotica.

DART

Motore fisico C++ per la dinamica di corpi rigidi articolati e la simulazione robotica

Licenza

BSD-2-Clause

Panoramica

DART (Dynamic Animation and Robotics Toolkit) è un motore fisico in C++20 per simulare la dinamica di corpi rigidi articolati con una gestione dei contatti basata su vincoli. Sviluppato al Georgia Tech, fornisce cinematica diretta/inversa, dinamica diretta, calcolo del jacobiano e rilevamento delle collisioni. A differenza di simulatori paralleli su GPU come Isaac Gym o MJX di MuJoCo, DART punta sull'accuratezza matematica nella simulazione di corpi articolati, con supporto ai formati URDF, SDF e MJCF. Include binding Python (dartpy) e si integra con Gazebo.

DART (Dynamic Animation and Robotics Toolkit) è un motore fisico open source in C++20 sviluppato al Georgia Tech che fornisce strutture dati e algoritmi per la simulazione cinematica e dinamica di sistemi di corpi rigidi articolati. Usa coordinate generalizzate e l'Articulated Body Algorithm di Featherstone per offrire l'accuratezza numerica e la stabilità richieste dalle applicazioni robotiche.

Una caratteristica distintiva di DART è il supporto unificato a tutti i principali formati di descrizione dei robot (URDF, SDF, MJCF e il proprio formato SKEL) tramite un'unica API. Integra più backend di rilevamento delle collisioni (FCL, Bullet, ODE) e risolve i vincoli di contatto, i limiti dei giunti e i meccanismi a catena chiusa in un framework accoppiato di dinamica vincolata. I binding Python (dartpy) sono disponibili tramite PyPI e conda.

Con oltre 14 anni di sviluppo continuo e più di 500 commit all'anno, DART è uno dei motori fisici più attivamente mantenuti in robotica. Alimenta il backend fisico DART del simulatore Gazebo ed è usato nei laboratori di ricerca di tutto il mondo per lo sviluppo di algoritmi di controllo, la pianificazione del movimento e l'animazione al computer.

Perché è importante

DART è da oltre 14 anni un motore fisico cardine della simulazione robotica: alimenta il simulatore Gazebo e numerosi laboratori di ricerca in tutto il mondo. L'uso di coordinate generalizzate con l'Articulated Body Algorithm di Featherstone fornisce l'accuratezza e la stabilità richieste dalle applicazioni robotiche, mentre il supporto a più formati (URDF, SDF, MJCF) lo rende eccezionalmente versatile.

Il problema che risolve

La simulazione robotica richiede un motore fisico che gestisca correttamente la dinamica dei corpi articolati, i vincoli dei giunti, i contatti e le collisioni con un'alta accuratezza numerica. DART fornisce questa base con un'API pulita che supporta il caricamento di modelli di robot da tutti i principali formati, l'inserimento di più backend di rilevamento delle collisioni e il calcolo di una dinamica adatta sia allo sviluppo di algoritmi di controllo sia all'animazione al computer.

Punti chiave

  • Usa l'Articulated Body Algorithm di Featherstone su coordinate generalizzate per una dinamica accurata
  • Carica i formati di descrizione dei robot URDF, SDF, MJCF e SKEL tramite un'API unificata
  • Più backend di rilevamento delle collisioni, tra cui FCL, Bullet e ODE
  • Il risolutore di dinamica vincolata gestisce insieme limiti dei giunti, contatti e meccanismi a catena chiusa
  • Multipiattaforma (Linux, macOS, Windows), con binding Python tramite dartpy su PyPI e conda

A chi si rivolge

  • Ricercatori di robotica che sviluppano e testano algoritmi di controllo in simulazione
  • Utenti di Gazebo che hanno bisogno di capire o personalizzare il motore fisico sottostante
  • Sviluppatori di animazione al computer che richiedono una simulazione fisicamente accurata di corpi articolati
  • Professionisti dell'apprendimento per rinforzo che hanno bisogno di un backend di simulazione stabile

Limiti

  • Meno usato nella ricerca sull'RL rispetto a MuJoCo o Isaac Sim, nonostante capacità paragonabili
  • La simulazione accelerata da GPU non è al momento una priorità: gira su CPU
  • Il requisito di C++20 può essere restrittivo per progetti vincolati a versioni più vecchie del compilatore
  • Comunità più piccola e meno ambienti pronti rispetto a MuJoCo o PyBullet

Questo sito richiede JavaScript. Attiva JavaScript per esplorare i nostri progetti di robotica open source.