Controlo Visual de Robôs Manipuladores Engenharia Mecânica

95
Controlo Visual de Robôs Manipuladores Utilizando um Sistema de Visão Estéreo Pedro Miguel Marques dos Santos Silva Dissertação para obtenção do Grau de Mestre em Engenharia Mecânica Júri Presidente: Doutor José Manuel Gutierrez Sá da Costa Orientador: Doutor João Rogério Caldas Pinto Co-Orientador: Doutor Jorge Manuel Mateus Martins Vogais: Doutor Paulo Jorge Sequeira Gonçalves Maio de 2008

Transcript of Controlo Visual de Robôs Manipuladores Engenharia Mecânica

Page 1: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

Controlo Visual de Robôs Manipuladores

Utilizando um Sistema de Visão Estéreo

Pedro Miguel Marques dos Santos Silva

Dissertação para obtenção do Grau de Mestre em Engenharia Mecânica

Júri Presidente: Doutor José Manuel Gutierrez Sá da Costa Orientador: Doutor João Rogério Caldas Pinto Co-Orientador: Doutor Jorge Manuel Mateus Martins Vogais: Doutor Paulo Jorge Sequeira Gonçalves

Maio de 2008

Page 2: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

2

Resumo

Na presente tese é abordado o controlo visual de robôs manipuladores em tempo real, tendo

como objectivo a intercepção de objectos em movimento na área de trabalho do robô.

É utilizado um sistema de visão estéreo numa configuração Eye-to-Hand, que permite

identificar o objecto e determinar a sua posição espacial utilizando algoritmos de reconstrução

3D.

Desenvolveram-se duas aplicações do sistema de visão para interceptar uma bola na zona de

trabalho do robô:

Versão Tracking – o sistema de visão calcula as coordenadas 3D da bola, em cada instante

de captura das imagens e envia-as para o anel de controlo do robô como sendo as

coordenadas do ponto final da trajectória a executar pelo robô.

Versão Previsão – o sistema de visão faz a reconstrução 3D da trajectória do objecto com

base nos últimos pontos obtidos da trajectória e nas leis físicas do movimento. De seguida,

determina o ponto de intercepção da trajectória do objecto com um plano na área de trabalho

do robô. As coordenadas deste ponto são enviadas para o anel de controlo do robô como

sendo as coordenadas do ponto final da trajectória a executar pelo robô.

Com novos pontos da trajectória da bola, o ponto de intercepção com o plano é rectificado.

Para a actuação do manipulador Puma 560, utilizado neste projecto, é efectuado um controlo

de posição. O planeamento de trajectórias é recalculado sempre que são recebidos novos

dados do sistema de visão, desta forma, o robô inicia suavemente uma nova trajectória sem ter

terminado a anterior.

Palavras-Chave: Controlo Visual, Robô Manipulador, Visão Estéreo, Seguimento, Previsão,

Tempo Real.

Page 3: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

3

Abstract

In this thesis, real time visual control of a robotic manipulator is discussed with the goal of

intercepting moving objects within the robot’s work space.

A stereo vision system placed in an Eye-to-Hand configuration is used in order to identify the

object, as well as to determine its spatial position using 3D reconstruction algorithms.

Two different applications of this system have been developed with the same aim of intercepting

a ball within the robot’s work space:

Tracking mode: the vision system calculates the ball’s coordinates the instant each image is

captured and sends them to the robot’s control loop as the coordinates of the final point of the

robot’s trajectory.

Prediction mode: the vision system makes the 3D reconstruction of the ball’s trajectory based

on the last points obtained by the cameras and the laws of movement. Afterwards, it determines

the intersection point of that trajectory with a plane in the robot’s work space. . That point’s

coordinates are sent to the robot’s control loop as the coordinates of the final point of the robot’s

current trajectory. As it receives new information regarding the trajectory, the system adjusts the

interception point.

The control used on the Puma 560 manipulator is a position control loop system. The trajectory

planning is recalculated every time a new set of data is received through the vision system. As a

result, the robot is able to start a new trajectory without having finished the previous one.

Key-Words: Visual Control, Robot Manipulator, Stereo Vision, Tracking, Prediction, Real Time

Page 4: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

4

Agradecimentos

A concretização desta dissertação não teria sido possível sem o apoio de um grupo de pessoas

às quais estou sinceramente agradecido.

Em primeiro lugar agradeço ao Professor Doutor João Rogério Caldas Pinto, o meu orientador

científico, pelo empenho na orientação do trabalho aqui apresentado, pela motivação e

confiança depositada na minha pessoa.

Aos meus professores co-orientadores Professor Doutor Jorge Manuel Mateus Martins e

Professor Doutor Paulo Jorge Sequeira Gonçalves, pela orientação nas suas áreas de domínio.

Ao meu colega e amigo Bruno Santos por toda a ajuda na resolução de conflitos com threads

no software desenvolvido para a captação de imagem, pela ajuda na reestruturação do anel de

controlo utilizando memórias para realimentar as variáveis, pela orientação na utilização do

modelo virtual do Puma e pelo entusiasmo que transmitiu.

À empresa Hidromac pela construção da placa de suporte do sistema de visão par estéreo.

Aos meus colegas de laboratório e amigos, dos quais saliento Camilo Christo, Alexandre Paris,

Pedro Teodoro, Edwin Carvalho, Pedro Morgado, Tiago Teixeira, Miguel Couto, por todo o

apoio e ajuda.

Ao engenheiro António Miguel Pires e ao seu irmão Tiago Pires pela colaboração na montagem

de uma placa para o envio do sinal de trigger das câmaras, por porta paralela.

Aos meus pais e irmãos, pela motivação e apoio nos momentos decisivos.

À minha namorada Verónica e aos meus amigos mais chegados: Marco, Luís, Miguel, Sara,

Rodrigo, por me aturarem.

Page 5: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

5

Índice

1. INTRODUÇÃO .......................................................................................................................... 1

1.1 MOTIVAÇÃO........................................................................................................................... 1

1.2 CONTRIBUIÇÕES.................................................................................................................... 2

1.3 ORGANIZAÇÃO DA TESE ......................................................................................................... 3

2. ENQUADRAMENTO TEÓRICO ............................................................................................... 4

2.1 VISÃO COMPUTACIONAL......................................................................................................... 5

2.1.1 Conceitos Gerais de Visão .......................................................................................... 5

2.1.2 Modelo Pin-hole........................................................................................................... 7

2.1.3 Coordenadas do ponto m em pixels a partir das coordenadas do ponto P em mm ... 8

2.2 RECONSTRUÇÃO 3D............................................................................................................ 10

2.2.1 Determinação das coordenadas do ponto P - Geometria Epipolar........................... 10

2.2.2 Método dos Mínimos Quadrados .............................................................................. 13

2.3 SEGUIMENTO VISUAL E PREVISÃO DE TRAJECTÓRIAS ............................................................ 14

2.3.1 Trajectória de um projéctil ......................................................................................... 15

2.3.2 Trajectória de um pêndulo planar.............................................................................. 17

2.3.3 Trajectória de uma rampa ......................................................................................... 19

2.4 CONCEITOS DE ROBÓTICA ................................................................................................... 20

2.4.1 Robô Manipulador: Puma 560................................................................................... 20

2.4.2 Cinemática................................................................................................................. 22

2.4.3 Planeamento de Trajectórias para o Robô................................................................ 28

2.4.4 Controlador PD .......................................................................................................... 31

2.4.5 Posicionamento espacial Robô - Par Estéreo ( Configuração Eye-to-Hand)............ 32

3. IMPLEMENTAÇÃO DO SISTEMA DE VISÃO ESTÉREO .................................................... 35

3.1 LIGAÇÕES ENTRE O SETUP EXPERIMENTAL ........................................................................... 35

3.2 ALGORITMO DO PROJECTO .................................................................................................. 36

3.3 HARDWARE SELECCIONADO................................................................................................. 39

3.3.1 Par Estéreo................................................................................................................ 39

3.3.2 Placa de Sinal Trigger Externo.................................................................................. 40

3.4 SOFTWARE DESENVOLVIDO ................................................................................................. 42

3.4.2 Inter-ligação entre software das câmaras uEye e as bibliotecas do OpenCV .......... 42

3.5 CALIBRAÇÃO ....................................................................................................................... 45

3.5.1 Calibração das câmaras individualmente - Parâmetros Intrínsecos ......................... 45

3.5.2 Calibração do par Stéreo - Parâmetros extrínsecos ................................................. 49

3.6 TRATAMENTO DE IMAGEM .................................................................................................... 51

3.6.1 Luminosidade ............................................................................................................ 51

3.7 TEMPO DE EXECUÇÃO DO SISTEMA DE VISÃO ........................................................................ 53

Page 6: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

6

3.8 Aplicação Desenvolvida do Sistema de Visão ............................................................. 55

3.9 COMUNICAÇÃO VIA UDP...................................................................................................... 57

4. SIMULAÇÕES......................................................................................................................... 58

4.1 RECONSTRUÇÃO DE TRAJECTÓRIAS EM SIMULAÇÃO.............................................................. 58

4.2 TESTE DE COMUNICAÇÃO UDP E VERIFICAÇÃO DA CINEMÁTICA INVERSA ................................ 61

4.3 MODELO VIRTUAL DO ROBÔ PUMA ....................................................................................... 62

5. CONTROLO DO ROBÔ EM SIMULINK................................................................................. 63

6. RESULTADOS EXPERIMENTAIS ......................................................................................... 66

6.1 RESULTADOS DA CALIBRAÇÃO ............................................................................................. 66

6.2 RESULTADOS DO CONTROLO DE JUNTA................................................................................. 67

6.2.1 – Versão Tracking...................................................................................................... 67

6.2.2 – Versão Previsão ..................................................................................................... 74

7. CONCLUSÕES E TRABALHOS FUTUROS ......................................................................... 77

7.1 TRABALHOS FUTUROS ......................................................................................................... 79

8. REFERÊNCIAS BIBLIOGRÁFICAS ...................................................................................... 80

ANEXO 1 - NOÇÕES BÁSICAS E NOTAÇÃO UTILIZADA EM REFERENCIAIS ................... 82

ANEXO 2 - TRANSFORMAÇÃO GENERALIZADA.................................................................. 83

ANEXO 3 – MATRIZES DA CINEMÁTICA DO ROBÔ.............................................................. 84

ANEXO 4 – FICHEIRO COM PARÂMETROS DE CAPTAÇÃO OPTIMIZADOS ..................... 85

ANEXO 5 – FORMATO BAYER................................................................................................. 86

Page 7: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

7

Índice das Figuras

Figura 1 – Separação da luz branca nas diferentes cores que a integram formando um espectro contínuo

de cores.................................................................................................................................................6

Figura 2 - Esquematização de uma imagem digital ......................................................................................6

Figura 3 - Sistema de cores RGB. ................................................................................................................6

Figura 4 - Modelo Pin-hole. .........................................................................................................................7

Figura 5 – Esquematização do plano da imagem .........................................................................................7

Figura 6 – Mudança de sistema de coordenadas de mm para pixels e mudança da origem do referencial. .9

Figura 7 – Intercepção das duas rectas no Espaço......................................................................................12

Figura 8 – Falha na intersecção das duas rectas no Espaço. .......................................................................13

Figura 9 – Trajectória de um projéctil. .......................................................................................................15

Figura 10 – Erro no cálculo do ponto de intercepção com o plano ............................................................17

Figura 11 – Trajectória de um Pêndulo. .....................................................................................................17

Figura 12 – Trajectória de uma rampa........................................................................................................19

Figura 13 – Esquema dos graus de liberdade do robô manipulador Puma 560. .........................................21

Figura 14 – Esquematização do punho de Euler do robô, na configuração q5=0.......................................21

Figura 15 – Sistema de referenciais do manipulador Puma 560. [9] ..........................................................24

Figura 16 – Distância entre o centro do elemento terminal e o centro do punho. ......................................26

Figura 17 – Mudança para o referencial de Peter Corke. ...........................................................................26

Figura 18 – Modelo tridimensional da área operacional do Puma 560 com um corte de 90º para melhor

visualização. .......................................................................................................................................27

Figura 19 – Diagrama de blocos do Controlador PD..................................................................................31

Figura 20 - Visualização da posição das câmaras relativamente ao robô. ..................................................33

Figura 21 - Rotação efectuada do referencial da base do puma para o referencial da câmara esquerda ....34

Figura 22 – Ligações entre os componentes do Setup experimental. .........................................................35

Figura 23 – Algoritmo do Projecto.............................................................................................................36

Figura 24 – Esquema de Tracking..............................................................................................................37

Figura 25 – Esquema de Previsão...............................................................................................................38

Figura 26 – Câmara uEye. ..........................................................................................................................39

Figura 27 - Esquema de ligação da câmara ao computador por USB 2.0...................................................40

Figura 28 – Placa de suporte do par estéreo. ..............................................................................................40

Figura 29 - Placa de ampliação do sinal de trigger externo .......................................................................41

Figura 30 – Esquema da placa de Hardware criada para ampliar o sinal de trigger externo......................41

Figura 31 - Esquema da sequência de operações no modo trigger.............................................................43

Figura 32 – Objecto utilizado para calibrar as câmaras. .............................................................................45

Figura 33 – Toolbox Calib do MATLAB...................................................................................................46

Figura 34 – Conjunto de fotografias utilizado para determinar os parâmetros intrínsecos das câmaras. ...46

Figura 35 – Imagem tridimensional das várias posições captadas do objecto, calibração dos parâmetros

intrínsecos da câmara. ........................................................................................................................46

Page 8: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

8

Figura 36 – Erro em Pixels associado à distorção da imagem 2 para cada “nó da malha” do nosso objecto.

............................................................................................................................................................48

Figura 37 - Erro em Pixel associado à distorção para todos os nós de todas as 25 imagens do objecto, Um

erro máximo de 6 pixels nas extremidades da imagem. .....................................................................48

Figura 38 – Imagem original e após a eliminação da distorção..................................................................49

Figura 39 – Visualização da calibração dos parâmetros extrínsecos para uma distância média do objecto

de 0.5 metros. .....................................................................................................................................49

Figura 40 – Visualização da calibração dos parâmetros extrínsecos para uma distância média do objecto

de 1,6 metros. .....................................................................................................................................50

Figura 41 – Testes de Iluminação...............................................................................................................52

Figura 42 –Optimização dos parâmetros de contraste e do balanço de cores na imagem. .........................52

Figura 43 – Tempo de execução de um ciclo do sistema de visão .............................................................55

Figura 44 – Janela criada para visualização do sistema de visão................................................................56

Figura 45 – Menu inicial para introdução dos dados da trajectória. ...........................................................58

Figura 46 – Mensagem de aviso no caso de o ponto não ser captado pela câmara. ...................................59

Figura 47 –Visualização dos pontos da trajectória gerados nas duas imagem . .........................................59

Figura 48 – Visualização da trajectória 3D e do ponto de intercepção.......................................................60

Figura 49 – Janela criada para mostrar os dados obtidos na simulação......................................................60

Figura 50 – Bloco criado para testar a comunicação via UDP e verificar a cinemática inversa.................61

Figura 51 – Visualização das coordenadas da bola num movimento aleatório. .........................................61

Figura 52 – Puma 560 no mundo virtual com a incorporação da bola. ......................................................62

Figura 53 – Bloco Principal com o botão se segurança: Mover/Parar........................................................63

Figura 54 –Bloco principal do Controlo de Posição das Juntas..................................................................63

Figura 55 – Bloco onde é inicializado o temporizador. ..............................................................................64

Figura 56 – Bloco que permite fazer o reset ao temporizador sempre que recebe uma nova posição final

do sistema de visão. ............................................................................................................................64

Figura 57 – Bloco onde é calculado o tempo em função da distância a percorrer......................................65

Figura 58 – Posição tridimensional dos pontos reais e dos pontos dados pelo sistema de visão................67

Figura 59 – Coordenadas do elemento terminal do robô e da bola para a actuação do robô na versão

Tracking. ............................................................................................................................................68

Figura 60 - Coordenadas do elemento terminal do robô com avanço no tempo de 0.25 segundos e da bola

no instante actual. ...............................................................................................................................68

Figura 61 – Pormenor das trajectórias entre os instantes 171 e 178 segundos. ..........................................69

Figura 62 – Reconstrução 3D da trajectória do robô e da bola para a trajectória anterior..........................70

Figura 63 - Pormenor das trajectórias entre os instantes 171 e 178 segundos, com 0.25 segundos de

avanço na trajectória do robô..............................................................................................................70

Figura 64 – Análise do erro de posição entre a bola e a posição do elemento terminal do robô. ...............71

Figura 65 – Análise do erro de posição entre a bola e a posição do elemento terminal do robô com um

avanço de 0.25 segundos. ...................................................................................................................71

Figura 66 – Velocidades do elemento terminal do robô. ............................................................................72

Page 9: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

9

Figura 67 – Módulo da velocidade do elemento terminal do robô. ............................................................72

Figura 68 - Coordenadas do elemento terminal do robô e da bola para a actuação do robô na versão

Tracking (2º exemplo) ........................................................................................................................73

Figura 69 - Reconstrução 3D da trajectória do elemento terminal do robô e da bola para a trajectória do

gráfico anterior (2º exemplo) ..............................................................................................................73

Figura 70 – Posição da bola no movimento de um projéctil.......................................................................74

Figura 71 – Estimativa do ponto de intercepção com o plano y=-50 [cm].................................................75

Figura 72 – Intervalo de tempo entre duas captações de imagens consecutivas.........................................75

Figura 73- Estimativa do tempo final, do instante actual até ao instante de intercepção da trajectória da

bola com o plano. ...............................................................................................................................76

Figura 74 – Pontos determinados pelo sistema de visão, estimativa do ponto de intercepção da trajectória

da bola com o plano y=-50 [cm].........................................................................................................76

Figura 75 – Esquematização de uma rotação RPY.....................................................................................83

Figura 76 – Esquematização da rotação de Euler. ......................................................................................83

Figura 77 – Padrão do Filtro Bayer, utilizado pelas câmaras uEye [12]também por GRGB. ....................86

