Pontos Principais
- Dolly é uma ovelha robô virtual que serve como uma introdução prática ao Gazebo e ao ROS 2;
- A versão mais recente do Robot Operating System, o ROS 2, oferece ferramentas e recursos familiares, enquanto desenvolve-se para novos casos de uso;
- O Gazebo é um poderoso simulador de robótica usado pela indústria e pela academia, que calcula física, gera dados de sensores e fornece interfaces convenientes;
- O software open source está reduzindo a barreira de entrada e acelerando o progresso na robótica;
- Roboticistas de todo o mundo estão aproveitando o Gazebo e o ROS em aplicações que vão desde humanóides, drones robôs para depósitos e carros autônomos.
Dolly é uma ovelha robô, que te segue enquanto carrega seu material pesado. Ele tem duas rodas motorizadas que permitem ao robô guiar-se com um scanner a laser para detectar objetos à frente. Ele possui código para encontrar o objeto mais próximo (presumivelmente você) nas varreduras a laser e controlar suas rodas para segui-lo.
Dolly não é um robô de verdade. É uma simples simulação de robô, criada como uma introdução para algumas ferramentas poderosas open source que os roboticistas estão usando em todo o mundo. Mesmo que a codificação da própria Dolly seja bastante simples, seu código é bastante compartilhado com outros, inclusive com robôs mais complexos, como carros autônomos, drones e robôs de armazém, armas industriais, quadricópteros, robôs humanóides e até um trio de robôs na Estação Espacial Internacional. A pilha de software (conjunto de soluções) comum a todos eles é o ROS, Robot Operating System. Para ser preciso, no entanto, Dolly não executa o que a maioria das pessoas pensariam quando ouvem a palavra "ROS" atualmente. A Dolly está na verdade executando a última geração de ROS, chamada ROS 2!
Como o ROS 1 anterior, o ROS 2 é um kit de desenvolvimento de software open source para aplicativos de robótica. O desenvolvimento do ROS 2 é liderado pela Open Robotics, a empresa que também mantém o simulador de robôs onde Dolly vive, chamada Gazebo, bem como outros softwares e hardwares open source. Esses projetos são distribuídos sob licenças de software livre permissivas, como o BSD e o Apache 2.0, o que os torna atraentes tanto para a academia quanto para o setor.
Software robô
A definição da palavra "robô" tende a diferir de pessoa para pessoa, mas a característica chave dos robôs que executam o ROS e que são simulados no Gazebo é a atuação. Portanto, não há chatbots nem spambots; estamos falando de robôs que são fisicamente capazes de interagir com seus ambientes, movendo-se e movimentando outros objetos. E eles não são brinquedos de corda se movendo cegamente; eles são equipados com sensores que permitem observar como o mundo está mudando em torno deles. Juntando tudo, eles têm lógica fazendo sentido dessas observações para tomar decisões informadas sobre o movimento a ser feito para completar uma tarefa específica. Isso é conhecido como o ciclo sense-think-act (sentir - pensar - agir), e o software da Dolly é organizado para refletir essas três partes.
O ROS 2 está sendo desenvolvido com o objetivo de oferecer uma plataforma de software padrão para a indústria e a academia, que os apoiará desde a pesquisa e prototipagem até a implantação e produção. O ROS 2 baseia-se no sucesso do ROS 1, que já é usado hoje em várias aplicações robóticas em todo o mundo. Uma parte importante dessa transição é manter os principais conceitos e ferramentas que tornaram o ROS tão bem-sucedido na comunidade de robótica até o momento. Um desses conceitos bem conhecidos é o de "nó", que é uma unidade de cálculo responsável por uma tarefa muito específica. Cada pedaço do ciclo sense-think-act de Dolly é mapeado para um nó. O nó "laser" detecta o mundo, o nó "seguir" processa esses dados para encontrar o ponto mais próximo à frente e gera um comando com a direção para mover, e o nó "diff-drive" (direção diferencial) move as rodas como comandado (assim chamado, Dolly é um robô com rodas diferenciais). Conforme Dolly se move, suas leituras de laser mudam e os ciclos começam novamente. O software da Dolly tem apenas três nós para simplificar, mas grandes aplicações robóticas podem ter centenas de nós trabalhando juntos, cada um responsável por uma tarefa discreta e bem definida.
O método mais básico de comunicação no ROS usa um mecanismo de assinatura muitos-para-muitos por meio de canais chamados "tópicos". O nó de laser publica varreduras no tópico "varrer", ao qual o nó de acompanhamento se inscreve; por sua vez, o nó seguir publica comandos de movimento no tópico "comandos", ao qual o nó direção diferencial assina. Dolly usa apenas tópicos, mas além desse tipo de comunicação unidirecional, o ROS também oferece um mecanismo de solicitação-resposta chamado "serviços", bem como "ações", que são usadas para desencadear comportamentos mais longos.
Ao usar esses padrões de comunicação, os desenvolvedores do ROS tendem a usar mensagens padronizadas sempre que possível, o que torna conveniente compartilhar nós entre vários projetos. Nessa arquitetura distribuída, os nós não se importam com os outros nós com os quais estão falando, eles só se importam com qual tópico, serviço ou ação estão usando. Isso significa que se um dia alguém decidir remover as rodas de Dolly e trocá-las por hélices para transformá-las em uma ovelha voadora, não precisarão alterar o laser ou os nós seguintes. Só precisarão trocar o nó do direção diferencial por alguma outra coisa que traduzam os comandos de movimento no tópico comandos de uma forma que corresponda ao novo corpo do robô.
A facilidade de reutilização de código é um dos maiores pontos fortes do ROS, pois permite que os desenvolvedores aproveitem o trabalho do outro o máximo possível. Ao criar o software existente no ecossistema ROS, os desenvolvedores podem se concentrar nos aspectos exclusivos de seus aplicativos específicos. Na verdade, a implementação do Dolly exigia apenas a gravação do nó a seguir, que possui menos de 100 linhas de código. Os nós laser e direção diferencial são fornecidos pelo gazebo_ros_pkgs, um pacote ROS padrão que faz a ponte entre a lógica específica da simulação e a não específica. Quando a Dolly está pronta para se tornar um robô físico, esses nós seriam substituídos por controladores e drivers específicos de hardware, mas o nó seguinte pode ser mantido da mesma forma porque publica e subscreve mensagens padrão. Mas, como pode-se imaginar, o nó seguinte não é a lógica do robô mais brilhante que existe. Na verdade, Dolly não pode dizer a uma pessoa de uma árvore. Em um aplicativo real, os desenvolvedores aproveitariam outros recursos fornecidos pela comunidade, como a pilha de navegação, o que permitiria que a Dolly se movesse autonomamente no mundo.
Todos os padrões de comunicação mencionados anteriormente foram migrados do ROS 1 para o ROS 2 e melhorados ao longo do caminho. Enquanto o ROS 1 usa uma camada de comunicação personalizada, o ROS 2 é construído sobre o DDS. O DDS é um padrão da indústria comprovado em aplicações de missão crítica, como aviação e energia nuclear. Podemos pode ler mais detalhes sobre a integração do DDS neste artigo no InfoQ.
Além do sistema de mensagens, o ROS 2 fornece ferramentas poderosas para desenvolvedores. Por exemplo, o RViz é um visualizador para tópicos do ROS que é inestimável durante o desenvolvimento e a depuração de aplicativos. Ele possui uma cena 3D na qual os dados de qualquer parte do aplicativo podem ser exibidos juntos, como nuvens de pontos e quadros de coordenadas. O RViz também fornece interfaces de controle, como marcadores 3D que podem ser arrastados para mover um robô real. O RQt é outra ferramenta gráfica útil que permite que os desenvolvedores montem rapidamente widgets para interagir com qualquer aspecto de sua aplicação robótica, seja ela simulada ou não. A imagem a seguir mostra os escaneamentos a laser de Dolly em RViz, ao lado da visão de Gazebo, mostrando a visualização dentro da simulação. O RViz exibirá as digitalizações da mesma maneira, independentemente de serem simuladas ou provenientes de hardware.
Simulação
Dolly está incorporado ao Gazebo, um simulador de robôs que realiza cálculos de física, gera dados de sensores sintéticos e oferece interfaces convenientes. As interfaces vão desde ferramentas gráficas até APIs C++, permitindo que usuários e desenvolvedores alcancem suas metas mais rapidamente. O objetivo do Gazebo é ser o melhor substituto exclusivo de software para robôs físicos. Alguns dos usos do Gazebo incluem prototipagem de novos robôs, desenvolvimento de novos algoritmos e comportamentos, testes de integração contínua e educação.
Dentro da simulação, o mecanismo de física manipula como a Dolly interage com o ambiente. Isso inclui comportamentos como a gravidade puxando Dolly até o chão, os contatos entre as rodas e a calçada e o torque aplicado nas rodas. O Gazebo não implementa seu próprio mecanismo de física. Em vez disso, ele fornece uma camada de abstração permitindo que vários mecanismos sejam integrados. Dessa forma, os desenvolvedores descrevem e programam seus robôs uma vez e, em seguida, escolhem o mecanismo de física mais apropriado em tempo de execução. Por padrão, o Gazebo usa o Open Dynamics Engine (ODE), mas também vem com suporte para Bullet, DART e Simbody.
A Dolly está equipada com um único sensor, o scanner a laser, mas o Gazebo suporta mais de uma dúzia de sensores, como câmeras coloridas e de profundidade, IMU e GPS. Os desenvolvedores também podem criar novos sensores por meio de uma API C++. Sensores como câmeras e scanners a laser usam a engine de renderização Ogre3D para gerar imagens do mundo, enquanto sensores como IMUs e sonares utilizam o mecanismo de física. Uma desvantagem dos sensores simulados é que eles tendem a ser um pouco perfeitos quando comparados aos seus equivalentes físicos. Portanto, um aspecto importante da API de sensores é a capacidade de adicionar vários tipos de ruído aos dados gerados e também atrapalhar suas taxas de atualização.
O Gazebo possui uma interface gráfica rica que ajuda os usuários a construir, introspectar e interagir com suas simulações. O ambiente da cidade de Dolly, por exemplo, foi construído usando uma combinação de scripts eRuby, a visualização 3D da interface do usuário e widgets que fornecem informações detalhadas sobre cada modelo na cena. Enquanto a simulação está em execução, a visualização 3D também é uma maneira útil de visualizar as varreduras a laser, bem como examinar vários outros aspectos, como a posição das articulações, o centro de massa e até os momentos de inércia. Essa capacidade de simulação de fornecer uma visão aérea por radiografia da cena pode ser extremamente útil ao interagir com algoritmos, e é algo difícil, se não impossível, de entrar no mundo real.
O Gazebo também permite que os desenvolvedores interajam com seus robôs da mesma forma que fariam no mundo real. Poderia, em teoria, colocar óculos VR e usar controladores para chutar Dolly como alguns roboticistas gostam de fazer com seus robôs reais. Note que o abuso de robôs definitivamente não está sendo incentivado aqui. Em vez disso, use meios ligeiramente mais delicados, como uma seta 3D, que pressiona o robô a verificar seu comportamento de recuperação. Também é possível mover o humano, adicionar outro robô, mudar o layout da cidade, o que ajuda no desenvolvimento do seu projeto específico.
O exemplo de Dolly é uma das simulações mais simples que se pode fazer com o Gazebo, mas existem vários exemplos elaborados disponíveis on-line. Competições baseadas em simulação, como o Virtual Robotics Challenge, o Space Robotics Challenge e o próximo Subterranean Challenge são alguns bons exemplos. Vários fabricantes de robôs também estão distribuindo gratuitamente simulações do Gazebo de seus robôs, como os robôs de armazém da Fetch Robotics e os drones da Parrot.
Com o objetivo de lidar com novos casos de uso, a equipe da Open Robotics está trabalhando ativamente na próxima geração do Gazebo, chamada Ignition. Essa refatoração está dividindo o Gazebo em bibliotecas menores e mais reutilizáveis, com camadas de abstração para mecanismos de física e renderização, suporte para executar grandes simulações distribuídas em máquinas na nuvem e uso de bibliotecas modernas de GUI (QtQuick) e transporte (ZeroMQ).
Clone a Dolly!
O Gazebo e o ROS 2 estão a apenas algumas teclas de distância. Podemos baixar o clone da Dolly e seguir as instruções para obter um exemplo simples em funcionamento. Há também vários tutoriais sobre ROS Index e Gazebo, cobrindo uma ampla variedade de recursos e casos de uso. É possível encontrar discussões mais aprofundadas na comunidade sobre ROS Discourse e Gazebo Community, bem como respostas a perguntas técnicas sobre o ROS e Gazeb. Confira os vídeos da ROSCon, a conferência anual para desenvolvedores de ROS, e certifique-se de reservar um lugar para a ROSCon 2019, que acontecerá em Macau.
Sobre a autora
é engenheira de software na Open Robotics , trabalhando em ferramentas gratuitas e de código aberto para robótica, como o simulador de robôs Gazebo e o Robot Operating System (ROS).<