• Nenhum resultado encontrado

O Sistema de Arquivos s˜ao divididos em: pacotes, manifestos, mensagens, servi¸cos e pilhas stacks.

3.4.1.1 Pacotes do ROS

Os pacotes (package) s˜ao as unidades principais de organiza¸c˜ao do ROS, neles est˜ao contidos as bibliotecas, conjuntos de dados, arquivos de configura¸c˜ao, c´odigos fontes e arquivos execut´aveis, habitualmente chamados de “n´os”. Sendo um sistema baseado em pacotes, sua principal caracter´ıstica ´e a de que arquivos podem referenciar outros arquivos de uma maneira bastante simples (BARROS, 2014). A estrutura de um pacote quase sempre pode ser representado do seguinte modo.

• src/ - Cont´em os c´odigos fonte geralmente escritos em linguagem Python ou C++; • bin/ - Cont´em arquivos execut´aveis;

• lib/ - Cont´em as bibliotecas necess´arias para executar os arquivos da pasta bin; • launch/ – Arquivos de Inicializa¸c˜ao de pacote, est´a contido os arquivos launch

(.launch/XML), necess´arios para utilizar a ferramenta do ROS chamada roslaunch; • include/ – Cont´em arquivos de cabe¸calho em C++;

3.4 ROS 28

• msg / - Cont´em arquivos de descri¸c˜ao do tipo de mensagem (.msg); • scripts/ - Cont´em scripts execut´aveis;

• Srv/ - Cont´em arquivos de descri¸c˜ao do tipo de servi¸co (.srv); • Manifest.xml – Arquivo onde se encontra as informa¸c˜oes do pacote; • CMakelist.txt – Arquivo de constru¸c˜ao CMak.

3.4.1.2 Pilhas do ROS

Os pacotes (packeage) do ROS eram organizados em pilhas (stacks), sendo que seu principal objetivo ´e de simplificar o compartilhamento dos c´odigos que est˜ao contidos nos pacotes, facilitando assim a sua reutiliza¸c˜ao. O stack era o principal mecanismo de distribui¸c˜ao de softwares que utilizam o ROS (BARROS, 2014), por´em ´e de extrema importˆancia salientar que o conceito de stack no ROS est´a em desuso, visto que, suas vers˜oes mais recentes utilizam o conceito de “metapacotes” (Metapackages).

3.4.1.3 Mensagens

Um arquivo do tipo mensagem define a estrutura de dados da requisi¸c˜ao e da resposta para os servi¸cos do ROS, sendo esses publicados por execut´aveis, no caso n´os. Este arquivo ´e composto pela descri¸c˜ao de campos e constantes, sendo que os campos (vari´aveis) s˜ao dados enviados para e pela mensagem e as constantes s˜ao valores fixos para a interpreta¸c˜ao destes campos (OLIVEIRA et al., 2013). Para facilitar a gera¸c˜ao autom´atica do c´odigo fonte da mensagem, o ROS faz uso de uma descri¸c˜ao simplificada dos valores de dados, que s˜ao atribu´ıdos em arquivos do tipo “.msg” que se encontram no subdiret´orio de um pacote do ROS.

3.4.2 Processamento Gr´afico

O Processamento Gr´afico no ROS ´e uma rede peer-to-peer de processos, ou seja, pro- cessamento de dados em conjunto. Os conceitos do Grafo de Computa¸c˜ao s˜ao: n´os(nodes), t´opicos, mensagens, servi¸cos, mestre, servidor de parˆametro.

3.4.2.1 N´os do ROS

Os n´os (nodes) s˜ao processos que executam instru¸c˜oes, geralmente utilizando biblio- tecas do ROS, como o roscpp baseada em C++ ou rospy baseada em python. Quando combinados em um grafo, comunicam uns com os outros atrav´es de streaming de t´opicos, servi¸cos via RPC (Remote Procedure Call1) e o servidor de parˆametro. Um sistema de controle de robˆo, como o apresentado neste trabalho, compreende muitos n´os, onde se

1Protocolo para execu¸ao remota de procedures em computadores ligados em rede, podendo ser im-

