Baixe o app para aproveitar ainda mais
Prévia do material em texto
UNIVERSIDADE FEDERAL DA BAHIA ESCOLA POLITÉCNICA DEPARTAMENTO DE ENGENHARIA QUÍMICA ENGENHARIA DE CONTROLE E AUTOMAÇÃO PEDRO AURÉLIO DOS SANTOS CARVALHO E SANTOS Planejamento de trajetória para robôs terrestres baseado em campos potenciais artificiais TRABALHO DE CONCLUSÃO DE CURSO Salvador 6 de Fevereiro de 2018 PEDRO AURÉLIO DOS SANTOS CARVALHO E SANTOS Planejamento de trajetória para robôs terrestres baseado em campos potenciais artificiais Trabalho de conclusão de curso apresentado ao curso de Graduação em Engenharia de Controle e Automação, da Universidade Federal da Bahia, como requisito parcial à obtenção do título de Engenheiro de Controle e Automação. Orientador: André Gustavo Scolari Conceição Salvador 6 de Fevereiro de 2018 Dedico este trabalho a todos que me ajudaram a conseguir completar esta jornada com sucesso e mais que tudo, me apoiaram nos momentos mais turbulentos que passei, e sorriram comigo nos momentos mais felizes. AGRADECIMENTOS “O tempo não gosta de nada que é feito sem ele.” Começar meus agradecimentos com essa frase é a coisa mais sensata que me compete agora. Tal frase eu escutei uma única vez em minha vida, sendo proferida por um senhor de nome Cauby. A ocasião era festiva, reencontro de amigos de outras gerações com amigos mais novos. Pois bem, achei marcante essa frase, e venho guiando minha vida, em partes, a partir dela. Percebi ao longo da minha jornada que o maior bem que nós temos é o nosso tempo. Seja ele gasto da forma que acharmos melhor, mas sem ele, não somos capazes de fazer nada. E sabendo que o tempo é o bem mais precioso que nós temos, só tenho a agradecer a todas as pessoas, que durante essa longa jornada que passei até chegar no dia de concluir esse trabalho, se dispuzeram a me doar uma parte do seu tempo, seja uma pequena parcela, ou uma grande parte dele. Durante meu período na universidade, fiz vários amigos, e tenho certeza que os levarei comigo pra sempre, e lhes prometo que sempre gastarei um pouco do meu tempo lhes importunando com qualquer assunto que seja, e me mantenho à disposição a todos vocês que necessitem de um pouco do meu tempo para lhes ajudar em qualquer que seja a tarefa. Citar nomes é sempre complicado, pois os destaques são muitos, porém, entre os destaques, não posso deixar de citar aqui meus amigos Angelo, Uziel, Estácio, Khayan, Eduardo, Lessa, Paulinha, Elton e Kelvin, que dentre todos os amigos que tenho orgulho de dizer que adiquiri nesses anos, estiveram comigo sempre me apoiando, dando conselhos, divindo a conta no bar e as vezes, me deixanddo fora da conta (muito obrigado mesmo por isso!). Mais importante que os amigos que fiz, tenho que destacar minha família, que me deu todo o suporte para que eu pudesse vencer essa batalha, e tenho certeza que estarão comigo em todas as outras que eu venha a enfrentar durante minha vida. Quero agradecer, do canto mais fundo do meu coração a Tia Ninha, Tia Cida, Tia Eliana, Tia Rita (In Memoriam), Tio Bão e Tio Chicão, que durante todo minha vida assumiram os papéis de Pai e Mãe, e me fizeram virar a pessoa que sou hoje! Portanto, se você está lendo esse texto, saiba que eu sou o que sou hoje devido a essas pessoas. Não obstante delas, tenho que agradecer a meus irmãos, Helber, Míria, Felipe e Joanna, que sempre me apoiaram, dando conselhos, dando sermões também, acho que por eu ser o irmão mais novo, o instinto protetor sempre pairou neles sobre mim. Mais uma vez, muito obrigado a todos vocês. Não posso deixar de agradecer também à minha família soteropolitana. Meu pai, minha ex-madrasta, e a meu irmão, que durante a maior parte da minha morada aqui nesta terra, foram eles que me acolheram, me apoiaram, sorriram comigo, enfim, dedicaram um bom tempo de suas vidas a me ver alcançar uma parte do que a gente espera que seja o sucesso. Trespassando a linhagem sanguínea, durante minha jornada conheci a pessoa que mais esteve ao meu lado, dividindo comigo todas as alegrias que tive durante os meus anos na universidade, e mais importante que os momentos felizes, sempre esteve comigo nos momentos mais difíceis que passei durante esses anos. Danielle, obrigado por me aturar nesses anos, e por querer estar comigo em todos os momentos das nossas vidas. Não posso deixar de falar também dos meus amigos de Caetité, que desempenharam um papel importantíssimo nessa jornada, mesmo não estando presentes no meu dia-a-dia universitário. Muito obrigado Diogão, Ailton e Sandino. Pra finalizar esse textão, agradeço mais uma vez, de coração à todos o que me doaram uma parte do seu tempo, e estiveram comigo durante todo esse tempo que foi meu período na universidade. Amo vocês! “Um passo a frente, e você já não está mais no mesmo lugar!” Chico Science RESUMO O planejamento de trajetória para sistemas robóticos móveis é uma das partes mais importantes no desenvolvimento de sua navegação. Planejar uma trajetória envolve não só saber aonde ir, mas como ir. Este trabalho apresenta um método de planejamento baseado em campos potenciais artificiais. Este método é capaz de calcular uma trajetória em tempo real ao mesmo tempo que consegue efetuar o desvio de obstáculos no caminho, desde que essa informação seja passada ao robô. Para realizar esse trabalho, foi utilizado um robô móvel com acionamento diferencial, juntamente com um sensor ultrassônico responsável pelo mapeamento do ambiente no qual o robô se move. Os testes para validação foram feitos utilizando a plataforma robótica realizando a leitura do ambiente em tempo real através do sensor ultrassônico, e foi feita uma comparação com uma simulação para avaliar a eficácia. Palavras-chave: Robô móvel, Planejamento de Trajetória, Campos Potenciais Artificiais, Robô Diferencial, Sensores, Ultrassom ABSTRACT The path planning for mobile robots is one of most important parts in the development of your navigation. Path planning involves not only know where to go, but how to go. This work presents a method of planning based in artificial potential fields. This method is able to calculate the path in real time and at the same time, avoid obstacles in the way, since this information will be passed to the robot. To achieve this goal a differential drive robot was used, with one ultrasonic sensor responsible to mapping the enviroment in wich the robot moves. The validation tests was performed by the robot using the ultrasonic sensors acquiring data in real time, and was made a comparison between the real robot and a simulation. Keywords: Mobile Robot, Path Planning, Artificial Potential Fields, Differential Robot, Sensors, Ultrasonic LISTA DE ILUSTRAÇÕES Figura 1 – Disco de sensor de posição . . . . . . . . . . . . . . . . . . . . . . . 17 Figura 2 – Intensidade típica da distribuição de um sensor ultrassonico . . . . . 18 Figura 3 – Sensor Ultrassonico . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Figura 4 – Diferença entre trajetórias holonômicas e não-holonômicas . . . . . 20 Figura 5 – Estrutura do robô diferencial . . . . . . . . . . . . . . . . . . . . . . . 21 Figura 6 – Robô diferencial Lego Mindstorm EV3 . . . . . . . . . . . . . . . . . 21 Figura 7 – Posicionamento do robô com relação ao sistema de coordenadas global. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Figura 8 – Exemplo de trajetória em campo potencial . . . . . . . . . . . . . . . 25 Figura 9 – Tipos de pontos críticos e seus respectivos gráficos de função gradiente 26 Figura 10 – Menor distancia para um obstáculo . . . . . . . . . . . . . . . . . . . 28 Figura 11 – Exemplo de trajetória gerada usando interpolação cúbica . . . . . . 29 Figura 12 – Mínimo local dentro de um ambiente côncavo. . . . . . . . . . . . . 30 Figura 13 – Mínimo local gerado por dois obstáculos distintos. . . . . . . . . . . 30 Figura 14 – Esquema representativo do funcionamento do método APF-Modificado 31 Figura 15 – Ambiente criado para teste. . . . . . . . . . . . . . . . . . . . . . . . 34 Figura 16 – Trajetórias planejada e executadapelo robô em ambiente simulado. 36 Figura 17 – Erro entre a trajetória planejada e a trajetória executada pelo robô. . 36 Figura 18 – Velocidades linear e angular aplicadas ao robô em simulação para parâmetros de sensor real . . . . . . . . . . . . . . . . . . . . . . . . 37 Figura 19 – Trajetória planejada e executada pelo robô utilizando o sensor para obtenção de pontos no ambiente em tempo real. . . . . . . . . . . . 38 Figura 20 – Erro entre as trajetórias planejada e executada pelo robô. . . . . . . 38 Figura 21 – Velocidades linear e angular aplicadas ao robô em tempo real . . . 39 Figura 22 – Ambiente projetado para realização do experimento . . . . . . . . . 40 Figura 23 – Trajetória planejada e executada pelo robô ao se deslocar no ambiente proposto na figura 20 . . . . . . . . . . . . . . . . . . . . 40 Figura 24 – Velocidades linear e ângular do robô durante a navegação . . . . . 41 Figura 25 – Ambiente planejado para uma trajetória maior . . . . . . . . . . . . . 42 Figura 26 – Trajetória realizada para o ambiente proposto na figura 23 . . . . . 42 Figura 27 – Erro entre a trajetória planejada e executada pelo robô. . . . . . . . 43 Figura 28 – Velocidades Linear e Angular aplicadas ao robô . . . . . . . . . . . 44 Figura 29 – Sinal de controle da velocidade linear aplicada ao robô . . . . . . . 44 Figura 30 – Sinal de Controle da velocidade angular aplicada ao robô . . . . . . 45 Figura 31 – Teste em simulação de ambiente com um mínimo local e com os parâmetros de sensor igual ao sensor real utilizado. . . . . . . . . . 46 Figura 32 – Simulação realizada com parâmetros melhorados do sistema de sensoriamento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 LISTA DE ABREVIATURAS E SIGLAS APF Artificial Potential Fields SUMÁRIO 1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.1 Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.2 Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2 ROBÔ MÓVEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.1 Sensoriamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.1.1 Encoders Ópticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.1.2 Sensores Ultrassônicos . . . . . . . . . . . . . . . . . . . . . . . . 18 2.2 Robô Diferencial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.2.1 Representação Matemática do Robô Diferencial . . . . . . . . . . 21 3 CAMPOS POTENCIAIS ARTIFICIAIS . . . . . . . . . . . . . . . . . 24 3.1 Método dos Campos Potenciais Artificiais (APF) . . . . . . . . . . 24 3.2 Implementação do Método APF . . . . . . . . . . . . . . . . . . . . 27 3.3 Adaptação da trajetória para um caminho mais suave . . . . . . . 28 3.4 O problema dos mínimos locais . . . . . . . . . . . . . . . . . . . . 29 3.5 Método APF-Modificado . . . . . . . . . . . . . . . . . . . . . . . . 30 4 RESULTADOS EXPERIMENTAIS . . . . . . . . . . . . . . . . . . . . 33 4.1 Navegação por Ambiente Desconhecido . . . . . . . . . . . . . . . 33 4.1.1 Algoritmo de Planejamento . . . . . . . . . . . . . . . . . . . . . . 45 4.1.2 Mínimos Locais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 5 CONCLUSÕES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 APÊNDICES 50 13 1 INTRODUÇÃO 1.1 Motivação Robôs móveis estão cada vez mais presentes no nosso dia-a-dia, seja em questões relacionadas a tarefas domésticas, transporte de cargas, operações de resgate, e várias outras atividades que fazem parte do nosso cotidiano. O que antes era um sonho distante, agora vem se tornando realidade graças ao desenvolvimento de técnicas mais aprimoradas de navegação e sensoriamento, juntamente com o barateamento do custo de produção de robôs capazes de executar as mais diversas tarefas que possibilitam um maior conforto a nós seres humanos. Um bom exemplo disso é o mercado crescente de robôs aspiradores, que trabalham de forma autônoma para limpar nossas casas. Para além do conforto, a robótica tem desempenhado um enorme trabalho no assistencialismo a pessoas deficientes ou com dificuldades motoras. Neste ramo, o termo robótica assistiva vem sendo bastante empregado, e se desenvolvendo a níveis onde as limitações estão ficando para trás. No que tange a questão da locomoção, hoje encontramos cadeiras de rodas motorizadas que facilitam bastante a vida dessas pessoas que necessitam utilizá-las para locomoção. A aplicação de técnicas de navegação nesses sistemas o torna ainda mais adaptável aos debilitados. A motivação dessa pesquisa é a aplicação de algoritmos de planejamento de trajetórias para a robótica assistiva, mais especificamente em cadeiras de rodas motorizadas, para verificar sua eficácia em um ambiente real, fora de laboratório, assim poder realmente tornar o conhecimento acadêmico e a tecnologia desenvolvida dentro da academia mais próxima das pessoas que realmente necessitam utilizar da mesma. Neste trabalho será utilizado um robô com acionamento diferencial para simbolizar uma cadeira de rodas, visto que o princípio de funcionamento de ambos é bem semelhante. 1.2 Objetivo O objetivo deste trabalho é realizar a implementação em tempo real de um planejador de trajetória utilizando o método dos campos potenciais artificias. Como objetivos específicos tem-se: • Uso de odometria para controle e estimação de velocidade, • Uso de um método APF modificado proposto por [1], • Mapeamento dos obstáculos no ambiente em tempo real através do sensor ultrassom, Capítulo 1. Introdução 14 • Uso de um robô diferencial. Neste trabalho foi utilizada a plataforma robótica LEGO Mindstorm EV3, • Comparação da implementação do método aplicado em um sistema real com sensores com o método simulado, • Analisar a viabilidade de implementação em um sistema maior, como uma cadeira de rodas motorizada. 15 2 ROBÔ MÓVEL Para a execução deste trabalho foi utilizado um kit educacional da LEGO, o LEGO Mindstorms EV3 Educational disponibilizado pela universidade. De acordo com [2], a unidade de processamento do robô possui as seguintes características: Processador Principal: • 32-bit ARM9 processor, Texas Instrument AM1808, 300MHz • OS: LINUX Memória: • 64 MB DDR RAM • 16 MB FLASH • 256 KB EEPROM Interface de Cartão Micro SD: SDHC standard, 2-32 GB Comunicação sem fio Bluetooth: Bluetooth V2.1 EDR, Panasonic PAN1325 module • Texas Instrument CC2550 chip • BlueZ Bluetooth stack • Primary usage, Serial Port Profile (SPP) USB 2.0, Interface do Client: High speed port (480 MBit/s) USB 1.1, Interface do Host: Full speed port (12 MBit/s) 4 portas de entrada: 6 wire interface supporting booth digital and analog interface • Analog input 0 - 5 volt Capítulo 2. Robô Móvel 16 • Suport Auto-ID for external devices • UART communication 4 portas de saída: 6 wire interface supporting input from motor encoders Display: 178x178 pixel black & white dot-matrix display Speaker: Diameter, 23 mm Botões de Interface do Usuário: Surrounding UI light Fonte de Alimentação: 6 AA batteries • Alkaline batteries are recommended • Rechargeable Lithium Ion battery, 2000 mAH Conector: 6-wire industry-standard connector, RJ-12 Right side adjustment No kit utilizado encontram-se todos os componentes necessários para se fazer a montagem do robô diferencial utilizado no trabalho, além do sensor ultrassônico. Foi utilizado também neste trabalho o software MATLAB, da Mathworks [3]. Este é um software computacional muito utilizado para aplicações de engenharia além de possuir a capacidade de fácil comunicação entre o hardware do robô e a plataforma de programação. 2.1 Sensoriamento Há uma grande gama de sensores que podem ser utilizados em robôs móveis. Estes sensores são importantes pois trazem informações tanto do ambiente exterior, quanto informações próprias do robô. Baseado nisso, os sensorespodem ser classificados em duas categorias: Sensores Proprioceptivos e Sensores Extraceptivos. Capítulo 2. Robô Móvel 17 Os sensores proprioceptivos são aqueles que medem informações referentes ao robô em si, tais como sensores odométricos, giroscópios, sensores de temperatura interna, entre outros [4]. Para além dos sensores proprioceptivos, temos os sensores extraceptivos. Esses sensores são de fundamental importância em aplicações de robótica móvel, pois serão eles que darão informações sobre o ambiente externo ao robô. Existe uma enorme quantidade de sensores que se enquadram nesta categoria, tais como sensores ultrassônicos, sensores luminosos, sensores a laser (LIDAR), câmeras de aquisição de imagem, sensores infravermelho, dentre vários outros [4]. No âmbito deste trabalho, cabe abordar alguns desses sensores representantes das duas classes, como os encoders ópticos e os sensores ultrassônicos. 2.1.1 Encoders Ópticos Encoders incrementais ópticos tem se tornado o dispositivo mais popular para medição de velocidade angular e posição dentro de um motor. Na robótica móvel, os encoders são usados para o controle de posição ou velocidade das rodas e outras articulações motorizadas. Por serem sensores proprioceptivos, sua estimação de posição é melhor no frame de referência do robô [4]. O funcionamento do encoder baseia-se em detectar o movimento de uma máscara, que é interna ao encoder, por meio de pares fotoacoplados. A medida que o robô se move, a quantidade de luz que atinge o detector óptico varia baseada no alinhamento das grades fixa e móvel [4]. A Figura 1 ilustra um tipo básico de encoder utilizado em robôs móveis. Figura 1 – Disco de sensor de posição, usado para inferir velocidade Fonte: ARESTEGUI, 2009 Capítulo 2. Robô Móvel 18 Os motores utilizados nesta aplicação possuem um encoder com resolução de 1°, e uma velocidade máxima de aproximadamente 170 rpm. 2.1.2 Sensores Ultrassônicos Sensores ultrassônicos são sensores geralmente utilizados em robótica para medir distâncias. Seu princípio de funcionamento é de certa forma, bastante simples. O sensor emite uma onda ultrassônica em uma direção, essa onda bate em um anteparo, e retorna para o sensor [4]. A distância é então calculada seguindo a equação (2.1) d = c ∗ t 2 (2.1) onde c é a velocidade do som no ar, t é o tempo de viagem do som e d é a distância percorrida pela onda sonora. A Figura 2 nos dá uma ideia de como essa onda se propaga. Figura 2 – Intensidade típica da distribuição de um sensor ultrassonico Fonte: Siegwart, 2004 O sensor ultrassônico ultilizado neste trabalho possui as seguintes características: • O sensor pososui boa precisão, e pode detectar variações de distância de até 1 mm; • A distância mínima de medição é de 3 cm e a máxima de 250 cm; • A leitura em 255 cm indica que não há nenhum anteparo dentro do range de detecção do sensor; • O ângulo de visão do sensor é de aproximadamente 22°; • Não é possível saber a localização exata do anteparo dentro do cone de detecção; Capítulo 2. Robô Móvel 19 • O sensor apresenta medidas extremamente precisas dentro do range de até 30 cm. • A frequência de amostragem é de 0.1 segundos. A Figura 3 apresenta o sensor utilizado. Figura 3 – Sensor Ultrassonico do Lego Mindstorm EV3 Fonte: The LEGO Group, 2013 Esses dois sensores apresentados até agora nesta seção são os que predominam no escopo deste trabalho, visto que para a realização deste, é necessário se conhecer a velocidade e posição do robô, que podem ser obtidas através da sua odometria, além da posição dos obstáculos, que é obtida através do sensor ultrassônico. Como o robô se move em um espaço cartesiano, é necessário que se faça uma transformação da distância euclidiana lida pelo sensor, em coordenadas cartesianas. Assim o robô e o sensor estarão operando no mesmo espaço de coordenadas, sendo possível realizar operações entre eles. Um estudo aprimorado do sensor utilizado neste trabalho foi realizado por [5]. Neste estudo ele mostra que, para realizar a transformação da distância medida pelo sensor ultrassônico em coordenadas cartesianas XS e Y S, utiliza-se a equação (2.2) [ XS Y S ] = [ d ∗ cos(θ) d ∗ sen(θ) ] (2.2) onde d é a distância medida pelo sensor, e θ é o ângulo que o robô faz com relação ao referencial incercial. Capítulo 2. Robô Móvel 20 2.2 Robô Diferencial Na robótica móvel existem vários tipos de robôs com diferentes tipos de locomoção. Existem robôs que tentam imitar o caminhado humano, outros que tentam imitar o movimento de alguns animais, e ainda há os que se locomovem através de rodas. Dentro da categoria de robôs móveis com rodas, estes são divididos em duas categorias: robôs holonômicos e robôs não-holonômicos, que são caracterizadas pela disposição e tipo de suas rodas. Segundo [6], o termo não-holonômico vem da matemática, e significa que o movimento está restrito a uma ou mais restrições. Uma restrição holonômica é uma equação que pode ser escrita em termos das variáveis x, y e θ. Uma característica chave desses sistemas com restrições é que eles não podem se mover diretamente de uma posição para outra, tendo que realizar para isso uma manobra, ou sequência de movimentos. A figura 4 mostra bem essa diferença entre trajetórias seguidas por veículos holonômicos e não-holonômicos. No caso dos robôs móveis sem restrições, eles possuem liberdade absoluta para se moverem em qualquer direção. Como exemplo temos os robôs omnidirecionais. Esses robôs utilizam de um sistema de rodas especiais, que os tornam capazes de se mover em qualquer direção sem que haja a necessidade de mudança de orientação. Segundo [7], uma restrição não-holonômica impede que o robô execute movimentos normais à superfície do corpo de suas rodas, quando não há deslizamento. Um exemplo clássico de não-holonômia é um carro. É facilmente perceptível que para realizar uma simples manobra de estacionamento, é necessário que haja uma trajetória factível que leve em consideração as restrições não-holonômicas do veículo. Figura 4 – Diferença entre trajetórias holonômicas e não-holonômicas Fonte: Cerqueira,2016 Nota-se que a necessidade de processamento se torna maior para os veículos não-holonômicos, visto que há uma complexidade maior para conseguir gerar uma Capítulo 2. Robô Móvel 21 trajetória factível que leve em consideração as restrições do veículo. As figuras 5 e 6 respectivamente, mostram como é a estrutura de um robô diferencial, e o modelo de robô que foi utilizado neste trabalho. Figura 5 – Estrutura do robô diferencial Fonte: Cerqueira, 2016 Figura 6 – Robô diferencial Lego Mindstorm EV3 Fonte: O autor. 2.2.1 Representação Matemática do Robô Diferencial Neste trabalho foi utilizado o robô Lego Mindstorm EV3 com a montagem diferencial, contendo assim dois motores com atuação independentes, e uma roda esférica de apoio. Capítulo 2. Robô Móvel 22 A partir da Figura 4, percebe-se que a composição do robô é bem básica, consistindo apenas do raio da roda, r, e da distância entre eixos, L. Com essas duas medidas é possível estimar a posição do robô ao ser aplicada uma velocidade nos motores. Com as velocidade de rotação podendo ser medida em cada roda, é possível estimar as velocidades linear v e angular ω em cada uma delas, como mostra a equação (2.3). v w = r2 r2 r L − r L . ωrd ωre (2.3) Com ωrde ωresendo a velocidade de rotação das rodas direita e esquerda respectivamente. Para um dado instante de tempo discreto k pode-se supor que o robô se encontra em uma posição x(k) ,y(k) , θ(k) com relação ao sistema de coordenadas global, como pode ser visto na figura 7. Figura 7 – Posicionamento do robô com relação ao sistema de coordenadas global. Fonte: Siegwart, 2004 Após receber sinais de controle, o robô passa para um estado seguinte, como visto na equação (2.4) Capítulo 2. Robô Móvel 23 x(k + 1)y(k + 1) θ(k + 1) = x(k)y(k) θ(k) +R.[v(k) ω(k) ] .ts (2.4) Sendots o período de amostragem, e R a matriz de rotação dada por R = cos(θ(k)) 0sen(θ(k)) 0 0 1 (2.5) Com a posição do robô sendo estimada com relação ao sistema de coordenadas global, é possível então estimar a posição do obstáculo detectado pelo sensor com relação ao sistema de coordenadas global ao se somar o a coordenada do obstáculo com a coordenada da posição atual do robô, como visto na equação (2.6). [ XB Y B ] = [ XS + P (1) Y S + P (2) ] (2.6) Sendo P (1) e P (2) referentes a matriz P , dada por P = xryr θr (2.7) onde xr, yr e θr representam respectivamente as coordenadas cartesianas em x, y do robô, e o ângulo que o robô faz com relação a origem. Sendo assim, P (1) = xr P (2) = yr P (3) = θr 24 3 CAMPOS POTENCIAIS ARTIFICIAIS Um dos problemas mais difíceis quando se trata de robôs móveis é a navegação. Para se mover com sucesso em um ambiente, o robô necessita saber onde ele está, para onde está indo, e como chegar até lá [4]. Para resolver esses problemas é necessário que o robô possua quatro características extremamente importantes para que a movimentação seja completada com sucesso, são elas: controle de movimento, percepção, localização e planejamento. Essas etapas são bem definidas por [8], como serão vistas a seguir. O controle de movimento é uma habilidade básica que todo e qualquer robô móvel deve possuir. Isso se dá pelo controle de seus motores, aplicando velocidades corretas para que o caminho desejado seja executado. A percepção se trata da habilidade do robô perceber o ambiente ao seu redor. Isso é feito através de sensores extraceptivos, como ultrassom, LIDAR, entre outros. A informação obtida através desses sensores permite que o robô saiba o que está a sua volta, e assim seja capaz de evitar colisões e outros problemas relacionados com o ambiente físico externo. Saber sua localização é uma condição importantíssima para que o robô possa se movimentar em um ambiente. Essa informação pode ser obtida basicamente de duas maneiras: através da odometria, ou da informação de sensores externos. A diferença entre esses dois métodos é que a odometria passa a informação de uma posição relativa, já os sensores externos são capazes de enviar a posição absoluta. O planejamento é a arte de tomar decisões sobre a navegação. Ao se obter informações sobre a localização e percepção, o planejamento é responsável por tomar a decisão de qual o melhor caminho a ser tomado pelo robô, tornando-o capaz de chegar ao seu objetivo final sem que se esbarre em algum obstáculo no caminho. Em seu livro, [9] cita vários métodos de planejamento de trajetórias. Entre eles estão o método APF (Artificial Potential Fields), ou em português, Campos Potenciais Artificiais, os algoritmos Bug, que englobam o Bug-1, Bug-2 e Tangent Bug, métodos baseados em amostras, decomposição de células, roadmaps, entre outros. Este trabalho tratará especificamente do método APF. 3.1 Método dos Campos Potenciais Artificiais (APF) O método APF é baseado no princípio das funções potenciais. Segundo [9], uma função potencial é uma função real diferenciável U : Rm → R. Seu valor pode ser visto como uma energia, e consequentemente, seu gradiente de potencial é uma força. Este gradiente é um vetor que aponta na direção que incrementa localmente U Capítulo 3. Campos Potenciais Artificiais 25 até seu máximo. Para se ter um entendimento melhor do que é o gradiente, ele pode ser pensado como as forças agindo em uma partícula positiva que está sendo atraída por uma partícula negativa. A função potencial trata o robô como se fosse uma partícula se movendo dentro de um campo vetorial com gradiente. Neste caso, o robô é tratado como uma partícula positiva, e seu objetivo é tratado como uma carga negativa. Para evitar colisões na trajetória planejada pelo APF, a estratégia que se utiliza é classificar obstáculos como partículas positivas. Assim, o robô sempre será repelido por essas cargas. A combinação das forças atrativas e repulsivas geradas pela função potencial faz com que o robô se desloque evitando quaisquer obstáculos, e chegue em seu objetivo. A Figura 8 nos dá uma ideia melhor de como isso acontece. Figura 8 – Exemplo de trajetória executada por um robô em um campo potencial Fonte: Howie Choset et al. (2005) Segundo [10], umas das características mais importantes deste método é que ele é capaz de planejar e executar a trajetória simultaneamente, pois ao invés de montar uma configuração espacial do ambiente por completo, ele utiliza-se das informações sensoriais obtidas pelo robô para explorar a localização dos obstáculos somente, e assim traçar uma trajetória que os evita enquanto aproxima o robô para mais perto de seu ponto de referência. Segundo [9], as funções potenciais podem ser vistas como um panorama aonde o robô se move de um estado de “valor alto” para um estado de “valor baixo”. Assim, o robô realiza o “caminho decrescente” seguindo o gradiente negativo da função potencial. O seguimento deste caminho é chamado de gradiente descendente, e é representado pela equação (3.1). ċ(t) = −∇U(c(t)) (3.1) Capítulo 3. Campos Potenciais Artificiais 26 onde c(t) pode ser visto como uma curva suave no Rn, ou seja, c é um C∞, sendo um mapa de vetores com valores em c : R → Rn. Se t é o tempo, a derivada ċ(t) pode ser lida como a velocidade de um ponto se movendo ao longo de c(t). O movimento do robô só é encerrado quando o gradiente desaparece, ou seja, quando ele atinge o ponto onde ∇U(q∗) = 0. Esse ponto q∗ é chamado de ponto crítico. Este ponto pode assumir três estados: máximo, mínimo e ponto de sela. A segunda derivada da função é o que vai determinar qual o seu tipo, como visto na Figura 9. É possível ver também que para funções de valores reais, a segunda derivada é a matriz Hessiana ∂2U ∂q21 · · · ∂2U ∂q1∂qn ... . . . ... ∂2U ∂q1∂qn · · · ∂2U ∂q2n (3.2) Figura 9 – Tipos de pontos críticos e seus respectivos gráficos de função gradiente Fonte: Howie Choset et al. (2005) No método do gradiente descendente, não é necessário calcular uma matriz Hessiana, porque naturalmente o robô vai se deslocar até um ponto de mínimo local, nunca parando em um ponto de sela ou ponto de máximo, a não ser que ele já começe em um desses pontos, algo que é muito difícil de acontecer. Entretanto, mesmo que o robô começe em um ponto de máximo, que é um ponto instável, qualquer perturbação na posição do robô faz ele ficar “livre”, fazendo com que o campo vetorial induza movimento no robô. Chegar em um ponto de sela também é improvável, por também ser um ponto instável. Já o mínimo local é um ponto estável porque depois de qualquer perturbação em um ponto de mínimo, o gradiente descendente faz com que o robô Capítulo 3. Campos Potenciais Artificiais 27 retorne para a trajetória baseada nos pontos de mínimo. Portanto, o único ponto crítico onde o robô pode genericamente terminar é um mínimo local, e é esperado que este ponto seja o local no qual o objetivo esteja situado [9]. 3.2 Implementação do Método APF Para a implementação do método APF é necessário que se defina uma função potencial, real e diferenciável. Realizando uma aproximação de tempo discreto, o gradiente da função potencial pode ser calculado de acordo com a equação (3.3). (∆xd ts , ∆yd ts ) = −~∇U(xd, yd) (3.3) onde ts é o tempo discreto, e xd,yd são as posições relativas a trajetória préviamente planejada. Sendo o potencial U(xd, yd) a soma do potencia de atração Uatt(xd, yd), com relação ao ponto de referência, com o potencial de repulsão Urep(xd, yd) referente aos obstáculos detectados. Logo: U(xd, yd) = Uatt(xd, yd) + Urep(xd, yd) (3.4) Segundo (9), não existe somente uma função potencial capaz de levar o robô até seu ponto de referência desejado, porém é condição necessária que a função Uatt(xd, yd) garanta um mínimo global na referência (xref , yref) e que Urep(xd, yd) seja monotonicamente crescente em relação ao inverso da distância entre o robô e o obstáculo. Alémdisso, Urep(xd, yd) não possui potencial infinito, fazendo com que haja uma distância Dmax na qual não fará influência nenhuma sobre o robô. Assim é possível escolher um valor de Dmax como sendo o valor de proximidade que se deseja chegar entre o robô e o obstáculo. Assim, é possível escolher as funções potenciais de atração e repulsão, definidas nas Equações (3.5), (3.6) e (3.7). Uatt(xd, yd) = β 2 .((xref − xd)2 + (yref − yd)2) (3.5) Capítulo 3. Campos Potenciais Artificiais 28 Urepi(xd, yd) = η 2 ( 1 dbi − 1 Dmax )2, dbi < Dmax 0, dbi ≥ Dmax (3.6) Urep(xd, yd) = j∑ i=1 Urep(xd, yd) (3.7) Sendo β e η as escalas de gradiente atrativo e repulsivo, respectivamente, j a quantidade total de obstáculos detectados no ambiente e (xbi, ybi) o ponto do obstáculo com a menor distância dbi para o robô, portanto: dbi = √ (xd − xbi)2 + (yd − ybi)2) (3.8) A Figura 10 mostra a representação gráfica de em um certo instante em que se detecta o obstáculo. Figura 10 – Menor distancia para um obstáculo Fonte: Cerqueira, 2016 3.3 Adaptação da trajetória para um caminho mais suave Em seu trabalho, [1] faz o uso de uma técnica para suavizar a trajetória gerada pelo método APF, e assim exigir menos dos atuadores do robô diferencial. Esta técnica é a interpolação cúbica, também denominada como função spline. “Esta função gera uma trajetória mais suave e compartível com a característica de trajetórias não-holonômicas que os robôs com tração diferencial de duas rodas podem realizar, além de serem adaptadas para possuir um número de pontos de tal Capítulo 3. Campos Potenciais Artificiais 29 forma que a velocidade do robô não varie muito da média desejada, o que acaba exigindo menos do sistema de motorização” [1]. Para obter esta trajetória é feita uma aproximação de um conjunto qualquer definido de pontos para uma função parametrizada não-linear. A Figura 11 nos mostra um exemplo de uma trajetória adaptada através da interpolação cúbica com a função spline. Figura 11 – Exemplo de trajetória gerada usando interpolação cúbica Fonte: Cerqueira, 2016 Após o caminho ter sido planejado, adaptado e suavizado, é possível obter os pontos que gerarão a trajetória com maior eficácia e menor erro de posição. 3.4 O problema dos mínimos locais Como visto anteriormente, o método APF sempre leva o robô para um mínimo da função potencial, porém não é garantido que este ponto seja o ponto desejado. Isto se dá por conta da existência de mínimos locais. Este é problema existente no método APF que acaba se tornando uma limitação. Ele ocorre quando, a partir das condições iniciais do robô, dos parâmetros definidos de atração e repulsão, e da disposição dos obstáculos, o robô não consegue chegar à seu ponto de referência, mesmo que haja uma trajetória exequível. Isto é, o robô alcança um ponto q∗ onde ∇U(q∗) = 0 e q∗ não é o ponto objetivo. Este problema não é limitado a obstáculos côncavos, ocorrendo também em obstáculos distantes um do outro a uma distância possível de gerar uma trajetória factível. As figuras 12 e 13 mostram exemplos de mínimos locais, tanto para um obstáculo côncavo, quanto para obstáculos convexos. Capítulo 3. Campos Potenciais Artificiais 30 Figura 12 – Mínimo local dentro de um ambiente côncavo. Fonte: Howie Choset et al., 2005 Figura 13 – Mínimo local gerado por dois obstáculos distintos. Fonte: Howie Choset et al., 2005 3.5 Método APF-Modificado Em sua tese de mestrado, [1] propõe uma modificação para o método APF que contorna o problema dos mínimos locais, garantindo que sempre haja uma convergência para o ponto de referência desejado, desde que haja uma trajetória factível a ser executada. Em seu trabalho, [1] validou o método através de simulações envolvendo obstáculos criados virtualmente. O funcionamento do método APF modificado acontece da seguinte forma, como descrito em [1]: Ao detectar um obstáculo, todos os n pontos (xc, yc) que pertencem a uma circunferência Ck de raio dr = L, cujo centro está na posição atual da trajetória, o próximo ponto da trajetória planejada será um dos pontos (xc, yc) que apresenta o menor valor da função potencial. Assim, para cada nova iteração é obtido um novo ponto para a trajetória planejada, que corresponde a um ponto de distância dr da posição anterior e que apresenta o menor valor de potencial comparado aos n pontos (xc, yc) pertencentes à circunferência Ck. Capítulo 3. Campos Potenciais Artificiais 31 A figura 14 mostra como ocorre as iterações para obter os pontos da trajetória através do método APF modificado. Figura 14 – Esquema representativo do funcionamento do método APF-Modificado Fonte: Cerqueira, 2016 A equação (3.9) mostra como é feito o cálculo dos potenciais de atração Patt e repulsão Prepa cada iteração e em cada ponto (xc, yc). Patt = qref (xref − xd)2 + (yref − yd)2) Prep = j∑ i=1 qb (xc − xbi)2 + (yc − ybi)2) (3.9) Sendo qref a carga do ponto de referência e qba carga associadade obstáculo i na posição (xbi, ybi). O próximo ponto a seguir deverá ser aquele no qual o potencial resultante ψ, calculado de acordo com a equação (3.10), que relaciona o potencial de repulsão com o de atração, seja o menor entre todos os pontos de Ck. ψ = Prep − Patt (3.10) Capítulo 3. Campos Potenciais Artificiais 32 Para garantir que a trajetória final sempre convirja para um ponto final suficientemente próximo do ponto de referência desejado, são feitas variações incrementais dos parâmetros qb e qref no decorrer do algoritmo de planejamento. A medida que o ponto planejado da trajetória se aproxima do ponto de referência, o valor qb da carga de cada objeto i é decrementado para que os efeitos de repulsão sejam diminuídos quando o robô estiver próximo do ponto de referência, facilitando a convergência para a posição final desejada. Caso não seja possível alcançar o ponto de referência desejado através da trajetória planejada, ou seja, caso ocorra um mínimo local, o valor de qref é incrementado, reinicia-se o valor de qb, retorna-se ao ponto inicial e realiza uma nova tentativa de convergência para levar a trajetória até o ponto de referência, já que na tentativa anterior não houve potencial de atração suficiente. Assim, o valor de qref é incrementado até se atingir o objetivo final, contornando o problema dos mínimos locais observados no método APF convencional. Deste modo, este método APF-Modificado consiste somente em realizar incrementos e alterações através de aproximações sucessivas nos parâmetros das funções potênciais ao longo do planejamento, afim de sempre obter a convergência da trajetória para o ponto final desejado, sem cair em um mínimo local indesejado. 33 4 RESULTADOS EXPERIMENTAIS Nesta seção serão apresentados os resultados obtidos através de experimentos realizados na plataforma robótica. Foram feitos testes com o robô em condições que pudessem evidenciar a eficácia do método de trabalho proposto. Para validar os resultados, eles serão comparados com os resultados obtidos através de ambiente simulado. 4.1 Navegação por Ambiente Desconhecido Esta parte dos resultados mostra o desempenho do método APF-Modificado sendo utilizado com o sensor ultrassônico obtendo informação em tempo real. É importate definir alguns pontos sobre a realização do experimento em tempo real: • O tempo de discretização ts foi definido em 0,1s; • A comunicação entre a plataforma robótica e o computador utilizado para obtenção de dados foi feita através de comunicação wifi; • O Matlab possui em seu repositório de drivers para hardware de terceiros, os drivers necessários para fazer a comunicação entre a plataforma robótica utilizada e o próprio Matlab; • Os algoritmos necessários para execução são préviamente embarcados no robô, assim, o robô fica responsável por todo o processamento, ficando o Matlab responsável pela aquisição de dados. O método APF combinado com o sistema de sensoriamento se mostrou muito eficaz. Foram feitos testes com ambientes diferentes para poder observar a capacidade deadaptação do método empregado. Nos testes realizados para validação experimental, os resultados obtidos foram satisfatórios, com o robô sempre conseguindo chegar ao seu objetivo. A figura 15 mostra o ambiente de teste no qual o robô foi submetido. Capítulo 4. Resultados Experimentais 34 Figura 15 – Ambiente criado para teste. Fonte: O autor. Na imagem o marcador atrás do obstáculo amarelo é o ponto no qual o robô deve chegar. Nota-se que é um ambiente bastante carregado, com obstáculos próximos. Este ambiente foi pensado para que o robô conseguisse perceber pelo menos três obstáculos, e desviasse com sucesso dos mesmos. Antes de realizar os testes, alguns parâmetros tiveram que ser definidos, para que o robô não adiquirisse informação desnecessária, fazendo assim com que preenchesse rápidamente sua memória, e causando uma possível falha na execução, visto que a plataforma utilizada tem um baixo poder de processamento e pouca memória para armazenar dados e processá-los. Os parâmetros que mais influênciam de forma direta no desvio e replanejamento da trajetória são: • seguranca • dr • atracao • repulsao • raio_sensor • angulacao Capítulo 4. Resultados Experimentais 35 A variável 'seguranca' faz com que o robô evite o obstáculo de uma forma mais ou menos intensa. Seu valor padrão nas simulações é de 0. Com esse valor, o robô vai planejar um caminho mais rápido de desvio do obstáculo, porém pode passar a uma distância muito próxima do mesmo. Ao aumentar o valor dessa variável, o robô tende a evitar mais o obstáculo, realizando arcos de desvio maiores. Uma observação a ser feita a respeito dessa variável é que, para valores grandes (próximos a 1), o algoritmo pode entender que não existe uma trajetória factível, mesmo essa existindo, pois ao se planejar um desvio, pode se esbarrar na área de segurança de outro obstáculo. Para este trabalho, foi definido o valor da variável como 'seguranca = 0.1'. 'dr' é o raio de varredura para encontrar o melhor próximo ponto. No ambiente simulado o valor de dr foi definido como L/2, e para o sistema real, foi definido igual a L. As variáveis 'atracao' e 'repulsao' representam respectivamente a força de atração do ponto objetivo e a força de repulsão dos obstáculos para com o robô. Esses valores são definidos de forma empírica, e os valores que deixaram o experimento com resultados mais satisfatórios foram 'atracao = 10' e 'repulsao = 1.5' 'raio_sensor' é uma variável específica do ambiente simulado. Como para a simulação acontecer é preciso que se simule um sensor, é necessário definir qual o range do mesmo. Por padrão o valor desta variável é igual a 1.5, representando a distância em metros que o sensor consegue ler a sua frente. No experimento com o sensor real essa variável se torna desnecessária, já que ela representa justamente o sensor real. 'angulacao' é outra variável específica do ambiente simulado. Ela representa o ângulo de abertura do cone ultrassônico gerado pelo sensor. Por padrão, na simulação este valor é definido como 45° . Este é um valor que pode ser considerado alto, visto que os sensores mais comuns utilizados em aplicações robóticas tem um cone de detecção entre 20° e 30°. É importante notar também o efeito que o a posição inicial do robô causa ao movimento. Antes do robô começar a se movimentar, é necessário que seja definido um ângulo inicial para o mesmo. Esse ângulo foi definido como 0° , assim o robô sempre começa paralelo ao eixo Y em todos os experimentos realizados. O ponto final de referência é o que vai definir a trajetória a ser executada. Nos experimentos realizados com o ponto final foi definido como (xref , yref ) = (1.75, 1.75). Estando o ponto final numa coordenada diagonal a posição inicial, o robô sempre faz uma leve curva para se adequar a trajetória ao iniciar o movimento . O ambiente de teste foi primeiramente simulado, para poder ter um parâmetro de comparação entre o método aplicado com sensor real, e sensoriamento simulado. Para esta simulação os parâmetros 'dr', 'seguranca', 'atracao' e 'repulsao' foram definidos Capítulo 4. Resultados Experimentais 36 com os mesmos valores da simulação com os obstáculos reais. O parâmetro 'angulacao' foi definido de acordo com o estudo de [5] sobre o sensor, sendo definido o valor de 22° . O resultado obtido foi o esperado, e bem próximo do resultado real. A figura 16 mostra a trajetória planejada para ambiente simulado. Os pontos em azul na imagem são os pontos onde foram definidos obstáculos a serem encontrados pelo robô durante a simulação. Figura 16 – Trajetórias planejada e executada pelo robô em ambiente simulado. Fonte: O autor. A partir da figura 16 é possível perceber que o deslocamento foi realizado de forma satisfatória, com o robô conseguindo atingir seu objetivo ao final do movimento. A figura 17 mostra o erro de deslocamento que houve durante todo o movimento. Figura 17 – Erro entre a trajetória planejada e a trajetória executada pelo robô. Fonte: O autor. Capítulo 4. Resultados Experimentais 37 A partir da figura 17, é possível notar que o erro se mantém em uma faixa aceitável, tendo seu valor máximo no início do movimento, que é o momento que o robô tem que se rotacionar para se adequar a trajetória planejada. A figura 18 mostra as velocidades linear e angular do robô durante a execução do percurso. Figura 18 – Velocidades linear e angular aplicadas ao robô em simulação para parâmetros de sensor real Fonte: O autor. É perceptível que a velocidade linear não sofre grandes variações, se mantendo praticamente constante durante toda a execução do trajeto, apresentando pequenas variações nos momentos de realização de curvas. A velocidade angular sofre uma variação maior sempre que encontra com algum obstáculo, gerando assim picos que representam os momentos em que o robô realiza rotações em torno do seu eixo para executar o desvio. O experimento foi realizado utilizando as informações do sensor obtidas em tempo real, com um tempo de discretização de 0.1 segundos, e obteve resultados satisfatórios. É importante ressaltar que, apesar do range de detecção do sensor ser de 250 cm, foi imposta uma limitação de apenas 30 cm. Ou seja, mesmo que o sensor captasse algo à sua frente, o robô só entenderia isso como obstáculo e utilizaria esta informação caso a distância lida fosse menor ou igual a 30 cm. Essa limitação foi necessária de se fazer, pois ao permitir que o robô observasse em distâncias maiores, informações indesejadas foram captadas. Essas informações causam um grande impacto no experimento, pois o robô tem que processá-las e tomar ações sobre Capítulo 4. Resultados Experimentais 38 elas, isso sobrecarregava o processamento do robô, tornando-o incapaz de realizar o planejamento. Nas situaçoes em que ocorreu essa sobrecarga de informações, a comunicação do robô com o Matlab se encerrava automaticamente, e o robô começava a se movimentar de forma descontrolada e aleatória. A figura 19 mostra a trajetória que foi calculada pelo método APF (linha preta) e a trajetória que foi realmente executada pelo robô (linha tracejada verde). As figuras em azul na imagem são objetos que foram detectados pelo sensor em tempo real. Figura 19 – Trajetória planejada e executada pelo robô utilizando o sensor para obtenção de pontos no ambiente em tempo real. Fonte: O autor. A figura 20 mostra o erro entre a trajetória planejada e a trajetória executada pelo robô durante a simulação. Figura 20 – Erro entre as trajetórias planejada e executada pelo robô. Fonte: O autor. Capítulo 4. Resultados Experimentais 39 Observando a figura, percebe-se que o erro é maior no início do movimento. Isso se dá por conta do ajuste que o robô precisa fazer para se adequar a direção da trajetória definida. Percebe-se também que o erro é relativamente baixo entre a trajetória planejada e a executada. A figura 21 nos mostra um gráfico com as velocidades aplicadas ao robô. Figura 21 – Velocidades linear e angular aplicadasao robô em tempo real Fonte: O autor. É possível notar a eficácia do método ao se observar o ambiente no qual foi realizado o teste mostrado na figura 15. Percebe-se também que não há variações bruscas nas velocidades angular e linear do motor. Isso evita que o as rodas deslizem sobre a superfície, e faz o movimento seja executado de forma mais suave. Para validar o método, mais experimento foram realizados. A figura 22 mostra um ambiente planejado de forma diferente para a realização de testes. Capítulo 4. Resultados Experimentais 40 Figura 22 – Ambiente projetado para realização do experimento Fonte: O autor. O teste executado com essa configuração de ostáculos também apresentou resultados satisfatórios, como pode ser visto nas figuras 23 e 24. As formas em azul figura 23 representam obstáculos que foram encontrados pelo robô durante o deslocamento. Figura 23 – Trajetória planejada e executada pelo robô ao se deslocar no ambiente proposto na figura 20 Fonte: O autor. Capítulo 4. Resultados Experimentais 41 Nota-se que a trajetória realizada pelo robô está bem próxima da planejada, e que o robô consegue se locomover de forma satisfatória, realizando a leitura em tempo real dos obstáculos e atualizando os dados no algoritmo de planejamento de trajetória. A figura 24 nos mostra as velocidades implicadas nas rodas do robô durante a execução do trajeto. Figura 24 – Velocidades linear e ângular do robô durante a navegação Fonte: O autor. Nota-se a partir da figura 24 que sempre que o robô identifica um obstáculo, e começa a desviar, há um pico na velocidade angular, que é justamente referente ao movimento de rotação realizado pelo robô. A velocidade linear apresenta pequenas variações dentro de uma faixa, com a ocorrência de alguns picos. Isso ocorre por conta da aceleração imposta ao robô ao realizar as curvas. Percebe-se que os picos estão presentes na mesma faixa onde ocorrem os picos de velocidade angular. Para resolver esse problema, foi imposta uma limitação na velocidade ângular, para que ela alcançasse no máximo 5 rad/s. Outro experimento foi realizado com um ambiente de navegação maior, com o robô partindo da posição (xi, yi) = (0, 0) e tendo que alcançar o ponto (xref , yref) = (3.5, 3.5) e com uma quantidade maior de obstáculos para se realizar o desvio. A figura 25 mostra a disposição do ambiente planejado para esta situação. Capítulo 4. Resultados Experimentais 42 Figura 25 – Ambiente planejado para uma trajetória maior Fonte: O autor. Com o ambiente preparado, foi posto em teste o robô no ambiente, e o mesmo apresentou um resultado bastante satisfatório, como pode ser visto na figura 26. Figura 26 – Trajetória realizada para o ambiente proposto na figura 23 Fonte: O autor. Analisando a trajetória realizada pelo robô, nota-se que o seguimento da trajetória planejada teve um desempenho levemente superior aos outros experimentos. Capítulo 4. Resultados Experimentais 43 Isso se deve ao fato de que para esse experimento foi imposta uma saturação no sinal de velocidade angular enviada pelo controlador, para que a realização de curvas fosse suavizada, evitando assim altas acelerações que pudessem causar algum tipo de escorregamento durante a realização de curvas. A figura 27 mostra o gráfico de erro entre a trajetória planejada e executada pelo robô. Figura 27 – Erro entre a trajetória planejada e executada pelo robô. Fonte: O autor. A partir da figura 27, percebe-se que o erro se manteve pequeno, dentro de uma faixa aceitável. As figuras 28, 29, e 30 mostram os gráficos de velocidade linear e angular, sinal de controle da velocidade linear e sinal de controle da velocidade angular, respectivamente. Capítulo 4. Resultados Experimentais 44 Figura 28 – Velocidades Linear e Angular aplicadas ao robô Fonte: O autor. Figura 29 – Sinal de controle da velocidade linear aplicada ao robô Fonte: O autor. Capítulo 4. Resultados Experimentais 45 Figura 30 – Sinal de Controle da velocidade angular aplicada ao robô Fonte: O autor. Outros testes foram realizados para diferentes situações, inclusive em situações na qual obstáculos foram inseridos enquanto o robô já estava em movimento, e mesmo assim o desvio foi realizado com sucesso. Na parte de anexos, há links para vídeos que demonstram alguns dos experimentos realizados. 4.1.1 Algoritmo de Planejamento Para entender melhor o que acontece nas figuras 16 e 18, é importante saber como funciona o algoritmo de planejamento. Ao se iniciar o movimento, com o robô parado na posição (x, y, θ) = (0, 0, 0), a informação da posição (xref , yref) é passada ao robô, e este faz então um cálculo de trajetória diretamente para este ponto. A trajetória gerada inicialmente é sempre uma linha reta, pois essa é a menor distância entre dois pontos no espaço. Então, com o robô posicionando com ângulo inicial de 0°, ele busca o melhor ângulo para começar o movimento, definindo assim sua orientação. O robô vai então se movimentando no espaço se movendo sempre em linha reta em direção ao seu ponto objetivo. Ao perceber um obstáculo, a coordenada na qual ele foi identificado é adicionada ao mapa como um ponto de repulsão. A partir daí, se esse ponto estiver no caminho da trajetória do robô, o algoritmo vai buscar outro caminho que desvie deste obstáculo e o leve para o ponto (xref , yref). O funcionamento do algoritmo é de forma recursiva, fazendo com que toda vez que se encontre um obstáculo no caminho, uma nova trajetória é planejada afim de concluir a navegação com um resultado satisfatório. Capítulo 4. Resultados Experimentais 46 Nas figuras 16 e 18 é possível notar que o movimento tende sempre a ir para a reta que liga o ponto inicial ao ponto de referência, e os obstáculos encontrados fazem com que essa rota seja alterada para uma rota que aproxime o robô ainda mais de seu objetivo evitando colisões. 4.1.2 Mínimos Locais Foram realizados experimentos simulando mínimos locais, e os resultados não foram satisfatórios, mesmo com o método de planejamento sendo capaz de conduzir o robô para fora desses ambientes. Isso acontece por conta das limitações do sensor utilizado, e da capacidade de processamento do robô, e o torna incapaz de realizar processamentos com uma carga de dados maior. Uma tentativa de solucionar o problema foi feita definindo um raio de detecção maior para o sensor, para que assim o mesmo fosse capaz de detectar o obstáculo a uma distância maior, porém ao se fazer isso, muitos pontos eram captados, gerando uma carga de processamento muito grande no robô, fazendo o mesmo, na maioria das vezes, travar, e começar a se movimentar de forma aleatória, sem qualquer tipo de controle. A situação foi simulada com os parâmetros utilizados no experimento real, e obteve-se uma situação bem semelhante entre simulação e experimento real, como pode ser visto na figura 31. Na figura, os símbolos em azul representam obstáculos. Figura 31 – Teste em simulação de ambiente com um mínimo local e com os parâmetros de sensor igual ao sensor real utilizado. Fonte: O autor. Capítulo 4. Resultados Experimentais 47 Outro teste foi realizado para o mesmo ambiente, porém, simulando um sensor com um raio de detecção e ângulo de incidência maiores. Nesse teste, percebe-se que os dois fatores principais para que o teste com mínimos locais não obtivesse sucesso foram a falta de poder de processamento do robô, que traz junto consigo a incapacidade de detecção e tratamento de dados a uma distância muito grande, quando comparada a distância de detecção que foi utilizada neste trabalho, de apenas 30 cm. A figura 32 mostra o resultado da simulação quando definiu-se os parâmetros de raio de detecção para 1.5m e ângulo de detecção do sensor para 45°. Figura 32 – Simulação realizada com parâmetros melhorados do sistema de sensoriamento. Fonte: O autor. O sensor ultrassônico não consegue mapear o ambiente em uma área, sendo capaz apenas de fornecer informações pontuais em uma única direção. Essa informação passada não é suficiente parao algoritmo de planejamento saber se o obstáculo é côncavo ou convexo, impossibilitando-o de planejar uma trajetória adequada. Para contornar este problema, o adequado é utilizar um sensor LIDAR (Light Detection and Ranging). Estes são sensores que emitem um feixe pulsante de luz, e como no ultrassom, conseguem medir a distância relativa ao anteparo através do tempo medido entre a emissão e reflexão do sinal luminoso. Sensores LIDAR são bons para realizar mapeamento de ambiente, pois possuem um range de detecção grande (entre 4m e 80m). 48 5 CONCLUSÕES A aplicação de sensores reais para o planejamento de trajetória baseado no método APF se mostrou satisfatória para os casos com obstáculos pontuais e convexos. Devido a limitações de hardware, como o baixo poder de processamento de informações do robô, e a utilização de um sensor ultrassônico, não foi possível obter resultados satisfatórios em testes com situações de mínimos locais, porém, foi observado que o método empregado neste trabalho se mostrou bastante eficaz. Foi possível, com somente um sensor ultrassônico conseguir navegar de forma satisfatória o robô em um ambiente carregado de obstáculos. O método apresentado aqui ainda pode ser bastante explorado, como realizar a implementação de um sensor LIDAR para a leitura do ambiente, explorar a aplicação em outras plataformas robóticas e buscar meios de contornar o problema dos mínimos locais utilizando harware de baixo custo. Uma opção a isso é ampliar a quantidade de sensores ultrassônicos ao redor do robô, para que estes atuem como um sensor LIDAR, mapeando o ambiente em várias direções ao mesmo tempo. A viabilidade de implementação deste método se torna real em sistemas de cadeiras de rodas motorizadas, visto que é possível realizar a implantação de sensores LIDAR nestes veículos, ou até mesmo uma quantidade maior de sensores ultrassônicos, e assim tornar a navegação mais intuitiva. 49 REFERÊNCIAS 1 CERQUEIRA, T. A. Navegação De Veículos Diferenciais Baseada Em Campos Potenciais Artificiais. 2016. 89 p. Dissertação (Engenharia Elétrica) — Universidade Federal da Bahia. Citado 4 vezes nas páginas 13, 28, 29 e 30. 2 THE LEGO GROUP. LEGO Mindstorms EV3 Hardware Developer Kit. [S.l.], 2013. Citado na página 15. 3 MATLAB. Disponível em: <https://la.mathworks.com/products/matlab.html>. Acesso em: 03/02/2018. Citado na página 16. 4 SIEGWART, R.; NOURBAKHSH, I. R. Introduction to Autonomous Mobile Robots. [S.l.]: The MIT Press, 2004. Citado 3 vezes nas páginas 17, 18 e 24. 5 LIU, C. An Experimental Study on EV3 and NXT Ultrasonic Sensors. [S.l.], 2014. Citado 2 vezes nas páginas 19 e 36. 6 CORKE, P. Robotics, Vision and Control. [S.l.]: Springer, 2011. Citado na página 20. 7 VIEIRA, F. C. Controle Dinâmico de Robôs Móveis com Acionamento Diferencial. 2005. 106 p. Dissertação (Engenharia Elétrica) — Universidade Federal do Rio Grande do Norte. Citado na página 20. 8 PONTOPPIDAN, L. O.; OLSSON, A. Laser Based Navigation for Mobile Robots. 2007. 184 p. Dissertação (Automation) — Technical University of Denmark. Citado na página 24. 9 CHOSET, H. et al. Principles of Robot Motion-Theory, Algorithms, and Implementation. [S.l.]: The MIT Press, 2005. Citado 3 vezes nas páginas 24, 25 e 27. 10 RIBEIRO, R. C. ESTRATÉGIA DE DESVIO DE OBSTÁCULOS E PLANEJAMENTO DE TRAJETÓRIA PARA UMA CADEIRA DE RODAS AUTÔNOMA. 2015. 116 p. Monografia (Engenharia de Controle e Automação) — Universidade Federal do Rio de Janeiro. Citado na página 25. https://la.mathworks.com/products/matlab.html Apêndices Referências 51 Apêndice: Código em Matlab para controle do robô EV3 Código 1 – Código para inicializar a comunicação dos motores do robô e do sensor ultrassônico utilizado mylego = legoev3(’usb’); % MUDE AS LETRAS A DEPENDER DAS PORTAS QUE FOREM USADAS !!! mymotor1 = motor(mylego , ’A’); % Set up motor mymotor2 = motor(mylego , ’D’); mymotor1.Speed = 0; mymotor2.Speed = 0; resetRotation(mymotor1); % Reset motor rotation counter resetRotation(mymotor2); start(mymotor1); % Start motor start(mymotor2); %%Inicialização dos Sensores do Lego sensor_2 = sonicSensor(mylego ,2); sensor2 = readDistance(sensor_2); Apêndice: Código em Matlab para leitura dos dados do ambiente através dos Sensores Código 2 – Function em Matlab para realizar a leitura do sensor ultrassônico e retornar a posição do objeto em coordenadas cartesianas. %% Leitura do Sensor count =1; espaco=pi/2; aux = 0; %definir a orientação sensor2y = sensor2*sin(angulo_robo); sensor2x = sensor2*cos(angulo_robo); Xn(i2) = sensor2x+P(1); Yn(i2) = sensor2y+P(2); %% verificação se o ponto novo é igual ou muito pró ximo do ponto if (sensor2 <= 0.3 && abs(XB(end)-Xn(end)) > 0.1) % define o raio de leitura do sensor if (((XB(end) <= Xn(i2)+0.1) ||(XB(end) >= Xn(i2) -0.1) ||(YB(end) <= Yn(i2)+0.1) ||(YB(end) >= Yn(i2) -0.1) )) j2 = j2+1; Referências 52 XB(j2) = Xn(i2); YB(j2) = Yn(i2); end for k = 1:(j2 -1) if ((abs(XB(j2)-XB(k)) <=0.1)||( abs(YB(j2)-YB(k)) <=0.1)) j2=j2 -1; count = count + 1; break; end end end end Apêndice: Código em Matlab para geração da trajetória através do método APF-modificado Código 3 – Function em Matlab para calcular a trajetória a ser seguida pelo robô através do método APF %% Ambiente [XB ,YB,i2 ,j2]=visao_ambiente_sensores(angulo_robo ,sensor2 ,P, XB ,YB,i2,j2); igualdade =1; %% Teste se a trajetória anterior ainda é factível , mesmo com o novo obstáculo encontrado: nao_factivel =0; for i=1: size(xd_antigo ,2) for j=1:1 dist_obstaculo=sqrt((xd_antigo(i)-XB(end))^2+(yd_ antigo(i)-YB(end))^2); if (dist_obstaculo <0.6*l) %Trajetória não factível (ve ículo colidiu com o obstáculo). nao_factivel =1; end end end if (nao_factivel ==0) igualdade =1; end if (nao_factivel ==1) igualdade =0; end if (size(xd_antigo ,2) ==0) igualdade =0; end Referências 53 xd=[]; yd=[]; if (igualdade ==0) K=1; erro=sqrt((xref -xi)^2+(yref -yi)^2); dist=erro; % distância total entre o veículo e a posição de referência q1=1; %Carga referência do Veículo atracao =10; repulsao =1.5; q2=atracao; % carga do ponto de referência %% Looping convergencia=l/2; novos_obstaculos =0; %enquanto o veículo ainda não chegou no ponto de referê ncia while (erro >convergencia)&&( novos_obstaculos <100) Qb=repulsao*ones(size(XB ,2)); %Cargas dos objetos xii=xi; yii=yi; xd=xi; yd=yi; erro=sqrt((xref -xii)^2+(yref -yii)^2); %% Gerando pontos da trajetória contagem =0; %Encerra o Loop se chegar no ponto ou se percorrer mais que uma 1.1 %vezes a distância , acrescida a cada tentativa: while (erro >convergencia)&&( contagem <=2* dist/dr) % Obtém o próximo ponto da trajetória: [postx ,posty] = APF_MODIFICADO(K, q1, q2, Qb, xii , yii , xref , yref , XB, YB, dr , seguranca); xii=postx; yii=posty; xd=[xd postx ]; Referências 54 yd=[yd posty ]; contagem=contagem +1; erro=sqrt((xref -xii)^2+(yref -yii)^2); end end if (size(xd)~=0) % Ajuste do caminho para facilitar a etapa do controle cinemático: [xd ,yd]= adaptador_caminho(xd,yd,vmax ,ts); %% Teste se a trajetória passou por algum obstáculo ( se é ou não factível): nao_factivel =0; for i=1: size(xd ,2) for j=1: size(XB ,2) dist_obstaculo=sqrt((xd(i)-XB(j))^2+(yd(i)-YB( j))^2); if (dist_obstaculo <l/2) nao_factivel =1; %Trajetória não factível ( veículo colidiu com o obstáculo) end end end % não é planejada nenhuma trajetória , para não haver a colisão esperada if (nao_factivel ==1) xd=xi; yd=yi; end end end end Apêndice: Links para vídeos no Youtube de simulações realizadas com o robô. Link 1: https://www.youtube.com/edit?o=U&video_id=exKbMOkhIIg Link 2: https://www.youtube.com/watch?v=1SVEbPkftOE&feature=youtu.be Link 3: https://www.youtube.com/watch?v=OsJat7PWrXk Link 4: https://www.youtube.com/watch?v=nLYLDQta7f8 Folha de rosto Folha de aprovação Dedicatória Agradecimentos Epígrafe Resumo Abstract Lista de ilustrações Lista de abreviaturas e siglas Sumário Introdução Motivação Objetivo Robô Móvel Sensoriamento EncodersÓpticos Sensores Ultrassônicos Robô Diferencial Representação Matemática do Robô Diferencial Campos Potenciais Artificiais Método dos Campos Potenciais Artificiais (APF) Implementação do Método APF Adaptação da trajetória para um caminho mais suave O problema dos mínimos locais Método APF-Modificado Resultados Experimentais Navegação por Ambiente Desconhecido Algoritmo de Planejamento Mínimos Locais Conclusões Referências Apêndices
Compartilhar