Introdução ao ROS (Robotic Operating System)

O que é o ROS (Robotic Operating System)

Segundo a descrição oficial (numa tradução de leigo), O ROS é um meta-sistema operativo de código aberto para robots.

O sistema fornece os serviços que se espera de um sistema operativo, o que inclui a abstracção de hardware, controle de dispositivo de baixo nível, implementação da funcionalidades de uso comum, troca de mensagens entre processos e gestão de pacotes.

Além disso também fornece ferramentas e bibliotecas para obter, criar, escrever e executar código em vários computadores.

Porque é que o ROS é importante na robótica

A importância do ROS (Robotic Operating System) reside na sua aplicação ao desenvolvimento rápido de soluções robóticas, ao fornecer os meios necessários (o software de mapeamento, localização, etc; e ambiente de exploração adequado ás necessidades dos projectos na área da robótica), para facilitar, o desenvolvimento de programas (em C e Python) para controlo de robots.

Instalar o ROS

A instalação do ROS é facil, e rápida, mas levanta uma questão básica. Qual a versão a instalar? A mais recente?

Na minha opinião, para começar, e apesar da ultima versão ser o melodic, nos robots recomendo instalar o Kinetic, e no desktop remoto onde se visualiza a actividade do robot tenho o Melodic.

Isto porque me parece que na versão mais recente não está ainda disponível todo o software que está disponível no Kinetic.

O ROS necessita de de ser instalado num computador com o linux já instalado, de preferência o ubuntu (xenial), ou o debian (strech).

Se o robot tiver um Raspberry Pi 2 ou Pi3, existe uma imagem pré-feita disponível para download na web no seguinte endereço:

https://downloads.ubiquityrobotics.com/pi.html

Se o robot tiver um cpu x86 ou um ARMv7 (ex banana pi) a instalação é efectuada com facilidade com o apt.

A instalação consiste em três fases:

  1. Adicionar o repositório do ros ao apt
  2. Instalar os pacotes com o apt
  3. Inicializar o ambiente já com uma ferramenta do ROS

O procedimento com mais detalhe está descrito em:  Instalar o ROS.

Só me resta dizer que a instalação do ROS é fácil e rápida.

Conceitos importantes em ROS

Para usar o ROS (Robotic Operating System) é necessário conhecer e compreender alguns dos conceitos usados, e dos quais destaco os seguintes:

  • Pacotes
  • Nodes
  • Tópicos e Mensagens
  • Transformações
  • Serviços e parâmetros
  • ActionLib
  • Ferramentas de diagnóstico e exploração

Para além destes conceitos, é importante conhecer como se organizam os seus ficheiros no disco, e o ambiente de desenvolvimento catkin.

  • http://wiki.ros.org/ROS/Tutorials/NavigatingTheFilesystem
  • http://wiki.ros.org/catkin/Tutorials

Estes tutoriais são indicados pela ordem de que considero correcta a uma rápida aprendizagem das bases do ROS.

Pacotes do ROS

http://wiki.ros.org/ROS/Tutorials/BuildingPackages

Consultar: Criar pacotes e nodes no ros

Nodes do ROS

http://wiki.ros.org/ROS/Tutorials/UnderstandingNodes

Consultar: Criar pacotes e nodes no ros

Tópicos e mensagens no ROS

http://wiki.ros.org/ROS/Tutorials/UnderstandingTopics

O desenvolvimento de programas para robots com ROS implica, regra geral, subscrever e publicar mensagens de tipos específicos em tópicos.

Transformações no ROS

http://wiki.ros.org/tf/Tutorials/Introduction%20to%20tf

http://wiki.ros.org/tf/Tutorials

Serviços e parâmetros no ros

http://wiki.ros.org/ROS/Tutorials/UnderstandingServicesParams

ActionLib

http://wiki.ros.org/actionlib/Tutorials

Ferramentas de diagnóstico, simulação e exploração

O ROS é acompanhado por uma serie de ferramentas que permitem, explorar a representação do robot do ambiente, com o rviz (visualização), ou simulação de robots (gazebo) ou de diagnostico de problemas como o roswtf.

Aprender a usar o ROS

Para apreender a usar o ROS, sozinho e sem apoio de qualquer pessoa, e sem mais informação para alem da que está disponível na web, só posso indicar o meu trajecto:

Segui os tutoriais disponíveis no wiki do ROS, que fui intercalando com a leitura de um livro “Learning Robotics using Python” e do código fonte do robot que o livro descreve e que está disponível no github.

O resultado desse processo está expresso no seguinte video.

Um dos problemas dos livros e dos artigos longos, dos vários a que dei uma olhada, e incluindo aquele que segui, é que se referem a versões antigas do ROS, normalmente a Indigo, ou mesmo anteriores. Quando a versão actual é a Melodic.

No entanto diria que: a pelo menos a partir do Indigo, não existem diferenças significativas que impeçam a aprendizagem com essas fontes apesar de algumas diferenças.

Abaixo segue um livro em PDF que padece desse problema de desactualização.

http://lsi.vc.ehu.es/pablogn/investig/ROS/A%20Gentle%20Introduction%20to%20ROS.pdf

Versão local caso o link desapareça: A Gentle Introduction to ROS.