Figura 78 – Padrão do Filtro Bayer, utilizado pelas câmaras uEye [12] ....................................................86

Page 10: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

1

1. Introdução

Nesta dissertação considera-se o problema da manipulação, em tempo real, de objectos em

movimento no espaço. É estudada a interacção entre um robô manipulador e um objecto em

movimento, utilizando meramente a informação visual sobre o meio envolvente do robô para o

controlo da sua actuação. O sistema de visão utilizado é um sistema estéreo que permite

determinar a posição tridimensional do objecto a partir de um processo designado de

reconstrução 3D de um ponto1.

Neste projecto foi ainda desenvolvida uma técnica de previsão da trajectória do objecto, um

pouco à semelhança do que acontece com o ser humano que consegue prever a

movimentação de um objecto baseando-se nas leis da física e na análise visual do movimento

alguns instantes antes.

Para testar o robô manipulador na execução desta tarefa, foi desenvolvida uma aplicação cujo

objectivo é apanhar uma bola que seja atirada de forma aleatória para a área de trabalho do

robô. Com base nas leis da física e na análise visual do movimento do objecto, o robô terá de

prever um ponto no espaço onde poderá interceptar a bola.

A complexidade deste problema prende-se não só na precisão dos cálculos como também com

a rapidez de execução, em tempo real, do processamento da informação visual e da actuação

do robô manipulador.

1.1 Motivação

Dotar os robôs com a capacidade de interagir com objectos em movimento, presentes no seu

meio envolvente, tem sido um desafio aliciante para os investigadores na área da robótica, em

especial para a comunidade de visão computacional que tem desenvolvido grandes progressos

neste sentido. Contribuir para que, num futuro próximo, algumas tarefas complexas possam ser

realizadas por robôs, como o caso de uma operação cirúrgica, em que o médico possa ter o

papel de supervisor durante a cirurgia, é bastante cativante.

Controlar a actuação de um robô com base na informação da trajectória tridimensional do

objecto em movimento tem um vasto horizonte de aplicações começando nas linhas de

montagem de grandes indústrias, passando pelos electrodomésticos, pela medicina, pela

detecção visual de falhas, reposição de stocks, pelas máquinas de carácter recreativo, etc.

1 O termo de Reconstrução 3D está, normalmente, associado a uma operação mais

abrangente de reconstrução de um objecto utilizando uma malha de pontos, no entanto, neste

trabalho ao mencionar-se a reconstrução 3D de um ponto, referimo-nos ao caso particular de

estimar as coordenadas no espaço de um único ponto.

Page 11: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

2

Ao desafio de interligar os conhecimentos adquiridos de robótica de manipulação, de

processamento de imagem, de geometria, de física, de electrónica, de programação e de

controlo num mesmo projecto, foi acrescentada uma ambição de inovar e de adquirir novos

conhecimentos, necessários à realização deste projecto.

1.2 Contribuições

Foi implementado, pela primeira vez, um sistema de visão estéreo no laboratório de

Automação e Robótica do Departamento de Engenharia Mecânica.

Desenvolveu-se software em C++ que permite obter a posição tridimensional de um objecto em

movimento no espaço de trabalho do robô.

Neste software foram geradas duas aplicações: uma versão que indica a posição do objecto

em relação ao referencial base do robô, e outra que prevê a trajectória do objecto e estima o

ponto de intercepção da trajectória do objecto com um plano na área de trabalho do robô

(plano esse estipulado à partida pelo utilizador).

Foi criada uma simulação deste mesmo software em MATLAB (sem a captura das imagem),

com várias vertentes:

1. Gerar as imagens captadas durante o movimento recriando virtualmente o lançamento de

um projéctil.

2. Reconstruir a trajectória tridimensional do objecto com base nas imagens geradas

virtualmente, calculando o ponto de intercepção da trajectória do objecto com um plano na área

de trabalho do robô.

3. Mudar a disposição das câmaras entre si podendo determinar a zona do espaço captada

simultaneamente por ambas as câmaras.

Procedeu-se a uma reestruturação das aplicações, em MATLAB, do controlo de posição do

manipulador Puma 560, eliminando problemas de segurança e aumentando a flexibilidade e

eficácia das mesmas.

Foi reformulada a cinemática inversa de posição - determinar a configuração de juntas do robô

que permite ao elemento terminal deslocar-se para as coordenadas cartesianas calculadas

pelo sistema de visão.

O controlo por posição existente partia do pressuposto de que o robô iniciava a trajectória em

repouso. Foram criados dois novos planeamentos de trajectórias (ciclóide e polinomial de 4ª

ordem) que permitem ao robô efectuar uma nova trajectória sem ter terminado a anterior, ou

seja, ainda em movimento.

Page 12: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

3

Foi ligado o programa criado de Controlo de Posição do Puma ao simulador em realidade

virtual do Puma, permitindo ter uma versão virtual do Puma a actuar de acordo com a

informação obtida em tempo real, do sistema de visão real.

Foi efectuada a substituição das comunicações anteriormente realizadas por porta RS-232, por

comunicações por cabo de rede, utilizando comunicação UDP, ligando os dois programas: o do

sistema de visão (em C++) e o do controlo do Puma 560 (em MATLAB / Simulink), permitindo

ter a simulação em realidade virtual e o Puma real a funcionar ao mesmo tempo em tempo real,

em computadores diferentes com os mesmos dados fornecidos pelo computador da visão por

cabo de rede.

1.3 Organização da Tese

Esta tese começa por introduzir, no capítulo 2, os conceitos teóricos necessários à

reconstrução 3D de um ponto, ao seguimento visual em tempo real, analisando, seguidamente,

a reconstrução de trajectórias de objectos em movimento. Ainda neste capítulo são abordados

os conceitos fundamentais de robótica necessários para a correcta actuação do robô

manipulador.

No capítulo 3, é explicado o software e o hardware desenvolvidos para a captação das

imagens do sistema de visão, é descrito o setup experimental, as ligações entre os

componentes, as principais funções dos componentes e as características mais relevantes

para o projecto. É apresentada a calibração das câmaras, os resultados de posicionamento no

espaço e de tempos de execução do programa de visão (tempo de aquisição de imagem e

realização dos cálculos de reconstrução 3D). É ainda apresentada a aplicação gerada em C++.

No capítulo 4, são apresentadas as simulações criadas em MATLAB e em realidade virtual com

o modelo virtual do Puma. No capítulo 5, serão explicados os principais blocos em Simulink

que permitem o controlo do robô manipulador Puma 560.

Os resultados experimentais serão apresentados no capítulo 6.

Por fim, apresentam-se as conclusões do trabalho no capítulo 7 e os trabalhos futuros

propostos, no capítulo 8.

Page 13: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

4

2. Enquadramento Teórico

A manipulação de objectos em tempo real, com base na informação visual do espaço

envolvente do robot, não é uma área de investigação recente. No entanto, com a evolução

tecnológica, tanto a nível de hardware, como de software, a aplicabilidade dos projectos

desenvolvidos aumentou exponencialmente. O objectivo de criar um robô que imite ou mesmo

supere o ser humano na execução de algumas tarefas mais complexas e rápidas, com um grau

de precisão elevado, tornou-se atingível, consequentemente o interesse nesta área da ciência

é visivelmente crescente.

Da pesquisa bibliográfica efectuada sobre o desenvolvimento da ciência neste âmbito,

salientam-se os projectos com o mesmo objectivo que o aqui exposto (interceptar uma bola no

espaço) [1] [2], e os projectos que utilizem sistemas de visão estéreo para realizarem as mais

diversificadas tarefas em tempo real, tais como: jogar ping-pong [3] [4][5], operações cirúrgicas

[6], helicóptero autónomo [7].

Primeiramente, no que diz respeito à tarefa de intercepção da bola em movimento livre no

espaço, os exemplos mencionados na bibliografia mostram que a complexidade do problema

prende-se com a rapidez de execução dos movimentos em tempo real e a precisão na medição

de distâncias.

Sendo uma tarefa semelhante à anterior, muitas vezes a prática de ping-pong é considerada

como o passo seguinte na evolução deste tipo de tecnologias. Nos projectos pesquisados com

esta finalidade, o movimento da bola é analisado com base no ponto de intercepção da bola

com a mesa, sabendo que a complexidade aumenta, pois a orientação da raquete e a precisão

do instante de intercepção é decisiva na execução da tarefa.

A realização de operações cirúrgicas utilizando robôs controlados por visão encontra-se numa

fase de crescente evolução. Esta é uma das áreas onde se esperam maiores

desenvolvimentos num futuro próximo, devido à forte procura e aplicação prática deste tipo de

tecnologias no âmbito da cirurgia médica (já existem sistemas de visão estéreo com elevado

grau de precisão desenvolvidos para estes projectos). Este domínio reveste-se de grande

importância, na medida em que altera o conceito de operação cirúrgica, na medida em que

permite ao cirurgião ultrapassar limitações físicas.

No domínio da detecção e desvio de obstáculos foi referido na bibliografia o caso de um

helicóptero que durante um voo estável consegue, através de um sistema de visão estéreo,

detectar objectos presentes na sua trajectória de voo e tenta contorná-los.

Pela pesquisa bibliográfica efectuada constatou-se uma globalização dos projectos de controlo

de sistemas robóticos por visão. Nesta área da ciência verifica-se que os limites das aplicações

anteriormente desenvolvidas estão constantemente a ser ultrapassados por novas aplicações.

Page 14: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

5

No âmbito de reconstrução 3D são frequentemente utilizados algoritmos complexos de

reconstrução 3D baseados na matriz fundamental (F) ou na matriz essencial (E) [7], [8] e [9],

estes métodos de determinação da posição espacial embora sejam mais robustos envolvem

um elevado peso computacional. A determinação de distâncias com base na dimensão do

objecto é também uma opção viável tanto em projectos com visão monocular como em projecto

de visão estéreo basta que os objectos tenham dimensões conhecidas. No caso de visão

monocular é também usual limitar o movimento do objecto a um plano [10].

Na previsão do movimento de objectos são normalmente utilizados Filtros de Kalman [11] ou

Filtros de Partículas para estimar a dinâmica do sistema em instantes futuros (posição e

velocidade), neste projecto optou-se por estimar a velocidade da bola e interpretar o

movimento como sendo um movimento conhecido à priori (um projéctil, um pêndulo planar ou

escorregamento numa rampa).

No controlo de juntas os controladores Fuzzy [12], PID ou PI são também normalmente

utilizados.

2.1 Visão Computacional

Com a evolução das diversas aplicações no mundo da robótica, surgiu a necessidade de criar

sensores que fornecessem a informação necessária para o robô poder interagir de forma

harmoniosa com o seu meio envolvente.

À semelhança do ser humano, o sensor de visão é o que reúne as melhores características

para assegurar o correcto desempenho na execução de tarefas como deslocações no espaço,

identificação e manipulação de objectos. Ao munir o robô de um sistema de visão artificial,

fornecemos a capacidade de adaptação deste, a um meio envolvente mutável, um ambiente de

trabalho não estruturado.

No entanto é preciso saber interpretar a informação dada pelo sistema de visão, e moldá-la de

forma a que a actuação do robô seja a mais autónoma possível. A ciência que estuda a

interpretação da informação do sistema de visão é normalmente designada por Visão

Computacional.

Neste capítulo, são expostas as bases físicas, matemáticas e geométricas necessárias à

criação do sistema de visão artificial implementado no projecto para controlar o robô.

2.1.1 Conceitos Gerais de Visão

Luz – é uma radiação electromagnética cujo gama de comprimentos de onda se situa no

espectro visível, entre as radiações ultravioletas e as radiações infravermelhas.

As características da luz que terão relevo para este projecto são:

- A propagação da luz ser rectilínea.

- A velocidade de propagação da luz no ar ser pouco inferior à sua velocidade de propagação

no vácuo, c = 299.792.458 m/s, podendo assim assumir a luz como instantânea para a análise

dos movimentos envolvidos no projecto.

Page 15: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

6

- A luz branca ser uma radiação que contém os diferentes comprimentos de onda que formam

o espectro visível, em que a cada comprimento de onda corresponde uma cor diferente.

- Os materiais poderem absorver só parte da radiação luminosa, ou seja, quando a luz incide

na maior parte dos materiais, só alguns comprimentos de onda da luz são absorvidos, os

restantes são reflectidos conferindo a cor que vemos do material.

Figura 1 – Separação da luz branca nas diferentes cores que a integram formando um espectro

contínuo de cores.

Fotografia – De uma forma simplista, podemos definir a fotografia como sendo uma técnica de

gravação, em materiais sensíveis à exposição luminosa, da luz reflectida por uma determinada

zona do espaço.

Fotografia digital – Caracteriza-se por utilizar sensores fotossensíveis discretos (CMOS ou

CCD) para conseguirem captar a imagem. Conseguem emitir um sinal eléctrico em função da

intensidade de ondas electromagnéticas (com um determinado comprimento de onda) que

incidem sobre o sensor. A unidade estrutural da fotografia digital é o

pixel. A cada pixel corresponde uma determinada área ( , )p p

a b na

imagem e está associado um valor da intensidade média de brilho/luz

que é reflectida nessa mesma área. Os pixels estão ordenados de

forma matricial ao longo da imagem sendo as suas coordenadas

( , )[ ]p pu v pixels dadas relativamente ao canto superior esquerdo da

imagem, este é considerado então a origem do referencial da

imagem, ou seja, o ponto (0,0).

Figura 2 - Esquematização de uma imagem digital

Sistema de Cores RGB - As 3 cores primárias (Vermelho, Verde e Azul) serão captadas por 3

sensores diferentes calibrados para diferentes gamas de comprimentos de onda / gama de cor.

A imagem digital a cores passa a ser definida por um conjunto de 3 matrizes,

uma para cada cor primária (RGB- Red, Green and Blue).

Neste sistema é conferido um valor de intensidade de cor que vai de 0 a 255.

O zero está associado à ausência de cor e o 255 está associado à saturação

da cor.

Figura 3 - Sistema de cores RGB.

Page 16: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

7

2.1.2 Modelo Pin-hole

Modelo matemático da captação de imagens por câmaras fotográficas.

Neste modelo admite-se que a luz se propaga em

linha recta e todos os raios de luz captados pela

câmara convergem num ponto designado por centro

óptico, c.

Vamos considerar um referencial cuja coordenada z

é perpendicular ao plano da imagem

Figura 4 - Modelo Pin-hole.

Projectando um ponto do espaço no plano da imagem:

Figura 5 – Esquematização do plano da imagem

Page 17: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

8

Sendo , ,1T

c c

p pm x y = a projecção do ponto P no plano da imagem2, em coordenadas

homogéneas3.

Podemos obter as suas coordenadas através da relação geométrica:

c c c

p p p

c c

p p

Z X X

f x y= =

Sendo f a Distância focal [mm], distância a que o plano da imagem se encontra do centro

óptico. Esta relação pode escrever-se na forma matricial:

[ ]0 0 0

1. 0 0 0

1 0 0 1 0

1

c

pc

p c

pc

pc

p p

Xx f

Ym y f mm

Z Z

= = ⋅

Eq. 1

2.1.3 Coordenadas do ponto m em pixels a partir das coordenadas

do ponto P em mm

Determina-se o ponto m (a projecção do ponto P no plano da imagem) a partir das

coordenadas do ponto P. Contudo as coordenadas dos pontos não são lidas em mm mas em

pixels. É então necessário estabelecer a relação entre o sistema de coordenadas em mm e o

sistema de coordenadas em pixels. Para além da conversão de mm para pixels, a origem dos

referenciais também difere, numa imagem digital, por norma, a origem do referencial coincide

com o canto superior esquerdo da fotografia. Os referenciais estão esquematizados na Figura

6, relacionam-se com a seguinte transformação:

[ ]0

0

0

0

1 0 0 1 1

c

u p

c

v p

u K u x

v K v y Pixel

− = − ⋅

Eq. 2

2 Na notação utilizada é indicado o referencial no qual é medida a grandeza com um símbolo

no canto superior esquerdo de cada variável. Neste caso as coordenadas do ponto p são

relativas ao referencial da câmara, referencial cuja coordenada z é perpendicular ao plano da

imagem. 3 Consultar o anexo 1para melhor percepção das coordenadas homogéneas.

Page 18: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

9

Figura 6 – Mudança de sistema de coordenadas de mm para pixels e mudança da origem do

referencial.

A partir desta transformação, pode-se finalmente escrever a relação entre as coordenadas de

um ponto no espaço em mm, e as coordenadas de um ponto na imagem em pixels, como

definido em [8] e [9]:

[ ]0

0

0 01

. 0 0 .

1 0 0 1 0

1

c

p

u c

p

vc cp p

Xu f K u

Yv f K v Pixels

Z Z

⋅ − = ⋅ −

Eq. 3

[ ]0

0

c

p

u c

p

c

p

v c

p

Xu f K u

ZPixels

Yv f K v

Z

= ⋅ ⋅ −

= ⋅ ⋅ −

Eq. 4

Os parâmetros f , uK , vK , 0u e 0

v são definidos como parâmetros Intrínsecos da Câmara,

sendo:

uK – Factor de conversão da coordenada horizontal do ponto m, de mm para pixels. [Pixel/mm]

vK – Factor de conversão da coordenada vertical do ponto m, de mm para pixels. [Pixel/mm]

[ 0u , 0v ] – Coordenadas associadas à translação4 da origem do referencial em Pixels para o

referencial em mm, do plano da imagem. [Pixel]

4 Ver Figura 6

Page 19: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

10

A matriz da Eq. 5 designa-se por Matriz de Calibração:

0

0

0 0

0 0

0 0 1 0

u

v

f K u

K f K v

⋅ − = ⋅ −

Eq. 5

2.2 Reconstrução 3D

Um ponto decisivo neste trabalho é a determinação da posição tridimensional do objecto, que

queremos manipular, num determinado instante de tempo. Este processo é designado de

reconstrução 3D de um ponto no espaço, e basicamente consiste em inverter o modelo

