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

"servoing" é o processo de girar seu robô até que seu alvo esteja perfeitamente alinhado com uma "mira" configurável. É a maneira mais fácil e, em muitos casos, a mais confiável de abordar problemas de visão em robótica.

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 a lente e o sensor transformam o mundo 3D em uma 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 / centro da lente. Durante a fabricação, a lente da 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 distâncias focais computadas em pixels. fx e fy nos ajudam a entender o campo de visão / nível de zoom da câmera.

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 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 com zoom por hardware e pipelines de 5 megapixels são os únicos 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 grande 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.
    • O tamanho do quadrado e do marcador são críticos, então use um paquímetro.
  5. Observe 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 1280x960.
  4. Exclua todos os snapshots salvos alterando o tipo de fonte de "entrada" de "Câmera" para "Snapshot" e clicando em "Excluir todos os snapshots".
  5. Altere o tipo de fonte de "entrada" de volta para "Câmera".
  6. Capture pelo menos 25 snapshots do tabuleiro ChArUco para começar. Depois que estiver familiarizado com o processo, você deve 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 ocupa 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 encurtamento significativo. Este é o efeito de marcadores mais próximos aparecerem maiores que marcadores distantes. A primeira e a última imagem na seguinte captura de tela demonstram encurtamento

Exemplos de Calibração

Calibrando

  1. Navegue até a aba "Calibração". É a terceira aba na barra lateral vertical.
  2. Insira os cinco valores encontrados na etapa "Preparando o Tabuleiro".
  3. Clique no botão "Calibrar com Snapshots". O processo pode levar um ou dois minutos para ser concluído.
  4. Após o sucesso, o cartão "Resultado da Última Calibração" mostrará o resultado da calibração mais recente.
  5. Verifique o cartão "Resultado da Última Calibração" para um resultado razoável com um baixo erro de reprojeção (idealmente menor que 1).
  6. Baixe o resultado da última calibração e faça upload para o slot de calibração "personalizado - arquivo".
  7. Agora você deve ver três cartões de resultado de calibração preenchidos.
  8. Altere sua "calibração preferida" para "personalizado - arquivo" 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 depois que estiver familiarizado com o processo.