ROS Motion Planning
Un unico repository che implementa oltre 40 pianificatori di percorso classici e basati sull'apprendimento come plugin ROS
Licenza
GPL-3.0
Panoramica
ros_motion_planning è una raccolta completa di algoritmi di pianificazione del movimento per robot, implementati come plugin per lo stack di navigazione di ROS: pianificatori globali da A, Theta, D e JPS fino a RRT, Informed RRT* e pianificatori basati su Voronoi; pianificatori locali tra cui DWA, in stile TEB, PID, LQR e MPC; generazione di curve (Bezier, Dubins, Reeds-Shepp, B-spline); e pianificatori basati sull'apprendimento come DDPG. Ogni algoritmo gira nella stessa configurazione Gazebo/RViz, il che ne fa un riferimento eccezionalmente pratico per confrontare i pianificatori ad armi pari.
Il repository raccoglie decine di pianificatori dietro le interfacce di plugin standard nav_core di ROS, così qualsiasi algoritmo può essere inserito in move_base (ROS 1), con un'implementazione complementare per ROS 2, e testato sulle stesse costmap, sugli stessi robot e sugli stessi mondi Gazebo. La pianificazione globale copre la ricerca su grafo (Dijkstra, A, D, LPA, D Lite, Theta, Lazy Theta, JPS, GBFS), i metodi basati sul campionamento (RRT, RRT, Informed RRT, RRT-Connect), gli approcci intelligenti/evolutivi (ACO, GA, PSO) e la pianificazione con diagrammi di Voronoi. La pianificazione locale comprende i controller PID, DWA, APF, LQR e MPC, e un modulo di generazione di curve implementa percorsi Dubins, Reeds-Shepp, Bezier e spline. I pianificatori basati sull'apprendimento (ad esempio la navigazione RL basata su DDPG) completano l'insieme. Immagini Docker, numerose animazioni per ogni algoritmo e un repository Python di visualizzazione corrispondente lo rendono utile sia come riferimento didattico sia come punto di partenza per lo sviluppo di pianificatori di produzione.
Perché è importante
È l'implementazione unica più completa del canone classico della pianificazione del movimento in codice ROS funzionante: gli algoritmi da manuale, che negli articoli sono di solito pseudocodice, girano tutti qui in uno stack coerente, ed è per questo che è diventato il riferimento abituale sia per gli ingegneri della navigazione sia per gli studenti di robotica.
Il problema che risolve
Confrontare in modo equo i pianificatori di percorso richiede di implementarli tutti nello stesso stack di navigazione: mesi di lavoro di ingegneria sui plugin. ros_motion_planning lo ha già fatto per oltre 40 algoritmi, trasformando la scelta dei pianificatori e la didattica in una modifica di configurazione.
Punti chiave
- Oltre 40 pianificatori: ricerca su grafo, basati sul campionamento, evolutivi, generazione di curve, basati sull'apprendimento
- Tutti implementati come plugin di navigazione ROS standard, eseguibili nella stessa configurazione Gazebo/RViz
- Supporto a ROS 1 e ROS 2 con immagini Docker per partire rapidamente
- I pianificatori locali includono i controller DWA, APF, PID, LQR e MPC
- Il repository Python complementare fornisce visualizzazioni degli algoritmi corrispondenti per lo studio
A chi si rivolge
- Ingegneri della navigazione che scelgono pianificatori per AMR/AGV
- Studenti di robotica che imparano gli algoritmi di pianificazione del percorso
- Ricercatori che confrontano nuovi pianificatori con quelli classici
- Docenti che preparano corsi sulla pianificazione del movimento
Limiti
- Ampiezza più che profondità: i singoli pianificatori sono implementazioni di riferimento, non controller di produzione ottimizzati
- La licenza GPL-3.0 limita il riuso closed source
- È pensato soprattutto per la navigazione 2D di robot su ruote (nessuna pianificazione della manipolazione)