Ruckig
Generazione in tempo reale di traiettorie a tempo minimo con vincoli sul jerk per robot e macchine
Licenza
MIT
Panoramica
Ruckig è una libreria di generazione istantanea del movimento per robot e macchine che calcola al volo traiettorie a tempo minimo con vincoli sul jerk. Genera traiettorie verso un waypoint obiettivo (con posizione, velocità e accelerazione) partendo da qualsiasi stato iniziale, entro i vincoli di velocità, accelerazione e jerk, e garantisce soluzioni a tempo minimo per i movimenti da stato a stato.
Ruckig è il primo generatore di traiettorie di Tipo V per stati obiettivo arbitrari, più potente e più veloce della libreria Reflexxes Type IV. Raggiunge tempi di calcolo inferiori al millisecondo, adatti a cicli di controllo fino a 250 microsecondi, con una precisione numerica entro 1e-8 per posizione/velocità e 1e-12 per i limiti, validata su oltre 5 miliardi di traiettorie casuali.
La libreria principale è scritta in C++ senza dipendenze, supporta da C++20 fino a C++03 e offre binding Python installabili con pip. Si integra con i principali framework robotici, tra cui MoveIt 2 (ROS 2) come plugin di elaborazione delle traiettorie, CoppeliaSim e Frankx per il controllo dei robot Franka Emika.
Sviluppata al Karlsruhe Institute of Technology (KIT) e presentata a RSS 2021.
Ruckig è una libreria di generazione istantanea del movimento che calcola al volo traiettorie a tempo ottimo con vincoli sul jerk per robot e macchine. Sviluppata al Karlsruhe Institute of Technology (KIT) e presentata a RSS 2021, è diventata uno dei componenti open source di pianificazione del movimento più diffusi in robotica, con oltre 5 miliardi di traiettorie calcolate in ambienti di produzione.
La libreria è il primo generatore di traiettorie di tipo V per stati obiettivo arbitrari, e supera le capacità della nota libreria Reflexxes di tipo IV. Dato uno stato iniziale qualsiasi (posizione, velocità, accelerazione) e un waypoint obiettivo con vincoli di velocità/accelerazione/jerk, Ruckig calcola la traiettoria matematicamente ottimale in meno di un millisecondo, abbastanza in fretta per cicli di controllo brevi fino a 250 microsecondi. La precisione numerica è convalidata entro 1e-8 per posizioni/velocità e 1e-12 per i limiti.
Ruckig è scritta in C++ senza dipendenze esterne, supporta gli standard del compilatore da C++03 a C++20 e offre binding Python installabili con pip. Il suo design senza dipendenze rende semplice l'integrazione in qualsiasi stack robotico. La libreria è integrata in MoveIt 2 (ROS 2) come plugin di elaborazione delle traiettorie, in CoppeliaSim per la simulazione e in Frankx per il controllo dei robot Franka Emika.
La combinazione di rigore matematico, prestazioni in tempo reale e integrazione senza attriti ha reso Ruckig un componente standard nei laboratori di ricerca e nelle aziende di robotica industriale di tutto il mondo.
Perché è importante
Una generazione di traiettorie fluide e con jerk limitato è essenziale per il funzionamento dei robot nel mondo reale. Ruckig offre una soluzione in tempo reale senza dipendenze, già integrata in MoveIt 2 e usata da centinaia di laboratori di ricerca e aziende.
Il problema che risolve
La generazione in tempo reale di profili di movimento fluidi e con jerk limitato per robot che devono reagire istantaneamente agli input dei sensori rispettando i vincoli di velocità, accelerazione e jerk
Punti chiave
- Generazione di traiettorie a tempo minimo con vincoli sul jerk in tempi di calcolo inferiori al millisecondo
- Nessuna dipendenza nel nucleo C++: facile da integrare in qualsiasi stack robotico
- Integrata fin da subito in MoveIt 2 (ROS 2) e CoppeliaSim
- Validata su oltre 5 miliardi di traiettorie casuali con una precisione di 1e-12 sui limiti
A chi si rivolge
- Sviluppatori di bracci robotici
- Ingegneri di pianificazione del movimento
- Sviluppatori ROS 2 / MoveIt
- Ingegneri dell'automazione industriale
Limiti
- La versione Community non supporta il calcolo dei waypoint intermedi (funzione Pro)
- I limiti di posizione sono disponibili solo nella versione Pro
- L'interfaccia di tracking per segnali arbitrari richiede la versione Pro
- La documentazione dell'API Python è meno completa di quella C++