Aumente a autonomia de seu robô com o ROS 2 e o Unity

DEVIN MILLER / UNITY TECHNOLOGIESContributor
Aug 13, 2021|10 Min
Aumente a autonomia de seu robô com o ROS 2 e o Unity
Esta página da Web foi automaticamente traduzida para sua conveniência. Não podemos garantir a precisão ou a confiabilidade do conteúdo traduzido. Se tiver dúvidas sobre a precisão do conteúdo traduzido, consulte a versão oficial em inglês da página da Web.

A Unity tem o prazer de anunciar nosso suporte oficial ao ROS 2, cuja estrutura robusta, aliada à simulação, possibilitará uma infinidade de novos casos de uso.

O Sistema Operacional de Robôs (ROS) é uma estrutura popular para o desenvolvimento de aplicativos de robôs que começou em 2007. Embora tenha sido originalmente projetado para acelerar a pesquisa em robótica, ele logo foi amplamente adotado na robótica industrial e comercial. O ROS 2 baseia-se na estrutura confiável do ROS e melhora o suporte a aplicativos modernos, como sistemas com vários robôs, sistemas em tempo real e ambientes de produção. A Unity está estendendo seu suporte oficial do ecossistema ROS para o ROS 2.

A robótica moderna está mudando seu foco para a "autonomia", o estudo e o desenvolvimento de algoritmos capazes de tomar decisões na ausência de regras rígidas definidas por um desenvolvedor humano, e a simulação apoia essa transição, permitindo maior flexibilidade e experimentação mais rápida do que os testes no mundo real. Desenvolvemos um exemplo, Robotics-Nav2-SLAM, para demonstrar como começar a simular a localização e o mapeamento simultâneos (SLAM) e a navegação para uma robótica móvel autônoma (AMR) com Unity e ROS 2.

ROS 2 alimentando a robótica moderna

Embora o ROS continue sendo uma excelente estrutura para a prototipagem robótica, ele está chegando ao fim de sua vida útil e não conta com alguns recursos necessários para ir além da prototipagem e chegar à produção e implantação em escala real de um sistema robótico. O roteiro técnico do ROS 2 foi estabelecido e é mantido por um comitê de veteranos do setor com princípios explícitos definidos para garantir que o ROS 2 seja uma estrutura adequada para os usuários finais de robótica. O ROS 2 é compatível com mais sistemas operacionais e protocolos de comunicação e foi projetado para ser mais distribuído do que o ROS.

Simulação que impulsiona a autonomia

Muitos dos casos de uso emergentes do ROS 2 se concentram na autonomia. A introdução da autonomia significa que as decisões que um robô toma e os resultados dessas decisões não são perfeitamente previsíveis usando apenas uma máquina de estado e uma coleção de fórmulas matemáticas, como pode ser o caso em muitos casos de uso da robótica industrial. Em comparação com os robôs industriais, o ambiente operacional de um robô autônomo é exponencialmente maior. As permutações de entradas que ele encontra ultrapassam em muito o que pode ser reproduzido em um ambiente de laboratório controlado. Para validar totalmente que um robô autônomo se comporta da maneira esperada, você pode fazer isso no robô, em sua dimensão de bolso pessoal, onde o tempo não tem significado e a realidade é tudo e nada ao mesmo tempo, ou você precisa da segunda melhor opção: uma simulação adequadamente robusta.

Se for esperado que um robô detecte um ambiente, uma simulação deve ser capaz de modelar com precisão esses sensores sem comprometer a precisão da topologia e da física simuladas do ambiente. Se houver outros agentes nesse ambiente, ou seja, pessoas ou outros robôs, a simulação deverá ser capaz de modelar o comportamento do agente e, ao mesmo tempo, manter a precisão da simulação do sensor, da representação da topologia e da modelagem física. Para exercitar totalmente um robô em todos os cenários que ele pode encontrar, essa simulação precisa ser executada muitas e muitas vezes. Isso tudo para dizer que a simulação em apoio à robótica autônoma requer quatro coisas que não são exigidas com frequência pela robótica industrial: flexibilidade, extensibilidade, escalabilidade e fidelidade, tudo isso sem sacrificar o desempenho. A Unity está na interseção de todos esses requisitos, e é por isso que estamos desenvolvendo mais recursos em nossa plataforma para dar suporte ao desenvolvimento de robôs autônomos.