analisado anteriormente. Contudo utilizando uma só imagem falta-nos informação para passar

de 2 dimensões para 3 dimensões.

É possível efectuar a reconstrução 3D em duas situações distintas: utilizando duas fotografias

de uma câmara em movimento, com a restrição do objecto ou estar parado ou ter trajectória

conhecida, ou utilizando duas câmaras que tirem fotografias em simultâneo e neste caso o

objecto não tem restrições quanto ao movimento.

Foi implementado um sistema de visão, que se adapta à segunda situação, um par de câmaras

estéreo, em que é forçado o sincronismo na captação das imagens das duas câmaras. Os

cálculos efectuados para a determinação da posição do objecto no espaço são apresentados

em seguida.

2.2.1 Determinação das coordenadas do ponto P - Geometria

Epipolar

Demonstrou-se como obter as coordenadas em pixels de um ponto na imagem a partir das

coordenadas em mm de um ponto no espaço. No entanto, o nosso objectivo é o processo

inverso, obter o ponto no espaço a partir das coordenadas em pixels de um ponto na(s)

imagem(ns) que lhe corresponde(m).

Com a informação de apenas uma imagem não se consegue determinar as coordenadas do

ponto P a partir das coordenadas do ponto m em Pixels, não há informação suficiente para

passar de 2 dimensões para 3 dimensões. Uma técnica frequentemente utilizada é fixar a

profundidade a que se encontra o objecto da câmara, c

pZ , para deduzir as restantes

coordenadas do ponto a partir das coordenadas em pixels do ponto na imagem. Temos então o

ponto P em função das coordenadas do ponto na imagem e da coordenada Z:

Page 20: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

11

0

0

10

0 0

0 0 10 [ ]

0 01

0 0 10 0 11

cc

p cp u u

pc c

pc cp

pccv vpp

uX Z f K f K uY Z v

P v mmf K f KZZ

⋅ ⋅ = = ⋅ ⋅ ⋅ ⋅

Eq. 6

( )

( )[ ]

0

0

c

pc

p

u

c

pc

p

v

Z u uX

f Kmm

Z v vY

f K

+= ⋅

+= ⋅

Eq. 7

No entanto o problema pode ser abordado noutra perspectiva:

O raio de luz que foi reflectido no ponto P e captado pela câmara pode ser visualizado como

uma recta no espaço que passa por três pontos: centro óptico, ponto m (projecção do ponto P

no plano da imagem) e ponto P. Sabendo o ponto na imagem (m) e o centro óptico (c), pode-se

determinar a recta no espaço onde o ponto P se encontra.

Apresentando a recta na forma vectorial: ,P C k M k R= + ⋅ ∈r

Eq. 8

Sendo P um ponto genérico da recta, o ponto C o centro óptico da câmara e M o vector director

da recta. Conhecendo os parâmetros intrínsecos da câmara e as coordenadas do ponto na

imagem em pixels, obtém o vector director usando a seguinte equação:

0

0

10

10

10 01

0 0 1

ccm u u

pc

c cmp

v v

u

X K Ku

vYcm M v

K Kf

f

≡ = = ⋅

uur r Eq. 9

Se se cruzar a informação de duas câmaras obtêm-se duas rectas que se vão interceptar no

espaço, no ponto P (figura 7). Contudo, é necessário conhecer a posição e orientação de uma

câmara relativamente à outra.

Page 21: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

12

Figura 7 – Intercepção das duas rectas no Espaço.

A geometria epipolar esquematizada na Figura 7 é normalmente utilizada para determinar

pontos no espaço a partir de duas imagens distintas, assim como para correlacionar os pontos

semelhantes nas duas imagens ou ainda para determinar os parâmetros intrínsecos e

extrínsecos das câmaras. Neste trabalho vamos apenas focar-nos na obtenção das

coordenadas de um ponto, para tal, só necessitamos de saber as equações vectoriais das

rectas cuja intersecção acontece no ponto P.

Equações vectoriais das rectas:

1 1 1

1 1 1

2 2 2

2 2 2

P C K M

P C K M

= + ⋅

= + ⋅ Eq. 10

Relação entre as coordenadas de um ponto medida nos dois referenciais referentes às duas

câmaras:

1 1 2

2P T P= ⋅ Eq. 11

A matriz 1

2T , que relaciona o referencial da câmara 2 relativamente ao referencial da câmara

1, é calculada experimentalmente pela calibração do par estéreo, apresentada no capítulo da

calibração. Notar que na Eq. 10 os pontos encontram-se com coordenadas relativas a referenciais

diferentes. Para se poderem efectuar os cálculos necessários à determinação das coordenadas

do ponto P é necessário converter as equações das rectas para o mesmo referencial, neste

caso optámos pelo referencial da câmara esquerda (1):

Page 22: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

13

1 1 1 1 1 1

1 1 1 1 1 1

2 2 2 1 2 1 2 1 2

2 2 2 2 2 2 2 2 2

1 1 1

1 1 1

1 1 1

2 2 2

C K M P C K M P

C K M P T C K T M T P

C K M P

C K M P

+ ⋅ = + ⋅ = ⇔ ⇔

+ ⋅ = ⋅ + ⋅ ⋅ = ⋅

+ ⋅ =

+ ⋅ =

Eq. 12

2.2.2 Método dos Mínimos Quadrados

Figura 8 – Falha na intersecção das duas rectas no Espaço.

Com as aproximações feitas na captação ao converter a imagem para formato digital (Pixels) e

com os arredondamentos efectuados nos cálculos matemáticos, dificilmente as duas rectas

passam exactamente no ponto P. Assim sendo, a melhor forma de aproximar as coordenadas

do ponto P, será calculando um ponto de cada recta, tal que a distância entre eles seja mínima.

Passamos assim a ter um problema de optimização, descrito na figura 8, onde os pontos que

se pretendem calcular são 1

1P e 1

2P . Aplicando o método dos mínimos quadrados5 ao sistema

de equações da Eq. 12 pode-se determinar 1

1P e 1

2P , os pontos mencionados no parágrafo

anterior.

Reformulação das equações das rectas:

1 1 1

1 1 1 1

1 1 1

2 2 2 2

P C K M

P C K M

= + ⋅

= + ⋅ Eq. 13

5 Técnica de optimização matemática que procura encontrar o melhor ajustamento para um

conjunto de dados minimizando a soma dos quadrados das diferenças entre a curva ajustada e

os dados

Page 23: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

14

O problema consiste em determinar as constantes 1K e 2K que permitam minimizar a

diferença entre 1

1P e 1

2P

1 1 1

1 1 1

1 1

2 2 2

2 2 2

2 2

1 1 1

1 1 11 1 1

1 1 1 1 11 1

1 1 2

1 1 21 1 2

2 2 2 2 21 1

01 1

01 1

P c m

P c m

P c

P c m

P c m

P c

X X X

Y Y YP C K M K

Z Z f

X X X

Y Y YP C K M K

Z Z f

= + ⋅ ⇔ = + ⋅

= + ⋅ ⇔ = + ⋅

Eq. 14

Analisando as coordenadas x e y das rectas obtém um sistema de 2 equações com 2

incógnitas:

1 2 2 1

1 2 2 1

11 1 1 1

1

1 1 1 12

m m c c

m m c c

X X X YK

K Y Y Y X

= ⋅

Eq. 15

2.3 Seguimento Visual e Previsão de Trajectórias

Até este ponto, a abordagem foi puramente estática, ou seja, o objecto encontra-se fixo numa

posição espacial e com duas imagens tiradas por duas câmaras conseguimos saber a posição

do objecto.

A complexidade aumenta com a introdução de movimento. A posição do objecto obtida pela

reconstrução 3D passa a estar associada ao instante de tempo em que as imagens foram

captadas.Com objectos em movimento há que ter a preocupação de assegurar o sincronismo

na captação, por outras palavras, as fotografias da câmara direita e da câmara esquerda tem

de ser tiradas em simultâneo para a correcta reconstrução 3D.

Numa abordagem cinemática, a partir de uma sequência de pares de imagens vamos obter a

posição do objecto para vários instantes de tempo medidos.

Uma das opções para interceptar a bola será enviar o robô para as posições obtidas, tentando

apanhar a bola com a rapidez do movimento do punho do robô, fazendo uma “perseguição” ao

objecto, método designado por Tracking.

No entanto, foi também utilizada uma estratégia diferente em que será a bola a vir ao encontro

do robô, em vez de colocar o robô em perseguição da bola, ou seja, fazer o robô chegar

primeiro ao ponto de intercepção. Para conseguir este objectivo, foi estimado um modelo

matemático que descrevesse a trajectória da bola, permitindo estimar a posição do ponto de

intercepção, na área de trabalho do robô.

Page 24: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

15

As duas versões encontram-se desenvolvidas e são normalmente diferenciadas nos capítulos

seguintes como versão de Tracking e versão de Previsão.

2.3.1 Trajectória de um projéctil

Figura 9 – Trajectória de um projéctil.

Desprezando o atrito do ar, o movimento efectuado por uma bola atirada para a área do robô,

pode ser descrito como o movimento de um projéctil, regendo-se pela seguinte lei física:

( ) ( )2

0 0 0 0

01

02

f f fP P V t t t t

g

= + ⋅ − + ⋅ ⋅ −

Eq. 16

Sendo: fP - Posição de um ponto da trajectória

0P - Posição inicial

0 ( , , )V u v w= - Estimativa da velocidade inicial

ft - Instante de tempo associado à posição fP

0t - Instante de tempo inicial

g - Aceleração gravítica

A mesma equação é utilizada para determinar, por interpolação, a estimativa da velocidade da

bola no penúltimo ponto captado pelo sistema de visão, utilizando a posição e o tempo medido

dos últimos dois pontos, sem esquecer que as coordenadas têm de ser convertidas do

referencial da câmara para o referencial da base do robô:

( ) ( )1 1

2

1 1 1 1

1 1

01

02

9.8

i i i

i i i i i i i

i i i

x x u

y y v t t t t

z z w

− −

− − − −

− −

= + ⋅ − + ⋅ ⋅ −

Eq. 17

Colocando a equação em função das velocidades:

( )( )

1 1

1 1 1

1

1 1

01 1

02

9.8

i i i

i i i i i

i i

i i i

u x x

v y y t tt t

w z z

− −

− − −

− −

= − ⋅ − ⋅ ⋅ − −

Eq. 18

Page 25: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

16

Tendo um valor estimado da velocidade no penúltimo instante, pode-se então determinar a

posição do ponto de intercepção com base nos últimos dois valores de posição e nos tempos

medidos pelo sistema de visão.

( ) ( )2

1 1 1 1

01

02

f i i f i f iP P V t t t t

g

− − − −

= + ⋅ − + ⋅ ⋅ −

Eq. 19

Sendo: fP - Posição 3D do ponto de intercepção

1iP− - Posição 3D do penúltimo ponto da trajectória obtido pelo sistema de visão

1iV − - Estimativa da velocidade no instante i-1

ft - Instante da intercepção

1it − - Instante de tempo associado à posição i-1

g - Aceleração gravítica

Desenvolvendo o sistema de 3 equações e 4 incógnitas:

( ) ( )1 1

2

1 1 1 1

1 1

01

9.82

0

f i i

f i i f i f i

i if

x x u

y y v t t t t

z wz

− −

− − − −

− −

= + ⋅ − + ⋅ ⋅ −

Eq. 20

A quarta equação provém do plano onde pretendemos que o robô intercepte a bola. Neste

caso optou-se por um plano vertical:

f f

f

y a x b

z R

= ⋅ +

∈ Eq. 21

A posição do ponto de intercepção vai sendo refinada à medida que se obtém a informação da

posição um novo ponto da trajectória,iP .

É necessário ter a noção de que a aplicação do modelo matemático da trajectória em pontos

de trajectória, com erros de medição, provocará uma ampliação do erro da posição do ponto de

intercepção, Figura 10. Por outro lado, à medida que se aproxima do ponto de intercepção este

erro diminui pois a correcção da posição do ponto de intercepção é proporcional ao intervalo de

tempo que ainda falta decorrer para a intercepção.

Page 26: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

17

Figura 10 – Erro no cálculo do ponto de intercepção com o plano

Como se averiguou nas equações apresentadas, são necessários dois pontos para estimar a

equação do movimento de um projéctil, o sistema implementado actualiza a equação do

movimento sempre com os últimos dois pontos captados pela câmara, pois são os pontos mais

próximos do ponto de intercepção, logo os que provocam uma menor ampliação do erro no

cálculo da posição do mesmo.

2.3.2 Trajectória de um pêndulo planar

Figura 11 – Trajectória de um Pêndulo.

Esta trajectória tem a particularidade de envolver velocidades mais baixas do que a trajectória

do projéctil, e portanto é de mais fácil seguimento:

A equação que rege o movimento,

T P m a+ = ⋅r r r

Eq. 22

Pode-se separar esta equação na componente tangente à trajectória e na componente

perpendicular à trajectória:

Page 27: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

18

2

cos cosn

tt

vT P m a T P m

lP sen m a

g sen a

θ θ

θθ

+ ⋅ = ⋅ + ⋅ = ⋅

⇔ ⋅ = ⋅ ⋅ =

Eq. 23

Em que: 0 0( ) ( )x x z zsen

− + −= Eq. 24

Devido ao facto da aceleração não ser uniforme, nem em módulo, nem em direcção, é mais

fácil determinar a equação da trajectória a partir da análise de 3 pontos sabendo que a

trajectória tem de descrever uma circunferência de centro [ ]000 ,, zyx e raio l :

Constrangimento do facto do movimento ser numa superfície esférica de raio l

2 2 2 2

0 0 0( ) ( ) ( )x x y y z z l− + − + − = Eq. 25

Constrangimento do movimento pendular ser efectuado num plano vertical, se a velocidade

inicial for zero.

1 1y a x b

z R

= ⋅ +

∈ Eq. 26

Aplicando este constrangimentos aos primeiros 2 pontos1 2,x x obtém-se a equação do plano

vertical:

1 1 1 1

2 1 2 1

y a x b

y a x b

= ⋅ +

= ⋅ + Eq. 27

Fica-se com a equação de y em função de x, a qual pode ser aplicada ao centro da

circunferência que também se encontra no mesmo plano da trajectória:

0 1 0 1y a x b= ⋅ + Eq. 28

Substituindo na Eq.25 2 2 2 2

0 0 0( ) ( ) ( )x x y y z z l− + − + − =

Eq. 25 fica-se com:

2 2 2 2

1 0 1 1 0 1 1 0

2 2 2 2

2 0 2 1 0 1 2 0

2 2 2 2

3 0 3 1 0 1 3 0

( ) ( ( )) ( )

( ) ( ( )) ( )

( ) ( ( )) ( )

x x y a x b z z l

x x y a x b z z l

x x y a x b z z l

− + − ⋅ + + − =

− + − ⋅ + + − =

− + − ⋅ + + − =

Eq. 29

Se já se souber o comprimento l do fio só serão necessárias as primeiras duas equações caso

contrário é necessário um terceiro ponto da trajectória. Obtidos o centro da circunferência e o

comprimento l , raio da circunferência, basta interligar a equação da circunferência no espaço

com a equação do plano de actuação do robô para calcular o ponto de intercepção:

Page 28: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

19

2 2 2 2 2 2 2 2

0 0 0 0 1 1 0 0

2 2 2 2 1 1

( ) ( ) ( ) ( ) (( ) ) ( )

0 ( ) 0

f f f f f f

f f f f

x x y y z z l x x a x b y z z l

a x b y a x b a x b

− + − + − = − + ⋅ + − + − =

⋅ + ⋅ = ⋅ + ⋅ ⋅ + =

Eq. 30

Sendo 2a e 2b os parâmetros do plano de actuação do robô definidos pelo operador à partida,

determina-se então fx , fy e fz .

2.3.3 Trajectória de uma rampa

Figura 12 – Trajectória de uma rampa.

Este é o movimento mais simples dos três analisados. Pode ser descrito como um movimento

rectilíneo uniformemente acelerado, e rege-se pela seguinte equação:

( ) ( )2

0 0 0 0

cos1

cos cos2

f f f

g sen

P P V t t g t t

g sen

α β

α β

α

⋅ ⋅ = + ⋅ − + ⋅ − ⋅ ⋅ ⋅ − − ⋅

Eq. 31

sendoα o ângulo que a rampa faz com a vertical e β o ângulo que a trajectória da bola faz

com o eixo x. Com três pontos da trajectória pode-se estimar a velocidade inicial e os ângulos

α e β :

( ) ( )

( ) ( )

1

2

1 1 1 1

1

1

2

1 1 1 1 1 1 1

1

cos1

cos cos2

cos1

cos cos2

i

i i i i i i i

i

i

i i i i i i i

i

u g sen

P P v t t g t t

g senw

u g sen

P P v t t g t t

g senw

α β

α β

α

α β

α β

α

− − − −

+ − − + − + −

⋅ ⋅ = + ⋅ − + ⋅ − ⋅ ⋅ ⋅ − − ⋅

⋅ ⋅ = + ⋅ − + ⋅ − ⋅ ⋅ ⋅ − − ⋅

Eq. 32

Em seguida é calculado o ponto de intercepção com o plano de actuação do robô:

Page 29: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

20

( ) ( )1

2

1 1 1 1

1

cos1

cos cos2

0

i

f i i f i f i

i

f f

u g sen

P P v t t g t t

g senw

a x c z

α β

α β

α

− − − −

⋅ ⋅ = + ⋅ − + ⋅ − ⋅ ⋅ ⋅ − − ⋅ ⋅ + ⋅ =

Eq. 33

Obteve-se então um sistema de 4 equações a 4 incógnitas [ fx , fy , fz , ft ]:

( ) ( )1 1

2

1 1 1 1

1 1

cos1

cos cos2

0

f i i

f i i f i f i

i if

f f

x x u g sen

y y v t t g t t

g senz wz

a x c z

α β

α β

α

− −

− − − −

− −

⋅ ⋅ = + ⋅ − + ⋅ − ⋅ ⋅ ⋅ − − ⋅ ⋅ + ⋅ =

