Open Source Robotics

Uma coleção selecionada de projetos, ferramentas e software de robótica de código aberto de alta qualidade.

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/

Este site requer JavaScript. Por favor, habilite o JavaScript para explorar nossos projetos de robótica.