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