Eq. 34

2.4 Conceitos de Robótica

Nos sub capítulos anteriores foi desenvolvida a explicação teórica do sistema de visão.

Focou-se a determinação da posição de um objecto em movimento, em cada instante de

tempo, utilizando a reconstrução 3D de um ponto e a possibilidade de prever a trajectória do

objecto.

No entanto, para cumprir o objectivo de controlar a movimentação do robô de acordo com a

informação obtida pelo sistema de visão, é necessário explicar as bases teóricas de robótica

que permitem a movimentação do robô.

2.4.1 Robô Manipulador: Puma 560

Ao iniciar este tema convém referir algumas definições fundamentais da robótica:

Manipulador - é a estrutura mecânica constituída por ligações mecânicas (elos) interligadas

por juntas (eixos). Podem estar incluídos no manipulador outros elementos tais como

actuadores, sensores, engrenagens e transmissões.

Robô - é um manipulador reprogramável, multifuncional projectado para movimentar materiais,

peças, ferramentas ou aparelhos especiais, através de movimentos programados para a

execução automática de tarefas variadas.

Page 30: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

21

Figura 13 – Esquema dos graus de liberdade do robô manipulador Puma 560.

O movimento do manipulador no espaço é obtido pela actuação individual de cada uma das

juntas. As juntas podem ser de dois tipos:

Juntas de rotação Produzem movimentos de rotação entre as ligações

Juntas prismáticas Produzem movimento de translação das ligações.

O manipulador pode ser dividido em três partes:

Ligações principais Responsáveis pelo posicionamento do punho no espaço.

Ligações secundárias Responsáveis pela orientação do punho.

Elemento terminal Montado no punho, pode ser uma peça ou ferramenta, com ou sem

controlo autónomo.

Figura 14 – Esquematização do punho de Euler do robô, na configuração q5=0.

Page 31: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

22

No caso do Puma 560, existem 6 juntas, todas juntas de rotação. Neste trabalho será

designada a rotação de cada junta por [ ]1 2 3 4 5 6, , , , ,q q q q q q q= começando-se na base até ao

elemento terminal, as 3 primeiras controlam a posição do punho e as 3 últimas a sua

orientação. O elemento terminal para esta aplicação consiste numa raquete que permite

interceptar a bola.

2.4.2 Cinemática

A cinemática de robôs trata da análise do movimento de robôs, ignorando as considerações

dinâmicas do mesmo. Os problemas de carga, forças, inércia e tempos de resposta não são

considerados no estudo cinemático.

O objectivo é relacionar as variáveis de junta (q) com a posição e orientação de um elemento

físico do robô.

Esta área da robótica divide-se em duas vertentes: Cinemática Directa e Cinemática Inversa.

Na Cinemática Directa é determinada a posição 0 0 0, ,p p p

x y z e orientação[ ]1 2 3, ,θ θ θ de

um elemento físico do robô a partir dos valores das configurações de juntas

[ ]1 2 3 4 5 6, , , , ,q q q q q q e dos parâmetros geométricos do robô (comprimento das ligações e eixo

de rotação de cada uma das juntas).

Na Cinemática Inversa, tal como o nome indica, o problema é invertido, o objectivo é

determinar uma das configurações de juntas [ ]1 2 3 4 5 6, , , , ,q q q q q q possíveis que permita a um

elemento do robô (normalmente o elemento terminal) posicionar-se num determinado ponto do

espaço, relativamente ao referencial da base, 0 0 0, ,p p p

x y z com uma determinada

orientação [ ]1 2 3, ,θ θ θ .

Como, normalmente, o elemento para o qual é projectada a cinemática inversa é o elemento

terminal (ferramenta) e não o punho, o problema torna-se mais complexo, pois a posição do

elemento terminal dependente da orientação do punho.

Nesta aplicação vamos considerar mais importante o posicionamento do elemento terminal no

espaço que a sua orientação pelo que bloqueou-se a junta 5 em zero. A junta 6 foi também

bloqueada por ser redundante com a junta 4, no caso da junta 5 estar bloqueada em zero.

A posição do centro do elemento terminal dista 0.22 metros do centro do punho, como é visível

na Figura 16, com esta restrição da junta 5 pode-se, para efeitos matemáticos, ver o elemento

terminal com uma “ampliação” do terceiro elo do robô, portanto este não terá o seu

Page 32: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

23

comprimento real de 0.4318 metros mas terá um comprimento virtual de (0.43180 + 0.22)

metros.

A junta 4 poderá rodar sem comprometer a posição do centro do elemento terminal em relação

ao centro do punho, e será proporcional ao ângulo de queda ou subida da bola para facilitar a

sua intercepção, só é possível fazer estes cálculos na versão de Previsão.

Em futuras aplicações em que se pretenda controlar também a orientação, aconselha-se o

seguinte algoritmo:

Determinar [ ]4 5 6, ,q q q a partir da orientação que se deseja obter na ferramenta.

Com [ ]4 5 6, ,q q q calcular a posição do punho relativamente à posição do centro do elemento

terminal.

Calcular [ ]1 2 3, ,q q q da posição do punho que já está feita com a excepção de que o

comprimento do terceiro elo passará a ser o real de 0.4318 metros.

Cinemática Directa

Algoritmo de Denavit-Hartenberg - Para o cálculo da posição e orientação do elemento

terminal no espaço sabendo as coordenadas de junta é utilizado um algoritmo que permite

estabelecer os referenciais associados a ligações sucessivas, de forma sistemática e em

função da variável de junta situada entre elas. A forma como os referenciais são estabelecidos

permite ainda reduzir o número de parâmetros necessários para definir a posição relativa

destes dois sistemas referenciais, de 6 para 4 parâmetros, sendo um deles a variável de junta.

Junta i α [rad] a [m] θ [rad] d [m]

1 2

Π 0 1q 0

2 0 0.43180 2q 0

3 2

Π 0.02030 3q 0.15005

4 2

Π 0 4q 0.43180

5 2

Π 0 5q 0

6 0 0 6q 0

Tabela 1 - Parâmetros do algoritmo de Denavit-Hartenberg.

Page 33: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

24

Figura 15 – Sistema de referenciais do manipulador Puma 560. [13]

Com base na matriz6 de rotação e translação, 0 *

6A 7, que relaciona o referencial da base com o

referencial do centro do elemento terminal e utilizando as restrições anteriormente anunciadas,

podemos determinar as coordenadas cartesianas deste ponto 0 0 0, ,p p p

x y z :

0

0

0 *

60

0

0

0

11

p

p

p

x

yA

z

= ⋅

Eq. 35

Obtêm-se então as expressões das coordenadas 0 0 0, ,p p p

x y z em função das coordenadas

de junta [ ]1 2 3, ,q q q :

6 As matrizes 1i

iA− que relacionam os referenciais do algoritmo de Denavit-Hartenberg

encontram-se expostas no anexo 3

7 O asterisco na matriz 0 *

6A indica que o comprimento do terceiro elo foi alterado para

(0.43180 + 0.22) metros.

Page 34: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

25

( ) ( ) ( ) ( ) ( ) ( )

( ) ( ) ( ) ( ) ( ) ( )

( ) ( ) ( )

( ) ( ) ( )

0

3 1 2 3 1 2

3 1 2 3 1 2

1 1 2

0

3 1 2

(0.4318 0.22) cos cos (0.4318 0.22) cos cos

0.0203 cos cos cos 0.0203 cos

0.15 0.4318 cos cos

(0.4318 0.22) cos (0.4318 0.22) c

p

p

x sen q q q q q sen q

q q q sen q q sen q

sen q q q

y sen q sen q q

= − + ⋅ ⋅ ⋅ − + ⋅ ⋅ ⋅

+ ⋅ ⋅ ⋅ − ⋅ ⋅ ⋅

+ ⋅ + ⋅ ⋅

= − + ⋅ ⋅ ⋅ − + ⋅ ( ) ( ) ( )

( ) ( ) ( ) ( ) ( ) ( )

( ) ( ) ( )

( ) ( ) ( ) ( )

( ) ( ) ( ) ( )

3 1 2

3 1 2 3 1 2

1 1 2

0

3 2 3 2

3 2 3 2

os

0.0203 cos cos 0.0203

0.15 cos 0.4318 cos

(0.4318 0.22) (0.4318 0.22) cos cos

0.0203 cos 0.0203 cos 0.4318

p

q sen q sen q

q sen q q sen q sen q sen q

q sen q q

z sen q sen q q q

q sen q sen q q se

⋅ ⋅

+ ⋅ ⋅ ⋅ − ⋅ ⋅ ⋅

+ ⋅ + ⋅ ⋅

= − + ⋅ ⋅ + + ⋅ ⋅

+ ⋅ ⋅ + ⋅ ⋅ + ⋅ ( )2n q

Eq. 36

Neste trabalho a cinemática directa só será utilizada como ferramenta de confirmação da

cinemática inversa, pois o objectivo é determinar as coordenadas de juntas do ponto no espaço

onde o elemento terminal do robô se deve posicionar para interceptar o objecto. Este ponto é

calculado pelo sistema de visão, em coordenadas cartesianas.

Cinemática Inversa

Para os cálculos da cinemática inversa foram utilizadas as equações desenvolvidas num

projecto anterior [12]:

0

1

1 0 0 2 0 2

3p

p p p

y dq tg sen

x x y

− = + +

Eq. 37

0

1

2

pzq tg Psi

v

= −

Eq. 38

0

2 2 21 133 0

4 2 2

cos( ) ( )

cos( ) ( )

p

p

q v sen q z aaq tg tg

d q z sen q v

− − ⋅ + ⋅ −

= − ⋅ − ⋅ Eq. 39

sendo:

0 0

1 1cos( ) ( )p pv x q y sen q= ⋅ + ⋅ Eq. 40

2 2 2 2 0 2

2 4 31

2 0

2

cos2

p

p

a d a v zPsi

a v z

− − − + + = ⋅ ⋅ +

Eq. 41

Estas fórmulas estão dimensionadas para posicionar o punho numa posição no espaço, no

entanto, foram adaptadas para se posicionar o centro do elemento terminal.

*

4 4 0.22d d= + Eq. 42

Sendo 0.22 a distância do punho ao centro do elemento terminal, como anteriormente referido.

Page 35: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

26

Figura 16 – Distância entre o centro do elemento terminal e o centro do punho.

Estas fórmulas dão bons resultados para o caso de se trabalhar no referencial de fábrica do

Puma, no entanto houve a necessidade de utilizar o referencial definido por Peter Corke [14].

Com esta alteração de referencial, as coordenadas de junta excedem os limites de junta

impostos, para a maior parte dos pontos pertencentes ao espaço de trabalho do robô.

Figura 17 – Mudança para o referencial de Peter Corke.

Foi então reconfigurada a cinemática inversa para poder ser adaptada ao referencial de Peter

Corke.

A cinemática inversa encontra-se então funcional para o espaço operacional do robô

delimitado pelos limites de junta:

Limites de Junta

1

2

3

4

5

6

180º 180º

95º 95º

119º 119º

180º 180º

80º 80º

180º 180º

q

q

q

q

q

q

− ≤ ≤

− ≤ ≤− ≤ ≤

− ≤ ≤− ≤ ≤

− ≤ ≤

Estes limites de junta permitem ao robô operar numa coroa esférica de raio interior 62.5 cm e

de raio exterior 109 cm:

2 2 262.5 109cm R x y z cm≤ = + + ≤

Page 36: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

27

existe ainda uma área interior em que o Puma não consegue aceder por impossibilidade física

2 2 15.1x y cm+ ≥

Por razões de segurança delimitou-se ainda a coordenada z:

0.35z cm≥ −

Obtém-se então uma área de trabalho representada na figura:

Figura 18 – Modelo tridimensional da área operacional do Puma 560 com um corte de 90º para

melhor visualização.

Esta área pode ser aumentada se se aumentar os limites das juntas 2 e 3 que estão

restringidos por precaução para, no caso de acidente, o robô não chocar com ele próprio.

Existe uma zona de descontinuidade que é na proximidade do semi-plano x=0 e y negativo em

a junta 1 pode tomar o valor de +180º ou de -180º, os limites desta junta (singularidade grau 1).

Se o objecto se encontrar fora deste espaço operacional, o robô posiciona-se no ponto

pertencente ao espaço operacional que se encontra mais próximo do objecto, para tal são

utilizadas as seguintes condições:

109

109

: robô objecto

robô objecto

robô objecto

se R cm

aR

x a xentão

y a y

z a z

>

=

= ⋅ = ⋅

= ⋅

62.5

62.5

: robô objecto

robô objecto

robô objecto

se R cm

aR

x a xentão

y a y

z a z

<

=

= ⋅ = ⋅

= ⋅

2 2

2 2

( 15.1 ) ( 62.5 )

15.1

:robô objecto

robô objecto

se x y cm e R cm

ax y

então x a x

y a y

+ < >

=

+

= ⋅

= ⋅

Eq. 43

Page 37: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

28

2.4.3 Planeamento de Trajectórias para o Robô

Nesta parte do trabalho houve necessidade de reestruturar os trabalhos precedentes [8],

[12],[15],[16] e [17]. A necessidade de mudar a trajectória sempre que recebe uma nova

informação do sistema de visão, foi incompatível com a base em que assentam os outros

trabalhos de controlo por posição já realizados com o Puma. Esta base era a de que o robô

partia sempre de uma posição de repouso, logo cada vez que o programa gerava uma nova

trajectória, a velocidade inicial tinha de ser forçosamente zero.

Criaram-se dois novos planeamentos de trajectórias (ciclóide e polinomial de 4ª ordem) que

permitem ao robô efectuar uma nova trajectória sem ter terminado a anterior, ou seja, iniciar

uma nova trajectória estando em movimento.

O sistema de visão dá-nos a posição da bola em coordenadas cartesianas 3D, em seguida, é

convertida essa posição para coordenadas de junta q utilizando a cinemática inversa de

posição, este processo é realizado já no PC Target, no programa criado em Simulink que

executa o anel de controlo do robô. Estas coordenadas de junta q serão as coordenadas, fq ,

do ponto final da trajectória a ser efectuada pelo robô. A posição inicial da trajectória iq é a

posição actual do robô, lida nos encoders de cada junta e o tempo final é proporcional à

distância a percorrer, em coordenadas de junta, entre a posição final e a inicial,

( )6

1

f f i jj

t K q q=

= ⋅ −∑ Eq. 44

É calculada uma nova trajectória a efectuar pelo robô, sempre que o sistema de visão adquire

uma nova posição da bola.

O planeamento de trajectória ciclóide anteriormente utilizado:

Posição angular de junta:

( )2 2

[ ]2

f i

f f

q q t tq t sen rad

t t

π π

π

−= ⋅ −

Eq. 45

Velocidade angular de junta:

( )2

1 cos [ / ]2

f i

f

q q tq t rad s

t

π

π

−= ⋅ −

& Eq. 46

Notar que são 6 equações com parâmetros diferentes para cada junta.

Page 38: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

29

O planeamento de trajectória cúbica anteriormente utilizado:

Posição angular de junta:

( ) ( ) ( )2 3

( 2) 3 [ ]i f i f i

f f

t tq t q q q q q rad

t t

= + − ⋅ − + −

Eq. 47

Velocidade angular de junta:

( )3 2

2( ) ( 6) ( ) (6) [ / ]f i f i

f f

t tq t q q q q rad s

t t= − ⋅ − + − ⋅& Eq. 48

Não foi encontrada uma justificação para os parâmetros encontrados nas equações deste

planeamento de trajectória, pelo que se supõe que tenham sido obtidos experimentalmente.

O planeamento de trajectória ciclóide mais geral criado para este

projecto:

( ) ( ) ( )

( ) ( )

( )( )

( )( )

1

1

1

1 2

2

2 2[ ]

2

21 cos [ / ]

2 2[ / ]

f i

i i

f i f i

f i

i

f i f i

f i

i

f if i

q qq t A t t sen t t rad

t t t t

q qq t t t rad s

t t t t

q qq t sen t t rad s

t tt t

π π

π

π

π π

− = + ⋅ ⋅ − − ⋅ − − − −

= ⋅ − ⋅ − − −

⋅ − = ⋅ ⋅ − −−

&

&&

Eqs. 49

Restrições :

Velocidade inicial da segunda trajectória tem de ser igual à velocidade final da trajectória inicial,

desta restrição obtemos a variável it

( ) 1

1 1

20 1 cos

f i

i i i

f i f i

q qq q t q

t t t t

π−

− −

− ⋅= ⇔ ⋅ − ⋅ = − −

& & & Eq. 50

Tendo it podemos calcular 1A tal que ( ) 10 iq q −= :

( )

( ) ( )

( ) ( )

1

1

1 1

1

1 1

0

2 2

2

2 2

2

i

f i

i i i

f i f i

f i

i i i

f i f i

q q

q qA t sen t q

t t t t

q qA q t sen t

t t t t

π π

π

π π

π

= ⇔

−⇔ + ⋅ ⋅ − ⋅ = ⇔ − −

−⇔ = − ⋅ ⋅ − ⋅ − −

Eq. 51

As restantes restrições já estão implícitas nas fórmulas das Eqs. 49 :

Page 39: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

30

( )

( )

[ ]

0 [ / ]

f f

f

q t q rad

q t rad s

=

= & Eq. 52

O planeamento de trajectória com um polinómio de 4ª ordem criado para este projecto:

Posição angular de junta

( ) 2 3 4

0 1 2 3 4 [ ]q t a a t a t a t a t rad= + ⋅ + ⋅ + ⋅ + ⋅ Eq. 53

Velocidade angular de junta

( ) 2 3

1 2 3 42 3 4 [ / ]q t a a t a t a t rad s= + ⋅ ⋅ + ⋅ ⋅ + ⋅ ⋅& Eq. 54

Aceleração angular de junta

( ) 2 2

2 3 42 6 12 [ / ]q t a a t a t rad s= ⋅ + ⋅ ⋅ + ⋅ ⋅&& Eq. 55

Restrições:

1 - A posição inicial da nova trajectória tem de coincidir com a última posição do robô lida nos

