simulaÇÃo em v-rep da bnt da competiÇÃo r...
TRANSCRIPT
SIMULAÇÃO EM V-REP DA
PROVA BNT DA COMPETIÇÃO
ROBOCUP@WORK
Rui Filipe Teixeira Alen
Departamento de Engenharia Electrotécnica
Instituto Superior de Engenharia do Porto
2014
Este relatório satisfaz, parcialmente, os requisitos que constam da Ficha de Unidade
Curricular de Projeto/Estágio, do 3º ano, da Licenciatura em Engenharia Electrotécnica e
de Computadores
Candidato: Rui Filipe Teixeira Alen, Nº 1040552, [email protected]
Orientação científica: Manuel Fernando dos Santos Silva, [email protected]
Departamento de Engenharia Electrotécnica
Instituto Superior de Engenharia do Porto
12 de Fevereiro de 2014
1
Agradecimentos
Gostaria de agradecer ao Prof. Francisco José Dias Pereira por me ter possibilitado a
integração num grupo de investigação do LSA, ao abrigo da Unidade Curricular de
Projeto/Estágio.
Agradeço ao meu orientador, o Prof. Manuel Fernando dos Santos Silva por todo o apoio e
acompanhamento durante todo o processo deste projeto.
O meu agradecimento para os colegas de PESTA, Pedro Rodrigues e Arthur Oliveira.
Agradeço à minha família e amigos, o apoio demonstrado ao longo do meu percurso
académico, profissional e pessoal.
Quero agradecer também à organização do RoCKIn Camp 2014, quer pelo suporte
financeiro oferecido à viagem e estadia, assim como pela oportunidade da minha
participação no mesmo.
Por último, mas não em último, à minha esposa Carla Vilaça, a quem devo a realização
desta licenciatura, pelo seu apoio, paciência e sacrifício.
2
3
Resumo
Como forma de desenvolvimento e para atrair os jovens para a área da robótica,
recentemente, uma nova liga surgiu na maior competição do mundo de robótica, chamada
RoboCup@Work.
Esta é destinada aos concorrentes que desejam competir no campo da manipulação
robótica móvel para ambiente industrial.
Esta competição é composta de várias tarefas com uma em particular, a Basic Navigation
Test (BNT), na qual o trabalho se reflete.
A realização deste projeto envolve a simulação em Virtual Robot Experimentation
Platform (V-REP) do comportamento de uma plataforma KUKA youBot (plataforma
utilizada por todas as equipas participantes).
O objetivo do BNT é verificar se os robôs podem navegar bem no seu ambiente, ou seja,
de um modo autónomo, robusto e seguro.
Para atingir os objetivos propostos, foi necessário criar um programa sólido e robusto em
linguagem Lua e testá-lo num simulador. Isto envolve o estudo da cinemática do robô;
mecânica; Simultaneous Localization And Mapping (SLAM) e percepção a partir de
sensores.
Neste trabalho foi implementado um algoritmo o qual funcionou de acordo com as
espectativas.
Palavras-Chave
SLAM, youBot, RoCKIn, Robô.
4
5
Abstract
As a form of development and to attract young people to the field of robotics, recently, a
new league emerged in the world's largest robotics competition called RoboCup@Work.
This is intended for competitors who wish to compete in the field of mobile robotics for
handling tasks in industrial environments.
This competition consists of several tasks with one in particular, the Basic Navigation Test
(BNT), which is reflected in this work.
The realization of this project involves the simulation in Virtual Robot Experimentation
Platform (V-REP) of the behaviour of a KUKA youBot (platform used by all participating
teams).
The goal is to verify that the BNT robots can navigate well in their environment, in a
standalone mode, robust and secure.
To achieve the proposed objectives, it was necessary to create a solid and robust program
in Lua and test this in a simulator. This involves the study of robot kinematics, mechanics;
Simultaneous Localization And Mapping (SLAM ) and perception from sensors.
In this work an algorithm was implemented, which work according to the expectations.
Keywords
SLAM, youBot, RoCKIn, Robot.
6
7
Índice
AGRADECIMENTOS .................................................................................................................................... 1
RESUMO ......................................................................................................................................................... 3
ABSTRACT ..................................................................................................................................................... 5
ÍNDICE ............................................................................................................................................................ 7
ÍNDICE DE FIGURAS ................................................................................................................................... 9
ÍNDICE DE TABELAS ................................................................................................................................ 11
ACRÓNIMOS ................................................................................................................................................ 13
1. INTRODUÇÃO .................................................................................................................................... 15
1.1. CONTEXTUALIZAÇÃO ..................................................................................................................... 15
1.2. OBJETIVOS PROPOSTOS ................................................................................................................... 16
1.3. CALENDARIZAÇÃO ......................................................................................................................... 16
1.4. ORGANIZAÇÃO DO DOCUMENTO ..................................................................................................... 16
2. ESTADO DA ARTE ............................................................................................................................. 19
2.1. COMPETIÇÕES ROBÓTICAS .............................................................................................................. 19
2.2. ROBÓTICA MÓVEL .......................................................................................................................... 23
2.3. SIMULAÇÃO EM ROBÓTICA E AUTOMAÇÃO ..................................................................................... 26
2.4. PLANEAMENTO E NAVEGAÇÃO ....................................................................................................... 28
3. FERRAMENTAS UTILIZADAS NO PROJETO ............................................................................. 33
3.1. PLATAFORMA OMNIDIRECIONAL KUKA YOUBOT .......................................................................... 33
3.2. CINEMÁTICA DA PLATAFORMA KUKA YOUBOT ............................................................................ 35
3.3. V-REP – VIRTUAL ROBOT EXPERIMENTATION PLATFORM ............................................................. 37
4. ARQUITETURA DO SISTEMA ........................................................................................................ 41
4.1. INTERFACE DO UTILIZADOR ............................................................................................................ 43
4.2. CINEMÁTICA ................................................................................................................................... 43
4.3. PERCEÇÃO E LOCALIZAÇÃO ............................................................................................................ 47
4.4. PLANEAMENTO E NAVEGAÇÃO ....................................................................................................... 51
5. PROGRAMAÇÃO REALIZADA ....................................................................................................... 57
5.1. CICLO DE REPETIÇÃO DO ALGORITMO ............................................................................................. 58
5.2. POSIÇÃO DO BRAÇO DO ROBÔ PARA NAVEGAÇÃO ........................................................................... 59
6. TESTES EFETUADOS E RESULTADOS OBTIDOS ..................................................................... 61
6.1. VELOCIDADE E POSIÇÃO ................................................................................................................. 61
8
6.2. NAVEGAÇÃO AUTÓNOMA DO ROBÔ ................................................................................................. 67
7. CONCLUSÕES ..................................................................................................................................... 73
7.1. IDEIAS PARA FUTURO ...................................................................................................................... 74
7.2. CONCLUSÃO PESSOAL ..................................................................................................................... 75
REFERÊNCIAS DOCUMENTAIS .............................................................................................................. 77
ANEXO A. CD-ROM .................................................................................................................................... 81
9
Índice de Figuras
Figura 1 Middle size league robots da Universidade Tecnológica de Eindhoven. (ROBOCUP,
2014) 20
Figura 2 Arena do RoCKIn@Work, Roma 2014. ...................................................................... 21
Figura 3 Festival Nacional de Robótica 2013. (FESTIVAL NACIONAL DE ROBOTICA,
2014) 22
Figura 4 Robô autónomo Gemini pela Artec Systens. (THE OLD ROBOTS, 2014) ................ 23
Figura 5 Exemplo de robô com locomoção de rodas. (SOCIETY OF ROBOTS, 2014) ........... 24
Figura 6 Asimo da Honda. (ASIMO HONDA, 2014) ................................................................ 25
Figura 7 Curiosity Rover explorador da superfície do planeta Marte (NASA, 2014). ............... 26
Figura 8 Arquitetura do funcionamento do SLAM. (MOBILE ROBOTS, 2004) ...................... 29
Figura 9 Erro associado ao SLAM assinalado a vermelho na figura. ......................................... 29
Figura 10 Decomposição em células de tamanho fixo. (MOBILE ROBOTS, 2004) ................... 30
Figura 11 Exemplo de uma matriz pela transformação da distância. (MOBILE ROBOTS, 2004)
31
Figura 12 Janela de visualização para a transformação de distâncias. Adaptado de
(EUCLIDEAN, 2013) .............................................................................................................. 32
Figura 13 Plataforma KUKA youBot. .......................................................................................... 34
Figura 14 A roda do tipo Mecanum e os seus parâmetros (OMIDIRECTIONAL, 2007). ........... 35
Figura 15 Coordenação das rodas do robô. (OMIDIRECTIONAL, 2007) .................................. 36
Figura 16 Atuação das rodas Mecanum necessária para movimentos genéricos
(OMIDIRECTIONAL, 2007). .................................................................................................. 36
Figura 17 Diagrama de blocos do ciclo de repetição de simulação em V-REP (V-REP, 2014). . 38
Figura 18 Arquitetura de controlo do simulador V-REP. (V-REP, 2014) .................................... 39
Figura 19 Diagrama de blocos da arquitetura do sistema e sua integração no script do youBot.. 42
Figura 20 Diagrama do bloco cinemática. .................................................................................... 44
Figura 21 Gráfico obtido das velocidades pela cinemática do simulador. ................................... 45
Figura 22 Diagrama de blocos referente ao módulo de perceção e localização. .......................... 48
Figura 23 Dimensões do KUKA youBot. ..................................................................................... 48
Figura 24 Relação do ângulo ao obstáculo obtido pelo LASER e o robô. ................................... 49
Figura 25 Demonstração da matriz/mapa reduzido. ..................................................................... 50
Figura 26 Criação de margem de segurança de acordo com um determinado raio. ..................... 51
Figura 27 Diagrama do bloco planeamento e navegação. ............................................................ 52
Figura 28 Escala de cores de mapa de navegação criado no Excel. ............................................. 53
Figura 29 Esquema de decisão à navegação. ................................................................................ 54
10
Figura 30 Imagem demonstrativa da diferença de ângulos para a navegação. ............................. 54
Figura 31 Gráfico para a velocidade rotacional do robô. .............................................................. 55
Figura 32 Gráfico para a velocidade transversal do youBot. ........................................................ 55
Figura 33 Gráfico para a velocidade longitudinal do robô. .......................................................... 55
Figura 34 Exemplo de suavização do impulso da velocidade imposta ao youBot. ...................... 56
Figura 35 Gráfico para a velocidade transversal do youBot. ........................................................ 57
Figura 36 Fluxograma do sistema e sua integração no script do YouBot .................................... 59
Figura 37 Conjunto de imagens ilustrativas de recolha do braço do youBot. (YOUBOT, 2013) 60
Figura 38 Representação vectorial da distância percorrida. ......................................................... 62
Figura 39 Fluxograma para determinar a velocidade em função das leituras do LASER. ........... 63
Figura 40 Gráfico obtido da velocidade transversal. .................................................................... 67
Figura 41 Gráfico obtido da velocidade longitudinal. .................................................................. 67
Figura 42 Cenário 3D em V-REP de uma possível prova BNT. .................................................. 68
Figura 43 Janela do V-REP para configuração do Gráfico. .......................................................... 70
Figura 44 Gráfico obtido para visualização do comportamento da navegação. ........................... 71
11
Índice de Tabelas
Tabela 1 Calendarização do projecto. ......................................................................................... 16
Tabela 2 Comparação entre alguns dos Simuladores. ................................................................. 27
12
13
Acrónimos
APIs – Applications Programming Interface
BMT – Basic Manipulation test
BNT – Basic Navigation Test
BTT – Basic Transportation Test
CBT – Conveyor Belt Test
DEE – Departamento de Engenharia Eletrotécnica
DOF – Degrees Of Freedom
EEDT – Exact Euclidean Distance Transform
IA – Inteligência Artificial
ISEP – Instituto Superior de Engenharia do Porto
LASER – Light Amplification by Stimulated Emission of Radiation
LEEC – Licenciatura de Engenharia Eletrotécnica e Computadores
NASA – National Aeronautics and Space Administration
ODE – Open Dynamics Engine
PESTA – Projeto/Estágio
PPT – Precision Placement Test
ROS – Robot Operation System
SPR – Sociedade Portuguesa de Robótica
14
UC – Unidade Curricular
V-REP – Virtual Robot Experimentation Platform
3D – Três Dimensões
15
1. INTRODUÇÃO
Neste capítulo efetua-se uma introdução ao trabalho realizado na Unidade Curricular (UC)
de Projeto/Estágio (PESTA) do 3º ano da Licenciatura de Engenharia Eletrotécnica e
Computadores (LEEC), do Departamento de Engenharia Eletrotécnica (DEE), do Instituto
Superior de Engenharia do Porto (ISEP), referindo-se brevemente a sua contextualização,
os objetivos propostos para o trabalho, a calendarização que foi definida para a sua
realização e a organização do documento.
1.1. CONTEXTUALIZAÇÃO
Anualmente ocorrem várias competições de robóticas internacionais, como forma de
desenvolvimento e para atrair os jovens para esta área científica. Recentemente surgiu uma
nova liga na maior competição de robótica do mundo, chamada RoboCup@Work
(ROCKIN, 2014), que é destinada aos concorrentes que desejam competir no campo da
manipulação robótica móvel para ambiente industrial.
A competição é definida por várias tarefas, ou testes, nomeadamente:
Basic Manipulation Test (BMT);
Basic Transportation Test (BTT);
Conveyor Belt Test (CBT);
Precision Placement Test (PPT);
16
Basic Navigation Test (BNT).
O presente trabalho irá debruçar-se sobre a competição BNT.
1.2. OBJETIVOS PROPOSTOS
O objetivo do projeto envolve a simulação na aplicação Virtual Robot Experimentation
Platform (V-REP) (V-REP, 2014) do comportamento de uma plataforma KUKA youBot
(plataforma utilizada por todas as equipas participantes) (KUKA, 2014). O objetivo do
BNT é verificar se os robôs podem navegar bem no seu ambiente, ou seja, de um modo
autónomo, robusto e seguro.
Para atingir os objetivos propostos, é necessário criar um programa sólido e robusto em
linguagem Lua (LUA, 2014) e testar este num simulador. Isto envolve o estudo da
cinemática do robô, da sua mecânica, de Simultaneous Localization And Mapping (SLAM)
e perceção a partir de sensores.
1.3. CALENDARIZAÇÃO
A calendarização programada, teve por base a participação de uma equipa do ISEP na
competição do RoboCup@Work, apresentada na Tabela 1. Esta inclui um conjunto de
tarefas, como por exemplo: o estudo da robótica e simulação, decisões de projeto, trabalho
a implementar e testes funcionais.
Tabela 1 Calendarização do projecto.
1.4. ORGANIZAÇÃO DO DOCUMENTO
Este documento é constituído por 7 capítulos e 1 anexo, organizados da forma que se
descreve de seguida:
17
No Capítulo 1 é efetuada uma introdução ao trabalho realizado na UC de PESTA,
referindo-se brevemente a sua contextualização, os objetivos propostos para o trabalho, a
calendarização que foi definida para a sua realização e a organização do documento.
No Capítulo 2 aponta-se o estado da arte. Este capítulo é de extrema importância devido ao
seu grau de citações científicas, que poderá auxiliar trabalhos futuros no campo da
robótica, e também porque o autor teve a necessidade de explorar os temas abordados.
Seguidamente, no Capítulo 3, são referidas as ferramentas utilizadas no projeto. Após
análise do que existe no mercado e ensino, selecionaram-se as ferramentas para a execução
do presente projeto.
De seguida aborda-se a arquitetura do sistema no Capítulo 4. Aqui o leitor pode, de uma
forma fácil e direta, compreender a abordagem programática aplicada ao trabalho.
No Capítulo 5 descreve-se a programação desenvolvida e suas respetivas soluções.
Seguidamente, no Capítulo 6, descrevem-se os testes efetuados assim como os resultados
obtidos.
Finalmente, o Capítulo 7 é dedicado às principais conclusões extraídas deste trabalho e são
apresentadas diversas ideias de possíveis futuros desenvolvimentos, cuja implementação
poderá, na opinião do autor, contribuir para um melhor desempenho dos algoritmos
implementados e da solução proposta, como um todo.
No Anexo A encontra-se um CD-ROM com a diversa informação. A sua estrutura no
presente anexo vai sendo descrita ao longo do trabalho e novamente no Anexo A.
18
19
2. ESTADO DA ARTE
Este capítulo é um dos mais importantes do trabalho realizado para um iniciante em
robótica, uma vez que faz referência ao que já se conhece sobre o assunto pesquisado,
evitando que se perca tempo com investigações desnecessárias. Além disso, auxilia futuros
trabalhos dentro da competência do assunto tratado neste documento.
No estado da arte do presente documento, a respetiva explicação científica é abordada
através de 4 secções, nomeadamente: competições robóticas; robótica móvel; simulação
em robótica e automação; e planeamento e navegação.
2.1. COMPETIÇÕES ROBÓTICAS
Sendo o principal objetivo a promoção da ciência e da tecnologia junto dos jovens do
ensino básico, secundário e superior, bem como do público em geral, realizam-se
competições de robôs.
Existem muitas competições internacionais e nacionais, das quais se destacam a
competição RoboCup (ROBOCUP, 2014) e o Festival Nacional de Robótica (FESTIVAL
NACIONAL DE ROBOTICA, 2014).
20
2.1.1. ROBOCUP
O RoboCup é uma competição a nível mundial que se realiza todos os anos. Visa o estudo
e desenvolvimento da inteligência artificial (IA) e da robótica, fornecendo desafios e
problemas onde várias tecnologias e metodologias se podem combinar para obter os
melhores resultados (ROBOCUP, 2014).
Abaixo na Figura 1, pode-se observar uma prova do campeonato de RoboCup de 2013.
Figura 1 Middle size league robots da Universidade Tecnológica de Eindhoven. (ROBOCUP,
2014)
Cada edição é constituída por duas partes essenciais: as competições e o simpósio. As
competições dividem-se em três grupos (RoboCupSoccer, RoboCupRescue e
RoboCupJunior), sendo cada um composto por várias ligas. No simpósio, que decorre após
as competições, são apresentados e discutidos trabalhos científicos da área.
As equipas participantes nas competições têm por obrigação apresentar as soluções
desenvolvidas e disponibilizar o seu trabalho, sendo esta uma forma de incentivar a
contínua evolução de uma equipa, assim como o aparecimento de raiz de novas equipas já
com boa qualidade (ROBOCUP, 2014).
21
2.1.2. ROBOCUP@WORK
Esta é uma nova liga da competição RoboCup, no âmbito da manipulação robótica móvel
para ambiente industrial. Dentro desta competição existem diversas tarefas,
nomeadamente: BMT; BTT; CBT; Precision PPT) e BNT.
Abaixo pode-se observar o robô youBot da KUKA na arena, durante o encontro (Camp)
decorrido no RoCKIn@Work, Roma 2014.
Figura 2 Arena do RoCKIn@Work, Roma 2014.
Todas as provas acima mencionadas são realizadas dentro dum espaço confinado por
paredes entre 20 a 40 cm de altura de cor branca, e a arena deve ter dimensões
compreendidas entre 2 m × 4 m e 8 m × 10 m.
A arena pode conter uma ou mais áreas de serviço (ou locais), cada uma com um propósito
específico para determinada tarefa. Como exemplo, locais para carregar/descarregar
objetos.
Os locais estão devidamente identificados por marcadores, imagens a preto e branco da
biblioteca ARTToolKit (RULE BOOK, 2013) .
A prova BNT serve para verificar se os robôs conseguem navegar correctamente dentro da
arena, de forma orientada, autónoma e com segurança.
22
Para a execução desta prova, é enviado para o robô uma linha de texto descritiva (string),
que especifica a localização, orientação e duração da pausa. O robô tem de se mover para
os locais especificados pela string, devidamente orientado e cingido ao tempo de pausa.
Como exemplo de uma string enviada para o robô, pode-se mencionar a seguinte:
<(S3,N,1),(S4,E,2)>
Nesta, o robô deve dirigir-se para a área de serviço 3, com orientação Norte e aguardar 1 s.
Seguidamente o robô dirige-se para a área de serviço 3, com orientação Este e aguardar 2 s.
2.1.3. FESTIVAL NACIONAL DE ROBÓTICA
Decorre todos os anos numa cidade portuguesa distinta, e inclui um encontro científico
onde investigadores nacionais e internacionais da área da robótica se reúnem para
apresentar os mais recentes resultados da sua atividade (FESTIVAL NACIONAL DE
ROBOTICA, 2014). Aqui também são realizadas competições e é aqui que são apuradas as
equipas nacionais que participam no RoboCup.
A Figura 3, representa uma das provas, da competição realizada em Lisboa 2013.
Figura 3 Festival Nacional de Robótica 2013. (FESTIVAL NACIONAL DE ROBOTICA, 2014)
A Sociedade Portuguesa de Robótica (SPR) é a promotora do festival. Todos os anos
entrega a organização do festival a uma comissão organizadora local.
23
2.2. ROBÓTICA MÓVEL
Atualmente a robótica é uma ciência que já percorreu um longo caminho desde os seus
primórdios.
No passado, os robôs móveis (com locomoção própria) eram controladas por pesados e
dispendiosos computadores, que tinham que estar ligados por cabo ou por dispositivos sem
fios. Hoje em dia podem-se construir robôs móveis de pequenas dimensões, com pequenos
e numerosos atuadores e sensores de baixo custo, e com sistemas embebidos no chassis do
próprio robô (MOBILE ROBOTS, 2004).
A Figura 4, é um exemplo de um robô antigo, onde se pode verificar a complexidade do
sistema eletrónico, assim como as suas grandes dimensões.
Figura 4 Robô autónomo Gemini pela Artec Systens. (THE OLD ROBOTS, 2014)
Tem havido um grande aumento de interesse em robôs móveis, não apenas como
brinquedos mas como uma ferramenta excelente para a educação em engenharia.
Atualmente os robôs móveis são usados em quase todas as universidades, em cursos e pós-
24
graduações em Ciências de Computação, Engenharia da Computação, Tecnologias de
Informação, Cibernética, Engenharia Eletrotécnica, Engenharia Mecânica e Mecatrônica.
“O mundo perfeito que muitas vezes é o domínio de sistemas de software puro não existe
aqui.”. Qualquer atuador só pode ser posicionado com um certo grau de precisão, e todos
os sensores têm erros de leitura intrínsecos e determinadas limitações físicas. “Portanto,
um programa de robô vai ser muito mais do que apenas uma solução lógica codificada em
software.” (MOBILE ROBOTS, 2004).Existe no mercado uma grande variedade de robôs
móveis. A locomoção é um fator decisivo na sua escolha, pois esta depende da aplicação e
utilização nos mais diversos terrenos e para negociar obstáculos que o robô deve contornar
e/ou ultrapassar.
Escolher qual é o melhor sistema de locomoção para um robô não envolve somente o tipo
de terreno em que este se irá movimentar. É importante ver qual sistema gasta menos
energia, o que suporta a carga desejada, qual possui mais precisão, etc.
2.2.1. LOCOMOÇÃO COM RODAS
A roda é um dos mecanismos mais antigos que se conhece. Sejam elas simples para
superfícies planas, ou de outros tipos para planos mais acidentados.
Os robôs com locomoção de rodas podem ter duas, três, quatro, ou mais, rodas. A Figura
seguinte é demonstrativa da montagem de uma roda num robô, onde se pode verificar o
servomotor elétrico.
Figura 5 Exemplo de robô com locomoção de rodas. (SOCIETY OF ROBOTS, 2014)
25
Os robôs de rodas são o tipo mais comum. Normalmente duas rodas controlam a direção e
as outras duas são motrizes. Somente em casos especiais é que se encontram robôs com
controladores de direção nas quatro rodas, como por exemplo os robôs omnidirecionais.
2.2.2. LOCOMOÇÃO COM LAGARTAS
O movimento com uso de lagartas já é há muito empregue por tanques de guerra. Este
sistema provou ser eficaz em terrenos acidentados.
Nesse sistema, a ideia é ter uma sequência de peças de metal ou borracha por debaixo da
roda num processo rotativo contínuo.
Para que o robô faça uma curva para um dos lados, por exemplo, é preciso parar, reduzir a
velocidade ou girar no sentido contrário o motor que aciona a lagarta desse mesmo lado.
2.2.3. LOCOMOÇÃO COM PERNAS
Criar um robô que tenha movimentos idênticos aos dos humanos é um objetivo desejado
por muitos cientistas. Contudo o corpo humano é um sistema muito bem elaborado e
recriar esses movimentos na mecânica requer muita perícia e destreza (INSTITUTO
NEWTON BRAGA, 2014).
No entanto, os robôs com pernas nem sempre procuram a parecença com os seres
humanos. Isto pode-se verificar nos robôs com 4, 6 ou mais pernas.
Um bom exemplo desta locomoção é o robô Asimo, demonstrado na Figura 6, fabricado
pela Honda. A amplitude dos seus movimentos e a autonomia da bateria, fazem deste o
robô “quase perfeito”.
Figura 6 Asimo da Honda. (ASIMO HONDA, 2014)
26
2.2.4. LOCOMOÇÃO HÍBRIDA
Como o próprio nome indica, a locomoção híbrida incorpora vários tipos de locomoção.
Podem-se combinar movimentos com rodas e lagartas, pernas com rodas, tudo dependendo
da criatividade do cientista/projetista.
Sem sombra de dúvida que é um grande desafio. Como exemplo, a NASA, com a
necessidade de explorar o planeta Marte, construiu um sistema com pernas e rodas e com
espigões para enfrentar as pedras e o terreno desconhecido deste planeta (NASA, 2014).
Na imagem seguinte pode-se ver uma ilustração do Rover Curiosity da NASA no planeta
Marte.
Figura 7 Curiosity Rover explorador da superfície do planeta Marte (NASA, 2014).
2.3. SIMULAÇÃO EM ROBÓTICA E AUTOMAÇÃO
A simulação é usada como um método mais rápido e mais simples para testar ideias,
teorias e neste caso, software e comportamentos dos robôs.
A simulação também tem as suas desvantagens. Isto ocorre porque as simulações apenas
simulam o que o utilizador configurar na simulação (por exemplo, atrito, massa e
gravidade).
27
Se o comportamento do robô funcionar bem na simulação não significa que ele irá
funcionar bem num modelo real e em tempo real. Pode-se empreender muito tempo para
realizar uma simulação quase perfeita, mas o tempo e o trabalho dedicada a esta, pode não
compensar face a uma experiência com um robô verdadeiro.
É aconselhável antes de iniciar uma simulação, decidir o que se pode simplificar e o que
tem de ser necessariamente realista.
Existe no mercado atualmente uma grande diversidade de simuladores livres (open source)
e comerciais para a robótica, dos quais se destacam os seguintes:
Gazebo (GAZEBO, 2014);
Microsoft Robotics Developer Studio (MICROSOFT, 2014);
OpenSim (OPENSIM, 2014);
SimRobot (SIMROBOT, 2014);
V-REP (V-REP, 2014);
WeBots (WEBOTS, 2014);
Tabela 2 Comparação entre alguns dos Simuladores.
Gazebo
Microsoft
Robotics
Developer
Studio
OpenSim SimRobot V-REP WeBots
Licença Livre Comercial Livre Livre
Comercial
Educacional
Livre
Comercial
Plataforma Linux Windows Linux
Linux
Windows
OS/2
Linux
Windows
MacOS
Linux
Windows
MacOS
Embora sendo comercial, o V-REP da Coppelia Robotics, é um simulador com inúmeras
funções, recursos ou APIs. É usado para o desenvolvimento de algoritmos, simulações
industriais, e no ensino de robótica (V-REP, 2014).
Atualmente este dispõe de uma licença gratuita para a educação, com todas as
caraterísticas de uma versão comercial. Este simulador também inclui na sua biblioteca o
28
robô que se pretende utilizar (youBot), e é disponibilizado para multiplataforma
(Windows, Linux, MacOS).
Após conversa com o docente e orientador deste projeto, observou-se que o V-REP PRO
EDU V3.1.0 (versão Educacional disponível à data do relatório) seria a escolha acertada
para a elaboração deste projeto.
2.4. PLANEAMENTO E NAVEGAÇÃO
Diversas abordagens têm sido propostas para resolver o problema da navegação na
robótica móvel.
Após a análise destas, verifica-se que entre elas existem muitas semelhanças sendo a
grande diferença a maneira como estas são decompostas, na resolução da sua arquitetura,
afim de melhorar possíveis fraquezas do algoritmo (MOBILE ROBOTS, 2004).
O primeiro passo que se deve realizar, para que a navegação seja efetuada da melhor forma
possível, é pela decomposição dos obstáculos num mapa discreto (determinístico). Com
este planeamento evitam-se os obstáculos na navegação e determina-se o menor
caminho/rota a percorrer até o destino/objetivo.
Dentro destes parâmetros destacam-se três estratégias para uma decomposição do espaço
ou meio envolvente:
Mapa de rotas - Identificação de uma série de rotas dentro do espaço livre;
Decomposição em células - Forma discriminativa entre células livres e células
ocupadas numa matriz;
Campo potencial - Imposição de uma função matemática no espaço.
Independentemente da estratégia usada, para obter resultados fidedignos, o robô não deve
apenas criar um mapa, mas deve fazê-lo enquanto se move e explora o espaço circundante.
Este conceito é conhecido por localização e mapeamento simultâneo ou SLAM.
A implementação do SLAM é difícil devido à interação entre a posição do robô e as suas
ações de mapeamento. Se a posição do robô é imprecisa, a posição resultante do obstáculo
no mapa, é correlacionada com essa imprecisão.
29
A figura seguinte, demonstra uma implementação por blocos do SLAM, assim como se
pode observar na Figura 9 uma representação gráfica do mapa obtido por uma
implementação do SLAM e os seus respetivos erros.
Figura 8 Arquitetura do funcionamento do SLAM. (MOBILE ROBOTS, 2004)
Figura 9 Erro associado ao SLAM assinalado a vermelho na figura.
30
2.4.1. DECOMPOSIÇÃO APROXIMADA EM CÉLULAS
A decomposição celular aproximada é uma das técnicas mais populares para o
planeamento de trajetórias na robótica móvel. Isto é em parte devido à popularidade de
representações ambientais, baseadas em sistemas de grelha e/ou matrizes (pixéis)
(MOBILE ROBOTS, 2004).
A decomposição em células de tamanho fixo é a técnica mais comum e mais usada
atualmente na robótica móvel para a representação de mapas e planeamento para a
navegação. O tamanho da célula não depende dos objetos no meio ambiente, e
eventualmente nas passagens mais estreitas pode-se perder informação, devido à
imprecisão da grelha.
Em termos práticos, raramente isto é um problema, devido ao tamanho de célula usada,
que geralmente é muito pequena (por exemplo, 5 cm de lado). A grande vantagem da
decomposição celular de tamanho fixo é a baixa capacidade computacional face à
decomposição celular de tamanho variável e por conseguinte a sua baixa complexidade do
planeamento no trajetória.
A figura seguinte demonstra a decomposição dos obstáculos em células de tamanho fixo.
Figura 10 Decomposição em células de tamanho fixo. (MOBILE ROBOTS, 2004)
A principal desvantagem desta abordagem reside no tamanho que o mapa ocupa na
memória do robô, que cresce em função do tamanho do ambiente.
O mapa é representado por uma matriz discreta, onde cada célula está ocupada (faz parte
de um obstáculo) ou livre (espaço vazio). Assim, de forma determinística, o valor da célula
pode ser 1 ou 0 consoante esta tenha respetivamente obstáculo ou não.
31
O algoritmo da transformação da distância (também conhecido como frente de onda ou
métodos de incêndios florestais) é um algoritmo de propagação largamente usado na
decomposição celular e planeamento da trajetória/caminho exato.
Este método formula um planeamento baseado numa matriz que leva em conta a
proximidade de obstáculos e permite gerar interpolações contínuas de várias direções de
uma forma gradual em qualquer ponto na matriz.
Como exemplo, é a presentada a Figura 11, onde se pode verificar as células que contêm
obstáculos e as células livres com a respectiva distância ao objetivo.
Figura 11 Exemplo de uma matriz pela transformação da distância. (MOBILE ROBOTS, 2004)
Com este tipo de planeamento o que importa é a capacidade do robô em navegar a partir da
sua posição atual (uma célula livre) para uma eventual célula livre adjacente com o menor
valor de distância.
A navegação e a orientação do robô fica assim limitada a ângulos múltiplos de 45º, e a
velocidade do robô, pode ser em função da diferença do ângulo pretendido com o ângulo
atual da posição do robô (EUCLIDEAN, 2013).
Existem vários algoritmos de computação para calcular estas distâncias, nomeadamente:
City block;
Chessboard;
Euclidean.
A matriz de cálculo para cada um dos métodos acima referidos, pode ser observada na
Figura 12.
32
Devido à natureza da sua precisão, usa-se neste trabalho a transformação de distâncias
pelo algoritmo Euclidean.
Figura 12 Janela de visualização para a transformação de distâncias. Adaptado de
(EUCLIDEAN, 2013)
33
3. FERRAMENTAS
UTILIZADAS NO PROJETO
Para a elaboração deste trabalho, verificou-se a necessidade de utilizar determinadas
ferramentas. Entre estas encontra-se o robô youBot da KUKA (KUKA, 2014), o simulador
V-REP (V-REP, 2014) assim como o conceito e algoritmo de mapeamento que permite o
planeamento e respetiva navegação do robô.
3.1. PLATAFORMA OMNIDIRECIONAL KUKA YOUBOT
Como a intenção deste projeto é a participação numa competição de robótica, o
RoboCup@Work, e a organização deste estabelece parâmetros muito rígidos em relação ao
tipo de plataforma a ser utilizado pelos seus concorrentes (RULE BOOK, 2013), a escolha
do robô para este projeto recai na plataforma KUKA youBot, atualmente reconhecida e
aceite pela referida organização do evento, sendo também esta a plataforma usada por
todos os concorrentes.
O KUKA youBot é uma plataforma móvel omnidirecional com quatro rodas do tipo
Mecanum, ou Swedish (MECANUM WHEEL, 2010), de rolamentos com uma inclinação
angular γ de 45º. Isto significa que o robô pode movimentar-se em qualquer direção e
34
sentido, graças à configuração única das suas rodas, com uma velocidade máxima de
0,8 ms-1
, de acordo com o fabricante (YOUBOT, 2013).
A base da plataforma tem também um braço com 5 articulações e uma garra para manusear
pequenos objetos até 0,5 kg.
Com uma base de dimensões de 0,38 m × 0,58 m × 0,14 m e pesando 20 kg (o mesmo
valor que consegue suportar ou transportar), fazem deste um robô versátil para o ensino da
robótica.
As suas rodas possuem um diâmetro de 47,5 mm e distam ao centro da plataforma 0,228 m
× 0,158 m, como se pode observar na Figura 13. Para impor velocidade nestas, o robô
dispõe de quatro motores elétricos de 24 V com um binário nominal de 82,7 mNm.
Figura 13 Plataforma KUKA youBot.
35
3.2. CINEMÁTICA DA PLATAFORMA KUKA YOUBOT
O primeiro passo para um modelo cinemático do robô é expressar restrições sobre os
movimentos das rodas individuais. Assim, os movimentos destas podem ser combinados
para calcular o movimento do robô como um todo (MOBILE ROBOTS, 2004).
Assume-se que o plano da roda permanece sempre na vertical e que existe em todos os
casos um único ponto de contacto entre a roda e o plano do solo. Além disso, assume-se
que não há ajudas externas a esta. Ou seja, a roda sofre movimento apenas sob condições
de rolamento puro e rotação em torno do eixo vertical através do ponto de contacto.
A figura seguinte representa uma roda do tipo Mecanum, onde se pode verificar os
rolamentos activos assim como os vectores associados à velocidade da mesma.
Figura 14 A roda do tipo Mecanum e os seus parâmetros (OMIDIRECTIONAL, 2007).
Quando as rodas do tipo mecanum são acionadas, os rolamentos periféricos angulares
traduzem uma porção de força no sentido de rotação da roda para uma força normal à
direção da roda. Dependendo da direção e velocidade de cada roda individual, a
combinação resultante de todas essas forças produzem um vetor de força total em qualquer
direção desejada, permitindo, assim, à plataforma mover-se livremente na direção da força
de vetor resultante.
Na Figura 15 observa-se as 4 rodas do tipo mecanum montadas numa plataforma, onde se
pode verificar o grau do posicionamento dos rolamentos face ao centro geométrico da
plataforma.
36
Figura 15 Coordenação das rodas do robô. (OMIDIRECTIONAL, 2007)
Se se considerar um plano XSOSYS enquadrado no chassis do robô, podem-se escrever as
equações de velocidade (OMNIDIRECTIONAL, 2007) conforme a equação (1):
. (1)
Onde R é o raio da roda, ωi é a velocidade angular da roda (i = 1 .. 4), l1, l2 são as
distâncias entre eixos de rodas e centro da plataforma (OMNIDIRECTIONAL, 2007).
Na figura seguinte é demonstrado a actuação das rodas necessárias para o movimento da
base.
Figura 16 Atuação das rodas Mecanum necessária para movimentos genéricos
(OMIDIRECTIONAL, 2007).
37
Se a velocidade do robô é imposta, tem que se determinar a velocidade angular de cada
uma das rodas (cinemática inversa), conforme demonstrado na equação (2):
.
(2)
3.3. V-REP – VIRTUAL ROBOT EXPERIMENTATION PLATFORM
Para a realização de todas as simulações inerentes a este projeto foi adotada a aplicação V-
REP devido a ser aquela que dispunha de uma licença educacional completamente
funcional a título gratuito.
O V-REP é um programa de simulação robótica, projetado para ter uma arquitetura fácil,
versátil e intuitiva.
Não existe uma função principal (main), como é habitual em C, assim como em outras
linguagens de programação. Em vez disso, o V-REP dispõe de várias funções (scripts)
independentes ou associadas a objetos, cujas funções podem ser ativadas ou desativadas,
mediante a necessidade.
Uma nova scene V-REP pode conter vários objetos de scene, ou objetos elementares que
são montados numa hierarquia do tipo árvore, nomeadamente (os mais importantes para
este projeto):
Joints: São junções de dois ou mais objetos, com um a três graus de liberdade de
movimento (por exemplo, prismática, revolução e esférica).
Shapes: Formas e objetos em 3D, utilizadas para visualização de um corpo rígido. Outros
objetos ou módulos de cálculo, por vezes, dependem destas formas para a sua deteção de
colisão, cálculo de distância mínima, entre outras.
Proximity sensors: Os objetos sensores de proximidade determinam de forma exata a
distância deste a um objeto, dentro de um determinado volume de deteção.
Force sensors: São ligações rígidas entre formas, que podem exibir ou gravar forças e
binários aplicados entre estas.
38
Graphs: São objetos para exibição de fluxo de dados de uma scene, os quais podem ser
apresentados em gráfico de tempo real, curva do tipo X/Y ou em curvas do tipo 3D.
Embora este simulador seja uma ferramenta muito útil, este requer um motor (algoritmo)
para correr a sua simulação. O V-REP dispõe de dois tipos: o Bullet e o ODE com um
intervalo de tempo ou iteração (timestep) que pode variar entre 10 ms a 200 ms (V-REP,
2014).
O ciclo de repetição deste simulador, pode ser analisado pelo diagrama de blocos
apresentado na Figura 17.
Este diagrama demonstra que o ciclo de relógio (timestep) não depende da extensão do
código que se irá usar nos scripts.
Figura 17 Diagrama de blocos do ciclo de repetição de simulação em V-REP (V-REP, 2014).
O V-REP dispõe de vários meios para controlar simulações ou até mesmo para
personalizar o próprio simulador. Este tem uma biblioteca de funções, as quais requerem
um aplicativo do tipo cliente para ser executado.
Além deste, dispõe de uma linguagem incorporada (LUA CONCEITOS, 2008) que dispõe
de vários comandos especiais em V-REP. Os scripts deste são o mecanismo de controlo
principal para uma simulação, e é com base nesta linguagem que se desenvolve a
programação neste projeto.
39
Este simulador, para além de usar variáveis globais para permitir a partilha de informação
entre os diversos scripts, usa também uma tecnologia de comunicação do tipo tube.
Os tubes são linhas de comunicação bidirecional semelhantes a pipes. A denominação tube
foi selecionada com a finalidade de evitar confusão com pipe, uma vez que o tube não
pode ser usado para comunicar com o mundo exterior.
Este é um meio muito conveniente e fácil para conectar duas entidades e trocar
informação.
A arquitetura de controlo do simulador V-REP é representada abaixo na Figura 18, onde se
pode ver a interação dos diversos APIs com o núcleo do programa. Aqui torna-se evidente
que a linguagem usada pelo V-REP é a Lua e o C/C++.
Figura 18 Arquitetura de controlo do simulador V-REP. (V-REP, 2014)
40
41
4. ARQUITETURA DO
SISTEMA
Pretende-se com o desenvolvimento deste trabalho, que a implementação da sua
arquitetura fosse não só capaz de correr na simulação, mas que fosse também dinâmica de
forma ser implementada no robô.
A arquitetura do sistema é um conjunto de elementos arquiteturais (de dados,
processamento e conexão) que possuem alguma organização. Os respetivos elementos e a
sua organização são delimitados por condições de forma a satisfazer determinados
objetivos.
Este conceito ajuda a definir o sistema em blocos computacionais e os relacionamentos
entre estes. Visualmente, tem como principal finalidade a acessibilidade no entendimento
por parte do interessado, uma vez que irá filtrar e formatar a informação.
Como referido anteriormente, o robô em usado é o youBot e a empresa KUKA fornece este
modelo para o simulador V-REP, o qual se já se encontra dentro da biblioteca do
simulador, na secção de robôs móveis. Como este modelo dispõe de diversos scripts, de
forma a manter um código flexível e reutilizável implicou manter os mesmos.
42
Para este efeito, desenvolveu-se uma arquitetura básica de funcionamento, com apenas três
blocos:
Cinemática;
Percepção e Localização;
Planeamento e Navegação.
Inclui-se também um bloco de Interface de utilizador e de Gráficos para que o utilizador,
na simulação, possa introduzir dados através de uma linha de comandos e observar o
comportamento do robô na simulação.
Como foi dito anteriormente, não se eliminou nenhum código existente deste modelo, mas
sim acrescentou-se esta arquitetura ao código existente, como se pode observar na
Figura 19.
O diagrama de blocos da Figura 19, encontra-se dividido em três secções. A secção a
cinzento claro é referente ao código do youBot, já existente no script, cinzento-escuro
encontram-se as secções menos relevantes para o funcionamento do youBot, e a preto as
secções fundamentais.
Figura 19 Diagrama de blocos da arquitetura do sistema e sua integração no script do youBot
43
4.1. INTERFACE DO UTILIZADOR
Para a realização da simulação da BNT, o utilizador deverá inserir numa linha de comando
uma string formatada do tipo (<localização>,<orientação>,<pausa>), onde:
<localização>: designa um dos lugares específicos do ambiente (por exemplo, D0, D1,
D2, O1, S2, S3, T2, T4, T6);
<orientação>: é um dos (N, P, S, W);
<pausa>: é um número inteiro com um algarismo entre 1 e 3 que indica quanto tempo
deve o robô permanecer em pausa (em segundos) antes de iniciar a próxima tarefa.
Um exemplo de uma string contendo uma determinada tarefa para o robô será
<(S1,E,1),(D1,W,1),(S3,E,1),(D2,W,1)> (RULE BOOK, 2013).
Como não se pretende que a string seja sensível a maiúsculas/minúsculas, o algoritmo que
efetua a leitura destes caracteres, deve converter todo o texto para maiúsculas, com a
finalidade de evitar erros de leitura da introdução.
Com a introdução desta string, o robô deverá saber para onde se dirigir no mapa, com que
orientação deve permanecer na localização, assim como o tempo de espera até iniciar uma
nova navegação para um novo objetivo.
4.2. CINEMÁTICA
Este bloco é o responsável pela determinação da velocidade do robô no plano
global/inercial. É de extrema importância que os valores obtidos aqui sejam os mais
corretos possíveis, na medida em que todos os cálculos restantes se apoiam neste resultado.
Desta forma, obtêm-se os valores das velocidades de cada roda através dos sensores
odométricos do bloco da cinemática. Como pode ser analisado na Figura 20, estão
estruturados os sub-blocos que compõem o bloco da cinemática, nomeadamente:
Sensores odométricos das rodas;
Cinemática do robô;
Erro e correção da cinemática;
Sensor de força – giroscópio;
Velocidade do robô no referencial global/inercial.
44
Figura 20 Diagrama do bloco cinemática.
4.2.1. SENSORES ODOMÉTRICOS DAS RODAS
Neste campo é realizada a leitura dos encoders de cada uma das rodas. Os valores obtidos
encontram-se em rad/s, pelo que posteriormente será necessário converter estes para m/s.
4.2.2. CINEMÁTICA DO ROBÔ
Com as velocidades adquiridas pelos sensores odométricos das rodas, é agora necessário
determinar a velocidade no plano do robô segundo a equação (2), adaptada da equação (1),
de acordo com as expressões seguintes.
(3)
(4)
(5)
4.2.3. ERRO E CORREÇÃO DA CINEMÁTICA
Quer neste trabalho, tratando-se de uma simulação, assim como numa aplicação real, a
cinemática determinada não é precisa e tem erros. Após efetuar uma simulação no V-REP,
obteve-se o seguinte gráfico da Figura 21.
45
Figura 21 Gráfico obtido das velocidades pela cinemática do simulador.
Neste gráfico, a azul pode-se observar a velocidade transversal real do robô na simulação,
e a verde o valor obtido, em função da velocidade longitudinal, pela determinação da
cinemática.
Após a obtenção destes dados, que podem ser verificados na íntegra no Anexo A,
determinou-se, por linearização, a equação da velocidade transversal, em função das
velocidades transversal, longitudinal e rotacional determinadas pela cinemática.
A reflexão consiste em obter uma equação da velocidade, em função das velocidades
determinadas pela cinemática das rodas do robô, como se pode verificar na equação (6) e
equação (7).
(6)
(7)
-0,3000
-0,2000
-0,1000
0,0000
0,1000
0,2000
0,3000
0,00 2,00 4,00 6,00 8,00 10,00 12,00 14,00 16,00 18,00 20,00
y_odo x_real(x_odo)
x_real(x_odo+y_odo) x_real(x_odo+z_zodo)
x_real(x_odo+y_odo+z_odo)
46
Fazendo uso de uma ferramenta matemática computacional (neste caso o wxMáxima),
obteve-se a seguinte função matemática para o cálculo da velocidade transversal:
fx_x:843.13*x^4+2.3259*x^3-161.78*x^2-
0.079*x+100.17;
fx_xy:-1576.6*(x+y)^6-
80.75*(x+y)^5+635.01*(x+y)^4+21.431*(x+y)^3-
123.54*(x+y)^2-0.6938*(x+y)+99.973;
fx_xz:-20.072*(x+z)^6-
1.6276*(x+z)^5+29.215*(x+z)^4+1.3755*(x+z)^3-
26.078*(x+z)^2-0.2226*(x+z)+100.06;
fx_y:fx_xy-fx_x;
fx_z:fx_xz-fx_x;
fx:ratsimp(fx_x+fx_y+fx_z);
fx:-
(200720*z^6+(1204320*x+16276)*z^5+(3010800*x^2+81
380*x-292150)*z^4+(4014400*x^3+162760*x^2-
1168600*x-13755)*z^3+(3010800*x^4+162760*x^3-
1752900*x^2-
41265*x+260780)*z^2+(1204320*x^5+81380*x^4-
1168600*x^3-
41265*x^2+521560*x+2226)*z+15766000*y^6+(94596000
*x+807500)*y^5+(236490000*x^2+4037500*x-
6350100)*y^4+(315320000*x^3+8075000*x^2-
25400400*x-
214310)*y^3+(236490000*x^4+8075000*x^3-
38100600*x^2-
642930*x+1235400)*y^2+(94596000*x^5+4037500*x^4-
25400400*x^3-
642930*x^2+2470800*x+6938)*y+15966720*x^6+823776*
x^5+1789050*x^4-204806*x^3-121620*x^2+8374*x-
998630)/(10000)
Da mesma forma, foi determinada a equação para a velocidade longitudinal, em função das
velocidades transversal, longitudinal e rotacional:
fy_y:-21442*y^6+6734.4*y^5+2407.5*y^4-522.25*y^3-
163.99*y^2+10.09*y+100.18;
fy_xy:-
1829.7*(x+y)^6+140.28*(x+y)^5+711.98*(x+y)^4-
45.902*(x+y)^3-
128.44*(x+y)^2+4.5564*(x+y)+100.01;
fy_yz:6.898*(y+z)^4-2.9098*(y+z)^3-
16.86*(y+z)^2+1.7004*(y+z)+99.834;
fy_x:fy_xy-fy_y;
fy_z:fy_yz-fy_y;
47
fy:ratsimp(fy_x+fy_y+fy_z);
fy:(34490*z^4+(137960*y-14549)*z^3+(206940*y^2-
43647*y-84300)*z^2+(137960*y^3-43647*y^2-
168600*y+8502)*z+98061500*y^6+(-54891000*x-
32970600)*y^5+(-137227500*x^2+3507000*x-
8443110)*y^4+(-
182970000*x^3+7014000*x^2+14239600*x+2367191)*y^3
+(-137227500*x^4+7014000*x^3+21359400*x^2-
688530*x+93450)*y^2+(-
54891000*x^5+3507000*x^4+14239600*x^3-688530*x^2-
1284400*x-19166)*y-
9148500*x^6+701400*x^5+3559900*x^4-229510*x^3-
642200*x^2+22782*x+498320)/(5000)
4.2.4. SENSOR DE FORÇA - GIROSCÓPIO
Embora a velocidade rotacional do robô possa ser determinada pela cinemática acima
referida (ver equação (5)), a inclusão de um giroscópio ajuda a determinar com maior
exatidão a velocidade angular em torno do eixo do z do robô em rads-1
.
Comparando os valores de ambas as velocidades, suprimiu-se a velocidade rotacional
determinada pela cinemática, devido à velocidade obtida pelo sensor do giroscópio ser
mais precisa.
4.2.5. VELOCIDADE DO ROBÔ NO REFERENCIAL GLOBAL/INERCIAL
Como foi dito anteriormente, a velocidade obtida através do cálculo da cinemática é
relativa ao plano do robô. Para a conversão desta para o referencial inercial, é necessário
converter a velocidade transversal e longitudinal segundo a seguinte equação (MOBILE
ROBOTS, 2004):
(8)
Não é necessário converter a velocidade rotacional uma vez que esta é a mesma para o
plano do robô assim como no referencial global.
4.3. PERCEÇÃO E LOCALIZAÇÃO
Após a obtenção das velocidades do robô no referencial inercial, é necessário determinar a
localização do mesmo neste referencial, assim como determinar os obstáculos que aqui se
encontram, como representado na Figura 22.
48
Figura 22 Diagrama de blocos referente ao módulo de perceção e localização.
Como a localização do robô é um ponto (correspondente ao seu centro geométrico), neste
ponto também é importante identificar no mapa uma área de segurança em relação aos
obstáculos encontrados. Esta área de segurança é, de acordo com o raio do robô (r),
demonstrada na Figura 23 (YOUBOT, 2013).
Figura 23 Dimensões do KUKA youBot.
49
4.3.1. POSIÇÃO DO ROBÔ NO REFERENCIAL GLOBAL/INERCIAL
Para a obtenção desta, é necessário efetuar uma integração das velocidades do robô
(determinadas no bloco da cinemática) de acordo com a seguinte equação (POSITION,
2012).
(9)
4.3.2. SENSOR LASER HOKUYO URG-04LX-UG01
Como a KUKA comercializa um modelo do youBot com um sensor LASER Hokuyo
URG-04LX-UG01 montado, optou-se por escolher este modelo da Hokuyo para realizar a
simulação. Como tal, no V-REP, foi acoplado no robô o referido sensor (HOKUYO,
2014).
Este envia um vetor de dados com o ângulo e distância do obstáculo encontrado em relação
ao referencial do LASER. Para a utilização deste no referencial do robô é necessário a
conversão destes valores, de acordo com a Equação (10), determinada analiticamente de
acordo com a Figura 24.
Figura 24 Relação do ângulo ao obstáculo obtido pelo LASER e o robô.
50
(10)
4.3.3. CRIAÇÃO DE MAPA DE OBSTÁCULOS
Após a obtenção da posição dos obstáculos pelo sensor LASER Hokuyo, insere-se essa
informação numa matriz dividida em células, onde a informação da posição do
ponto/obstáculo é adicionada consoante as suas coordenadas nessa matriz.
4.3.4. DIMENSÕES REDUZIDAS DO MAPA DE OBSTÁCULOS
Com a finalidade de não sobrecarregar o processamento do sistema em células de
matrizes/mapas que não sofreram qualquer tipo de alteração, determina-se uma dimensão
reduzida do mapa, como mostra a figura seguinte.
Figura 25 Demonstração da matriz/mapa reduzido.
4.3.5. CRIAÇÃO DE MAPA DE OBSTÁCULOS COM MARGEM DE SEGURANÇA
Como foi dito inicialmente, para uma navegação segura do robô é adicionada uma margem
de segurança ao mapa de obstáculos, de forma a que, ao calcular a navegação tendo em
consideração o seu centro geométrico, o robô não colida com os obstáculos.
51
A Figura 26 demonstra a representação da margem de segurança face a um obstáculo
encontrado.
Figura 26 Criação de margem de segurança de acordo com um determinado raio.
O pseudo código para a criação da circunferência de segurança é o seguinte (CIRCLE
ALGORITHM, 2003):
dA=12;
dB=20-8*R;
while (x<y)
plot(x,y);
if(d<0)
d=d+dA; dB=dB+8;
else
y=y-1;
d=d+dB;
dB=dB+16;
end if
x=x+1;
dA=dA+8;
end while
Com este código não se perde demasiado tempo de processamento, a preencher o interior
do círculo. Para definir uma área de segurança em torno de um obstáculo este algoritmo é o
suficiente.
4.4. PLANEAMENTO E NAVEGAÇÃO
Este é o bloco responsável pela navegação do robô. Para que o robô a possa fazer é
necessário efetuar e determinar um planeamento com segurança, e que corresponda ao
trajeto o mais curto possível entre a posição inicial do robô e o seu objetivo (VARIOS,
2014).
Como pode ser analisado na Figura 27, estão aqui estruturados os sub-blocos que
compõem o bloco do planeamento e navegação, nomeadamente:
Criação de mapa de navegação;
52
Orientação e decisão do sentido de rotação;
Definição da velocidade do robô;
Suavização do impulso da velocidade a impor.
Figura 27 Diagrama do bloco planeamento e navegação.
4.4.1. CRIAÇÃO DE MAPA DE NAVEGAÇÃO
Sabendo a posição atual do robô no referencial global e conhecendo o mapa de obstáculos,
é determinado um mapa/matriz do mesmo tamanho das matrizes anteriores, em que o
conteúdo desta nova matriz contém a distância de cada célula até ao destino, de forma a
contornar os obstáculos com a respetiva margem de segurança.
Esta matriz é determinada de acordo com o seguinte pseudo código do algoritmo da
transformação da distância de Jarvis (EUCLIDEAN, 2013):
Input I – a binary map
i, j – coordinates of goal
Output d a matrix with the distances until the goal
Initialize d according to eq. 1 repeat
for each line from the top of the map do
for each cell from left to right do
apply scan window 1
update d according to eq. 2
53
end for
end for
for each cell from the bottom of the map do
for each line from right to left do
apply scan window 2
update d according to eq. 2 end for
end for
until no change
Com esta transformação, a matriz fica reduzida a um mapa (Figura 28), onde cada posição
tem a respetiva distância da sua célula até à célula de destino. Neste mapa pode ser
graficamente visualizado, uma escala de cores, onde as células são tanto mais escuras
quanto maior a distância ao objectivo. Para além disso, os obstáculos ou área de segurança,
encontram-se representados a preto.
Figura 28 Escala de cores de mapa de navegação criado no Excel.
54
4.4.2. ORIENTAÇÃO E DECISÃO DO SENTIDO DE ROTAÇÃO
Conhecendo o mapa de navegação, determinado no ponto anterior, analisam-se as células
adjacentes da matriz e é determinada a orientação que o robô deve tomar de acordo com a
escolha da célula com o menor valor das células adjacentes àquela em que o robô se
encontra, como é ilustrado na figura seguinte.
Figura 29 Esquema de decisão à navegação.
Como a velocidade é um fator decisivo numa competição, é determinado qual o sentido de
rotação de forma que a diferença angular a percorrer entre a orientação do robô e a célula
selecionada seja a menor.
4.4.3. DEFINIÇÃO DA VELOCIDADE DO ROBÔ
Como o robô dispõe de três graus de liberdade (Degrees of Freedom - DOF)
(KINEMATIC MODELING, 1986), a velocidade rotacional, transversal e longitudinal é
determinada em função da diferença angular entre a posição atual do robô e a orientação
pretendida. Para uma melhor compreensão, a definição da diferença angular é demonstrada
na figura seguinte.
Figura 30 Imagem demonstrativa da diferença de ângulos para a navegação.
55
Para a obtenção da velocidade do robô, são apresentados abaixo três gráficos onde se pode
observar a velocidade rotacional, transversal e longitudinal, respectivamente, em função da
diferença angular acima referida.
Figura 31 Gráfico para a velocidade rotacional do robô.
Figura 32 Gráfico para a velocidade transversal do youBot.
Figura 33 Gráfico para a velocidade longitudinal do robô.
56
4.4.4. SUAVIZAÇÃO DO IMPULSO DA VELOCIDADE A IMPOR
Como a velocidade imposta pelo algoritmo acima mencionado é brusca, este campo é
responsável pela suavização deste impulso. Desta forma não existem acelerações
instantâneas, mas sim graduais.
A equação matemática utilizada é a Equação 11, onde:
vf - é a velocidade final;
vi - velocidade inicial;
vd - velocidade desejada.
(11)
Figura 34 Exemplo de suavização do impulso da velocidade imposta ao youBot.
Na equação (11) o fator 1.4 foi determinado de forma a que o declive resultante, não seja
superior ao declive formado pela aceleração do youBot. Este cálculo pode ser observado
no ficheiro de Excel que se encontra no Anexo A.
No Anexo A pode-se observar que as velocidades impostas ao robô não são instantâneas.
Estas, de acordo o o motor dinâmico de simulação, possuem um declive devido a fatores
como por exemplo, a inercia.
Esta experiência pode ser observada no referido ficheiro de Excel, na página
“teste_degrau”.
57
5. PROGRAMAÇÃO
REALIZADA
Este capítulo, pela natureza do código, seria extenso. Como alternativa, a programação
pode ser observada no ficheiro bnt_scene.ttt que se encontra no Anexo A.
O algoritmo encontra-se devidamente comentado no script do youBot, como mostra a
seguinte figura.
Figura 35 Gráfico para a velocidade transversal do youBot.
58
Basta clicar com o ponteiro do rato duas vezes sobre o ícone do script (delimitado pela
circunferência de contorno vermelho na Figura 35), que se irá abrir uma nova janela com
todo o código associado ao robô.
No entanto, este Capítulo trata de alguns aspetos construtivos que, na opinião do autor, são
importantes.
5.1. CICLO DE REPETIÇÃO DO ALGORITMO
Como já foi referido no capítulo anterior relativo à arquitetura do sistema, a programação
foi efetuada no script do youBot no simulador V-REP. A linguagem utilizada é a Lua
(LUA CONCEITOS, 2008).
A linguagem Lua é muito semelhante a Python, Ruby, entre outras. Devido à sua eficiência
e simplicidade esta foi adotada para a programação e desenvolvimento de jogos.
A programação foi dividida em blocos, de forma muito semelhante ao descrito no capítulo
anterior. No entanto, acrescem condições para a realização eficaz da simulação. Esta
organização rege-se de acordo com o fluxograma apresentado na Figura 35.
As funções mais usadas, assim como a inicialização de variáveis, são colocadas na parte
superior do código, que é executado apenas uma única vez.
O restante código é processado no simulador com uma frequência predefinida de 20 Hz
(timestep = 50 ms) enquanto a simulação se encontra a decorrer. Este valor pode ser
alterado pelo utilizador, de acordo com o manual do programa V-REP (V-REP, 2014).
Com a finalidade de não desperdiçar tempo útil do processamento, o bloco da “Perceção e
localização”, assim como os blocos do “Planeamento e navegação” e “Gráfico”, apenas são
processados no caso de haver um objetivo ou tarefa para o robô desempenhar.
59
Figura 36 Fluxograma do sistema e sua integração no script do YouBot
5.2. POSIÇÃO DO BRAÇO DO ROBÔ PARA NAVEGAÇÃO
É de referir que para a navegação se realizar com segurança, o braço do robô deve estar
devidamente recolhido como mostra a Figura 37.
Para este efeito, realiza-se esta operação em dois passos:
1. Primeiro coloca-se o braço na posição vertical, para que não colida com obstáculos;
60
2. Em seguida fecha-se a garra e recolhe-se o braço.
A Figura 37 demonstra visualmente todos os passos que esta operação deve seguir para
recolher o referido braço.
Figura 37 Conjunto de imagens ilustrativas de recolha do braço do youBot. (YOUBOT, 2013)
61
6. TESTES EFETUADOS E
RESULTADOS OBTIDOS
Ao longo de todo o trabalho, foram realizados vários testes de simulação, principalmente
no foro da cinemática do robô, e também foram realizados vários testes a respeito da
localização e de mapeamento.
6.1. VELOCIDADE E POSIÇÃO
Inicialmente pensou-se em determinar a velocidade do youBot pela leitura dos dados
obtidos pelo Hokuyo, medindo a distância deste a um obstáculo e comparando esta com a
distância medida na leitura seguinte ao mesmo obstáculo.
A selecção do obstáculo por parte do algoritmo seria em função da orientação do robô. No
caso de não haver nenhum obstáculo na orientação percorrida, dado que o LASER
processa um varrimento da direita para a esquerda, o ponto selecionado seria o
imediatamente à esquerda da direcção em que o robô percorre.
Este procedimento pode ser visto de uma forma analítica na Figura 38, onde o resultado
pretendido seria a distância ou o módulo do vetor dRd.
62
Figura 38 Representação vectorial da distância percorrida.
63
Figura 39 Fluxograma para determinar a velocidade em função das leituras do LASER.
64
A figura acima, é demonstrativa do algoritmo implementado para a determinação da
velocidade do robô, e por conseguinte da sua posição.
Após a realização de testes no simulador, verificou-se a existência de uma grande
discrepância na posição do robô obtida pelo método acima referido, e a posição obtida pelo
cálculo da cinemática direta. Decidiu-se então que seria melhor calcular a posição do
youBot através da cinemática, face ao tempo disponível para a conclusão deste trabalho.
Ao realizar o cálculo da cinemática das rodas, como já mencionado, esta não é precisa e
tem erros face à realidade. Não obstante, e durante a realização de testes no simulador V-
REP, observou-se que também o modelo do youBot é impreciso, na medida em que com o
robô parado, este possui movimento no simulador.
Para correção das velocidades determinadas pela cinemática, como foi referido no Capítulo
5, acrescentou-se o código abaixo ao script do robô, e registaram-se os dados, que podem
ser analisados no Anexo A, no ficheiro Excel bnt_cinematica.xlsx.
if simGetSimulationTime()>=0 and
simGetSimulationTime()< 1 then
forwBackVel=4
leftRightVel=4
rotVel=4
end
if simGetSimulationTime()>=1 and
simGetSimulationTime()< 2 then
forwBackVel=3.5
leftRightVel=3.5
rotVel=3.5
end
if simGetSimulationTime()>=2 and
simGetSimulationTime()< 3 then
forwBackVel=3
leftRightVel=3
rotVel=3
end
if simGetSimulationTime()>=3 and
simGetSimulationTime()< 4 then
forwBackVel=2.5
leftRightVel=2.5
rotVel=2.5
end
if simGetSimulationTime()>=4 and
simGetSimulationTime()< 5 then
forwBackVel=2
leftRightVel=2
rotVel=2
end
65
if simGetSimulationTime()>=5 and
simGetSimulationTime()< 6 then
forwBackVel=1.5
leftRightVel=1.5
rotVel=1.5
end
if simGetSimulationTime()>=6 and
simGetSimulationTime()< 7 then
forwBackVel=1
leftRightVel=1
rotVel=1
end
if simGetSimulationTime()>=7 and
simGetSimulationTime()< 8 then
forwBackVel=0.5
leftRightVel=0.5
rotVel=0.5
end
if simGetSimulationTime()>=8 and
simGetSimulationTime()< 9 then
forwBackVel=0
leftRightVel=0
rotVel=0
end
if simGetSimulationTime()>=9 and
simGetSimulationTime()< 10 then
forwBackVel=-0.5
leftRightVel=-0.5
rotVel=-0.5
end
if simGetSimulationTime()>=10 and
simGetSimulationTime()< 11 then
forwBackVel=-1
leftRightVel=-1
rotVel=-1
end
if simGetSimulationTime()>=11 and
simGetSimulationTime()< 12 then
forwBackVel=-1.5
leftRightVel=-1.5
rotVel=-1.5
end
if simGetSimulationTime()>=12 and
simGetSimulationTime()< 13 then
forwBackVel=-2
leftRightVel=-2
rotVel=-2
end
if simGetSimulationTime()>=13 and
simGetSimulationTime()< 14 then
forwBackVel=-2.5
leftRightVel=-2.5
rotVel=-2.5
end
if simGetSimulationTime()>=14 and
simGetSimulationTime()< 15 then
66
forwBackVel=-3
leftRightVel=-3
rotVel=-3
end
if simGetSimulationTime()>=15 and
simGetSimulationTime()< 16 then
forwBackVel=-3.5
leftRightVel=-3.5
rotVel=-3.5
end
if simGetSimulationTime()>=16 and
simGetSimulationTime()<17 then
forwBackVel=-4
leftRightVel=-4
rotVel=-4
end
if simGetSimulationTime()>=17 and
simGetSimulationTime()< 18 then
--forwBackVel=4
leftRightVel=4
rotVel=4
end
if simGetSimulationTime()>=18 and
simGetSimulationTime()< 19 then
forwBackVel=-4
leftRightVel=-4
rotVel=-4
end
if simGetSimulationTime()>=19 and
simGetSimulationTime()< 20 then
forwBackVel=4
leftRightVel=4
rotVel=4
end
if simGetSimulationTime()>=20 then
forwBackVel=0
leftRightVel=0
rotVel=0
end
Para exportar os dados obtidos (a velocidade real do robô no simulador e a velocidade
determinada pela cinemática), usou-se o seguinte algoritmo para escrever estes na janela de
mensagens de estados:
realvel={}
realang={}
realvel,realang=simGetObjectVelocity(youBot)
simAddStatusbarMessage(simGetSimulationTime().."\
t"..realvel[1].."\t"..wheelOdoi[1].."\t"..realvel
[2].."\t"..wheelOdoi[2])
Com os dados recolhidos durante 20 s, e após o cálculo da média e linearização das
funções, obtiveram-se os gráficos das velocidades, representados nas Figuras 40 e 41.
67
A série de dados representada a vermelho (x_real e y_real), é a velocidade real do robô na
simulação. A verde apresenta-se a velocidade determinada pela cinemática, e a azul a
velocidade após aplicar o algoritmo de correção da velocidade calculada pela cinemática.
Figura 40 Gráfico obtido da velocidade transversal.
Figura 41 Gráfico obtido da velocidade longitudinal.
Com o algoritmo de correção das velocidades, conseguiu-se obter uma melhoria de cerca
de 95%, em relação às velocidades determinadas pela cinemática.
6.2. NAVEGAÇÃO AUTÓNOMA DO ROBÔ
Para a realização da experiência da prova BNT, montou-se o cenário, nomeadamente as
paredes a circundar o espaço (arena) e manteve-se uma abertura para que o robô possa
entrar e sair da arena.
-0,30
-0,20
-0,10
0,00
0,10
0,20
0,30
0,00 2,00 4,00 6,00 8,00 10,00 12,00 14,00 16,00 18,00 20,00
x_cor x_real x_odo
-0,30
-0,20
-0,10
0,00
0,10
0,20
0,30
0,00 2,00 4,00 6,00 8,00 10,00 12,00 14,00 16,00 18,00 20,00
y_cor y_real y_odo
68
Definiram-se as áreas de serviço S1, S2, S3 e S4. Como a origem das coordenadas é
definido pelo centro geométrico da plataforma do youBot no início da navegação, as áreas
de serviço têm as seguintes coordenadas:
S1 - (0; 0);
S2 - (0; 1);
S3 - (2; 3.5);
S4 - (-1.5; 2.5);
Para a atribuição e correlação destas coordenadas em função da string da tarefa enviada
para o robô, foi criado o seguinte algoritmo para o script do youBot:
function bnt_stringToPosition(string)
if string=="S1" then
bnt_strPos={0,0}
end
if string=="S2" then
bnt_strPos={0,1}
end
if string=="S3" then
bnt_strPos={2,3.5}
end
if string=="S4" then
bnt_strPos={-1.5,2.5}
end
return bnt_strPos
end
Na figura abaixo, pode-se observar a disposição das paredes e respetivas áreas de serviço
no local do cenário montado.
Figura 42 Cenário 3D em V-REP de uma possível prova BNT.
69
Para visualizar a deteção de obstáculos, margem de segurança para a navegação, assim
como as coordenadas do robô na arena, foi criado um gráfico no V-REP, de acordo com o
seguinte algoritmo inserido no script do youBot.
simResetGraph(bnt_graphHandle)
bnt_botGraphPos={}
bnt_botGraphPos[1]=bnt_botPos[1]+(bnt_botWheelAxi
s[1]*math.cos(bnt_botPos[3])-
bnt_botWheelAxis[2]*math.sin(bnt_botPos[3]))
bnt_botGraphPos[2]=bnt_botPos[2]+(bnt_botWheelAxi
s[1]*math.sin(bnt_botPos[3])+bnt_botWheelAxis[2]*
math.cos(bnt_botPos[3]))
bnt_botGraphPos[3]=bnt_botPos[1]+(-
bnt_botWheelAxis[1]*math.cos(bnt_botPos[3])-
bnt_botWheelAxis[2]*math.sin(bnt_botPos[3]))
bnt_botGraphPos[4]=bnt_botPos[2]+(-
bnt_botWheelAxis[1]*math.sin(bnt_botPos[3])+bnt_b
otWheelAxis[2]*math.cos(bnt_botPos[3]))
bnt_botGraphPos[5]=bnt_botPos[1]+(-
bnt_botWheelAxis[1]*math.cos(bnt_botPos[3])+bnt_b
otWheelAxis[2]*math.sin(bnt_botPos[3]))
bnt_botGraphPos[6]=bnt_botPos[2]+(-
bnt_botWheelAxis[1]*math.sin(bnt_botPos[3])-
bnt_botWheelAxis[2]*math.cos(bnt_botPos[3]))
bnt_botGraphPos[7]=bnt_botPos[1]+(bnt_botWheelAxi
s[1]*math.cos(bnt_botPos[3])+bnt_botWheelAxis[2]*
math.sin(bnt_botPos[3]))
bnt_botGraphPos[8]=bnt_botPos[2]+(bnt_botWheelAxi
s[1]*math.sin(bnt_botPos[3])-
bnt_botWheelAxis[2]*math.cos(bnt_botPos[3]))
bnt_botGraphPos[9]=bnt_botPos[1]+(bnt_botWheelAxi
s[1]*math.cos(bnt_botPos[3])-
bnt_botWheelAxis[2]*math.sin(bnt_botPos[3]))
bnt_botGraphPos[10]=bnt_botPos[2]+(bnt_botWheelAx
is[1]*math.sin(bnt_botPos[3])+bnt_botWheelAxis[2]
*math.cos(bnt_botPos[3]))
for i=1, #bnt_botGraphPos, 2 do
simSetGraphUserData(bnt_graphHandle,"YBx",bnt_b
otGraphPos[i])
simSetGraphUserData(bnt_graphHandle,"YBy",bnt_b
otGraphPos[i+1])
simHandleGraph(bnt_graphHandle,0.0)
end
if bnt_nGoalMap>0 and bnt_armFlag==0 then
simSetGraphUserData(bnt_graphHandle,"GMx",bnt_map
IndexToValue(bnt_iGoalMap[1],bnt_mapCellSize,bnt_
nMapMiddle[1]))
simSetGraphUserData(bnt_graphHandle,"GMy",bnt_map
IndexToValue(bnt_iGoalMap[2],bnt_mapCellSize,bnt_
nMapMiddle[2]))
simHandleGraph(bnt_graphHandle,0.0)
for x=bnt_mapRight,bnt_mapLeft,1 do
for y=bnt_mapBotton,bnt_mapTop,1 do
if bnt_obsMap[x][y]==1 then
70
xx=bnt_mapIndexToValue(x,bnt_mapCellSize,bnt_nM
apMiddle[1])
yy=bnt_mapIndexToValue(y,bnt_mapCellSize,bnt_nM
apMiddle[2])
simSetGraphUserData(bnt_graphHandle,"OMx",xx)
simSetGraphUserData(bnt_graphHandle,"OMy",yy)
simHandleGraph(bnt_graphHandle,0.0)
else
if bnt_secMap[x][y]==1 then
xx=bnt_mapIndexToValue(x,bnt_mapCellSize,bnt_nM
apMiddle[1])
yy=bnt_mapIndexToValue(y,bnt_mapCellSize,bnt_nM
apMiddle[2])
simSetGraphUserData(bnt_graphHandle,"SMx",xx)
simSetGraphUserData(bnt_graphHandle,"SMy",yy)
simHandleGraph(bnt_graphHandle,0.0)
end
end
end
end
end
Com a inclusão do código acima descrito, e uma devida configuração do elemento gráfico
na scene, que se pode ver na Figura 43, obteve-se o gráfico apresentado na Figura 44.
Figura 43 Janela do V-REP para configuração do Gráfico.
71
No gráfico da Figura 44, as células de cor preta são obstáculos detetados pelo sensor
LASER Hokuyo. A cinzento encontra-se a área de segurança para a navegação, e o
retângulo com o contorno a vermelho corresponde aos limites do robô neste mapa. O ponto
de cor verde indica a localização do próximo objetivo definido na string, para o qual o
robô se deve dirigir.
Figura 44 Gráfico obtido para visualização do comportamento da navegação.
Após a introdução de várias strings, com a finalidade de testar o comportamento da
navegação autónoma do robô, observou-se que esta é efetuada dentro dos parâmetros
esperados.
No exemplo da Figura 44, o mapa encontra-se dividido em células quadradas com um
tamanho de 10 cm × 10 cm. Pode-se obter uma maior resolução deste mapa, diminuindo o
tamanho das células, mas isto iria obrigar a uma computação maior, o que tornaria a
simulação mais lenta e, eventualmente, o programa V-REP poderia falhar.
Este teste pode ser observado no vídeo bnt_video.avi que se encontra no CD-ROM
disponibilizado no Anexo A.
72
73
7. CONCLUSÕES
Tem havido um grande aumento de interesse em robôs móveis. Não apenas como
brinquedos mas como uma ferramenta para a educação em engenharia. Atualmente os
robôs móveis são usados em quase todas as universidades, em cursos e pós-graduações em
Ciências de Computação, Engenharia da Computação, Tecnologias de Informação,
Cibernética, Engenharia Eletrotécnica, Engenharia Mecânica e Mecatrônica.
Recentemente surgiu uma nova liga na maior competição do mundo de robótica, chamada
RoboCup@Work, que é destinada aos concorrentes que desejam competir no campo da
manipulação robótica móvel para ambiente industrial.
Pretendeu-se com o desenvolvimento deste trabalho, que a implementação da sua
arquitetura fosse não só capaz de correr na simulação, mas que fosse também dinâmica, de
forma a ser implementada na plataforma KUKA youBot. Para além destes aspetos,
implementou-se a referida prova BNT em simulação
Com a implementação do SLAM, cuja principal dificuldade é a interação entre a posição
do robô e as suas ações de mapeamento, realizou-se a programação do youBot no
simulador V-REP.
74
Efetuaram-se diversos testes funcionais à simulação, nomeadamente à cinemática e à
navegação do robô.
Após a realização dos testes descritos no capítulo anterior, e analisando os resultados
obtidos, concluiu-se que o comportamento do robô KUKA youBot no simulador V-REP
está de acordo com o esperado inicialmente. No entanto, foram também detetadas algumas
situações passíveis de melhoria, que se passam a descrever.
7.1. IDEIAS PARA FUTURO
Ao nível do cálculo da cinemática da plataforma, embora não sendo precisa, verificou-se
que com o algoritmo de correção desta, consegue-se uma melhor aproximação à realidade,
no V-REP. Não obstante, e após uma análise ao trabalho, futuramente poder-se-á
aprimorar, com um cálculo probabilístico, a atual cinemática, recorrendo também à leitura
dos obstáculos devolvidas pelo Sensor LASER Hokuyo e por um acelerómetro. Desta
forma determina-se com maior precisão a velocidade do robô, e por conseguinte a sua
posição no referencial global/inercial.
Observou-se durante este trabalho que a determinação com precisão da posição do robô é
fundamental para a realização do mapeamento e, por conseguinte, para o planeamento da
navegação. Embora a construção do mapa de obstáculos tenha preenchido o requisito
desejado, e o robô tenha conseguido atingir os objetivos dentro do esperado, verificou-se
que durante as experiências realizadas, as posições fixas no mapa vão-se alterando de
acordo com os erros da odometria e erros inerentes à leitura do Hokuyo. No futuro esta
situação pode ser corrigida, ao invés de usar mapas em grelha discretos e determinísticos,
com o uso de mapa em grelha probabilísticos. Assim, por exemplo, no valor de cada célula
em vez de ser 0 ou 1 passar-se-ia a ter um valor probabilístico de 0 a 100, consoante o
número de leituras feitas ao respetivo obstáculo.
Observou-se também que a navegação em múltiplos de 45º é limitativa e obriga a uma
maior exigência do processador para efetuar as computações necessárias de célula em
célula. Esta situação pode ser melhorada, aplicando o algoritmo Exact Euclidean Distance
Transform (EEDT), descrito na bibliografia (EUCLIDEAN, 2013).O núcleo desta
abordagem é que para cada célula obtém-se o melhor sub-objetivo visível para a meta
(próximo aos vértices dos obstáculos), com a finalidade de obter rotas mais suaves, sem
processamento desnecessário.
75
Como observação final, a programação foi desenvolvida para fazer uso da API interna do
simulador. Ao invés desta, ao usar o recurso externo por Robot Operation System (ROS),
obter-se-ia uma aplicação mais aberta e funcional, para ser futuramente testada num robô
verdadeiro.
Para além deste fato, já existem para esta aplicação pacotes que incluem planeamento e
navegação, que também merecem ser estudados, e o conhecimento prévio destes seria uma
mais-valia para a realização deste projeto.
7.2. CONCLUSÃO PESSOAL
A realização deste trabalho possibilitou o aumento do conhecimento, no âmbito da
robótica, pela sua forte componente teórico-prática.
Apesar de, como objetivo principal, este ser o projeto de finalização de licenciatura,
demonstrou ser uma mais-valia poder fazer parte de um projeto de investigação, deveras
inovador. Serviu para dar motivação, para melhorar este projeto, assim como para a
participação em projetos académicos e profissionais, futuros.
A possibilidade de poder fazer parte do evento RoCKIn Camp 2014, originou a apreensão
de novos conhecimentos, nomeadamente, diferentes linguagens de programação. Para além
disso, poder observar a aplicabilidade, in loco, da teoria, permite detetar e observar que
existem muitos erros e dificuldades, para além da simulação.
76
77
Referências Documentais
(ASIMO HONDA, 2014) Asimo Honda, disponível em: http://asimo.honda.com/; último
acesso em 2014-02-10.
(AUTONOMOUS ROBOTS, 1995) J. Craig, Jonh; Silma, inc.; Introduction to Robotics
Mechanics and Control, Second Edition.
(AUTONOMOUS ROBOTS, 2009) Fahimi, Farbod; Autonomous Robots - Modeling,
Path Planning, and Control; ISBN: 978-0-387-09537-0.
(CIRCLE ALGORITHM, 2003) Gustavson, Stefan; An efficient circle drawing algorithm,
disponível em: http://webstaff.itn.liu.se/~stegu76/circle/; último acesso em 2014-02-10.
(CONTROL OMNIDIRECTIONAL, 2004) Song, Jae-Bok; Byun, Kyung-Seok; Korea
University, Mokpo National University; Design and Control of an Omnidirectional Mobile
Robot with Steerable Omnidirectional Wheels, disponível em:
http://onlinelibrary.wiley.com/doi/10.1002/rob.20009/abstract/; último acesso em 2014-02-
10.
(EUCLIDEAN, 2013) Elizondo-Leal1, Juan Carlos; Parra-González, Ezra Federico;
Ramírez-Torres, José Gabriel; The Exact Euclidean Distance Transform: A New
Algorithm for Universal Path Planning, disponível em:
http://www.intechopen.com/journals/international_journal_of_advanced_robotic_systems/t
he-exact-euclidean-distance-transform-a-new-algorithm-for-universal-path-planning;
último acesso em 2014-02-10.
(FESTIVAL NACIONAL DE ROBOTICA, 2014) Festival Nacional de Robótica,
disponível em: http://esecddinis.pt/robotica2013/; último acesso em 2014-02-10.
(GAZEBO, 2014) Gazebo, disponível em: http://gazebosim.org/; último acesso em 2014-
02-10.
(HOKUYO, 2014) Hokuyo, disponível em: https://www.hokuyo-aut.jp/; último acesso em
2014-02-10.
(INSTITUTO NEWTON BRAGA, 2014) Instituto Newton Braga, disponível em:
http://www.newtoncbraga.com.br/; último acesso em 2014-02-10.
(KINEMATIC MODELING, 1986) Fred Muir, Patrick; P.Neuman, Charles; Department
of Electrical and Computer Engineering And Robotics Intitute, Carnegie Mellon
University, Pittsburgh PA 15213; Kinematic Modeling of Wheeled Mobile Robots.
(KUKA, 2014), KUKA, disponível em: http://www.youbot-store.com/; último acesso em
2014-02-10.
(LUA CONCEITOS, 2008) Lua Conceitos; Conceitos Básicos e API C, disponível em:
http://www.lua.inf.puc-rio.br/; último acesso em 2014-02-10.
(LUA, 2014) Lua, disponível em: http://www.lua.org/; último acesso em 2014-02-10.
78
(MECANUM WHEEL, 2010) Han, Kyung-Lyong; Hyosin, Kim; S. Lee, Jin; The
Department of Electronic and Electrical Engineering; POSTECH; The Sources of Position
Errors of Omni-directional Mobile Robot with Mecanum Wheel, disponível em:
http://www.google.pt/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CDAQFjA
A&url=http%3A%2F%2Fieeexplore.ieee.org%2Fiel5%2F5629466%2F5641665%2F0564
2009.pdf%3Farnumber%3D5642009&ei=SOP4UrH0DI2rhAfS0IDQBA&usg=AFQjCNFa
7wMZ_51_V_6S0hPR1dGfljpI9Q&sig2=uVKE5N12xrpKGXiZQlDQmw; último acesso
em 2014-02-10.
(MICROSOFT, 2014) Microsoft Robotics Developer Studio, disponível em:
http://msdn.microsoft.com/robotics; último acesso em 2014-02-10.
(MOBILE ROBOTS, 2004) Siegwart, Roland; R. Nourbakhsh, Illah , Introduction to
Autonomous Mobile Robots, ISBN 0-262-19502-X.
(MODELING CONTROL, 1988) Fred Muir, Patrick, Ph.D. Dissertation, Department of
Electrical and Computer Engineering And Robotics Intitute, Carnegie Mellon University,
Pittsburgh PA 15213; Modeling and Controlo f Wheeled Mobile Robots.
(NASA, 2014) NASA, disponível em: http://
http://marsrovers.jpl.nasa.gov/home/index.html; último acesso em 2014-02-10.
(OMIDIRECTIONAL, 2007) Doroftei, Ioan; Grosu, Victor; Spinu, Veaceslav; Gh.
Asachi” Technical University of Iasi; Omnidirectional Mobile Robot – Design and
Implementation, disponível em:
http://w .google.pt url sa t rct q esrc s source eb cd ved I A
url http A .intechopen.com do nload pdf 4 5 ei vT4Ur
t mAhAforo g usg A cTs A mvi igrP Rzg sig dM q
RtlOuU Gp h- _U bvm bv. ,d. G4 ; último acesso em 2014-02-10.
(OMNI MECANUM, 2013) Omni-Mecanum-Wheeled, disponível em:
http://Robothttp://www.scirp.org/journal/PaperInformation.aspx?paperID=31739#.UvkIh1
7S93Y; último acesso em 2014-02-10.
(OPENSIM, 2014) OpemSim, disponível em: http://opensimulator.sourceforge.net/; último
acesso em 2014-02-10.
PO ITIO , eifert, urt; amacho Oscar; Implementing Positioning Algorithms
Using Accelerometers, disponível em
http .freescale.com files sensors doc app_note A .pdf ; último acesso em 2014-
02-10.
(ROBOCUP, 2014) RoboCup, disponível em: http://www.robocup.org/; último acesso em
2014-02-10.
(ROCKIN, 2014) Rockin, disponível em: http://www.rockinrobotchallenge.eu/; último
acesso em 2014-02-10.
(ROS, 2014) Robot Operation System, disponível em: http://www.ros.org/; último acesso
em 2014-02-10.
79
RU OO , Robo up Rule oo , ersion . ; une , , disponível em
http .robocupat or .org do nload ruleboo - - - .pdf ; último acesso em
2014-02-10.
(SIMROBOT, 2014) SimRobot, disponível em: http://www.informatik.uni-
bremen.de/simrobot/index_e.htm; último acesso em 2014-02-10.
(SOCIETY OF ROBOTS, 2014) Society of Robots, disponível em:
http://www.societyofrobots.com/; último acesso em 2014-02-10.
(THE OLD ROBOTS, 2014) The Old Robots Robots, disponível em:
http://www.theoldrobots.com/; último acesso em 2014-02-10.
(URANUS ROBOT, 1990) Blackwell, Mike; Mobile Robot Lab, The Robotics Institute
Carnegie Mellon University, Pittsburg, PA, 15213; The Uranus Mobile Robot.
(VARIOS, 2014) Vários documentos de Robótica, Davison, Andrew; Robotics Course,
Imperial College London; disponível em:
http://www.doc.ic.ac.uk/~ajd/Robotics/RoboticsResources/; último acesso em 2014-02-10.
(V-REP, 2014) V-REP, disponível em: http://www.coppeliarobotics.com/; último acesso
em 2014-02-10.
(WEBOTS, 2014) WeBots, disponível em: http://www.cyberbotics.com/overview/; último
acesso em 2014-02-10.
(YOUBOT, 2013) KUKA youBot User Manual; Version 1.02; Locomotec, disponível em:
http://www.youbot-store.com/media/pdf/ku a-youbot_usermanual.pdf ; último acesso em
2014-02-10.
80
81
Anexo A. CD-ROM
O CD-ROM fornecido em anexo, contém os seguintes ficheiros:
bnt_scene.ttt – Ficheiro do tipo scene para ser executado com o simulador V-REP, que
contém todo o código (scripts) e construção em três dimensões referida ao longo deste
relatório;
bnt_cinematica.xlsx – Documento do Microsoft Excel, com os dados de velocidade
obtidos pela cinemática do robô, assim como os devidos cálculos, médias e
linearizações para a obtenção do algoritmo de correção da velocidade transversal e
longitudinal do youBot.
bnt_video.avi –Filme (1:47 s) de demonstração da simulação do youBot, realizado a
partir do ficheiro bnt_scene.ttt. Neste exemplo o comando introduzido na consola é
<(S3,N,1),(S4,E,2),(S2,W,1),(S1,S,0)>