Com os pacotes de robótica do Unity, você terá acesso às interfaces que já criamos para facilitar a comunicação com o ROS ou o ROS 2. Você poderá importar configurações de robôs existentes diretamente de arquivos URDF com nosso URDF Importer e poderá começar a exercitar seu robô com o pipeline de renderização altamente eficiente e de alta qualidade do Unity e com uma simulação de física precisa e de alto desempenho. Por meio da Asset Store do Unity, você tem acesso a uma grande variedade de ambientes e adereços adicionais predefinidos para ajudá-lo a modelar o ambiente e a tarefa específicos do seu robô. Com alguns cliques, a simulação que você monta pode ser criada e implementada em qualquer sistema operacional convencional, seja Windows 10, Mac OS ou Linux. Usando scripts em C#, scripts visuais Bolt ou qualquer um dos muitos kits de ferramentas de scripts e utilitários disponíveis no Asset Store, você pode continuar a personalizar a funcionalidade da sua simulação específica para atender ao seu caso de uso específico.

Suporte ao ROS 2 com um clique

Mover seu projeto Unity para o ROS 2 é simples. No pacote ROS-TCP-Connector, adicionamos um menu suspenso que permite alternar o pacote entre a integração do ROS e do ROS 2. Ao alterar o protocolo, o Unity recompilará automaticamente o pacote com base nas definições de mensagem e no protocolo de serialização que você selecionou. Para testá-lo, basta fazer essa alteração em seu próprio projeto ou baixar nosso repositório de exemplo, Robotics-Nav2-SLAM, que contém os componentes necessários para permitir o uso do Unity como fonte simulada de informações de sensor e odometria para o tutorial Nav2 Navigating while Mapping.

Configurações do ros2

Este projeto de exemplo demonstra como usar o Unity para simular um sistema de navegação em execução no ROS 2. O conceito de navegação é simples e não muda muito no contexto da robótica autônoma. Os algoritmos de navegação têm como objetivo encontrar um caminho de onde se está para onde se quer chegar. No entanto, para ir de onde se está para onde se está indo, é preciso primeiro fazer SLAM - localização e mapeamento simultâneos. O SLAM descreve uma coleção de algoritmos criados para responder à pergunta: "Onde estou agora e onde estive?" Os seres humanos realizam o SLAM constantemente como uma parte intrínseca do pipeline de processamento entre nossos sentidos e nosso cérebro. Para robôs autônomos, a realização de SLAM preciso ainda é uma proposta desafiadora para a maioria dos ambientes do mundo real. O que, exatamente, um robô móvel autônomo precisa para saber sempre onde está, em relação a todos os lugares onde já esteve, ainda é uma área de pesquisa ativa. A única maneira de realmente responder a essa pergunta para um determinado caso de uso é experimentar várias coisas diferentes (sensores, algoritmos, etc.) e ver o que funciona.

Em nosso exemplo, você encontrará um ambiente de armazém simples, um modelo totalmente articulado de um robô móvel Turtlebot 3 com LIDAR e controladores de motor simulados e um Dockerfile usado para criar uma imagem que contém todas as dependências do ROS 2 necessárias para exercitar as pilhas Nav2 e slam_toolbox em nossa simulação. As etapas dos tutoriais do Nav2 fornecerão um contexto útil se você nunca tiver usado o ROS 2 ou trabalhado com algoritmos SLAM antes. Para ver esse exemplo funcionar no Unity, todas as instruções para você começar e o projeto ser executado estão em nosso repositório.

Esquerda: Exibição RViz de mensagens ROS 2 geradas e enviadas pelo Unity. Certo: TurtleBot 3 executando SLAM e navegação autônoma no Unity.
Comece hoje mesmo

Os roboticistas iniciantes em Unity e os desenvolvedores de Unity iniciantes em robótica são incentivados a experimentar nossa integração com o ROS 2 e realizar a navegação autônoma com o Robotics-Nav2-SLAM. Esse é apenas um pequeno exemplo do que você pode criar integrando nossas ferramentas de robótica e os muitos outros pacotes avançados disponíveis no Unity. Paralelamente, a equipe do Unity Robotics continua a desenvolver e lançar recursos explicitamente em apoio a casos de uso comuns de robótica, com ênfase em escalabilidade e extensibilidade.

A Unity também realizará um workshop na ROSCon deste ano que amplia o Nav2-SLAM-Example para oferecer suporte a vários robôs com funções especializadas trabalhando juntos para realizar uma tarefa específica.