Controlo Visual de Robôs Manipuladores Engenharia Mecânica
Transcript of 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
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.
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
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.
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
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
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
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
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
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.
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.
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.
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.
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.
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.
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
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.
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
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:
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.
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):
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
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ô.
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
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.
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:
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
lθ
− + −= 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:
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ô:
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.
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.
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
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.
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.
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.
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≤ = + + ≤
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
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.
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 :
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
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.
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.
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
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.
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.
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.
37
Figura 24 – Esquema de Tracking
38
Figura 25 – Esquema de Previsão
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.
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.
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.
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
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.
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
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.
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.
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
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:
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.
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] .
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.
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.
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.
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
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.
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.
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.
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.
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ô.
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
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.
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.
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.
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.
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.
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
Nº
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.
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ô.
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.
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).
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ô.
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.
72
Figura 66 – Velocidades do elemento terminal do robô.
Figura 67 – Módulo da velocidade do elemento terminal do robô.
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)
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.
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.
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].
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.
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
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.
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
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
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−
= ⋅ = ⋅
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.
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
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
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.