encoders.

2- A posição final é a nova posição dada pelo sistema de visão para o novo tempo final

calculado.

3 - A velocidade inicial da nova trajectória tem de coincidir com o último valor da velocidade do

robô calculada pela ( ) 2 3

1 2 3 42 3 4 [ / ]q t a a t a t a t rad s= + ⋅ ⋅ + ⋅ ⋅ + ⋅ ⋅&

Eq. 54 para a trajectória anterior :

4 – A velocidade final tem de ser zero para o novo tempo final e para a nova posição final:

( )

( )( )

( )

1

1

0 [ ]

[ ]

0 [ / ]

0 [ / ]

i

f f

i

f

q q rad

q t q rad

q q rad s

q t rad s

=

=

=

=

& &

&

Eq. 56

5 a) – A aceleração também é contínua entre os dois troços:

( ) 2

10 [ / ]

iq q rad s−=&& && Versão 1 - a versão mais suave. Eq. 57

5 b) – A aceleração inicial é considerada zero:

( ) 20 0 [ / ]q rad s=&& Versão 2 - a versão mais agressiva Eq. 58

Page 40: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

31

Parâmetros do polinómio para a versão mais suave, versão 1:

( )

0 1

1 1

12

213 1 13

2

4 1 1 33

2

4 3

4 4

13

4

i

i

i

if i i f f

f

i i f f

f

a q

a q

qa

qa q q q t t

t

a q q t a tt

−− −

− −

=

=

=

= ⋅ − − ⋅ −

= − ⋅ + ⋅ + ⋅ ⋅⋅

&

&&

&&&

& &&

Eq. 59

Parâmetros do polinómio para a versão mais agressiva, versão 2:

( )

0 1

1 1

2

3 1 13

2

4 1 33

0

4 3

4

13

4

i

i

f i i f

f

i f

f

a q

a q

a

a q q q tt

a q a tt

− −

=

=

=

= ⋅ − − ⋅

= − ⋅ + ⋅ ⋅⋅

&

&

&

Eq. 60

Estes parâmetros são recalculados nos instantes em que as câmaras recebem uma nova

posição da bola, um conjunto de 30 parâmetros, 5 para cada junta.

2.4.4 Controlador PD

Esta aplicação utiliza um controlador PD (Proporcional Derivativo) com compensação gravítica

em espaço de junta, para controlar a posição de cada junta do robô, criado em [16].

Este controlador foi implementado em Simulink utilizando uma s-function CONTROLO_pd_v.C

e compilado na DLL , CONTROLO_pd_v.DLL.

Figura 19 – Diagrama de blocos do Controlador PD.

Page 41: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

32

As coordenadas de junta ( ) ( )i ipulsos K q grausθ ≡ ⋅ são convertidas de graus para pulsos

antes de serem introduzidas no controlador:

1 1

2 2

3 3

4 4

5 5

6 6

( ) 0.00575 ( )

( ) 0.004175 ( )

( ) 0.0067 ( )

( ) 0.0047 ( )

( ) 0.005 ( )

( ) 0.0094 ( )

pulsos q graus

pulsos q graus

pulsos q graus

pulsos q graus

pulsos q graus

pulsos q graus

θ

θ

θ

θ

θ

θ

= ⋅

= ⋅ = ⋅

= ⋅ = ⋅

= ⋅

Eq. 61

Neste controlador foram utilizados os seguintes ganhos proporcionais e derivativos que podem

ser modificados no painel do bloco principal do Controlo de Posição criado em Simulink:

[ ]

[ ]

10 10 10 10 10 10

0.2 0.2 0.2 0.2 0.2 0.2

p

d

K

K

=

=

o compensador gravítico está acessível apenas internamente dentro da s-function.

[ ]0 10.97 22.65 0 0 0g =

Soube-se que o controlador está mal calibrado, os ganhos proporcionais e derivativos são

iguais para todas as juntas, o que não faz sentido, pois as juntas possuem inércias diferentes.

Em velocidades de trajectória muito elevadas notou-se uma oscilação nas juntas de maior

inércia (juntas 1 e 2), ou seja, ele não pára logo no ponto e volta para trás para se posicionar

na posição final. É proposto como melhoria, em trabalhos seguintes, uma calibração dos

ganhos proporcionais e derivativos para cada junta, para poder aumentar a rapidez na

actuação do robô.

2.4.5 Posicionamento espacial Robô - Par Estéreo ( Configuração

Eye-to-Hand)

O referencial base escolhido para todos os cálculos efectuados no trabalho foi o da base do

puma, portanto todas as coordenadas de posição terão de ser convertidas para este

referencial. Foi escolhida uma disposição das câmaras relativamente ao robô que permitisse

visualizar cerca de 70% da área de trabalho do robô (visível na Figura 20). Pretendeu-se, deste

modo, optimizar a relação entre a área visível da trajectória do objecto e a distância do objecto

ao sistema de visão, pois a área visível da trajectória delimita o tempo de resposta do robô e a

distância das câmaras ao objecto influência a precisão dos cálculos de reconstrução 3D.

Page 42: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

33

Figura 20 - Visualização da posição das câmaras relativamente ao robô.

Referencial 0 – Referencial da base do robô

Referencial 1 – Referencial da câmara esquerda do Par Estéreo

Referencial 2 – Referencial da câmara direita do Par Estéreo

Transformação homogénea8 associada ao referencial da base do robô :

0

1 0 0 0

0 1 0 0

0 0 1 0

0 0 0 1

T

=

Eq. 62

Transformação associada à câmara esquerda ( Referencial 1) :

0 0 0 0 0

1 1 1 1 1( , , ) 0

' 0 '' ' / 2

T Translacção X Y Z Rotacao em torno de z de

Rotacao em torno de Y de Rotacao em torno de X X de

ψ

π

= + +

+ + ≡

( ) ( )

( ) ( )

1

1

1

0

0 0 0

1 10

10 0 0

1 1

0 1 0

cos 0 sin

sin 0 cos

0 0 0 1

C

C

C

X

YT

Z

ψ ψ

ψ ψ

=

Eq. 63

8 Ver Anexo 1sobre os princípios de uma transformação homogénea

e ver Anexo 2 para visualizar a rotação RPY efectuada em cada transformação

Page 43: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

34

Figura 21 - Rotação efectuada do referencial da base do puma para o referencial da câmara

esquerda

Transformação associada à câmara direita (Referencial 2):

( ) ( )

( ) ( )

( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( )

( ) ( ) ( ) ( ) ( ) ( )

0

1

0 0 0

1 1 10 0 1

2 1 20 0 0

1 1 1

1 1 1 1 1 1 1 1 1 1 1 1 1

2 2 2 2 2 2 2 2 2 2 2 2 2

1 1 2 1 2 1 1 1

2 2 2 2 2 2

0 1 0

cos 0 sin

sin 0 cos

0 0 0 1

cos cos sin cos cos cos sin sin sin cos cos cos

sin cos cos sin cos cos si

X

YT T T

Z

X

ψ ψ

ψ ψ

ψ θ ψ φ ψ θ φ ψ φ ψ θ φ

φ θ φ φ θ φ

− = ⋅ = ⋅

− ⋅ + ⋅ ⋅ ⋅ + ⋅ ⋅

⋅ + ⋅ − ⋅⋅

( ) ( ) ( ) ( )

( ) ( ) ( ) ( ) ( )

1 1 1 1 1

2 2 2 2 2

1 1 1 1 1 1

2 2 2 2 2 2

n sin cos cos

sin sin cos cos cos

0 0 0 1

Y

Z

φ φ θ φ

θ ψ θ ψ θ

+ ⋅ ⋅ − ⋅ ⋅

Eq. 64

A transformação que relaciona os referenciais das câmaras foi determinada na calibração dos

parâmetros extrínsecos do par estéreo, descrita na secção 3.3.

A transformação que relaciona o referencial da câmara esquerda com o referencial da base do

puma foi determinada de forma experimental. Foi utilizado o sistema de visão para localizar a

base do robô, o vector da translação 1 1 1

0 0 0, ,c c cx y z no referencial da câmara esquerda

colocando a bola na base do robô.

Para determinar a rotação entre os referenciais9 assumiu-se que a altura no robô é o eixo do zz

e nas imagens é o eixo dos yy, foi necessário calcular a rotação de θ que relaciona as outras

duas coordenadas de ambos os referenciais, que também foi calculada de forma experimental

colocando a bola na garra do robô e enviando este elemento terminal para uma posição

conhecida no referencial da base do robô.

1 1 1 1

1 1 1 1

1 1

0

0 0

0

0 0

0

0

( ) ( ) ( ) cos( )

( ) cos( ) ( ) ( )

c c c c

p p p

c c c c

p p p

c c

p p

x x x sen z z

y x x z z sen

y y y

θ θ

θ θ

= − − ⋅ + − ⋅

= − − ⋅ − − ⋅ ⇔

= − −

Eq. 65

O resultado obtido foi :

1 1

1 1

1

0

0

0

( 32) (15º ) ( 209) cos(15º )

( 32) cos(15º ) ( 209) (15º )

24

c c

p p p

c c

p p p

c

p p

x x sen z

y x z sen

y y

= − − ⋅ + − ⋅

= − − ⋅ − − ⋅

= − −

Eq. 66

9 Visualizar Figura 21 para melhor percepção da rotação entre os referenciais.

Page 44: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

35

3. Implementação do Sistema de Visão Estéreo

Para a criação de um sistema de visão estéreo artificial, que permita a reconstrução 3D

exposta no capítulo anterior, foi necessária a aquisição e instalação de hardware, bem como, a

criação de software para a captação e processamento de imagens.

Relembrando os objectivos do projecto: a determinação da posição de um objecto em

movimento e a previsão da sua trajectória; existem duas características que influenciam a

escolha do hardware e do software utilizado:

- A precisão no cálculo da posição 3D do objecto.

- A velocidade de captação e processamento das imagens.

A escolha do hardware teve ainda em conta o factor financeiro, e na escolha do programa de

software foi decisivo o software já desenvolvido nesta área, nomeadamente a biblioteca de

visão computacional OpenCV, com código livre. Foi ainda adaptado o software que vinha com

as câmaras de modo a obtermos um sistema que captasse as duas imagens em simultâneo, as

versões que vinham com as câmaras só possibilitavam a interacção das câmaras

isoladamente.

3.1 Ligações entre o Setup experimental

Figura 22 – Ligações entre os componentes do Setup experimental.

Page 45: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

36

3.2 Algoritmo do Projecto

Figura 23 – Algoritmo do Projecto.

O algoritmo desenvolvido para a visão estéreo foi implementado em matlab em simulação no

PC Host, para verificar a precisão teórica dos cálculos, com a introdução de um sistema de

visão real o algoritmo foi convertido para linguagem C++ para aumentar a rapidez de execução.

O anel de controlo do robô que se encontra no PC Target foi desenvolvido em simulink.

Os algoritmos desenvolvidos para as duas versões (tracking e previsão) do sistema de visão

encontram-se descritos nas Figura 24 e Figura 25.

Page 46: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

37

Figura 24 – Esquema de Tracking

Page 47: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

38

Figura 25 – Esquema de Previsão

Page 48: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

39

3.3 Hardware Seleccionado

3.3.1 Par Estéreo

As câmaras adquiridas foram duas câmaras uEye com as seguintes características de relevo

no projecto:

Tipo de Sensor: CMOS

Resolução da imagem: 752 x 480 [ Pixels ]

Pixel clock range: 5 a 40 MHz

Nº máximo de frames/imagens por segundo em modo freerun: 87 fps

Nº máximo de frames/imagens por segundo em modo trigger: 78 fps

Tempo de exposição em modo freerun: de 0.08 ms a 5500 ms

Tempo de exposição em modo trigger: de 0.08 ms a 5500 ms

Figura 26 – Câmara uEye.

Estas câmaras possuem dois métodos de funcionamento relativamente à captura de imagem:

1. Freerun Mode – tira a fotografia seguinte logo que termine a transferência da fotografia

anterior, da câmara para o computador.

2. Trigger Mode – só tira a fotografia seguinte quando recebe a ordem para capturar uma

nova fotografia, é um método mais lento mas o único que garante o sincronismo entre

as imagens da câmara da esquerda e as imagens da câmara direita. Este modo de

captura tem ainda duas opções:

2.1 Trigger por Software, modo de captura de imagem em que o sinal de trigger é

enviado por porta USB pela mesma via de comunicação em que é transferida a

imagem para o computador.

2.2 Trigger por Hardware , modo de captura de imagem em que o sinal de trigger é

enviado externamente, para esta opção foi desenvolvido um programa para enviar

um sinal de trigger por porta paralela, no entanto, houve necessidade de criar uma

placa que ampliasse este sinal pois a sua potência não era suficiente para activar o

trigger das câmaras.

Page 49: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

40

Figura 27 - Esquema de ligação da câmara ao computador por USB 2.0.

O trigger externo está isolado em dois fios externos ao cabo USB :

Trigger Input + - é o Vermelho

Trigger Input - - é o Preto

A activação do flash externamente tem o mesmo sistema de activação que o trigger externo

mas encontra-se desligado.

Foi construída uma placa de suporte para fixar as duas câmaras de forma a não restringir

nenhum dos seis graus de liberdade de cada câmara, por outro lado esta placa teria que ser

robusta o suficiente para que após um ajuste para a posição desejada se conseguisse manter

fixa nessa posição.

Figura 28 – Placa de suporte do par estéreo.

3.3.2 Placa de Sinal Trigger Externo

Confirmou-se que o trigger por software em que a comunicação é feita por USB 2.0 é mais

rápido, pelo que se abandonou a ideia de trigger por hardware. No entanto, a placa de

ampliação de sinal foi desenvolvida e o programa de captação de imagens criado tem a

possibilidade de captação por hardware.

Page 50: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

41

Figura 29 - Placa de ampliação do sinal de trigger externo

LED1

0.33uF

C2

330

R1

VCC

IN1

2OUT

3

GND

1

0.33uF

C1

12

JP1

Header 2

1

20

2

21

3

22

4

23

5

24

6

25

7

8

9

10

11

12

13

14

15

16

17

18

19

27

26

JDB1

D Connector 25

Q12N3904

U1

6N139

VCC

330R3

10kR2

1k

R4

12

JP2

Header 2

12

JP3

Header 2

Alimentação

Andar de potência

VCC

VCC

Trigger - Câmara 1

Trigger - Câmera 2

Figura 30 – Esquema da placa de Hardware criada para ampliar o sinal de trigger externo.

Page 51: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

42

3.4 Software Desenvolvido

Os programas de demonstração de captação de imagem que vinham com as câmaras uEye

[17] foram desenvolvidos para as câmaras trabalharem individualmente e não para um

funcionamento em par estéreo, houve, por isso, uma reestruturação no programa de captação

da imagem. Este programa foi desenvolvido em C++ devido ao software existente que vinha

com as câmaras estar nesta linguagem e devido à rapidez exigida na captura e tratamento de

imagem, em tempo real. Embora o Matlab possua melhores ferramentas gráficas e esteja

direccionado para trabalhar com matrizes, é uma linguagem interpretada de alto nível o que

compromete a rapidez de execução necessária para esta aplicação, ao contrário do C++ que é

uma linguagem compilada.

O processamento de imagem foi efectuado com base em funções já existentes na biblioteca de

Visão Computacional da Intel – OpenCV (Open Computer Vision)[18]. Esta biblioteca é uma

biblioteca mundial, desenvolvida com o contributo de vários investigadores e permite

uniformizar a base de trabalho nesta área de investigação.

3.4.2 Inter-ligação entre software das câmaras uEye e as bibliotecas

do OpenCV

Variáveis de relevo na aquisição de imagens:

i Variável associada ao número da câmara com que estamos a lidar,

0 para a câmara esquerda e 1 para a câmara direita.

m_hCam[i] Ponteiro que indica as localizações das câmaras

m_hWndDisplay[i] Ponteiro que guarda a localização das duas janelas de Display

m_nColorMode[i] Variável que guarda o tipo de cor captada pelo sensor das câmaras.

Escala de cinzentos - Y8

RGB16

RGB24 – 3 bits por pixel( Vermelho, Verde e Azul)

RGB32 – 4 bits por pixel( Vermelho, Verde, Azul e Gama)

Vector [2x1]=[1;1]

m_nBitsPerPixel[i] Nº de bits necessários para armazenar um pixel

Vector [2x1]=[24;12]

m_nSizeX[i] Nº de colunas da imagem em pixels

Largura da fotografia: 752

m_nSizeY[i] Nº de linhas da imagem em pixels

Altura da fotografia: 480

m_CamCount Nº de câmaras encontradas ligadas ao computador

m_lMemoryId[i] Identificador de Memória das câmaras

Page 52: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

43

m_pcImageMemory[i] Ponteiro para o buffer onde se encontra a imagem de cada câmara

(imagem guardada sob a forma de vector em que cada pixel

corresponde a 3 entradas seguidas do vector, uma para cada valor

da intensidade de cor: Blue, Green, Red (por esta ordem).

m_nTimeout Variável que calcula o intervalo de tempo necessário entre fotos

seguidas.

Funções de relevo na aquisição de imagem :

is_GetNumberOfCameras função que procura as câmaras que se encontram ligadas ao

computador e atribui-lhes um número. Câmara 0(esquerda) e

camara 1(direita).

is_SetImageSize função que estabelece a altura e a largura, em pixels, da

imagem a captar

is_SetExposureTime função que estabelece o tempo de exposição

is_SetPixelClock função que estabelece o tempo de captura

is_AllocImageMem função que cria os buffers aonde posteriormente

serão alocadas as imagens.

is_SetExternalTrigger função que configura as câmaras para trabalhar

no modo trigger.

is_FreezeVideo função que ordena a captura das imagem quando o sinal de

trigger for activado.

is_SetImageMem função que faz a transferência da imagem de um buffer da

memória da câmara para um buffer na memória do computador

Figura 31 - Esquema da sequência de operações no modo trigger.

Page 53: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

44

Variáveis de relevo no processamento de imagem :

Formato IplImage Estrutura criada para manipulação de imagens nos vários

processamentos de imagem da biblioteca OpenCV.

nSize Dimensão da estrutura

nChannels Nº de canais de cor(m_nBitsPerPixel)

width Largura da imagem

height Altura da imagem

imageSize Dimensão da imagem (width* height* nChannels)

widthStep Dimensão da linha

*imageData Ponteiro para a imagem de cada câmara

Variáveis do projecto com formato IplImage:

image[i] – imagem que é copiada dos buffers das câmaras com 3 canais de cores :Blue, Green,

Red (por esta ordem)

image_bw[i] – Imagem binarizada de acordo com o filtro de cor.

Sabendo que estas variáveis têm a informação da imagem em vector, é utilizado uma variável

que aponta para a posição do pixel em que estamos a trabalhar. Para uma imagem com

apenas um canal de cor(escala de cinzentos) o ponteiro do pixel anda de um em um mas para

o caso de uma imagem a cores o ponteiro anda de três em três.

Funções de relevo no processamento de imagem :

Memcpy função que copia os valores da imagem para uma estrutura IplImage

CV_INIT_PIXEL_POS função que posiciona o pixel de trabalho na imagem.

CV_MOVE_TO função que permite deslocar-me de um pixel para outro dentro uma

Imagem.

cvInitMatHeader criação de um vector ou matriz

cvMatMul função que permite multiplicar matrizes

cvSolve função que resolve o sistema de equações apresentado na

1 2 2 1

1 2 2 1

11 1 1 1

1

1 1 1 12

m m c c

m m c c

X X X YK

K Y Y Y X

= ⋅ Eq. 15

Page 54: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

45

Variável uEye Variável OpenCV Descrição

M_pcImageMemory image[i]->imageData Buffer onde está guardada a imagem

m_nSizeX[i] image[i]->width Número de colunas da imagem

m_nSizeY[i] image[i]->height Número de linhas da imagem

m_nBitsPerPixel[i] image[i]->nChannels Número de canais de cor

Tabela 2 – Tabela de relação de variáveis entre diferentes softwares.

3.5 Calibração

A calibração das câmaras é a operação que permite determinar os parâmetros intrínsecos e

extrínsecos das câmaras a partir de um conjunto de imagens de um objecto cujas dimensões

são conhecidas. Normalmente, a calibração é realizada utilizando um objecto planar

subdividido em pequenos elementos quadrangulares (ex: tabuleiro de xadrez). Neste projecto

foi utilizada esta base com uma grelha de medição em que cada elemento quadrangular tem a

dimensão 3 x3 cm.

Figura 32 – Objecto utilizado para calibrar as câmaras.

Esta é uma etapa do projecto em que despende bastante tempo ao tentar aperfeiçoar ao

máximo, adaptando o teórico ao real. Para realizar esta tarefa foi utilizada a toolbox Calib do

MATLAB [20], uma ferramenta bastante completa e muito útil para não perder muito tempo,

permite automatizar processos repetitivos e conjugar resultados de várias calibrações feitas em

imagens diferentes.

3.5.1 Calibração das câmaras individualmente - Parâmetros

Intrínsecos

Neste sub capítulo iremos expor apenas os resultados da utilização e não o funcionamento da

toolbox. No entanto, os exemplos existentes em [20] são suficientes para perceber a sua forma

de utilização.

Page 55: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

46

Figura 33 – Toolbox Calib do MATLAB.

Figura 34 – Conjunto de fotografias utilizado para determinar os parâmetros intrínsecos das

câmaras.

Figura 35 – Imagem tridimensional das várias posições captadas do objecto, calibração dos

parâmetros intrínsecos da câmara.

Foi tomada a opção de corrigir a distorção da imagem num cálculo à parte e portanto esta não

entrará na matriz de Calibração K.

Page 56: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

47

Utilizando a toolbox Calib os parâmetros intrínsecos da Eq. 5 assumem uma nova

nomenclatura :

0

0

0 0 (1) 0 (1) 0

0 0 0 (2) (2) 0

0 0 1 0 0 0 1 0

u

v

f K u fc cc

K f K v fc cc

⋅ − = ⋅ − =

Eq. 67

Foram feitos 3 testes de calibração individual para cada câmara, cada um destes testes com

base em 25 fotografias diferentes, para garantir a precisão dos parâmetros intrínsecos que

apresentamos nas tabelas seguintes:

Câmara Esquerda fc(1) Erro fc(2) Erro Cc(1) Erro Cc(2) Erro

1º Teste 1329.674 4.648 1329.831 4.659 365.326 9.770 224.684 7.024

2º Teste 1330.959 4.110 1330.802 4.128 363.675 8.690 223.100 6.277

3º Teste 1334.683 5.298 1333.165 5.316 361.200 11.019 219.310 7.960

Tabela 3 – Resultados da calibração dos parâmetros intrínsecos da câmara esquerda.

Câmara Direita

fc(1) Erro fc(2) Erro Cc(1) Erro Cc(2) Erro

1º Teste 1342.599 5.901 1343.364 5.591 374.145 10.097 234.310 8.467

2º Teste 1337.651 5.820 1338.695 5.540 369.689 9.884 237.256 8.474

3º Teste 1339.514 4.180 1340.517 4.459 375.885 9.150 237.470 6.370

Tabela 4 – Resultados da calibração dos parâmetros intrínsecos da câmara direita.

Os parâmetros da matriz de calibração escolhidos para as câmaras foram os parâmetros do 3º

teste da câmara direita. Foram realizados vários testes com os diferentes parâmetros

intrínsecos para cada câmara e matrizes de calibração diferentes para cada câmara, no

entanto, não houve diferenças significativas nas coordenadas da posição de um objecto

parado.

Correcção da distorção na imagem

Para podermos aplicar a reconstrução 3D correctamente temos de eliminar a ligeira distorção

provocada pela lente.

Foi calculado Kc, uma aproximação polinomial da correcção da distorção em função da

distância do ponto ao centro da imagem (distorção radial), estamos a considerar que só existe

distorção radial porque a distorção tangencial é muito inferior à radial, podendo ser

desprezada.

2 2

2 4 6

1 2 3

[ ]

1

c c

d d

c

r x y mm

K k r k r k r

= +

= + ⋅ + ⋅ + ⋅ Eq. 68

Page 57: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

48

1k, 2k

, 3ksão normalmente designados por parâmetros da distorção.

Utilizando a aproximação polinomial da distorção é feita a correcção do vector director da recta

no espaço que contem o ponto P e passa pelo centro óptico da câmara:

[ ]

0

0

10

1 1 1 10

1 10 0 1

c cu u

d d

c c

d d d

c c c v v

u

K Kx u

vm m y v mm

K K K K K

= ⋅ = = ⋅ ⋅

Eq. 69

Figura 36 – Erro em Pixels associado à distorção da imagem 2 para cada “nó da malha” do nosso

objecto.

Figura 37 - Erro em Pixel associado à distorção para todos os nós de todas as 25 imagens do

objecto, Um erro máximo de 6 pixels nas extremidades da imagem.

Para visualizar os efeitos dos parâmetros da distorção foi criada uma aplicação que converte

uma imagem da câmara numa imagem sem distorção. Em seguida, apresenta-se um exemplo:

Page 58: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

49

Figura 38 – Imagem original e após a eliminação da distorção.

Notar as alterações nos cantos da imagem e o desaparecimento da curvatura nas linhas da

grelha para verificar a eliminação da distorção.

3.5.2 Calibração do par Stéreo - Parâmetros extrínsecos

Os parâmetros extrínsecos de uma câmara são a sua posição e orientação no espaço, neste

caso iremos determinar os parâmetros extrínsecos de uma câmara relativamente à outra, ou

seja, a translação e a rotação do referencial de uma câmara em relação ao referencial da outra.

No sub capítulo anterior, calibrámos os parâmetros que relacionam as coordenadas em

milímetros e as coordenadas de pixels, de um ponto no plano da imagem, com esta informação

já podemos calibrar a posição de uma câmara em relação à outra: parâmetros extrínsecos.

Estes parâmetros são então calculados invertendo o processo de reconstrução 3D, utilizando

um objecto de dimensões conhecidas e pares de imagens desse objecto na mesma pose.

Figura 39 – Visualização da calibração dos parâmetros extrínsecos para uma distância média do

objecto de 0.5 metros.

Page 59: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

50

Figura 40 – Visualização da calibração dos parâmetros extrínsecos para uma distância média do

objecto de 1,6 metros.

A toolbox calib tem uma ferramenta (calib_stereo.m) que permite calcular os parâmetros

extrínsecos de um par estéreo. Para isso é necessário analisar pares de imagens de um

objecto na mesma pose e fazer a calibração dos parâmetros intrínsecos individualmente com

esses pares de imagens antes de proceder ao cálculo dos parâmetros extrínsecos.

Par Estéreo

Vector de Translação - [T] em [mm]

Erro em [mm]

Rotação em graus

Erro em graus

1º Teste

-222.51435

-1.51253

1.26757

0.67380

0.49159

4.72407

-0.02681

0.00221

-0.01902

0.00692

0.01105

0.00039

Tabela 5 – Resultados da calibração dos parâmetros extrínsecos do Par Estéreo.

O teste relacionado com a calibração visível na Figura 40 foi bastante mais preciso que os

anteriores e portanto foi o único a ser tido em conta. O facto da variação da coordenada z ser

de quase 5 cm foi um problema comum em todos os ensaios a única justificação encontrada é

de que devido às câmaras se encontrarem demasiado próximas uma da outra e a coordenada

z ser bastante maior que as outras duas coordenadas; os vectores directores das rectas no

espaço tornam-se quase paralelos e portanto o erro na coordenada z aumenta.

A rotação entre os referenciais encontra-se representada na forma de vector segundo a

fórmula de Rodrigues, invertendo esta fórmula podemos passar para a Matriz de Rotação,

R [3x3] .

Page 60: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

51

0.9998 0.0190 0.0025

-0.0190 0.9995 0.0268

-0.0020 -0.0268 0.9996

R

=

Eq. 70

Pela análise da matriz de rotação optou-se por desprezar a rotação entre os referenciais, pois

ao adoptar a matriz identidade como matriz de rotação estamos a inferir num erro de 0.0268,

inferior a 3%.

3.6 Tratamento de Imagem

O tratamento de imagem efectuado foi direccionado para captar cores vivas e berrantes, mais

concretamente as cores laranja e o amarelo. Cores que contrastem com o meio envolvente da

área de trabalho do robô.

Filtro de cor utilizado

( 5)

(( 50) ( 50))

: : 0( )

: 255( )

: 255( )

Se canal de azul

se canal de Vermelho e canal de Verde

Então Então pixel da imagem binária preto

Caso Contrário pixel da imagem binária branco

Caso Contrário pixel da imagem binária branco

≥ ≥

= =

=

Houve o cuidado de criar um encadeamento das condições if, permitindo que o canal azul

elimine logo todo um conjunto de pontos de cores mais claras (grande parte dos pontos da

imagem) e só dentro do grupo de pontos com ausência do azul é que será feita a verificação

dos outros canais de cor, para distinguir as cores laranja e amarelo das restantes cores. Com

esta operação diminuímos o peso computacional envolvido no filtro de cor.

3.6.1 Luminosidade

Este parâmetro é fundamental para a boa captação da imagem sendo dependente do sistema

de iluminação, do tempo de exposição do sensor à luz e do ângulo de abertura da lente (que

nestas câmaras pode facilmente ser afinado manualmente). Podemos verificar um ensaio

efectuado para a detecção do objecto para uma gama de luminosidades compreendida entre o

caso de iluminação fraca e o caso de saturação luminosa.

Page 61: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

52

Figura 41 – Testes de Iluminação.

Foram executados vários testes de forma a optimizar o contraste e o balanço de cores das

imagens de acordo com o tempo de exposição e a iluminação artificial do laboratório. Os

valores ajustados experimentalmente para as condições de luz artificial presente no laboratório,

foram guardados num ficheiro, apresentado no anexo 4. Foi criada a opção de introduzir estes

valores na aplicação, descrita na secção 3.7. Os resultados são visíveis na imagem seguinte.

Figura 42 –Optimização dos parâmetros de contraste e do balanço de cores na imagem.

Page 62: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

53

3.7 Tempo de Execução do sistema de visão

A velocidade de captação das câmaras e processamento de imagens foram sendo optimizadas

ao longo dos testes experimentais, as limitações encontradas e as soluções que foram criadas

para ultrapassar estas limitações serão explicadas neste sub-capítulo.

O software de demonstração (DEMO) que vinha com as câmaras uEye é um software bastante

completo, no entanto, não têm a opção de sincronismo entre as duas câmaras, necessário para

este projecto.

Os resultados obtidos nestas demonstrações, de 50 frames por segundo, só são possíveis se

as captações das imagens forem assíncronas pois o pico de velocidade de transferência das

imagens das câmaras para o computador é repartido em dois instantes diferentes.

A velocidade máxima de transferência das portas USB 2.0 é de 60 MB/s=480 Mbps e

dificilmente se obtém este valor pelo que se deve contar apenas com 50 MB/s. Resultando 25

MB/s para cada câmara. Cada imagem tem 752x480x3=1082880 byte e portanto, por segundo,

a porta USB 2.0 só consegue debitar no máximo: 625 10

23.0871082880

⋅= frames por segundo.

A câmara demora portanto 143.31

23.086= ms a enviar cada frame, neste valor é só

contabilizado o tempo de transferência, no entanto à que ter em conta o tempo de exposição

da lente, no mínimo de 10 ms para captar a luz mínima para obter uma boa imagem logo

teremos uma redução para 118.76

43.31 10=

+ms.

Foi então analisada a hipótese do filtro de cor ser efectuado na própria câmara e ser enviada

uma imagem binária, triplicando a velocidade de transferência. Infelizmente, constatou-se que

as câmaras enviam sempre as imagens em formato Bayer, formato explicado no anexo 5, e a

conversão para o formato de cor desejado é realizada no computador.

Foi instalada uma nova placa PCI USB 2.0 para se ter máxima velocidade de transferência de

dois controladores independentes, ambos a debitar no máximo 60 MB/s=480 Mbps. Com esta

nova implementação foi possível obter os resultados apresentados nas tabelas seguintes:

Pixelclock – tempo total de captura (tempo de exposição + tempo de transferência da imagem

da câmara para o computador).

ExposureTime – tempo de exposição luminosa.

O FrameRate – nº de frames por segundo, está dependente dos dois parâmetros anteriores.

Page 63: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

54

1º teste Pixelclock – 25

ExposureTime – 10.32 ms

Nº de

Imagens

Tempo

[s]

Nº de Frames por

segundo [f.p.s.]

Processador

do PC Visão

Com display e com processamento 500 31 16.13 86 %

Sem display e com processamento 500 29 17.24 77 %

Sem display e sem processamento 500 28.6 17.5 66 %

Tabela 6 – 1º teste para determinação do nº máximo de frames por segundo.

2º teste Pixelclock – 40

ExposureTime – 10 ms

Nº de

Imagens

Tempo

[s]

Nº de Frames por

segundo [f.p.s.]

Processador

do PC Visão

Com display e com processamento 500 28.48 17.56 90 %

Sem display e com processamento 500 24.83 20.14 83 %

Sem display e sem processamento 500 24.83 20.14 71 %

Tabela 7 - 2º teste para determinação do nº máximo de frames por Segundo.

Verificou-se que o tempo de captura das imagens era limitado pelas funções do software uEye

que convertiam o formato Bayer para formato RGB. Substituindo estas por funções do

“OpenCV” semelhantes conseguiu-se aumentar a velocidade de aquisição chegando a valores

de 30 frames por segundo. No entanto, as imagens obtidas não permitiam a identificação do

objecto. Conclui-se então que o software das câmaras uEye possuem algoritmos de contraste

e brilho que permitem uma melhor definição da cor na imagem, no entanto o esforço

computacional envolvido provoca um aumento no tempo de captura e consequente redução do

nº de frames por segundo.

Para conseguir evitar os algoritmos de contraste e brilho, foi implementado um filtro de cor que

possibilitou identificar o objecto, este filtro provocou uma redução menos significativa do nº de

frames por segundo relativamente aos algoritmos de contraste e brilho do software uEye.

3º teste Pixelclock – 40

ExposureTime – 10 ms

Nº de

Imagens

Tempo

[s]

Nº de Frames por

segundo [f.p.s.]

Processador

do PC Visão

Com display e com processamento 500 16.7 29.94 89 %

Sem display e com processamento 500 14.8 33.78 81 %

Sem display e sem processamento 500 14.3 34.97 61 %

Tabela 8 -3º teste para determinação do nº máximo de frames por Segundo, com o software de

captação optimizado

Page 64: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

55

Figura 43 – Tempo de execução de um ciclo do sistema de visão

Com a implementação da organização direccionada de threads de acordo com os dois

processadores disponíveis no computador foi possível obter resultados melhores e mais

estáveis, e uma melhor performance.

4º testePixelclock – 40

ExposureTime – 10 ms

Nº de Frames por

segundo[f.p.s.]

Processador

do PC Visão

Com display e com processamento 33 60 %

Sem display e com processamento 40 45 %

Sem display e sem processamento 40 30 %

Tabela 9 - 4º teste para determinação do nº máximo de frames por Segundo, com o software de

captação optimizado

3.8 Aplicação Desenvolvida do Sistema de Visão

Foi criada uma aplicação user-friendly para visualizar a captação das imagens e a confirmar

visualmente a identificação do objecto na imagem.

Page 65: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

56

Figura 44 – Janela criada para visualização do sistema de visão.

Nesta aplicação encontram-se duas janelas que mostram as imagens obtidas das câmaras e

duas que mostram as imagens binárias obtidas após o tratamento de imagem efectuado.

Existe também um conjunto de opções que se explicam de seguida:

Mostrar imagens - Opção de fazer ou não o display das imagens, envolvendo maior peso

computacional e diminuindo o nº de frames por segundo

Processar imagens – Opção que permite só fazer a captura para analisar as perdas de tempo

com o processamento de imagem efectuado.

Tracking/Previsão – Opção que permite mudar para o modo de Tracking ou para o modo de

Previsão.

Coordenadas da posição da bola – Indica as coordenadas da posição da bola, no referencial

de base do robô.

Coordenadas do ponto de intercepção: Indica as coordenadas do ponto de intercepção, no

referencial de base do robô.

Frames Per second: Indica o nº de frames da câmara esquerda, da câmara direita e o máximo

delimitado por ambos.

No canto inferior esquerdo da janela encontra-se a opção de escolher o filtro de cor a utilizar:

Bola Laranja: Para objectos com a cor laranja.

Bola Amarela: Para objectos com a cor amarela.

Page 66: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

57

Na área lateral direita da janela encontram-se as seguintes opções:

Capture Image – Inicializa a captação nas duas imagens

Stop Capture – Pára a captação

Tempo de captura :

Continuous Capture – modo continuo de captação(vídeo) por tempo ilimitado

Use Timer - Modo continuo de captação(vídeo) durante um tempo limitado.

(Sem uma destas opções ligadas é apenas captada uma fotografia em cada câmara.)

Modo de captura :

Trigger off – trigger desligado

Software Trigger – Trigger por software

Hardware Trigger – trigger por hardware

Opcionalidade de Optimização dos Parâmetros de Captação

Load Parameter - Opção de introduzir os valores optimizados guardados em ficheiro

apresentado no anexo 4.

3.9 Comunicação via UDP

UDP - User Datagram Protocol / Universal Datagram Protocol, protocolo de comunicação

por rede criado para enviar pequenas mensagens entre computadores. É semelhante ao

protocolo de comunicação TCP/IP no entanto ao contrário deste é um protocolo em que não

existe confirmação de que os dados chegaram realmente ao seu destino, se chegaram pela

ordem certa ou se não houve dados corrompidos.

É um protocolo mais simples funcionando apenas num sentido: do emissor para o receptor.

Sem a verificação, por parte do emissor, de que o receptor ainda se encontrar em condições

para receber a mensagem. É mais rápido mas menos seguro que o protocolo TCP/IP.

A comunicação UDP tem a vantagem de poder enviar para vários computadores em

simultâneo ( Packet Broadcast ), ao contrário da comunicação TCP/IP.

Como o objectivo é enviar 3 números em formato Double (posição espacial da bola), que é

considerada uma informação de pequena dimensão, e como o intervalo de tempo entre cada

envio é superior a 0.01 segundos (100 frames por segundo); o risco de perda é considerado

mínimo.

É frequentemente utilizado em aplicações de xpc-target em que o envio da informação é

realizado num só sentido.

Nesta aplicação o emissor é o PC da Visão e o receptor é o PC Target.

No receptor foi utilizado o bloco de MATLAB da toolbox xPC Target já existente. Estes blocos

foram gerados a partir de s-functions que foram copiadas e aproveitadas também para criar o

código em C++ do sistema de visão, o emissor.

Page 67: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

58

4. Simulações

4.1 Reconstrução de Trajectórias em Simulação

Numa fase inicial do projecto foram desenvolvidas algumas simulações em MATLAB que

poderão ter grande utilização em projectos futuros, de entre elas destacou-se:

Simulação 3 – Determina as coordenadas em pixels nas imagens de um ponto sabendo as

suas coordenadas no espaço.

Simulação 4 – Faz o processo inverso, a reconstrução 3D de um ponto sabendo as

coordenadas em pixels desse ponto nas imagens.

Simulação 5 – Permite alterar a posição das câmaras e visualizar qual a região no espaço que

consegue ser captada pelas duas câmaras.

Simulação 6 – Recria as imagens de um lançamento de um projéctil fictício. Para tal é

necessário o utilizador introduzir o ponto inicial de trajectória, a velocidade inicial, a orientação

da velocidade inicial, o número de pontos da trajectória que queremos guardar, e o número de

frames que as câmaras tiram por segundo(f.p.s). Guarda os valores da posição do objecto nas

duas imagens (em pixels) , isto para cada ponto da trajectória.

Figura 45 – Menu inicial para introdução dos dados da trajectória.

Page 68: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

59

Figura 46 – Mensagem de aviso no caso de o ponto não ser captado pela câmara.

Figura 47 –Visualização dos pontos da trajectória gerados nas duas imagem .

Simulação 8 – Simulação que completa a simulação 6, isto é, a partir dos dados obtidos da

simulação 6 é gerada a trajectória tridimensional do objecto e estimado o ponto de intercepção

da trajectória da bola com o plano de actuação do robô.

Page 69: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

60

Figura 48 – Visualização da trajectória 3D e do ponto de intercepção.

Figura 49 – Janela criada para mostrar os dados obtidos na simulação.

Nota: Para correr qualquer uma destas aplicações basta abrir o MATLAB e posicionar-se na

directoria que tem as m.files, e escrever o nome da simulação: ex: simulacao4

É necessário adicionar as toolboxs: TOOLBOX_calib e vstoolbox_aaa

Page 70: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

61

4.2 Teste de comunicação UDP e verificação da cinemática

inversa

Foi desenvolvida uma aplicação em Simulink para se poder testar, no PC Host, a comunicação

UDP e a cinemática Inversa. Esta aplicação foi muito útil para testar também qual o tempo

entre cada envio da posição do objecto, foi aproveitada a aplicação para gerar os gráficos da

posição da bola, ao longo do tempo, dada pelo sistema de visão. Para este efeito foi

implementado um bloco (RTBlock) que permitisse ajustar o tempo de execução, de forma a

este ser o mais próximo possível do tempo real.

Figura 50 – Bloco criado para testar a comunicação via UDP e verificar a cinemática inversa.

Figura 51 – Visualização das coordenadas da bola num movimento aleatório.

Page 71: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

62

Na Figura 51, pode-se verificar que caso não esteja presente nenhum objecto no campo visual

das duas câmaras em simultâneo, o sistema de visão envia para o anel de controlo do robô a

posição de descanso [30,-50,40] [cm], sempre que o objecto sai do campo de visão de uma

das câmaras, o robô é enviado para esta posição.

4.3 Modelo Virtual do Robô Puma

Esta aplicação basicamente é a junção de dois blocos em Simulink:

O gerador de trajectórias, o bloco principal da aplicação real, com o bloco de comunicação via

UDP incorporado para receber a informação da bola directamente do sistema de visão.

O modelo virtual do Puma 560 que recebe as coordenadas de junta e posiciona o elemento

terminal nessa localização.

Convém referir as alterações feitas no modelo inicial recebido do Puma: foi adicionada uma

bola de cor laranja de raio 2 cm cujo coordenadas vêm directamente do bloco de comunicação

UDP, e a garra foi ampliada pois a distância do punho ao centro da garra no modelo virtual

inicial era de 15 cm e a distância real é de 22 cm.

Agora é possível correr a simulação em realidade virtual e a experiência real ao mesmo tempo,

pois a comunicação UDP pode enviar a mesma informação do sistema de visão para mais do

que um computador.

Figura 52 – Puma 560 no mundo virtual com a incorporação da bola.

Page 72: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

63

5. Controlo do Robô em Simulink

Tendo as possibilidades de :

1. ir ao encontro da bola, versão Tracking;

2. estimar um ponto por onde a bola vai passar e o robô antecipar-se ao movimento da

bola, versão de Previsão;

convém referir que para ambas as versões a acção do robô é semelhante, basicamente, serão

dadas as coordenadas de um ponto final de intercepção para onde o robô se deve deslocar.

Figura 53 – Bloco Principal com o botão se segurança: Mover/Parar.

Na Figura 533, encontra-se o bloco principal onde está presente o botão de ligar e desligar a o

anel de actuação do Puma, funcionando assim como botão de emergência.

Figura 54 –Bloco principal do Controlo de Posição das Juntas.

Na Figura 544, é apresentado o bloco que contém o controlo de juntas por posição e a opção

de enviar o robô para a posição home.

Page 73: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

64

Figura 55 – Bloco onde é inicializado o temporizador.

Foi criado um bloco para reiniciar o temporizador a zero sempre que é recebida uma nova

posição final de trajectória (qf) e se o botão mover estiver activado (Figura 566). Nas anteriores

aplicações, o temporizador só era iniciado com o botão mover o que era extremamente

perigoso para o caso de se alterar algum parâmetro e bastante limitativo.

Figura 56 – Bloco que permite fazer o reset ao temporizador sempre que recebe uma nova posição

final do sistema de visão.

Pensou-se na hipótese do tempo de trajectória ser calculado no sistema de visão, no entanto

optou-se por uma vertente mais simples, o tempo de trajectória é em função da distância em

coordenadas de junta que o robô tem de percorrer deste modo asseguramos a segurança na

performance do robô. Se o tempo viesse do sistema de visão não havia maneira de garantir a

integridade física das juntas.

Page 74: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

65

Figura 57 – Bloco onde é calculado o tempo em função da distância a percorrer.

Este bloco permite a alteração da velocidade de actuação do robô em tempo real, ou seja, o

tempo de execução de trajectória é determinada com base na diferença de coordenadas de

junta da posição actual do robô e da posição final (posição da bola no caso de tracking,

posição do ponto de intercepção no caso de Previsão).

O valor do ganho K, foi calculado experimentalmente e pode variar entre 0.02 e 0.05, sendo

0.02 o valor que permite maior rapidez na actuação das juntas, não comprometendo a

segurança e a execução da trajectória sem oscilações. Existe também uma saturação/limitador

do valor do tempo de execução da trajectória que não permite que este seja inferior a um valor

que varia entre 0.015 para uma actuação mais “sensível” e 0.025 para a uma actuação do robô

mais suave.

Page 75: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

66

6. Resultados Experimentais

6.1 Resultados da Calibração

Para realizar estes testes foi colocada a bola na garra do robô e este foi enviado para pontos

conhecidos. Simultaneamente, foi lida a posição da bola no sistema de visão.

Obteve-se então o erro da calibração pela diferença entre a posição real e a posição dada pelo

sistema de visão.

Teste 1

Coordenadas do

Elemento

Terminal do Robô

Coordenadas

dadas pelo

Sistema de Visão

Coordenadas no referencial do Par

estéreo

ponto

X

[cm]

Y

[cm]

Z

[cm]

X

[cm]

Y

[cm]

Z

[cm]

X

[cm]

Y

[cm]

Z

[cm]

Distância

[cm]

Erro

[cm]

1 -50 -50 40 -49 -50 39 37 -13 181 185,20 1,41

2 -50 -50 20 -51 -50 20 38 6 181 185,04 1,00

3 -50 -50 0 -52 -52 -1 38 28 181 187,05 3,00

4 0 -70 40 1 -70 41 41 -14 236 239,94 1,41

5 0 -70 20 2 -72 21 41 5 236 239,59 3,00

6 0 -70 0 3 -74 0 42 27 237 242,20 5,00

7 0 -65 20 5 -67 21 36 5 238 240,76 5,48

8 0 -65 40 4 -64 41 35 -14 237 239,98 4,24

9 25 -55 40 28 -52 42 15 -15 257 257,87 4,69

10 25 -55 20 29 -53 22 15 4 256 256,47 4,90

11 25 -60 0 28 -60 1 21 25 257 259,07 3,16

12 25 -60 50 26 -57 52 21 -25 256 258,07 3,74

13 25 -60 60 26 -56 62 20 -35 257 260,14 4,58

14 50 -50 50 48 -47 52 5 -25 273 274,19 4,12

15 50 -50 40 47 -47 43 5 -16 273 273,51 5,20

16 50 -50 20 50 -49 23 5 3 273 273,06 3,16

17 50 -50 0 49 -50 2 5 24 272 273,10 2,24

18 50 -80 0 47 -88 0 42 27 283 287,37 8,54

19 50 -80 20 46 -86 22 42 4 283 286,13 7,48

20 50 -80 40 44 -83 42 41 -15 280 283,38 7,00

Tabela 10 – Tabela com resultados de pontos da área de trabalho do Robô.

Nos resultados apresentados na Tabela 10, nota-se uma relação entre o erro e a distância a

que o objecto se encontra do referencial do par estéreo, isto porque as câmaras se encontram

muito próximas uma da outra (a 22 cm) relativamente à distância a que o objecto se encontra.

Page 76: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

67

Surge então um efeito de paralelismo entre as duas rectas que se interceptam no espaço. O

erro na coordenada z aumenta devido a este paralelismo. Uma das soluções para evitar este

efeito é afastar mais as câmaras, outra é adaptar a calibração à zona de actuação do robô,

mapear a área de trabalho do robô de forma a corrigir este erro e outros como a distorção das

lentes nos cantos das imagens (de difícil calibração).

Figura 58 – Posição tridimensional dos pontos reais e dos pontos dados pelo sistema de visão.

Como é visível na Figura 588 os pontos mais afastados do centro do referencial do par estéreo

são os pontos com maior erro de posição.

6.2 Resultados do controlo de Junta

6.2.1 – Versão Tracking

Antes de realizar qualquer experiência que envolvesse o movimento do robô, realizaram-se

testes para saber qual a informação enviada pelo sistema de visão para o anel de controlo

deste. Para tal, foi utilizada a aplicação abordada na secção 4.2, que permite ao PC Host

receber, via UDP, a informação do sistema de visão que se encontra no PC Visão. A análise

destes resultados não foi incluída neste relatório por ser redundante face aos resultados

apresentados abaixo, que incluem a actuação do robô.

Page 77: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

68

Figura 59 – Coordenadas do elemento terminal do robô e da bola para a actuação do robô na

versão Tracking.

A Figura 599 mostra o seguimento visual efectuado pelo robô num dos testes realizados com a

aplicação desenvolvida do sistema de visão, em modo tracking. O atraso no tempo da

actuação do robô foi estimado e é sensivelmente de 0.25 segundos, Figura 6060.

Figura 60 - Coordenadas do elemento terminal do robô com avanço no tempo de 0.25 segundos e

da bola no instante actual.

Page 78: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

69

Na figura 61, é possível ver que a acção do robô tem um atraso de 0.25 segundos, sendo este

o tempo de reacção do robô (o tempo necessário para o sistema de visão indicar a posição da

bola e o robô se mover para essa posição).

Os picos (mais visíveis na coordenada y da bola) acontecem quando o sistema de visão deixa

de ver a bola e o robô é enviado para a posição de descanso [X,Y,Z]=[30,-50,40] (note-se que

na figura os picos apontam sempre para o mesmo valor, o da posição de descanso).

Esta situação pode acontecer quando o robô se encontra entre a bola e o par estéreo, ou

quando a bola sai do campo de visão de uma ou ambas as imagens.

Figura 61 – Pormenor das trajectórias entre os instantes 171 e 178 segundos.

Nas Figura 61 e 62 é possível ver uma parte da trajectória, entre os instantes 171 e 178, com

maior pormenor.

Estes dados serão analisados nos gráficos seguintes de forma a estimar: o erro entre a posição

da bola e a posição do elemento terminal do robô (Figura 6164 e 65), e a velocidade dos

movimentos efectuados pelo robô (Figura 6166 e 67).

Page 79: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

70

Figura 62 – Reconstrução 3D da trajectória do robô e da bola para a trajectória anterior.

Figura 63 - Pormenor das trajectórias entre os instantes 171 e 178 segundos, com 0.25 segundos

de avanço na trajectória do robô.

Page 80: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

71

Figura 64 – Análise do erro de posição entre a bola e a posição do elemento terminal do robô.

Figura 65 – Análise do erro de posição entre a bola e a posição do elemento terminal do robô com

um avanço de 0.25 segundos.

Page 81: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

72

Figura 66 – Velocidades do elemento terminal do robô.

Figura 67 – Módulo da velocidade do elemento terminal do robô.

Page 82: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

73

No exemplo seguinte, o tempo de captação de imagem é inferior, 14 frames por segundos, pelo

que o tempo de resposta desce para 0.5 segundos.

São resultados mais antigos mas em que já se nota um bom seguimento.

Figura 68 - Coordenadas do elemento terminal do robô e da bola para a actuação do robô na

versão Tracking (2º exemplo)

Figura 69 - Reconstrução 3D da trajectória do elemento terminal do robô e da bola para a

trajectória do gráfico anterior (2º exemplo)

Page 83: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

74

6.2.2 – Versão Previsão

Nesta versão, a posição de descanso do robô permaneceu a mesma, [X,Y,Z]=[30,-50,40], para

facilitar a transição de tracking para previsão na aplicação gerada.

Foi imposta a condição do plano de intercepção ser o plano y=-50, ou seja a bola quando tem a

coordenada y menor que -50 deixa de efectuar os cálculos de previsão e mantém o último valor

calculado, pois já interceptou o plano.

Outra condição imposta foi a de o robô só efectuar os cálculos quando a bola se encontrar a

uma distância da origem do referencial de base do robô inferior a 2.5 metros, evitando efectuar

os cálculos antes de esta ser lançada (caso a bola esteja visível). Se por algum motivo o

sistema de visão não identificar a bola nas imagens (caso o robô tape a bola), o sistema deixa

de refinar o ponto de intercepção, e envia o robô para o último ponto calculado e este

permanece nesse local durante 5 segundos.

Figura 70 – Posição da bola no movimento de um projéctil.

No exemplo analisado na Figura 70, foi lançada a bola para visualizar o número de pontos da

trajectória que as câmaras conseguem captar, e qual o tempo de trajectória visto pelas

mesmas. Conseguiu-se visualizar 0.45 segundos da trajectória.

Na figura 71 é exposta a variação das coordenadas do ponto de intercepção, de realçar que do

instante 10.96 para o instante 10.98 a posição x sofre uma oscilação superior a 20 cm, não

exequível pelo robô neste intervalo de tempo. Pela análise de vários ensaios verificamos que

os erros de posição dos pontos mais afastados provocam uma grande oscilação no cálculo do

ponto de intercepção. No entanto essa oscilação vai diminuindo à medida que nos

aproximamos do ponto de intercepção.

Page 84: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

75

Figura 71 – Estimativa do ponto de intercepção com o plano y=-50 [cm]

Foram também calculados o intervalo de tempo entre cada ponto captado, delta t, Figura 72 e a

estimativa do tempo que ainda falta para a intercepção, Figura 73.

Figura 72 – Intervalo de tempo entre duas captações de imagens consecutivas.

Page 85: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

76

Figura 73- Estimativa do tempo final, do instante actual até ao instante de intercepção da

trajectória da bola com o plano.

Na Figura 74 pode-se visualizar da trajectória captada pelo sistema de visão e a estimativa do

ponto de intercepção da trajectória da bola com o plano y=-50.

Figura 74 – Pontos determinados pelo sistema de visão, estimativa do ponto de intercepção da

trajectória da bola com o plano y=-50 [cm].

Page 86: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

77

7. Conclusões e Trabalhos Futuros

Esta tese abordou a manipulação, em tempo real, de objectos em movimento no espaço, tendo

como sensor um sistema de visão estéreo disposto numa configuração Eye-to-Hand, que

permite identificar o objecto e determinar a sua posição espacial utilizando algoritmos de

reconstrução 3D.

Foram desenvolvidas duas aplicações diferentes do sistema de visão para interceptar uma bola

na zona de trabalho do robô: Versão Tracking e Versão Previsão.

O robô manipulador utilizado para a intercepção do objecto é um Puma 560 cuja actuação é

realizada por um anel de controlo de posição.

As principais conclusões são:

Na Versão de Tracking:

Os resultados de posicionamento do robô na versão tracking são bastante satisfatórios

para a maior parte da área de trabalho do robô visível pelas câmaras.

O atraso no tempo de 0.25 segundos é justificado pela inércia do movimento do robô e

pelo tempo de resposta do anel de visão. O elemento terminal chega a atingir uma

velocidade máxima de 0.6 (m/s) o que permite uma resposta eficaz na execução da tarefa

de interceptar a bola.

Na Versão de Previsão:

A calibração efectuada não permitiu obter valores satisfatórios para pontos a uma

distância das câmaras superior a 3 metros. Com esta restrição da distância máxima entre

um ponto captado e a origem do referencial das câmaras, delimitamos a área de visão da

trajectória e o intervalo de tempo em que esta é visível. Nos vários testes efectuados, este

intervalo de tempo entre o primeiro ponto captado pelas câmaras e o ponto de

intercepção com o plano não ultrapassou os 0.5 segundos.

Mesmo neste curto intervalo de tempo, as coordenadas do ponto de intercepção

oscilaram consideravelmente, não permitindo um tempo de resposta exequível para o

robô. Os erros de posição e de instantes medidos dos pontos da trajectória, por mínimos

que sejam, ampliam consideravelmente o erro da estimativa do ponto de intercepção, vide

Figura 10. Com uma calibração mais adequada à área que pretendemos captar e

afastando mais as câmaras do robô é possível obter melhores resultados na estimativa do

ponto de intercepção da bola.

Page 87: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

78

Na Calibração:

A partir da análise da Tabela 9 e observando a Figura 58, constatamos a influência que a

distância da bola à origem do referencial da câmara tem no erro de posição da bola. A

calibração começa a dar resultados menos satisfatórios a partir de uma distância de 2.8

metros.

Existem duas justificações para esta influência: em primeiro lugar, o sistema de visão foi

calibrado recorrendo a imagens de um objecto a uma profundidade compreendida entre

0.5 e 1.8 metros; em segundo lugar, devido às coordenadas da bola serem muito

superiores à distância que separa as câmaras, surge um efeito de paralelismo entre as

rectas que determinam o ponto no espaço onde se encontra a bola (rectas estas

ilustradas na Figura 7).

Aumentar a distância entre as câmaras permitirá eliminar esse efeito de paralelismo. A

alteração da posição das câmaras implica fazer uma nova calibração estéreo, de acordo

com o exposto na secção 3.5.2. Seria de todo o interesse conjugar esta alteração com a

utilização de um objecto de maiores dimensões e a uma maior profundidade

relativamente às câmaras, de forma a aumentar a semelhança com a realidade do

projecto.

Para posições da bola nas extremidades da imagem, a distorção da lente diminuiu a

eficácia do algoritmo de reconstrução 3D apesar da rectificação feita neste parâmetro

para minimizar o seu efeito.

No Sistema de Visão Estéreo :

O software de visão desenvolvido em C++ permitiu um framerate superior a 30 frames por

segundo, para um sistema que capta duas imagens, em simultâneo.

Os filtros de cor utilizados são extremamente rápidos no processamento e eficazes. A

eliminação das funções de conversão de formato de cor, utilizadas pelo software uEye,

permitiram aumentar os níveis de velocidade de processamento da imagem.

As imagens são transferidas das câmaras para o computador em formato Bayer a

conversão de formato de cor é feita com funções do “OpenCV”, assim como todos os

cálculos matriciais efectuados.

Restante trabalho desenvolvido:

Destaco do restante trabalho desenvolvido, ainda não referido neste capítulo, a

adaptação da cinemática inversa aos referenciais de Peter Corke [8]; o planeamento de

trajectórias gerado no anel de controlo do Puma; alteração das comunicações realizadas

anteriormente por porta RS232 para cabo de rede - via UDP; a junção do modelo virtual

Page 88: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

79

do Puma com o sistema de visão e o gerador de trajectórias; a reestruturação do anel de

controlo de Posição em Simulink e as simulações criadas em Matlab de reconstrução 3D

de trajectórias.

Alguns destes desenvolvimentos foram imprescindíveis para a concretização deste

projecto, outros constituem uma mais-valia, também para projectos futuros.

7.1 Trabalhos Futuros

A calibração estéreo só determina a posição de uma câmara em relação à outra.

Seguidamente, é necessário calibrar manualmente a posição do par estéreo em relação ao

referencial da base do robô. Este processo tem de ser repetido sempre que a posição do par

estéreo sofre alguma mudança, e seria conveniente desenvolver um algoritmo que permitisse

fazer esta calibração automaticamente. Para isso, bastaria colocar a bola no elemento terminal

do robô (Garra), e com planeamento de trajectória por pontos enviar o robô para posições-

chave, em seguida, ler a posição obtida pelo sistema de visão. Deste modo, conseguir-se-ia

relacionar os dois referenciais.

Aumentar a distância entre as câmaras e refazer a calibração estéreo utilizando um objecto de

maiores dimensões e a uma maior profundidade relativamente ao referencial do par estéreo, de

forma a aumentar a semelhança com a realidade do projecto.

Criar uma região de interesse móvel, nas imagens captadas, permitindo assim tempos de

amostragem das câmaras na ordem de 150 frames por segundo.

Testar um afastamento das câmaras para minimizar o erro no cálculo da profundidade a que o

objecto se encontra.

Recalibrar os ganhos do controlador PD.

Libertar um pouco mais as restrições de junta para alargar a área de trabalho do Robô.

Desbloquear a junta 5 e fazer o controlo não só da posição como também da orientação no

espaço do elemento terminal, seguindo o algoritmo descrito na secção 4.2.2.

Fazer uma segmentação das imagens no sistema de visão, de modo a poder detectar mais do

que um objecto na imagem.

Implementação dos Filtros de Kalman e de algoritmos preditivos na versão de Tracking.

Page 89: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

80

8. Referências Bibliográficas

[1] Smith, Christian, Christensen, Henrik I, Using COTS to Construct a High Performance Robot

Arm, Centre for Autonomous Systems, Royal Institute of Technology, Stockholm, Sweden,

2007

[2] Hashimoto,K., The 1ms-vision System and It’s Application Examples, University of Tokyo

[3] Miyazaki, Fumio, Takeuchi, Masahiro, Matsushima, Michiya, Kusano, Takamichi, Hashimoto,

Takaaki, Realization of the Table Tennis Task based on Virtual Targets, Graduate School of

Engineering Science, Osaka University, Osaka, Japan, 2002

[4] Acosta, L., Rodrigo, J.J., Méndez, Juan A., Marichal, G.N., Sigut, M., Ping-Pong Player

Prototype – A PC-based. low-cost, ping-pong robot, Computadoras y Control Group,

University of La Laguna, Spain, 2003

[5] TOSY Robotics JSC, TOSY Ping-pong Playing Robot: TOPIO version 1.0, em

http://www.tosy.com/index.php Acesso em 10 de Maio de 2008.

[6] Halett, Joe, 3D imaging guides surgical operations, em http://www.vision-

systems.com/display_article/102358/19/none/none/Feat/3-D-imaging-guides-surgical-

operations. Acesso em 10 de Maio de 2008.

[7] Hrabar, Stefan, Sukhatme, Gaurav S., Corke, Peter, Usher, Kane, Roberts, Jonathan,

Combined Optic-Flow and Stereo-Based Navigation of Urban Canyons for a UAV, Robotic

Embedded Systems Laboratory, University of Southern California, USA, e CSIRO ICT

Center, Australia, 2005

[8] Corke, Peter I., Visual Control of Robots: high-performance visual servoing,

CSIRO Dividion of Manufacturing Technology, Australia,1996

[9] Gonçalves, Paulo J. S., Controlo Visual de Robôs Manipuladores, Tese de

Doutoramento, Instituto Superior Técnico, Lisboa, Portugal, Abril 2005

[10] P. Teodoro, Perspectiva Cónica como Visão Monocular, Technical Report,

Instituto Superior Técnico, Lisboa, Portugal, 2006

[11] Santos, B., Blobs Tracker, Robótica de Manipulação, Instituto Superior Técnico, Lisboa,

Portugal, 2005

Page 90: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

81

[12] Christo, C., Paris,A., Controlo de Robôs Por Visão Usando Modelação Inversa Fuzzy,

Robótica de Manipulação, Instituto Superior Técnico, Lisboa, Portugal, Fevereiro 2006

[13] Fernandes, Dinis A. G., Arquitecturas de Seguimento Visual e Captura por um

Manipulador Robótico de Objectos em Movimento, Dissertação de Mestrado, Instituto

Superior Técnico, Lisboa, Portugal, Dezembro 1997.

[14] Corke, Peter I., A robotics Toolbox for MATLAB, IEEE Robotics & automation Magazine

[15] Ribeiro, P.M.D., Controlo Visual de um Robô Manipulador, Trabalho Final de Curso,

Instituto Superior Técnico, Lisboa, Portugal, Setembro 2006

[16] Carvalho, André R. D., Faria, Jorge M. P. S., Silva, Pedro A. M., Controlo por Visão do

Puma 560 – Robótica de Manipulação, Instituto Superior Técnico, Lisboa, Portugal,

Fevereiro 2005

[17] Nogueira,R., Félix, J., Controlo de Robôs baseado em Visão, Robótica de Manipulação,

Instituto Superior Técnico, Lisboa, Portugal, 2005

[18] IDS, uEye Software Development Kit, User Manual, Version 2.0, March 2007

[19] Open Source Computer Vision Library

[20] Strobl, K., Sepp, W., Fuchs, S., Paredes,C., Arbter, K., Camera Calibration Toolbox for

Matlab, Institute of Robotics and Mechatronics, German Aerospace Center, 2004

[21] Rodrigues,R.P.A.,Robust and Hardware-accelerated 3D point and line reconstruction from

images,Universidade do Minho,Portugal,2005

Page 91: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

82

Anexo 1 - Noções básicas e notação utilizada em

referenciais

Para medirmos distâncias é importante indicar o sistema de medição e o referencial sobre o

qual estamos a medir.

Uma notação clara e sem ambiguidades é vital para uma fácil percepção do que estamos a

realizar em cada operação matemática. Estabelece-se desde já que o índice superior à

esquerda da variável que estamos a medir, indica-nos qual o referencial a partir do qual

estamos a medir esta grandeza.

Os pontos representados em maiúsculas são pontos em 3D e os pontos representados em

minúsculas dizem respeito a pontos em 2D.

Coordenadas homogéneas do ponto P relativamente ao referencial 1

1

1

1

1

1

P

P

P

X

YP

Z

=

3 3 3 11

0

1 30 1

0 10 0

xyxx xz x

yx yy yz y x x

xzx zy zz z

RR R t

R R R t R tT

R R R t

= =

1

0T - Transformação homogénea que permite saber as coordenadas de um ponto no referencial

1, a partir das suas coordenadas no referencial 0.

1 0

1 0

1 0

0 10 01 1

p pxyxx xz x

yx yy yz yp p

zx zy zz zp p

X XRR R t

R R R tY Y

R R R tZ Z

= ⋅

( )1

0 0 1 1 1

1 0P T P T P−

= ⋅ = ⋅

Page 92: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

83

Anexo 2 - Transformação Generalizada

Translação seguida de uma Rotação RPY (Roll-Pitch-Yaw)

Figura 75 – Esquematização de uma rotação RPY.

( ) ( )

( ) ( )

( ) ( )

0 0 0 0

1 1 1 1

0 0 0 00

1 1 1 11

0 0 01 1 1

0

1

( , , ) 0 ' ''

cos sin 0 0 cos 0 sin 01 0 0

0 1 00 1 0 sin cos 0 0

0 0 1 0 0 1 00 0 0 1 0 0 0 1

T Translacção X Y Z Rotacao em torno de z de Rotacao em torno de y de Rotacao em torno de x de

X

Y

Z

φ θ ψ

φ φ θ θ

φ φ

= + + + =

− ⋅ ⋅

( ) ( )

( ) ( )

( ) ( )

0 0

1 1

0 0 0 0

1 1 1 1

1 0 0 0

0 cos sin 00

sin 0 cos 0 0 sin cos 0

0 0 0 1 0 0 0 1

ψ ψ

θ θ ψ ψ

− ⋅ =

( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( )

( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( )

( ) ( ) ( ) ( ) ( )

0 0 0 0 0 0 0 0 0 0 0 0 0

1 1 1 1 1 1 1 1 1 1 1 1 1

0 0 2 0 2 0 0 0 0 0 0 0 0

1 1 1 1 1 1 1 1 1 1 1

0 0 0 0 0 0

1 1 1 1 1 1

cos cos sin cos cos cos sin sin sin cos cos cos

sin cos cos sin cos cos sin sin cos cos

sin sin cos cos cos

0 0 0 1

X

Y

Z

ψ θ ψ φ ψ θ φ ψ φ ψ θ φ

φ θ φ φ θ φ φ φ θ φ

θ ψ θ ψ θ

− ⋅ + ⋅ ⋅ ⋅ + ⋅ ⋅

⋅ + ⋅ − ⋅ + ⋅ ⋅=

− ⋅ ⋅

Rotação de Euler

Também frequentemente usada mas neste trabalho optou-se antes pela Rotação RPY.

É uma Rotação ZXZ ou ZYZ, enquanto que a Rotação RPY é uma rotação ZYX.

Figura 76 – Esquematização da rotação de Euler.

Page 93: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

84

Anexo 3 – Matrizes da Cinemática do Robô

Transformações associadas à rotação e translação efectuadas para passar do referencial do

elemento i-1 do robô para o referencial do elemento i :

( ) ( )( ) ( )

( ) ( ) ( )( ) ( ) ( )

( ) ( ) ( )( ) ( ) ( )

( ) ( )( ) ( )

( ) ( )( ) ( )

( ) ( ) ( )( ) ( ) ( )

⋅−

=

=

−=

⋅−

=

⋅−

=

−=

1000

0.25010

sin0.05 cos0sin

cos0.05 sin0cos

1000

0010

0cos0sin

0sin0cos

1000

0.4318010

0cos0sin

0sin0cos

1000

0.1500010

sin0.0203 cos0sin

cos0.0203 sin0cos

1000

0100

sin0.43180cossin

cos0.43180sincos

1000

0010

0cos0sin

0sin0cos

666

666

6

5

55

55

5

4

44

44

4

3

333

333

3

2

222

222

2

1

11

11

1

0

θθθ

θθθ

θθ

θθ

θθ

θθ

θθθ

θθθ

θθθ

θθθ

θθ

θθ

A

A

A

A

A

A

Eq. 71

Page 94: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

85

Anexo 4 – Ficheiro com parâmetros de Captação

optimizados

“Teste2.ini” – ficheiro criado no software de demonstração (Demo) das câmaras uEye, que

contêm os parâmetros optimizados de cor, tempos de captação e exposição luminosa. Estes

valores foram optimizados de acordo com as condições de luz do laboratório e objectivos do

sistema de visão (nº máximo de frames por segundo e detecção do objecto em movimento). A

Aplicação desenvolvida permite utilizar estes parâmetros de captação seleccionando a opção

“Load Parameters”.

[Versions]

ueye_api.dll=3.10.0000

ueye_usb.sys=3.10.0000

ueye_boot.sys=3.10.0000

[Sensor]

Sensor=UI122x-C

[Image size]

Start X=0

Start Y=0

Start X absolute=0

Start Y absolute=0

Width=752

Height=480

Binning=0

Subsampling=0

[Timing]

Pixelclock=40

Framerate=87

Exposure=10.0

[Parameters]

Colormode=1

Brightness=100

Contrast=215

Gamma=1.000000

Hardware Gamma=0

Blacklevel Mode=1

Blacklevel Offset=0

Hotpixel Mode=2

Hotpixel Threshold=0

GlobalShutter=7

[Gain]

Master=20

Red=10

Page 95: Controlo Visual de Robôs Manipuladores Engenharia Mecânica

86

Anexo 5 – Formato Bayer

Filtro Bayer – Filtro de cor que permite organizar/conjugar de forma matricial as cores

captadas pelos sensores CCD ou CMOS das câmaras, filtro utilizado na maior parte dos chips

digitais. O padrão do filtro, Figura 78, apresenta 50% de verde, 25% de azul e 25% de

Vermelho, sistema designado também por GRGB.

Figura 77 – Padrão do Filtro Bayer, utilizado pelas câmaras uEye [18]também por GRGB.

Figura 78 – Padrão do Filtro Bayer, utilizado pelas câmaras uEye [18]

A conversão para o formato RGB é efectuada a partir da interpolação dos valores lidos nas 1,2

ou 4 entradas da matriz mais próximos (na vizinhança)do pixel analisado.