Upload
trankien
View
220
Download
0
Embed Size (px)
Citation preview
outubro de 2013
Universidade do MinhoEscola de Engenharia
Ricardo Jorge Barbosa Silva
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
UM
inho
|20
13 R
icar
do J
orge
Bar
bosa
Silv
a S
iste
ma
Ro
bó
tico
pa
ra D
ete
ção
e M
an
ipu
laçã
o d
e O
bje
tos
uti
liza
nd
o a
Câ
ma
ra K
ine
ct
Dissertação de MestradoMestrado Integrado em Engenharia Eletrónica Industrial e Computadores – Automação, Controlo e Robótica
Trabalho efetuado sob a orientação doProfessor Doutor Agostinho Gil Teixeira Lopes
outubro de 2013
Universidade do MinhoEscola de Engenharia
Ricardo Jorge Barbosa Silva
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
DECLARAÇÃO
Nome: Ricardo Jorge Barbosa Silva
Endereço eletrónico: [email protected] Telefone: 913063963 / 252997703
Número do Bilhete de Identidade: 13365046
Título dissertação: Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
Orientador: Professor Doutor Agostinho Gil Teixeira Lopes
Ano de conclusão: 2013
Designação do Mestrado: Mestrado Integrado em Engenharia Eletrónica Industrial e Computadores –
Automação, Controlo e Robótica
DE ACORDO COM A LEGISLAÇÃO EM VIGOR, NÃO É PERMITIDA A REPRODUÇÃO
DE QUALQUER PARTE DESTA DISSERTAÇÃO;
Universidade do Minho, ___/___/______
Assinatura: ________________________________________________
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
ii
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
iii
“O importante na ciência não é tanto obter fatos novos,
mas descobrir novas maneiras de pensar sobre eles.”
Sir William Lawrence Bragg
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
iv
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
v
Agradecimentos
Durante os últimos meses, houve momentos em que a preocupação e o desânimo se
apoderaram um pouco de nós, por isso tenho aqui que realçar de forma bastante veemente a
ajuda que o Prof. Doutor Gil Lopes e o Prof. Doutor Fernando Ribeiro sempre prestaram nesses e
em todos os momentos, assim como toda a sua boa disposição e descontração que, apesar de
provavelmente não terem essa perceção, ajudaram a motivar não só a mim, como aos meus
colegas de laboratório.
A esses mesmos colegas (Andreia, Aníbal, Daniel e José), um especial agradecimento por
todo o apoio prestado, assim como por todo o ambiente fantástico que proporcionaram e que foi
muito importante para que o desenrolar da dissertação se mantivesse nas melhores condições.
Não posso também deixar de referenciar os técnicos das oficinas (Ângela, Sr. Carlos e Sr.
Joel), pois cada vez que recorria a eles para me auxiliarem, nunca rejeitaram e sempre me
solucionaram os problemas da melhor forma possível.
Por último, e não menos importante, um obrigado especial a toda a minha família,
principalmente aos meus pais, pois tenho consciência de todo o esforço financeiro que fizerem
para me proporcionarem as melhores condições possíveis de estudo, e que me trouxeram até
aqui.
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
vi
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
vii
Resumo
A importância de sistemas robotizados para as mais diferentes áreas é cada vez mais
notória nos tempos que correm. Na área de serviços domésticos, por exemplo, um sistema
robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas
tarefas sejam complexas ou de todo impossíveis.
Os sistemas de visão por computador através de câmaras convencionais encontra-se
muito limitados na informação necessária à localização espacial de um objeto. A evolução para
sistemas com múltiplas câmaras permitiu uma melhoria significativa na obtenção dessa
informação mas, com o aparecimento de uma nova tecnologia como é o caso da câmara Kinect,
onde para além de uma câmara convencional também fornece informação espacial de
profundidade, esse rigor na localização de objetos sofreu significativos avanços.
Nesse sentido, como objetivo desta dissertação, pretende-se criar um sistema robótico
que reconheça e localize um determinado objeto através do seu sistema de visão utilizando a
câmara Kinect, e através do braço robótico articulado que integra o robô MARy faça a sua recolha.
As técnicas utilizadas para o reconhecimento de objetos são baseadas no método SURF,
implementado na biblioteca livre OpenCV. É apresentado também neste documento o uso da
cinemática inversa, destinada ao controlo do braço robótico articulado, que permitiu a
manipulação dos objetos baseada nos algoritmos de visão desenvolvidos.
Palavras-chave: Robótica de Serviços; Kinect; Reconhecimento de Objetos; SURF ; Manipulação
de Objetos; Cinemática Inversa
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
viii
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
ix
Abstract
The importance of robotic systems for different areas is increasingly apparent nowadays.
In domestic services, for example, a robotic system may be very useful for handling objects where,
for some people, these tasks are complex or entirely impossible.
Systems of computational vision through conventional cameras are very limited in the
information necessary for spatial location of an object . The evolution for systems with multiple
cameras allows for a significant improvement in obtaining such information, but with the
emergence of new technology such as Kinect, where beyond of a conventional camera also
provides spatial depth information, the object location accuracy suffered significant advances.
Accordingly, the objective of this dissertation is to create a robotic system to recognize and
locate a particular object through a vision system using the Kinect camera, and through robotic
arm that integrates the robot MARy to make the collection.
The techniques used for object recognition are based on the SURF method, implemented
in the free library OpenCV. It is also presented in this dissertation the use of inverse kinematics ,
for control of the articulated robotic arm, allowing the manipulation of objects based on the
developed vision algorithms.
Keywords: Service Robotics; Kinect; Object Recognition; Object Manipulation; SURF; Inverse
Kinematics
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
x
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
xi
Índice
Agradecimentos ......................................................................................................................... v
Resumo ................................................................................................................................... vii
Abstract .................................................................................................................................... ix
Índice de Figuras ......................................................................................................................xv
Lista de Acrónimos .................................................................................................................. xxi
Capítulo I ........................................................................................................................ 1
1. Introdução ............................................................................................................... 1
1.1 Motivação ...................................................................................................................... 2
1.2 Objetivos ........................................................................................................................ 2
1.3 Estrutura do documento ................................................................................................. 3
Capítulo II ....................................................................................................................... 5
2. Revisão Bibliográfica ................................................................................................. 5
2.1 Exemplos de robôs ......................................................................................................... 5
2.1.1 Robô Dynamaid [13] ............................................................................................... 5
2.1.2 Robô Cosero [17] .................................................................................................... 6
2.1.3 Robô KeJia-2 [18] ................................................................................................... 7
2.1.4 Robô AroS [19] ....................................................................................................... 8
2.2 Exemplos de braços robóticos articulados ....................................................................... 8
2.2.1 Braço robótico Edge OWI-535 [21] .......................................................................... 9
2.2.2 Braço robótico Katana [22] ..................................................................................... 9
2.2.3 Braço robótico TX200 [23] .................................................................................... 10
2.3 Aquisição de imagem ................................................................................................... 11
2.3.1 Câmara Kinect ...................................................................................................... 12
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
xii
2.3.1.1 Câmara RGB e Sensor de Profundidade .......................................................... 13
2.3.1.2 Microfone Multi-Array ...................................................................................... 14
2.3.1.3 Inclinação Motorizada ..................................................................................... 15
2.4 Algoritmos de deteção de objetos ................................................................................. 15
2.4.1 SIFT (Scale-Invariant Feature Transform) [24] ............................................................ 16
2.4.1.1 Construção do Espaço de Escala .............................................................. 16
2.4.1.2 Localização de pontos-chave (Keypoints) .................................................. 17
2.4.1.3 Orientação dos pontos-chave .................................................................... 18
2.4.1.4 Descrição dos pontos-chave ..................................................................... 18
2.4.2 SURF (Speeded-Up Robust Features) [26] .................................................................. 19
2.4.2.1 Deteção de pontos de interesse .......................................................................... 20
2.4.2.2 Imagens Integrais ........................................................................................... 21
2.4.2.3 Pontos de interesse baseados na Matriz Hessiana ........................................... 21
2.4.3 Construção do espaço de escala ........................................................................... 23
2.4.4 Localização dos pontos de interesse ...................................................................... 24
2.4.5 Orientação dos pontos de interesse ....................................................................... 24
2.4.6 Descrição dos pontos de interesse......................................................................... 24
2.5 RANSAC [28] ............................................................................................................... 25
2.6 Arquitetura de Software ........................................................................................... 26
Capítulo III .................................................................................................................... 28
3 Robô MARy ............................................................................................................ 28
3.1 Braço Robótico Articulado ............................................................................................. 29
3.1.1 Placa Controladora OMNI-3MD .............................................................................. 31
3.1.2 Atuadores ............................................................................................................. 32
3.1.3 Placa de Desenvolvimento Arduino Duemilanove ................................................... 33
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
xiii
3.1.4 Servomotores ........................................................................................................ 35
3.1.5 Placa Controladora dos Servomotores ................................................................... 35
3.1.6 Protocolo de Comunicação .................................................................................... 36
3.1.6.1 Motores DC .................................................................................................... 36
3.6.1.2 Servomotores ................................................................................................. 37
Capítulo IV .................................................................................................................... 41
4 Cinemática do Braço Robótico Articulado .................................................................. 41
4.1 Espaço de Coordenadas ............................................................................................... 41
4.2 Espaço de Trabalho ...................................................................................................... 43
4.3 Cinemática Inversa ....................................................................................................... 45
4.3.1 Determinação de 𝜃2 ............................................................................................. 46
4.3.2 Determinação de 𝜃1 ............................................................................................. 46
4.3.3 Determinação de 𝜃3 ............................................................................................. 47
Capítulo V ..................................................................................................................... 49
5. Base Móvel Omnidirecional ......................................................................................... 49
5.1 Placa Controladora AVR Butterfly .................................................................................. 49
5.2 Atuadores..................................................................................................................... 50
5.3 Posicionamento ............................................................................................................ 51
5.4 Protocolo de Comunicação ........................................................................................... 52
Capítulo VI .................................................................................................................... 54
6. Análise de Resultados ................................................................................................. 54
6.1 Deteção ....................................................................................................................... 54
6.2 Localização .................................................................................................................. 55
6.3 Posicionamento da Base Móvel Omnidirecional ............................................................. 56
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
xiv
6.4 Posicionamento do Braço Robótico Articulado ............................................................... 57
6.5 Testes Finais ................................................................................................................ 58
Capítulo VII ................................................................................................................... 61
7. Conclusão e Trabalho Futuro ....................................................................................... 61
Referências ................................................................................................................... 63
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
xv
Índice de Figuras
Figura 2.1 - Robô Dynamaid [13] ............................................................................................. 5
Figura 2.2 – Laser Scanner SICK S300 [14]……………………………………………….…………………. 6
Figura 2.3 – Rangefinger URG-04LX [15]……………. ................................................................. 6
Figura 2.4 - PointGrey Flea2-13S2-C [16] ................................................................................. 6
Figura 2.5 - Robô Cosero [17] .................................................................................................. 7
Figura 2.6 - Robô KeJia-2 [18] ................................................................................................. 7
Figura 2.7 - Robô ARoS [19] .................................................................................................... 8
Figura 2.8 - Edge OWI-535 [21] ............................................................................................... 9
Figura 2.9 - Placa controladora dos motores do Katana ............................................................ 10
Figura 2.10 - Braço Robótico Katana [22]................................................................................. 10
Figura 2.11 - Braço robótico TX200 [23] .................................................................................. 11
Figura 2.12 - Controlador CS8C HP.......................................................................................... 11
Figura 2.13 - Câmara Kinect ................................................................................................... 12
Figura 2.14 – Exemplo de Point Cloud ..................................................................................... 14
Figura 2.15 – Princípio da Triangulação para determinar a distância do objeto ......................... 14
Figura 2.16 - Disposição dos 4 microfones na câmara Kinect ................................................... 15
Figura 2.17 – Constituintes da Câmara Kinect ......................................................................... 15
Figura 2.18 - Histograma de orientações de pontos-chave ........................................................ 18
Figura 2.19 - É criada uma janela 16x16 à volta de um dado ponto-chave (esquerda); janela 4x4
com orientações e magnitudes (direita) ................................................................................... 19
Figura 2.20 – Deteção de pontos de interesse ......................................................................... 20
Figura 2.21 - Cálculo para determinar a soma das intensidades de uma determinada área ...... 21
Figura 2.22 - Da esquerda para a direita: discretização da derivada parcial gaussiana de segunda
ordem em relação a 𝑦 (𝐿𝑦𝑦) e 𝑥𝑦 (𝐿𝑥𝑦), respetivamente; aproximação à derivada parcial
gaussiana de segunda ordem em relação a 𝑦 (𝐷𝑦𝑦) e na direção 𝑥𝑦 (𝐷𝑥𝑦). As regiões a cinzento
correspondem a zero. ............................................................................................................ 22
Figura 2.23 - Em vez de se utilizar a redução do tamanho da imagem (esquerda), a utilização de
imagens integrais permite o aumento de escala do filtro por um custo constante (direita). ....... 23
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
xvi
Figura 2.24 - Exemplo de filtros em escalas diferentes, 9x9 (esquerda) e 15x15
(direita)………………………………………………………………………………………………………………….. 23
Figura 2.25 - Filtro em x (esquerda) e em y (direita) ................................................................ 24
Figura 2.26 - Resposta de direção do ponto de interesse após ser aplicado o filtro ................... 24
Figura 2.27 - Representação do quadrado de respostas de Wavelet. Soma das direções
𝑑𝑥,|𝑑𝑥|,𝑑𝑦 𝑒 |𝑑𝑦| ............................................................................................................ 25
Figura 2.28 - Exemplo de aplicação do algoritmo RANSAC; Outliers (vermelho) e Inliers (azul)... 26
Figura 2.29 – OpenCV [32]……………………………………………………………………………………….. 27
Figura 2.30 – Qt Creator………………….. .................................................................................. 27
Figura 2.31 – OpenNI [34].......................................................................................................27
Figura 2.32 – Ubuntu ............................................................................................................. 27
Figura 3.1 - Robô MARy [29] ................................................................................................... 28
Figura 3.2 - Garra Manipuladora………………………………………………………………………………….. 29
Figura 3.3 – Base Móvel Omnidirecional .................................................................................. 29
Figura 3.4 - Braço Robótico Articulado .................................................................................... 29
Figura 3.5 - Exemplificação do braço robótico articulado .......................................................... 30
Figura 3.6 - Placa Controladora OMNI-3MD .............................................................................. 31
Figura 3.7 - Motor Transmotec SD3039 ................................................................................... 32
Figura 3.8 – Arduino Duemilanove .......................................................................................... 34
Figura 3.9 - IDE do Arduino ..................................................................................................... 34
Figura 3.10 - Servomotor Goteck 2.5 Kg .................................................................................. 35
Figura 3.11 - Devantech SD-21 ................................................................................................ 36
Figura 3.12 - Exemplo de trama para controlo dos motores ...................................................... 36
Figura 3.13 - Configuração Arduino / SD-21 ............................................................................ 38
Figura 3.14 - Relação Posição (μs) / Posição (graus)................................................................ 38
Figura 3.15 - Fluxograma representativo do algoritmo para controlo dos motores e da garra
manipuladora através do microcontrolador .............................................................................. 40
Figura 4.1 - Posicionamento de um objeto em relação a dois sistemas de eixos ....................... 42
Figura 4.2 - Amplitude de cada junta ....................................................................................... 43
Figura 4.3 - Espaço de trabalho do braço robótico articulado .................................................... 45
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
xvii
Figura 4.4 - Posição referência do braço robótico articulado ..................................................... 46
Figura 4.5 - Diagrama de auxílio para a determinação da cinemática inversa ............................ 47
Figura 4.6 - Fluxograma representativo do algoritmo para solucionar a cinemática inversa ........ 48
Figura 5.1 – 1º Andar da Base Móvel Omnidirecional ............................................................... 49
Figura 5.2 - Placa controladora AVR Butterfly............................................................................ 50
Figura 5.3 - Motor RC5 33-80835004 da Crouzet .................................................................... 51
Figura 5.4 – Relação trigonométrica para centrar o braço robótico com o objeto ...................... 51
Figura 5.5 - Exemplo de trama para base móvel omnidirecional ............................................... 52
Figura 5.6 - Configuração Master/Slave ................................................................................... 53
Figura 5.7 - Fluxograma referente ao algoritmo para ajuste da base omnidirecional .................. 53
Figura 6.1 - Distância entre braço robótico e objeto .................................................................. 58
Figura 6.2 - Interface durante execução dos algoritmos ............................................................ 60
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
xviii
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
xix
Índice de Tabelas
Tabela 1 - Características técnicas da câmara Kinect .............................................................. 13
Tabela 2 - Características do Braço Robótico Articulado ........................................................... 30
Tabela 3 - Características do motor DC Transmotec SD3039 ................................................... 33
Tabela 4 - Características da placa de desenvolvimento Arduino Duemilanove ......................... 33
Tabela 5 - Características do Servomotor Goteck 2.5Kg ........................................................... 35
Tabela 6 - Descrição de variáveis ............................................................................................ 42
Tabela 7 - Constantes da transformação geográfica ................................................................. 42
Tabela 8 - Tamanho dos componentes do braço robótico ........................................................ 44
Tabela 9 - Características do Atuador ...................................................................................... 50
Tabela 10 - Resultados dos testes para deteção do objeto ....................................................... 54
Tabela 11 - Resultados dos testes para localização do objeto ................................................... 55
Tabela 12 - Erro médio da leitura da câmara Kinect para cada coordenada ............................. 56
Tabela 13 - Testes para posicionamento do robô MARy em relação ao objeto .......................... 56
Tabela 14 - Resultados dos testes para posicionamento do braço robótico articulado ............... 57
Tabela 15 - Erro médio para cada junta................................................................................... 58
Tabela 16 - Testes Finais ........................................................................................................ 59
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
xx
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
xxi
Lista de Acrónimos
DoF - Degrees of Freedom
DoG - Difference of Gaussians
EEPROM - Electrically Erasable Programmable Read-Only Memory
I2C - Inter-Integrated Circuit
IDE - Integrated Development Environment
JTAG - Joint Test Action Group
LAR - Laboratório de Automação e Robótica
LCD - Liquid Crystal Display
LED - Light-Emitting Diode
LoG – Laplacian of Gaussian
PC - Personal Computer
PCB - Printed Circuit Board
PID - Proportional-Integral-Derivative
RGB - Red, Green, Blue
SIFT - Scale-Invariant Feature Transform
SRAM - Static Random Access Memory
SURF - Speeded-Up Robust Features
USB - Universal Serial Bus
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
1
Capítulo I
1. Introdução
O primeiro contato da sociedade com a palavra Robô (Robot) aconteceu em 1920 através
do romance teatral “Rossum’s Universal Robots” [1], no qual Karel Kapec retratou os robôs como
máquinas de trabalho incansáveis e de aspeto humano. No entanto, o termo Robot só foi
popularizado em 1950 devido ao livro "I, Robot" (Eu, Robô) [2] de Isaac Asimov. Desde aí até aos
dias de hoje, várias foram as evoluções na área da robótica, e atualmente já se fala em robôs com
muita naturalidade e sem estranheza.
Várias são as áreas que hoje em dia recorrem a serviços robotizados. Por exemplo, podem
destacar-se áreas como indústria [3], agricultura [4], controlo remoto [5], submersíveis [6] ou
serviços domésticos [7]. Para uma consciencialização mais concreta sobre a utilização de robôs,
estes são usados em aplicações como montagem industrial, transporte de tubos de ensaio de
laboratório para laboratório, colocação de cabos nos oceanos, manutenção de satélites ou até
mesmo colheita de maçãs, entre muitas outras diferentes aplicações. Em todas as áreas os
serviços robóticos têm a sua importância, mas existem áreas específicas onde os robôs tomam
uma preponderância maior, pois substituem os humanos em situações de esforço físico
exagerado, ou ainda em operações de risco para a vida humana, como por exemplo, detonar
bombas [8].
Especificando então a área que será abordada neste documento de dissertação, robótica
de serviços [9], torna-se relevante referenciar o fato de que um robô pode ter um papel muito
importante numa habitação, pois permite manipular/transportar objetos que algumas pessoas,
nomeadamente idosos ou pessoas com deficiência, tenham dificuldade em fazê-lo. Além desta
aplicação específica da robótica nos serviços domésticos, já existem vários robôs no mercado para
diversas tarefas domésticas, como por exemplo aspiradores, cortadores de relva, segurança ou
lavadores de vidros. O investimento neste tipo de serviços é cada vez maior, levando Bill Gates a
dizer que a utilização de robôs em ambientes domésticos pode vir a ser equiparável ao sucedido
nos inícios dos anos 80, com o surgimento do computador pessoal [10].
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
2
Por fim, perspetivando um pouco o futuro, é de imaginar que existirão robôs capazes de
executar tarefas de elevado grau de responsabilidade, como por exemplo auxiliar cegos ou até
mesmo robôs espalhados pela cidade a responder a questões dos turistas.
1.1 Motivação
Os sistemas robóticos têm vindo cada vez mais a tomar um papel importante na indústria,
devido às imensas aplicações em que podem ser usados. Tendo consciência disso, foi um dos
principais fatores que me levaram a envergar na área de robótica, além do gosto pessoal que
tenho pela mesma. No futuro, a utilização de sistemas robóticos não se restringirá apenas à
indústria, massificando-se também na sociedade em geral para os mais diversos fins. Esta
tendência criará muitos postos de trabalho qualificados, sendo por isso importantíssimo a
consolidação de conhecimentos nesta área para aproveitar essas oportunidades profissionais.
A nível de motivação aplicacional, os sistemas robóticos podem ter um papel humanitário
muito grande, pois podem substituir os humanos em situações que ponham em risco a sua vida
ou saúde. O auxílio a pessoas com deficiência é outro papel social importante que o robô pode
desempenhar, sendo por isso um trabalho bastante reconfortante criar sistemas robóticos para
estes fins.
Uma motivação extra é a de proporcionar a participação do robô MARy na competição
internacional de robótica, designada por RoboCup@home [11], para que possa competir com os
melhores robôs do mundo nesta área. De referir que o robô MARy participou na RoboCup@home
de 2010 em Singapura.
1.2 Objetivos
No seguimento do que foi dito anteriormente, o objetivo desta dissertação passa por criar um
sistema robótico destinado a fins domésticos, que detete e manipule objetos. Para tal, a presente
dissertação pode ser definida por objetivos parciais.
O primeiro objetivo passa por rever toda a estrutura mecânica do robô MARy para garantir o
perfeito funcionamento das suas funções.
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
3
O segundo objetivo consiste em criar um algoritmo capaz de detetar objetos através da
câmara Kinect, fornecendo as coordenadas da localização do objeto após a deteção do mesmo.
Seguidamente, e como terceiro objetivo, pretende-se substituir os três controladores dos
respetivos motores existentes no braço robótico por apenas uma placa controladora,
implementando de raiz todos os algoritmos de comunicação e controlo indispensáveis aos três
motores.
Após o controlo dos motores estar corretamente funcional, é objetivo o cálculo da cinemática
inversa para que o braço robótico se posicione corretamente para manipular o objeto.
Como quinto objetivo, pretende-se colocar a base omnidirecional operacional para que o robô
MARy se possa deslocar.
Como sexto e último objetivo, pretende-se agrupar todos os objetivos anteriores, habilitando
assim o robô MARy de executar com perfeição o objetivo geral.
1.3 Estrutura do documento
Este documento está dividido em 7 capítulos, sendo a sua disposição a seguinte:
No capítulo 1, é inicialmente feita uma introdução que contextualiza todo o passado e
presente que envolve a robótica, tema esse diretamente ligado à presente dissertação.
Seguidamente, são apresentadas as motivações e objetivos do autor da dissertação, e a estrutura
da mesma.
No capítulo 2, é apresentada uma revisão bibliográfica dos robôs existentes no mercado
que têm o mesmo fim do robô MARy, assim como apresentados alguns modelos de braços
robóticos articulados. Posteriormente, são analisadas todas as características da câmara Kinect,
assim como algoritmos usados para deteção de objetos.
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
4
O capítulo 3 é iniciado por uma pequena apresentação do robô MARy . Seguidamente, é
caracterizado o braço robótico articulado presente no robô MARy, assim como todo o hardware
utilizado para que seja possível a sua movimentação. É também referido como se comunica com
o respetivo hardware, via software.
No capítulo 4, é apresentada a cinemática inversa do braço robótico, ou seja, são
apresentadas todas as metodologias para cálculo dos ângulos que cada junta deve tomar para
posicionar a garra manipuladora na posição pretendida.
No capítulo 5, é abordado todo o hardware utilizado na base móvel omnidirecional, assim
como o protocolo de comunicação usado para acionar o referido hardware.
No capítulo 6, são apresentados os resultados experimentais obtidos após conclusão do
objetivo definido inicialmente. São apresentados resultados referentes ao desempenho da deteção
e localização de objetos, assim como da base móvel omnidirecional e do braço robótico articulado.
No capítulo 7, é feita uma conclusão sobre o que foi feito, sendo também referidos alguns
aspetos a serem otimizados e acrescentados no futuro.
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
5
Capítulo II
2. Revisão Bibliográfica
Ao longo deste capítulo serão referenciados alguns exemplos relevantes que fazem parte da
atualidade, e que se tornam indispensável conhecer para desenvolvimento desta dissertação.
2.1 Exemplos de robôs
De seguida, serão apresentados robôs nacionais e internacionais que se inserem na mesma
área do robô MARy (robótica de serviços). De realçar desde já a equipa NimbRo@home [12] da
Universidade de Bonn na Alemanha, que tem vencido as últimas edições da RoboCup@home
devido aos seus robôs Dynamaid [13] e Cosero [17], que serão apresentados se seguida.
2.1.1 Robô Dynamaid [13]
Como referido anteriormente, este robô (Figura 2.1) foi desenvolvido pela Universidade de
Bonn, Alemanha, e apresenta uma grande facilidade de interface. A nível de hardware, o Dynamaid
possui uma base móvel omnidirecional com oito rodas, uma estrutura/corpo com dois graus de
liberdade (DoF), e dois braços antropomórficos, com 12 DoF cada. Possui também um microfone,
três câmaras e sensores de distância nas mãos.
Este robô pesa sensivelmente 30kg e suporta cargas máximas até 1kg. Em relação às
suas caraterísticas de software, é capaz de reconhecer comandos de gestos ou voz e executar a
tarefa correspondente à ordem. O Dynamaid também reconhece e localiza objetos, efetuando a
sua auto localização em ambientes desconhecidos através de um sistema de mapeamento.
Figura 2.1 - Robô Dynamaid [13]
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
6
Para deteção de objetos e pessoas, o Dynamaid utiliza um laser scanner (Figura 2.2) [14]
e um rangefinger (Figura 2.3) [15]. É ainda usado um sistema de visão estéreo para otimizar a
deteção a curtas distâncias. Este sistema de visão stereo é composto por duas câmaras PointGrey
(Figura 2.4) [16].
De referir por último que este robô ficou em 1º lugar na RoboCup@home de 2011,
disputada em Istambul, na Turquia.
Figura 2.2 – Laser Scanner SICK S300 [14] Figura 2.3 – Rangefinger URG-04LX [15]
Figura 2.4 - PointGrey Flea2-13S2-C [16]
2.1.2 Robô Cosero [17]
Também desenvolvido pela Universidade de Bonn, Alemanha, o Cosero (Figura 2.5) é
constituído por uma base omnidirecional de 8 rodas, um tronco móvel com 2 DoF, 2 braços
antropomórficos (7 DoF cada) e uma cabeça móvel com 2 graus de liberdade que sustenta duas
câmaras para visão stereo e um microfone. Fazendo uma comparação com o robô Dynamaid, os
braços do Cosero suportam o dobro da carga. Além das duas câmaras para garantir a visão stereo,
o Cosero possui também rangefingers e uma câmara Time-of-flight.
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
7
De destacar que este robô venceu a RoboCup@home 2012 disputada no México, pois
destacou-se largamente dos outros robôs ao efetuar tarefas como manipular objetos, regar plantas,
fazer reciclagem ou interagir com humanos.
Figura 2.5 - Robô Cosero [17]
2.1.3 Robô KeJia-2 [18]
O robô KeJia-2 (Figura 2.6) foi desenvolvido pela Universidade de Ciência e Tecnologia da
China e possui módulos para a interpretação de diálogo e textos, de modo a extrair a informação
necessária para executar tarefas correspondentes. O KeJia-2 também é capaz de planear o seu
deslocamento no espaço com base em informações fornecidas pelos vários sensores. Um dos
pontos fortes deste robô é a capacidade de aprender a interagir com dispositivos eletrodomésticos,
como um micro-ondas, por exemplo, a partir da leitura de informações presentes nos manuais de
instruções desses equipamentos.
Figura 2.6 - Robô KeJia-2 [18]
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
8
2.1.4 Robô AroS [19]
O robô ARoS (Figura 2.7) merece um destaque especial neste capítulo. Desenvolvido na
Universidade do Minho, este robô surgiu com o objetivo de estudar a interação entre humanos e
robôs. Mais concretamente, devido a circuitos neuronais artificiais que constituem o seu “cérebro”,
o ARoS é capaz de antecipar ações, tomar iniciativa, colocar perguntas às pessoas com quem
interage e detetar erros. Merece também realce o facto de este robô ser nomeado para a final
mundial do Silver Jubilee Video Award [20], que distingue o que de mais notável se fez na robótica
nos últimos 25 anos.
Em relação à sua constituição mecânica, o ARoS é constituído por um braço
antropomórfico com 7 DoF, possuindo um manipulador na sua extremidade, um sistema de visão
e ainda uma estrutura rígida que permite suportar todo o sistema.
O robô ARoS mede 1,17m de altura, pesa 12Kg e consegue suportar cargas até 3Kg.
Figura 2.7 - Robô ARoS [19]
2.2 Exemplos de braços robóticos articulados
Devido às inúmeras vantagens de manuseamento, a utilização de braços robóticos articulados
não se limita apenas à integração em robôs domésticos, mas alastra-se a muitos setores da
indústria. De seguida serão apresentados alguns exemplos de braços robóticos utilizados em robôs
semelhantes ao robô MARy, assim como exemplos de braços robóticos utilizados na indústria.
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
9
2.2.1 Braço robótico Edge OWI-535 [21]
O braço robótico articulado Edge OWI-535 (Figura 2.8), desenvolvido pela Owirobot, é muito
usado para fins educacionais no ramo de robótica, devido não só à sua facilidade de montagem e
controlo, mas também à sua enorme aplicabilidade.
O Edge OWI-535 possui 5 graus de liberdade: um punho capaz de efetuar movimentos até
120º, um cotovelo com 300º, um ombro com 180º, uma base de rotacional até 270º e uma pinça
com variação de 0 a 4,5cm. Este modelo possui ainda 5 motores com engrenagens.
Os movimentos das respetivas secções são controlados através de um comando externo,
como é possível visualizar na Figura 2.8.
Figura 2.8 - Edge OWI-535 [21]
2.2.2 Braço robótico Katana [22]
O braço robótico Katana (Figura 2.10) é comercializado pela empresa suíça Neuronics e
é o modelo mais procurado pelas equipas do RoboCup@home para integrar nos respetivos robôs
que competem nesta competição.
Este braço é mais indicado para manuseamento de pequenas peças, suportando uma
carga máxima de 0.4 Kg. Possui 6 DoF e o movimento das respetivas secções é efetuado através
de motores DC com encoders de posição. Cada um dos seis motores é controlado por uma placa
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
10
controladora (Figura 2.9) que possui um microcontrolador TMS320 da Texas Instruments, sendo
a sua comunicação feita através de Ethernet e USB.
Figura 2.9 - Placa controladora dos motores do Katana
Uma das principais preocupações da Neuronics no desenvolvimento deste braço, e que
se traduz numa grande vantagem, diz respeito à facilidade em programar e utilizar este modelo
de braço robótico. A Neuronics disponibiliza um conjunto de ferramentas que possibilitam uma
rápida interação com o braço. Foi criado um ambiente de programação designado por Katana4D,
e as bibliotecas são baseadas em C++ denominadas de KNI, para aplicações mais complexas e
utilizadores mais exigentes.
Figura 2.10 - Braço Robótico Katana [22]
2.2.3 Braço robótico TX200 [23]
O braço robótico TX200 (Figura 2.11), é comercializado pela Staubli e destina-se unicamente
para fins industriais. Este modelo é dos mais vendidos da marca, devido às potencialidades que
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
11
apresenta, destacando-se os 6 graus de liberdade, o seu poder de carga (cerca de 100 Kg), e o
seu alto desempenho em campos como precisão, confiabilidade e velocidade.
Figura 2.11 - Braço robótico TX200 [23]
Importante também referir que a Staubli desenvolveu uma unidade de controlo que dá para
controlar todos os braços articulados da marca. Essa unidade de controlo tem a designação de
“Controlador CS8C HP” e é apresentado na Figura 2.12.
Figura 2.12 - Controlador CS8C HP
2.3 Aquisição de imagem
Um dos principais objetivos desta dissertação é o reconhecimento de objetos. Sistemas de
visão artificial, ou também designado por visão computacional existem à vários anos, mas desde
o aparecimento da câmara Kinect que a exploração deste tipo de visão tem sofrido significativos
avanços, principalmente em relação à noção de profundidade que se tem do ambiente envolvente.
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
12
2.3.1 Câmara Kinect
A câmara Kinect (Figura 2.13), comercializada pela Microsoft, é um sensor de movimentos
e voz desenvolvido para a consola XBOX 360. Este equipamento é constituído por uma câmara
RGB (Red, Green, Blue), um sensor de profundidade (3D), um microfone multi-array e o seu
movimento é motorizado.
Devido principalmente ao sensor de profundidade, a Kinect tem vindo a ser cada vez mais
usada em sistemas robóticos para deteção de obstáculos e objetos, assim como mapeamentos
3D, pois permite fazer uma leitura bastante realista do ambiente em que está inserida, traçando
também de forma muito precisa as caraterísticas de um objeto. Isto aliado ao seu preço acessível,
faz da câmara Kinect o equipamento preferencial para estes fins.
Com o lançamento do Kit de Desenvolvimento de Software (SDK) da Microsoft, é possível
a qualquer utilizador desenvolver aplicações para determinado fim, utilizando documentação
fornecida pela Microsoft. Um exemplo de um SDK é o Platform SDK da Microsoft, que inclui
documentação, código e utilitários para que programadores consigam desenvolver as suas
aplicações de acordo com um padrão de desenvolvimento para o sistema operativo em questão.
Também para a Kinect é cada vez mais disponibilizada informação, o que leva a uma utilização
cada vez maior da Kinect, quer para fins educacionais, quer para investigação científica.
Figura 2.13 - Câmara Kinect
Na tabela 1, estão descritas as principais características técnicas da Kinect.
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
13
Tabela 1 - Características técnicas da câmara Kinect
Campo de Visão 58° H, 45° V
Resolução do Sensor de Profundidade VGA (640x480)
Resolução câmara RGB VGA (640x480)
Frame Rate 30 fps
Gama de Operação 0.8m - 3.5m
Entradas Áudio 4
Conexão USB 2.0
Consumo 2.25 W
Dimensões (Largura x Altura x Profundidade) 14 cm x 3.5 cm x 5 cm
Ambiente de Operação Indoor
Temperatura de Operação 0°C - 40°C
Seguidamente serão detalhados os principais constituintes da Kinect.
2.3.1.1 Câmara RGB e Sensor de Profundidade
A Kinect é constituída por duas câmaras, sendo que uma é uma câmara simples, que
captura uma imagem no modelo de cores RGB, e a outra câmara é a que torna a Kinect tão
procurada, pois permite capturar a profundidade do meio em que se encontra. Tanto a câmara de
vídeo como a câmara com sensor de profundidade têm resolução de 640 x 480 pixéis e funcionam
a 30 frames por segundo.
Analisando mais concretamente o sensor de profundidade, este é constituído por um
projetor infravermelho e um sensor CMOS monocromático que trabalham juntos para projetarem
o ambiente em 3D. O projetor de infravermelhos emite radiação infravermelha sob a forma de
pontos em todas as superfícies que estão em frente à câmara, criando assim uma nuvem de
pontos ou Point Cloud (Figura 2.14), como foi designado pela equipa de desenvolvimento. A
reflexão dessa luz por parte das superfícies irradiadas é captada pela câmara de infravermelhos,
recriando assim o ambiente em 3 dimensões.
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
14
Figura 2.14 – Exemplo de Point Cloud
Para determinar a distância a que o objeto se encontra da câmara Kinect, é usado o
princípio da triangulação (Figura 2.15), ou seja, o projetor de infravermelhos incorporado na Kinect
emite radiação infravermelha, que ao embater numa superfície não transparente é refletida e
recebida pelo sensor de infravermelhos. O tempo entre a emissão e a receção deste sinal é
designado por Tempo de Voo e através deste valor é calculada a distância.
Figura 2.15 – Princípio da Triangulação para determinar a distância do objeto
2.3.1.2 Microfone Multi-Array
Em relação aos sensores de som, a Kinect também desenvolveu uma tecnologia de
vanguarda ao implementar uma série de quatro microfones (Figura 2.16) que podem isolar as
vozes dos jogadores do barulho da sala. Dessa forma, os barulhos não atrapalham o bom
funcionamento da Kinect. O sistema de aquisição de som também é capaz de detetar a voz de
várias pessoas diferentes numa sala (no entanto, a precisão pode não ser perfeita, já que é
comum, por exemplo, irmãos com vozes parecidas).
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
15
Figura 2.16 - Disposição dos 4 microfones na câmara Kinect
2.3.1.3 Inclinação Motorizada
A Kinect possui também um motor acoplado à sua base e à parte superior da câmara
(Figura 2.17), capaz de possibilitar a Kinect para executar movimentos ascendentes e
descendentes, permitindo assim otimizar a captura de imagens.
Figura 2.17 – Constituintes da Câmara Kinect
2.4 Algoritmos de deteção de objetos
Ao longo dos últimos anos vários têm sido os estudos e avanços relacionados com
algoritmos de deteção de objetos. Este tipo de algoritmos assume uma enorme importância para
a visão computacional, pois é através deles que se consegue garantir grande parte da
confiabilidade em aplicações que usem sistemas de visão por computador. A escolha do algoritmo
a ser usado nesta dissertação recaiu sobre o SURF, devido principalmente à sua rapidez e robustez
de deteção. Este algoritmo foi desenvolvido com base num algoritmo já existente (SIFT), por isso
serão seguidamente apresentados e analisados estes dois algoritmos.
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
16
2.4.1 SIFT (Scale-Invariant Feature Transform) [24]
O SIFT (Scale-Invariant Feature Transform) [24] é um algoritmo desenvolvido para ser usado
em sistemas com visão computacional e foi apresentado por David Lowe em 1999. Este algoritmo
está patenteado nos Estados Unidos da América, sendo o seu proprietário a Universidade de British
Columbia.
O SIFT tem como vantagens o reconhecimento de objetos, mapeamento e navegação robótica,
criação de sistemas 3D e reconhecimento de gestos.
A técnica usada no algoritmo SIFT tem como base principal duas partes distintas: deteção e
descrição dos pontos-chave. A deteção é baseada em cálculos recorrendo à Diferença de
Gaussianas (DoG), sendo que a descrição é feita recorrendo a histogramas de gradientes
orientados que servem para descrever a vizinhança dos pontos-chave.
Abordando mais pormenorizadamente o princípio de funcionamento do SIFT, este pode ser
dividido nas seguintes etapas:
Construção do espaço de escala
Localização de pontos-chave (Keypoints)
Orientação dos pontos-chave
Descrição dos pontos-chave
A “construção do espaço de escala” e a “localização dos pontos-chave” fazem parte da
deteção, enquanto que a “orientação” e “descrição dos pontos-chave” dizem respeito à descrição.
2.4.1.1 Construção do Espaço de Escala
O primeiro objetivo do algoritmo SIFT consiste em obter pontos-chave que sejam invariantes
para diferentes escalas. Para isso, através do uso da função Gaussiana, são criados sucessivos
desfoques, que por sua vez permitem obter pontos-chave estáveis para diferentes escalas.
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
17
Matematicamente, a desfocagem é implementada da seguinte forma: uma imagem 𝐼(𝑥, 𝑦)
passa a ser definida por 𝐿(𝑥, 𝑦, 𝜎) no espaço de escala, que por sua vez é obtida através da
convolução de uma função Gaussiana G(𝑥, 𝑦, 𝜎) (equação 2.2) com a imagem 𝐼(𝑥, 𝑦), em
conjunto com a variância 𝜎, como descrito na equação 2.1.
𝐿(𝑥, 𝑦, 𝜎) = 𝐺(𝑥, 𝑦, 𝜎) ∗ 𝐼(𝑥, 𝑦) (2.1)
Em que,
𝐺(𝑥, 𝑦, 𝜎) =1
2𝜋𝜎2 𝑒−(𝑥2+𝑦2)/2𝜎2 (2.2)
2.4.1.2 Localização de pontos-chave (Keypoints)
O Laplaciano da Gaussiana calcula a derivada de segunda ordem de uma imagem que foi
inicialmente desfocada através de um filtro Gaussiano. O resultado após implementação do filtro
consiste numa imagem com os contornos e cantos realçados.
Para acelerar o processo, é calculada a Diferença de Gaussianas (DoG) (equação 2.3) entre
duas escalas consecutivas, fazendo assim uma aproximação à operação LoG (equação 2.4)
referida acima.
A Diferença de Gaussianas é dada por,
𝐷(𝑥, 𝑦, 𝜎) = (𝐺(𝑥, 𝑦, 𝑘𝜎) − 𝐺(𝑥, 𝑦, 𝜎)) ∗ 𝐼(𝑥, 𝑦) (2.3)
= 𝐿(𝑥, 𝑦, 𝑘𝜎) − 𝐿(𝑥, 𝑦, 𝜎)
A constante k representa o fator multiplicativo para obter a escala seguinte.
A referida aproximação ao LoG, invariante à escala 𝜎2∇2𝐺, é obtida através da equação
2.4, como mostrado por Lindeberg [25].
𝜎∇2𝐺 =𝜕𝐺
𝜕𝜎≈
𝐺(𝑥,𝑦,𝑘𝜎)−𝐺(𝑥,𝑦,𝜎)
𝑘𝜎−𝜎 (2.4)
Consequentemente,
𝐺(𝑥, 𝑦, 𝑘𝜎) − 𝐺(𝑥, 𝑦, 𝜎) ≈ (𝑘 − 1)𝜎2∇2𝐺 (2.5)
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
18
2.4.1.3 Orientação dos pontos-chave
Após implementado o LoG para se obter os pontos-chave, é calculado para cada ponto-chave
a sua magnitude 𝑚(𝑥, 𝑦) (equação 2.6) e orientação 𝜃(𝑥, 𝑦) (equação 2.7).
𝑚(𝑥, 𝑦) = √(𝐿(𝑥 + 1, 𝑦) − 𝐿(𝑥 − 1, 𝑦))2 + (𝐿(𝑥, 𝑦 + 1) − 𝐿(𝑥, 𝑦 − 1))2 (2.6)
𝜃(𝑥, 𝑦) = tan−1((𝐿(𝑥, 𝑦 + 1) − 𝐿(𝑥, 𝑦 − 1)) (𝐿(𝑥 + 1, 𝑦) − 𝐿(𝑥 − 1, 𝑦)))⁄ (2.7)
A orientação final para cada ponto-chave é determinada pelo histograma de orientação
dos gradientes de cada “janela” em torno do ponto-chave. Se mais que uma orientação for
atribuída a um determinado ponto-chave, esse ponto-chave é duplicado. O histograma possui 36
regiões, cobrindo todas as orientações possíveis (0 a 2π), como mostra a Figura 2.18 (Lowe,
2004).
Figura 2.18 - Histograma de orientações de pontos-chave
2.4.1.4 Descrição dos pontos-chave
Nesta fase, será atribuído a cada ponto-chave um descritor invariante à iluminação e diferentes
perspetivas. O descritor do ponto-chave é então criado, tendo em consideração as magnitudes e
orientações dos gradientes.
Uma função Gaussiana é usada para dar peso à magnitude do gradiente em cada ponto na
vizinhança do ponto-chave, com uma janela de suavização Gaussiana de escala σ igual à metade
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
19
da largura da janela do descritor. Esta função evita mudanças súbitas do descritor a pequenas
mudanças na posição.
Uma vez efetuada a suavização dos gradientes, é usado um vetor que tem 8 valores de
orientação, cada um criado ao longo de uma janela de tamanho 4x4. Esta janela provém do vetor
característico de 128 elementos com uma janela total de 16x16 (Figura 2.19).
Figura 2.19 - É criada uma janela 16x16 à volta de um dado ponto-chave (esquerda); janela 4x4 com orientações e magnitudes (direita)
No entanto, duas imagens do mesmo objeto podem ter variações de luminosidade que
modifiquem sensivelmente os descritores obtidos. Sendo assim, para que o descritor tenha
invariância à iluminação, este é normalizado.
2.4.2 SURF (Speeded-Up Robust Features) [26]
A técnica SURF (Speeded-Up-Robust-Feature) [26] foi apresentada oficialmente em 2006
numa conferência em Graz, Áustria, por Herbert Bay, e é usada para deteção de objetos e
reconstruções 3D. O estudo desta técnica teve como referência o método SIFT (Scale-Invariant
Feature Transform) [24], e apresenta vantagens consideráveis relativamente às técnicas já
existentes. Além do seu processamento ser cerca de 3 vezes mais rápido que o SIFT, o SURF é
bastante robusto no que toca a deteção de objetos, ou seja, consegue fácil e rapidamente detetar
objetos que estejam dispostos de maneira diferente em relação à posição referência, além de ser
bastante versátil no reconhecimento destes para diferentes distâncias ou diferentes níveis de
luminosidade.
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
20
2.4.2.1 Deteção de pontos de interesse
Uma das principais características do SURF é a deteção de pontos de interesse (Figura 2.20),
que basicamente são características do ambiente lido pela câmara que correspondem ao objeto
de que pretende detetar. O principal interesse dos investigadores que desenvolveram esta técnica
de deteção de objetos, era de tornar a deteção de pontos de interesse mais rápida e robusta.
Para tal, basearam-se em algoritmos já desenvolvidos e fizeram uma junção e otimização do
que já existia. Em 1988 foi apresentado o método Harris Corner Detector [27], que apesar de ser
bastante desenvolvido para a altura, só detetava objetos numa única escala. Essa lacuna foi
colmatada por Lindeberg, devido à utilização do determinante da Matriz Hessiana, assim como o
seu Laplaciano. Mikolajczyk e Schmid redefiniram este método e aumentaram a sua robustez,
usando o determinante da Matriz Hessiana para a localização do objeto, e o Laplaciano para a
escala. Mais focado na rapidez de deteção dos pontos de interesse, Lowe apresentou o seu
algoritmo em 1999 (SIFT), baseado no Laplaciano da Gaussiana (LoG) através do filtro da
Diferença de Gaussianas (DoG).
Através do estudo de todas estas técnicas e percebendo as suas principais vantagens, os
investigadores da técnica SURF tiveram como ponto de partida a deteção de pontos de interesse
baseada na Matriz Hessiana, concluindo também que aproximações através da Diferença de
Gaussianas (DoG) permitem aumentar a velocidade de processamento e garantir a precisão dos
pontos de interesse que realmente interessam, descartando os que não interessam.
Figura 2.20 – Deteção de pontos de interesse
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
21
2.4.2.2 Imagens Integrais
Para tornar o processamento computacional mais rápido, o SURF calcula o integral de
uma dada imagem 𝐼Σ(𝑥), para uma localização 𝑥 = (𝑥, 𝑦)𝑇, que representa o somatório de
todos os pixéis no input da imagem 𝐼 (equação 2.8).
𝐼𝛴(x) = ∑ ∑ 𝐼(𝑖, 𝑗)
𝑗≤𝑦
𝑗=0
𝑖≤𝑥
𝑖=0
(2.8)
Após ser calculado o integral da imagem, é feito um cálculo simples recorrendo apenas a
três operações aritméticas com o objetivo de calcular a soma das intensidades de uma
determinada área (Figura 2.21). O tempo de cálculo é independente do tamanho do retângulo,
sendo isto muito importante para a rapidez de processamento, pois o SURF usa retângulos
grandes.
Figura 2.21 - Cálculo para determinar a soma das intensidades de uma determinada área [26]
2.4.2.3 Pontos de interesse baseados na Matriz Hessiana
Como referido anteriormente, a técnica SURF utiliza a Matriz Hessiana devido à sua
performance. Mais concretamente, quando são detetados pontos de interesse válidos, o
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
22
determinante da matriz atinge o seu valor máximo. O cálculo do determinante da Matriz Hessiana
é calculado através da equação 2.9.
det(𝐻𝑎𝑝𝑟𝑜𝑥) = 𝑫𝑥𝑥𝑫𝒚𝒚 − (0.9𝑫𝒙𝒚)𝟐 (2.9)
𝐷𝑥𝑥representa a derivada parcial de segunda ordem no eixo dos 𝑥𝑥, 𝐷𝑦𝑦representa a
derivada parcial no eixo dos 𝑦𝑦 e 𝐷𝑥𝑦 a derivada parcial no eixo 𝑥𝑦.
Dado um ponto 𝑥 = (𝑥 , 𝑦) na imagem 𝐼, a Matriz Hessiana Η(𝑥 , 𝜎) em 𝑥 para a
escala 𝜎 é dada pela equação 2.10.
Η(𝑥 , 𝜎) = [𝐿𝑥𝑥(𝑥 , 𝜎) 𝐿𝑥𝑦(𝑥 , 𝜎)
𝐿𝑥𝑦(𝑥 , 𝜎) 𝐿𝑦𝑦(𝑥 , 𝜎)] (2.10)
𝐿𝑥𝑥(𝑥 , 𝜎) representa a convulsão Gaussiana em ordem à segunda derivada
𝜗2
𝜗𝑥2 𝑔(𝜎) do ponto x da imagem I. O mesmo acontece para 𝐿𝑥𝑦(𝑥 , 𝜎) e 𝐿𝑦𝑦(𝑥 , 𝜎). No
entanto, visto que o processamento da convulsão Gaussiana é pesado e tem implicações na sua
velocidade de processamento, é necessário recorrer à discretização da derivada gaussiana de
segunda ordem (Figura 22, metade esquerda), antes que seja finalmente aplicada. Como o esforço
computacional aumenta com o aumento do tamanho dos filtros, o algoritmo SURF aproxima esses
filtros a caixas retangulares, denominados de filtros de caixa (Figura 22, metade direita), sendo
que estes filtros correspondem à derivada gaussiana de segunda ordem, reduzindo assim
significativamente o tempo de processamento.
Figura 2.22 - Da esquerda para a direita: discretização da derivada parcial gaussiana de segunda ordem em relação a 𝒚 (𝑳𝒚𝒚) e 𝒙𝒚 (𝑳𝒙𝒚), respetivamente; aproximação à derivada parcial gaussiana de segunda ordem em
relação a 𝒚 (𝑫𝒚𝒚) e na direção 𝒙𝒚 (𝑫𝒙𝒚). As regiões a cinzento correspondem a zero. [26]
Como referido anteriormente, o SURF utiliza o princípio de funcionamento do SIFT, por
isso, são também usados no SURF os processos de:
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
23
Construção do espaço de escala
Localização dos pontos de interesse
Orientação dos pontos de interesse
Descrição dos pontos de interesse
2.4.3 Construção do espaço de escala
O algoritmo de obtenção de pontos de interesse tem que ser desenvolvido para que estes
sejam obtidos em diferentes escalas da imagem original. A alteração de escalas é designada por
“espaço de escala” e no SURF é implementada sob a forma de pirâmide invertida (Figura 2.23).
Para tal, o algoritmo SURF obtém pontos de interesse para diferentes escalas através do aumento
do filtro da imagem (Figura 2.24). Estes filtros têm o tamanho original de 9x9 e são aproximações
à função Gaussiana com 𝜎 = 1.2.
Figura 2.23 - Em vez de se utilizar a redução do tamanho da imagem (esquerda), a utilização de imagens integrais permite o aumento de escala do filtro por um custo constante (direita). [26]
Figura 2.24 - Exemplo de filtros em escalas diferentes, 9x9 (esquerda) e 15x15 (direita) [26]
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
24
2.4.4 Localização dos pontos de interesse
Para localizar os pontos de interesse na imagem e em diferentes escalas, são
determinados os máximos e mínimos no mapa de resposta, blob response map, que é formado
através do determinante da Matriz Hessiana para cada um dos pixéis.
2.4.5 Orientação dos pontos de interesse
Para cada ponto de interesse detetado cujo tamanho esteja relacionado com a escala, é
calculada a resposta da convolução para os dois filtros (Figura 2.25). Estes filtros têm a designação
de Haar wavelets e através deles é possível observar as variações que estão a ocorrer na direção
x e y (Figura 2.26).
Figura 2.25 - Filtro em x (esquerda) e em y (direita) [26]
Figura 2.26 - Resposta de direção do ponto de interesse após ser aplicado o filtro [26]
2.4.6 Descrição dos pontos de interesse
Segundo Herbert Bay, a descrição dos pontos de interesse é fase mais importante para
uma correta deteção de pontos de interesse. Esta etapa consiste em pegar num determinado
ponto de interesse e a partir do seu centro implementar um quadrado como descrito na Figura
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
25
2.27. Esse quadrado estará alinhado com a direção que foi calculada na etapa anterior, sendo
depois dividido em 16 subquadrados menores. Para cada um destes 16 novos quadrados, será
novamente calculada a resposta da convolução através dos filtros descritos na Figura 2.25.
Figura 2.27 - Representação do quadrado de respostas de Wavelet. Soma das direções 𝒅𝒙 , |𝒅𝒙|, 𝒅𝒚 𝒆 |𝒅𝒚| [26]
2.5 RANSAC [28]
RANSAC é a abreviatura de "RANdom SAmple Consensus" e consiste num método
iterativo para estimar os parâmetros de um modelo matemático. Este método foi apresentado por
Fischler e Bolles em 1981, e tem como principal objetivo eliminar os outliers presentes num
conjunto de dados.
Este algoritmo baseia-se na ideia de que num grupo de amostras selecionadas
aleatoriamente, existem algumas que preenchem corretamente um modelo matemático e seus
parâmetros, embora existam nesse conjunto amostras que não obedecem àquele modelo. Cabe
ao modelo determinar quais as amostras que serão aceites como corretas e incorretas.
O algoritmo RANSAC seleciona iterativamente um subgrupo de amostras, considerando
essas amostras temporariamente como corretas, sendo essa hipótese testada da seguinte forma:
1. É criado um modelo com base num grupo de amostras consideradas como corretas
(nesta fase ainda é desconhecido se realmente o são ou não). É então determinado o
parâmetro do modelo;
2. Todas as outras amostras são testadas considerando o modelo gerado como
verdadeiro. Se uma amostra de encaixar no modelo, interpretada como um “acerto”;
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
26
3. O modelo estimado recebe uma avaliação baseada no número de amostras
congruentes que satisfazem os parâmetros do modelo, contabilizando-as como
“acerto”;
4. No final do processo, o ciclo inicia desde a etapa 1 e são repetidas todas as instruções
até que todos os grupos tenham sido testados.
O modelo que tiver maior número de “acertos” será considerado como o modelo
referência, mesmo que existam diversas amostras que não correspondem ao modelo escolhido
(outliers).
Figura 2.28 - Exemplo de aplicação do algoritmo RANSAC; Outliers (vermelho) e Inliers (azul)
2.6 Arquitetura de Software
Quer o algoritmo de deteção de objetos (SURF) quer o método para eliminação de outliers
(RANSAC), foram implementados recorrendo à biblioteca multiplataforma OpenCV (Open Source
Computer Vision Library) (Figura 2.29) [29]. Estes algoritmos foram desenvolvidos sob a linguagem
de programação C++, usando a plataforma de desenvolvimento Qt Creator 4.6 (Figura 2.30), que
tem como principal vantagem o facto de ser uma ferramenta de desenvolvimento de software
multiplataforma.
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
27
Figura 2.29 – OpenCV [29] Figura 2.30 – Qt Creator
Outra da ferramentas usadas para trabalhar com a Kinect foi o OpenNI (Open Natural
Interface) (Figura 2.31) [30]. O OpenNI é uma framework que oferece funções de alto nível
orientadas para jogos ou reconhecimento de gestos, por exemplo. O OpenNI cria uma camada de
abstração do hardware, permitindo assim criar um interface genérico. Foi utilizada a integração
do OpenNI com o OpenCV, com o objetivo de permitir a calibração do sensor RGB com o sensor
de infravermelhos, possibilitando com isto que os dados RGB e de profundidade sejam
corretamente mapeados em relação a um único ponto de vista.
Figura 2.31 – OpenNI [30]
Em relação ao computador utilizado para processar tudo isto atrás referido, foi usado um
Asus Z53Sseries, processador Core2Duo T300 2.0 GHz e 2GB de memória RAM. No que diz
respeito ao sistema operativo, foi utilizado o Ubunto 12.04 LTS (Figura 2.32).
Figura 2.32 - Logotipo UBUNTU
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
28
Capítulo III
3 Robô MARy
O robô alvo desta dissertação tem a designação de MARy (Minho Autonomous Robot)
(Figura 3.1) [31] e foi desenvolvido no LAR (Laboratório de Automação e Robótica) da Universidade
do Minho. Este robô enquadra-se na área de robótica de serviços, e foi desenvolvido para participar
no RoboCup@home 2010, uma competição internacional que visa o desenvolvimento de robôs
que executem tarefas domésticas.
Figura 3.1 - Robô MARy [29]
Em relação às características técnicas do robô MARy, este possui uma base móvel
omnidirecional (Figura 3.3), um braço robótico articulado com 3 DoF, assim como uma
configuração mecânica que se desloca no eixo dos zz, que permite ao braço robótico (Figura 3.4)
alcançar objetos desde o nível do chão até uma altura máxima de 1.2 m. O robô MARy possui
também uma garra manipuladora (Figura 3.2) com 2 DoF na extremidade do braço robótico, para
que seja possível a manipulação de objetos. Em relação ao sistema de visão, o robô MARy utiliza
a câmara Kinect da Microsoft, devido principalmente ao seu sensor de profundidade que faz com
que esta câmara cumpra integralmente os objetivos propostos.
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
29
Figura 3.2 - Garra Manipuladora Figura 3.3 – Base Móvel Omnidirecional
Figura 3.4 - Braço Robótico Articulado
3.1 Braço Robótico Articulado
A manipulação de objetos é conseguida através de um braço robótico articulado que tem
na sua extremidade uma garra manipuladora. Desenvolvido para o efeito pelo aluno de mestrado
David Oliveira em 2010 [32], este componente robótico necessitou de algumas adaptações e
inovações, quer a nível mecânico, quer a nível de hardware e software de controlo.
A garra manipuladora colocada na extremidade do braço permitia apenas agarrar o objeto,
sendo acrescentado um grau de liberdade para permitir também rodar o objeto em questão. Os
três motores são agora controlados apenas por uma placa controladora (“OMNI-3MD”). Foi
também aumentada a robustez mecânica no braço, mais precisamente nas juntas, para eliminar
as folgas existentes. O alcance máximo do braço também foi aumentado em 5 cm.
O braço robótico articulado é um componente robótico planar com três graus de liberdade
(Figura 3.5), sendo as suas juntas rotacionais no eixo dos zz. Existem três secções designadas por
L1, L2 e L3, e entre cada duas secções existe um elo de ligação (junta), conferindo assim o grau
de liberdade. A cada junta está associado um motor (SD3039 da Transmotec), que é controlado
pela placa controladora.
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
30
Relativamente à garra manipuladora que está acoplada à secção L3, possui 2 DoF
(abertura e fecho da garra e rotação sobre o eixo longitudinal), permitindo assim agarrar e rodar o
objeto. Estes dois graus de liberdade são conseguidos através da utilização de dois servomotores
(Goteck), que suportam uma carga máxima de 2.5 Kg. Os servomotores são controlados pela
placa Devatech SD21 Servo Controller. Com o acrescentar de mais um servomotor, o alcance
máximo do braço robótico articulado aumentou 5 cm, atingindo agora um alcance máximo no eixo
dos xx de 60 cm.
Figura 3.5 - Exemplificação do braço robótico articulado
Na Tabela 2 são apresentadas as principais características do braço robótico articulado.
Tabela 2 - Características do Braço Robótico Articulado
Graus de Liberdade do Braço 3
Graus de Liberdade da Garra 2
Juntas Rotacionais no eixo dos zz
Alcance máximo 60 cm
Carga máxima 2.5 Kg
Comunicação RS-232
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
31
3.1.1 Placa Controladora OMNI-3MD
A OMNI-3MD (Figura 3.6), placa controladora de três motores desenvolvida pela SAR –
Soluções de Automação e Robótica, é um dispositivo I2C SLAVE capaz de movimentar três motores
DC 12V a 24V e correntes até 4A por motor. Usando encoders, efetua a movimentação dos
motores com controlo em malha fechada PID. Um processador PIC de 16bits a 40MHz permite
vários modos de movimentação dos motores, nomeadamente:
Movimentação Omnidirecional de três motores com/sem controlo PID.
Movimentação linear de três motores com/sem controlo PID.
Movimentação posicional de três motores com controlo PID.
A comunicação com a placa é efetuada através do barramento I2C e o uso de comandos
permite o acesso a todas as funcionalidades da OMNI-3MD.
Um conjunto de LEDs fornece ao utilizador informação sobre o estado dos principais
parâmetros da OMNI-3MD.
Uma rotina de calibração adquire automaticamente os parâmetros necessários para o
controlo em malha fechada PID relacionados com os encoders.
Figura 3.6 - Placa Controladora OMNI-3MD
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
32
Especificações:
Controlo em malha fechada de três motores DC
Comunicação I2C
Alimentação dos motores 12V~24V DC
Alimentação do controlo 5V DC (barramento I2C)
Corrente máxima por motor 4A
Proteção de corrente por fusíveis auto-rearmáveis
Monitorização de Temperatura e corte térmico
Monitorização da tensão de alimentação dos motores
Furação para encaixe direto do Arduino
Processador de 16bits a 40MHz
3.1.2 Atuadores
Os atuadores utilizados para movimentarem cada secção do braço robótico articulado são,
como referido anteriormente, três motores elétricos DC fabricados pela Transmotec, cujo modelo
é SD3039 (Figura 3.7).
Uma das grandes vantagens da utilização deste tipo de motores no braço, é a possibilidade
da alternância do sentido de movimento através da inversão da polaridade da alimentação, ou
seja, como é desejado que as diferentes secções do braço subam e desçam, optou-se por este
tipo de motores.
A dificuldade maior com a utilização deste tipo de motores prendeu-se com o facto de ser
difícil controlar a posição do eixo. Controlar a posição do eixo do motor é indispensável para
posicionar corretamente as secções nas respetivas posições para manipularem o objeto. Nesse
sentido, utilizaram-se 2 encoders em cada motor para fazer o controlo posicional do eixo do motor,
assim como saber a sua direção de rotação.
Figura 3.7 - Motor Transmotec SD3039
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
33
Na Tabela 3 são detalhadas as características dos atuadores usados.
Tabela 3 - Características do motor DC Transmotec SD3039
Tensão Nominal 12 V
Binário Nominal 39.23 N.cm
Velocidade Nominal 46.3 rpm
Potência de Saída 4.22 W
Caixa Redutora 120:1
Encoder 13 polos magnéticos
Comprimento 80.6 mm
Largura 30 mm
Peso 144 g
3.1.3 Placa de Desenvolvimento Arduino Duemilanove
A placa de desenvolvimento utilizada para interagir com a placa OMNI-3MD foi o Arduino
Duemilanove (“2009”) (Figura 3.8), que possui o microcontrolador ATmega168. O Arduino
Duemilinove possui também 14 pinos digitais Input/Output, 6 pinos analógicos, um oscilador de
cristal de 16MHz, coneção USB, um conector de alimentação e um botão de Reset.
Seguidamente (Tabela 4) são apresentadas as características da placa de
desenvolvimento Arduino Duemilanove.
Tabela 4 - Características da placa de desenvolvimento Arduino Duemilanove
Microcontrolador ATmega168
Tensão de Operação 5V
Tensão de Entrada (recomendado) 7V - 12V
Tensão de Entrada (limites) 6V – 20V
Pinos Digitais I/O 14
Pinos Analógicos de Entrada 6
Corrente DC por pino I/O 40 mA
Memória Flash 16KB (ATmega168), dos quais 2KB são
usados pelo gestor de arranque
SRAM 1 KB
EEPROM 512 bytes
Velocidade de Clock 16 MHz
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
34
Figura 3.8 – Arduino Duemilanove
Em relação à plataforma de desenvolvimento de software usada para comunicar com o
Arduino, foi usado o IDE do Arduino (Figura 3.9), que é uma aplicação multiplataforma escrita em
Java derivada dos projetos Processing (linguagem de programação de código aberto) e Wiring
(plataforma de prototipagem electrónica). Este IDE inclui um editor de código com recursos de
realce de sintaxe, parênteses correspondentes e identação automática, sendo capaz de compilar
e carregar programas para a placa de forma bastante simples. Com isto não há a necessidade de
editar Makefiles ou executar programas em ambientes de linha de comando.
Figura 3.9 - IDE do Arduino
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
35
O algoritmo aqui desenvolvido tem como objetivo controlar a posição de cada junta do
braço robótico, posição essa calculada em função das coordenadas recebidas pela câmara Kinect.
Para que isto fosse possível, foi necessário recorrer à biblioteca Boost [33] para enviar via porta
série as coordenadas lidas pela Kinect e assim permitir que o Arduino processasse o algoritmo de
controlo de cada junta.
3.1.4 Servomotores
Os servomotores usados (Figura 3.10) para habilitar os graus de liberdade da garra
manipuladora são da Goteck e suportam uma carga máxima de 2.5Kg. Todas as restantes
características deste modelo são apresentadas na Tabela 5.
Tabela 5 - Características do Servomotor Goteck 2.5Kg
Tensão de Operação 4.8V – 6V
Binário 2.3Kg-cm(4.8V); 2.5Kg-cm(6V)
Velocidade de Operação 0.10seg/60(6V),0.11seg/60(4.8V)
Tamanho 23x12.1x28.8mm
Peso 14.7g
Comprimento do Cabo 180mm (JR)
Figura 3.10 - Servomotor Goteck 2.5 Kg
3.1.5 Placa Controladora dos Servomotores
Os servomotores são controlados pela placa Devantech SD-21 (Figura 3.11) e a sua
comunicação com o Arduino é feita através do protocolo de comunicação I2C. Esta placa permite
o controlo da posição e velocidade dos servomotores.
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
36
Figura 3.11 - Devantech SD-21
3.1.6 Protocolo de Comunicação
3.1.6.1 Motores DC
Como foi referido anteriormente, a comunicação entre o Arduino e a placa OMNI-3MD é
efetuada através de I2C. Esta comunicação tem como objetivo principal permitir o controlo dos
três motores do braço robótico. Para testar o funcionamento de cada um dos motores e habilitar
a execução da cinemática, foi desenvolvido um algoritmo para que seja interpretada uma trama
de 12 caracteres (Figura 3.12). A estrutura da trama é a seguinte:
Figura 3.12 - Exemplo de trama para controlo dos motores
Os quadrados com fundo cinza representam a direção da movimentação da respetiva
junta, sendo que o sinal “-“ representa o sentido descendente e o sinal “+” representa o sentido
ascendente. Os seguintes três caracteres representam o ângulo desejado que se pretende
alcançar. De referir também que os primeiros quatro dígitos do lado esquerdo são direcionados
para o motor 1, os seguintes quatro dígitos para o motor 2 e os últimos quatro dígitos para o motor
3.
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
37
O feedback obtido pelo controlador, é dado pelos encoders do respetivo motor. Então, de
modo a que se consiga prever o ângulo a realizar em cada junta, é necessário saber a relação
entre este e o número de impulsos do sensor. Sendo assim, através da equação 3.1, sabe-se que
uma volta completa, correspondente a 360º, corresponde a 46800 incrementos produzidos pelo
encoder.
𝐶𝑗𝑢𝑛𝑡𝑎 (360°) = 13.120.30 = 46800 𝑖𝑛𝑐𝑟𝑒𝑚𝑒𝑛𝑡𝑜𝑠 (3.1)
Polos Magnéticos do Encoder: 13
Caixa Redutora 1: 120:1 (acoplada ao veio do motor)
Caixa Redutora 2: 30:1 (provocada pela roda dentada)
Posto isto, a relação entre o número de incrementos produzidos pelo encoder e o ângulo
que se pretende alcançar em cada junta, é dado pela equação 3.2.
𝜃𝑗𝑢𝑛𝑡𝑎 = 𝐶𝑗𝑢𝑛𝑡𝑎 . 360
46800 (3.2)
Tendo conhecimento do ângulo que se pretende alcançar, é possível utilizar esta relação
matemática para determinar o número de incrementos que são necessários até se atingir a
posição desejada.
3.6.1.2 Servomotores
Como falado anteriormente, a placa controladora dos servomotores comunica via
protocolo de comunicação I2C com a placa controladora Arduino e é através desta configuração
(Figura 3.13) que é controlada a posição e velocidade de cada servomotor.
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
38
Figura 3.13 - Configuração Arduino / SD-21
O acesso ao microcontrolador PIC18F2220 que a placa Devantech SD-21 incorpora,
assim como o acesso aos registos internos dedicados a cada servomotor é efetuado através do
barramento I2C no endereço 0XC2. Cada servomotor possui uma configuração de três registos:
- Velocidade
- Byte Alto para Posição
- Byte Baixo para Posição
Através de informações disponibilizadas pelo fabricante, sabe-se que a posição de cada
servomotor é representada por um número de 16-bit definido em μs. A posição central do
servomotor corresponde a 1500μs e cada servomotor poderá ver a sua posição variar entre 800μs
e 2200μs.
Nesse sentido, cruzando as informações de cada servomotor, que tem um movimento de
rotação máximo de 120º (60º para cada lado), poderá deduzir-se que:
Figura 3.14 - Relação Posição (µs) / Posição (graus)
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
39
Em relação ao controlo da velocidade de cada servomotor, se o registo de velocidade for
diferente de zero, esse valor será adicionado à posição atual do servomotor a cada 20ms (tempo
de atualização da Devantech SD-21), até que a posição final seja atingida.
Por exemplo, se se pretende que um determinado servomotor se mova de 0º (1500μs)
para 60º (2200μs) com o registo de velocidade definido como 10, a fórmula que determina o
tempo que demorará a efetuar esse movimento é dada pela equação 3.3.
𝑃𝑜𝑠𝑖çã𝑜 𝐹𝑖𝑛𝑎𝑙 − 𝑃𝑜𝑠𝑖çã𝑜 𝐼𝑛𝑖𝑐𝑖𝑎𝑙
𝑅𝑒𝑔𝑖𝑠𝑡𝑜 𝑑𝑒 𝑉𝑒𝑙𝑜𝑐𝑖𝑑𝑎𝑑𝑒∗ 20 (3.3𝑎)
2200 − 1500
10∗ 20 = 1.4𝑠𝑒𝑔𝑢𝑛𝑑𝑜𝑠 (𝑡𝑒𝑚𝑝𝑜 𝑑𝑒 𝑚𝑜𝑣𝑖𝑚𝑒𝑛𝑡𝑜) (3.3𝑏)
Na Figura 3.15, é apresentado o fluxograma relativo ao algoritmo implementado no
microcontrolador para controlo dos motores e da garra manipuladora.
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
40
Figura 3.15 - Fluxograma representativo do algoritmo para controlo dos motores e da garra manipuladora através do microcontrolador
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
41
Capítulo IV
4 Cinemática do Braço Robótico Articulado
A cinemática de um sistema robótico consiste em determinar a posição das respetivas
juntas para que a sua extremidade, designada por end-effector, atinga um determinado alvo. Esta
posição mencionada, diz respeito não só à posição propriamente dita, como à sua orientação.
Nesse sentido, existem dois tipos de cinemática, a cinemática direta e a inversa.
Na cinemática direta, é desejado obter a posição do end-effector para uma dada posição
das juntas do sistema robótico. Na cinemática inversa acontece o contrário, ou seja, é fornecida a
posição final que se pretende para o end-effector e serão calculadas as posições das respetivas
juntas do sistema robótico para posicionar o end-effector na posição desejada.
Seguidamente será abordada com detalhe a cinemática inversa usada para controlo do
end-effector do braço robótico articulado do robô MARy, pois é o processo cinemático que melhor
satisfaz as condições exigidas.
4.1 Espaço de Coordenadas
Antes de procedermos ao cálculo da cinemática inversa, há que ter em consideração o
posicionamento da câmara Kinect em relação ao braço robótico, pois isso interfere diretamente
no funcionamento da cinemática. Ou seja, como a cinemática inversa será calculada em relação
à posição referência do braço robótico, mas as coordenadas do objeto são inicialmente dadas pela
Kinect em relação ao seu referencial, é indispensável encontrar uma relação entre a posição
câmara e do braço robótico, para que a cinemática inversa seja calculada em relação ao referencial
do braço robótico articulado.
Para solucionar este problema, é necessário determinar a matriz de rotação do sistema
de coordenadas da câmara, em torno do eixo dos zz (equação 4.1).
[𝑥𝑏
′
𝑦𝑏] = [
cos 𝛿𝑐 sin 𝛿𝑐
− sin 𝛿𝑐 cos 𝛿𝑐] [
𝑥𝑐
𝑦𝑐] (4.1)
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
42
Na tabela 6 são descritas as variáveis que serão usadas em muitos passos para solucionar
a cinemática inversa.
Tabela 6 - Descrição de variáveis
𝑥𝑏 , 𝑦𝑏 Coordenadas referentes ao início do braço robótico em relação ao objeto
𝑥𝑐 , 𝑦𝑐 Coordenadas da posição da câmara Kinect em relação ao objeto
𝛿𝑐 Desfasamento entre as coordenadas do braço e da câmara
É também necessário obter a matriz de translação que promove o deslocamento do
sistema de eixos (equação 4.2), ou seja, permite que as coordenadas do braço sejam
determinadas em função do seu referencial. As constantes usadas neste processo são explicadas
na Tabela 7.
[𝑥𝑏
𝑦𝑏
1] = [
1 0 𝑑0 1 ℎ0 0 1
] [cos 𝛿𝑐 sin 𝛿𝑐 0
− sin 𝛿𝑐 cos 𝛿𝑐 00 0 1
] [𝑥𝑐
𝑦𝑐
1] (4.2)
Tabela 7 - Constantes da transformação geográfica
𝑑 Distância horizontal entre o braço e a câmara 4 cm
ℎ Distância vertical entre o braço e a câmara 62 cm
𝛿𝑐 Desfasamento entre as coordenadas do braço e da câmara 38°
Figura 4.1 - Posicionamento de um objeto em relação a dois sistemas de eixos
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
43
Posto isto, já é possível obter as coordenadas finais do braço robótico em relação ao seu
referencial, quer em x (equação 4.3), quer em y (equação 4.4), habilitando assim estas
coordenadas a serem usadas no cálculo da cinemática inversa.
𝑥𝑏 = 𝑥𝑐 . cos(𝛿𝑐) + 𝑦𝑐 . sin(𝛿𝑐) − 𝑑 (4.3)
𝑦𝑏 = −𝑥𝑐 . sin(𝛿𝑐) + 𝑦𝑐 . cos(𝛿𝑐) + ℎ (4.4)
4.2 Espaço de Trabalho
Como é óbvio, nem todos os pontos do plano podem ser alcançados pela garra
manipuladora. Como tal, torna-se necessário o cálculo do espaço de trabalho do manipulador, que
consistem em determinar todos os pontos possíveis em que o manipulador pode posicionar a sua
extremidade.
Para garantir a segurança mecânica do braço robótico, foi imposto que as juntas fizessem
um movimento máximo de 90º em relação à posição referência. Assim sendo, a amplitude de
cada junta varia entre −90° ≤ 𝜃𝑗𝑢𝑛𝑡𝑎 ≤ 90° (Figura 4.2).
Figura 4.2 - Amplitude de cada junta
Para se conhecer o espaço de trabalho do braço robótico, é indispensável calcular a
distância máxima e mínima que o manipulador pode alcançar. Para tal, tem que se conhecer
previamente o comprimento de cada secção do manipulador (Tabela 8).
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
44
Tabela 8 - Tamanho dos componentes do braço robótico
Secção Comprimento (cm)
L1 25
L2 20
L3 5
M 10
O alcance máximo do manipulador, é dado pela equação 4.5.
𝑟𝑚𝑎𝑥 = 𝐿1 + 𝐿2 + 𝐿3 + 𝑀 = 60 𝑐𝑚 (4.5)
O alcance mínimo do manipulador, em relação à coordenada 𝑥, é dado pela equação 4.6.
𝑥𝑚𝑖𝑛 = 𝐿1 − 𝐿3 = 20 𝑐𝑚 (4.6)
Devido à construção mecânica e respetivas restrições, o 𝑥𝑚𝑖𝑛 que a garra manipuladora
consegue alcançar corresponde a 20cm.
A altura mínima que o manipulador consegue alcançar, é dada pela equação 4.7.
𝑦𝑚𝑖𝑛 = 𝐿1 − (𝐿3 + 𝑀) = 10 𝑐𝑚 (4.7)
Como tal, o raio mínimo alcançável pelo braço robótico, é dado na equação 4.8.
𝑟𝑚𝑖𝑛 = √𝑥𝑚𝑖𝑛2 + 𝑦𝑚𝑖𝑛
2 = 22.36 𝑐𝑚 (4.8)
Com o conhecimento do 𝑟𝑚𝑎𝑥 𝑒 𝑟𝑚𝑖𝑛 é então possível através da equação 4.9 determinar
o espaço de trabalho do manipulador (Figura 4.3).
𝐸. 𝑇. = {(𝑥𝑒, 𝑦𝑒) ∈ ℝ2 ∶ 𝑟𝑚𝑖𝑛 ≤ √𝑥𝑒2 + 𝑦𝑒
2 ≤ 𝑟𝑚𝑎𝑥} (4.9)
As coordenadas 𝑥𝑒 𝑒 𝑦𝑒 representam as coordenadas do end-effector, que corresponde à
garra manipuladora.
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
45
Figura 4.3 - Espaço de trabalho do braço robótico articulado
4.3 Cinemática Inversa
Como referido anteriormente, através da câmara Kinect será conhecida a localização do
objeto que se pretende manipular, por isso o objetivo é calcular o ângulo que cada junta deve
tomar para a garra manipuladora fique na posição pretendida. Sendo assim, o processo usado
para posicionar a garra manipuladora foi a cinemática inversa.
Os ângulos de cada junta serão determinados em função da posição referência que o
braço articulado vai tomar. Como mostra a Figura 4.4, essa posição referência equivale a todas
as secções do braço articulado estarem alinhadas horizontalmente.
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
46
Figura 4.4 - Posição referência do braço robótico articulado
4.3.1 Determinação de 𝜽𝟐
Através da Figura 4.5, torna-se possível determinar que:
cos 𝜃2 = 𝑥3
2 + 𝑦32 − 𝐿1
2 − 𝐿22
2 𝐿1 𝐿2 (4.10𝑎)
sin 𝜃2 = √1 − 𝑐𝑜𝑠2 𝜃2±
(4.10𝑏)
𝜃2 = 𝑎𝑡𝑎𝑛2 (sin 𝜃2
cos 𝜃2) (4.10c)
4.3.2 Determinação de 𝜽𝟏
Através das variáveis auxiliares 𝑲𝟏 (equação 4.11a) e 𝑲𝟐 (equação 4.11b), é calculado o
ângulo para a junta 1, 𝜽𝟏, através da equação 4.11c.
𝐾1 = 𝐿1 + 𝐿2 . 𝑐𝑜𝑠(𝜃2) (4.11a)
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
47
𝐾2 = 𝐿2 . 𝑠𝑖𝑛(𝜃2) (4.11b)
𝜃1 = 𝑎𝑡𝑎𝑛2 (𝑦3
𝑥3) − 𝑎𝑡𝑎𝑛2 (
𝐾2
𝐾1) (4.11c)
De referir que 𝐾1e 𝐾2 são apenas variàveis auxiliares.
4.3.3 Determinação de 𝜽𝟑
𝛼 = 𝜃1 + 𝜃2 + 𝜃3 (4.12)
A variável 𝜶 é o resultado do posicionamento provocado pelos ângulos das três juntas
(equação 4.12). Posto isto, se o valor de 𝜶 for mantido constante, é possível manter-se sempre a
mesma relação entre a secção L3 e o end-effector.
Para que L3 + M se mantenha sempre paralelo ao eixo das abcissas, o valor de 𝜶 tem
que ser zero (equação 4.13).
𝛼 = 0 (4.13)
Após esta metodologia, é então possível determinar 𝜃3 com base na equação 4.14.
𝜃3 = 𝛼 − 𝜃1 − 𝜃2 (4.14)
Figura 4.5 - Diagrama de auxílio para a determinação da cinemática inversa
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
48
Na Figura 4.6, é apresentado o fluxograma relativo ao algoritmo implementado para
solucionar a cinemática inversa.
Figura 4.6 - Fluxograma representativo do algoritmo para solucionar a cinemática inversa
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
49
Capítulo V
5. Base Móvel Omnidirecional
Para permitir que robô MARy se desloque, foi desenvolvida uma plataforma omnidirecional
pelo aluno Júlio Rodrigues em 2010 [34]. Esta plataforma possui 3 andares, sendo o andar mais
baixo (Figura 5.1) destinado a albergar toda a eletrónica de alimentação dos motores e placas
controladoras. No andar do meio é onde são colocadas as baterias para alimentar o andar inferior.
O andar superior serve de apoio à estrutura central que permite ao braço o movimento ascendente
e descendente, assim como o apoio da estrutura que suporta o sistema de visão.
Para facilitar a sua locomoção, optou-se por seis rodas do tipo Suecas dispostas com um
desfasamento de 120º entre elas. Para acionar cada uma das rodas, foram usados três motores
(um para cada par de rodas), cujo modelo é RC5 33-80835004 da Cruzet e o controlo dos
mesmos é feito através de placas controladores AVR Butterfly.
Figura 5.1 – 1º Andar da Base Móvel Omnidirecional
5.1 Placa Controladora AVR Butterfly
A AVR Butterfly (Figura 5.2) é uma placa controladora desenvolvida pela Atmel que possui
um microcontrolador ATmega 169P. Este microcontrolador vem acompanhado por um conjunto
de periféricos que faz desta placa controladora bastante versátil, podendo ser utilizada para os
mais diversos fins.
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
50
Características:
LCD com 120 segmentos
Joystick com 4 posições
Elementos Piezo para reprodução de sons
Cristal de 32KHz
Memória flash de 4Mbit
Permite comunicação RS-232
Termístor NTC para controlo de temperatura
Conetor JTAG para depuração
Compatível com software AVR Studio 4
Figura 5.2 - Placa controladora AVR Butterfly
5.2 Atuadores
Como referido anteriormente, os motores usados para acionamento das rodas são o
modelo RC5 33-80835004 da Crouzet (Figura 5.3). As suas características são apresentadas na
Tabela 9.
Tabela 9 - Características do Atuador
Binário 5 Nm
Potência Nominal 27 W
Escala de Velocidade 7.4 rpm – 426 rpm
Peso 1540 g
Encoders 2
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
51
Figura 5.3 - Motor RC5 33-80835004 da Crouzet
5.3 Posicionamento
Se o robô MARy detetar o objeto mas o braço robótico não estiver rigorosamente em frente,
para que este possa ser manipulado pela garra manipuladora, é acionado um algoritmo de
posicionamento. Esse algoritmo tem como base os princípios da trigonometria (Figura 5.4) e é
seguidamente exemplificado.
Figura 5.4 – Relação trigonométrica para centrar o braço robótico com o objeto
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
52
O campo de visão da Kinect é de 58° na horizontal e de 45° na vertical. Se o objeto estiver
dentro do campo da visão da Kinect é detetado, e através das coordenadas fornecidas pela Kinect
é possível calcular o ângulo que a base omnidirecional tem que rodar para que o braço robótico
fique centrado com o objeto que se pretende manipular. Esse ângulo é calculado na equação 5.1.
𝑡𝑎𝑛 (𝛼) = 𝑐𝑎𝑡𝑒𝑡𝑜 𝑜𝑝𝑜𝑠𝑡𝑜
𝑐𝑎𝑡𝑒𝑡𝑜 𝑎𝑑𝑗𝑎𝑐𝑒𝑛𝑡𝑒=
𝐾𝑖𝑛𝑒𝑐𝑡. 𝑋
𝐾𝑖𝑛𝑒𝑐𝑡. 𝑍 (5.1a)
𝛼 = 𝑡𝑎𝑛−1 (𝐾𝑖𝑛𝑒𝑐𝑡. 𝑋
𝐾𝑖𝑛𝑒𝑐𝑡. 𝑍) (5.1b)
5.4 Protocolo de Comunicação
À semelhança do que foi feito no braço robótico, foi implementado no algoritmo de controlo
da base móvel omnidirecional uma trama que permite receber informações sobre a velocidade
linear (cm/s), ângulo de deslocação (graus) e velocidade angular (rad/s) que a base móvel deve
tomar. Para indicar o fim do comando, deve ser inserido o caracter “f” no final da trama. A Figura
5.5 exemplifica a constituição da referida trama.
Figura 5.5 - Exemplo de trama para base móvel omnidirecional
Importante também referir que a comunicação entre o PC e as placa controladora master
é feita via cabo série, usando o protocolo RS232. As placas controladas foram implementadas
com a configuração master/slave (Figura 5.6), sendo que apenas a placa master recebe
informação proveniente do PC, que por sua vez passa a informação às 2 placas slaves. Após todas
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
53
as placas terem informação, serão dadas ordens aos atuadores (motores) para procederem ao
respetivo movimento.
Figura 5.6 - Configuração Master/Slave
A Figura 5.7 apresenta o fluxograma referente ao algoritmo desenvolvido para ajuste da
base omnidirecional.
Figura 5.7 - Fluxograma referente ao algoritmo para ajuste da base omnidirecional
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
54
Capítulo VI
6. Análise de Resultados
Dos objetivos desta dissertação, faziam parte a deteção de objetos, localização dos
mesmos e posicionamento (da base omnidirecional e do braço robótico) do robô MARy. Como tal,
foram testadas individualmente cada uma das fases, como é seguidamente apresentado, para
garantir a fiabilidade do sistema e apurar a margem de erro que existe em cada processo.
6.1 Deteção
Como referido ao longo da presente dissertação, a técnica usada para deteção de objetos
foi o SURF (Speeded-Up Robust Features). Apesar da robustez desta técnica no que diz respeito a
alterações de luminosidade, de escala ou de perspetiva, existe sempre uma influência destes
parâmetros no que toca à rapidez e sucesso na deteção do objeto pretendido.
Como tal, foram realizados testes para diferentes condições de ambiente, onde foram
definidos diferentes níveis de luminosidade, escala e perspetiva. Esses testes estão detalhados na
tabela 10. O objeto utilizado nestes testes foi uma lata de Coca-Cola. Importante referir a
subjetividade que possa existir nos termos utilizados para quantificar a luminosidade, mas devido
à falta de um luxímetro, esta foi a solução possível.
Tabela 10 - Resultados dos testes para deteção do objeto
Ensaio Luminosidade Escala (cm) Perspetiva Sucesso Tempo (s)
1 Baixa 25.0 0º SIM 5.20
2 Baixa 60.0 90º SIM 3.80
3 Baixa 95.0 180º SIM 10.30
4 Média 25.0 0º SIM 4.70
5 Média 60.0 90º SIM 3.60
6 Média 95.0 180º SIM 6.90
7 Alta 25.0 0º SIM 2.80
8 Alta 60.0 90º SIM 3.40
9 Alta 95.0 180º SIM 4.60
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
55
Percentagem de sucesso na deteção: 100%
Média de tempo de deteção: 5.03 segundos
Como é possível constatar através da tabela 10, a técnica SURF mostrou-se bastante
robusta, detetando sempre o objeto para diferentes ambientes. Para ambientes não muito
favoráveis, como é o caso dos três primeiros ensaios, o objeto é detetado mas demora algum
tempo para tal. De realçar o ensaio 7, em que o objeto foi detetado em apenas 2.8 segundos.
6.2 Localização
Após o objeto ser detetado, é desejado saber a sua localização. Na tabela 11 são
analisados resultados relativos ao comportamento do sistema para diferentes localizações do
objeto. Nas amostras analisadas, são apresentadas as coordenadas reais do objeto em relação à
câmara e as coordenadas medidas pela mesma. O campo “distância” diz respeito à distância
horizontal do objeto em relação ao início do braço robótico.
Tabela 11 - Resultados dos testes para localização do objeto
Ensaio Distância
(cm)
Reais (cm) Determinadas (cm)
x y z x y z
1 20 n n n n n n
2 25 n n n n n n
3 30
-3.5
-19.7
65.3
-3.9 -19.1 65.7
4 30 -3.4 -19.7 68.7
5 30 -3.5 -20.0 68.6
6 40
0.0
-24.7
77.0
0.0 -25.1 77.5
7 40 0.1 -24.9 77.3
8 40 -0.3 -24.1 72.2
9 50
-12.0
-19.5
83.2
-12.8 -20.1 80.1
10 50 -12.1 -19.9 79.7
11 50 -12.4 -19.5 85.5
12 60
0.0
14.3
91.0
0.3 -14.3 90.8
13 60 0.3 -14.3 90.8
14 60 0.0 -14.5 90.8
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
56
Os testes foram realizados dentro dos parâmetros atrás calculados, ou seja, como o braço
robótico só consegue atingir o objeto para uma distância mínima de 20 cm e máxima de 60 cm,
os testes foram realizados dentro deste intervalo. No entanto, devido ao ângulo de inclinação da
câmara associado à construção do braço robótico, apenas é possível detetar objetos a partir dos
30 cm de distância.
Tabela 12 - Erro médio da leitura da câmara Kinect para cada coordenada
Apesar dos resultados obtidos não serem perfeitos, como demonstra a tabela 12, é
comprovada a boa precisão de leitura da câmara Kinect. Na maioria dos casos, o erro de leitura
não impossibilita o correto posicionamento do braço robótico em relação ao objeto.
6.3 Posicionamento da Base Móvel Omnidirecional
Se o objeto não estiver centrado com o braço robótico articulado, é necessário rodar a
base omnidirecional do robô MARy para que este se centre com o objeto. Para testar a precisão
de rotação da base omnidirecional, foram enviadas várias tramas com diferentes ângulos de
rotação, como é demonstrado na tabela 13. Em todos os casos o braço robótico ficou centrado
com o objeto, por isso este processo não acrescenta erro relevante para resolução do objetivo
final.
Tabela 13 - Testes para posicionamento do robô MARy em relação ao objeto
Ensaio Angulo de Rotação
1 10º
2 20º
3 30º
4 40º
5 50º
6 60º
7 70º
8 80º
9 90º
Erro Médio (%)
X y z
5.70 1.30 2.48
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
57
6.4 Posicionamento do Braço Robótico Articulado
Outro dos componentes do robô MARy que requer uma enorme precisão de controlo é o
braço robótico articulado. Através da leitura dos encoders de cada motor, será processado o ângulo
para cada junta, por isso é necessário calibrar com exatidão cada secção do braço articulado, pois
se o processamento dos ângulos não for executado na perfeição, corre-se o risco da garra
manipuladora não conseguir atingir o objeto. Assim sendo, para determinar o erro de
posicionamento em cada uma das juntas, foram realizados vários testes com diferentes ângulos,
como apresenta a tabela 14.
Tabela 14 - Resultados dos testes para posicionamento do braço robótico articulado
Ensaio Junta Ângulo
desejado Ângulo obtido Erro (%)
1 𝜃1 15° 15° 0.00
2 𝜃1 30° 30° 0.00
3 𝜃1 45° 42° 7.00
4 𝜃1 60° 56° 7.00
5 𝜃1 75° 71° 5.34
6 𝜃1 90° 85° 5.60
7 𝜃2 15° 15° 0.00
8 𝜃2 30° 30° 0.00
9 𝜃2 45° 45° 0.00
10 𝜃2 60° 58° 3.40
11 𝜃2 75° 72° 4.00
12 𝜃2 90° 87° 3.40
13 𝜃3 15° 15° 0.00
14 𝜃3 30° 30° 0.00
15 𝜃3 45° 45° 0.00
16 𝜃3 60° 60° 0.00
17 𝜃3 75° 75° 0.00
18 𝜃3 90° 90° 0.00
Quer para a junta 1, quer para a junta 2, a diferença entre o ângulo real e o ângulo obtido
é incremental, devido a deficiências mecânicas. No entanto, como a amplitude máxima de cada
junta é de 90°, o erro atinge uma diferença máxima de 5°, sendo por isso controlado.
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
58
Além da restruturação mecânica do braço, que melhorará imediatamente os resultados,
a implementação de acelerómetros e giroscópios em cada junta garante uma fiabilidade
praticamente perfeita para controlo das mesmas. Na tabela 15, é apresentado o erro médio em
cada uma das juntas.
Tabela 15 - Erro médio para cada junta
6.5 Testes Finais
Após tudo integrado, foram realizados os ensaios finais para avaliar a fiabilidade de todo
o sistema. De referir que todos os ensaios foram realizados com o objeto (lata de Coca-Cola)
colocado em cima de uma mesa de madeira com uma altura de 74 cm.
O campo “Distância” apresentado na tabela 16 diz respeito à distância desde o início do
braço robótico até ao objeto (Figura 6.1). O campo ”Kinect x” apresenta o valor da coordenada x
lido pela Kinect, coordenada esta que provocará o acionamento da base móvel omnidirecional
para que o braço robótico se centre com o objeto. A percentagem de erro testada situa-se nos
20%, conforme comprovado na tabela 16.
Figura 6.1 - Distância entre braço robótico e objeto
Erro Médio (%)
𝜽𝟏 𝜽𝟐 𝜽𝟑
4.15 1.80 0.00
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
59
Tabela 16 - Testes Finais
Ensaio Sucesso Luminosidade Perspetiva Distância
(cm)
Kinect
x (cm) Observações
1 SIM Baixa 0° 35 0 -
2 SIM Normal 180° 40 5 Objeto foi recolhido mas com alguma deficiência.
3 SIM Alta 0° 45 8 -
4 NÃO Baixa 180° 50 14 Garra manipuladora
posicionada cerca de 2 cm acima do objeto.
5 SIM Normal 0° 55 10 -
6 SIM Alta 180° 60 0 -
7 SIM Baixa 0° 55 7 -
8 SIM Normal 180° 50 18 -
9 SIM Alta 0° 45 10 -
10 NÃO Baixa 180° 40 0 Garra manipuladora
posicionada cerca de 2 cm acima do objeto.
Na Figura 6.2 é mostrado o interface que existe com o utilizador, sendo apresentadas no
terminal do sistema operativo Ubuntu, informações como o número pontos de interesse, o ângulo
que a base omnidirecional tem que rodar para centrar o braço robótico com o objeto, o rácio entre
os outliers e os inliers para garantir o sucesso da deteção do objeto, as coordenadas x, y e z lidas
pela Kinect e referentes à localização do objeto, as coordenadas da garra manipuladora (xB e yB),
assim como o ângulo que cada junta deve tomar, após implementação da cinemática inversa. O
campo “TRAMA” diz respeito à trama que será enviada via biblioteca Boost para ser interpretada
pelo microcontrolador, e que posteriormente acionará os motores com base nas informações da
referida trama.
Deste interface faz também parte a apresentação dos pontos de interesse (inliers), assim
como uma simulação gráfica da posição final do braço robótico após cálculo da cinemática inversa.
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
60
Figura 6.2 - Interface durante execução dos algoritmos
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
61
Capítulo VII
7. Conclusão e Trabalho Futuro
Após conhecimento do objetivo da dissertação e do historial do robô MARy, foi analisado
todo o hardware e software de controlo e reconhecimento de objetos utilizados pelos colegas em
anos anteriores. Devido a algumas viagens e alguns imprevistos, o hardware já não estava nas
suas melhores condições, sendo necessária a reparação de alguns componentes, como será
detalhado seguidamente.
Analisando concretamente o hardware do braço, as suas principais debilidades centravam-
se nas PCB’s que suportavam os módulos de potência para acionamento dos motores. Cada motor
possuía um módulo de potência, e as pistas das PCB’s já estavam bastante fragilizadas.
Inicialmente optou-se por corrigir todas as pistas danificadas e aumentar a robustez dessas pistas,
mas como a margem de tempo para isto se esgotou, optou-se por substituir todos os módulos de
potência e respetivas AVR’s pela placa OMNI-3MD. Esta alteração aumentou o desempenho do
braço robótico e retirou peso a ser suportado pelo braço, diminuindo também significativamente
a quantidade de ligações necessárias para o funcionamento do braço robótico. Foram também
aumentados os graus de liberdade da garra manipuladora, que consequentemente aumentou o
alcance máximo do braço.
Em relação à base móvel omnidirecional, o problema das PCB’s também existia. No
entanto, devido à correção ser mais rápida e para evitar custos, foram corrigidas todas as pistas
danificadas, não sendo necessária alterações a nível de hardware e software.
Relativamente à deteção e localização de objetos, inicialmente foi pensado continuar a
usar o método de redes neuronais artificiais e otimizar o que tinha sido feito pelo colega João
Ferreira, mas essa ideia caiu por terra pois pensou-se que seria mais vantajoso explorar outro
método. Foi utilizado o SURF, que tem como principais vantagens a maior robustez e rapidez em
relação às RNA.
Todas estas alterações foram feitas para otimizar o funcionamento do robô MARy nos seus
3 principais constituintes (braço robótico articulado, base móvel omnidirecional e deteção de
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
62
objetos), mas ainda há coisas a explorar e melhorar. Algumas implementações importantes são
sugeridas:
Inclusão de acelerómetros e giroscópios para cada uma das juntas, para determinar o
grau com precisão e eliminar o erro incremental existente;
Criar um algoritmo para deteção de planos (p.e. mesa), e assim impedir que o braço
robótico embata contra o respetivo plano;
Criar um algoritmo para detetar obstáculos que bloqueiem a correta execução da
cinemática do braço robótico
Substituir as três placas controladoras da base móvel omnidirecional pela OMNI-3MD
Analisando por fim o desfecho desta dissertação, foram cumpridos os objetivos propostos
inicialmente, habilitando assim o robô MARy de poder executar serviços como detetar, localizar e
manipular objetos através de técnicas e equipamentos de vanguarda. O objetivo do LAR é continuar
com a investigação na área de robótica de serviços através do robô MARy, por isso esta dissertação
ajudou a percorrer esse caminho e a dar mais um passo em frente, para que num futuro mais ou
menos longínquo seja possível ao LAR e à Universidade do Minho competir nesta área com os
melhores do mundo.
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
63
Referências
[1] K. Čapek, Rossum's Universal Robots, Praga: Aventinum, 1920.
[2] I. Asimov, I, Robot, Gnome Press, 1950.
[3] TS60 SCARA Robot. Disponível em: http://www.staubli.com/en/robotics/6-axis-scara-
industrial-robot/low-payload-6-axis-scara-robot/ts60/. Consultado em: 10/09/13
[4] Scope. Disponível em: http://www.ieee-ras.org/agricultural-robotics.
Consultado em: 10/09/13
[5] K10 Black. Disponível em:
http://www.nasa.gov/mission_pages/station/research/news/rover_from_space/.
Consultado em: 10/09/13
[6] Fishoplane. Disponível em: http://spectrum.ieee.org/automaton/robotics/industrial-
robots/submersible-robotic-fishoplane-can-swim-for-hundreds-of-kilometers.
Consultado em: 11/09/13
[7] iRobot Roomba 790. Disponível em: http://store.irobot.com/. Consultado em: 11/09/13
[8] Bomb Robot. Disponível em: http://www.dreamstime.com/stock-photography-bomb-robot-2-
image4464312. Consultado em: 11/09/13
[9] International Federation of Robotics. Disponível em: http://www.ifr.org/service-robots/.
Consultado em: 20/09/13
[10] Bill Gates. A robot in every home. Scientific American, December 2006.
[11] RoboCup@home. Disponível em: http://www.robocupathome.org/.
Consultado em: 29/09/13
[12] Jorg Stuckler, David Droeschel, Kathrin Grave, Dirk Holz, Michael Schreiber, e Sven Behnke,
"Nimbro@Home 2013 Team Description", Bonn, Germany, 2013.
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
64
[13] Jorg Stuckler, Michael Schreiber, e Sven Behnke. Dynamaid, "An anthropomorphic
robot for research on domestic service applications". ECMR’09, páginas 88–92, Setembro
2009.
[14] Sick Sensor Intelligence. Disponível em: http://www.sick.com.
[15] Acroname Robotics. Disponível em: http://www.acroname.com.
[16] Point Grey. Disponível em: http://www.ptgrey.com.
[17] Jorg Stuckler, David Droeschel, Kathrin Grave, Dirk Holz, Michael Schreiber, e Sven Behnke,
"Nimbro@Home 2013 Team Description", Bonn, Germany, 2013.
[18] Xiaoping Chen et al., “KeJia Project: Towards Integrated Intelligence for Service Robots”,
Technical Report, USTC-CS-MAS-2011-H1, Multi-Agent Systems Lab., Department of
Computer Science of China, HeFei, China, 2011.
[19] Rui Manuel Gomes da Silva. Design e construção de um robot antropomórfico. Tese de
mestrado, Universidade do Minho, 2008.
[20] Intelligent Robots and Systems. Disponível em: http://www.iros2012.org/
[21] Edge OWI-535. Disponível em: http://www.owirobots.com/. Consultado em: 22/09/13
[22] Katana. Disponível em: http://robots.net/article/2700.html. 22/09/13
[23] TX200. http://www.staubli.com/en/robotics/6-axis-scara-industrial-robot/heavy-payload-
robot/6-axis-industrial-robot-tx200/. 22/09/13
[24] Lowe, David G. (1999). Object recognition from local scale-invariant features. Proc. 7th
International Conference on Computer Vision (ICCV'99) (Corfu, Greece): 1150-1157.
[25] Lindeberg, T. 1994. Scale-space theory: A basic tool for analysing structures at different
scales. Journal of Applied Statistics, 21(2):224-270.
[26] Herbert Bay, Andreas Ess, Tinne Tuytelaars, Luc Van Gool, "SURF: Speeded Up Robust
Features", Computer Vision and Image Understanding (CVIU), Vol. 110, No. 3, pp. 346--
359, 2008
Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect
65
[27] C. Harris and M. Stephens (1988). "A combined corner and edge detector". Proceedings of
the 4th Alvey Vision Conference. pp. 147–151.
[28] Martin A. Fischler and Robert C. Bolles. (June 1981). "Random Sample Consensus: A
Paradigm for Model Fitting with Applications to Image Analysis and Automated Cartography".
[29] Gary Bradski e Adrian Kaehler. Learning OpenCV - Computer Vision with the OpenCV
Library. O’REILLY media, 2008.
[30] OpenNI organization. OpenNI User Guide, November 2010. Disponível em:
http://www.openni.org/documentation
[31] Fernando Ribeiro, Gil Lopes, Davide Oliveira, Fátima Gonçalves, e Júlio Rodrigues.
Minho@home team description paper. Robocup@home, 2010.
[32] Davide Jorge Pereira Novais de Oliveira, “Braço robótico manipulador para
aplicação em robô de serviços”, Universidade do Minho, Portugal, Setembro 2010.
[33] The C++ Standards Committee. 2 July 2003. Retrieved 1 February 2012.
[34] Júlio António da Costa Rodrigues, “Plataforma Omnidireccional para Robô de Serviços em
Casa”, Universidade do Minho, Portugal, Setembro 2010.