Um scanner a laser 2D é montado em um eixo rotativo. Desejo determinar a matriz de transformação do centro do eixo para o centro do scanner, usando apenas a entrada do scanner e o ângulo de rotação.
O próprio scanner 2D é considerado calibrado, medindo com precisão a posição de qualquer objeto dentro do plano do laser, em relação à origem do scanner.
O eixo rotativo também é calibrado, mede com precisão o ângulo de seu próprio movimento.
O scanner está alinhado e montado próximo ao centro de rotação, mas o deslocamento exato é desconhecido e pode sofrer variações ao longo do tempo.
Suponha que seja impraticável medir diretamente a posição e a orientação do scanner. Estou procurando uma maneira de determinar os valores exatos dos 6 graus de deslocamento que o scanner pode ter em relação ao eixo, determinado apenas nas informações 2d do scanner e no ângulo de rotação do eixo.
Estou interessado principalmente nas 4 compensações descritas aqui, pois as outras duas não importam em relação à geração de uma nuvem de pontos 3D consistente a partir dos dados de entrada.
Ao digitalizar um objeto de calibração conhecido, deve ser possível determinar esses desvios. Quais são as fórmulas matemáticas para isso?
Que tipo de informação de calibração é necessária no mínimo? Por exemplo, é possível determinar todos os parâmetros simplesmente escaneando uma superfície plana, sem saber nada sobre a superfície, exceto que ela é plana?
(A matriz de transformação do eixo de rotação para o mundo também é desconhecida, mas essa é trivial para determinar uma vez que a transformação do eixo para a câmera é conhecida.)
Exemplo
À esquerda, a câmera é colocada exatamente no eixo de rotação. A câmera digitaliza um objeto plano com os pontos de referência AB e C. Com base nas medições da distância do laser e no ângulo do eixo, esse objeto plano pode ser reconstruído.
À direita, a câmera possui um deslocamento desconhecido para o eixo. Ele verifica o mesmo objeto. Se a nuvem de pontos for construída sem conhecer esse deslocamento, a superfície plana será mapeada para uma superfície curva.
Posso calcular o deslocamento com base na curvatura da superfície?
Se eu sei as distâncias e ângulos do mundo real entre A, B e C, como posso calcular as compensações da câmera a partir disso? Qual seria o número mínimo de pontos de referência necessários para todas as 4 compensações?
fonte
O método mais simples nesse caso é essencialmente forçar o problema, mas forçá-lo de maneira inteligente.
O que você precisará é de um conjunto de dados do scanner enquanto estiver digitalizando um objeto, de preferência um objeto matematicamente simples como um cubo ou uma esfera e a posição exata do deslocamento ou deslocamento desse objeto em relação à montagem deste scanner.
Se você tiver essas duas informações, o próximo truque é essencialmente testar várias combinações de compensações do scanner (o que eu normalmente chamaria de valores de calibração) até encontrar compensações que façam com que os dados do scanner representem com precisão o seu objeto. Para isso, você pode adivinhar aleatoriamente valores que podem levar uma eternidade e não chegar a lugar nenhum (mas, em teoria, eventualmente, você obteria a resposta certa) ou pode usar um método de otimização
Para usar um método de otimização, você precisará desenvolver algum tipo de métrica para dizer se um conjunto específico de compensações funciona melhor que outro conjunto. Então, qualquer método de otimização que você estiver usando usará essa pontuação para dizer se deve ajustar os valores em uma direção específica. Eventualmente, ele se estabelecerá em um conjunto específico de valores que parecem funcionar melhor.
Esta é uma descrição bastante breve e pobre de um tópico muito aprofundado, mas espero que você o indique em uma direção. Se você quiser uma descrição mais detalhada de qualquer coisa, deixe um comentário.
fonte