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:
- Adicionar o repositório do ros ao apt
- Instalar os pacotes com o apt
- 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.