Roteiro para calibração automática de câmera e laser 1 Introdução

Transcrição

Roteiro para calibração automática de câmera e laser 1 Introdução
Universidade Federal de Minas Gerais - UFMG
Escola de Engenharia
Programa de Pós-Graduação em Engenharia Elétrica - PPGEE
Disciplina:
Aluna:
Orientador:
Projeto de Tese I
Natália Cosse Batista
Guilherme A. S. Pereira
Roteiro para calibração automática
de câmera e laser
1
Introdução
Este roteiro foi utilizado para realizar a calibração automática de uma câmera
monocular com um laser. O roteiro foi testado com a câmera esquera da
Bumblebee2 com o laser SICK LMS291-S05 (com ângulo de visão de 180
graus e distância em metros). Os equipamentos podem ser vistos nas Figuras
1(a) e 1(b).
(a)
(b)
Figura 1: (a) Câmera Bumblebee2 e laser Sick LMS291-S05. (b) Conguração dos equipamentos no laboratório CORO/UFMG.
O processo de calibração está dividido em três etapas:
1. Captura de dados
2. Calibração da câmera
3. Calibração câmera-laser
1
Na primeira etapa ocorre a captura dos dados da câmera e do laser. Os
equipamentos foram acessados por meio do ROS (Robot Operating System)
versão Electric1 e foi produzido um pacote para agilizar a obtenção dos dados.
Na segunda etapa é realizada a calibração da câmera, em que os parâmetros intrínsecos da câmera são calculados, bem como a tranformação
rígida entre a câmera e um padrão de calibração para cada imagem. A
transformação é necessária para a calibração câmera-laser, que usa os pontos
originados do padrão de calibração que aparecem na leitura do laser para
encontrar a transformação rígida do laser para a câmera. Foi utilizado o
pacote Matlab disponibilizado por [Kassir and Peynot, 2010]. O padrão de
calibração utilizado pode ser visto nas Figuras 2(a), 2(b) e 2(c). O padrão é
composto por quadrados pretos e brancos, facilitando a detecção de vértices
e quinas e a intersecção de linhas da imagem graças ao alto contraste e
geometria simples do padrão. É necessário conhecer com acurácia a medida
dos quadrados do padrão para fazer a calibração.
(a)
(b)
(c)
Figura 2: Padrão de calibração. O lado dos quadrados medem 80 mm.
Na terceira etapa a câmera e o laser são calibrados usando também Matlab com pacote disponibilizado pelo mesmo autor da segunda etapa. Essa
etapa consiste da extração do padrão de calibração dos dados da leitura do
laser. As Figuras 3(a), 3(b) e 3(c) mostram a detecção das linhas do padrão
nos dados de leitura do laser SICK. Experimentos iniciais com o laser Hokuyo
mostraram resultados insatisfatórios na detecção automática.
Como resultado da calibração, obtém-se o vetor de translação e a matriz
de rotação representando a orientação e posição da câmera em relação ao
laser. Dessa forma é possível projetar os pontos da leitura do laser na imagem
da câmera, como é mostrado na Figura 4.
As seções a seguir indicam os passos a serem seguidos em cada uma das
etapas. Antes de iniciar o roteiro, instale e compile (rosmake) o pacote de
captura do ROS que acompanha este roteiro e os pacotes RADOCC e RADLOCC no Matlab2 . Certique-se de que os pacotes do ROS necessários para
o funcionamento da câmera (bumblebee2) e do laser (sicktoolbox_wrapper)
também estão instalados e compilados.
1
2
ROS: http://www.ros.org/wiki/. Acessado em 06 de agosto de 2012.
Automatic
Camera-Laser
Calibration:
http://www-
personal.acfr.usyd.edu.au/akas9185/AutoCalib/. Acessado em 06 de agosto de 2012.
2
2
Captura de dados
Nesta etapa são obtidos pares de imagem e laser. O primeiro passo é conectar
a câmera e o laser ao computador e executar os respectivos nós do ROS.
Seguem os comandos:
>> r o s c o r e
Laser
Sick :
>> s u d o chmod a+rw / dev / ttyUSB0
>> r o s p a r a m
set
s i c k l m s / p o r t / dev / ttyUSB0
>> r o s p a r a m
set
s i c k l m s / baud 3 8 4 0 0
>> r o s r u n
sicktoolbox_wrapper
sicklms
>> r o s r u n
sicktoolbox_wrapper
sicklms
_port :=/ dev / ttyUSB0 _baud : = 5 0 0 0 0 0
L a s e r Hokuyo :
>> r o s r u n hokuyo_node hokuyo_node
Para
testar
>> r o s r u n
o f u n c i o n a n d o do
rviz
laser
( pacote
rviz ):
rviz
Camera :
>> r o s l a u n c h
Para
bumblebee2 Bumblebee2 . l a u n c h
testar :
>> r o s r u n
image_view image_view image :=/ bumblebee2 / l e f t / image_raw
>> r o s r u n
image_view image_view image :=/ bumblebee2 / r i g h t / image_raw
O próximo passo é executar o nó do ROS para a captura dos pares.
Escolha o diretório em que serão gravados os arquivos e execute o programa:
>> cd ~/ r o s _ w o r k s p a c e / c a p t u r a / a m o s t r a s
>> r o s r u n
captura
captura
O programa abrirá uma janela de cor verde com o número 1 que aguardará
o posicionamento inicial do padrão até que o usuário a feche. Em seguida
posicione o padrão de vários jeitos, de forma que o padrão esteja sempre dentro do campo de visão da câmera e do laser e que não seja rotacionado mais
que 45 graus sobre seu eixo ortogonal. O padrão só poderá ser movimentado se a janela estiver verde, o que ocorre com o intervalo de 10 segundos.
Quando a janela estiver vermelha signica que o programa está salvando dados. O número da captura do par aparece em cada janela verde. A imagem
da câmera que foi gravada aparece em outra janela.
O autor do pacote de calibração sugere no mínimo 40 pares. Quando
capturar o número suciente de pares, pressione as teclas Ctrl+C no terminal
que está executando o nó de captura no ROS.
3
Calibração da câmera
Esta etapa consiste na calibração da câmera utilizando o pacote RADOCC
no Matlab. Após instalar o pacote, escolha no Matlab o diretório em que se
3
encontram as imagens e execute o comando:
>> c a l i b
Executar a sequência de opções na interface:
Read i m a g e s
−>
Extract
grid
corners
−>
Calibration
−>
Save
−>
Exit
Para o padrão utilizado atualmente no laboratório CORO, preencher com
80 a medida do quadrado (em milímetros). Pode ser necessário criar arquivos
vazios chamados Calib_Results.mat e Calib_Results.m no diretório corrente
para o programa conseguir salvar os resultados da calibração.
Esse processo de calibração é necessário apenas uma vez para cada câmera.
4
Calibração câmera-laser
A última etapa da calibração é realizada com o pacote RADLOCC no Matlab. Antes de iniciar a execução, é aconselhável limpar o workspace do
Matlab.
Executar no Maltab o comando:
>> r a d l o c c
Executar a sequência de opções na interface (escolher parâmetros default):
Read d a t a
−>
Auto
select
−>
Calibrate
−>
Save
−>
Exit
Para vericar o resultado da calibração visualmente, escolha a opção:
Laser
o n t o image
O resultado da calibração está no arquivo LaserCalibResults.mat. As
variáveis utilizadas na projeção dos pontos do laser na imagem são:
• fc e fc_error: distância focal e sua incerteza.
• cc e cc_error: centro óptico da imagem e sua incerteza.
• alpha_c e alpha_c_error: coeciente de defasamento e sua incerteza.
• kc e kc_error: coecientes de distorção e suas incertezas.
• phi: matriz de rotação.
• delta: vetor de translação.
Referências
[Kassir and Peynot, 2010] Kassir, A. and Peynot, T. (2010). Reliable automatic camera-laser calibration. In Proceedings of the Australasian Conference on Robotics & Automation, page 10.
4
(a)
(b)
(c)
Figura 3: Leitura do laser com a detecção da linha referente ao padrão de
calibração destacada em verde. As leituras do laser correspondem às posições
do padrão mostradas nas Figuras 2(a), 2(b) e 2(c).
5
Figura 4: Pontos da leitura do laser projetados na imagem da câmera. As
elipses coloridas representam a incerteza da transformação.
6

Documentos relacionados