Robowflex: Robot Motion Planning with MoveIt Made Easy
Autores: Zachary Kingston, Lydia E. Kavraki · IROS 2022
Licenças
- Acesso aberto
- Artigo: CC BY 4.0
Tudo o que segue se baseia no artigo completo sob a licença CC BY 4.0; sua figura é mostrada com crédito aos autores.
Em resumo
O Robowflex carrega os robôs, cenas e planejadores do MoveIt diretamente dentro de um programa C++, em vez de por meio de mensagens ROS, tornando roteirizáveis o desenvolvimento de planejadores, os benchmarks e o planejamento de tarefas e movimentos.
Por que importa
Como o MoveIt já oferece suporte a muitos robôs, uma equipe pode roteirizar experimentos de planejamento para um robô existente em um programa curto e ainda se conectar a um sistema ROS quando necessário. O acesso direto aos componentes internos do planejador permite que pesquisadores troquem amostradores ou planejadores do OMPL sem recompilar o MoveIt e executem muitas consultas de planejamento com cenas diferentes para o planejamento de tarefas e movimentos. A NASA o usou para avaliar preensões em corrimãos e o planejamento de movimento do Robonaut 2 na Estação Espacial Internacional.
Problema
A maioria dos usuários do MoveIt planeja por meio do programa MoveGroup, configurado por arquivos launch e parâmetros ROS e consultado por mensagens ROS. Isso funciona para o planejamento básico, mas dificulta perfilar planejadores, alterar seus componentes, extrair informações internas ou executar muitas consultas de planejamento dentro de um algoritmo maior. Alterar o comportamento do MoveIt significa escrever classes de plugin, o que é difícil para quem não conhece seus componentes internos.
Solução proposta
O Robowflex é uma biblioteca C++ que encapsula a biblioteca central do MoveIt, carregando robôs (URDF, SRDF, limites das juntas, cinemática) sem arquivos launch e expondo cenas, requisições de movimento e planejadores como objetos em um único programa. Ele acrescenta utilitários de entrada e saída para YAML, XACRO, bags ROS e parâmetros ROS, uma ferramenta de benchmarking com saída compatível com o OMPL e módulos para os componentes internos do OMPL, DART, o TrajOpt do Tesseract, um MoveGroup em execução e renderização com o Blender. Adaptadores mantêm o código compilando do ROS Indigo ao ROS Noetic.
Principais ideias
- Encapsular o MoveIt como biblioteca, em vez de se comunicar com o MoveGroup por mensagens ROS, dá acesso completo às estruturas de dados internas e mantém opcional a integração com o ROS
- Muitos robôs, cenas e planejadores podem ser carregados em um único programa, algo de que o planejamento de tarefas e movimentos precisa para testar muitos planos de movimento em cenas diferentes
- A saída dos benchmarks no formato de log do OMPL se conecta a ferramentas existentes como o Planner Arena, e cenas e requisições armazenadas como arquivos simples facilitam a construção de conjuntos de dados
- O benchmarking próprio do MoveIt precisa do ROS Warehouse e não oferece suporte fácil a cenas com obstáculos variados, de que os planejadores baseados em aprendizado precisam
- Módulos de integração permitem comparações entre bibliotecas, por exemplo o RRTConnect do MoveIt contra o TrajOpt do Tesseract na mesma cena, em um único script curto
Principais resultados
- Demonstrou planejamento de movimento básico em um robô Fetch com um script de cerca de 40 linhas, sem mensagens ROS
- Exemplo de benchmarking: 200 execuções do RRT* no robô Fetch, registrando o melhor custo de caminho ao longo do tempo como propriedade de progresso
- Módulo DART usado para planejamento multirrobô com dois robôs Fetch em um espaço composto e como componente de planejamento de movimento de um framework de planejamento de tarefas e movimentos multirrobô
- Usado pela NASA para avaliar solucionadores de cinemática inversa, configurações de preensão em corrimãos e a dificuldade de planejamento para o Robonaut 2 escalando ao longo de corrimãos
- O benchmarking ou os módulos do Robowflex haviam sido usados em oito publicações ([12]–[19]) no momento da redação; o código compila do ROS Indigo ao ROS Noetic
Limitações
- O artigo não tem uma seção declarada de limitações; os casos de uso são demonstrações, sem comparação medida de esforço ou tempo de execução em relação ao MoveGroup
- Ele é construído sobre o MoveIt e o ROS, portanto cada robô ainda precisa de seus arquivos de configuração do MoveIt (URDF, SRDF, limites das juntas, cinemática)
- Os autores observam que existem outras interfaces simplificadas do MoveIt (MoveIt CPP, moveit_boilerplate); sua comparação com o Robowflex é qualitativa
- O caso de uso do Robonaut 2 é descrito como avaliação de planejamento visualizada no RViz; nenhum resultado de execução em hardware é relatado
Impacto na área
Finalista do IROS 2022 Best Paper Award for Industrial Robotics Research for Applications, com 31 citações. O Robowflex é disponibilizado como código aberto no GitHub, com documentação online.
Resumo
Robowflex é uma biblioteca de software para planejamento de movimento de robôs em aplicações industriais e de pesquisa, que aproveita a popular biblioteca MoveIt e o middleware Robot Operating System (ROS). O Robowflex tira proveito da facilidade do planejamento de movimento com o MoveIt, ao mesmo tempo em que oferece uma API ampliada para elaborar e manipular consultas de planejamento de movimento dentro de um único programa. A API de alto nível do Robowflex simplifica muitos casos de uso comuns, sem deixar de dar acesso à biblioteca MoveIt subjacente. O Robowflex é particularmente útil para 1) desenvolver novos planejadores de movimento, 2) avaliar planejadores de movimento e 3) problemas complexos que usam planejamento de movimento (p. ex., planejamento de tarefas e movimentos). O Robowflex também oferece recursos de visualização, integrações com outras bibliotecas de robótica (p. ex., DART e Tesseract) e é complementar a muitos outros pacotes de robótica. Com nossa biblioteca, o usuário não precisa ser especialista em ROS ou MoveIt para configurar consultas de planejamento de movimento, extrair informações dos resultados e interagir diretamente com diversos componentes de software. Apresentamos alguns casos de uso de exemplo que demonstram sua eficácia.
Links
- 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
- Código: https://github.com/KavrakiLab/robowflex
- Página do projeto: https://kavrakilab.github.io/robowflex/