Universidade de Aveiro Departamento deElectr´onica, Telecomunica¸c˜oes e Inform´atica 2016
Jo˜
ao Bernardo
Godinho Alves
Navega¸
c˜
ao H´ıbrida num Ve´ıculo Aut´
onomo com
Dire¸
c˜
ao Ackermann
Universidade de Aveiro Departamento deElectr´onica, Telecomunica¸c˜oes e Inform´atica 2016
Jo˜
ao Bernardo
Godinho Alves
Navega¸
c˜
ao H´ıbrida num Ve´ıculo Aut´
onomo com
Dire¸
c˜
ao Ackermann
Disserta¸c˜ao apresentada `a Universidade de Aveiro para cumprimento dos requisitos necess´arios `a obten¸c˜ao do grau de Mestre em Engenharia de Computadores e Telem´atica, realizada sob a orienta¸c˜ao cient´ıfica de Artur Jos´e Carneiro Pereira, Professor Auxiliar do Departamento de Eletr´onica, Telecomunica¸c˜oes e Inform´atica
o j´uri / the jury
presidente / president Professor Doutor Lu´ıs Filipe de Seabra Lopes
Professor Associado da Universidade do Aveiro
vogais / examiners committee Professor Doutor Armando Jorge Miranda de Sousa
Professor Auxiliar da Universidade do Porto
Professor Doutor Artur Jos´e Carneiro Pereira
agradecimentos / acknowledgements
Agrade¸co ao meu orientador, Professor Artur Pereira, e ao colaborador Eu-rico Pedro pela oportunidade prestada, pela imensa paciˆencia e pelos co-nhecimentos adquiridos e transmitidos. Agrade¸co tamb´em `a minha fam´ılia, que sempre fez de tudo para resolver qualquer tipo de problema que me incomoda-se, e a todos os meus colegas de Aveiro, em particular ao Da-vid Sim˜oes e Bernardo Marques, mas tamb´em `aqueles que realizaram esta fase do percurso acad´emico em simultˆaneo comigo. Agrade¸co tamb´em aos restantes elementos do IRIS-Lab que contribu´ıram para o desenvolvimento desta disserta¸c˜ao.
Palavras chave Condu¸c˜ao aut´onoma, ROS, navega¸c˜ao h´ıbrida, Simula¸c˜ao em rob´otica, Fes-tival Nacional de Rob´otica
Resumo O progresso realizado na ´area de condu¸c˜ao aut´onoma torna poss´ıvel a existˆencia, no mercado autom´ovel, de ve´ıculos capazes de se conduzir auto-nomamente com algumas restri¸c˜oes. Este progresso contribui tamb´em para o aumento das funcionalidades de condu¸c˜ao assistida oferecidas pelas em-presas. O ROTA ´e um pequeno ve´ıculo rob´otico que participa normalmente no Festival Nacional de Rob´otica, na prova de condu¸c˜ao aut´onoma, onde tem de conduzir autonomamente numa pista com caracter´ısticas semelhan-tes `aquelas encontradas numa estrada convencional.
No in´ıcio deste projeto, o software de controlo de alto n´ıvel do ve´ıculo ROTA baseava a sua navega¸c˜ao num algoritmo de localiza¸c˜ao global na pista. Isto resultava num movimento oscilat´orio, mesmo quando o ve´ıculo se deslocava ao longo de uma faixa de rodagem. Foi objetivo desta disserta¸c˜ao o desenvolvimento de um m´odulo de navega¸c˜ao de seguimento da faixa de rodagem, que proporcionasse um movimento mais suave, e a sua integra¸c˜ao no software existente, criando um sistema de navega¸c˜ao h´ıbrida que use em cada situa¸c˜ao a estrat´egia mais adequada. N˜ao existindo uma pista real, nem condi¸c˜oes para construir uma, definiu-se tamb´em o objetivo de conceber e desenvolver um ambiente de simula¸c˜ao realista que permitisse testar os algoritmos desenvolvidos, num formato que minimizasse o seu porte para o ambiente real.
O ambiente de simula¸c˜ao desenvolvido inclui o ve´ıculo e a pista. Rela-tivamente ao ve´ıculo, o seu sistema de locomo¸c˜ao, baseado em dire¸c˜ao Ackermann, o seu sistema de vis˜ao, com capacidade de pan e tilt, e as funcionalidades de produ¸c˜ao e de disponibiliza¸c˜ao de informa¸c˜ao por parte dos v´arios sensores foram desenvolvidos, de tal forma que o software que corre nas plataformas real e virtual ´e exatamente o mesmo. O ambiente de simula¸c˜ao permite reproduzir o cen´ario de competi¸c˜ao presente na prova de condu¸c˜ao aut´onoma do Festival Nacional de Rob´otica.
Foi desenvolvido o m´odulo de navega¸c˜ao que efetua o seguimento de faixa de rodagem. O seu funcionamento assenta na localiza¸c˜ao do ve´ıculo de-finida em termos do posicionamento transversal e da orienta¸c˜ao na faixa de rodagem. A localiza¸c˜ao ´e probabil´ıstica, usando histogramas para re-presentar as distribui¸c˜oes de probabilidade, sendo utilizada informa¸c˜ao pro-veniente de um dispositivo RGB-D (cˆamara Kinect). Filtros de Bayes s˜ao usados para manter boas estimativas destas distribui¸c˜oes. O sistema de navega¸c˜ao h´ıbrida pode, sempre que achar necess´ario, comutar para outro comportamento mais adequado `a situa¸c˜ao presente.
O desempenho dos algoritmos de navega¸c˜ao e a facilidade de porte destes do robˆo simulado para o real permitiram ao ve´ıculo ROTA alcan¸car o se-gundo lugar na prova de condu¸c˜ao aut´onoma na edi¸c˜ao de 2016 do Festival
Keywords Autonomous driving, ROS, hybrid navigation, Simulation in robotics, Por-tuguese Robotics Open
Abstract The progress made in autonomous driving makes possible the existence, in the automotive market, of vehicles able to drive autonomously with some restrictions. This progression also contributes to increase the assisted dri-ving features offered by companies. ROTA is a small robotic vehicle that usually participates in the autonomous driving competition on the Portu-guese Robotics Open, where it has to drive autonomously on a track that has similar characteristics with those found on a conventional road. In the beginning of this project, the high level control software of this vehi-cle had its navigation based in a global localization algorithm. This took to an oscillatory movement, even when the vehicle was moving along the lane. One objective of this dissertation was the development of a navigation mo-dule able to follow a lane, that could provide a smoother movement, and its integration with the existing software, creating a hybrid navigation system that uses the most appropriate strategy in each situation. In the absence of a real track and the lack of conditions to build one, it was also defined as an objective, conceiving and developing a realistic simulation environment that would allow to test the algorithms developed, in such a way that minimizes the transfer time to the real environment.
The simulated environment includes the vehicle and the track. Regarding the vehicle, its locomotion system, based in Ackermann steering, its vision system, with pan and tilt capabilities, as well as the production and avai-lability of its sensors’ information have been developed, in such a way that the software that runs in the real and virtual platforms is exactly the same. The simulation environment allows to reproduce the scenario present in the autonomous driving competition of the Portuguese Robotics Open.
It was developed a navigation module to follow a lane. The operation of this module is based on the vehicle location defined in terms of transverse po-sitioning and orientation on the lane. The localization is probabilistic, and relies on histograms to represent probability distribution functions, using information that comes from an RGB-D device (Kinect camera). Baye-sian Filters are used get good estimates of these distributions. The hybrid navigation system may, whenever necessary, switch to a behaviour more appropriate to the current situation.
The navigation algorithms performance and its easy transfer from the simu-lated robot to the real one, allowed ROTA to achieve second place in the autonomous driving competition on the Portuguese Robotics Open 2016 edition.
Conte´
udo
Conte´udo i
Lista de Figuras v
Lista de Tabelas vii
Siglas viii 1 Introdu¸c˜ao 1 1.1 Motiva¸c˜ao e contexto . . . 1 1.2 Objetivos . . . 1 1.3 Estrutura da disserta¸c˜ao . . . 2 2 Projeto ROTA 3 2.1 Plataforma ROTA . . . 3 2.1.1 Locomo¸c˜ao Ackermann . . . 4 2.1.2 Perce¸c˜ao . . . 5
2.1.3 Controlo de baixo n´ıvel . . . 5
2.2 Robot Operating System . . . 6
2.2.1 Infraestrutura base . . . 7
2.2.2 Servi¸cos e Parˆametros . . . 7
2.2.3 Bibliotecas de suporte . . . 8
2.2.4 Ferramentas de apoio ao desenvolvimento . . . 9
2.3 Prova de Condu¸c˜ao Aut´onoma do Festival Nacional de Rob´otica . . . 9
2.3.1 Ambiente de competi¸c˜ao . . . 10
2.3.2 Competi¸c˜ao . . . 11
2.4 Software de Controlo de Alto N´ıvel . . . 12
3 Simula¸c˜ao 15 3.1 Simula¸c˜ao em rob´otica . . . 15
3.2 Ambientes de simula¸c˜ao . . . 16
3.2.1 Preferˆencia pelo Gazebo . . . 19
3.3 Gazebo . . . 20
3.3.2 Motor gr´afico . . . 21 3.3.3 Sensores . . . 21 3.3.4 Plugins . . . 22 3.3.5 Arquitetura . . . 22 3.4 Linguagens de modela¸c˜ao . . . 23 3.4.1 SDF . . . 24 3.4.2 URDF . . . 25
4 Navega¸c˜ao em ve´ıculos aut´onomos 27 4.1 Modela¸c˜ao da faixa de rodagem . . . 27
4.2 Dete¸c˜ao da faixa de rodagem . . . 28
4.3 Seguimento da faixa de rodagem . . . 31
4.4 Planeamento de trajet´oria em ve´ıculos com locomo¸c˜ao Ackermann . . . 33
5 Ambiente de simula¸c˜ao para o projeto ROTA 35 5.1 Modela¸c˜ao do ve´ıculo . . . 35
5.1.1 Modela¸c˜ao do chassis . . . 36
5.1.2 Modela¸c˜ao do sistema de locomo¸c˜ao . . . 36
5.1.3 Modela¸c˜ao do sistema laser . . . 37
5.1.4 Modela¸c˜ao do sistema de vis˜ao . . . 37
5.2 Modela¸c˜ao do ambiente . . . 37
5.2.1 Modela¸c˜ao da pista . . . 38
5.2.2 Modela¸c˜ao do painel sinal´etico . . . 38
5.2.3 Modela¸c˜ao dos sinais verticais . . . 39
5.2.4 Modela¸c˜ao dos obst´aculos, t´unel e da zona de obras . . . 39
5.3 Plugins . . . 39
5.3.1 Plugin do ve´ıculo . . . 40
5.3.2 Plugin do painel sinal´etico . . . 42
5.3.3 Plugin do ambiente . . . 42
5.4 Valida¸c˜ao do ambiente de simula¸c˜ao . . . 43
5.4.1 Direc¸c˜ao Ackermann . . . 43
5.4.2 Sensores . . . 44
5.4.3 Diferen¸cas entre ambiente de simula¸c˜ao e mundo real . . . 45
5.5 Sum´ario . . . 45
6 Localiza¸c˜ao 47 6.1 Localiza¸c˜ao na pista . . . 47
6.2 Localiza¸c˜ao na faixa de rodagem . . . 48
6.3 Remo¸c˜ao do efeito perspetiva . . . 49
6.4 Extra¸c˜ao de caracter´ısticas . . . 50
6.5 Extra¸c˜ao semˆantica . . . 52
6.6 Filtro de histogramas . . . 54
6.8 Sum´ario . . . 56
7 Navega¸c˜ao 59 7.1 Arquitetura do Agente . . . 59
7.2 Copiloto . . . 59
7.3 Seguimento da faixa de rodagem . . . 61
7.4 Resultados . . . 62
7.5 Sum´ario . . . 64
8 Conclus˜ao e trabalho futuro 65 8.1 Conclus˜ao . . . 65
8.2 Trabalho futuro . . . 66
Lista de Figuras
2.1 Robˆo ROTA . . . 3
2.2 Dire¸c˜ao Ackermann . . . 4
2.3 Camada de perce¸c˜ao e atua¸c˜ao de baixo n´ıvel . . . 6
2.4 Processo de publica¸c˜ao e subscri¸c˜ao de um t´opico, obten¸c˜ao do conte´udo de um parˆametro e utiliza¸c˜ao de um servi¸co . . . 8
2.5 Pista da prova de condu¸c˜ao aut´onoma usada na edi¸c˜ao de 2015 do Festival Nacional de Rob´otica . . . 10
2.6 Sinais de trˆansito mostrados nos pain´eis sinal´eticos colocados sobre a passadeira 10 2.7 Sinais de trˆansito verticais colocados ao longo da pista . . . 11
2.8 Arquitetura da camada de alto n´ıvel . . . 13
3.1 Tipo de juntas, adaptado de [27] . . . 20
3.2 Modelo com e sem textura . . . 21
3.3 Arquitetura geral do gazebo, adaptado de [17] . . . 23
3.4 Ambiente de simula¸c˜ao Gazebo com o robˆo PR2 e diversos elementos . . . 24
3.5 Hierarquia dos v´arios elementos nda linguagem SDF . . . 26
4.1 Array acumulador de votos. C´elula a preto representa os parˆametros de uma poss´ıvel linha . . . 31
4.2 Caracter´ısticas da linha delimitadora . . . 32
4.3 Compara¸c˜ao gr´afica dos algoritmos de pesquisa . . . 34
5.1 Modelo do robˆo . . . 36
5.2 mesh do link base . . . 37
5.3 Pistas . . . 38
5.4 Pista com Monitores, obst´aculos, sinais verticais, zona de obras e t´unel . . . . 39
5.5 Informa¸c˜ao recebida e fornecida pelo plugin Sim Car Base . . . 40
5.6 Compara¸c˜ao entre a posi¸c˜ao angular desejada e a posi¸c˜ao real da roda direita ao longo do tempo . . . 43
5.7 Componentes substitu´ıdas pelo ambiente de simula¸c˜ao . . . 46
6.1 Cadeia de processamento para estimativa da postura do robˆo . . . 49
6.2 Remo¸c˜ao do efeito perspetiva . . . 50
6.4 Identifica¸c˜ao das linhas delimitadoras da faixa de rodagem ap´os extra¸c˜ao semˆantica
das linhas resultantes da aplica¸c˜ao da transformada de Hough . . . 53
6.5 Histograma de medida da posi¸c˜ao transversal correspondente `as linhas delimi-tadoras mostradas na figura 6.4 . . . 53
6.6 Robˆo a circular na faixa da direita . . . 55
6.7 Robˆo a comutar de faixa . . . 55
6.8 Robˆo a circular na faixa da esquerda . . . 56
6.9 Desenvolvimento de m´odulos de localiza¸c˜ao . . . 57
7.1 M´aquina de estados da navega¸c˜ao . . . 60
7.2 Passadeira e vizinhan¸ca . . . 61
7.3 Sistema de controlo para o seguimento da faixa de rodagem . . . 62
Lista de Tabelas
3.1 Compara¸c˜ao URDF/SDF . . . 26 5.1 Compara¸c˜ao entre laser real e laser simulado . . . 44 6.1 Tempo de execu¸c˜ao de cada fase do pipeline . . . 56
Siglas
API application programming interface. 10, 19, 21, 25, 41, 43 CAN Controller Area Network. 6, 7
GUI graphical user interface. 19 HAL Hardware Abstration Layer. 14 ICR Instantaneous Center of Rotation. 6 LLI Low-Level Infrastructure. 14
LRF Laser Range Finder. 7, 8, 14, 21, 24, 39, 47, 63, 68 OGRE Object-oriented Graphics Rendering Engine. 19, 23
ROS Robot Operating System. 5, 8–11, 14, 20–22, 26, 27, 35, 37, 42–44, 49, 52–54 URDF Unified Robot Description Format. 27, 28
Cap´ıtulo 1
Introdu¸
c˜
ao
1.1
Motiva¸
c˜
ao e contexto
Esta disserta¸c˜ao foi desenvolvida no ˆambito do projeto ROTA do IRIS-Lab (IEETA) da Universidade de Aveiro. O ROTA ´e um pequeno ve´ıculo rob´otico que surge no contexto de investiga¸c˜ao em sistemas de condu¸c˜ao aut´onoma e assistˆencia `a condu¸c˜ao. Este ve´ıculo participa normalmente no Festival Nacional de Rob´otica na prova de condu¸c˜ao aut´onoma, onde tem de conduzir autonomamente numa pista com caracter´ısticas semelhantes a uma estrada convencional.
Desenvolver algoritmos para esta competi¸c˜ao pode dar origem a algoritmos que poder˜ao ser usados em ambientes do mundo real, podendo estes ser usados para assistir o condutor na condu¸c˜ao ou at´e mesmo para a realiza¸c˜ao de condu¸c˜ao aut´onoma. Em ambos os casos, pretende-se aumentar a seguran¸ca das pessoas que se encontram dentro e fora do ve´ıculo. Uma das fases mais cr´ıtica do desenvolvimento de software ´e a fase de testes, onde se determina a qualidade do software com base em crit´erios previamente estabelecidos. No campo da rob´otica, a fase de testes serve para testar na pr´atica se a implementa¸c˜ao de uma determinado algoritmo resulta num bom desempenho do robˆo numa tarefa espec´ıfica. O teste ideal teria de envolver o robˆo e o ambiente em que este iria desempenhar esta tarefa. Pode, no entanto, n˜ao ser poss´ıvel realizar este teste, devido a restri¸c˜oes de recursos, como por exemplo espa¸co. Numa destas situa¸c˜oes, pode-se no entanto recorrer-se a um ambiente simulado para se efetuar o teste, eliminando-se quer as restri¸c˜oes de espa¸co, quer as restri¸c˜oes a n´ıvel f´ısico. Uma das vantagens que se pode destacar ´e a possibilidade de qualquer pessoa poder usar o ambiente simulado desde que possua um sistema computacional com o hardware necess´ario para tal.
1.2
Objetivos
Atualmente o IRIS-Lab n˜ao possui nenhuma pista (total ou parcial) onde possa testar o software desenvolvido para o projeto ROTA. Por isso, a existˆencia de um ambiente virtual de apoio ao desenvolvimento e teste ´e uma mais valia importante. A conce¸c˜ao e desenvolvimento deste ambiente deve ter presente dois aspetos. Por um lado, pretende-se testar adequada-mente os algoritmos desenvolvidos. Por outro lado, queremos potenciar o porte do software
desenvolvido do ambiente simulado para o real. Assim, a concretiza¸c˜ao de um ambiente de simula¸c˜ao que permita atingir estes objetivos deve dar origem a um ambiente de simula¸c˜ao o mais completo e realista poss´ıvel, pelo menos relativamente aos aspetos relevantes para o desenvolvimento.
A vers˜ao do software existente aquando do in´ıcio desta disserta¸c˜ao baseava toda a na-vega¸c˜ao no conhecimento que o ve´ıculo tinha da sua posi¸c˜ao e orienta¸c˜ao na pista. Em consequˆencia, o ve´ıculo manifestava um andamento muito oscilat´orio, mesmo quando seguia por uma faixa de rodagem com limites bem definidos. Nestas situa¸c˜oes, parece mais adequado que o ve´ıculo siga um comportamento de seguimento da faixa de rodagem, sem grandes pre-ocupa¸c˜oes sobre o seu posicionamento longitudinal nessa faixa. Assim a concretiza¸c˜ao do segundo objetivo pressup˜oe a conce¸c˜ao e implementa¸c˜ao de um modelo de localiza¸c˜ao na faixa de rodagem, de desenvolvimento de um algoritmo de navega¸c˜ao assente nesse modelo e da sua integra¸c˜ao no software j´a existente. A utiliza¸c˜ao deste comportamento de navega¸c˜ao deve estar reservado `as regi˜oes da pista onde se adeque, sendo as restantes regi˜oes cobertas pelas abordagens j´a existentes.
1.3
Estrutura da disserta¸
c˜
ao
Este documento encontra-se dividido em oito cap´ıtulos sendo este cap´ıtulo, referente `a introdu¸c˜ao, um deles. O 2º cap´ıtulo descreve a estrutura do robˆo que serve de base a este trabalho de disserta¸c˜ao, a plataforma ROTA, sendo nesse cap´ıtulo descritas as caracter´ısticas do robˆo, o ambiente da competi¸c˜ao no qual participa e o trabalho j´a realizado neste projeto. O 3º e o 4º cap´ıtulos referem o trabalho j´a realizado nas ´areas relativas `a simula¸c˜ao em rob`otica e `a navega¸c˜ao em ve´ıculos auton´omos respetivamente. No cap´ıtulo 3 referimos brevemente os ambientes de simula¸c˜ao j´a existentes e justificamos o destaque dado ao Gazebo. Ainda neste cap´ıtulo ´e feita a descri¸c˜ao de duas linguagens pass´ıveis de ser usadas na descri¸c˜ao dos modelos no simulador Gazebo. No 4º cap´ıtulo apresentamos os conceitos e algoritmos j´a usados para identificar as linhas delimitadoras da faixa em imagens, quais as t´ecnicas utilizadas no seguimento da faixa de rodagem e os conceitos por detr´as de um planeador que tem em conta as caracter´ısticas de um ve´ıculo autom´ovel.
Os cap´ıtulos 5, 6 e 7 cap´ıtulo referem-se ao trabalho realizado no ˆambito desta disserta¸c˜ao, estando incorporados em cada um deles os resultados obtidos. No cap´ıtulo 5 referimos quais os objetos que pretend´ıamos simular, quais foram as ferramentas utilizadas para o efeito e descrevemos o processo de modela¸c˜ao para cada um destes objetos. O cap´ıtulo 6 apresenta dois tipos de localiza¸c˜ao e o algoritmo desenvolvido para efetuar a localiza¸c˜ao do robˆo na faixa de rodagem. O cap´ıtulo 7 descreve a integra¸c˜ao da abordagem relativa `a localiza¸c˜ao local com o sistema de localiza¸c˜ao global j´a desenvolvido no ˆambito do projeto ROTA.
O cap´ıtulo 8 contem as conclus˜oes que podem ser retiradas do trabalho desenvolvido nesta disserta¸c˜ao. S˜ao apresentadas algumas ideias relativas ao trabalho que poder´a vir a ser desenvolvido, que tem como prop´osito eliminar algumas limita¸c˜oes do algoritmo de navega¸c˜ao presente no cap´ıtulo 7. Estas ideias tem como base a experiˆencia ganha na realiza¸c˜ao desta disserta¸c˜ao, bem como os conceitos que se encontram descritos no cap´ıtulo 2.
Cap´ıtulo 2
Projeto ROTA
O IRIS Lab possui uma linha de atividade relacionada com a condu¸c˜ao aut´onoma, dentro da qual se enquadra o projeto ROTA. No contexto deste projeto, desenvolveu um ve´ıculo rob´otico, de dimens˜oes reduzidas, capaz de navegar autonomamente em ambientes indoor. O software de controlo de alto n´ıvel corre num computador port´atil, integrado no veiculo, e est´a desenvolvido em cima do Robot Operating System (ROS), middleware adequado ao desen-volvimento de aplica¸c˜oes rob´oticas. O ve´ıculo participa anualmente nas provas de condu¸c˜ao aut´onoma do Festival Nacional de Rob´otica.
Neste cap´ıtulo, descreve-se a plataforma rob´otica ROTA, faz-se uma breve apresenta¸c˜ao do middleware ROS, descreve-se a prova de condu¸c˜ao aut´onoma do Festival Nacional de Rob´otica e apresenta-se a estrutura geral do software de controlo de alto n´ıvel, real¸cando-se, neste ´ultimo ponto, onde ´e que o trabalho realizado se enquadra.
2.1
Plataforma ROTA
O ve´ıculo ROTA, apresentado na figura 2.1, ´e uma plataforma rob´otica com uma base retangular de 60 cm de comprimento por 45 cm de largura. O seu sistema de locomo¸c˜ao assenta numa estrutura em triciclo, fornecendo um controlo de dire¸c˜ao do tipo Ackermann. O ´org˜ao sensorial principal ´e um dispositivo RGB-D (Kinect), montado num suporte com dois
Figura 2.2: Dire¸c˜ao Ackermann
graus de liberdade, permitindo controlo de pan e tilt. O software de controlo est´a estruturado em dois n´ıveis. Ao n´ıvel mais pr´oximo de hardware, um conjunto de m´odulos, baseados em microcontroladores, permitem a manipula¸c˜ao direta dos sensores e atuadores. Estes m´odulos est˜ao interligados usando uma infraestrutura Controller Area Network (CAN), que comunica com um port´atil, onde o software de alto n´ıvel corre.
2.1.1 Locomo¸c˜ao Ackermann
A dire¸c˜ao Ackermann, apresentada na figura 2.2, ´e um disposi¸c˜ao geom´etrica espec´ıfica das duas rodas dianteiras de um ve´ıculo, desenvolvida para resolver o problema da roda interior e exterior percorrerem c´ırculos de raio diferente quando o ve´ıculo se encontra a curvar.
Nesta disposi¸c˜ao o raio da curvatura do ve´ıculo em rela¸c˜ao ao Instantaneous Center of Rotation (ICR) determina qual a posi¸c˜ao angular da roda central virtual (θc). Como o robˆo
ROTA possui duas rodas diretoras, o ˆangulo destas rodas s˜ao calculadas a partir do ˆangulo da roda central. Na figura 2.2, o ˆangulo da roda interior corresponde a θi, enquanto que o
ˆ
angulo da roda exterior ´e representado por θo.
Este tipo de dire¸c˜ao ´e usada para prevenir a derrapagem das rodas e ´e concebido tendo como base um sistema de trˆes rodas, uma roda motora atr´as e duas rodas diretoras na dianteira.
O controlo da locomo¸c˜ao ´e feito atrav´es de um motor, que comanda a roda motriz traseira, e de um servo, que determina a posi¸c˜ao angular das rodas dianteiras. O motor da roda traseira est´a equipado com um encoder, que permite saber aproximadamente qual a distˆancia percorrida por aquela roda, sendo que o servo da dire¸c˜ao possui feedback da posi¸c˜ao angular das rodas dianteiras. Da conjuga¸c˜ao de ambos, obtˆem-se dados odom´etricos, permitindo a implementa¸c˜ao de um mecanismo de dead reckoning.
2.1.2 Perce¸c˜ao
O sensor principal deste robˆo ´e uma cˆamara RGB-D (Kinect ), que constitui o sistema de vis˜ao. Esta cˆamara est´a montada num suporte pan&tilt, constru´ıdo utilizando dois servos independentes, conferindo `a cˆamara dois graus de liberdade.
Os ˆangulos relativos aos movimentos de pan e de tilt podem variar ao longo do tempo, dentro de gamas bem definidas. A gama do movimento permitido pelo movimento de pan est´a no intervalo [−180, 180] graus, enquanto que a do movimento de tilt se encontra compreendida entre [−90, 90] graus. As v´arias posturas que a cˆamara pode ter, torna poss´ıvel a captura de imagens em v´arias perspetivas, sendo poss´ıvel ao robˆo extrair informa¸c˜ao ´util sobre o ambiente em seu redor. Esta informa¸c˜ao ´e posteriormente usada para a realiza¸c˜ao de uma navega¸c˜ao adequada.
A cˆamara ´e, portanto, usada para finalidades diferentes. Posta a apontar para baixo, permite observar a estrada e os elementos nela presentes, nomeadamente as linhas delimita-doras das faixas de rodagem, a passadeira e obst´aculos. Posta a apontar para cima, permite observar sinal´etica que se encontre acima da posi¸c˜ao do ve´ıculo, sejam estes sinais verticais ou sem´aforos. O robˆo tem tamb´em um Laser Range Finder (LRF), capaz de recolher informa¸c˜ao sobre o ambiente que o rodeia. Este sensor pode ser usado na dete¸c˜ao de obst´aculos, podendo esta informa¸c˜ao ser fundida com a que vem da cˆamara para se obter uma maior certeza sobre a presen¸ca de um objeto na frente do robˆo.
2.1.3 Controlo de baixo n´ıvel
A camada de baixo n´ıvel gere os dispositivos de hardware (motores, servos, sensores), sendo constitu´ıda por v´arios micro-controladores interligados entre si. E constitu´ıda por´ v´arios m´odulos baseados nestes micro-controladores, que se encontram interligados atrav´es de uma CAN, como se encontra apresentado na Figura 2.3.
Um destes m´odulos, designado gateway, ´e respons´avel por interligar esta camada `a camada de controlo de alto n´ıvel, que corre num sistema computacional (computador port´atil), incor-porado no ve´ıculo. A interliga¸c˜ao ´e feita atrav´es de uma liga¸c˜ao s´erie, usando uma conex˜ao Universal Serial Bus (USB).
O gateway re´une todas as informa¸c˜oes proveniente dos v´arios m´odulos ligados `a CAN, enviando-as para o sistema computacional que corre a camada de alto n´ıvel. O processo tamb´em acontece na dire¸c˜ao contr´aria, ou seja o gateway recebe toda a informa¸c˜ao relacio-nada com a camada de baixo n´ıvel, enviada pelo sistema computacional, e envia-as para os respetivos m´odulos da CAN.
O n´o do motor ´e o m´odulo respons´avel por abstrair os detalhes t´ecnicos do motor e dos encoders. Este interliga estes dois componentes e a camada de alto n´ıvel. Recebe, atrav´es da rede CAN ao qual se encontra ligado a ordem de atua¸c˜ao destinada ao motor, que inclui a velocidade que se pretende aplicar `a roda traseira do ve´ıculo, utilizando esta velocidade como valor alvo a atingir pelo controlador PI [18]. Este controlador usa a informa¸c˜ao proveniente do encoder ligado `a roda motora como valor de feedback. O valor da velocidade da roda, medida atrav´es deste sensor ´e tamb´em enviado para a camada de alto n´ıvel. Juntamente com
Figura 2.3: Camada de perce¸c˜ao e atua¸c˜ao de baixo n´ıvel
o feedback fornecido pelo servo das rodas dianteiras do ve´ıculo, ´e poss´ıvel o c´alculo de dados odom´etricos, que s˜ao posteriormente utilizados pelo sistema de dead reckoning.
O pan, tilt e a dire¸c˜ao s˜ao geridos pelo mesmo m´odulo devido ao modelo dos servos utilizados. Os servos utilizados s˜ao os AX-12 da Dynamixel. Estes permitem a liga¸c˜ao entre si, podendo estes ser controlados por um ´unico m´odulo. As mensagens s˜ao enviadas para todos os servos atrav´es da mesma liga¸c˜ao, e cada uma destas inclui a identifica¸c˜ao do servo destinat´ario.
A plataforma ROTA usa como fonte de alimenta¸c˜ao duas baterias LiPO, sendo que uma delas ´e usada para alimentar o motor da roda traseira e a outra ´e utilizada para alimentar os mecanismos de controlo da direc¸c˜ao e da cˆamara, sendo o LRF alimentado por USB. Se estas baterias descarregarem completamente, estas ficariam inutiliz´aveis pois n˜ao seria pr´atico voltar a carreg´a-las. Para que tal n˜ao aconte¸ca, s˜ao utilizados dois monitores que emitem um alerta sonoro no caso de uma das c´elulas de qualquer uma destas baterias atingir um valor demasiado baixo em termos de voltagem.
O monitor da bateria ´e respons´avel por ler o estado das c´elulas das baterias, verificando se estas n˜ao atingem uma voltagem inferior a 3.2 volts. No caso do monitor emitir um aviso sonoro, isso significa que a voltagem de uma das c´elulas se encontra abaixo dos 3.2 volts, sendo necess´ario o carregamento da bateria respetiva de modo a que n˜ao fique inutiliz´avel, caso se pretenda voltar a utiliz´a-la.
2.2
Robot Operating System
O Robot Operating System (ROS) [20] ´e uma infraestrutura open-source de apoio ao desen-volvimento de aplica¸c˜oes rob´oticas, que se manifesta em trˆes vertentes. Fornece uma camada de comunica¸c˜ao estruturada em cima do sistema operativo, seguindo o paradigma produtor-consumidor, que visa simplificar a tarefa de criar comportamentos complexos e robustos para aplica¸c˜oes rob´oticas. Disponibiliza um vasto leque de bibliotecas de software com solu¸c˜oes
para problemas frequentes em aplica¸c˜oes rob´oticas. Finalmente, disponibiliza ferramentas de apoio `a visualiza¸c˜ao e introspe¸c˜ao do sistema.
2.2.1 Infraestrutura base
A infraestrutura de comunica¸c˜ao assenta nos conceitos de n´o, mensagem e t´opico. Os n´os s˜ao programas execut´aveis que usam a infraestrutura para comunicar entre si. A comunica¸c˜ao em si ´e concretizada pelo envio e rece¸c˜ao de mensagens, sendo os t´opicos usados como rece-pientes para as armazenar. N˜ao h´a liga¸c˜ao direta entre um n´o que envia uma mensagem e outro que a recebe: o primeiro limita-se a envi´a-la para um t´opico e o outro vai l´a lˆe-la. Uma mensagem pode ser vista como uma instˆancia de um tipo de dados espec´ıfico.
Cada t´opico est´a associado a um e um s´o tipo de dados e tem uma identifica¸c˜ao ´unica. Um n´o, antes de poder enviar mensagens para um t´opico, tem de se registar como produtor de mensagens para esse t´opico. O pedido ´e feito junto de um n´o especial, designado ROS master, que funciona como um servi¸co de diret´orio. Do lado oposto, um n´o, antes de poder receber mensagens de um t´opico, tem de se registar como consumidor de mensagens desse t´opico. O registo corresponde `a indica¸c˜ao de uma fun¸c˜ao (callback ) que ser´a usada para processar as mensagens chegadas ao t´opico.
Como referido, as mensagens est˜ao associadas a tipos de dados espec´ıficos. A estrutura base do ROS j´a fornece um leque vasto de mensagens. No entanto, ´e poss´ıvel a defini¸c˜ao de novas mensagens, usando tipos primitivos e mensagens j´a existentes. A defini¸c˜ao ´e feita numa meta-linguagem pr´opria, existindo possibilidade de compila¸c˜ao dessa defini¸c˜ao para linguagens de programa¸c˜ao diferentes. ´E poss´ıvel, desta maneira, a troca de mensagens entre n´os desenvolvidos usando linguagens diferentes.
2.2.2 Servi¸cos e Parˆametros
Al´em da troca de mensagens atrav´es dos t´opicos, existe outras formas de intera¸c˜ao entre os n´os: servi¸cos e parˆametros.
Servi¸cos s˜ao tarefas espec´ıficas executadas por n´os dedicados apenas a isso, cuja execu¸c˜ao ´e realizada a pedido de outros n´os. Esta forma de intera¸c˜ao segue o paradigma cliente servidor, onde ´e utilizado um par de mensagens: uma destinada ao pedido de execu¸c˜ao do servi¸co e outra que cont´em a resposta do servidor ao cliente. Os tipos de mensagens usadas nos servi¸cos s˜ao descritos utilizando ficheiros espec´ıficos, pois estes servi¸cos tˆem pelo menos um tipo de dados associado. Este tipo de ficheiros est´a dividido em duas partes: a primeira ´e usada para definir o tipo de mensagem usada no pedido, e a segunda o tipo usado na resposta. Na defini¸c˜ao de um servi¸co ´e poss´ıvel a utiliza¸c˜ao de qualquer tipo de mensagem j´a existente no ecossistema ROS, ou criada pelo pr´oprio utilizador. O ROS master funciona como um gestor de parˆametros globais, que funciona como um dicion´ario partilhado entre os v´arios n´os de uma aplica¸c˜ao. Atrav´es de uma API ´e poss´ıvel a um n´o realizar v´arias opera¸c˜oes sobre este dicion´ario, como por exemplo obter e modificar o conte´udo de um parˆametro, ou mesmo apagar um determinado parˆametro do dicion´ario. O pacote ROS dynamic reconfigure fornece um meio de alterar os parˆametros relativos a um n´o a qualquer momento, sem ser
Orador Ouvinte Tópico ROS Master Mensagem publicada Mensagem recebida parâmetro robot description
Descrição do robô
Serviço
Pedido Resposta
Figura 2.4: Processo de publica¸c˜ao e subscri¸c˜ao de um t´opico, obten¸c˜ao do conte´udo de um parˆametro e utiliza¸c˜ao de um servi¸co
necess´ario o seu reinicio. Caso se pretenda usar as funcionalidades deste pacote, ´e preciso apenas desenvolver uma callback, que ´e despoletada sempre que exista uma altera¸c˜ao nos parˆametros relativos a um determinado n´o.
Na Figura 2.4 encontram-se representados as trˆes formas diferentes de intera¸c˜ao. A co-munica¸c˜ao entre o n´o Orador e o ROS Master ´e efetuado atrav´es da application programming interface (API) desenhada para a realiza¸c˜ao de opera¸c˜oes sobre parˆametros. Entre o n´o Ora-dor e ouvinte a transmiss˜ao de informa¸c˜ao ´e feita atrav´es de um t´opico. Por fim, a troca de informa¸c˜ao entre o n´o Ouvinte e Servi¸co ´e realizada sempre que existe uma solicita¸c˜ao por parte do n´o ouvinte, ao qual ´e enviado uma resposta ap´os o pedido ser processado.
2.2.3 Bibliotecas de suporte
Como j´a foi referido, o ecossistema ROS fornece uma vasta cole¸c˜ao de bibliotecas, sob a forma de pacotes, que implementam fun¸c˜oes ´uteis para a implementa¸c˜ao de aplica¸c˜oes em rob´otica, dando liberdade ao utilizador de utilizar apenas aqueles que precisa. No nosso projeto as bibliotecas mais usadas foram as tf, amcl, libfreenect, hokuyo node e joy.
A tf mant´em uma ´arvore de transforma¸c˜oes entre diversos referenciais. Permite facilmente obter coordenadas num referencial, mesmo quando a informa¸c˜ao tenha sido publicada num outro referencial.
A libfreenect ´e uma biblioteca que inclui os drivers da primeira vers˜ao da cˆamara Kinect, dando a possibilidade ao utilizador de realizar a captura de v´ıdeo a cores, bem como a captura de uma imagem de profundidade, fornecendo tamb´em a imagem registada.
O hokuyo node interage com um laser range finder Hokuyo, disponibilizando os dados sensoriais por ele produzidos.
suportado pelo Linux. Este n´o abstrai o funcionamento destes dispositivos e publica num t´opico o valor do movimento dos eixos e o estado dos v´arios bot˜oes (pressionado ou n˜ao) de um comando espec´ıfico. Atrav´es deste driver foi poss´ıvel comandar o robˆo utilizando um comando da playstation 3 ou da xbox 360.
O AMCL implementa um algoritmo de localiza¸c˜ao global para robˆos com uma base m´ovel de dire¸c˜ao holon´omica, num mapa bidimensional, baseada na localiza¸c˜ao adaptativa de Monte Carlo [8].
2.2.4 Ferramentas de apoio ao desenvolvimento
O ecossistema ROS possui tamb´em ferramentas de visualiza¸c˜ao e introspe¸c˜ao do sis-tema, ´uteis no desenvolvimento de software. Dentro destas ferramentas podemos destacar o rqt graph, o rviz e o rosbag.
O rqt graph ´e uma ferramenta gr´afica que permite visualizar a arquitetura de uma aplica¸c˜ao, em termos dos n´os e dos t´opicos envolvidos e da interliga¸c˜ao entre eles. Permite, por exemplo, saber que t´opicos um dado n´o subscreve e publica.
O rviz ´e uma ferramenta de visualiza¸c˜ao 3D, que possui v´arias funcionalidades. Estas permitem, por exemplo, a visualiza¸c˜ao de um robˆo modelado em URDF, de dados provenientes dos sensores, da posi¸c˜ao estimada pelo robˆo e da posi¸c˜ao dos v´arios referenciais usados pela biblioteca tf, entre outras.
O rosbag permite ao utilizador gravar em ficheiros bag as mensagens que se encontram a ser publicadas nos diversos t´opicos. ´E tamb´em capaz de reproduzir a informa¸c˜ao guardada num ficheiro bag a qualquer momento.
2.3
Prova de Condu¸
c˜
ao Aut´
onoma do Festival Nacional de
Rob´
otica
O Festival Nacional de Rob´otica ´e um encontro cient´ıfico, organizado pela sociedade por-tuguesa de rob´otica, com competi¸c˜oes de rob´otica que tem lugar em Portugal, realizando-se anualmente, desde a primeira edi¸c˜ao em 2001, em v´arias localidades ao longo do pa´ıs. Este festival tem como objetivo reunir as pessoas e entidades interessadas nas diversas ´areas abrangidas pela rob´otica estimulando-as a participar atrav´es de v´arias competi¸c˜oes, englo-bando tamb´em um encontro cient´ıfico. Entre as diversas competi¸c˜oes existentes neste festival referimo-nos neste documento `a prova de condu¸c˜ao aut´onoma, pois o trabalho realizado no contexto desta disserta¸c˜ao encontra-se relacionado com esta prova em espec´ıfico.
A prova de condu¸c˜ao aut´onoma tem como objetivo o desenvolvimento de ve´ıculos que consigam conduzir autonomamente numa pista com semelhan¸cas marcantes a uma estrada convencional. A pista poder´a ter uma ou mais faixas de rodagem, delimitadas por linhas brancas, e possuir v´arios elementos de sinaliza¸c˜ao, tais como uma passadeira, sem´aforos e sinais verticais. Al´em disso, a pista possui zonas de estacionamento e pode possuir uma sec¸c˜ao em t´unel, uma sec¸c˜ao em obras e obst´aculos obstruindo uma das faixas de rodagem.
Figura 2.5: Pista da prova de condu¸c˜ao aut´onoma usada na edi¸c˜ao de 2015 do Festival Nacional de Rob´otica
Figura 2.6: Sinais de trˆansito mostrados nos pain´eis sinal´eticos colocados sobre a passadeira
2.3.1 Ambiente de competi¸c˜ao
A figura 2.5 mostra a pista usada na prova de condu¸c˜ao aut´onoma na edi¸c˜ao de 2015 do Festival Nacional de Rob´otica. Corresponde a um circuito fechado, com a forma de um B e com duas faixas de rodagem durante todo o seu percurso. A meio possu´ıa uma passadeira, sobre a qual existia um p´ortico que suportava dois pain´eis sinal´eticos (TFTs), que funcionavam como sem´aforos. Possu´ıa duas zonas de estacionamento, uma paralela `a uma das faixas de rodagem e a outra em espinha, esta com os lugares de estacionamento identificados com a letra P. Na imagem, h´a uma sec¸c˜ao da pista em t´unel, um sinal vertical e um obst´aculo (um paralelep´ıpedo verde) a obstruir uma das faixas de rodagem.
O painel sinal´etico sobre o p´ortico, a uma altura de 87 cm, apresenta os sinais (ver figura 2.6) que o ve´ıculo deve observar. Quatro desses sinais, designados STOP, AHEAD, LEFT e RIGHT, controlam o movimento do ve´ıculo, obrigando-o a parar na passadeira, ir em frente, virar `a esquerda ou virar `a direita. O sinal em xadrez, designado CHESS, indica ao ve´ıculo o termo da prova e o sinal com um P, designado PARK, indica que o ve´ıculo vai iniciar uma manobra de estacionamento.
Os sinais verticais (ver figura 2.7) podem aparecer ao longo da pista, do lado direito de uma faixa de rodagem, e apresentam padr˜oes que tˆem de ser identificados pelo ve´ıculo. S˜ao suportados por um mastro e colocados a uma altura fixa, igual `aquela a que est˜ao os pain´eis sinal´eticos no p´ortico. H´a 12 sinais, distribu´ıdos por 3 categorias. Dentro de cada categoria os sinais apresentam a mesma forma, mudando apenas o padr˜ao.
Figura 2.7: Sinais de trˆansito verticais colocados ao longo da pista
2.3.2 Competi¸c˜ao
As regras da competi¸c˜ao da prova de condu¸c˜ao aut´onoma tem mudado ao longo das v´arias edi¸c˜oes do Festival Nacional de Rob´otica, apresentando nas edi¸c˜oes de 2015 e 2016 a forma de desafios. Houve 4 tipos de desafios:
1. desafios de condu¸c˜ao (tipo D)
2. desafios de estacionamento em faixa paralela `a faixa de rodagem (tipo P) 3. desafios de estacionamento em espinha (tipo B)
4. desafios de identifica¸c˜ao de sinais verticais (V)
Houve 4 desafios de condu¸c˜ao, designados D1 a D4. Em todos os desafios, o ve´ıculo iniciava a sua presta¸c˜ao imediatamente antes da passadeira, de forma a que a projec¸c˜ao vertical da sua frente ficasse por cima da linha da passadeira perpendicular `a faixa de rodagem. No desafio D1, o ve´ıculo tinha de dar duas voltas completas `a pista e imobilizar-se na passadeira, numa posi¸c˜ao correspondente `a da partida. O in´ıcio da prova era dado pelo sinal presente no painel sinal´etico ao passar de STOP para AHEAD. No desafio D2, o ve´ıculo, `a passagem pela passadeira, tinha de respeitar o sinal presente no painel. Este sinal, podia obrig´a-lo a imobilizar-se, seguir em frente, virar `a esquerda ou virar `a direita. O in´ıcio da prova era dado pela passagem do sinal de STOP para AHEAD ou LEFT. O desafio D3 era semelhante ao D2, com a dificuldade adicional de que parte da pista tinha um t´unel e iriam aparecer obst´aculos a obstruir a faixa de rodagem. Finalmente, no desafio D4, era adicionada uma zona em obras, caso em que havia um desvio delimitado por cones.
Houve 3 tipos de estacionamento na faixa paralela `a faixa de rodagem, com dificuldades crescentes, designados P1 a P3. Em P1, a faixa de estacionamento estava completamente livre; em P2, possui um obst´aculo, `a frente do qual o ve´ıculo deveria estacionar; em P3, havia dois obst´aculos, obrigando o ve´ıculo a estacionar entre eles. O in´ıcio das provas era dado pelo sinal presente no painel sinal´etico ao passar de STOP para PARK.
Houve 2 tipos de estacionamento em espinha (bay parking), designados B1 e B2. A diferen¸ca entre ambos era que em B2 um dos lugares estava ocupado por um obst´aculo. Estes desafios apenas podiam ser considerados ap´os a conclus˜ao de um desafio de condu¸c˜ao. O in´ıcio das provas era dado pelo sinal presente no painel sinal´etico ao passar de STOP para PARK.
Houve um ´unico desafio de identifica¸c˜ao de sinais verticais, designado V1. Consistia em identificar e classificar os sinais verticais de trˆansito colocados ao longo da pista. Eram colocados seis sinais (dois de cada categoria) de entre os doze apresentados na figura 2.7. O in´ıcio da prova era dado pelo sinal presente no painel sinal´etico ao passar de STOP para AHEAD, dispondo o ve´ıculo de duas voltas `a pista para ultrapassar o desafio.
Em geral, a competi¸c˜ao estava estruturada em 4 mangas, cada uma com a dura¸c˜ao de 10 minutos por cada equipa participante. Em cada manga, havia um conjunto de desafios que o ve´ıculo poderia tentar ultrapassar. Os desafios podiam ser atacados em mais do que uma manga, mas o n´umero m´aximo de tentativas por desafio estava limitado a trˆes.
2.4
Software de Controlo de Alto N´ıvel
Na figura 2.8 apresenta-se um diagrama geral do software de controlo de alto n´ıvel da plataforma ROTA. Os blocos retangulares representam dados (conjuntos de t´opicos ROS) ou dispositivos, enquanto que os ovais representam blocos de processamento.
Os dispositivos s˜ao representados pelas 3 caixas retangulares com delimita¸c˜ao dupla, cor-respondendo ao LRF, ao dispositivo RGB-D (Kinect) e `a Low-Level Infrastructure (LLI). Esta ´
ultima representa, na realidade, todos os sensores e atuadores manipuladores pela camada de controlo de baixo n´ıvel (ver sec¸c˜ao 2.1).
Tal como referido nessa sec¸c˜ao, a comunica¸c˜ao entre a camada de baixo n´ıvel e a de alto n´ıvel ´e feita atrav´es de uma liga¸c˜ao s´erie, usando um cabo USB. O m´odulo Hardware Abstration Layer (HAL) ´e respons´avel por esta comunica¸c˜ao e por criar uma abstra¸c˜ao na forma como o alto n´ıvel interage com o baixo n´ıvel. Por exemplo, os dados de odometria relativos `a roda motriz e a posi¸c˜ao do servo da dire¸c˜ao s˜ao conjugados, sendo publicados os valores de dead reckoning. A informa¸c˜ao relativa `a posi¸c˜ao pan e tilt da cˆamara Kinect ´e tamb´em publicada, sendo obtida atrav´es dos encoders presentes nos servos de suporte do dispositivo RGB-D.
O m´odulo ImageAcq ´e respons´avel pela aquisi¸c˜ao das imagens do dispositivo RGB-D (uma Kinect atualmente) e pela publica¸c˜ao dessas imagens ou de imagens delas derivadas. Essas imagens ser˜ao processadas por dois m´odulos diferentes. O m´odulo RoadImageProc trabalha as imagens com o objetivo de extrair informa¸c˜ao que ajudem na localiza¸c˜ao do ve´ıculo. Est´ a-se a falar esa-sencialmente da identifica¸c˜ao das linhas delimitadoras das faixas de rodagem e da passadeira. A informa¸c˜ao extra´ıda ´e publicada para posterior utiliza¸c˜ao pelo m´odulo de localiza¸c˜ao. O m´odulo SignImageProc ´e respons´avel por identificar os sinais afixados nos pain´eis sinal´eticos ou nos sinais verticais. Este m´odulo funciona como um prestador de servi¸cos ROS, no sentido em que apenas efetua o processamento em consequˆencia de um pedido.
LRF Kinect LLI Aquisição ImageAcq Imagens SignImageProc Decision Ordens de atuação Localizer Características da estrada HAL
Pan & tilt e
dead reckoning
Posição e Orientação RoadImageProc
O m´odulo Localizer ´e respons´avel por determinar uma estimativa adequada da loca-liza¸c˜ao e orienta¸c˜ao (postura) do ve´ıculo, podendo usar para isso a estimativa anterior, os dados de dead reckoning e a informa¸c˜ao sobre a estrada extra´ıda das imagens. A estimativa da postura ´e publicada no t´opico Pose.
O m´odulo Decision representa a entidade respons´avel por resolver os desafios colocados ao ve´ıculo.
Cap´ıtulo 3
Simula¸
c˜
ao
A simula¸c˜ao ´e uma t´ecnica em que se concebem modelos de um sistema dinˆamico. Possui uma elevada importˆancia em v´arias ´areas de neg´ocio, como por exemplo nas ind´ustrias de pilotagem comercial, automa¸c˜ao, jogos de v´ıdeo, autom´ovel, entre outras. Devido `a diversi-dade de aplica¸c˜oes que esta ´area pode ter, podem existir simula¸c˜oes com v´arios objetivos. Um desses objetivos pode ser a utiliza¸c˜ao de um ambiente de simula¸c˜ao que permite ao utilizador verificar qual o comportamento adotado por um determinado modelo no mundo virtual, sendo desej´avel que este seja semelhante ao do sistema f´ısico real.
3.1
Simula¸
c˜
ao em rob´
otica
A simula¸c˜ao ´e uma ferramenta essencial para todos os que trabalham na ´area da rob´otica. Os simuladores s˜ao aplica¸c˜oes que fornecem a possibilidade de desenvolver modelos virtuais de sistemas f´ısicos e todo o espa¸co envolvente, permitindo reproduzir acontecimentos reais num ambiente virtual.
Desta forma ´e poss´ıvel testar ideias, teorias e software sem os custos de desenvolver uma entidade f´ısica, que muitas vezes envolve gastar mais recursos do que desenvolver um mo-delo simulado de um robˆo e um ambiente de simula¸c˜ao. Esta ferramenta ´e tamb´em ´util na prototipagem de um robˆo, sendo que ´e poss´ıvel perceber antes da conce¸c˜ao f´ısica do mesmo quais as caracter´ısticas f´ısicas mais adequadas para o robˆo real, de maneira a que este consiga executar de forma mais eficiente uma determinada tarefa.
Para verificar qual o comportamento de um robˆo real aquando da execu¸c˜ao de um al-goritmo espec´ıfico ´e necess´ario ter o robˆo operacional, program´a-lo e testar os algoritmos desenvolvidos. Este processo de teste pode repetir-se v´arias vezes dependendo dos resultados obtidos, sendo que em cada itera¸c˜ao se afina quer o algoritmo em si, quer os parˆametros usados por este. Este processo levado a cabo no robˆo real envolve desgaste das componentes f´ısicas de todo o ve´ıculo como exemplo baterias, servos, rodas, entre outros, que pode levar `a inutiliza¸c˜ao de alguns destes componentes. Em cen´arios reais existem v´arios riscos associados `
a estrutura f´ısica do robˆo, como por exemplo, falha de hardware ou a colis˜ao deste contra outros objetos f´ısicos. Em compara¸c˜ao com o mundo real, o ambiente virtual traz muitas vantagens sendo que podemos destacar as seguintes:
1. Testar os algoritmos desenvolvidos sem os riscos associados ao hardware;
2. Modificar o estado do mundo mais rapidamente, podendo-se testar o comportamento do robˆo em v´arias situa¸c˜oes;
3. Manipular o tempo da simula¸c˜ao de modo a se poder executar uma melhor depura¸c˜ao do nosso programa, de modo a identificar-se poss´ıveis erros;
4. Executar v´arias vezes o mesmo algoritmo de uma vez s´o e verificar qual a taxa de sucesso.
Para al´em das vantagens j´a mencionadas, ´e tamb´em poss´ıvel verificar que existe uma vantagem clara no caso de teste em ambiente simulado em rela¸c˜ao a um cen´ario real quando o robˆo tem de come¸car sempre numa posi¸c˜ao espec´ıfica, como acontece na prova de condu¸c˜ao aut´onoma. Isto porque no mundo real o transporte do robˆo pode requerer uma quantidade consider´avel de esfor¸co e tempo, enquanto que no mundo virtual esta opera¸c˜ao pode ser feita instantaneamente.
Embora um robˆo virtual traga muitas vantagens em rela¸c˜ao `a entidade f´ısica do mesmo, existem fatores que influenciam o comportamento do robˆo apenas percet´ıveis no mundo real. Alguns desses fatores s˜ao o comportamento f´ısico do mesmo e o reduzido n´umero de cen´arios simulados em compara¸c˜ao com aqueles encontrados no mundo real. O primeiro fator pode ser minimizado por uma modela¸c˜ao f´ısica dos modelos mais cuidada, enquanto que o segundo requereria uma grande quantidade de cen´arios tendo estes de ser foto-realistas, sendo que este n´umero de cen´arios s´o se podem encontrar atualmente em jogos de v´ıdeo comerciais.
Os simuladores podem tamb´em ser usados para criar um grande conjunto de dados com imagens e informa¸c˜oes relativas `a classifica¸c˜ao de objetos nessa mesma imagem ao n´ıvel do pixel. Usando v´ıdeo jogos comerciais com grandes espa¸cos abertos ´e poss´ıvel criar este grande conjunto de dados, devido a poder-se capturar os comandos de rendering: geometria, shading e de texturiza¸c˜ao que definem objetos, sendo que estes comandos s˜ao iguais para classes de objetos iguais e que permanecem v´alidas ao longo de todo o jogo [21].
No resto do cap´ıtulo apresenta-se um breve estudo de alguns ambiente de simula¸c˜ao para rob´otica. ´E feita uma cobertura mais profunda ao Gazebo, uma vez que foi o ambiente usado no ˆambito do trabalho desta disserta¸c˜ao, apresentando-se as raz˜oes subjacentes `a sua escolha.
3.2
Ambientes de simula¸
c˜
ao
Os simuladores concebidos para realizar a simula¸c˜ao na ´area de rob´otica permitem mode-lar os robˆos e o espa¸co envolvente, conferir-lhes um comportamento f´ısico adequado, produzir informa¸c˜ao a partir de sensores, visualizar o mundo virtual onde o robˆo opera e os dados pro-duzidos pelos sensores deste. Estes simuladores incorporam normalmente duas componentes, correspondentes `a simula¸c˜ao f´ısica e gr´afica.
A componente f´ısica da simula¸c˜ao permite a modela¸c˜ao de entidades f´ısicas reais, sendo respons´avel por fornecer comportamentos plaus´ıveis quando as v´arias entidades dentro do mesmo ambiente de simula¸c˜ao interagem entre si. Para simular esta componente os simula-dores utilizam geralmente um motor de f´ısica, que fornece aos modelos uma dinˆamica realista
em tempo real.
Na produ¸c˜ao de informa¸c˜ao por parte de sensores virtuais os simuladores rob´oticos s˜ao auxiliados pela utiliza¸c˜ao de um motor gr´afico como o Object-oriented Graphics Rendering Engine (OGRE) ou uma API como OpenGL. A utiliza¸c˜ao destas bibliotecas gr´afica tem dois objetivos, sendo uma delas a simula¸c˜ao de sensores.
O segundo objetivo da utiliza¸c˜ao de uma biblioteca gr´afica, que incorpora o motor de rendering, ´e permitir ao utilizador visualizar qual o estado do mundo simulado atrav´es da graphical user interface (GUI) do simulador, podendo este interagir com todos os modelos que se encontram dentro do ambiente de simula¸c˜ao.
Para al´em de permitirem a visualiza¸c˜ao do robˆo e dos restantes elementos no mundo, os simuladores permitem tamb´em ver uma representa¸c˜ao gr´afica dos dados capturados pelos sensores.
No campo da simula¸c˜ao rob´otica existem v´arias plataformas de simula¸c˜ao, algumas delas espec´ıficas para um determinado fim enquanto outras s˜ao completamente gen´ericas. As que s˜ao espec´ıficas apenas simulam robˆos em ambientes espec´ıficos, como por exemplo bra¸cos rob´oticos em linhas de montagem. As plataformas gen´ericas s˜ao aquelas que permitem a simula¸c˜ao de qualquer tipo de robˆo, independentemente do seu prop´osito. Entre as diversas plataformas podemos destacar as seguintes:
1. V-REP 2. SimTwo 3. Webots 4. RobotStudio 5. Gazebo
Para al´em destes, existem outros simuladores que n˜ao se encontram enumeramos devido a alguns terem sido descontinuados e outros n˜ao terem atualiza¸c˜oes regulares. Um dos si-muladores descontinuados foi o Microsoft robotics developer studio devido ao encerramento da sec¸c˜ao de rob´otica desta empresa1, encontrando-se ainda o software dispon´ıvel para os utilizadores que pretendam utiliz´a-lo. Outros simuladores como por exemplo o simSpark ainda s˜ao utilizados em competi¸c˜oes como o RoboCup na liga de simula¸c˜ao, embora a ´ultima atualiza¸c˜ao deste simulador tenha sido efetuada em 2010.
V-REP
O V-REP ´e um simulador 3D [22] open-source de ˆambito geral com um ambiente de desenvolvimento incorporado, multi-plataforma (Windows/Linux /Mac OS X), criado pela Coppelia Robotics. Permite a modela¸c˜ao de um sistema rob´otico completo ou apenas com-ponentes deste, tal como sensores, atuadores, entre outros comcom-ponentes.
Assenta numa arquitetura de controlo distribu´ıda em que cada modelo pode ser controlado de diversas formas, tornado-se num simulador vers´atil e flex´ıvel. Este simulador permite
tamb´em que os controladores sejam escritos em v´arias linguagens como C/C++, Python, Java, Lua, Matlab, Octave ou Urbi sendo tamb´em poss´ıvel o controlo atrav´es de um n´o ROS.
´
E usado para simula¸c˜oes de automa¸c˜ao em f´abricas, prototipagem r´apida, simula¸c˜oes com objetivos educacionais, entre muitas outras aplica¸c˜oes. ´E um dos simuladores open-source que mais motores de f´ısica suporta, incluindo funcionalidade como dete¸c˜ao de colis˜oes, gera¸c˜ao de dados de diversos tipos de sensores, grava¸c˜ao e visualiza¸c˜ao de informa¸c˜ao, entre outros.
SimTwo
O SimTwo ´e um simulador 3D realista e gratuito, que suporta diferentes tipos de robˆos [5], desenhado para ser executado na plataforma Windows.
O controlo dos robˆos dentro deste ambiente de simula¸c˜ao pode ser feita utilizando RemOb-ject Pascal Script2. Inclu´ı um sistema de scripting que pode ser usado para controlar o estado dos robˆos simulados, podendo alterar-se a sua posi¸c˜ao, o estado dos motores, etc. Permite tamb´em a existˆencias de m´ultiplos robˆos no mesmo cen´ario, que podem ser equipados com sensores e atuadores. A descri¸c˜ao do mundo encontra-se num ficheiro XML que ´e carregada quando a simula¸c˜ao come¸ca.
Este simulador ´e utilizado na simula¸c˜ao da prova Robot@Factory do Festival Nacional de Rob´otica.
Webots
Webots ´e um software multi-plataforma (Windows / Linux / Mac OS X) criado pela Cy-berbotics, que tem como p´ublico alvo investigadores e professores na ´area da rob´otica. Fornece um ambiente para prototipagem r´apida para robˆos simulando tamb´em o seu comportamento f´ısico.
Este simulador agrega um ambiente de desenvolvimento usado para modelar, programar e simular robˆos m´oveis acoplado a uma interface gr´afica 3D, onde s˜ao mostrados visualmente os modelos desenvolvidos pelo utilizador ou modelos j´a inclu´ıdos no pr´oprio simulador.
´
E poss´ıvel a constru¸c˜ao de simula¸c˜oes dinˆamicas do ponto de vista f´ısico com v´arios robˆos possuindo v´arias interfaces incluindo matlab e ROS. Os robˆos neste simulador podem ser controlados com c´odigo escrito em C/C++, Java, Python ou Matlab.
Inclui uma vasta gama de sensores que podem ser usados para equipar os modelos, podendo-se afinar os parˆametros relacionados com estes como por exemplo o ru´ıdo. Alguns dos sensores s˜ao por exemplo, sensores de distˆancia, bumpers, cˆamaras, laser range finders, entre muitos outros. Existem tamb´em alguns atuadores como por exemplo LEDs, servos e grippers. Os robˆos e o mundo encontram-se definidos num ficheiro world.
RobotStudio
RobotStudio ´e um software de simula¸c˜ao criado pelo ABB com o objetivo de simular robˆos industriais. Fornece uma lista de componentes que podem ser usados para modelar o robˆo e
os seus sensores e atuadores. Para modelar o ambiente envolvente este simulador permite a modela¸c˜ao de objetos t´ıpicos numa f´abrica como por exemplo passadeira rolantes, elevadores para bra¸cos rob´oticos, entre outros. Possui tamb´em mecanismos para dete¸c˜ao de colis˜oes e a capacidade de verificar se todos os objetos na simula¸c˜ao s˜ao alcan¸c´aveis pelo bra¸co rob´otico.
Gazebo
Gazebo ´e um simulador multi robˆo 3D open-source [11] desenvolvido em C++, concebido em primeiro lugar para sistemas operativos baseados em Linux, embora tenha sido efetuado um porte para Windows a partir da vers˜ao 5 deste simulador. Mantido atualmente pela Open Source Robotics Foundation (OSRF), permite desenvolver modelos de robˆos e modelar os ambientes que os robˆos podem encontrar, tendo a capacidade de modelar sistemas com diversos sensores, atuadores e outros objetos.
Neste simulador os objetos e o ambiente envolvente s˜ao descritos num ficheiro .world, que incluem os modelos, fatores como a ilumina¸c˜ao e caracter´ısticas relacionadas com a f´ısica. Todos estes elementos podem ser descritos por duas linguagens de marca¸c˜ao distintas. Um poss´ıvel cen´ario de simula¸c˜ao, onde ´e poss´ıvel verificar que o robˆo tem pelo menos dois sen-sores, uma cˆamara e um LRF.
A API fornecida pelo Gazebo ´e usado pelo pr´oprio simulador dando acesso ao utilizador a capacidade de atuar ou obter dados sobre estado do mundo, tendo esta como base bibliotecas de terceiros para visualiza¸c˜ao e simula¸c˜ao da parte f´ısica. Neste simulador todos os objetos exceto luzes tˆem propriedades f´ısicas, que permitem aos modelos simulados terem compor-tamentos realistas quando sujeitos a for¸cas exteriores. Possui tamb´em uma forte liga¸c˜ao `a plataforma ROS, devido `a sua integra¸c˜ao pioneira com esta framework.
3.2.1 Preferˆencia pelo Gazebo
O Gazebo e o V-REP possuem ambos licen¸ca gratuita e podem ser executados na pla-taforma Linux, o que os torna eleg´ıveis para a realiza¸c˜ao deste trabalho, embora no caso do V-REP esta s´o seja gratuita em contexto educacional.
Para a realiza¸c˜ao deste projeto de simula¸c˜ao foi necess´aria uma forma de desenvolver um modelo de um robˆo com um sistema de dire¸c˜ao Ackermann, que fosse capaz de produzir dados provenientes de um dispositivo RGB-D simulado e de um LRF Hokuyo tamb´em simulado. Ambos os simuladores possuem as caracter´ısticas necess´arias ao desenvolvimento do projeto, mas na modela¸c˜ao de objetos existe uma diferen¸ca no modo como ´e efetuado a representa¸c˜ao f´ısica do modelo. Enquanto que o Gazebo separa a componente visual da f´ısica do modelo, em V-REP estas duas componentes s˜ao representadas pela mesma geometria. Neste aspeto penso que a abordagem tomada pelo simulador Gazebo ´e a mais apropriada.
A modela¸c˜ao foi poss´ıvel gra¸cas `a linguagem de descri¸c˜ao SDF enquanto que a dire¸c˜ao Ackermann e a produ¸c˜ao de dados a partir dos sensores foi obtida gra¸cas a v´arios plugins.
Para al´em das raz˜oes j´a apresentadas, o Gazebo tem sido uma ferramenta j´a utilizada no IRIS-Lab (IEETA), sendo tamb´em um simulador com uma elevada simbiose com o ecossistema ROS, que ´e a framework utilizada neste projeto. A decis˜ao da vers˜ao do simulador Gazebo a
Figura 3.1: Tipo de juntas, adaptado de [27]
utilizar foi condicionada pela vers˜ao de ROS utilizada na realiza¸c˜ao do trabalho de disserta¸c˜ao. Como ´e utilizado o ROS Indigo, a vers˜ao do Gazebo escolhida foi a vers˜ao 2.2.3, pois esta encontra-se totalmente integrada com o sistema ROS usado.
3.3
Gazebo
O Gazebo ´e um ambiente de simula¸c˜ao para aplica¸c˜oes rob´oticas, capaz de descrever modelos de robˆos e outros objetos presentes no seu meio envolvente. Os objetos, incluindo o robˆo, s˜ao tratados como um conjunto de partes (links) interligados por juntas. A descri¸c˜ao de cada parte inclui uma representa¸c˜ao para as colis˜oes, uma representa¸c˜ao visual e um modelo inercial. A cada parte podem ainda ser associados sensores. As juntas, que funcionam como articula¸c˜oes, podem ter diferentes graus de liberdade.
3.3.1 Motor de f´ısica
O Gazebo tem como uma das suas caracter´ısticas fundamentais a simula¸c˜ao das propri-edades f´ısicas dos diversos objetos e a intera¸c˜ao destes objetos entre si. Portanto, devido `a importˆancia das intera¸c˜oes f´ısicas entre os diversos modelos, o Gazebo optou por utilizar um motor de f´ısica j´a existente. Este motor ´e um software que tem como principal objetivo simu-lar as propriedades de todos os corpos materiais e as leis que tendem a modificar o estado e o movimento desses corpos, sem lhes modificar a natureza. O motor de f´ısica usado na vers˜ao do Gazebo utilizado neste projeto ´e o Open Dynamics Engine (ODE). As caracter´ısticas for-necidas ao Gazebo por este motor s˜ao v´arias nas quais est˜ao inclu´ıdas dete¸c˜ao de colis˜oes, tipos de movimento efetuado pelas juntas, massa e in´ercia.
Uma junta estabelece liga¸c˜oes entre os corpos de um determinado modelo, de forma a criar rela¸c˜oes dinˆamicas. Os tipos de juntas existentes foram concebidas tendo como base as juntas do motor de f´ısica usado na sua conce¸c˜ao.
Existem v´arios tipos de juntas dispon´ıveis das quais podemos destacar as juntas prism´aticas, as revolute do tipo 1 e 2 e as do tipo bola que se encontram na Figura 3.1. As juntas
prism´aticas tˆem um grau de liberdade em termos translacionais e permitem a dois corpos deslocaram-se num dos eixos, limitados por um intervalo cont´ınuo de valores. As revolute 1 possui um grau de liberdade em termos rotacionais e permitem a um corpo rodar sobre um eixo em rela¸c˜ao ao seu centro de rota¸c˜ao, enquanto que as revolute 2 s˜ao apenas duas juntas revolute 1 em s´erie permitindo a rota¸c˜ao sobre dois eixos em simultˆaneo, podendo-se restringir ou n˜ao essa rota¸c˜ao. Nas juntas do tipo bola os corpos rodam apenas em rela¸c˜ao ao seu centro de rota¸c˜ao tendo trˆes graus de liberdade em termos rotacionais.
3.3.2 Motor gr´afico
O simulador Gazebo usa o motor gr´afico OGRE. O OGRE ´e um motor 3D open-source escrito em C++, desenhado especificamente para fornecer uma visualiza¸c˜ao gr´afica do mundo, embora possa ser usado para outros fins.
Este motor gr´afico ´e usado pela biblioteca de rendering do Gazebo, para fornecer uma interface capaz de realizar o rendering de cen´arios 3D. Os cen´arios 3D j´a renderizados permi-tem apresentar ao utilizador uma interface gr´afica com o estado do mundo. O motor gr´afico ´e tamb´em utilizado pelas bibliotecas relacionadas com os sensores.
Dentro das carater´ısticas deste simulador est´a a possibilidade de atribuir texturas a um modelo no seu todo ou apenas a uma parte deste. No caso de se pretender apenas mapear a textura numa regi˜ao espec´ıfica do modelo pode ser utilizado um programa de modela¸c˜ao externo, ficando a informa¸c˜ao do mapeamento incorporado no ficheiro da mesh no momento da exporta¸c˜ao, sendo esta posteriormente usada pelo Gazebo. Um exemplo da aplica¸c˜ao em Gazebo de texturas em modelos pode ser encontrado na Figura 3.2.
Figura 3.2: Modelo com e sem textura
3.3.3 Sensores
Os sensores s˜ao m´odulos sem qualquer tipo de representa¸c˜ao f´ısica que criam informa¸c˜ao a partir do mundo virtual, fornecendo-a posteriormente ao utilizador. Em Gazebo j´a existem v´arios tipos de sensores capazes de fornecer feedback realista ao utilizador, como por exemplo alt´ımetros, cˆamaras, sensores de contacto, profundidade, GPS, IMU entre outros, podendo-se ou n˜ao introduzir ru´ıdo nos dados produzidos por estes. Param al´em dos tipos de sensores
j´a existentes, o utilizador pode criar os seus pr´oprios sensores utilizando plugins Gazebo espec´ıficos. Como os sensores s˜ao entidades separadas do modelo, ´e poss´ıvel reutiliza-los em qualquer modelo presente no mundo virtual. Na figura 3.4, ´e vis´ıvel que o robˆo PR2 est´a equipado com dois tipos de sensores, um LRF e uma cˆamara RGB.
3.3.4 Plugins
Este simulador permite tamb´em o desenvolvimentos de plugins utilizando a linguagem de programa¸c˜ao C++, que fornece acesso `a API do Gazebo. No Gazebo existem seis tipos de plugins que s˜ao os seguintes:
1. Plugin do mundo 2. Plugin de modelo 3. Plugin de sensor 4. Plugin do sistema
5. Plugin da parte visual do modelo 6. Plugin da interface gr´afica
Os plugins do mundo ligam-se a um determinado mundo virtual, permitindo a altera¸c˜ao do seu estado, atrav´es da manipula¸c˜ao de qualquer objeto presente neste, ou por meio da adi¸c˜ao/remo¸c˜ao de objetos nesse mundo, ou mesmo atrav´es da altera¸c˜ao das caracter´ısticas relacionadas com a f´ısica ou com a ilumina¸c˜ao.
Os plugins de modelo permitem aproximar o mais poss´ıvel a dinˆamica do objeto modelado ao comportamento da entidade real do objeto, pois ´e poss´ıvel com este mecanismo obter informa¸c˜oes sobre o estado interno deste e atuar sobre as v´arias juntas m´oveis do objeto.
Os plugins de sistema fornecem ao utilizador controlo sobre o processo de inicializa¸c˜ao do pr´oprio Gazebo. Um exemplo da utiliza¸c˜ao deste tipo de plugins ´e a grava¸c˜ao de imagens em disco produzidas dentro do ambiente de simula¸c˜ao.
Os plugins da parte visual encontram-se ligadas a um modelo em espec´ıfico, e permitem alterar o material de um dos corpos que constituem esse modelo.
Os plugins da interface gr´afica permitem ao utilizador criar interfaces personaliz´aveis dentro do pr´oprio Gazebo.
3.3.5 Arquitetura
Este simulador encontra-se dividido em duas partes: o servidor e o cliente. Cada uma destas partes executa tarefas distintas (ver Figura 3.3), podendo-se executar apenas o servidor independentemente do cliente, embora o contr´ario n˜ao seja verdade. O simulador Gazebo e esta divis˜ao de componentes permitem a execu¸c˜ao das diferentes partes deste simulador em sistemas operativos distintos.
Plugins e comunicação entre processos Geração de dados dos sensores Ciclo de execução Atualização da física Geração da interface gráfica do mundo Manipulação de modelos
Figura 3.3: Arquitetura geral do gazebo, adaptado de [17]
O servidor encarrega-se de ler de um ficheiro espec´ıfico onde se encontra a descri¸c˜ao do mundo para gerar o mundo, dispondo os objetos neste de seguida. Encontra-se tamb´em encarregue de executar o ciclo de atualiza¸c˜ao respons´avel pelo comportamento f´ısico dos modelos no mundo, pelas colis˜oes e pela informa¸c˜ao obtida pelos sensores.
A parte do cliente executa uma interface gr´afica baseada em QT, que fornece ao utilizador uma visualiza¸c˜ao do mundo e dos objetos contidos neste, que podem ser facilmente apagados se assim se desejar. ´E poss´ıvel tamb´em a execu¸c˜ao de v´arias tarefas de manipula¸c˜ao sobre os v´arios modelos, incluindo luzes, como por exemplo mover e rodar. Para al´em destas opera¸c˜oes, o utilizador pode inserir objetos criados por si ou descarregados dos reposit´orios da OSRF. Existem tamb´em outros tipos de clientes, como por exemplo uma interface web ou um cliente feito para um determinado prop´osito. Estes clientes com um objetivo espec´ıfico podem desempenhar tarefas como enviar uma mensagem com a finalidade de despoletar uma determinada a¸c˜ao dentro do simulador.
A API do Gazebo permite tamb´em efetuar a comunica¸c˜ao entre os diversos elementos presentes no mundo, usando Google Protocol Buffers como mecanismos de serializa¸c˜ao de mensagens e a biblioteca Boost.Asio como mecanismo de transporte. Estes componentes servem como base a uma paradigma de comunica¸c˜ao publicador/subscritor. A possibilidade de escrever plugins associado ao mecanismo de comunica¸c˜ao entre processos permite despoletar a¸c˜oes no mundo em determinados instantes, obter informa¸c˜oes sobre este e sobre os modelos existentes neste.
3.4
Linguagens de modela¸
c˜
ao
Modelos s˜ao entidades virtuais que representam as caracter´ısticas do objeto f´ısico que se pretende simular. A posi¸c˜ao e orienta¸c˜ao no espa¸co, a massa e momentos de in´ercia, a forma, os graus de liberdade relativos das v´arias pe¸cas s˜ao exemplos de caracter´ısticas do objeto que o modelo virtual pode representar. No campo da rob´otica, normalmente, um modelo ´e definido
Figura 3.4: Ambiente de simula¸c˜ao Gazebo com o robˆo PR2 e diversos elementos
por um conjunto de corpos r´ıgidos interligados por juntas. Um modelo pode representar um simples cubo ou um robˆo complexo.
As linguagens de modela¸c˜ao permitem a defini¸c˜ao de um modelo atrav´es de um ficheiro onde se descrevem das carater´ısticas adequadas `a simula¸c˜ao do objeto real. O ambiente de simula¸c˜ao Gazebo aceita modelos descritos em duas linguagens, SDF e URDF. O SDF ´e a linguagem criada originalmente para descrever os modelos do Gazebo, mas devido `a forte interliga¸c˜ao entre este simulador e ROS, tamb´em ´e poss´ıvel efetuar a descri¸c˜ao destes utilizando a linguagem URDF.
3.4.1 SDF
SDF ´e um dialeto XML que permite a descri¸c˜ao de objetos, est´aticos e dinˆamicos, e de ambientes para simula¸c˜ao de robˆos. Atualmente encontra-se na vers˜ao 1.6, mas no contexto desta disserta¸c˜ao trabalhou-se com a vers˜ao 1.4, uma vez que ´e a vers˜ao compat´ıvel com a vers˜ao de Gazebo utilizada.
Como referido atr´as, um modelo caracteriza um objeto e ´e composto por um conjunto de um ou mais corpos r´ıgidos, interligados por juntas. Al´em disso, cont´em ainda um conjunto de plugins e as propriedades do objeto que representa. Por sua vez, cada corpo r´ıgido, link na terminologia usada no SDF, ´e composto por um conjunto de elementos, dos quais se podem destacar a representa¸c˜ao visual, o modelo de colis˜oes e o modelo inercial. A separa¸c˜ao entre a representa¸c˜ao visual e o modelo de colis˜oes permite criar simula¸c˜oes mais eficientes. O rendering gr´afico pode ser feito no GPU, o que permite usar modelos visuais realistas. Por outro lado, as colis˜oes s˜ao tratadas normalmente no CPU, podendo-se usar modelos mais simples. Por exemplo, uma roda de um robˆo pode ser representada por um simples cilindro, em termos de colis˜oes, e por uma estrutura gr´afica mais complexa, em termos de representa¸c˜ao visual.