Open Source Robotics

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

Robowflex: Robot Motion Planning with MoveIt Made Easy

Autori: Zachary Kingston, Lydia E. Kavraki · IROS 2022

Licenze

  • Open access
  • Articolo: CC BY 4.0

Tutto ciò che segue si basa sull'articolo completo secondo la sua licenza CC BY 4.0; la figura è riportata citando gli autori.

In breve

Robowflex carica robot, scene e pianificatori di MoveIt direttamente all'interno di un programma C++ invece che tramite messaggi ROS, rendendo gestibili tramite script lo sviluppo di pianificatori, i benchmark e la pianificazione di compiti e movimenti.

Perché è importante

Poiché MoveIt supporta già molti robot, un gruppo di lavoro può scrivere in un breve programma esperimenti di pianificazione per un robot esistente e collegarsi comunque a un sistema ROS quando serve. L'accesso diretto ai componenti interni del pianificatore consente ai ricercatori di sostituire campionatori o pianificatori OMPL senza ricompilare MoveIt, e di eseguire molte query di pianificazione con scene diverse per la pianificazione di compiti e movimenti. La NASA lo ha usato per valutare le prese sui corrimano e la pianificazione del movimento di Robonaut 2 sulla Stazione Spaziale Internazionale.

Problema

La maggior parte degli utenti di MoveIt pianifica tramite il programma MoveGroup, configurato con file launch e parametri ROS e interrogato tramite messaggi ROS. Questo funziona per la pianificazione di base, ma rende difficile profilare i pianificatori, cambiarne i componenti, estrarre informazioni interne o eseguire molte query di pianificazione all'interno di un algoritmo più ampio. Modificare il comportamento di MoveIt significa scrivere classi plugin, cosa difficile per chi non ne conosce i meccanismi interni.

Soluzione proposta

Robowflex è una libreria C++ che incapsula la libreria di base di MoveIt, caricando i robot (URDF, SRDF, limiti dei giunti, cinematica) senza file launch ed esponendo scene, richieste di movimento e pianificatori come oggetti in un unico programma. Aggiunge funzioni di input e output per YAML, XACRO, bag ROS e parametri ROS, uno strumento di benchmarking con output compatibile con OMPL, e moduli per i componenti interni di OMPL, DART, TrajOpt di Tesseract, un MoveGroup in esecuzione e il rendering con Blender. Degli adattatori mantengono il codice compilabile da ROS Indigo a ROS Noetic.

Idee chiave

  • Incapsulare MoveIt come libreria, invece di comunicare con MoveGroup tramite messaggi ROS, dà pieno accesso alle strutture dati interne mantenendo facoltativa l'integrazione con ROS
  • In un unico programma si possono caricare molti robot, scene e pianificatori, cosa di cui la pianificazione di compiti e movimenti ha bisogno per provare molti piani di movimento in scene diverse
  • L'output dei benchmark nel formato di log di OMPL si collega a strumenti esistenti come Planner Arena, e scene e richieste salvate come semplici file rendono facile costruire dataset
  • Il benchmarking nativo di MoveIt richiede ROS Warehouse e non supporta facilmente scene con ostacoli variati, di cui hanno bisogno i pianificatori basati sull'apprendimento
  • I moduli di integrazione consentono confronti tra librerie, ad esempio RRTConnect di MoveIt contro TrajOpt di Tesseract sulla stessa scena in un unico breve script

Risultati principali

  • Dimostrata la pianificazione del movimento di base su un robot Fetch con uno script di circa 40 righe, senza messaggi ROS
  • Esempio di benchmarking: 200 esecuzioni di RRT* sul robot Fetch, registrando il miglior costo del percorso nel tempo come proprietà di avanzamento
  • Modulo DART usato per la pianificazione multi-robot con due robot Fetch in uno spazio composito e come componente di pianificazione del movimento di un framework di pianificazione di compiti e movimenti multi-robot
  • Usato dalla NASA per valutare risolutori di cinematica inversa, configurazioni di presa sui corrimano e la difficoltà di pianificazione per Robonaut 2 che si arrampica lungo i corrimano
  • Il benchmarking o i moduli di Robowflex erano stati usati in otto pubblicazioni ([12]–[19]) al momento della stesura; il codice compila da ROS Indigo a ROS Noetic

Limiti

  • L'articolo non ha una sezione dichiarata sui limiti; i casi d'uso sono dimostrazioni, senza un confronto misurato di sforzo o tempo di esecuzione rispetto a MoveGroup
  • È costruito su MoveIt e ROS, quindi ogni robot ha comunque bisogno dei suoi file di configurazione di MoveIt (URDF, SRDF, limiti dei giunti, cinematica)
  • Gli autori osservano che esistono altre interfacce semplificate di MoveIt (MoveIt CPP, moveit_boilerplate); il loro confronto con Robowflex è qualitativo
  • Il caso d'uso di Robonaut 2 è descritto come una valutazione della pianificazione visualizzata in RViz; non sono riportati risultati di esecuzione su hardware

Impatto sul settore

Finalista dello IROS 2022 Best Paper Award for Industrial Robotics Research for Applications, con 31 citazioni. Robowflex è rilasciato come open source su GitHub con documentazione online.

Abstract

Robowflex è una libreria software per la pianificazione del movimento dei robot in applicazioni industriali e di ricerca, che sfrutta la diffusa libreria MoveIt e il middleware Robot Operating System (ROS). Robowflex trae vantaggio dalla facilità della pianificazione del movimento con MoveIt, fornendo al tempo stesso un'API ampliata per costruire e manipolare query di pianificazione del movimento all'interno di un unico programma. L'API di alto livello di Robowflex semplifica molti casi d'uso comuni, pur continuando a dare accesso alla libreria MoveIt sottostante. Robowflex è particolarmente utile per 1) sviluppare nuovi pianificatori del movimento, 2) valutare pianificatori del movimento e 3) problemi complessi che usano la pianificazione del movimento (ad es. la pianificazione di compiti e movimenti). Robowflex offre inoltre funzionalità di visualizzazione, integrazioni con altre librerie di robotica (ad es. DART e Tesseract) ed è complementare a molti altri pacchetti di robotica. Con la nostra libreria, l'utente non deve essere esperto di ROS o di MoveIt per impostare query di pianificazione del movimento, estrarre informazioni dai risultati e interfacciarsi direttamente con diversi componenti software. Presentiamo alcuni casi d'uso di esempio che ne dimostrano l'efficacia.

Link

  • arXiv 2103.12826: https://arxiv.org/abs/2103.12826
  • DOI 10.1109/IROS47612.2022.9981698: https://doi.org/10.1109/IROS47612.2022.9981698
  • PDF: https://arxiv.org/pdf/2103.12826v1
  • Codice: https://github.com/KavrakiLab/robowflex
  • Pagina del progetto: https://kavrakilab.github.io/robowflex/

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