Universidade de Aveiro Departamento deElectr´onica, Telecomunica¸c˜oes e Inform´atica 2013
Paulo Alexandre
da Silva Soares
Universidade de Aveiro Departamento deElectr´onica, Telecomunica¸c˜oes e Inform´atica 2013
Paulo Alexandre
da Silva Soares
Gera¸
c˜
ao de trajet´
oria nos robˆ
os CAMBADA
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 do Doutor Pedro Nicolau Faria da Fonseca (orientador), Professor Auxiliar do Depar-tamento de Eletr´onica Telecomunica¸c˜oes e Inform´atica da Universidade de Aveiro e do Doutor Ant´onio Jos´e Ribeiro Neves (coorientador), Professor Auxiliar do Departamento de Eletr´onica Telecomunica¸c˜oes e Inform´atica da Universidade de Aveiro.
o j´uri / the jury
presidente / president Prof. Doutor Luis Filipe de Seabra Lopes
Professor Associado da Universidade de Aveiro
vogais / examiners committee Prof. Doutor Paulo Jos´e Cerqueira Gomes da Costa
Professor Auxiliar da Universidade de Porto
Prof. Doutor Pedro Nicolau Faria da Fonseca
agradecimentos Gostaria de agradecer a todos os que me acolheram o longo do meu percurso acad´emico nesta excelente institui¸c˜ao. Em especial ao grupo do projeto CAMBADA que me recebeu como filho da casa durante este ´ultimo ano. Quero tamb´em agradecer ao meu orientador Pedro Fonseca e coorientador Ant´onio Neves pela paciˆencia que tiveram para com a minha pessoa ao longo deste ano. Agrade¸co tamb´em aos meus amigos e fam´ılia que sempre estiveram ao meu lado a dar-me for¸ca nos momentos mais dif´ıceis. Por ´
ultimo agrade¸co aos meus pais por todo o sacrif´ıcio que fizeram para eu atingir este objetivo.. . .
Resumo A rob´otica ´e uma ´area de estudo em grande expans˜ao hoje em dia. Nesta disserta¸c˜ao ´e abordado um problema relativo a rob´otica m´ovel, mais con-cretamente a gera¸c˜ao de trajet´orias para os robˆos da equipa CAMBADA. Os robˆos da equipa CAMBADA s˜ao robˆos de futebol rob´otico com a ca-pacidade de efetuar movimentos holon´omicos. Isto da-lhes a capacidade de se movimentarem em qualquer dire¸c˜ao independentemente da sua ori-enta¸c˜ao.Os movimentos dos robˆos s˜ao conseguidos atualmente atrav´es da aplica¸c˜ao de controladores PID baseados na distˆancia a que um robˆo est´a do destino. Esta solu¸c˜ao, apesar de eficaz, n˜ao permite ter controlo sobre a velocidade a que o robˆo se desloca ou da velocidade a que este atinge o destino. Nesta disserta¸c˜ao ser˜ao abordados estes problemas de controlo com a implementa¸c˜ao de duas solu¸c˜oes. Uma ser´a a implementa¸c˜ao de um gerador de trajet´orias que, previamente, calcular´a todos os pontos da trajet´oria do robˆo, seguindo um determinado perfil de velocidade. Adicio-nalmente ser´a implementado um planeador de trajet´orias que servir´a para desviar o robˆo de obst´aculos que lhe possam surgir no caminho do robˆo.
Abstract Robotics is a booming field of study nowadays. This dissertation addresses a problem related with mobile robotics, namely the trajectory generation for the robots of the CAMBADA project. The Team CAMBADA is a robotic soccer team with the ability to perform holonomic movements. This gives them the ability to move in any direction regardless of their orientation. The movements of the robots are currently achieved through the application of PID controllers based on the distance that a robot is from the destination. Although this solution is effective it does not allow the control of the speed which the robot moves, as well as, the speed which it reaches the desti-nation. These control problems will be addressed in this dissertation with the implementation of two solutions. One will be the implementation of a trajectory generator, which previously calculates all points of the trajectory of the robot, following a given velocity profile. The other one will be the implementation of a trajectory planner, with the aim to deflect the robot from obstacles that might appear in the path of the robot.
Conte´
udo
Conte´udo i
Lista de Figuras iii
1 Introdu¸c˜ao 1
1.1 Robˆo CAMBADA . . . 1
1.2 Objetivos . . . 3
1.3 Estrutura da tese . . . 3
2 Projecto CAMBADA 5 2.1 Plataforma CAMBADA – Hardware . . . 5
2.1.1 Base do robot . . . 6
2.1.2 Movimento do Robˆo . . . 6
2.1.3 Grabber . . . 7
2.1.4 Kicker . . . 9
2.2 Plataforma CAMBADA – Software . . . 9
2.2.1 Base Dados em Tempo Real (RTDB) . . . 9
2.2.2 Comunica¸c˜ao (comm) . . . 10
2.2.3 Comunica¸c˜oes com o Hardware (HWcomm) . . . 10
2.2.4 Vis˜ao . . . 11 2.2.5 Agente . . . 11 Loop . . . 13 Integrator . . . 13 Strategy . . . 13 Roles e Behaviours . . . 13
3 Movimento e Gera¸c˜ao de Trajet´orias no CAMBADA 15 3.1 Rodas Omni . . . 15
3.2 Movimento Holon´omico . . . 16
3.2.1 Rampas de acelera¸c˜ao e desacelera¸c˜ao . . . 17
3.3 Movimento antigo dos CAMBADA . . . 17
3.4 Gerador de trajet´orias . . . 18
3.4.1 Proposta . . . 18
3.4.2 Problema . . . 18
3.4.3 Calculo da trajet´oria . . . 18
3.4.4 Heur´ıstica do GT . . . 20
3.4.5 Movimentos em curva usando o GT . . . 23
4 Implementa¸c˜ao de um modelo de GT no CAMBADA 27 4.1 Implementa¸c˜ao do GT . . . 27
4.2 Estudo do funcionamento do GT . . . 28
4.3 Planeador de trajet´orias . . . 32
4.3.1 Planeador de desvio de obstaculos . . . 32
4.3.2 Desvio de obst´aculos . . . 32
4.3.3 Mapa de ocupa¸c˜ao . . . 33
Implementa¸c˜ao . . . 33
4.3.4 Preenchimento dos obst´aculos . . . 33
Implementa¸c˜ao . . . 34
A* . . . 34
Calculo do melhor caminho . . . 35
4.3.5 Indicar os pontos do plano ao GT . . . 35
5 Resultados Experimentais 37 5.1 Testes de posi¸c˜ao . . . 37
5.1.1 Testes repetitivos . . . 37
6 Conclus˜ao e trabalho futuro 45 6.1 Trabalho futuro . . . 45
Lista de Figuras
1.1 Imagens de alguns robˆos usados e desenvolvidos na UA. Em a) uma imagem do robˆo NAO desenvolvido pela empresa ADEBARAN e usado na UA para futebol rob´otico. Em b) uma imagem do robˆo CAMBADA@HOME desenvolvido na UA com o objetivo de ser um robˆo de servi¸co para apoio a pessoas. Em c) podemos ver um robˆo CAMBADA que ser´a objeto de estudo nesta disserta¸c˜ao. 2 1.2 Duas vers˜oes dos robˆos do projeto CAMBADA. Em a) a vers˜ao utilizada entre
2009 e 2012 e em b) a vers˜ao atual do robˆo, j´a utilizada nas competi¸c˜oes de 2013. 2 2.1 Momento de um jogo da MSL entre a equipa CAMBADA e a equipa 5DPO da
universidade do Porto. . . 6
2.2 Bases dos novos robˆos CAMBADA. . . 6
2.3 Base do Robˆo em detalhe . . . 7
2.4 Coloca¸c˜ao dos motores e rodas nos Robˆos CAMBADA de modo a obter movi-mento omni-direcional. . . 7
2.5 Grabber antigo dos robˆos CAMBADA. . . 8
2.6 Novo Grabber dos robˆos CAMBADA. . . 8
2.7 Kicker dos novos robˆos CAMBADA. . . 9
2.8 Arquitetura geral do software do projeto CAMBADA. . . 10
2.9 Processo comm utilizado para a partilha de informa¸c˜ao entre os agentes CAM-BADA. . . 11
2.10 Processo Hwcomm respons´avel pela comunica¸c˜ao com o Hardware. . . 11
2.11 Imagem obtida pela cˆamara omnidirecional do robˆo CAMBADA e respetivas imagens depois de processadas. Em a) encontramos a imagem real obtida pelo robˆo, em b) a mesma imagem depois da segmenta¸c˜ao de cor e em c) a posi¸c˜ao dos objetos de interesse detetados na imagem. . . 12
2.12 Estrutura do processo do Agente. . . 12
2.13 Exemplo de uma forma¸c˜ao dos robˆos CAMBADA. . . 13
3.1 Exemplo de uma roda Omni . . . 15
3.2 Coloca¸c˜ao das rodas na base do robˆo CAMBADA. . . 16
3.3 Exemplos de movimentos obtidos de acordo com as velocidades aplicadas aos motores. Em a) verificamos a rota¸c˜ao sobre o centro do robot, em b) o movi-mento em frente e em c) movimovi-mento lateral do robˆo ([1]). . . 16
3.4 Modelo do movimento dos robˆos CAMBADA. . . 18
3.5 Gr´afico de velocidade do movimento trapezoidal . . . 19
3.7 Grafico dos vetores de velocidade vi e vf. . . 20
3.8 Calculo Valor k . . . 22
3.9 Fase interm´edia do calculo de vp . . . 22
3.10 Degenera¸c˜ao do Movimento . . . 23
3.11 Gr´afico final do GT para os pontos pi,pa,pw e pf . . . 25
3.12 Gr´afico final dos pontos calculados pelo GT . . . 25
3.13 Exemplo da divis˜ao de uma trajet´oria curva em segmentos de reta. . . 26
4.1 Arquitetura antiga do software do Agente . . . 27
4.2 Nova arquitetura do Agente . . . 28
4.3 Compara¸c˜ao da posi¸c˜ao do robˆo estimada e a posi¸c˜ao calculada pelo GT. . . 29
4.4 Teste repetitivo elaborado para testar a convergˆencia do GT. . . 29
4.5 Movimento imposs´ıvel para o GT pois o vetor de velocidade no destino encontra-se na dire¸c˜ao oposta ao movimento. . . 30
4.6 Poss´ıvel solu¸c˜ao para resolver a incompatibilidade do movimento da Figura 4.5. 31 4.7 C´alculo do centro de um c´ırculo a partir de 3 pontos. . . 31
4.8 Modelo da fase final do agente incluindo o GT e o planeador . . . 32
4.9 Exemplo da divis˜ao do campo em c´elulas com uma resolu¸c˜ao de 8 por 8 c´elulas 33 4.10 Exemplo de preenchimento do mapa de ocupa¸c˜ao num determinado ciclo. As bolas representam posi¸c˜oes reais dos robˆos. As cores vermelho, laranja e verde representam c´elulas ocupadas, c´elulas de poss´ıvel ocupa¸c˜ao no futuro e c´elulas livres, respetivamente. . . 34
4.11 Poss´ıvel solu¸c˜ao obtida pelo A*. . . 36
5.1 Compara¸c˜ao da posi¸c˜ao do robˆo estimada e a posi¸c˜ao calculada pelo GT. . . 38
5.2 Gr´afico de posi¸c˜ao para trajet´oria repetitiva. . . 38
5.3 Detalhe da Figura 5.2 nos pontos problem´aticos do GT. . . 39
5.4 Leitura da velocidade por parte do GT referente ao gr´afico apresentado na Figura 5.2 . . . 40
5.5 Exemplo de teste efetuado ao GT com a trajet´oria repetitiva, depois de efetuar alguns melhoramentos na leitura da velocidade. . . 41
5.6 Exemplo de teste efetuado ao GT com a trajet´oria repetitiva, depois de efetuar alguns melhoramentos na leitura da velocidade, aproximada num dos pontos de Pa. . . 41
5.7 Exemplo de teste efetuado ao GT com a trajet´oria repetitiva, depois de efetuar alguns melhoramentos na leitura da velocidade e constru¸c˜ao de trajet´oria. . . 42
5.8 Detalhe da figura 5.7 nos pontos problem´aticos do GT. . . 42
5.9 Leitura da velocidade por parte do GT referente ao gr´afico apresentado na Figura 5.7. . . 43
5.10 Exemplo da repeti¸c˜ao da trajet´oria m´ultiplas vezes. . . 43
5.11 Exemplo do GT para acelera¸c˜oes e velocidades patamar mais elevadas. . . 44
Cap´ıtulo 1
Introdu¸
c˜
ao
A rob´otica ´e uma ´area que se encontra em grande expans˜ao. Depois de grandes desenvol-vimentos na ´area da rob´otica industrial, as aten¸c˜oes centram-se agora na rob´otica m´ovel e na ´
area da inteligˆencia artificial. Em qualquer uma destas ´areas de estudo encontram-se barreiras tecnol´ogicas por resolver. Esta disserta¸c˜ao aborda problemas ligados `a rob´otica m´ovel. Esta ´
area tem como base de estudo a inclus˜ao de robˆos no ambiente dos humanos e a forma como estes se deslocam.
Na Universidade de Aveiro, nomeadamente no Departamento de Engenharia Eletr´onica e Inform´atica (DETI) e no Instituto de Engenharia Eletr´onica e telem´atica de Aveiro (IEETA) est˜ao a decorrer diversos projetos em rob´otica m´ovel. Entre estes projetos est˜ao o CAMBADA, CAMBADA@HOME e o CAMBADA@SPL. Algumas imagens dos robˆos desenvolvidos na UA est˜ao apresentadas na Figura 1.1.
Estes projetos focam diversas aplica¸c˜oes, desde a rob´otica multi-agente, rob´otica de servi¸co, at´e aos robˆos humanoides. Em termos tecnol´ogicos s˜ao tamb´em todos eles diferentes, sendo que, devido `a natureza do ambiente ou dos objetivos do projeto em quest˜ao, estes podem usar rodas para se deslocarem, como no caso do CAMBADA e CAMBADA@HOME, ou ent˜ao usar um movimento antropom´orfico no caso dos robˆos do projeto CAMBADA@SPL.
Esta disserta¸c˜ao foca o problema do movimento dos robˆos CAMBADA. Dado que estes robˆos se deslocam a uma velocidade consider´avel e necessitam de fazer movimentos bruscos dada a aplica¸c˜ao onde s˜ao usados (futebol), s˜ao necess´arios algoritmos de controlo eficientes. Este documento prop˜oe um conjunto de algoritmos que se destinam `a gera¸c˜ao de trajet´orias de forma a determinar o movimento dos robˆos.
1.1
Robˆ
o CAMBADA
O robˆo CAMBADA (Figura 1.2) ´e um robˆo criado na UA, que participa na Liga de robˆos m´edios de futebol rob´otico do Robocup. Este robˆo tem capacidade de chutar, passar e de se deslocar livremente num meio semelhante a um campo de futebol. Com a an´alise do meio ´e capaz de tomar decis˜oes e de atuar cooperativamente para atingir o objetivo final, marcar golos.
O movimento dos robˆos CAMBADA, apesar de todos os avan¸cos feitos no projeto, continua a ser uma das ´areas a necessitar de melhoramentos. Hoje em dia, estes conseguem deslocar-se rapidamente no campo (atingindo velocidades de 3 m/s) e com grande precis˜ao de uma posi¸c˜ao A para uma posi¸c˜ao B. Ao contr´ario do que o movimento aparenta, existe pouco
a) b) c)
Figura 1.1: Imagens de alguns robˆos usados e desenvolvidos na UA. Em a) uma imagem do robˆo NAO desenvolvido pela empresa ADEBARAN e usado na UA para futebol rob´otico. Em b) uma imagem do robˆo CAMBADA@HOME desenvolvido na UA com o objetivo de ser um robˆo de servi¸co para apoio a pessoas. Em c) podemos ver um robˆo CAMBADA que ser´a objeto de estudo nesta disserta¸c˜ao.
a) b)
Figura 1.2: Duas vers˜oes dos robˆos do projeto CAMBADA. Em a) a vers˜ao utilizada entre 2009 e 2012 e em b) a vers˜ao atual do robˆo, j´a utilizada nas competi¸c˜oes de 2013.
controlo em movimentos com uma trajet´oria curva e n˜ao ´e poss´ıvel especificar a velocidade de chegada ao destino. Por outro lado, tamb´em n˜ao existe nenhum controlo sobre que pontos do
campo ser˜ao utilizados na desloca¸c˜ao entre dois pontos. Isto acontece pois, na vers˜ao atual do projeto, n˜ao existe nenhum planeamento de caminho, nem planeamento de trajet´oria entre dois pontos. O movimento atual consiste apenas na defini¸c˜ao de um ponto destino ao qual ´e aplicado uma fun¸c˜ao para convers˜ao de distˆancia para velocidade. Para evitar a existˆencia de movimentos violentos, a potˆencia a aplicar aos motores no in´ıcio e final do movimento ´e controlada por rampas de acelera¸c˜ao, que aumentam ou diminuem a potˆencia a aplicar progressivamente ao longo do tempo.
1.2
Objetivos
Com o evoluir do projeto CAMBADA a exigˆencia dos movimentos torna-se maior. Esta exigˆencia faz com que surja a necessidade de se obter um maior controlo da velocidade do robˆo. Movimentos como rematar enquanto o robˆo se desloca, mudan¸cas r´apidas de dire¸c˜ao e de velocidade e defini¸c˜ao de movimentos curvil´ıneos exigem a necessidade da gera¸c˜ao de uma trajet´oria pr´evia. Para al´em da gera¸c˜ao de trajet´orias (GT ) existe a necessidade de desviar os robˆos de obst´aculos que aparecem pelo caminho (equipa advers´aria e membros da mesma equipa), sem que o mesmo necessite de efetuar movimentos violentos, ou seja, combinar o maior controlo entre a trajet´oria com a defini¸c˜ao previa de um caminho calculado.
Esta disserta¸c˜ao prop˜oe duas implementa¸c˜oes para colmatar as limita¸c˜oes acima apresen-tadas. Uma ser´a a implementa¸c˜ao de um GT ( entre dois pontos e outra ser´a a implementa¸c˜ao de um planeador de trajet´orias, com capacidade de desviar o robˆo de obst´aculos que possi-velmente obstruam o caminho do mesmo para o destino. Com estas duas implementa¸c˜oes espera-se obter um maior controlo sobre os movimentos do robˆo.
1.3
Estrutura da tese
Esta disserta¸c˜ao tem a seguinte estrutura. No Cap´ıtulo 2 apresenta-se o projeto CAM-BADA e identifica-se os pontos chave tanto do software como do hardware. No Cap´ıtulo 3 aborda-se a solu¸c˜ao existente para o movimento dos robˆos e introduz-se o conceito de GT para resolver as falhas do mesmo. O Cap´ıtulo 4 apresentar´a o trabalho desenvolvido ao longo desta disserta¸c˜ao, desde a implementa¸c˜ao e corre¸c˜ao de algumas falhas do algoritmo de gera¸c˜ao de trajet´orias como a necessidade de implementa¸c˜ao de um planeador de trajet´orias. No Cap´ıtulo 5 ´e feita uma analise dos resultados obtidos com a solu¸c˜ao GT. Para finalizar, no Cap´ıtulo 6 apresentam-se conclus˜oes sobre o trabalho desenvolvido e eventuais melhorias para o futuro.
Cap´ıtulo 2
Projecto CAMBADA
O projeto CAMBADA da Universidade de Aveiro (UA) ´e uma equipa de futebol rob´otico da chamada Middle Size League (MSL) ou Liga de Tamanho M´edio do RoboCup, que deu os seus primeiros passos em Outubro de 2003. Este surgiu como um projeto financiado pela Funda¸c˜ao para a Ciˆencia e a Tecnologia (FCT) e tinha como objetivo fazer investiga¸c˜ao na ´
area da rob´otica multi-agente [2]. Ao longo dos anos, este projeto arrecadou v´arios pr´emios a n´ıvel nacional e internacional, sendo de destacar o primeiro lugar no campeonato do mundo conquistado em 2008 em Suzhou China e os primeiros lugares alcan¸cados de 2007 at´e 2012 no Festival Nacional de Rob´otica. Al´em dos resultados obtidos em competi¸c˜ao este projeto tem sido fonte de in´umeras publica¸c˜oes cient´ıficas e uma excelente plataforma de ensino para os alunos do DETI.
A liga em que competem estes robˆos ´e a MSL (Figura 2.1). Esta imp˜oe as seguintes regras para o design dos robˆo:
• At´e 5 robˆos por equipa.
• M´axima Largura, Altura, Peso: 50cm, 80cm, 40 kg.
• Totalmente aut´onomos: comunica¸c˜ao entre robˆos e poss´ıvel atrav´es da rede sem fios da organiza¸c˜ao, sendo que n˜ao e permitido enviar informa¸c˜ao para os robˆos externamente. • Campo de jogo: 18 x 12 metros.
• Jogo: 2 partes de 15 min cada.
• Cores: verde para o campo, branco para as linhas do campo e preto para o robˆos.
2.1
Plataforma CAMBADA – Hardware
A plataforma CAMBADA foi atualizada no ano de 2013 com a constru¸c˜ao de 6 novos robˆos (Figura 2.2). Estes foram constru´ıdos completamente de raiz, aproveitando apenas os motores, controladores de baterias e espelhos dos anteriores robˆos. Apesar desta plataforma ser completamente nova, usa um conceito muito simples de constru¸c˜ao que j´a se verificava na anterior, o conceito de constru¸c˜ao modular. Este tipo de constru¸c˜ao permite um melhor acesso aos componentes de hardware em caso de necessidade de repara¸c˜ao ou substitui¸c˜ao.
Figura 2.1: Momento de um jogo da MSL entre a equipa CAMBADA e a equipa 5DPO da universidade do Porto.
Figura 2.2: Bases dos novos robˆos CAMBADA.
2.1.1 Base do robot
O novo robˆo ´e constru´ıdo com uma base triangular (Figura 2.3), ao contr´ario do anterior que tinha uma base redonda. Isto deve-se ao facto de a equipa querer aproveitar a superf´ıcie lateral plana para desviar a bola. Isto torna-se vantajoso pois abre um novo leque de op¸c˜oes para jogadas, sem que os robˆo tenham de estar em controlo da bola para a desviar para um lugar pretendido. O facto de os robˆos poderem disputar a bola com o corpo torna-os mais r´apidos, n˜ao tendo de estar constantemente a tentar “agarrar a bola” para a jogar, processo que necessita que o robˆo execute rota¸c˜oes sobre ele pr´oprio ou sobre a bola.
2.1.2 Movimento do Robˆo
O movimento do robˆo CAMBADA ´e omni-direcional, isto ´e, consegue movimentar-se em qualquer dire¸c˜ao e rodar sobre ele pr´oprio. Este tipo de movimento ´e perfeito para
Figura 2.3: Base do Robˆo em detalhe
objetivo do projeto, pois como estes robˆo tˆem como objetivo jogar futebol, as posi¸c˜oes que o robˆos quer atingir em campo est˜ao em constante movimento, podendo de um momento para o outro mudar totalmente de dire¸c˜ao. Sendo assim, os robˆos necessitam de poder mudar o mais rapidamente poss´ıvel a dire¸c˜ao de movimento. Uma forma eficiente de um robˆo se movimentar entre dois pontos alterando a sua rota¸c˜ao enquanto se desloca ´e utilizando movimento holon´omico. Este tipo de movimento pode ser obtido atrav´es da coloca¸c˜ao de trˆes rodas especiais separadas por 120 graus (Figura 2.4). A constru¸c˜ao apenas com trˆes motores, apesar de ser mais lento que a coloca¸c˜ao de quatro rodas a 90 graus, tem a vantagem de n˜ao necessitar de uma superf´ıcie plana para funcionar. Para al´em disso, este tipo de constru¸c˜ao favorece a constru¸c˜ao do Grabber do robˆo que ser´a explicado mais `a frente.
Figura 2.4: Coloca¸c˜ao dos motores e rodas nos Robˆos CAMBADA de modo a obter movimento omni-direcional.
2.1.3 Grabber
O Grabber ´e o elemento f´ısico do robˆo CAMBADA que permite o controlo da bola. Este e montado na frente do robˆo e tem como objetivo ajudar a manter a bola encostada ao corpo do robˆo enquanto executa determinada tarefa. Segundo as regras, o robˆo n˜ao pode prender a bola, isto ´e, a bola tem que ser facilmente solta caso haja algum contacto com outro robˆo. Por outro lado, caso o robˆo se desloque com a bola controlada, esta tem de se encontrar em rolamento. Caso esta se desloque sem rolar ´e assinalada falta.
robˆos CAMBADA. Na vers˜ao anterior dos CAMBADA os Grabbers eram constitu´ıdos apenas por um motor com uma roda na ponta (Figura 2.5). Esta solu¸c˜ao permitia, atrav´es da fric¸c˜ao originada pela roda na bola, “segurar” a bola e efetuar movimentos muito simples para a frente com a bola controlada. Caso se tentasse efetuar um movimento mais r´apido em curva para a frente ou se tentasse efetuar um movimento para tr´as ou lateral havia um elevado risco desta se perder. Para al´em disso, a rece¸c˜ao desta era bastante complicada pois n˜ao havia forma de amortecer a bola `a chegada e de a redirecionar para a frente do robˆo. Bastava a bola vir um pouco mais r´apida e descentrada do centro e a rece¸c˜ao tornava-se imposs´ıvel. Este problema era especialmente enfatizado nas situa¸c˜oes de bola parada, em que o robˆo precisava de receber a bola e virar-se para a baliza para rematar. Na maior parte dos casos a rece¸c˜ao e a rota¸c˜ao com bola era demasiado lenta, fazendo com que as equipas adversarias conseguissem fazer oposi¸c˜ao antes do robˆo rematar.
Figura 2.5: Grabber antigo dos robˆos CAMBADA.
Na nova vers˜ao, a equipa decidiu optar por tentar resolver o problema do Grabber com uma solu¸c˜ao parecida com as de outras equipas de topo. Em vez de se usar apenas um motor com uma roda na vertical a fazer fric¸c˜ao sobre a bola, foram colocados dois motores com duas rodas omnidireccionais nas pontas praticamente perpendiculares `a bola (Figura 2.6).
Figura 2.6: Novo Grabber dos robˆos CAMBADA.
Os motores agora funcionam como pequenos bra¸cos que for¸cam as rodas contra a bola, sendo que esta for¸ca ´e controlada pela tens˜ao imposta por uma mola que segura os motores. Com esta solu¸c˜ao torna-se poss´ıvel receber bolas que n˜ao venham totalmente centradas com o Grabber e com maior velocidade, pois as molas v˜ao permitir o amortecimento da bola `a chegada. As rodas nas pontas dos motores girando para dentro for¸cam com que a bola se encaminhe para o centro do Grabber.
Esta solu¸c˜ao tem ainda muitas potencialidades para serem exploradas futuramente, como o movimento para tr´as com bola controlada e possivelmente o movimento lateral com bola.
2.1.4 Kicker
O Kicker ´e o elemento do robˆo que permite chutar a bola. A constru¸c˜ao assenta no mesmo conceito da vers˜ao anterior, uma pe¸ca de metal ´e disparada a alta velocidade e dependendo do tipo de disparo pretendido passe/remate rasteiro ou em par´abola, este embate na bola de forma diferente (Figura 2.7). Caso se queira efetuar um passe/remate em par´abola, a pe¸ca met´alica ´e disparada contra uma barra vertical com a ponta inclinada que se encontra atr´as da bola. Esta embate na bola por baixo, fazendo com que a mesma ganhe altura. No caso de um passe/remate rasteiro, um atuador puxa a barra vertical para ao lado fazendo com que a pe¸ca met´alica embata no centro da bola, levando a que esta descreva uma trajet´oria plana.
Figura 2.7: Kicker dos novos robˆos CAMBADA.
Para se obter a propuls˜ao da pe¸ca met´alica ´e utilizada uma solu¸c˜ao desenvolvida pela equipa CAMBADA, vulgarmente conhecida por Kicker Electro-magn´etico. Este consiste num solenoide electromecˆanico enrolado a volta de um centro ferromagn´etico. Isto faz com que seja criado um campo magn´etico quando ´e aplicada uma corrente el´etrica, movendo a pe¸ca met´alica em dire¸c˜ao `a bola.
2.2
Plataforma CAMBADA – Software
A constru¸c˜ao do software tomou como base os seguintes princ´ıpios: todos os robˆos tem de ser aut´onomos e tˆem de conseguir comunicar entre si, para cooperativamente atingirem os seus objetivos [3]. Olhando para a Figura 2.8 podemos observar que no centro da arquitetura do software CAMBADA encontra-se um m´odulo designado por Real time database (RTDB) e que ser´a descrito de seguida.
2.2.1 Base Dados em Tempo Real (RTDB)
Tendo em considera¸c˜ao que um dos pontos principais do projeto ´e a partilha de informa¸c˜ao sensorial entre os robˆos, houve necessidade de criar uma forma de partilhar esta informa¸c˜ao.
Figura 2.8: Arquitetura geral do software do projeto CAMBADA.
Dado o facto de os robˆos se deslocarem a relativamente grandes velocidades (3 m/s), a im-plementa¸c˜ao de uma base dados t´ıpica assente num modelo cliente-servidor n˜ao seria o mais indicado, pois a informa¸c˜ao facilmente ficaria desatualizada entre comunica¸c˜oes. Para com-bater esta degrada¸c˜ao da informa¸c˜ao foram implementadas duas funcionalidades. A primeira ´e difus˜ao da informa¸c˜ao partilhada por Broadcast e a segunda ´e a replica¸c˜ao da informa¸c˜ao partilhada nos diversos robˆos atrav´es de um modelo de memoria partilhada. Com esta imple-menta¸c˜ao os robˆos tˆem sempre acesso as vari´aveis necess´aria para o seu funcionamento, pois tem sempre a uma copia local de toda suas informa¸c˜oes e dos outros membros da equipa. Na RTDB [3, 4] est˜ao normalmente contidas informa¸c˜oes como a posi¸c˜ao absoluta de cada robˆo da equipa e posi¸c˜ao da bola. Esta solu¸c˜ao foi chamada de Real Time Data Base (RTDB).
2.2.2 Comunica¸c˜ao (comm)
O comm ´e o processo respons´avel por enviar e receber as informa¸c˜oes partilhadas atrav´es da RTDB [3, 5]. Este ´e formado por duas Threads (Figura 2.9), uma de rece¸c˜ao e outra de envio. A de envio encontra-se num constante loop e a cada ciclo de 100ms transmite parte da informa¸c˜ao partilhada via BroadCast. A de rece¸c˜ao fica `a escuta de mensagens dos outros membros da equipa para atualizar a sua c´opia local da RTDB.
2.2.3 Comunica¸c˜oes com o Hardware (HWcomm)
O HWcomm ´e um processo semelhante ao comm mas neste caso ´e respons´avel pelas comunica¸c˜oes internas do robˆo [3, 6], ou seja, ´e o processo que trata da comunica¸c˜ao entre o software e o hardware (Figura 2.10). Este tem, tal como no comm, duas Threads: uma para de rece¸c˜ao de informa¸c˜ao do hardware e outra para envio. ´E ele o respons´avel pelo c´alculo da odometria e a decomposi¸c˜ao do movimento (coordenadas X, Y e orienta¸c˜ao) em velocidades v1, v2 e v3 para os motores.
Figura 2.9: Processo comm utilizado para a partilha de informa¸c˜ao entre os agentes CAM-BADA.
Figura 2.10: Processo Hwcomm respons´avel pela comunica¸c˜ao com o Hardware.
2.2.4 Vis˜ao
O sistema de vis˜ao no robˆo CAMBADA [7] utiliza duas cˆamaras, uma em perspetiva para identificar a bola pelo ar e uma segunda que aponta para um espelho, permitindo ter um sistema omnidirecional. Esta ´ultima permite ao robˆo ver o mundo 360 graus `a sua volta e extrair informa¸c˜ao sobre as linhas do campo, posi¸c˜ao da bola e obst´aculos (Figura 2.11). Em termos de software h´a dois processos envolvidos: o vision e o frontvision (Figura 2.8). Os algoritmos utilizados para a dete¸c˜ao de obst´aculos e bola baseiam-se em segmenta¸c˜ao de cor, constru¸c˜ao de regi˜oes com a mesma cor e an´alise da forma das regi˜oes obtidas. Para a dete¸c˜ao de linhas ´e utilizado um algoritmo que deteta transi¸c˜oes de cor.
2.2.5 Agente
O agente ´e o c´erebro de cada um dos robˆo CAMBADA. Nele s˜ao reunidas a informa¸c˜ao dos diversos componentes sensoriais do robˆo, bem como a informa¸cao produzida pelos outros
a) b) c)
Figura 2.11: Imagem obtida pela cˆamara omnidirecional do robˆo CAMBADA e respetivas imagens depois de processadas. Em a) encontramos a imagem real obtida pelo robˆo, em b) a mesma imagem depois da segmenta¸c˜ao de cor e em c) a posi¸c˜ao dos objetos de interesse detetados na imagem.
modulos de software, e tomadas as decis˜oes sobre o que o robˆo ir´a executar [3, 8]. O agente segue uma estrutura semelhante `a encontrada na Figura 2.12.
Loop
O funcionamento do agente baseia-se num ciclo de 33 milissegundos. Em cada ciclo ativa a fun¸c˜ao “thinkandact” (Figura 2.12) que n˜ao ´e mais do que uma m´aquina de estados. Esta m´aquina de estados recolhe a cada ciclo as informa¸c˜oes do sistema para tomar decis˜oes. No final do ciclo, e de acordo com as decis˜oes tomadas, s˜ao passadas as ordens ao hardware para que este as execute. No ciclo seguinte volta-se a repetir o processo at´e que o robˆo atinja o seu objetivo ou exista um novo objetivo.
Integrator
O Integrator, tal como o nome indica, ´e o modulo respons´avel por processar toda a in-forma¸c˜ao dispon´ıvel (vis˜ao, odometria, posicionamentos dos outros robˆos,etc.) e a juntar de forma a que o robˆo tenha uma “imagem” global do estado do sistema para que este possa tomar decis˜oes sobre o que ir´a fazer.
Strategy
O Strategy define quais a posi¸c˜oes estrat´egicas que os v´arios agentes devem tomar em campo de acordo com a situa¸c˜ao de jogo.
Figura 2.13: Exemplo de uma forma¸c˜ao dos robˆos CAMBADA.
Roles e Behaviours
Os Roles e os Behaviours s˜ao os elementos mais importantes do agente [3, 8]. S˜ao eles que v˜ao definir qual a fun¸c˜ao do robˆo na estrat´egia da equipa e que movimentos dever˜ao efetuar. Os Roles definem qual a fun¸c˜ao do agente dentro da estrat´egia da equipa. Existem 3 Roles poss´ıveis de serem escolhidos numa situa¸c˜ao de jogo normal. O primeiro ´e o Goalie, que indica que o robˆo ´e guarda redes. O segundo Role ´e o de Midfielder, que indica que o robˆo deve se mover de acordo com a estrat´egia da equipa, sendo um jogador passivo n˜ao procurando intercetar a bola. Por ultimo temos o Role Striker, que ser´a um jogador ativo que tentar´a procurar a bola. Um robˆo que tenha a bola em seu puder e controlada tornar-se automaticamente Striker.
Em situa¸c˜oes de bola parada existem dois Roles: Receiver e Replacer. O primeiro ´e respons´avel por receber a bola passada pelo segundo, seguindo as regras do jogo para o efeito. Os Behaviours s˜ao os estados de cada um dos roles. S˜ao eles que definem quais os movi-mentos ou habilidades que cada um dos robˆos dever´a efetuar, de acordo com o Role escolhido.
Se um jogador for, por exemplo, um Strikker com bola ser´a o Behaviour que definira para onde ´e que o robˆo se dever´a deslocar e qual ser´a o momento em que o robˆo dever´a rematar.
Cap´ıtulo 3
Movimento e Gera¸
c˜
ao de
Trajet´
orias no CAMBADA
Os Robˆos CAMBADA, tal como foi apresentado anteriormente, deslocam-se de forma omnidirecional. Devido `a natureza do jogo de futebol era importante que o robˆo n˜ao s´o andasse em qualquer dire¸c˜ao mas que conseguisse manter-se orientado para a bola enquanto se deslocasse lateralmente. Uma das melhores formas para obtermos este tipo de movimento ´e a utiliza¸c˜ao de rodas Omni.
3.1
Rodas Omni
As rodas Omni s˜ao rodas em que as suas extremidades s˜ao compostas por pequenas rodas com movimento perpendicular ao da roda principal [9]. Este tipo de constru¸c˜ao permite que a roda se desloque na sua dire¸c˜ao de rota¸c˜ao mas tamb´em que se desloque facilmente num sentido perpendicular `a rota¸c˜ao. Devido a esta caracter´ıstica, as rodas Omni permitem a constru¸c˜ao de sistemas com movimento holon´omico, em que a velocidade aplicada a cada uma das rodas determina a dire¸c˜ao para que este se desloca, sem que haja altera¸c˜ao da dire¸c˜ao das rodas.
3.2
Movimento Holon´
omico
Um sistema com capacidade de produzir um movimento holon´omico ´e um sistema que se consegue mover com os mesmos graus de liberdade do espa¸co em quest˜ao. Os robˆos CAM-BADA conseguem-se movimentar em qualquer dire¸c˜ao independentemente da sua orienta¸c˜ao num campo de futebol que ´e um espa¸co planar a duas dimens˜oes. Posto isto, podemos afir-mar ent˜ao que os robˆos CAMBADA s˜ao robˆos com movimento holon´omico [10]. Para obter este tipo de movimento por parte do robˆo foram utilizados motores com rodas Omni nas suas extremidades. Na solu¸c˜ao em particular s˜ao utilizados 3 conjuntos de rodas e motores separados por 120 graus (Figura 3.2).
Figura 3.2: Coloca¸c˜ao das rodas na base do robˆo CAMBADA.
Na figura 3.3 encontramos uma demonstra¸c˜ao de como obter alguns movimentos simples atrav´es desta solu¸c˜ao: rota¸c˜ao sobre o centro do robˆo, movimente em frente e movimento lateral.
a) b) c)
Figura 3.3: Exemplos de movimentos obtidos de acordo com as velocidades aplicadas aos motores. Em a) verificamos a rota¸c˜ao sobre o centro do robot, em b) o movimento em frente e em c) movimento lateral do robˆo ([1]).
Como podemos observar atrav´es da Figura 3.3, a chave para os diferentes tipos dos mo-vimentos ´e a aplica¸c˜ao de velocidades espec´ıficas a cada uma das rodas. Olhando mais ao pormenor para a op¸c˜ao a) e atendendo a que o vetor de cada uma das roda ´e representado pelas setas ao seu lado, podemos verificar que quando os motores tˆem todos a mesma velo-cidade o robˆo rodar´a sobre ele pr´oprio. J´a na op¸c˜ao b) este desloca-se na dire¸c˜ao do eixo y pois o motor M1 est´a parado, sendo que a soma dos vetores M3 e M2 resultam num vetor na dire¸c˜ao y. Na op¸c˜ao c) obtemos um movimento lateral na dire¸c˜ao do eixo x, pois o motor M1 tem uma maior velocidade do que M3 e M2. Como a soma M3 e M2 resulta num vetor no sentido do eixo x, em conjunto com o valor de M1, que tamb´em se encontra na dire¸c˜ao do eixo x, resulta um vetor de velocidade no sentido deste eixo.
A determina¸c˜ao de velocidades a atribuir a cada um dos motores para cada tipo de mo-vimento n˜ao ´e trivial, visto que o hardware necessita de trˆes valores de velocidade para os motores e o software trabalha num sistema egocˆentrico (sistema em que as localiza¸c˜oes no espa¸co s˜ao obtidas com base no observador, neste caso o robˆo). Para fazer a ponte entre os dois existe no processo HWcomm uma camada de software chamada de movimento ho-lon´omico. Esta camada ´e respons´avel por converter valores de velocidade relativas `a base do robˆo em valores de velocidade para cada um dos motores. Para al´em disso, esta camada tem de garantir que n˜ao s˜ao aplicadas a cada motor velocidades superiores ao valor m´aximo do sistema. Adicionalmente ´e tamb´em definido um valor m´aximo de acelera¸c˜ao para evitar tra-vagens e arranques bruscos, que causariam danos no robˆo e no ambiente. Para garantir estas condi¸c˜oes o movimento holon´omico do HWcomm, al´em de converter as velocidades, aplica rampas de acelera¸c˜ao e desacelera¸c˜ao e controla a satura¸c˜ao dos motores.
3.2.1 Rampas de acelera¸c˜ao e desacelera¸c˜ao
As rampas de acelera¸c˜ao e desacelera¸c˜ao filtram a velocidade que se deseja que o robˆo atinja. Assim, se um robˆo pretender acelerar ou desacelerar muito rapidamente, estas limitam a velocidade a aplicar aos motores de acordo com a velocidade anterior e um fator de acelera¸c˜ao previamente calculado. Isto evita que o robˆo tombe ou derrape as suas rodas quando tenta iniciar e finalizar o seu movimento.
3.3
Movimento antigo dos CAMBADA
O controlo dos robˆos CAMBADA ´e feito em posi¸c˜ao e orienta¸c˜ao. ´E definido um destino que o robˆo deve atingir. O ciclo de controlo calcula o erro em posi¸c˜ao e orienta¸c˜ao em rela¸c˜ao ao destino. Este erro ´e depois compensado por um conjunto de controladores PID que ir˜ao converter este erro em velocidades. Estas velocidades ser˜ao as velocidade fornecidas ao movimento holon´omico para calcular a potˆencia a fornecer a cada motor. Estes controladores PID, por norma, estar˜ao sempre num estado saturado, sendo que s´o fornecer˜ao valores ´uteis para controlo quando o robˆo estiver pr´oximo do destino (Figura 3.4). At´e esse momento, as velocidades s˜ao controladas pelas rampas de acelera¸c˜ao do movimento holon´omico.
Esta forma de movimento ´e muito limitativa. N˜ao existe forma de definir momentanea-mente qual a velocidade a que o robˆo deve passar num determinado local ou que trajet´oria deve tomar at´e atingir o destino. Desta forma ´e necess´ario procurar uma nova solu¸c˜ao.
Figura 3.4: Modelo do movimento dos robˆos CAMBADA.
3.4
Gerador de trajet´
orias
A solu¸c˜ao proposta assenta num algoritmo que faz um pr´e-calculo da trajet´oria do robˆo, utilizando um modelo f´ısico, tomando em conta as restri¸c˜oes cinodinˆamicas dos robˆos CAM-BADA. A esta solu¸c˜ao chamamos de Gerador de Trajet´oria (GT). A primeira vers˜ao desta proposta est´a apresentada em [11]
3.4.1 Proposta
O GT ser´a inclu´ıdo numa camada de software entre o Agente e o movimento holon´omico. Para atingir o objetivo proposto este ir´a pegar no ponto de destino indicado pelo Agente e pr´e-calcular uma trajet´oria entre a posi¸c˜ao do robˆo e o destino. Esta trajet´oria ser´a composta por um conjunto de posi¸c˜oes e velocidades muito pr´oximas uma das outras, que dever˜ao ser fornecidas controladamente ao robˆo em cada ciclo de controlo.
3.4.2 Problema
Olhando agora mais profundamente para o problema do movimento, ´e poss´ıvel definir cada movimento do robˆo como um segmento. Estes segmentos s˜ao definidos pelas suas condi¸c˜oes iniciais, restri¸c˜oes de movimento e pela dinˆamica do robˆo. Neste caso podemos assinalar que nos robˆo CAMBADA, cada um destes segmentos tem uma velocidade inicial e final, uma posi¸c˜ao inicial e final, uma velocidade patamar a que se deseja que o robˆo ande e uma capacidade m´axima de acelera¸c˜ao. Posto isto verifica-se que na defini¸c˜ao deste segmento apenas um valor ser´a constante: o da capacidade m´axima de acelera¸c˜ao. Isto verifica-se pois ´e um valor associado `a f´ısica do pr´oprio robˆo e do terreno de jogo. Todos os outros valores s˜ao parˆametros de entrada de cada um dos segmentos, mesmo que estes estejam j´a definidos no in´ıcio do segmento, como ´e o caso da velocidade e posi¸c˜ao inicial que s˜ao lidos diretamente do sistema. O caminho que o robˆo segue entre o inicio e o destino ´e definido pelos pontos que s˜ao fornecidos ao movimento holon´omico a cada itera¸c˜ao do sistema. Ao tempo entre cada itera¸c˜ao chamamos de Ta. A miss˜ao do GT ´e calcular os valores a fornecer ao movimento
holon´omico em cada itera¸c˜ao do sistema, para cada segmento do movimento.
3.4.3 Calculo da trajet´oria
O robˆo situa-se no mundo atrav´es da sua posi¸c˜ao x e y e pelo ˆangulo da sua orienta¸c˜ao. Tendo em conta que os robˆos CAMBADA s˜ao omnidirecionais e holon´omicos, este facto permite-nos tratar dos movimentos de rota¸c˜ao e transla¸c˜ao separadamente, apesar de se ter em considera¸c˜ao que estes movimentos tˆem de ser sincronizados. Partindo do principio que
o robˆo tem forma de garantir um leitura de velocidade e posicionamento com erro finito, podemos assumir que este algoritmo consegue calcular um conjunto de pontos que o robˆo consegue seguir ao longo do tempo.
Para obter estes pontos o GT ser´a baseado no algoritmo de perfil de velocidade trapezoidal (Figura 3.5). Sendo assim o movimento ser´a dividido em 3 fazes:
• 1a fase - acelera¸c˜ao de velocidade inicial ate velocidade patamar, de 0 at´e t 1.
• 2a fase - movimento em velocidade constante, de t 1 a t2.
• 3a fase - acelera¸c˜ao de velocidade patamar at´e velocidade final, de t
2 at´e t3.
Figura 3.5: Gr´afico de velocidade do movimento trapezoidal
Ao contr´ario do algoritmo habitual de perfil de velocidade trapezoidal, o GT n˜ao ter´a normalmente 0 como velocidade inicial e final (Figura 3.6). Sendo assim, o movimento ser´a definido por uma velocidade inicial vi, uma posi¸c˜ao inicial pi, uma velocidade e posi¸c˜ao final
vf e pf, uma velocidade patamar Vp e acelera¸c˜oes a1 e a3 para as fase 1 e 3 respetivamente.
De notar que os valores para as acelera¸c˜oes a1 e a3 e velocidades patamar Vp ser˜ao definidos
por valores absolutos correspondentes `a sua quantidade f´ısica.
Figura 3.6: Gr´afico de velocidade do movimento do GT
Pensando agora apenas no movimento de transla¸c˜ao, visto que o de rota¸c˜ao seguir´a o mesmo principio mas a uma dimens˜ao, o GT ter´a de pegar nas velocidades e posi¸c˜oes iniciais e finais (notar que este valores correspondem `as coordenadas XY no espa¸co), na acelera¸c˜ao da fase 1 e fase 3 do movimento, na velocidade patamar e calcular os pontos p0,p1...,pn da
trajet´oria XY espa¸cados pelos tempos de itera¸c˜ao do sistema Ta. Sendo assim temos que: • p0=pi ser´a o ponto inicial do movimento e pn=pf ponto final do movimento.
• (p1− p0)/Ta=vi em que vi ser´a a velocidade inicial e (pn− pn− 1)/Ta=vf velocidade
• |vk+1−vk|/Ta=a1em que a1para k¡=k1 ser´a a acelera¸c˜ao da fase 1 e |vk+1−vk|/Ta=a3
para k¡=k2 ser´a a acelera¸c˜ao da fase 3 (em que k1 ´e a ´ultima amostra de velocidade da
fase 1 e k2 a ´ultima amostra de velocidade da fase 2).
• |pk+ 1 − pk|/Ta=vp em que vp para k1 ¡ k ¡ k2 ser´a a velocidade patamar.
Analisando agora a Figura 3.7 verificamos que o GT ter´a de calcular uma trajet´oria de maneira a transformar a velocidade vi no ponto inicial p0 na velocidade vf do ponto final pn.
Isto respeitando os valores de acelera¸c˜ao m´axima do robˆo.
Figura 3.7: Grafico dos vetores de velocidade vi e vf.
3.4.4 Heur´ıstica do GT
Para conseguir calcular uma trajet´oria que obede¸ca `as condi¸c˜oes impostas anteriormente, o GT necessita, em primeiro lugar, de calcular o ponto em que atinge a velocidade patamar (pa), o ponto em que deixa a velocidade patamar (pw) e a pr´opria velocidade patamar (vp).
O problema ´e que estes valores de pa e pw dependem de vp e o pr´oprio vp depende de pa e pw.
Para resolver este problema o GT tenta iterativamente encontrar um valor para vp. O GT
come¸ca por criar uma estimativa para o valor de vp atrav´es de pf-pi. Com esta estimativa o
GT entra num ciclo em que calcula os pontos pa e pw. Ap´os o calculo destes pontos o GT
volta a fazer uma nova estimativa para o vp, que depois ser´a combinada com a estimativa
anterior numa fun¸c˜ao de convergˆencia. O processo repete-se um n´umero finito de vezes at´e se encontrar ou n˜ao uma solu¸c˜ao para vp.
O crit´erio de convergˆencia do GT ´e aplicado pela fun¸c˜ao descrita no Algoritmo 2, que verifica se a estimativa calculada para vp e para os pontos pa e pw correspondem a um
caminho que obedece `as restri¸c˜oes imposta pelo GT.
No Algoritmo 3 encontramos a implementa¸c˜ao da fun¸c˜ao h, respons´avel pelas estimativas provis´orias da velocidade patamar vp. Nesta fun¸c˜ao o valor k corresponde ao r´acio entre o
total do deslocamento s e o deslocamento em velocidade patamar s’ (Figura 3.8). Este valor tem como fun¸c˜ao diminuir o valores tempor´arios da vp, de maneira a aumentar a distˆancia a
percorrer em velocidade vp. Este passo e necess´ario pois se a distˆancia a percorrer entre Pa
e Pw for muito pequena torna-se muito complicado obtermos a convergˆencia do algoritmo.
Na Figura 3.9 encontra-se uma situa¸c˜ao interm´edia do algoritmo em que Pa e Pw ainda n˜ao
se encontram alinhados, n˜ao perfazendo uma situa¸c˜ao de convergˆencia do algoritmo at´e esse momento.
Algorithm 1 mov2d : Heur´ıstica do movimento 2D Require: s · vi ≥ 0, s · vf ≥ 0
s ← pf − pi;
v(0)p ← ˆs · vp∗ {Primeira estimativa para vp; ˆu = |u|u}
continue ← true while continue do {Estimativa de pα} ∆v1← vp(i)− vi a1 ← ˆ∆v1· a∗1 s1 ← ∆va11 ·vi+v2 p pα = pi+ s1 {Estimativa de pω} ∆v3← vf − vp(i) a3 ← ˆ∆v3· a∗3 s3 ← ∆va33 · vp+vf 2 pω ← pf − s3
{Estimativa do erro da velocidade patamar} sπ ← pω− pα
vπ ← ˆsπ· vp∗
if φ(vp(i−1), vπ, sπ) then
{φ defini¸c˜ao do crit´erio de convergˆencia} {Valor final atingido}
continue ← false else {Update da estimativa} v(i)p ← h(s, vp(i−1), sπ, vπ) end if Increment i end while
Algorithm 2 Defini¸c˜ao da fun¸c˜ao do crit´erio de convergˆencia φ return |v(i−1)p − vπ||s|vππ|| <
Algorithm 3 Defini¸c˜ao da fun¸c˜ao h Require: s, vp(i−1), sπ, vπ
k ← s·sπ
|s|2
Figura 3.8: Calculo Valor k
Figura 3.9: Fase interm´edia do calculo de vp
No Algoritmo 4 identificam-se situa¸c˜oes em que os vetores s = pi - pf e s0 = Pw − Pa
se encontram em dire¸c˜oes opostas (Figura 3.10). Nestes casos o GT n˜ao consegue encontrar uma solu¸c˜ao, originando a necessidade de reduzir o valor de vpestimada para tentar encontrar
uma solu¸c˜ao v´alida.
Algorithm 4 Heur´ıstica da degenera¸c˜ao do movimento if s · sπ < 0 then
vp∗← λv∗
p {0 < λ < 1}
if vp∗ < v∗p,min then
{N˜ao foi poss´ıvel encontrar um valor para v∗p} return with fail code
end if vp(i)← ˆs · v∗p
Increment i
continue {Reiniciar LOOP com um novo valor para vp∗} end if
Ap´os a determina¸c˜ao dos pontos pa e pw e da determina¸c˜ao da velocidade vp, passa para
a fase de constru¸c˜ao da trajet´oria que o robˆo ter´a de seguir. Para isso ´e necess´ario calcular o n´umero de ciclos que cada fase do movimento ter´a.
No caso da fase 1, a fase de acelera¸c˜ao para a velocidade patamar, calculamos a diferen¸ca entre a velocidade patamar e a velocidade inicial e dividimos esse valor pelo valor absoluto da acelera¸c˜ao para a fase 1. Esta opera¸c˜ao fornece o tempo que a fase 1 demorar´a a ser
Figura 3.10: Degenera¸c˜ao do Movimento
conclu´ıda, dividindo este valor pelo pela unidade de tempo de clock do sistema Ta obtemos o
n´umero de ciclos desta fase. Na fase 2 visto que a velocidade ´e constante, divide-se a distˆancia percorrida entre pa e pw pelo valor absoluto da velocidade patamar para obtermos o tempo
da fase. Em seguida efetua-se a mesma opera¸c˜ao da fase 1, dividindo o tempo da fase pelo tempo do sistema Tapara obter-se o n´umero de ciclos da fase 2. A terceira fase ´e semelhante
a fase numero 1 mas com a diferen¸ca de se usar um poss´ıvel valor diferente para a acelera¸c˜ao do robˆo.
C´alculo dos pontos da trajet´oria
Ap´os a determina¸c˜ao do n´umero de ciclos de cada fase passasse `a constru¸c˜ao do caminho. Cada uma das fases ter´a um n´umero finito de itera¸c˜oes correspondente ao numero de ciclos calculados anteriormente. A cada itera¸c˜ao de cada fase, ser´a escrito numa lista um ponto e uma velocidade a percorrer pelo robˆo. Atendendo ao algoritmo 5 podemos verificar que esse ponto e essas velocidades s˜ao construidos com base no valor da itera¸c˜ao anterior e pelo tempo percorrido entre as itera¸c˜oes. Assim sendo a velocidade de uma itera¸c˜ao ´e construida a custa da velocidade anterior mais a acelera¸c˜ao da fase multiplicada pelo tempo decorrido entre as itera¸c˜oes (Ta). Os pontos em cada itera¸c˜ao s˜ao construidos a custa do ponto anterior mais a
distancia a percorrer nessa itera¸c˜ao. Essa distˆancia e calculada pela velocidade nessa itera¸c˜ao multiplicada pelo tempo entre as itera¸c˜oes (Ta). Isto ´e valido para as fases 1 e 3. Na fase 2
como a velocidade ´e constante apenas ´e calculado o ponto seguinte a cada itera¸c˜ao. De notar que, quando `a mudan¸ca de fase, os valor de velocidade e posi¸c˜ao do robˆo a serem usados para o in´ıcio das itera¸c˜oes, s˜ao os estimados e n˜ao os ´ultimos valores da fase anterior. Na Figura 3.12 podemos encontrar uma situa¸c˜ao final em que temos a convergˆencia do algoritmo.
3.4.5 Movimentos em curva usando o GT
O movimento em curva gerado pelo GT ´e obtido atrav´es da subdivis˜ao da trajet´oria em curva em pequenos segmentos de reta (Figura 3.13). Para isto o GT usa o vetor entre posi¸c˜ao inicial e um centro de rota¸c˜ao fornecido e aplica-lhe N rota¸c˜oes. A cada rota¸c˜ao o deslocamento entre o ponto inicial e o ponto destino rodado ´e considerado um movimento a duas dimens˜oes e calculado pelos algoritmos acima descritos para o movimento 2D. A distˆancia entre cada
Algorithm 5 motion comp: Calcula pontos da trajet´oria {Elementos da fase 1}
∆v1 ← vp− vi {∆v na fase 1}
t1← |∆va∗1| 1
{Tempo para cumprir a fase 1} n1← dTt1ae {N´umero de ciclos da fase 1}
a1← d∆v1a∗1
{Elementos da fase 3}
∆v3 ← vf − vp {∆v na fase 3}
t3← |∆va∗3| 3
{Tempo para cumprir a fase 3} n3← dTt3ae {N´umero de ciclos da fase 3}
a3← d∆v3a∗3
{Inicio do c´alculo dos pontos} p ← pi; v ← vi; {Valores iniciais} {fase 1} for n = 1 at´e n1 do v ← v + a1Ta p ← p + vTa pp ( p {A ( b: append b to A} end for {fase 2}
p ← pα; v ← vp {Valores iniciais da fase 2}
pp ( p for n = 1 at´e n2 do p ← p + vTa pp ( p end for {fase 3}
p ← pω {Valores iniciais da fase 3}
pp ( p for n = 1 at´e n3 do v ← v + a3Ta p ← p + vTa pp ( p end for
p ← pf { ´Ultimo ponto do movimento}
Figura 3.11: Gr´afico final do GT para os pontos pi,pa,pw e pf
Figura 3.12: Gr´afico final dos pontos calculados pelo GT movimento vai depender do valor N e do ˆangulo de rota¸c˜ao fornecido ao GT.
Tendo em considera¸c˜ao os algoritmos presentes na solu¸c˜ao GT ´e poss´ıvel concluir que o GT poder´a ser uma solu¸c˜ao vi´avel a introduzir no software CAMBADA de maneira a refinar o controlo da trajet´oria do robˆo e a obter um melhor controlo sobre a velocidade do mesmo. Nos Cap´ıtulos 4 e 5 ser´a feita uma abordagem `a implementa¸c˜ao do GT no software CAMBADA e aos testes efetuados ao mesmo para comprovar a sua convergˆencia.
Cap´ıtulo 4
Implementa¸
c˜
ao de um modelo de
GT no CAMBADA
Este Cap´ıtulo vai abordar as altera¸c˜oes efetuadas `a arquitetura do CAMBADA para a implementa¸c˜ao do GT. Para este fim foi necess´ario alterar a estrutura do Agente e do movi-mento holon´omico. Este Cap´ıtulo aborda tamb´em diversos testes elaborados cujos resultados ser˜ao apresentados no Cap´ıtulo 5.
4.1
Implementa¸
c˜
ao do GT
Na estrutura anterior do Agente (Figura 4.1), os Behaviours eram respons´aveis por cal-cular as velocidades a passar ao movimento holon´omico. Sendo agora o GT respons´avel por calcular estas velocidades, deixa de fazer sentido a existˆencia de fun¸c˜oes de c´alculo de veloci-dades nos Behaviours (Figura 4.2). Existem ainda fun¸c˜oes do Behaviour que exigem a escrita de valores na RTDB, como ´e o caso dos valores para o Kicker e para o Grabber. Como o GT se situa numa camada abaixo dos Beahviours torna-se pouco pr´atico a escrita na RTDB em duas fases diferentes. Optou-se ent˜ao por criar uma camada de software num n´ıvel mais abaixo do GT chamada de LOWLEVEL. Esta camada ´e respons´avel por escrever os valores fornecidos pelos Behaviours e pelo GT na RTDB.
Figura 4.1: Arquitetura antiga do software do Agente
Para al´em da cria¸c˜ao da camada LOWLEVEL houve a necessidade de alterar todos os Behaviours de maneira a estarem de acordo com a nova ordem de opera¸c˜oes. Em especial
todos os Behaviours que envolviam movimento, devido `as novas condi¸c˜oes iniciais, tiveram de ser revistos para n˜ao suportarem apenas um destino, mas tamb´em uma velocidade final e uma velocidade patamar pretendida.
O movimento holon´omico tamb´em teve necessidade de ser revisto, pois deixa de haver necessidade de utiliza¸c˜ao de rampas de acelera¸c˜ao. O GT leva em considera¸c˜ao as carac-ter´ısticas f´ısicas do robˆo como a acelera¸c˜ao e velocidade m´axima no c´alculo dos seus pontos, logo o resultado final s˜ao valores que depois de convertidos para velocidades dos motores n˜ao necessitam de filtragem.
Figura 4.2: Nova arquitetura do Agente
4.2
Estudo do funcionamento do GT
Ap´os a implementa¸c˜ao do GT no software CAMBADA houve lugar a uma fase experimen-tal do GT para verificar o seu correto funcionamento. Este estudo come¸cou por ser efetuado no simulador dos CAMBADA passando mais tarde a ser efetuado nos robˆos. Durante este estudo foram encontradas algumas situa¸c˜oes que impediam a convergˆencia do GT, bem como altera¸c˜oes que poderiam ser efetuadas para melhorar o seu funcionamento.
As situa¸c˜oes que impediam o normal funcionamento do GT foram:
• Dificuldades na transi¸c˜ao entre os movimentos em que o robˆo teria de passar num ponto com uma determinada velocidade e continuar para outro ponto.
• Dificuldades relacionadas com as altera¸c˜oes r´apidas do ponto de destino do robˆo, que originavam movimentos bruscos do robˆo.
• Dificuldades em implementar o GT no software CAMBADA devido `as carater´ısticas do movimento dos CAMBADA, o que dificultava por vezes o cumprimento dos requisitos do GT, deixando por diversas vezes o robˆo imobilizado.
Identificados os problemas, come¸cou-se por analisar a causa de cada um deles. Para isto procedeu-se `a elabora¸c˜ao de gr´aficos de posi¸c˜ao entre os pontos fornecidos ao GT e os pontos reais pelo que o robˆo passava. Na Figura 4.4 podemos observar um dos primeiros teste efetuados ao GT, em que os pontos a vermelho representam a trajet´oria calculada pelo GT e os verdes os valores reais estimados para a posi¸c˜ao do robˆo.
Figura 4.3: Compara¸c˜ao da posi¸c˜ao do robˆo estimada e a posi¸c˜ao calculada pelo GT. Com a an´alise dos testes efetuados tornou-se claro, apesar de um pequeno atraso no cum-primento da trajet´oria pedida, que o grande problema do GT encontrava-se na transi¸c˜ao entre as trajet´orias calculadas pelo GT. O problema agravava-se com o aumentar das velocidades de trabalho do robˆo como se poder´a verificar no Cap´ıtulo 5.
Levando em considera¸c˜ao este ponto criou-se um teste com uma trajet´oria repetitiva para observar o comportamento do robˆo em diversas condi¸c˜oes de acelera¸c˜ao e velocidade (Figura 4.4). Durante a realiza¸c˜ao deste teste foram elaborados gr´aficos de posi¸c˜ao e gr´aficos de velocidade.
Figura 4.4: Teste repetitivo elaborado para testar a convergˆencia do GT.
A analise destes testes permitiu concluir que a causa para os problemas nas transi¸c˜oes entre trajet´orias encontrava-se no ru´ıdo da leitura da velocidade do robˆo.
Para combater este problema na leitura da velocidade pelo GT, deixou de se fazer a leitura pelo valor registado no estado do robˆo, que ´e obtido atrav´es da vis˜ao, e passou-se fazer a leitura atrav´es do ´ultimo valor fornecido aos motores. Esta altera¸c˜ao melhorou substancialmente o desempenho do GT para acelera¸c˜oes e velocidades mais baixas, sendo que, para valores mais elevados o problema manteve-se.
Ap´os esta altera¸c˜ao nas velocidades tornou-se tamb´em evidente que os valores pa e pW ,
valores estimados para os pontos de entrada e sa´ıda da velocidade patamar, deveriam n˜ao per-tencer a trajet´oria, pois como eram estimados por vezes desviam-se ligeiramente da trajet´oria esperada, provocando ligeiras imperfei¸c˜oes no movimento.
Com an´alise dos gr´aficos identificou-se tamb´em a causa de problemas relacionados com a imobiliza¸c˜ao total do robˆo. Esta situa¸c˜ao adv´em do facto de se indicar um vetor de velocidade de passagem num ponto ao GT incompat´ıvel com o ponto de origem do mesmo. Pode-se encontrar um exemplo pr´atico na Figura 4.5.
Figura 4.5: Movimento imposs´ıvel para o GT pois o vetor de velocidade no destino encontra-se na dire¸c˜ao oposta ao movimento.
Na Figura 4.5 chega-se `a conclus˜ao de que para determinados movimentos o GT necessita de criar pontos interm´edios para que se respeitem as condi¸c˜oes de funcionamento do GT como se verifica na Figura 4.6. Para a cria¸c˜ao destes pontos seria necess´ario criar uma camada de software entre os Behaviour e o GT respons´avel pelo planeamento de trajet´oria do robˆo. A esta solu¸c˜ao deu-se o nome de Planeador de Trajet´orias.
Para a cria¸c˜ao de um planeador de trajet´orias houve necessidade de identificar quais os movimentos que este poderia realizar. Desde logo identifica-se que trajet´orias em linha reta e movimentos em curva como sendo trajet´orias b´asicas para a constru¸c˜ao de um plano de trajet´orias de um robˆo. Olhando para o GT verifica-se que os movimentos em linha reta s˜ao facilmente calculados, sendo apenas necess´ario fornecer o ponto de destino e as velocidades pretendidas. J´a os movimentos em curva s˜ao mais complicados, pois para serem efetuados tˆem de se fornecer um ponto de rota¸c˜ao e um ˆangulo de rota¸c˜ao. Para al´em disso, estes s´o podem ser efetuados `a velocidade que o robˆo se encontra no in´ıcio do movimento, n˜ao sendo poss´ıvel, por exemplo, iniciar um movimento em curva a partir de uma velocidade 0.
Para melhorar a implementa¸c˜ao dos movimentos em curva foi adicionada uma fun¸c˜ao ao GT que permite diminuir a complexidade do calculo da trajet´oria em curva. Em vez de se
Figura 4.6: Poss´ıvel solu¸c˜ao para resolver a incompatibilidade do movimento da Figura 4.5.
fornecer ao GT um centro de rota¸c˜ao e um ˆangulo de rota¸c˜ao, fornece-se um ponto de destino e um ponto de passagem entre o in´ıcio e o fim do movimento. Estes dois pontos em conjunto com o ponto inicial permitem o calculo de um circulo que servir´a para calcular os valores de entrada para a fun¸c˜ao anterior do GT.
No c´alculo do c´ırculo a partir destes trˆes pontos foi usada a fun¸c˜ao Circle, que constr´oi um circulo a partir de 3 pontos, j´a inclu´ıda no software CAMBADA no m´odulo geometry. Considerandos os pontos A, B e C como apresentado na Figura 4.7, a fun¸c˜ao circle tem em considera¸c˜ao os segmentos de reta formados entre os pontos e calcula o centro do c´ırculo com base na interce¸c˜ao das retas perpendiculares aos referidos segmentos de reta que passam nos m´edios. A interce¸c˜ao deste segmentos fornece o centro da circunferˆencia que depois ´e usado para calcular o ˆangulo entre o vetor do ponto inicial com o centro e o ponto final com o centro. Este ˆangulo ser´a depois o segundo parˆametro para a fun¸c˜ao original do GT.
Esta fun¸c˜ao permite obter movimentos mais complexos de um forma mais facilitada, pois com apenas um ponto de destino e com o ponto interm´edio ´e poss´ıvel definir a abertura da semicircunferˆencia que desejamos obter.
4.3
Planeador de trajet´
orias
A gera¸c˜ao de trajet´orias usando o modulo GT discutido nesta disserta¸c˜ao pode tornar-se bastante complicada, pois este envolve um conjunto de restri¸c˜oes de movimento que podem culminar na imobiliza¸c˜ao total do robot. Para fazer face a este problema h´a necessidade de criar uma camada superior entre a informa¸c˜ao de destino vinda do Behaviour e a informa¸c˜ao que ser´a carregada para o GT. ´E nesse ponto que entra o Planeador de Trajet´orias, que vai verificar as restri¸c˜oes do movimento pretendido e criar pontos interm´edios para que este se torne um movimento poss´ıvel.
4.3.1 Planeador de desvio de obstaculos
Devido a restri¸c˜oes de tempo e de complexidade na cria¸c˜ao de um planeador de trajet´orias totalmente funcional foi apenas abordado nesta disserta¸c˜ao a cria¸c˜ao de um planeador de trajet´orias para desvio de obst´aculos. O planeador em quest˜ao ser´a baseado num mapa de ocupa¸c˜ao que registar´a todos os espa¸cos preenchidos do campo e um algoritmo de planeamento que efetuar´a o calculo do melhor caminho poss´ıvel at´e ao destino. A ideia fundamental ´e aplicar o planeador apenas nos momentos em que existam obst´aculos pela frente do robˆo sendo que em outras situa¸c˜oes ser´a aplicado apenas o GT.
Figura 4.8: Modelo da fase final do agente incluindo o GT e o planeador
4.3.2 Desvio de obst´aculos
O desvio de obst´aculos no planeador consiste na gera¸c˜ao de pontos interm´edios entre o ponto inicial e ponto final de forma a que a trajet´oria entre esse pontos interm´edios tenha uma menor probabilidade de encontrar obst´aculos pelo caminho do que a trajet´oria direta. Fala-se em probabilidade, pois os obst´aculos no futebol rob´otico s˜ao robˆos m´oveis, pelo que no instante seguinte ao c´alculo de um determinado plano este pode deixar de ser v´alido.
A obten¸c˜ao destes pontos interm´edios baseiam-se no uso de um mapa de ocupa¸c˜ao, que ter´a uma representa¸c˜ao de todos os obst´aculos encontrados no mundo, e de um algoritmo de pesquisa de melhor caminho, neste caso o A*. Para al´em de encontrar estes pontos interm´edios o planeador ter´a de definir uma velocidade de passagem nos mesmos e fazer com que sejam respeitadas as condi¸c˜oes do GT, sendo que at´e este momento esta condi¸c˜ao para a velocidade ainda n˜ao foi aplicada. Ap´os a aquisi¸c˜ao destes pontos, o planeador ter´a de fornecer a cada ciclo os novos dados ao GT e recalcular um novo caminho sempre que as condi¸c˜oes se alterem.
4.3.3 Mapa de ocupa¸c˜ao
O mapa de ocupa¸c˜ao baseia-se numa matriz que divide o campo em c´elulas iguais com um valor associado (Figura 4.9). Cada uma destas c´elulas representar´a uma parte do campo, que dependendo do seu valor ser´a assinalada como a c´elula ocupada, possivelmente ocupada, ou vazia.
Figura 4.9: Exemplo da divis˜ao do campo em c´elulas com uma resolu¸c˜ao de 8 por 8 c´elulas
Implementa¸c˜ao
O mapa ´e implementado atrav´es da cria¸c˜ao de um array uni-dimensional de valores reais a representar a matriz. O tamanho deste array corresponde `a resolu¸c˜ao do sistema e cada uma das c´elula representa uma por¸c˜ao do campo real. Esta resolu¸c˜ao do sistema ´e indicada aquando da cria¸c˜ao do mapa e carateriza-se pelo n´umero de c´elulas desejado para a largura e comprimento do mapa. Para al´em da largura e do comprimento, o mapa ´e caracterizado tamb´em por um valor m´aximo que pode ser indicado em cada c´elula, que representa a c´elula como ocupada, e por um valor de subtra¸c˜ao, que indica o valor a ser retirado a cada ciclo a uma c´elula preenchida. O calculo da ´area que cada c´elula representa no mapa real ´e feito a partir da divis˜ao do comprimento e largura real do campo pelo n´umero de c´elulas correspondentes ao comprimento e `a largura.
4.3.4 Preenchimento dos obst´aculos
O funcionamento do sistema ´e bastante simples. A cada ciclo o mapa recebe uma lista de obst´aculos com um raio e uma posi¸c˜ao. O mapa, utilizando esta lista, faz o preenchimento das c´elulas que est˜ao ocupadas pelos obst´aculos com o valor m´aximo. Depois, as c´elulas `a volta destas s˜ao definidas com um valor menor que representa a possibilidade de erro ou de futuras posi¸c˜oes dos obst´aculos. Esta lista de obst´aculos ´e calculada pelo sistema de vis˜ao e atualmente apenas identifica at´e um m´aximo de 20 obst´aculos.
No in´ıcio de cada ciclo ´e feita a atualiza¸c˜ao de todas as c´elulas, diminuindo todos os valores, fazendo com que ao fim de algum tempo falsos positivos ou obst´aculos que mudem de posi¸c˜ao n˜ao fiquem a ocupar as c´elulas indefinidamente.
Com esta implementa¸c˜ao ´e poss´ıvel a cada ciclo ter uma imagem geral da ocupa¸c˜ao do campo e gerar um plano para evitar as zonas mais ocupadas (Figura 4.10).
Figura 4.10: Exemplo de preenchimento do mapa de ocupa¸c˜ao num determinado ciclo. As bolas representam posi¸c˜oes reais dos robˆos. As cores vermelho, laranja e verde representam c´elulas ocupadas, c´elulas de poss´ıvel ocupa¸c˜ao no futuro e c´elulas livres, respetivamente. Implementa¸c˜ao
Os obst´aculos s˜ao preenchidos no array seguinte forma:
• Em primeiro lugar calcula-se a c´elula onde se encontra o centro do obst´aculo, atrav´es da divis˜ao da posi¸c˜ao real do robˆo pela largura e comprimento de cada c´elula respeti-vamente.
• De seguida, com o raio do obst´aculo, calculamos as c´elulas que s˜ao afetadas `a volta (cima, baixo, esquerda e direita). Para este c´alculo usamos novamente no centro do obst´aculo e calculamos espa¸co ocupado na c´elula onde se encontra o centro do robˆo. Em seguida, com o valor do raio restante em cada uma das dire¸c˜oes, verifica-se quantas c´elulas v˜ao ser ocupada nessas respetivas dire¸c˜oes.
• Por ´ultimo, sabendo o n´umero de c´elulas a percorrer em cada dire¸c˜ao, aplica-se um ciclo para percorrer cada uma das c´elulas `a volta e preenche-se com o valor de ocupado. Aplica-se ainda uma c´elula a mais em cada dire¸c˜ao a ser preenchida com metade do valor m´aximo para indicar a probabilidade de erro ou de posi¸c˜ao futura.
Para construir o caminho entre as zonas ocupadas uma das melhores solu¸c˜oes ´e a imple-menta¸c˜ao de um algoritmo de pesquisa de caminho.
A*
Para efetuar a pesquisa de um caminho com menor custo sobre o mapa de ocupa¸c˜ao acima descrito foi selecionado o algoritmo A* [12]. Este algoritmo oferece boa rela¸c˜ao entre precis˜ao e performance e baseia-se numa filosofia de escolha do melhor caminho poss´ıvel. O algoritmo tenta encontrar o melhor caminho percorrendo o mapa pelo caminho que aparenta ter o custo mais baixo. Para isto, na pesquisa do caminho o algoritmo leva em conta n˜ao s´o a distˆancia j´a percorrida at´e a uma c´elula X (g(x)), mas tamb´em uma Heur´ıstica euclidiana com um valor de custo estimado desse ponto X at´e ao ponto de destino. (h(x)). Para esta (h(x)) ser v´alida tem de conter sempre um valor menor ou igual ao custo desse mesmo ponto at´e ao destino.
Normalmente o valor estimado calculado em (h(x)) corresponde ao valor em linha reta da c´elula a ser analisada at´e a c´elula de destino.
Calculo do melhor caminho
O calculo do melhor caminho ´e efetuado da seguinte forma pelo A*:
• Em primeiro lugar o A* verifica se as posi¸c˜oes de origem e destino s˜ao v´alidas. Sendo v´alidas este atribui a cada uma das posi¸c˜oes a c´elula correspondente no mapa.
• Em segundo lugar o A* olha para a c´elula que cont´em o ponto inicial e verifica se n˜ao ´
e tamb´em o ponto de destino.
• No passo seguinte A* olha para as c´elulas que tem a sua volta e calcula para cada uma delas o seu f (x) = (g(x) + h(x)). Estas c´elulas s˜ao depois colocadas numa lista de prioridades de acordo com o valor de f (x). A c´elula atual ´e depois colocada numa lista de c´elulas j´a visitadas, sendo que a nova c´elula a ser analisada passa a ser a primeira da lista de prioridades. O processo repete-se nas c´elulas seguintes at´e ser encontrada a c´elula de destino ou ent˜ao que todas as c´elulas estejam na lista de visitadas.
• Assim que seja encontrado o caminho mais curto (ou caminhos, pois podem existir v´arios caminhos mais curtos) ´e construida uma lista com as c´elulas deste caminho examinando o ponto antecedente a cada ponto, isto ´e, quando ´e gravado um ponto na lista de visitados ´
e tamb´em guardado o ponto que antecede ao mesmo no caminho. Ao chegar ao destino basta construir a lista com o caminho mais curto de tr´as para a frente, acedendo ao ponto anterior de cada ponto.
4.3.5 Indicar os pontos do plano ao GT
Ap´os ao obten¸c˜ao da lista de c´elulas interm´edios por parte do A* o planeador ir´a calcular o ponto central de cada c´elula. Estes pontos ser˜ao fornecidos ao GT de uma forma controlada,ou seja, sempre que o robˆo atinja um ponto interm´edio o planeador fornece outro. Este processo mant´em-se enquanto as condi¸c˜oes originais se mantiverem, ou seja, mesmo destino e sem obst´aculos entre o ponto atual e o ponto interm´edio seguinte. Caso apare¸ca um obst´aculo ou o ponto destino mude volta-se a repetir todo o processo de planeamento. Um exemplo te´orico do resultado final para o mapa da figura 4.10 pode ser verificado na figura 4.11