Planeamento de uma trajet´oria ´e o processo de encontrar um caminho que ligue uma posi¸c˜ao inicial e uma posi¸c˜ao final. Este processo utiliza as duas posi¸c˜oes, um mapa e uma fun¸c˜ao de custo, e tenta com estes dados encontrar o caminho de custo m´ınimo. O planeador implementado pelo pacote ROS move base j´a e capaz de calcular planos cuja trajet´oria pode ser executada por robˆos com um sistema de dire¸c˜ao holon´omico, ou seja, robˆos que podem rodar sobre si pr´oprios e mover-se em qualquer dire¸c˜ao.
Um ve´ıculo com dire¸c˜ao Ackermann n˜ao ´e capaz de executar os planos criados para robˆos holon´omicos. Por causa desta limita¸c˜ao, em termos de planeamento no desafio urbano da DARPA, o robˆo Junior da universidade de Stanford, que utiliza tamb´em o sistema de direc¸c˜ao Ackermann, utilizou um planeador secund´ario em situa¸c˜oes locais. Este planeador ´e uma varia¸c˜ao do algoritmo A*, denominado hybrid A* [16]. Este planeador representava o estado do ve´ıculo em 4 dimens˜oes numa grelha discreta. Duas dessas dimens˜oes representam as coordenas x e y do centro do ve´ıculo. A terceira representa a orienta¸c˜ao e a quarta a dire¸c˜ao do movimento (para a frente ou para tr´as).
O principal problema com o algoritmo A* padr˜ao diz respeito ao plano produzido por este algoritmo. Este plano n˜ao pode ser executado pelo ve´ıculo, pois os estados do plano gerado por este algoritmo s˜ao discretos enquanto que o mundo ´e cont´ınuo. Assim, para remediar o problema o hybrid A* atribu´ı a cada c´elula do A* padr˜ao coordenadas cont´ınuas do ve´ıculo. Uma compara¸c˜ao gr´afica entre os planos produzidos por estes dois algoritmos pode ser encontrada na Figura 4.3. Estas coordenadas tem em considera¸c˜ao as caracter´ısticas do robˆo, ou seja, tem em conta o tipo de locomo¸c˜ao do ve´ıculo. Embora este algoritmo produza caminhos pass´ıveis de serem executados, n˜ao ´e completo, o que significa que pode falhar a encontrar um caminho mesmo que este exista. Quanto maior for a discretiza¸c˜ao maior ´e a probabilidade deste algoritmo n˜ao encontrar nenhum caminho.
A fun¸c˜ao de custo do A* padr˜ao segue a ideia de tempo de execu¸c˜ao. A implementa¸c˜ao da equipa de Stanford atribui um custo ligeiramente maior `a condu¸c˜ao em marcha atr´as para fazer com que o veiculo conduza seguindo em frente. A dire¸c˜ao induz um custo adicional a ter em conta pelo tempo que se gasta a efetuar a manobra. Em ´ultimo lugar adiciona-se tamb´em um pseudo custo que est´a relacionado com a distˆancia a obt´aculos pr´oximos.
O algoritmo de procura ´e guiado por duas heur´ısticas, chamadas non-holonomic-without- obstacles e holonomic-with-obstacles. A primeira heur´ıstica tem em considera¸c˜ao a natureza n˜ao holon´omica do carro sendo que ajuda o ve´ıculo a seguir para o destino com a orienta¸c˜ao desejada. A segunda ignora as restri¸c˜oes n˜ao holon´omicas mas calcula a distˆancia m´ınima para as coordenadas destino. Combinando as duas heur´ısticas, o plano resultante torna- se mais eficiente em certas situa¸c˜oes, como onde existem s´ıtios onde a estrada acaba numa extremidade. Como passo de p´os-processamento o caminho resultante do algoritmo Hybrid
Figura 4.3: Compara¸c˜ao gr´afica dos algoritmos de pesquisa de [16]. Esquerda: A* padr˜ao. Direita: Hybrid A*
Cap´ıtulo 5
Ambiente de simula¸c˜ao para o
projeto ROTA
Neste cap´ıtulo apresenta-se o trabalho realizado e os resultados obtidos no desenvolvimento de um ambiente de simula¸c˜ao para o projeto ROTA. Tal como justificado no cap´ıtulo 3, o Gazebo, na sua vers˜ao 2.2.3, foi o ambiente de desenvolvimento escolhido para o fazer.
O sistema pretendido ´e constitu´ıdo pelo ve´ıculo ROTA, pelas pistas onde o ve´ıculo vai navegar e por todos os elementos que possam existir nos ambientes onde se inserem essas pistas. Tendo presente a prova de condu¸c˜ao aut´onoma, descrita no cap´ıtulo 2, esses elementos incluem os pain´eis sinal´eticos, os sinais verticais, os obst´aculos e os cones da zona de obras. A implementa¸c˜ao do ambiente de simula¸c˜ao obrigou `a cria¸c˜ao e integra¸c˜ao de v´arios plugins, de modo a permitir a implementa¸c˜ao da funcionalidade desejada para o ve´ıculo e para a intera¸c˜ao desejada com o ambiente de navega¸c˜ao. Recorreu-se a programas externos para modelar corretamente parte dos elementos presentes nesse ambiente e na obten¸c˜ao de valores relativos a propriedades f´ısicas.
5.1
Modela¸c˜ao do ve´ıculo
O modelo do ve´ıculo ´e, de entre os modelos desenvolvidos, aquele que cont´em uma maior variedade de elementos. ´E constitu´ıdo por 4 componentes principais: o chassis, o sistema de locomo¸c˜ao, o sistema laser e o sistema de vis˜ao. Cada um destes componentes foi modelado em termos de representa¸c˜ao visual, colis˜oes e in´ercia.
Os diversos componentes do ve´ıculo s˜ao ligados entre si atrav´es de juntas.
S˜ao tamb´em usados m´odulos de sensores aos quais s˜ao acoplados plugins de modo a que a informa¸c˜ao produzida pelos sensores seja disponibilizada em t´opicos ROS espec´ıficos.
Estes links s˜ao interligados por v´arias juntas que permitem modelar a liga¸c˜ao da base do robˆo `as rodas e o suporte da cˆamara `a kinect e respetivos servos.
Figura 5.1: Modelo do robˆo
5.1.1 Modela¸c˜ao do chassis
O chassis do ve´ıculo ´e constitu´ıda por duas placas e o suporte do sistema de vis˜ao. Todos estes elementos foram modelados por paralelep´ıpedos retangulares de dimens˜oes vari´aveis encostadas uns aos outros, tanto na representa¸c˜ao visual como na representa¸c˜ao f´ısica em termos de colis˜oes.
O c´alculo das propriedades inerciais do chassis a partir dos v´arios paralelep´ıpedos ´e uma tarefa complexa.
De forma a se poder abstrair toda essa complexidade, o centro de massa e a matriz de in´ercia determinaram-se aproximadamente, utilizando-se um programa externo que calcula estes valores a partir de uma mesh representativa do corpo r´ıgido, onde se assume que todo esse corpo ´e homog´eneo, ou seja, possui uma densidade uniforme.
A mesh usada para esse fim est´a representada na figura 5.2.
5.1.2 Modela¸c˜ao do sistema de locomo¸c˜ao
O sistema de locomo¸c˜ao ´e constitu´ıdo por uma roda motriz, na parte de tr´as do ve´ıculo, e por duas rodas diretoras, `a frente.
Do ponto de vista visual, as rodas s˜ao representadas por meshes.
De forma a reduzir o custo de processamento, para o modelo de colis˜oes, as rodas s˜ao representadas por cilindros.
Visto que as rodas podem ser representadas aproximadamente por cilindros, o c´alculo das propriedades inerciais de cada uma ´e trivial.
A liga¸c˜ao da roda traseira ao chassis ´e feita atrav´es de uma junta de revolu¸c˜ao, que permite a essa roda rodar em torno de um s´o eixo de forma cont´ınua, de forma a que essa roda seja capaz de imprimir movimento ao robˆo devido ao atrito gerado entre ela e a superf´ıcie da estrada.
As duas rodas dianteiras interligam-se tamb´em ao chassis, mas tˆem de ser capazes de rodar em tornos de dois eixos, devido a terem de acompanhar o movimento da roda traseira, enquanto for¸cam a dire¸c˜ao seguida pelo robˆo.
Figura 5.2: mesh do link base
5.1.3 Modela¸c˜ao do sistema laser
O sistema laser ´e constitu´ıdo por um placa que suporta um LRF Hokuyo.
Do ponto de vista visual, o LRF ´e representado por uma mesh, enquanto que o seu suporte ´e modelado por um paralelep´ıpedo retangular.
Do ponto de vista das colis˜oes, usa-se um cilindro para o LRF e usa-se o mesmo parale- lep´ıpedo da representa¸c˜ao visual para o suporte.
Para manter este sistema acoplado ao chassis do robˆo ´e usado um junta sem qualquer grau de liberdade. Em termos de juntas, o Gazebo 2.2.3 possui a limita¸c˜ao de n˜ao possuir nenhum tipo de junta sem qualquer grau de liberdade. Esta limita¸c˜ao foi contornada aplicando restri¸c˜oes no ˆangulo m´aximo e m´ınimo de uma junta com um grau de liberdade.
5.1.4 Modela¸c˜ao do sistema de vis˜ao
O sistema de vis˜ao ´e constitu´ıdo por uma Kinect montada num sistema com dois servo- motores, que implementam um sistema de pan e tilt.
Do ponto de vista visual, a Kinect e os servos-motores s˜ao representados por meshes. Do ponto de vista das colis˜oes, usam-se paralelep´ıpedos para representar quer a Kinect, quer os servo-motores.
Para simular o sistema de pan&tilt s˜ao usadas duas juntas do tipo revolute, uma para o movimento de pan e outra para o tilt. A junta que confere o pan encontra-se entre os dois servos, enquanto que a junta que permite o tilt est´a entre o servo mais pr´oximo da cˆamara e a pr´opria Kinect.
Na junta que interliga os servos `a cˆamara Kinect foi tamb´em necess´ario modelar a propri- edade f´ısica referente ao coeficiente de amortecimento, que determina a quantidade de for¸ca oposta ao movimento da junta. Este coeficiente, juntamente com o parˆametro que define a for¸ca m´axima que se pode aplicar `a junta s˜ao fundamentais para que o movimento da cˆamara n˜ao se repercuta nas restantes partes do modelo do robˆo, podendo levar a instabilidade f´ısica por parte deste.