Pular para o conteúdo principal

Calibração de Câmera ChArUco

Por que Isso é Importante?

Uma câmera totalmente calibrada fornecerá medições 2D e 3D mais precisas. É útil para qualquer tarefa que não seja baseada em "servoing" para a mira.

Dito isso, recomendamos usar o método de "servoing" sempre que possível. É rápido, preciso e adequado para tarefas como aquisição de objetos, mira e alinhamento com alvos. Não se preocupe com a calibração, a menos que determine que precisa de maior precisão. Cada unidade LL vem com uma calibração padrão que fornecerá resultados bastante bons para a maioria dos casos de uso

O que é Calibração de Câmera?

A calibração de intrínsecos é o processo de determinar os dois seguintes componentes:

1. A Matriz da Câmera

A matriz da câmera, frequentemente denotada como K, é uma matriz 3x3 que descreve como os pontos 3D no sistema de coordenadas da câmera são projetados no plano de imagem 2D:

[fx  0   cx]
[0 fy cy]
[0 0 1]

cx e cy são as coordenadas do ponto principal / pixel principal. O ponto principal / pixel principal é o pixel que está diretamente alinhado com o eixo óptico da lente. Durante a fabricação, uma lente de câmera quase nunca está perfeitamente alinhada com o centro do sensor de imagem. É crucial que entendamos qual pixel é o verdadeiro pixel "central"

fx e fy são comprimentos focais computados em pixels

2. Coeficientes de Distorção

Calculamos 5 coeficientes de distorção:

[k1, k2, p1, p2, k3]

k1, k2, k3 são coeficientes de distorção radial que fazem com que linhas retas pareçam curvas.

p1, p2 são coeficientes de distorção tangencial que ocorrem devido à lente não estar paralela ao plano da imagem

Realizando a Calibração ChArUco

A calibração ChArUco com o Limelight foi projetada para ser o mais simples e à prova de falhas possível. Leia os seguintes passos e depois assista ao vídeo abaixo para aprender como calibrar sua câmera para maior precisão.

info

Você só precisa calibrar em uma resolução (recomendamos 1280x960 para LL3 e 1280x800 para LL3G). Os intrínsecos são automaticamente escalados para corresponder à resolução escolhida do seu pipeline, e os coeficientes de distorção são invariantes à resolução, dado uma proporção de aspecto e FOV fixos. Pipelines de zoom por hardware e pipelines de 5 megapixels são os únicos pipelines que não farão uso de calibrações personalizadas.

Preparando o Tabuleiro

Você pode usar qualquer tela de laptop para calibrar sua câmera. Para máxima precisão, no entanto, recomendamos comprar este tabuleiro grosso de 800mmx600mm da calib.io

Exemplo de Tabuleiro ChArUco

  1. Imprima um Tabuleiro de Calibração ChArUco ou use uma imagem de um tabuleiro em uma tela grande de laptop ou computador. Use nosso tabuleiro da página de downloads, ou gere o seu próprio.
  2. Encontre a "largura" da grade somando o número total de quadrados pretos e o número total de marcadores ArUco em uma linha (11 para o tabuleiro de calibração padrão do Limelight).
  3. Encontre a "altura" da grade somando o número total de quadrados pretos e o número total de marcadores ArUco em uma coluna (8 para o tabuleiro de calibração padrão do Limelight).
  4. Confirme as medidas de "tamanho do quadrado" e "tamanho do marcador" medindo os comprimentos laterais de um quadrado e um marcador em milímetros.
    • As medidas do tamanho do quadrado e do marcador são críticas, então use um paquímetro.
  5. Anote o tipo de dicionário. O tabuleiro padrão da página de downloads usa o dicionário 5x5_100.

Capturando Imagens de Calibração

  1. Certifique-se de que seu tabuleiro esteja o mais plano possível.
    • Você não deve realizar a calibração se seu tabuleiro não estiver plano. Você pode comprar tabuleiros especiais da calib.io, ou fixar seu tabuleiro impresso em uma prancheta.
  2. Ligue seu robô e acesse a interface web do Limelight.
  3. Crie um pipeline AprilTag de 1280x960.
  4. Exclua todos os snapshots salvos alterando o tipo de fonte de "input" de "Camera" para "Snapshot" e clicando em "Delete all snapshots".
  5. Mude o tipo de fonte de "input" de volta para "Camera".
  6. Capture pelo menos 25 snapshots do tabuleiro ChArUco para começar. Quando estiver familiarizado com o processo, você vai querer voltar para capturar um total de pelo menos 50 imagens.
  7. A principal vantagem da calibração ChArUco sobre a calibração padrão de tabuleiro de xadrez é que ela funciona mesmo se apenas parte do tabuleiro estiver visível para a câmera. É importante utilizar essa vantagem.
  8. Suas imagens devem ter uma boa mistura das seguintes qualidades:
    • Seu tabuleiro abrange grandes regiões da imagem.
    • Seu tabuleiro se estende além de pelo menos uma borda ou canto da imagem (Isso ajudará a calcular a distorção ao redor das bordas das imagens).
    • Seu tabuleiro é frequentemente posicionado de forma que tenha distorção de perspectiva (O tabuleiro não deve estar paralelo ao plano da imagem).
    • Busque uma ampla diversidade nas posições do tabuleiro, perspectivas e cobertura.
    • 50% de suas imagens devem ilustrar um encurtamento significativo. Este é o efeito de marcadores mais próximos parecerem maiores do que marcadores distantes. A primeira e a última imagem na seguinte captura de tela demonstram o encurtamento

Exemplos de Calibração

Calibrando

  1. Navegue até a aba "Calibration". É a terceira aba na barra lateral vertical.
  2. Insira os cinco valores encontrados na etapa "Preparando o Tabuleiro".
  3. Clique no botão "Calibrate with Snapshots". O processo pode levar um ou dois minutos para ser concluído.
  4. Após o sucesso, o cartão "Latest Calibration Result" mostrará o resultado da calibração mais recente.
  5. Verifique o cartão "Latest Calibration Result" para um resultado razoável com um baixo erro de reprojeção (idealmente menor que 1).
  6. Baixe o resultado da calibração mais recente e faça o upload para o slot de calibração "custom - file".
  7. Agora você deve ver três cartões de resultado de calibração preenchidos.
  8. Mude sua "preferred calibration" para "custom - file" para utilizar seu resultado de calibração personalizado. Todos os pipelines usarão seu resultado de calibração.
  9. Considere capturar mais screenshots e recalibrar uma vez que esteja familiarizado com o processo.