SIMULAÇÃO EM V-REP DA
PROVA BMT DA COMPETIÇÃO
ROBOCUP@WORK
Pedro Miguel Montenegro Rodrigues
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 Projecto/Estágio, do 3º ano, da Licenciatura em Engenharia Electrotécnica e
de Computadores
Candidato: Pedro Miguel Montenegro Rodrigues, [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
i
Agradecimentos
Gostaria de agradecer em primeiro lugar ao meu orientador, o Prof. Manuel Fernando dos
Santos Silva por todo o apoio durante a realização deste projecto e por me ter concedido a
honra de participar com ele no RoCKIn Camp em Roma representando o ISEP.
Aos meus pais, agradeço-lhes por serem os pilares da minha vida e da minha educação, por
investirem nesta minha formação académica e pela confiança que depositaram em mim ao
longo deste tempo todo, nunca me deixando desistir, fazendo-me acreditar que sou capaz
de enfrentar qualquer obstáculo, seja na vida pessoal ou na vida académica.
Agradeço à minha namorada Vera Conde, acima de tudo por toda a paciência que teve que
ter comigo, não só durante a realização deste projecto, mas durante estes anos de curso,
estando sempre ao meu lado, todos os dias, dando-me apoio e ajuda nos momentos mais
complicados, por todas as palavra de conforto e motivação que me deu quando eu mais
precisava, por estar sempre pronta a ajudar-me de alguma maneira. Por tudo isto e muito
mais, é uma das pessoas a quem mais devo o sucesso desta licenciatura.
Aos pais da minha namorada, Fernando e Helena Conde, e à irmã Mariana Conde, por me
tratarem sempre como um filho e como um irmão, tornando a casa deles a minha segunda
casa, o meu principal local de trabalho, agradeço-lhes também todo o apoio e confiança
que depositaram em mim.
Ao meu colega de projecto Rui Alen, por me ter ajudado sempre que o procurei e por ter
sido um óptimo companheiro de equipa na viagem ao RoCKIn Camp em Roma.
Por último, mas não em último, a todos os meus colegas de curso que me acompanharam
estes anos todos, tanto na vida académica como fora dela.
ii
iii
Resumo
As competições de robótica estão a crescer de ano para ano, tanto a nível de participantes
como a nível de ligas que as integram. Este projecto surge no interesse da equipa de
robótica do Instituto Superior de Engenharia do Porto (ISEP) participar numa nova liga
dessas competições, a RoboCup@Work. Esta liga pertence a uma das mais prestigiadas
competições de robótica, a RoboCup, e é focada na capacidade dos robôs desempenharem
funções de auxílio aos humanos na indústria. Como de momento o ISEP não possui as
verbas necessárias para adquirir a plataforma, surgiu a ideia da realização deste projecto.
Este projecto tem como objectivo a simulação de uma das provas inseridas no
RoboCup@Work, mais precisamente a prova Basic Manipulation Test (BMT), utilizando
para a sua realização a plataforma móvel KUKA youBot.
Este trabalho descreve todo o projecto e implementação dos elementos necessários para a
simulação dessa plataforma móvel nesta prova. Esta prova tem como objectivo demonstrar
as capacidades básicas de manipulação dos robôs, como agarrar, virar, ou colocar um
objecto. O ambiente de simulação utilizado foi o Virtual Robot Experimentation Platform
(V-REP) que possui uma versão educativa gratuita e nela contém um modelo da
plataforma a ser utilizada neste trabalho. Vários outros aspectos tiveram que ter sido alvos
de estudo e implementação, e serão relatados neste trabalho, tais como, a cinemática da
plataforma, a cinemática do manipulador e o planeamento de trajectórias, focando-se
principalmente no algoritmo escolhido para este trabalho, o algoritmo de pesquisa A*. Este
algoritmo permitirá que a plataforma se desloque desde uma posição inicial até uma final,
onde fará a manipulação, desviando-se de eventuais obstáculos que surjam no caminho.
Após todo o estudo das cinemáticas e do algoritmo A*, procedeu-se à implementação do
código de programação no simulador. Todo o código foi escrito em linguagem LUA, que é
a linguagem padrão do simulador e revelou-se ser uma linguagem bastante leve, rápida e
eficaz.
Por último foram realizados uma série de testes para se certificar que tudo corria conforme
o esperado e para corrigir eventuais erros; os erros encontrados relevantes foram com o
algoritmo A*, a sua implementação tornou a simulação bastante lenta, tendo sido
iv
necessário tornar o ambiente mais leve, reduzindo o número de obstáculos. Conclui-se que
esta correcção melhorou bastante o desempenho do algoritmo, sendo o robô capaz de ir do
ponto inicial ao final sem embater com os objectos.
Palavras-Chave
KUKA youBot, robótica, BMT, RoboCup@Work, manipulação, cinemática, A*, V-REP
v
Abstract
Robotic competitions are growing from year to year, in terms of participants and the
number of leagues that comprise them. This project arises from the interest of the Institute
of Engineering of Porto (ISEP) robotics team to participate in a new competition, the
RoboCup@Work. This league belongs to one of the most prestigious competitions in
robotics, the RoboCup, and is focused on the ability of robots to perform human functions
in the industry. For now, ISEP does not have the funds necessary to acquire the platform,
so the idea of conducting this project emerged. This project aims at simulating one of the
tests presented in the RoboCup@Work, more precisely the Basic Manipulation Test
(BMT) using a KUKA youBot mobile platform.
This report describes the entire project and implementation of the necessary elements for
the simulation of this mobile platform in this test. This test aims to demonstrate the basic
manipulation capabilities of robots, such as grasping, turning, or placing an object. The
simulation environment used was Virtual Robot Experimentation Platform (V -REP), wich
has a free educational version and contains a model of the platform to be used in this work.
Several other aspects were the target of study and implementation, and will be reported in
this work, such as the kinematics of the platform, the manipulator kinematics and
trajectory planning, focusing primarily on the algorithm chosen for this work, the A* path
finding. This algorithm will allow the platform to move from an initial position to a final
one where it will do the handling, avoiding any obstacles that arise along the path. After all
the study of kinematics and the A* algorithm – it was proceeded to the implementation of
the program code in the simulator. All this code was written in the LUA language, that is
the simulator default language and it proved to be a quick fairly mild language and
effective.
A series of tests were performed to make sure everything run as expected and to correct
any errors. The most significant errors were with the A* algorithm - since its
implementation leads to a very slow simulation, it was necessary to lighten the
environment, reducing the number of obstacles. It was concluded that this correction
vi
greatly improved the performance of the algorithm, the robot being able to go from the
starting point to the final one without hitting against objects.
Keywords
KUKA youBot, robotics, BMT, RoboCup@Work, manipulation, kinematics, A*, V-REP
vii
Índice
AGRADECIMENTOS ..................................................................................................................................... I
RESUMO ....................................................................................................................................................... III
ABSTRACT ..................................................................................................................................................... V
ÍNDICE ........................................................................................................................................................ VII
ÍNDICE DE FIGURAS ................................................................................................................................. IX
ÍNDICE DE TABELAS ................................................................................................................................ XI
ACRÓNIMOS ............................................................................................................................................. XIII
1. INTRODUÇÃO ...................................................................................................................................... 1
1.1. CONTEXTUALIZAÇÃO ....................................................................................................................... 1
1.2. OBJECTIVOS ...................................................................................................................................... 2
1.3. CALENDARIZAÇÃO ........................................................................................................................... 2
1.4. ORGANIZAÇÃO DO RELATÓRIO ......................................................................................................... 3
2. ESTADO DA ARTE ............................................................................................................................... 5
2.1. ROBÓTICA......................................................................................................................................... 5
2.2. CONCEITOS BÁSICOS DOS ROBÔS MANIPULADORES .......................................................................... 8
2.3. ROBÓTICA MÓVEL .......................................................................................................................... 14
2.4. PLANEAMENTO DE TRAJECTÓRIAS .................................................................................................. 17
2.5. ALGORITMOS DE PESQUISA ............................................................................................................. 20
2.6. COMPETIÇÕES DE ROBÓTICA ........................................................................................................... 21
2.7. SIMULADORES ................................................................................................................................ 27
3. IMPLEMENTAÇÃO DO PROJECTO .............................................................................................. 31
3.1. SIMULADOR .................................................................................................................................... 31
3.2. DIAGRAMA DE BLOCOS DO SISTEMA ............................................................................................... 34
3.3. PLATAFORMA MÓVEL..................................................................................................................... 35
3.4. ALGORITMO DE PLANEAMENTO DE TRAJECTÓRIA ........................................................................... 41
3.5. BRAÇO ............................................................................................................................................ 44
4. TESTES EFECTUADOS E RESULTADOS OBTIDOS .................................................................. 47
4.1. SIMULADOR .................................................................................................................................... 47
4.2. TRAJECTÓRIA ................................................................................................................................. 48
viii
4.3. MANIPULAÇÃO DO OBJECTO ............................................................................................................ 51
5. CONCLUSÕES ..................................................................................................................................... 55
5.1. IDEIAS FUTURAS.............................................................................................................................. 57
5.2. CONCLUSÃO PESSOAL ..................................................................................................................... 57
REFERÊNCIAS DOCUMENTAIS .............................................................................................................. 59
ANEXO A. CD COM A SIMULAÇÃO ....................................................................................................... 61
ix
Índice de Figuras
Figura 1 Primeiro robô industrial - Unimate ...................................................................................... 7
Figura 2 Robô industrial com punho a vácuo..................................................................................... 8
Figura 3 Robôs de soldadura numa linha de montagem automóvel ................................................... 8
Figura 4 Relação entre braço humano e robótico ............................................................................... 9
Figura 5 Braço robótico e seus elementos .......................................................................................... 9
Figura 6 Tipos de juntas ................................................................................................................... 10
Figura 7 Volume de trabalho do KUKA youBot ............................................................................. 11
Figura 8 a)Garra do manipulador youBot; b) Manipulador com ferramenta na sua extremidade ... 11
Figura 9 Relação entre a cinemática directa e inversa ..................................................................... 12
Figura 10 Duas possíveis soluções da cinemática inversa para o mesmo braço .............................. 13
Figura 11 Manipulador com 2 graus de liberdade ............................................................................ 13
Figura 12 Clean Bot da Eventronic, limpa tubulações. .................................................................... 14
Figura 13 Roda Sueca ...................................................................................................................... 16
Figura 14 Plataforma omnidireccional do KUKA youBot ............................................................... 17
Figura 15 Método Road Map ........................................................................................................... 18
Figura 16 Método dos Visibility Graphs .......................................................................................... 18
Figura 17 Diagrama de Voronoi ....................................................................................................... 19
Figura 18 Árvore em crescimento do algoritmo RRT ...................................................................... 19
Figura 19 Exemplo de um potencial ................................................................................................ 20
Figura 20 Robôs a jogarem futebol .................................................................................................. 23
Figura 21 Robô utilizado na prova de busca e salvamento .............................................................. 23
Figura 22 Robô a manusear um utensilio doméstico ....................................................................... 24
Figura 23 Liga júnior ....................................................................................................................... 24
Figura 24 Exemplo de arena do Robocup@Work ........................................................................... 25
Figura 25 Objectos de manipulação ................................................................................................. 26
Figura 26 Interface com o utilizador do simulador V-REP[] ........................................................... 32
Figura 27 Child script associado ao youBot .................................................................................... 32
Figura 28 Dummy ............................................................................................................................ 33
Figura 29 Diagrama de blocos do sistema ....................................................................................... 34
Figura 30 Dimensões da plataforma e das rodas .............................................................................. 35
x
Figura 31 KUKA youBot ................................................................................................................. 36
Figura 32 Parâmetros da roda sueca [6] ........................................................................................... 36
Figura 33 Robô móvel alinhado com o referencial global {Xi,Yi} ................................................... 37
Figura 34 Alguns movimentos de uma plataforma omnidireccional ............................................... 38
Figura 35 Referencial do robô .......................................................................................................... 40
Figura 36 Fluxograma do algoritmo de planeamento de trajectória ................................................. 42
Figura 37 Braço manipulador do KUKA youBot............................................................................. 44
Figura 38 Dimensões e limites das juntas do braço ......................................................................... 45
Figura 39 Esfera representativa do centro da garra .......................................................................... 46
Figura 40 Exemplo de simulação em t = 0 seg ................................................................................. 48
Figura 41 Posição da plataforma na simulação em t = 5.05 seg ....................................................... 48
Figura 42 Robô na posição inicial (xi = -1, yi = -2) .......................................................................... 50
Figura 43 Robô a desviar-se dos obstáculos..................................................................................... 50
Figura 44 Robô passa pelo meio dos dois obstáculos ...................................................................... 50
Figura 45 Robô posicionado no destino (xf = +0.6, yf = +1.02) ........................................................ 51
Figura 46 Posição do objecto em relação à garra ............................................................................. 52
Figura 47 Robô agarra o objecto ...................................................................................................... 53
Figura 48 Transporte do objecto ...................................................................................................... 53
Figura 49 Rotação do objecto ........................................................................................................... 53
xi
Índice de Tabelas
Tabela 1 Calendarização do projecto ........................................... Erro! Marcador não definido.
xii
Tabela 1 Calendarização do projecto
xiii
Acrónimos
AI
API
BMT
CCD
CPU
DEE
DOF
ISEP
LEEC
MRDS
ODE
PC
PESTA
PUC-Rio
RFID
RoCKIn
ROS
RRT
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
Artificial Intelligence
Application Programming Interface
Basic Manipulation Test
Charge-Coupled Device
Central Processing Unit
Departamento de Engenharia Electrotécnica
Degrees Of Freedom
Instituto Superior Engenharia do Porto
Licenciatura Engenharia Electrotécnica de Computadores
Mineral Resources Data System
Open Dynamics Engine
Personal Computer
Projecto Estágio
Pontifícia Universidade Católica do Rio de Janeiro
Radio-Frequency IDentification
Robot Competitions Kick Innovation in Cognitive Systems and Robotics
Robot Operating System
Rapidly Random Tree
xiv
USB
V-REP
Universal Serial Bus
Virtual Experimentation Platform
xv
xvi
1
1. INTRODUÇÃO
Neste capítulo efectua-se uma introdução ao trabalho realizado na unidade curricular de
Projecto/Estágio (PESTA) do 3º ano da Licenciatura em Engenharia Electrotécnica e de
Computadores (LEEC), do Departamento de Engenharia Electrotécnica (DEE), do Instituto
Superior de Engenharia do Porto (ISEP), referindo-se brevemente a sua contextualização,
os objectivos 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
Com o passar dos anos é notório o crescimento das competições de robótica a nível
mundial. Este crescimento fez com que se tornassem cada vez mais exigentes e mais
competitivas entre os participantes. Por isso, este trabalho surgiu da ideia da equipa de
robótica do ISEP vir a participar em mais uma competição de robótica, a RoboCup@Work.
No entanto ainda não existem as verbas necessárias para a aquisição do robô mais utilizado
pelas equipas nesta competição, o KUKA youBot. Por este motivo, surgiu a ideia de se
testar e simular o comportamento deste robô numa das provas dessa competição com o
intuito de quando existirem as verbas necessárias para a aquisição do youBot já se possuir
uma análise comportamental da plataforma e uma previsão do seu desempenho nas provas
existentes na competição.
2
1.2. OBJECTIVOS
O objectivo deste projecto passa por simular o comportamento de uma plataforma youBot
(plataforma utilizada por todas as equipas participantes na competição RoboCup@Work)
num teste de manipulação de objectos (BMT), recorrendo para este efeito ao simulador V-
REP. Com esta simulação pretende-se testar e avaliar o desempenho desta plataforma na
manipulação de objectos (agarrar, transportar, girar). A realização deste objectivo implica
também que o robô se mova de um ponto inicial até um ponto final onde irá fazer a
manipulação; para isso foi implementado um algoritmo de planeamento de trajectória. A
manipulação da plataforma e o movimento do manipulador implicou um estudo das
respectivas cinemáticas, tanto para o manipulador como para o movimento da base.
1.3. CALENDARIZAÇÃO
Segue-se na Tabela 1 a calendarização que foi prevista para este trabalho, nestes últimos 3
meses e meio foi feio um esforço para se conseguir cumprir ao máximo esta
calendarização, tendo sido cumprida.
Tabela 1 Calendarização do projecto
Actividade Novembro Dezembro Janeiro Fevereiro
Planificação do projecto
Estudo do simulador
Estudo da plataforma e cinemáticas
Implementação da cinemática no
simulador
Estudo do planeamento da
trajectória
Implementação da trajectória no
simulador
Estudo da manipulação do objecto
Participação no RoCKIn Camp
Implementação da manipulação do
objecto no simulado
Elaboração do relatório
3
1.4. ORGANIZAÇÃO DO RELATÓRIO
Este documento encontra-se organizado em cinco capítulos e um anexo.
No Capítulo 1 é feita uma introdução ao trabalho, referindo-se brevemente a sua
contextualização, os objectivos, a calendarização que foi definida para a sua realização e a
organização de todo documento.
No Capitulo 2 é abordado o estado da arte, são analisados e desenvolvidos teoricamente
todos os métodos escolhidos para o trabalho, comparando-os com outros métodos passíveis
de escolha.
O Capítulo 3 descreve a implementação de todo o trabalho no simulador, utilizando e
aprofundando as escolhas feitas no capítulo anterior. Seguidamente, o Capítulo 4
demonstra todos os testes realizados, os erros ocorridos durante as simulações e as
correcções dos mesmos.
Por último, o Capítulo 5 é a conclusão, onde é feita uma avaliação ao trabalho,
perspectivas de melhoramentos possíveis ao trabalho e uma conclusão pessoal da
importância da realização deste projecto.
4
5
2. ESTADO DA ARTE
Ao longo deste capítulo são abordados os conceitos teóricos para a elaboração do trabalho
em questão. Começa-se por introduzir temas como a robótica e a robótica industrial, sendo
feita a análise do que é um robô manipulador, seguidamente será introduzida a robótica
móvel e todos os seus conceitos mais importantes, será feita a comparação de diferentes
métodos de planeamento de trajectórias e métodos de pesquisa e por último dos
simuladores de robótica existentes.
2.1. ROBÓTICA
O termo robótica refere-se ao estudo e à utilização de robôs, tendo a robótica como
principal objectivo a automatização de tarefas que podem ser executadas pelo homem. O
termo robótica foi popularizado pelo escritor de ficção científica Isaac Asimov, na sua obra
de ficção "I, Robot" (Eu, Robô), de 1950 [1]. Neste mesmo livro, Asimov enunciou leis
que, segundo ele, regeriam os robôs no futuro: estas são as chamadas Três Leis da
Robótica. Estas leis permitem controlar e estabelecer limites comportamentais dos robôs,
pois segundo o próprio Asimov, era possível a coexistência de robôs e humanos,
impedindo assim que os robôs se revoltem contra a humanidade ou que a tentem controlar;
estas leis são as seguintes:
6
1. Um robô não pode magoar um ser humano ou deixar que algum ser humano se
magoe.
2. Um robô tem de obedecer a ordens dadas por um ser humano, excepto quando estas
ordens entram em conflito com a primeira Lei.
3. Um robô tem de proteger a sua própria existência desde que não entre em conflito
com a primeira e segunda Lei.
Mais tarde foi introduzida a Lei zero: um robô não pode fazer mal à humanidade e nem,
por inacção, permitir que ela sofra algum mal.
A palavra robô deriva da língua Checa (da palavra Robota) que significa “trabalhador
forçado” ou “escravo/servo”. Foi pela primeira vez utilizada em 1921 por Karel Capek, um
escritor Checo, que descreve os robôs como máquinas que se assemelham a pessoas mas
que trabalham duas vezes mais e não apresentam sentimentos humanos.
Pode-se dizer então que um robô é uma máquina que é capaz de acções independentes,
realizar determinadas tarefas, sem ser continuamente supervisionado por um operador
humano.
2.1.1. ROBÓTICA INDUSTRIAL
No século XVIII desenvolveram-se os primeiros teares mecânicos para a indústria têxtil e
com o progresso tecnológico alastrou a aplicação da robótica em diferentes áreas
industriais [2]. No entanto os robôs, conforme conhecemos nos dias de hoje, surgiram na
década de 60 resultado dos avanços conquistados na área da electrónica e computação. O
primeiro robô industrial foi o Unimate (Figura 1), desenvolvido por George Devol e Joe
Engleberger para a General Motors em 1961. Realizava tarefas perigosas para os
operadores como remoção de peças da fundição e soldadura de peças em carroçarias.
7
Figura 1 Primeiro robô industrial - Unimate
A indústria tem uma necessidade cada vez maior de aumentar a sua produtividade e ao
mesmo tempo, de fornecer produtos com uma qualidade uniforme. Isto tem levado os
industriais a virarem-se para a automação baseada em computador. Actualmente, a maioria
das tarefas automatizadas de fabrico são levadas a cabo por máquinas dedicadas que são
projectadas para executar apenas um conjunto específico de funções no processo
produtivo. A inflexibilidade e geralmente o alto custo destas máquinas, tem conduzido a
um interesse crescente na utilização de robôs capazes de executar uma grande variedade de
operações, proporcionando uma maior flexibilidade ao ambiente produtivo, a custos mais
baixos. Geralmente os robôs industriais assemelham-se a um braço humano comandado
por computador. Este braço mecânico é aproveitado para manipular diversos tipos de
ferramentas segundo trajectórias diversas e assim executar operações de fabrico. Em vez
das referidas ferramentas, podem-se adaptar aos robôs industriais uma ou mais “mãos”
rudimentares, designadas por garras, para permitir a movimentação e até a montagem de
peças. Os robôs industriais podem executar um grande número de operações num ambiente
fabril dos dias de hoje de uma forma muitas vezes mais rápida, mais precisa e mais
uniforme do que os seres humanos.
As aplicações de robôs industriais podem dividir-se basicamente em dois grandes grupos:
Manipulação de materiais e montagem – neste grupo o robô tem acoplado ao seu
punho, uma garra mecânica, um dispositivo com ventosas actuadas por vácuo
(Figura 2), ou um dispositivo especialmente concebido para pegar e manipular
determinadas peças.
8
Figura 2 Robô industrial com punho a vácuo
Operações de processo – neste grupo o robô manipula uma ferramenta para efectuar
operações de um dado processo de fabrico, como por exemplo soldadura numa
linha de montagem automóvel (Figura 3).
Figura 3 Robôs de soldadura numa linha de montagem automóvel
2.2. CONCEITOS BÁSICOS DOS ROBÔS MANIPULADORES
Os elementos básicos constituintes de um robô manipulador são o seu braço mecânico,
juntas e elos, ponta ou garra (End-effetor), mas também existem conceitos como graus de
liberdade do braço, volume de trabalho, cinemática. Estes elementos e conceitos são
brevemente descritos nas subsecções seguintes.
9
2.2.1. BRAÇO MECÂNICO
Um braço mecânico ou robótico é um braço que normalmente se assemelha a um braço
humano; daí surge o facto de se associar a alguns elementos do braço robótico nomes
como pulso, cotovelo, antebraço, etc. (Figura 4).
Figura 4 Relação entre braço humano e robótico
Visualizando apenas o braço robótico (Figura 5), vê-se que ele consiste numa série de
corpos rígidos, denominados elos (links), interligados por juntas (joints), e que permitem
um movimento relativo entre esses elos num certo raio de acção, movimentando objectos
entre dois pontos após a recepção de ordens de um controlador e informações de sensores.
Figura 5 Braço robótico e seus elementos
2.2.2. JUNTAS
As juntas determinam os possíveis movimentos do manipulador e juntamente com as
características físicas dos elos (formas e tamanhos), determinam a anatomia do braço. As
juntas podem ser principalmente de três tipos:
10
Rotacionais (R) – onde o movimento relativo dos elos é rotacional.
Lineares ou Prismáticas (L ou P) – onde o movimento relativo dos elos é
linear ou prismático.
Esférica (S) – este tipo é basicamente a combinação de três juntas
rotacionais com o mesmo ponto de rotação.
A Figura 6 ilustra estes três tipos de juntas.
Figura 6 Tipos de juntas
2.2.3. GRAUS DE LIBERDADE
Os graus de liberdade (Degrees of Freedom-DOF) determinam os movimentos do braço
robótico no espaço bidimensional ou tridimensional. Cada junta define um ou mais graus
de liberdade e, assim sendo, o número de graus de liberdade do robô está relacionado com
o número de juntas.
Quando o movimento ocorre num único eixo, diz-se que a junta tem um grau de liberdade;
caso o movimento se dê em mais de um eixo, a junta tem dois, ou mais, graus de liberdade.
Por norma, isto significa que quanto maior for a quantidade de graus de liberdade, mais
complicados são os cálculos da cinemática, dinâmica e, consequentemente, o controlo do
manipulador.
2.2.4. VOLUME DE TRABALHO
O volume ou espaço de trabalho (workspace) define a região do espaço dentro da qual o
manipulador pode posicionar o órgão terminal (garra ou ferramenta), conforme se pode
observar na Figura 7. Esta região é dada pela configuração física do braço robótico, pelos
11
limites dos movimentos das juntas e pelo tamanho dos componentes do corpo, braço e
pulso.
Figura 7 Volume de trabalho do KUKA youBot
2.2.5. ACTUADOR FINAL
Normalmente o actuador final encontra-se na extremidade do braço manipulador. As garras
(gripper) são elementos específicos que permitem agarrar e manipular objectos de
diferentes tamanhos, formas e materiais, dependendo da aplicação pretendida.
Alternativamente os robôs podem ser equipados com uma ferramenta (tool), como se pode
verificar na Figura 8.
Figura 8 a)Garra do manipulador youBot; b) Manipulador com ferramenta na sua extremidade
12
2.2.6. CINEMÁTICA DOS MANIPULADORES
A cinemática de um manipulador é o estudo dos seus movimentos, sem a preocupação das
causas que os originam.
A posição do órgão terminal de um manipulador depende, a cada instante, dos valores dos
deslocamentos angulares das juntas rotativas e deslocamentos lineares das juntas
prismáticas. Existem dois tipos possíveis de representar a cinemática de um manipulador: a
cinemática directa e a cinemática inversa.
A cinemática directa consiste em determinar a posição e orientação da garra ou actuador
final conhecendo a posição de cada junta. A forma mais popular de cálculo da cinemática
directa é pela aplicação da convenção de Denavit-Hartenberg [3][4], mas também pode ser
calculada recorrendo a resoluções trigonométricas. A cinemática inversa, como é de prever
permite o cálculo dos valores das juntas, através do conhecimento da posição e orientação
da garra; a Figura 9 representa a relação destas duas cinemáticas.
Figura 9 Relação entre a cinemática directa e inversa
No entanto a resolução da cinemática inversa não é tão linear como a da cinemática
directa, sendo geralmente bastante mais complexa; esta complexidade aumenta com o
aumento do número de DOF do manipulador. Isto deve-se ao facto de que a resolução da
cinemática inversa leva geralmente a mais do que uma solução para o mesmo conjunto de
coordenadas do atuador final. No caso de robôs com dois dof rotacionais, estas soluções
são braço, normalmente designadas por upper elbow e lower elbow (Figura 10).
Cinemática
Directa
Posição do
actuador
final
Ângulos
das
Juntas
Cinemática
Inversa
13
Figura 10 Duas possíveis soluções da cinemática inversa para o mesmo braço
2.2.7. EQUAÇÕES DA CINEMÁTICA
Analisando um manipulador com dois DOF, conforme a Figura 11, recorrendo-se à
resolução trigonométrica, as equações da cinemática directa são dadas por:
(1)
Figura 11 Manipulador com 2 graus de liberdade
As equações da cinemática inversa para o mesmo manipulador são dadas por:
(2)
14
2.3. ROBÓTICA MÓVEL
De todos os tipos de robôs existentes, o trabalho desenvolvido neste projecto foca-se
essencialmente nos robôs móveis. Os robôs móveis são tipicamente dispositivos de
transporte automático, ou seja, são plataformas mecânicas dotadas de um sistema de
locomoção capazes de navegar através de um determinado ambiente de trabalho, dotados
de certo nível de autonomia para sua locomoção, portando cargas. As suas aplicações
podem ser muito variadas e estão sempre relacionadas com tarefas que normalmente são
arriscadas ou nocivas para a saúde humana (Figura 12), em áreas como a agricultura, no
transporte de cargas perigosas ou em tarefas de exploração solitárias ou cooperativas junto
a outros veículos não tripulados. Exemplos clássicos são a recolha e transporte de
materiais, as tarefas de manutenção de reactores nucleares, a manipulação de materiais
explosivos, a exploração subterrânea etc.
Figura 12 Clean Bot da Eventronic, limpa tubulações.
Quando se fala em autonomia, esta não se relaciona apenas com questões energéticas, mas
também se refere à capacidade de perceber, modelar, planear e actuar para alcançar
determinados objectivos, sem a intervenção (ou com uma intervenção muito pequena) do
operador humano, já que o robô se pode locomover em ambientes estruturados ou não
estruturados, total ou parcialmente conhecidos. O papel do robô em determinada tarefa,
deve ser desempenhado pelo próprio sistema de controlo do veículo, que o deve suprir com
a inteligência necessária para fazê-lo mover-se correctamente [5].
15
2.3.1. TIPOS DE LOCOMOÇÃO EM ROBÔS MÓVEIS
O sistema de locomoção é uma das principais características distintivas de um robô móvel,
estando condicionado ao seu ambiente de trabalho. De acordo com o ambiente, o sistema
de locomoção do robô pode ser de vários tipos:
Com patas;
Com rodas;
Com lagartas.
Como o mais usual e o mais adequado a este trabalho são os robôs móveis com rodas, no
ponto seguinte vai-se apenas fazer uma análise dos tipos de rodas existentes.
2.3.2. TIPOS DE RODAS
As rodas, devido à sua elevada eficiência e fácil implementação, são o mecanismo de
locomoção mais utilizado tanto na robótica móvel como nos veículos em geral.
Por regra geral assume-se que, durante o movimento, o plano da roda se mantém vertical e
que as rodas giram ao redor dos seus eixos (horizontais). A sua orientação em relação à
estrutura pode ser fixa ou variável. Existem basicamente duas classes de rodas: as
convencionais e a sueca (swedish wheel). Em ambas, supõe-se que o contacto entre a roda
e o terreno se reduz a um único ponto do plano. Para uma roda convencional, supõe-se que
o contacto entre a roda e o terreno satisfaz a condição de rotação pura, sem deslizamento.
Isso significa que a velocidade do ponto de contacto é igual a zero (tanto para a
componente paralela, quanto para a perpendicular ao plano da roda).
Dentro das duas classes anteriores, as rodas podem ser de quatro tipos:
Roda fixa - o eixo da roda é fixado na estrutura do robô. Em geral este tipo está
associado ao sistema de tração do robô.
Roda orientável centralizada - é aquela em que o movimento do plano da roda com
respeito à estrutura é uma rotação ao redor de um eixo vertical que passa através do
centro da roda. Em geral é usada como roda de direcção ou de tração-direcção.
16
Roda orientável não-centralizada (roda louca) - também é conhecida como roda
castor (castor wheel). É uma roda orientável com relação à estrutura tal que a
rotação do plano da roda ocorre ao redor de um eixo vertical que não passa através
do centro da roda. A sua principal função é dar estabilidade à estrutura mecânica do
robô como roda de direcção.
Roda sueca - supõe-se igual a zero apenas uma componente de velocidade do ponto
de contacto da roda com o terreno ao longo do movimento. Os rolamentos
montados na sua superfície permitem que a roda se desloque numa direcção
perpendicular ao seu plano.
A roda sueca é a roda utilizada no robô youBot (Figura 13) adoptado neste trabalho; assim
sendo, deixa-se de parte as restantes e analisa-se apenas esta no ponto seguinte.
2.3.3. RODA SUECA
Este tipo de rodas não tem eixo vertical de rotação, mas apesar disso são capazes de se
mover de forma omnidireccional tal como as rodas castor; isto é possível adicionando um
grau de liberdade à roda fixa. As rodas suecas são rodas fixas, mas a diferença está no
facto de possuírem rolamentos ao longo do perímetro da roda. Estes rolamentos
tipicamente têm um eixo de rotação de 45° em relação ao plano da roda e a 45° do eixo
principal da roda. A disposição destes rolamentos permite que a roda se movimente em
qualquer direcção ou seja, quando montadas numa plataforma permite que esta tenha um
movimento omnidireccional [6].
Figura 13 Roda Sueca
A vantagem dos robôs omnidireccionais deve-se ao facto de estes robôs terem máxima
manobrabilidade no plano, o que significa que se podem mover em qualquer direcção sem
17
terem necessidade de se reorientar. A base de uma plataforma omnidireccional KUKA
youBot pode ser vista na Figura 14.
Figura 14 Plataforma omnidireccional do KUKA youBot
2.4. PLANEAMENTO DE TRAJECTÓRIAS
Trajectória é o nome dado ao percurso realizado por um determinado corpo no espaço,
com base num sistema de coordenadas pré-definido. De nada serve possuir-se um robô
móvel se este não “sabe” qual a trajectória que terá de efectuar para desempenhar a sua
função. Seguidamente explicam-se alguns dos métodos mais conhecidos para o
planeamento de trajectórias utlizados na robótica móvel; para uma abordagem mais
alargada destes e outros métodos de planeamento de trajectórias pode ser consultada a
referência [6].
2.4.1. ROAD MAP
O método road map (Figura 15) é uma rede de duas dimensões composta por linhas rectas
que ligam um ponto inicial e final sem intersectarem os obstáculos. Este algoritmo
determina um conjunto de pontos que ao serem conectados por linhas rectas produzem um
conjunto de polígonos que envolvem cada obstáculo.
18
Figura 15 Método Road Map
2.4.2. VISIBILITY GRAPHS
Os visibility graphs (Figura 16) são uma rede de grafos que formam caminhos entre os
vértices dos polígonos, tendo sido um dos primeiros métodos de planeamento de
trajectórias utilizado. No grafo G = (V,E), os vértices V são os vértices dos obstáculos e E
são as linhas que ligam cada vértice aos vértices visíveis. Este método só pode ser aplicado
em ambientes com obstáculos poligonais. O custo computacional deste método cresce à
medida que o número de obstáculos vai aumentando.
Figura 16 Método dos Visibility Graphs
2.4.3. VORONOI DIAGRAMS
Os diagramas de Voronoi são uma rede de grafos que formam polígonos em torno dos
obstáculos (Figura 17). Para serem obtidos os polígonos dos diagramas de Voronoi, é
necessário construir um conjunto de linhas que liguem os centros dos obstáculos, e
posteriormente desenhar um conjunto de linhas perpendiculares às primeiras. As linhas
perpendiculares são de seguida ajustadas para respeitar o número mínimo de vértices.
19
Figura 17 Diagrama de Voronoi
2.4.4. RAPIDLY EXPLORING DENSE TREES
O Rapidly Exploring Dense Trees (RRT) é um algoritmo projectado para procurar de
forma eficiente espaços convexos, altamente dimensionais através da construção aleatória
de uma árvore de preenchimento de espaço. A árvore é construída de forma incremental a
partir de amostras recolhidas aleatoriamente a partir do espaço de busca e está
inerentemente pressionada para crescer para grandes áreas ainda não analisadas do espaço.
Na Figura 18 é possível verificar que a RRT nas primeiras iterações alcança rapidamente
zonas não exploradas, no entanto a RRT é densa no limite, com probabilidade igual a um,
o que significa que chega arbitrariamente a qualquer ponto do espaço.
Figura 18 Árvore em crescimento do algoritmo RRT
2.4.5. POTENTIAL FIELD
O método Potential Field, associa um campo potencial artificial ao espaço de estados do
sistema. O ponto de destino é envolvido por um campo potencial atractivo, enquanto o
ponto inicial é envolvido por um campo potencial repulsivo. A ideia principal deste
método prende-se com a movimentação do robô como se fosse uma partícula sob a
20
influência de um campo potencial artificial, que será atraído pelo ponto de destino,
enquanto vai sendo repelido pelos obstáculos (Figura 19).
Figura 19 Exemplo de um potencial
2.5. ALGORITMOS DE PESQUISA
Os algoritmos de pesquisa são utilizados para determinar o caminho mais curto entre dois
pontos sem que haja colisão com obstáculos. Ao contrário dos algoritmos de planeamento
de trajectória que, normalmente, determinam o caminho entre dois pontos, mas nem
sempre o mais curto, os algoritmos de pesquisa fazem buscas mais exaustivas,
normalmente utilizando heurísticas, conseguindo determinar sempre o caminho mais curto
entre dois pontos. Em seguida são comparados dois destes algoritmos, sendo que o A* será
o escolhido para este trabalho por razões que serão explicadas no próximo capítulo.
2.5.1. ALGORITMO DIJKSTRA’S
O algoritmo Dijkstra's, criado por Edsger Dijkstra em 1956, é um algoritmo de pesquisa
que entra em conta com a distância percorrida. O algoritmo vai explorar sempre o nó que
está mais perto do ponto inicial em cada iteração. A partir do nó inicial, o nó seguinte será
o que está a uma distância mais curta, e assim sucessivamente até encontrar o destino.
21
2.5.2. ALGORITMO A*
O algoritmo de pesquisa A* (lê-se A Estrela) [7], apresentado por Hart, Nilsson e Raphael
em 1968, é dos métodos mais utilizados na robótica móvel. É uma extensão ao método
Dijkstra, sendo um algoritmo que usa heurísticas para alcançar a sua meta.
Este método avalia o nó que deve ser expandido, combinando o custo de chegar desde o nó
inicial até ao nó n (g(n)), e o custo da deslocação desse nó até ao nó de destino (h(n)).
(3)
Como g(n) é o custo da deslocação desde o nó inicial até ao nó n, e h(n) é o custo estimado
desde o nó n até ao nó de destino, é possível afirmar que f(n) é o custo estimado da melhor
solução para a deslocação até ao nó de destino, passando pelo nó n.
2.6. COMPETIÇÕES DE ROBÓTICA
Actualmente existem várias competições de robótica no mundo, sendo que as competições
de robótica visam principalmente estimular a pesquisa e o desenvolvimento na área de
robótica como um todo, servindo muitas vezes como uma forma de colocar em prática os
conhecimentos teóricos aprendidos por estudantes de áreas da engenharia e a troca de
informações entre alunos e profissionais da área. Em 2013 surgiu um novo projecto focado
na robótica e particularmente nas competições de robótica, o projecto RoCKIn.
2.6.1. PROJECTO ROCKIN
No decorrer deste trabalho tive o privilégio de fazer parte do projecto Robot Competitions
Kick Innovation in Cognitive Systems and Robotics (RoCKIn) [8], integrando uma equipa
que foi representar o ISEP no RoCKIn Camp 2014 em Roma, constituída pelo meu
orientador Manuel F. Silva e por outro colega de curso, com um trabalho semelhante ao
meu na área da robótica, o Rui Alen.
O RoCKIn é um projecto financiado pela União Europeia que será executado ao longo de
três anos (tendo já sido iniciado em 2013), consistindo de competições de robôs, palestras,
eventos educativos e oficinas de transferência de tecnologia. O objectivo é incentivar a
construção de robôs mais inteligentes e confiáveis. Com base na RoboCup@Work e
22
RoboCup@Home, neste projecto serão abordados dois desafios diferentes, o
RoCKIn@Home e o RoCKIn@Work; tanto um como o outro são desafios de competições
utilizadas na RoboCup, sendo que a vertente @Work é mais recente.
O RoCKIn@Home concentra-se em serviços domésticos para robôs: robôs que
melhoraram habilidades cognitivas e são capazes de executar tarefas socialmente úteis, tais
como o apoio à deficiência e aos idosos. Nos estágios iniciais da competição de robôs
individuais serão superadas tarefas individuais básicas, como navegação através dos
quartos de uma casa, manipulação de objectos ou reconhecer rostos, que, depois de
coordenadas, servirão para lidar com tarefas de manutenção da casa ao mesmo tempo,
alguns deles em interacção natural com os seres humanos. Este é o futuro dos cuidados e
através desta competição, o RoCKIn espera contribuir para a melhoria de uma qualidade de
vida para os povos da Europa.
Por outro lado o RoCKIn@Work é centrado em aplicações para robôs inovadores na
indústria: robôs que são mais capazes de trabalhar de forma interactiva com os seres
humanos. Os cenários de teste vão envolver (e combinam) aspectos de manipulação,
montagem, logística e cooperação por vários robôs em rede com sensores estáticos e outros
dispositivos. Neste cenário, o RoCKIn acredita que a promoção destes desenvolvimentos é
essencial para garantir a continuidade da competitividade comercial da indústria na
Europa.
2.6.2. ROBOCUP
A RoboCup [9] é uma competição de robótica iniciada em 1997 com o objectivo de
promover a investigação nas áreas da robótica e da inteligência artificial (Artificial
Inteligence - AI), oferecendo um desafio formidável e publicamente atraente. Uma das
maneiras mais eficazes para promover a ciência e investigação em engenharia é definir
uma meta desafiadora de longo prazo. Quando a realização de tal meta tem impacto social
significativo, ele é chamado um projecto de grande desafio. Construir um robô que joga
futebol não vai por si só, gerar impacto social e económico significativo, mas a realização
irá certamente ser considerado uma grande conquista para o campo. Chama-se a este tipo
de projecto, um projecto de referência, e o RoboCup é um projecto de referência, pois o
facto de se criar um robô que joga futebol abre novos horizontes para um futuro mais
evoluído, e leva a que se criem novas metas e desafios mais atraentes para o mundo da
robótica.
23
A competição tem actualmente quatro grandes domínios da robótica cada um com um
número de ligas e sub-ligas:
RoboCup Soccer - nesta competição, os robôs completamente autónomos jogam
futebol entre eles (Figura 20).
Figura 20 Robôs a jogarem futebol
RoboCup Rescue - Na liga rescue pretende-se desenvolver robôs capazes de efectuar
missões de busca e salvamento (Figura 21).
Figura 21 Robô utilizado na prova de busca e salvamento
RoboCup@Home – Cada vez com mais adesão, esta liga pretende desenvolver robôs
para assistirem os humanos nas suas tarefas domésticas (Figura 22).
24
Figura 22 Robô a manusear um utensilio doméstico
RoboCupJunior – Esta liga é uma iniciativa educativa orientada a projectos que
patrocinam eventos de robótica locais, regionais e internacionais para jovens estudantes
(Figura 23). É orientada para alunos de escolas primárias e secundárias, e até mesmo
para alunos graduados que não possuam os recursos para se envolverem nas ligas de
“alto nível”.
Figura 23 Liga júnior
Recentemente surgiu uma nova liga que tem o nome RoboCup@Work e é uma nova linha
no RoboCup que tem como alvo o uso de robôs em cenários relacionados com a indústria.
Esta nova prova destina-se a promover a investigação e desenvolvimento que permita o
uso de robôs móveis, equipados com manipuladores para aplicações industriais, onde os
robôs possam cooperar com trabalhadores humanos para tarefas complexas que vão desde
o fabrico, automação, movimentação e até logística geral.
25
2.6.3. ROBOCUP@WORK
A liga RoboCup@Work aborda novos desafios, e procura resolver muitos dos desafios
científicos padrão para robótica. A lista seguinte menciona apenas alguns deles:
Percepção em ambientes estáticos e dinâmicos sob diferentes condições ambientais;
Controlo de movimento de manipuladores móveis;
Interacção homem-robô e robô-robô;
Concepção, construção e operação de robôs robustos a um custo acessível;
Simulação, avaliação e aferição de sistemas de robôs avançados.
2.6.4. ARENA DE COMPETIÇÃO
Quando se participa nestas ligas é necessário ter, em primeiro lugar, a definição das regras
dessa competição. Em particular, segundo as regras [10], a arena de competição (Figura
24) da RoboCup@Work é uma área rectangular com não menos de 2 m × 4 m e não mais
de 4 m × 6 m, cercada por muros. A altura das paredes é não inferior a 20 cm e não mais
do que 40 cm. Uma ou mais portas podem ser previstas, onde os robôs podem entrar ou
sair da arena.
Figura 24 Exemplo de arena do Robocup@Work
As arenas podem conter uma ou mais áreas de serviço, que têm efeitos específicos para um
teste particular. Os exemplos incluem as áreas de carga e descarga, correias
transportadoras, áreas de armazenamento, etc.
26
2.6.5. OBJECTOS DE MANIPULAÇÃO
Na Figura 25 podem-se observar três objectos de manipulação utlizados nesta liga e
escolhidos de dentro de uma grande variedade de objectos relevantes em aplicações
industriais, como ferramentas e materiais possivelmente operacionais necessárias para os
processos de fabrico. A intenção é começar com um simples conjunto de objectos de
diferentes formas e cores e alargar o espectro todos os anos, em pelo menos um aspecto. O
conjunto inicial de objectos inclui cubos, hexágonos, cilindros, esferas (bolas) e anéis. O
peso de cada objecto não pode ser superior a 250 g. Cada objecto tem de ser formado de tal
modo que possa ser agarrado com uma pinça de abertura paralela com um intervalo de
abertura não mais largo do que 7 cm.
Figura 25 Objectos de manipulação
2.6.6. ROBÔS UTILIZADOS
Os robôs utilizados nesta liga precisam cumprir com certas restrições de tamanho. Um
robô como o usado na competição, incluindo todas as partes ligadas a ele, deve ser capaz
de mover-se por si só numa configuração de modo a se encaixar num paralelepípedo de
dimensões de 80 cm × 50 cm × 80 cm (comprimento × largura × altura). Os organizadores
podem mencionar outros constrangimentos, como limites de peso.
As seguintes suposições são feitas sobre o tipo de robôs utilizados na competição:
Pelo menos um dos robôs usados por uma equipa é móvel e move-se sobre rodas.
Nenhumas considerações específicas são feitas sobre o projecto cinemático, mas os
27
robôs móveis devem ser capazes de seguir em frente, em superfícies firmes e
basicamente planas.
Os robôs têm pelo menos um manipulador e devem ser capazes de agarrar objectos,
que são manipuláveis por uma pinça paralela com uma largura de mandíbula de
pelo menos 5 cm e que não pesem mais de 250 g.
Os robôs utilizam sensores para obter informações sobre a sua localização no
ambiente e os objectos relevantes para a tarefa. Os principais tipos de sensores que
podem ser utilizados pelos robôs incluem:
o Laser Rangefinders (das marcas Hokuyo [11] ou Sick [12]);
o Câmaras (charge-coupled devices - CCD) a cores (cf. qualquer tipo de
câmara Universal Serial Bus (USB));
o Câmaras 3D (como a câmara Kinect[13]).
Os robôs podem resolver as tarefas de forma segura e robusta usando (todos ou um
subconjunto de) estes sensores. Competições futuras podem prever a utilização de sensores
de rádio frequência (Radio-frequency identification - RFID) na concepção de cenários.
2.7. SIMULADORES
Hoje em dia existem dezenas de programas de simulação de robótica. Estes programas
ajudam não só quem pretende iniciar-se na robótica ou nas competições mas também para
quem pretende aperfeiçoar os seus robôs. Estes simuladores são cada vez mais completos,
com diversos recursos, e a maior parte já possui bibliotecas com a maioria dos robôs mais
utilizados no mercado e em competições, evitando assim testes nos robôs reais,
economizando tempo e dinheiro. De seguida são descritos alguns dos mais conhecidos
simuladores existentes, evidenciando as suas principais características.
Gazebo [14] - é um simulador multi-robô para ambientes tridimensionais interiores
e exteriores. Isto possibilita simulações com um bom grau de fidelidade comparado
com outros simuladores. No entanto, este factor gera maior complexidade na
simulação, o que é computacionalmente mais caro e impossibilita a simulação com
um número tão grande de robôs, a não ser que eles sejam extremamente simples e
28
sem muitas funcionalidades. O Gazebo foi um dos simuladores com que tive
oportunidade de trabalhar na minha participação no RoCKInCamp 2014, e permite
programação em Robot Operating System (ROS) o que é uma enorme vantagem,
pois é o chamado código aberto, mas como já foi referido é um simulador bastante
pesado para máquinas ditas, normais.
Webots [15] - O Webots, assim como o Gazebo, é um simulador robótico
profissional usado largamente para propósitos comerciais e educacionais. Os
programas para controlo de robôs que se comunicam com o Webots podem ser
escritos numa variedade de linguagens de programação, como C, C++, Java e
MATLAB. O Webots funciona nos sistemas operativos mais comuns da
actualidade incluindo o Windows, Mac OS X e Linux. A maior desvantagem do
Webots é o facto de este ser um software pago de alto custo (o preço de uma
licença educativa ronda os 260€). Ele é vendido, hoje em dia, em duas versões,
sendo uma educacional dedicada ao ensino de robótica em salas de aula e uma
versão profissional mais completa dedicada ao desenvolvimento com intuito
comercial.
Microsoft Robotics Developer Studio [16] - mais conhecido como MRDS, é um
ambiente para controlo e simulação de robôs totalmente baseado na plataforma
Windows. Inclui uma ferramenta de programação visual usada para criar e depurar
aplicações para robôs, interfaces baseadas em Windows e web, simulação em três
dimensões e acesso simples a sensores e atuadores. Estas são características em
geral comuns a todas as ferramentas de desenvolvimento de robôs existentes. O
facto de não possuir código aberto impossibilita a modificação de código, que é
muitas vezes necessário para adaptações de projecto.
V-REP [17] - é apelidado como o canivete suíço entre os simuladores de robôs;
possivelmente é um dos simuladores com mais funções, recursos e Application
Programming Interface (API) mais elaborado. A linguagem de programação
padrão é em LUA, tornando o V-REP uma aplicação extremamente versátil,
deixando a liberdade ao utilizador de combinar as funcionalidades de baixo / alto
nível para obter novas funcionalidades de alto nível.
Algumas das suas principais características são:
29
o Seis Linguagens de programação (C/C++, Python, Java, Lua, Matlab e
Urbi);
o Mais de 400 diferentes funções de API;
o 100 Serviços ROS, 30 tipos de publicação ROS, 25 tipos de assinatura
ROS, extensível;
o Diversos sensores (visão, proximidade, etc);
o Três motores de física (Open Dynamics Engine - ODE, Bullet, Vortex);
o Cálculo completo de cinemática.
Este simulador, apesar de ser um dos mais completos, é também um dos mais leves
e com um ambiente gráfico bastante agradável, o que torna tanto a programação
como a visualização simples mas eficiente.
31
3. IMPLEMENTAÇÃO DO
PROJECTO
Neste capítulo dão-se a conhecer as escolhas adoptadas para este projecto e o trabalho
desenvolvido para a realização do mesmo. Será feita uma análise a cada uma das escolhas,
tanto a nível teórico como analítico (naquelas em que foi necessário o uso de cálculos).
3.1. SIMULADOR
De todas as escolhas feitas para este trabalho, a escolha do simulador foi a mais directa,
pois fazia parte da proposta do projecto trabalhar com este simulador; além disso, este
simulador possui o modelo da plataforma utilizada neste trabalho, o KUKA youBot.
Trabalhando com o V-REP, tem-se logo a noção que é um óptimo simulador de robótica,
isto porque de todos os programas analisados neste trabalho, fica-se com a ideia que é o
mais completo. Para que se tenha uma pequena ideia de como funcionar com o simulador,
são apresentadas, de seguida, algumas das características mais importantes da interface
com o utilizador.
32
Pode-se ver através da Figura 26 o ambiente deste simulador. Como se pode verificar trata-
se de uma interface bastante completa.
Figura 26 Interface com o utilizador do simulador V-REP[18]
A programação dos modelos é feita dentro dos chamados child scripts, que podem ser
vistos no elemento Scene hierarchy da Figura 26. Os child scripts possuem o código que
permite controlar uma determinada função dos modelos simulados. São reconhecidos pelo
seu ícone parecido com uma folha de texto (Figura 27). Para editá-los basta fazer duplo
click no ícone e depois é só preencher a janela que surge com o código que se pretende.
Figura 27 Child script associado ao youBot
Os child scripts são executados em cascata: cada um é executado (chamado ou tratado) por
um script pai ou seja, o script pai do child script é o primeiro script a ser executado - a
partir daí todos os scripts dentro dele são executados. Se um child script não tem pai, então
o script responsável por executá-lo é o script principal (main script). Em cada simulação
apenas pode existir um script principal; este não convém que seja alterado pois, por
omissão, já vem com as funções definidas para o bom funcionamento das simulações. Para
33
os child scripts não existe limite de número por simulação e estes podem ser alterados, pois
é através deles que se controlam os modelos.
O V-REP já vem com centenas de funções pré-definidas [19] para o utilizador tirar um
melhor partido do seu projecto, poupando tempo e códigos demasiado extensos. Estas
funções fazem parte da API regular do simulador e são facilmente reconhecidas pelo seu
prefixo "sim" ou "_sim". Algumas destas funções foram adoptadas neste trabalho pois,
como já foi dito, são bastante úteis para não se sobrecarregar as simulações com código
excessivo, tornando-as lentas. Alguns exemplos das funções utilizadas foram:
simGetObjectPosition() – esta função foi utilizada para se saber a posição
do youBot; em caso de sucesso ela retorna as posições x, y, z, caso contrário retorna
nil (nulo).
simGetObjectHandle() – esta função atribui a uma variável o objecto com
que se está a lidar.
Uma outra funcionalidade do simulador que se revelou bastante útil são os objectos dummy
(Figura 28). Estes objectos são pontos com orientação (x, y, z), sendo normalmente
utilizados como pontos de referência. Podem ser utilizados sozinhos ou acoplados a algum
objecto.
Figura 28 Dummy
Tornaram-se bastante úteis neste trabalho pelo facto de que serviram como vários pontos
de referência. É através deles que se obtêm as coordenadas do youBot, do ponto de
chegada na trajectória, do manipulador e do objecto a manipular. Isto evita ter que se
enviar através de strings, por exemplo, as coordenadas para onde o robô terá que se
deslocar.
Todas as funções utilizadas ao longo deste trabalho, bem como o restante código da
simulação desenvolvido neste trabalho estão devidamente comentados no CD em anexo.
34
3.1.1. LINGUAGEM DEPROGRAMAÇÃO UTILIZADA NO SIMULADOR
A linguagem de programação LUA [20] foi a escolhida para a simulação, sendo esta a
linguagem de programação padrão do simulador. A maior parte da documentação técnica
sobre Lua está em inglês, sendo o principal documento em português o manual de
referência [21]. A linguagem de programação LUA foi criada em 1993 no Tecgraf, um
laboratório de investigação e desenvolvimento da Pontifícia Universidade Católica do Rio
de Janeiro (PUC-Rio) no Brasil. É uma linguagem de script dinâmica, semelhante a outras
linguagens de script como Python, Ruby e Hypertext Preprocessor (PHP), destacando-se
pela sua simplicidade, portabilidade e rapidez. As funções do V-REP mencionadas
anteriormente (sufixo “sim”) são reconhecidas por esta linguagem.
3.2. DIAGRAMA DE BLOCOS DO SISTEMA
Através do diagrama de blocos da Figura 29, tem-se uma ideia de como se irá processar a
simulação, pode-se ver que o maior “trabalho” cabe ao algoritmo A*, pois recebe posições
de três elementos diferentes, resultando assim depois de processado o algoritmo numa
trajectória, tendo esta trajectória definida, resta aplicar o movimento ao robô através da
cinemática. Por último será feita a manipulação do objecto.
Posição
youBot
Algoritmo
A*
Posição
Destino
Posição
Obstáculos
Trajectória
resultante
Cinemática do
movimento Manipulação
Figura 29 Diagrama de blocos do sistema
35
3.3. PLATAFORMA MÓVEL
A plataforma móvel escolhida para a realização deste trabalho foi o KUKA youBot. Esta
escolha prende-se com o facto de esta plataforma ser uma das que preenche os requisitos
impostos pelas regras da RoboCup@Work: a plataforma possui dimensões iguais a 53,1cm
× 38,0cm × 14,0cm (Figura 30) e o peso é de 20 kg sem baterias (quando possui as baterias
o peso ronda os 24 kg).
Figura 30 Dimensões da plataforma e das rodas
Onde:
A = 7,487 cm
B = 10 cm
C = 4,71 cm
D = 30,046 cm
E = 0,28 cm (máximo diâmetro do rolamento)
O KUKA youBot [22] (Figura 31) é uma plataforma móvel que foi desenvolvida
principalmente para o ensino e investigação. As quatro rodas suecas que possui conferem-
lhe um movimento omnidireccional, a sua velocidade mínima é de 0,01 m/s e a máxima de
aproximadamente 0,8 m/s, possui uma placa de Personal Computer (PC) embutida e nela
vem instalado o sistema operativo Linux. Possui um braço manipulador com 5 graus de
liberdade e o seu órgão terminal consiste numa garra com dois dedos (ver Figura 8). Por
36
último, vem com um conjunto de duas baterias recarregáveis de 12 V, 5 Ah, que quando
totalmente carregadas dão para uma autonomia de aproximadamente 90 min.
Figura 31 KUKA youBot
3.3.1. RODAS
As rodas suecas já foram introduzidas na Secção 2.3, restando agora fazer a análise
matemática das mesmas para se perceber como influenciam o movimento da plataforma.
Para isso, o estudo a ser feito será o da cinemática; o facto de serem rodas não
convencionais e que permitem um movimento “diferente” nos robôs móveis, faz com que
tenham vindo a ser cada vez mais utilizadas o que leva a que actualmente já existam vários
artigos sobre este tipo de rodas para diferentes plataformas [23][24].
Figura 32 Parâmetros da roda sueca [6]
Em termos cinemáticos, uma roda sueca é descrita normalmente como uma roda fixa, com
a diferença que é adicionado um termo γ - este termo representa o ângulo entre o plano da
roda e o eixo de rotação dos rolamentos. Considerando a Figura 32 e a equação (4), β
representa o ângulo entre o plano da roda e o chassis da plataforma, φ representa a
velocidade de rotação da roda e, por último, r representa o raio da roda.
37
A restrição do movimento de cada roda é dada pela equação (4):
(4)
R(θ) (definida na equação (5)) é uma matriz de rotação 3×3 da plataforma, e através desta
é possível calcular a rotação do referencial local da plataforma {Xr,Yr} em relação ao
referencial global. A Figura 33 representa um robô móvel alinhado com o referencial
global, ou seja, com um R(θ) = R(π/2).
Figura 33 Robô móvel alinhado com o referencial global {Xi,Yi}
(5)
A equação (6) representa uma matriz 3×1, e nela estão os valores das velocidades da
plataforma em relação ao referencial global.
(6)
Compreendendo estes conceitos passou-se para o cálculo da cinemática do movimento da
plataforma.
38
3.3.2. CINEMÁTICA DIRECTA E INVERSA DA PLATAFORMA YOUBOT
Quando as rodas suecas são accionadas pelos motores da plataforma, o ângulo dos
rolamentos impõem uma velocidade no sentido de rotação da roda e uma outra
perpendicular a este sentido. A resultante destas velocidades permite que a plataforma se
mova livremente em qualquer direcção sem necessidade de reajustar as rodas (Figura 34).
Figura 34 Alguns movimentos de uma plataforma omnidireccional
Considerando então as quarto rodas suecas do youBot, e os seus respectivos ângulos, α, γ e
β, construiu-se uma matriz com a equação 4 para obtenção da cinemática directa do
movimento, como se mostra de seguida:
(7)
(8)
39
Resolvendo esta equação, obtém-se então a cinemática directa da plataforma; a solução da
cinemática directa indica a velocidade de translação (vx,vy) e a velocidade de rotação (ωz)
da plataforma no referencial global.
(9)
sendo R o raio da roda, ωi a velocidade angular de cada roda (i = 1,2,3,4) e l1,l2 as
distâncias entre o eixo da roda e o centro da plataforma.
Por outro lado, sabendo a velocidade de translação e rotação pretendida para a plataforma
pode-se determinar a cinemática inversa, isto é, pode-se saber a velocidade de rotação de
cada roda, conforme se comprova na equação (10):
(10)
3.3.3. IMPLEMENTAÇÃO NA SIMULAÇÃO DA CINEMÁTICA
Compreendendo o que foi explicado na subsecção anterior, a implementação da cinemática
para o movimento do youBot revelou-se simples.
40
Cada roda tem um papel importante no movimento da base; o sinal da velocidade (positivo
ou negativo) em relação ao referencial da plataforma (ver Figura 35), vai ser atribuído a
cada uma das rodas. Considerou-se que o robô se desloca sempre à mesma velocidade e
cada roda tem uma velocidade angular máxima de 1,57 rad/s ou 90º/s. Por omissão o
simulador trabalha em radianos, e é em radianos que será atribuído o valor a cada roda.
Figura 35 Referencial do robô
Depois de se conhecer a velocidade de cada roda, é necessário saber qual o sentido que será
atribuído a cada uma para o robô se mover na direcção pretendida (para a frente, trás, esquerda ou
direita). O referencial do robô, conforme demonstra a Figura 35, está rodado em relação ao
referencial do simulador 45º, o que implica que na equação (7) se faça R(θ) = R(π/2). Então, se se
quiser saber como o sentido da velocidade de rotação de cada roda influencia o movimento da
plataforma, recorre-se à equação (8); nesta equação, se se atribuir (por exemplo) uma velocidade
negativa a cada uma das rodas, obtém-se uma velocidade positiva em relação ao eixo y, logo o robô
segue em frente.
-Na simulação, a velocidade de cada roda é atribuída à sua respectiva junta, sendo
utilizada para o efeito a função simSetJointTargetVelocity(number
objectHandle,number targetVelocity): esta função recebe dois parâmetros, o
primeiro (number objectHandle) é a roda com que irá trabalhar e o segundo
(number targetVelocity) é a velocidade imposta a essa roda.
41
3.4. ALGORITMO DE PLANEAMENTO DE TRAJECTÓRIA
Após a análise da plataforma, resta saber como é que o robô seguirá a trajectória para ir do
ponto inicial até um ponto final onde irá fazer a manipulação do objecto. O algoritmo
escolhido para este efeito foi o algoritmo A*. Apesar de não ser um algoritmo de fácil
implementação, a escolha prendeu-se com o facto de que é um dos mais utilizados na área
da robótica móvel, com resultados bastante satisfatórios.
Na implementação do algoritmo A* existem vários aspectos a ter em consideração, que
podem afectar significativamente o seu desempenho:
A velocidade da unidade central de processamento (Central Processing Unit –
CPU);
A limitação da memória;
O tipo de estrutura de dados a usar para as listas aberta e fechada e qual a heurística
a utilizar.
Este algoritmo irá retornar sempre aquele que será o caminho chamado “menos caro” entre
a posição inicial e final. Alguns dos outros algoritmos existentes poderão encontrar um
caminho mais rápido, mas que não é necessariamente o melhor caminho entre as duas
posições.
Este algoritmo faz uso de uma heurística para procurar os nós considerados mais
susceptíveis de conduzir ao destino em primeiro lugar, o que permite muitas vezes
encontrar o melhor caminho e tornar o algoritmo muito mais rápido.
Para a sua implementação cria duas listas de nós, uma lista fechada contendo todos os nós
explorados, e uma lista aberta contendo todos os nós que estão a ser explorados de
momento. Cada nó terá três valores associados, F, G e H (F = G + H). Cada nó também
precisa de estar ciente do seu “pai”, para que se possa estabelecer a forma como se chega a
esse nó.
42
Para uma melhor análise deste algoritmo é fornecido em seguida um fluxograma (ver
Figura 36).
Inicio
Existem nós na lista aberta?
Não existe caminho possível
Colocar o nó com menor F na lista
fechada
Nó é igual ao nó de destino?
Devolver caminho
Analisar cada um dos nós vizinhos
Já se encontra na lista fechada?
Calcular custo para chegar ao nó
vizinho
Não
Vizinho está na lista aberta?
Adicionar nó na lista aberta
G da lista aberta > G actual ?
Actualizar nó da lista aberta com novo G e calcular
novo F
Não
Não
Não
Sim
Mais vizinhos?
Sim
Sim
Sim
Não
Não
Sim
Figura 36 Fluxograma do algoritmo de planeamento de trajectória
43
3.4.1. FUNÇÃO DE AVALIAÇÃO
A escolha de uma métrica apropriada é fundamental para determinar o desempenho que o
algoritmo A* pode alcançar. Para este trabalho, para o cálculo da métrica escolheu-se a
distância de Manhattan, estando a sua equação está em (10). Esta distância permite analisar
apenas quatro movimentos da base (frente, trás, esquerda ou direita). Assim, mesmo não
considerando as distâncias diagonais, conseguem-se obter bons resultados, e também se
consegue que a implementação do código seja mais rápida, pois não precisa de percorrer
mais de quatro nós e o código de todo o algoritmo torna-se mais leve.
(10)
3.4.2. IMPLEMENTAÇÃO DO ALGORITMO
Para a implementação deste algoritmo foi necessária a criação de duas funções, a primeira
recebe como parâmetros a posição (xi, yi) inicial do robô obtida pelo dummy acoplado ao
centro de massa, e a posição (xf,yf) do destino, obtida pela criação e colocação de um
dummy na posição que se pretendeu para destino. Nesta função são criadas duas listas, uma
será a lista aberta e a outra a lista fechada; na lista aberta vão estar os nós que serão
analisados e na lista fechada serão introduzidos os melhores nós para a criação da
trajectória. Para além destas também foi criada uma lista com as coordenadas (xoi,yoi) dos
obstáculos.
A primeira coisa a fazer foi inserir na lista aberta o primeiro nó - este primeiro nó é a
posição onde o robô se encontra no ponto de partida. Seguidamente este primeiro nó é
inserido na lista fechada - esta lista fechada vai receber os nós com os valores de F mais
baixos da lista aberta. Como inicialmente a lista aberta apenas possui o nó de partida, este é
o único que possui o valor de F mais baixo, daí ser o primeiro a ser introduzido.
-O segundo passo desta função é percorrer a lista fechada e a lista de obstáculos para
verificar se as posições vizinhas da posição actual do robô se encontram nestas listas, caso
estejam, não serão considerados nós de possíveis movimentos, logo, não serão introduzidos
na lista fechada.
44
O próximo passo foi verificar se o custo G para os nós vizinhos da posição actual é menor
que o custo G dos que estão na lista aberta; caso não seja, serão introduzidos na lista aberta
com um novo valor de F. Procura-se novamente o F com menor custo da lista aberta e
volta-se a repetir todo o processo. Esta função termina quando na lista fechada for inserido
o nó de destino - quando isto acontecer a função vai retornar a lista fechada.
A segunda função vai receber como parâmetro os elementos da lista fechada, estes
elementos estão por ordem contrária ao caminho que o robô terá que tomar, ou seja, terá de
ser reconstruido o caminho desde a posição final até à posição actual do robô. Para o robô
poder seguir o seu caminho teve que se inverter a ordem recebida por esta lista, criando-se
então uma nova lista com o caminho que o robô terá de seguir. Por último o robô vai
percorrer esta lista originando assim o seu movimento desde o ponto inicial até ao ponto
final, onde irá fazer a manipulação dos objectos.
3.5. BRAÇO
O braço KUKA youBot (Figura 37) possui cinco juntas rotacionais, o que se traduz num
braço com 5 graus de liberdade, e o órgão terminal possui uma garra com dois dedos, que
pode ser removida ou trocada por outra, dependendo da aplicação.
Figura 37 Braço manipulador do KUKA youBot
45
Com um alcance máximo de 0,64 m, tem um peso de 6,3 kg e consegue manipular objectos
até 500 g. A velocidade mínima de cada junta é de 0,03 rad/s e a máxima de 1,5 rad/s, e
cada dedo da garra pode mover-se até 1 cm - isto resulta numa abertura total de 2 cm; no
entanto, é possível adaptar-se a posição dos dedos e conseguir uma abertura de, no
máximo, até 5 cm. A Figura 38 ilustra as dimensões do braço bem como os limites
máximos e mínimos de cada junta.
Figura 38 Dimensões e limites das juntas do braço
O volume de trabalho deste braço pode ser visto na Figura 7.
3.5.1. IMPLEMENTAÇÃO DA MANIPULAÇÃO
Para a manipulação dos objectos recorre-se à cinemática inversa do manipulador, pois é
necessário saber quais os ângulos das juntas adequados para se conseguir posicionar o
actuador final na posição pretendida para manipular o objecto. Como já foi dito
anteriormente, a resolução da cinemática inversa não é propriamente fácil, principalmente
quando se trata de um manipulador como o do youBot, com cinco graus de liberdade.
Infelizmente, com o decorrer deste projecto, não foi possível obter-se o tempo necessário
para calcular a cinemática inversa e aplicar esses cálculos ao manipulador. A cinemática
inversa seria calculada partindo da cinemática directa (utilizando a convenção de Denavit-
Hartenberg) e depois dessa cinemática directa calculada, e de se ter obtido a matriz de
transformação final, teria que se inverter a matriz de cada uma das juntas e multiplicá-la
por essa matriz final. Por fim teria que ser feito uma série de iterações para se obter cada
uma das equações dos cinco ângulos das juntas. Um exemplo deste método aplicado a um
manipulador semelhante ao do youBot com cinco graus de liberdade pode ser visto em
46
[25]. Como se pode depreender é uma resolução bastante trabalhosa para o pouquíssimo
tempo que restava para a conclusão deste trabalho.
A solução que se encontrou para ultrapassar esta situação passou por obter a posição (x, y,
z) do actuador final, sendo esta posição obtida pelo dummy acoplado a uma esfera que
representa o centro da garra (Figura 39). A posição do objecto a manipular através do
simulador é obtida através de um dummy acoplado ao seu centro. Sabendo estas duas
posições calcula-se a diferença entre as elas, esta diferença vai ser guardada numa variável
chamada “delta”; essa variável vai ser depois somada à posição inicial em que se encontra
o actuador, obtendo-se assim o quanto o actuador vai ter que se mover. Por último move-se
o braço definindo a nova posição através da função simSetObjectPosition().
Figura 39 Esfera representativa do centro da garra
Para mostrar a capacidade de o manipulador conseguir rodar os objectos foi utilizado a
função simSetJointPosition(),que quando chamada aplica uma rotação de 90º na
quinta junta do manipulador (a do actuador) antes de ser largado o objecto, demonstrando
que o manipulador é capaz de rodar o objecto.
Para o fecho da garra e para a sua posterior abertura, é utilizada a função
simSetIntegerSignal(), que quando chamada envia um sinal “0” para a garra,
fazendo com que esta se feche quando se pretender agarrar o objecto , e envia um sinal
“1” quando for para a abrir.
47
4. TESTES EFECTUADOS E
RESULTADOS OBTIDOS
Neste capítulo apresentam-se os testes efectuados na simulação e os respectivos resultados
obtidos, detectando eventuais erros e problemas encontrados durante a simulação.
4.1. SIMULADOR
Logo no início do trabalho, quando ainda se estavam a testar as funcionalidades do
simulador, detectou-se um erro de odometria na posição do robô. Quando se adicionou
pela primeira vez o modelo do youBot no ambiente do simulador, observou-se que dando
inicio à simulação (sem nenhum alteração de código no modelo do robô, nem dada
nenhuma instrução para o movimento), o robô ao invés de ficar estático, movia-se muito
lentamente.
Para demonstrar o que acaba de ser referido, a Figura 40 ilustra uma simulação simples,
apenas com o modelo youBot que vem com o simulador adicionado ao ambiente e sem
nenhuma alteração de código. A sua posição inicial foi salientada e é de xi = 0,000, yi =
0,0000 e zi = 0,0957, neste momento ainda não se tinha dado início à simulação. Após ser
dado início à simulação, não foi dada nenhuma instrução para ele se mover, no entanto,
48
passados 5,05 seg. de simulação, ele tinha-se movido sozinho, conforme se pode verificar
pelas novas posições na Figura 41.
Figura 40 Exemplo de simulação em t = 0 seg
Figura 41 Posição da plataforma na simulação em t = 5.05 seg
Esta situação por si só não influencia em quase nada o comportamento do robô para este
trabalho, pois trata-se de um desvio mínimo apesar de contínuo no tempo; no entanto, na
secção seguinte será explicada uma maneira encontrada de minimizar esta situação.
4.2. TRAJECTÓRIA
Os principais erros ocorreram após a escrita do código deste algoritmo. Para se contrariar o
desvio descrito na secção anterior e para o algoritmo efectuar a busca do caminho de uma
maneira mais rápida, ou seja, sem trabalhar com posições com tantas casas decimais
conforme é o caso, utiliza-se uma função que arredonda o valor das posições recebidas,
nomeadamente a função math.ceil(x), que retorna o menor inteiro maior ou igual a x.
Esta função trouxe esta vantagem, mas por outro lado implicou que o robô não parasse na
posição desejada, ou seja, o robô partindo da posição inicial (xi = 1 e yi = 2) terá de ir
até à posição que foi definida como destino (xf= +0,5 e yf = +1,5). O que acontece é que
com a aplicação da função math.ceil(), o robô arredonda sempre a sua posição, ou
49
seja, chegando às coordenadas x = +0,6 e y = +1,02, com o arredondamento considera que
já está na posição do destino e pára. Esta paragem apesar de não ser no ponto exacto de
destino, foi considerada válida pois deve-se ao arredondamento.
Por último optou-se por não se sobrecarregar demasiado o ambiente com obstáculos para
não tornar a simulação mais lenta conforme se pode verificar na Figura 40, em que é
perceptível o ambiente.
Com isto tudo, o robô percorreu toda a trajectória desde a posição inicial até à final sem
problemas conforme demonstram as Figuras 42 a 45.
50
Figura 42 Robô na posição inicial (xi = -1, yi = -2)
Figura 43 Robô a desviar-se dos obstáculos
Figura 44 Robô passa pelo meio dos dois obstáculos
51
Figura 45 Robô posicionado no destino (xf = +0.6, yf = +1.02)
4.3. MANIPULAÇÃO DO OBJECTO
Como já referido, não foi possível ter muito tempo para trabalhar nesta parte da
manipulação dos objectos. No entanto com o pouco tempo que se trabalhou nesta parte,
conseguiram-se resultados satisfatórios. O simulador não possui os objectos de
manipulação utilizados no RoboCup@Work, pelo que, o objecto a ser manipulado foi um
cubo que vem com o modelo do youBot no simulador. Para dar início à parte da
manipulação, de forma a não atrasar esta parte do trabalho, optou-se por calcular o tempo
que o robô demorava a chegar ao destino onde será feita a manipulação (concluindo-se que
demorava aproximadamente 25seg.). Com a função getSimulationTime(), vai-se
buscar esse tempo ao simulador e dá-se inicio ao procedimento de manipulação nesse
instante.
Quando o robô dá início à manipulação, o centro da garra encontra-se aproximadamente na
posição x = +0,6, y = +0,9 e z = +0,2, e o objecto a manipular encontra-se nas posições x =
+0,6, y = +0,9 e z = +0,1. Como se pode verificar, apenas o valor da coordenada z é
diferente. Esta coordenada indica a altura em relação ao solo, e com estas coordenadas
sabe-se que o objecto a manipular encontra-se alinhado com a garra, situando-se apenas
um pouco mais a baixo (Figura 46).
52
Figura 46 Posição do objecto em relação à garra
Quando a garra agarra o objecto, vai transportá-lo até uma posição de referência obtida por
um dummy colocado um pouco acima da mesa, para evitar que a garra colida com esta.
Nessa posição o manipulador irá rodar o actuador final e proceder à abertura da garra para
largar o objecto. Como já foi referido algumas vezes, não houve muito tempo para esta
implementar e testar devidamente o funcionamento desta. No entanto, apesar disso
conseguiu-se manipular o objecto sem erros. As Figuras 47 a 49 demonstram o processo de
manipulação do objecto em questão.
53
Figura 47 Robô agarra o objecto
Figura 48 Transporte do objecto
Figura 49 Rotação do objecto
55
5. CONCLUSÕES
Com o crescimento das competições de robótica, ficou claro com a elaboração deste
projecto que estas são cada vez mais exigentes, impondo regras e desafios cada vez mais
complexos. Neste momento existe uma área da robótica em crescente expansão e
desenvolvimento, a robótica industrial. Este contínuo desenvolvimento fez com que
surgissem novas ligas nas competições de robótica, nomeadamente a liga
RoboCup@Work, que promove o desenvolvimento de robôs capazes de auxiliar os
humanos na indústria, ou até mesmo substituí-los em tarefas mais perigosas. Foi com o
aparecimento destas novas ligas nas competições que surgiu o interesse na realização deste
projecto. Este projecto teve como objectivo simular a capacidade de uma plataforma
móvel, o KUKA youBot, manipular objectos - esta manipulação consiste em agarrar,
transportar ou rodar objectos.
Com o decorrer deste projecto foram apresentados conceitos que se revelaram de extrema
importância. O termo robótica apesar de já ter mais de 70 anos, continua a ser uma das
áreas de maior evolução na engenharia, principalmente ao nível industrial, em que o
aumento de competitividade na indústria tem levado a que cada vez mais os processos
sejam automatizados, evitando erros humanos, derivados do cansaço, da monotonia dos
56
serviços, etc. Então, para isso, tem-se evoluído cada vez mais ao nível dos robôs
industriais.
A maior parte destes robôs possuem manipuladores com semelhanças a um braço humano,
com juntas e elos que fazem lembrar o pulso e o antebraço, entre outros. Este género de
manipuladores, como são semelhantes aos braços humanos, permitem que seja mais fácil a
manipulação de objectos tal como os humanos, pois nas suas extremidades possuem garras
com dedos ou ferramentas. No entanto, estão limitados ao seu volume de trabalho.
Actualmente alguns destes manipuladores em vez de estarem fixos numa linha de
montagem, são montados em plataformas móveis, como é o caso do KUKA youBot. Com
os estudos da cinemática, para o tipo de rodas utilizadas e para os manipuladores e com
cada vez mais o uso de algoritmos de planeamento de trajectórias, conseguem-se robôs
completamente autónomos, capazes de se deslocarem entre dois ou mais locais, evitando a
colisão com obstáculos estáticos e até com obstáculos em movimento. Assim sendo, pode-
se afirmar que as competições de robótica têm tido um papel fundamental na evolução
deste tipo de robôs, pois são o ponto de partida para muitos jovens implementarem ideias
novas, ou melhorar conceitos já existentes, no crescimento da robótica.
A realização deste projecto, teve em conta bastantes conceitos importantes, que permitiram
o bom funcionamento do robô no simulador. Foram aplicados os conceitos da cinemática
directa ao movimento da plataforma, foram também estudados diferentes planeamento de
trajectória, tendo o sido adoptado o algoritmo A*. Este algoritmo é um dos mais utilizados
na robótica móvel, pois através dele consegue-se sempre obter o caminho mais curto entre
dois pontos. A implementação deste algoritmo neste projecto revelou resultados bastante
satisfatórios. Na parte da manipulação do objecto, apesar de terem sido estudados todos os
conceitos para a aplicação da cinemática ao manipulador, o tempo não foi o suficiente para
implementar uma solução mais “científica”. Optou-se por utilizar as ferramentas do
simulador e conseguiu-se, apesar disto, manipular o objecto em questão, o que foi
considerado uma vitória em tão curto espaço de tempo. Sendo assim, considera-se que
tendo terminado dentro do prazo estipulado, e tendo aprendido tantos conceitos e técnicas
novas, este projecto foi bem-sucedido, cumprindo todos os requisitos básicos pedidos na
sua proposta.
57
5.1. IDEIAS FUTURAS
Como é óbvio, apesar de se considerar que este projecto foi bem-sucedido, fica sempre a
sensação de que se poderia ter feito algo mais. Inicialmente, na altura em que se fez a
planificação do projecto, considerou-se a hipótese da utilização de sensores, mais
precisamente o Hokuyo URG-04LX Laser Rangefinder. Futuramente este poderia ser
introduzido, pois é um dos sensores permitidos nas regras da competição
RoboCup@Work. Com este tipo de sensores pode-se fazer o mapeamento do ambiente
cirando, por exemplo, simulações mais realistas e precisas, pois assim o robô com esse tipo
de sensores e um bom algoritmo de planeamento de trajectória consegue performances
mais exactas.
Uma outra hipótese que poderá ser implementada de futuro, são sensores de visão. Se estes
sensores forem acoplados ao actuador final do manipulador, conseguem obter as
coordenadas dos objectos, sendo feita uma manipulação mais precisa dos objectos,
podendo também ser acrescentados algoritmos planeamento de trajectórias para o
manipulador, para que este possa realizar manipulações desviando-se de obstáculos.
5.2. CONCLUSÃO PESSOAL
A realização deste projecto foi uma mais-valia para mim em termos académicos e pessoais,
proporcionando-me a aprendizagem de novos temas e por ter tido a capacidade de os
aprender e implementar durante este tempo. Desde o início que me deparei com
instrumentos de trabalho completamente novos e temas que nunca tinha estudado
anteriormente. A realização da simulação no software V-REP foi completamente nova para
mim, pois nunca tinha trabalhado com este simulador. Inicialmente pareceu-me bastante
confuso, pois é um simulador com centenas de funções e opções, mas com um intenso
estudo através do manual e lendo os tutoriais fornecidos no site, aprendi a trabalhar com
ele ao ponto de conseguir fazer a simulação sem problemas. Também estudei uma nova
linguagem de programação, a linguagem LUA; como nunca tinha estudado esta linguagem
também foi uma mais-valia, pois foi de fácil aprendizagem, permitindo-me programar
correctamente a simulação.
Por último, resta salientar a minha participação no RoCKIn Camp 2014 em Roma. Foi uma
semana em que tive o privilégio de poder trabalhar com o robô real deste projecto, o
58
KUKA youBot, e que me permitiu também a aprendizagem de outro tipo de linguagem, o
ROS. Esta é uma linguagem bastante recente, pelo que ter aprendido um pouco sobre ela
logo nos inícios foi um pilar para continuar a acompanhar os seus desenvolvimentos e
aprender com eles. Permitiu-me também conhecer e trabalhar com outros tipos de
simuladores, o Gazebo e o MoveIT, bastante mais complexos que o simulador utilizado
neste projecto. Apesar de ter sido apenas uma semana e ter aprendido tudo
superficialmente, foi uma experiência bastante enriquecedora.
59
Referências Documentais
[1] História da Robótica: http://roboticagrupo4.blogspot.pt/2009/05/HISTORIA-DA-
ROBOTICA.HTML ; último acesso em 2014-02-12.
[2] Estudo sobre a Inteligência Artificial:
http://www.citi.pt/educacao_final/trab_final_inteligencia_artificial/historia_da_robot
ica.html ; último acesso em 2014-02-12.
[3] Forward kinematics: The Denavit-Hartenberg convention -
https://www.cs.duke.edu/brd/Teaching/Bio/asmb/current/Papers/chap3-forward-
kinematics.pdf ; ; último acesso em 2014-02-12.
[4] Cinemática directa de robôs manipuladores:
http://sites.poli.usp.br/p/eduardo.cabral/Cinem%C3%A1tica%20Direta.pdf ; último
acesso em 2014-02-12.
[5] SECCHI,Humberto— Uma Introdução aos Robôs Móveis
[6] SIEGWART, Roland—Introduction to Autonomous Mobile Robots
[7] A* Pathfinding for Beginners -
http://www.policyalmanac.org/games/aStarTutorial.htm ; último acesso em 2014-02-
12.
[8] RocKin Project - http://www.rockinrobotchallenge.eu/ ; último acesso em 2014-02-
12.
[9] ROBOCUP - http://www.robocup.org/ ; último acesso em 2014-02-12.
[10] 2013,Robocup@Work Rule Book - http://www.robocupatwork.org/rules.html ;
último acesso em 2014-02-12.
[11] Scanning Laser Range URG-04LX Specifications: http://www.hokuyo-
aut.jp/02sensor/07scanner/download/products/urg-04lx/data/URG-
04LX_spec_en.pdf ; último acesso em 2014-02-12.
[12] Technical Information: http://www.hizook.com/files/publications/SICK_LMS200-
291_Tech_Info.pdf ; último acesso em 2014-02-12.
[13] Kinect for Windows Sensor Components and Specifications:
http://msdn.microsoft.com/en-us/library/jj131033.aspx ; último acesso em 2014-02-
12.
[14] Gazebo Simulator: http://gazebosim.org/ ; último acesso em 2014-02-12.
[15] Webbots simulador: http://www.cyberbotics.com/ ; último acesso em 2014-02-12.
60
[16] Microsoft Robotics Developer Studio 4: https://www.microsoft.com/en-
us/download/details.aspx?id=29081
[17] V-REP Simulator: http://www.coppeliarobotics.com/
[18] V-REP User interface:
http://www.coppeliarobotics.com/helpFiles/en/userInterface.htm
[19] Regular API function list (alphabetical order):
http://www.coppeliarobotics.com/helpFiles/en/apiFunctionListAlphabetical.htm
[20] The Programming Language Lua: http://www.lua.org/
[21] Manual de Referência de Lua 5.1: http://www.lua.org/manual/5.1/pt/
[22] KUKA youBot store: http://www.youbot-store.com/
[23] Lih-Chang Lin, Hao-Yin Shih- Modeling and Adaptive Control of an Omni-
Mecanum-Wheeled Robot
[24] Lih-Chang Lin, Ren-Haur Juang, Sheng-You Chen- Modeling and daptive Fuzzy
Control for an Omni-directional Wheeled Robot
[25] John J. Craig - Introduction to Robotics Mechanics and Control,Third Edition
61
Anexo A. CD com a simulação