ricardo jorge barbosa silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico...

89
outubro de 2013 Universidade do Minho Escola de Engenharia Ricardo Jorge Barbosa Silva Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect UMinho|2013 Ricardo Jorge Barbosa Silva Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect

Upload: trankien

Post on 25-Dec-2018

220 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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

tico

pa

ra D

ete

ção

e M

an

ipu

laçã

o d

e O

bje

tos

uti

liza

nd

o a

ma

ra K

ine

ct

Page 2: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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

Page 3: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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: ________________________________________________

Page 4: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect

ii

Page 5: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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

Page 6: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect

iv

Page 7: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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.

Page 8: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect

vi

Page 9: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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

Page 10: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect

viii

Page 11: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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

Page 12: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect

x

Page 13: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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

Page 14: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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

Page 15: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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

Page 16: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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

Page 17: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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

Page 18: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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

Page 19: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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

Page 20: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect

xviii

Page 21: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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

Page 22: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

Sistema Robótico para Deteção e Manipulação de Objetos utilizando a Câmara Kinect

xx

Page 23: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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

Page 24: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas
Page 25: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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].

Page 26: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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.

Page 27: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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.

Page 28: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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.

Page 29: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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]

Page 30: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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.

Page 31: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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]

Page 32: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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.

Page 33: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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

Page 34: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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

Page 35: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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.

Page 36: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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.

Page 37: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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.

Page 38: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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).

Page 39: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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.

Page 40: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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.

Page 41: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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)

Page 42: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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

Page 43: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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.

Page 44: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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

Page 45: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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

Page 46: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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:

Page 47: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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]

Page 48: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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

Page 49: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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”;

Page 50: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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.

Page 51: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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

Page 52: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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.

Page 53: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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.

Page 54: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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

Page 55: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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

Page 56: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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

Page 57: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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

Page 58: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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

Page 59: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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.

Page 60: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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.

Page 61: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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.

Page 62: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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)

Page 63: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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.

Page 64: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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

Page 65: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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)

Page 66: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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

Page 67: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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).

Page 68: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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.

Page 69: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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.

Page 70: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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)

Page 71: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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

Page 72: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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

Page 73: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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.

Page 74: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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

Page 75: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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

Page 76: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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

Page 77: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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

Page 78: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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

Page 79: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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

Page 80: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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

Page 81: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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.

Page 82: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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

Page 83: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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.

Page 84: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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

Page 85: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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

Page 86: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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.

Page 87: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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.

Page 88: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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

Page 89: Ricardo Jorge Barbosa Silvaintranet.dei.uminho.pt/gdmi/galeria/temas/pdf/52692.pdf · robótico pode ser muito útil para a manipulação de objetos onde, para certas pessoas, essas

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.