Calibração de Câmera ChArUco
Por Que Isso Importa?
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.
Com isso dito, 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 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 comprimentos focais calculados 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 linhas retas parecerem 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.
Você só precisa calibrar em uma resolução (recomendamos 1280x960 para LL3 e 1280x800 para LL3G). Os intrínsecos são auto-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 de hardware e pipelines de 5 megapixels são os únicos pipelines que não utilizarão 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

- 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.
- Encontre a "largura" da grade adicionando 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).
- Encontre a "altura" da grade adicionando 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).
- Confirme as medidas de "tamanho do quadrado" e "tamanho do marcador" medindo os comprimentos dos lados de um quadrado e de um marcador em milímetros.
- As medidas de tamanho do quadrado e tamanho do marcador são críticas, então use paquímetros.
- 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
- 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.
- Ligue seu robô e acesse a interface web do Limelight.
- Crie um pipeline AprilTag de 1280x960.
- Delete todos os snapshots salvos alterando o tipo de fonte de "entrada" de "Camera" para "Snapshot" e clicando em "Delete all snapshots".
- Altere o tipo de fonte de "entrada" de volta para "Camera".
- Capture pelo menos 25 snapshots do tabuleiro ChArUco para começar. Uma vez que esteja familiarizado com o processo, você vai querer voltar para capturar um total de pelo menos 50 imagens.
- A principal vantagem da calibração ChArUco sobre a calibração padrão de tabuleiro de xadrez é que funciona mesmo se apenas parte do tabuleiro estiver visível para a câmera. É importante utilizar essa vantagem.
- 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 deformação de perspectiva (O tabuleiro não deve estar paralelo ao plano da imagem).
- Busque ampla diversidade em posições do tabuleiro, perspectivas e cobertura.
- 50% das suas imagens devem ilustrar encurtamento significativo. Este é o efeito de marcadores mais próximos parecerem maiores que marcadores distantes. A primeira e a última imagem na captura de tela a seguir demonstram encurtamento

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