plementado sobre diferentes protocolos de transportes, como ´e o caso do TCP (Transmission Control

3.4 ROS 29

tem um n´o para realizar o controle cinem´atico do robˆo, um n´o para receber mensagens do AAC, um n´o para enviar mensagens ao AAC, e assim por diante. A utiliza¸c˜ao dos n´os no ROS traz uma s´erie de vantagens ao sistema em geral, dentre elas:

• Maior tolerˆancia a falhas, visto que problemas relacionados a um ´unico n´o s˜ao isolados ao mesmo;

• Independˆencia com linguagens de programa¸c˜ao, visto que, cada n´o pode ser escrito com uma linguagem diferente;

• Menor complexidade no c´odigo em rela¸c˜ao a aplica¸c˜oes monol´ıticas.

Todos os n´os executados s˜ao identificados no sistema gr´afico com um nome, como pode ser observado na Figura 3.16.

3.4.2.2 T´opicos do ROS

No ROS um n´o pode se comunicar com outros n´os por meio de um sistema de trans- porte com a semˆantica de publicador/subscritor (publisher/subscriber) (Figura 3.17). Para que um n´o possa enviar uma mensagem, o mesmo precisa publica-la em um de- terminado t´opico. Caso outro n´o queira receber o conte´udo desta mensagem, o mesmo ter´a que subscrever neste mesmo t´opico. Um n´o pode publicar ou subscrever m´ultiplos t´opicos ao mesmo tempo, podendo haver situa¸c˜oes onde a publica¸c˜ao ou subscri¸c˜ao em um t´opico seja disputada entre diversos n´os, visto que, em geral os publicadores e subs- critores n˜ao possuem conhecimento da existˆencia uns dos outros. Cada t´opico recebe um nome e qualquer n´o pode enviar ou receber mensagens do mesmo (WADA, 2016).

Figura 3.17: Conceitos b´asicos do ROS.

3.4 ROS 30

O ROS atualmente suporta os protocolos de comunica¸c˜ao TCP/IP e UDP, sendo respectivamente conhecidas como TCPROS e UDPROS, tendo como padr˜ao a primeira alternativa.

Os n´os comunicam-se por interm´edio do envio de mensagens via t´opicos, mensagens estas que s˜ao simplesmente uma estrutura de dados, que compreende os campos pr´e- definidos. O ROS possui grande diversidade no tipo de mensagens como mostrado na Tabela 3.5. Muitos destes tipos de mensagens foram elaborados para aplica¸c˜oes rob´oticas, permitindo a integra¸c˜ao de diversas ´areas, como navega¸c˜ao, geometria, vis˜ao, dentre outras (ROMERO, 2014).

Tabela 3.5: Formatos dos tipos de mensagens do ROS. Package Tipo de mensagem Orientadas `as ´areas

std msgs string, bool, int8, int16,char, float, MultiArrays Mensagens no formato comum da programa¸c˜ao;

geometry msgs twist, transform, pose,point Geometria primitiva como pontos,vetores, posi¸c˜oes ou velocidades;

nav msgs odometry, path,occupancyGrid Mensagens indicadas para a navega¸c˜ao; trajectory msgs JointTrajectory Orienta¸c˜ao para jun¸c˜ao de trajet´orias; visualization msgs ImageMarker,InteractiveMarker Utilizadas na camada dealto n´ıvel, como a

ferramenta rviz;

stereo msgs DisparityImage Especificas paraprocessamento stereo, como disparidade de imagens; sensor msgs Image, PointCloud,LaserScan Definidas para usar emsensores, como cˆamaras,

laser scan, infravermelhos; Fonte: Criado pelo autor.

3.4.2.3 Servi¸cos

O modelo publicador/subscritor de mensagens ´e um padr˜ao de comunica¸c˜ao muito flex´ıvel, porem sua grande quantidade de trocas de mensagens n˜ao ´e apropriada para requisi¸c˜oes do tipo RPC, ou intera¸c˜oes do tipo requisi¸c˜ao/resposta que s˜ao geralmente solicitadas em sistemas distribu´ıdos, tendo em vista, que os n´os s˜ao destinados `a trans- miss˜ao unidirecional de dados (CONLEY, 2012). Neste caso as requisi¸c˜oes e respostas s˜ao feitas atrav´es de servi¸cos que s˜ao definidos por um par de estruturas de mensagens: uma para a requisi¸c˜ao e outra para resposta.

3.4 ROS 31

Um n´o disponibiliza um servi¸co que ´e identificado por um nome especifico e outro n´o cliente usa o servi¸co por meio de mensagem de requisi¸c˜ao e aguarda a resposta (CONLEY, 2012).

As bolsas (bags) s˜ao um formato de arquivos do ROS (.bag), que servem para salvar e recuperar dados obtidos a partir de mensagens. Atrav´es desses arquivos que torna-se poss´ıvel o armazenamento de dados, por exemplo provenientes de sensores, possibili- tando a verifica¸c˜ao de algoritmos sem a necessidade de repetidas execu¸c˜oes na pr´atica (ROMERO, 2014).

3.4.2.4 Servi¸cos de Parˆametro

O servidor de parˆametro do ROS permite que os nodos possam armazenar e recuperar parˆametros durante a sua execu¸c˜ao. Ele foi desenvolvido para que as ferramentas do ROS possam inspecionar o estado de configura¸c˜ao do sistema, modificando-o se necess´ario (THOMAS, 2013).

3.4.2.5 ROS Mestre

O ROS Mestre (Master) tem como principal fun¸c˜ao fornecer as informa¸c˜oes necess´arias para que os n´os possam se comunicar. Quando um n´o aparece no sistema, o Master providencia os dados necess´arios para que este n´o possa formar uma liga¸c˜ao peer-to-peer com os restantes n´os que publicam e subscrevem os mesmos t´opicos.

3.4.3 N´ıvel de Comunidade

O ROS possui alguns recursos que auxiliam comunidades distintas a troca de software e conhecimento (ROMERO, 2014). Podemos destacar os seguintes recursos:

• Wiki do ROS: Principal f´orum onde se encontra informa¸c˜oes sobre o ROS como documenta¸c˜ao e tutoriais;

• Reposit´orios: O ROS possui uma rede federada de reposit´orios de c´odigos onde diferentes institui¸c˜oes de ensino lan¸cam seus pr´oprios componentes de software de robˆos;

• ROS Answers: Site onde qualquer pessoa pode se cadastrar para realizar perguntas e encontrar respostas acerca do ROS;

• Distribui¸c˜oes: O ROS possui diversas vers˜oes, que podem vir a ser instalada no computador. Estas vers˜oes desempenham um papel semelhante ao das distribui¸c˜oes linux.

Documentos relacionados