Parabéns por descobrir o tesouro
Prefácio
Finalmente cheguei ao SLAM aprendendo parte do coração.Eu acredito que você que leu este artigo não consegue suportar a tensão e a emoção em seu coração assim como eu, então vamos começar juntos!
Neste artigo, vou resumir brevemente o conhecimento mais básico de cada link do SLAM14, principalmente para ajudá-lo a ver do que fala o capítulo 14.
Se você quiser saber mais, leia um livro!
Vamos em frente!
Conhecimento Preliminar
SLAM: Localização e Mapeamento
Simultâneo Nome chinês: Localização simultânea e construção do mapa
Definição básica: O sujeito equipado com sensores específicos, sem informações ambientais prévias, constrói um modelo do ambiente durante o movimento e estima seu próprio movimento.
O sensor aqui é principalmente uma câmera, é "visual SLAM"
Divisão do capítulo
Todo o livro está dividido em duas partes:
- Visual Basics Capítulo 1-6
- Aplicação prática, capítulo 7-14
Aula 1: Conhecimentos preliminares
Aula 2: Visão geral do sistema SLAM, apresentando os componentes do SLAM e o trabalho específico de cada módulo. Construção de ambiente de programação e uso de IDE
Aula 3: Movimento tridimensional de corpo rígido, principalmente compreender a matriz de rotação, ângulo de Euler, quatérnion, prática usando Eigon Aula
4: Aprender grupo de Lie e álgebra de Lie, definição e uso; prática usando operação Sophus
Aula 5: Modelo de câmera pinhole, a expressão da imagem no computador; Use OpenCV para chamar os parâmetros internos e externos da câmera.
Aula 6: Otimização não linear, incluindo a base teórica de estimativa de estado, problema de mínimos quadrados, método de gradiente descendente; use Ceres e g2o para Experiência de ajuste de curva
Aula 7: Odometria visual baseada no método de ponto de característica, extração e correspondência de característica, cálculo de restrições geométricas polares, PnP e ICP, etc. Use o método acima para estimar o movimento entre duas imagens.
Aula 8: Odometria visual direta, aprenda os princípios do fluxo óptico e métodos diretos e use os métodos acima para realizar uma estimativa de movimento direto simples.
Aula 9: Otimização de back-end, discute principalmente Bundle Adjustment (BA) em profundidade, usa esparsidade para acelerar o processo de solução e usa Ceres e g2o para escrever programas BA, respectivamente.
Aula 10: Pose map na otimização de back-end, introduzir SE (3), Sim (3) pose map, usar g2o para otimizar uma pose ball.
Aula 11: Detecção de loop, apresentar o modelo de saco de palavras Detecção de loop usando DBoW3 para escrever programa de treinamento de dicionário e programa de detecção de loop
. Aula 12: Construção de mapa, usar monocular para estimar mapa de profundidade densa, discutir o processo de construção de mapa denso RGB-D
Aula 13: Prática de engenharia, construir binóculos Estrutura de odometria visual, uso abrangente de conhecimento prévio , use o conjunto de dados Kitti para testar o desempenho.
Aula 14: Apresentar a solução SLAM de código aberto atual e direção de desenvolvimento futuro
Conhecimento básico necessário
- Matemática avançada, álgebra linear, teoria da probabilidade
- Base da linguagem C ++
- Noções básicas do sistema Linux
Aula 2 Primeira compreensão do SLAM
SLAM responde a duas perguntas principais:
- Onde estou? -Posicionamento
- Como é o ambiente circundante? --Mapeamento
Sensores
Dois tipos de sensores:
instalados no ambiente: código QR, GPS e
carregados no corpo do robô: em
comparação com os dois tipos de sensores, laser e câmera, o mapeamento a laser foi basicamente estudado de forma clara e o SLAM visual não foi estável e confiável.
Câmera: leve, barata, rica em informações
Desvantagens: oclusão, afetada pela luz, grande quantidade de cálculo,
monocular, binocular, câmera de profundidade (TOF / luz estruturada)
Estrutura visual SLAM clássica
- Leitura das informações do sensor: No visual SLAM, é principalmente a leitura e o pré-processamento das informações da imagem da câmera. Se for um robô, também pode ser a leitura e sincronização de informações como discos de código e sensores inerciais
- Odometria visual frontal (Odometria Visual, VO): A tarefa da odometria visual é estimar o movimento da câmera entre as imagens adjacentes e a aparência do mapa local, também conhecido como front end (Front End)
- Otimização não linear de back-end (Otimização): O back-end recebe a pose da câmera medida pelo odômetro visual em momentos diferentes e as informações da detecção do loop, e os otimiza para obter um mapa globalmente consistente. Porque depois de VO, também é chamado de Back End
- Detecção de fechamento de loop: a detecção de loop detecta se o robô alcançou a posição anterior. Se um loop for detectado, ele fornecerá as informações ao backend para processamento.
- Mapeamento: constrói um mapa correspondente aos requisitos da tarefa com base na trajetória estimada
A expressão matemática do problema SLAM
Em relação à descrição matemática do SLAM, existem principalmente duas equações, nomeadamente a equação da posição e a equação da observação:
xk representa a posição atual do robô, uk é a leitura ou entrada do sensor de movimento e zkj são os dados de observação estabelecidos por o robô e o ambiente.
Além disso, tanto a equação de posição como a equação de observação precisam introduzir ruído, ou seja, w e v na fórmula e, portanto, precisam ser otimizados no backend, ou estimativa de estado, para encontrar o mapa de pose mais provável.
Você pode consultar a figura abaixo para ter uma compreensão mais clara
Programação Linux Básico
Você pode consultar outra postagem minha, que registra as instruções operacionais mais básicas do Linux. Para iniciantes, você pode reduzir a carga de aprender
notas de estudo de conhecimento básico do Linux (instruções comuns)
Use Cmake
Esta parte não é bem compreendida. Pode ser simplesmente entendido que haverá um CmakeList para ajudar o projeto a determinar como compilar
no Linux. Quando terminarmos de escrever o código-fonte, precisamos compilar, vincular o projeto de vários arquivos e gerar um arquivo executável. Para obter a depuração e a execução, o Cmake pode gerar um makefile para o projeto e, em seguida, usar o comando make (a biblioteca C ++ é compilada com g ++) para compilar o projeto inteiro de acordo com o conteúdo do makefile.
o livro apresenta brevemente como usar a linha de comando e o cmake O exemplo de construção e execução do projeto é mais interessante
Aula 3 Movimento de corpo rígido no espaço tridimensional
- O objetivo desta aula: compreender a descrição do movimento de corpo rígido, matriz de rotação, matriz de transformação, quaternion e ângulo de Euler
- Domine a matriz da biblioteca Eigen e o uso do módulo de geometria
3.1 Ponto, vetor e sistema de coordenadas, matriz de rotação
- O ponto existe no espaço tridimensional
- Pontos e eletricidade podem formar vetores
- O ponto em si é descrito pelo vetor que aponta para ele a partir da origem
Vetor: com uma seta apontando, operações como adição e subtração podem ser realizadas.
Coordenadas vetoriais: podem ser expressas por coordenadas R3.
Sistema de coordenadas: consiste em três eixos ortogonais.
Um conjunto de bases que formam um espaço linear é
dividido em canhotos e
operações de vetor destro : adição e subtração, produto interno, produto externo
Em relação ao produto externo, uma pequena ponta é introduzida, o que significa que um vetor se torna uma matriz
em SLAM:
- Existe um sistema de coordenadas mundial fixo e um sistema de coordenadas de robô móvel
- O sistema de coordenadas do robô muda com o movimento do robô, e há um novo sistema de coordenadas a cada momento
Como transformar os dois sistemas de coordenadas? A translação entre a origem e a
matriz de rotação dos três eixos :
condições suficientes e necessárias:
- R é uma matriz ortogonal, o inverso da matriz é igual a transpor
- O determinante de R é 1
Rotação do espaço tridimensional: SO (3) também se tornou um grupo ortogonal especial. O conceito de grupo é discutido na álgebra de Lie.
Quatro números são usados para descrever as coordenadas tridimensionais, que podem realizar translação e rotação ao mesmo tempo.
Essa abordagem é chamada de coordenadas homogêneas .
Nesse momento, a rotação e a translação podem ser colocadas em uma matriz, chamada de matriz de transformação .
A matriz de rotação e a matriz de transformação são as seguintes (forma não homogênea)
3.3 Ângulo de Euler
O ângulo de Euler descreve o ângulo em que um corpo rígido gira em torno de três eixos.
Diferentes sequências de rotação correspondem a diferentes ângulos de Euler. A sequência ZYX é comumente usada, ou seja, o
ângulo de Euler "yaw-pitch-roll" tem um problema de bloqueio universal. Em alguns casos, um grau de liberdade será perdido.
Para o problema de bloqueio universal, você pode usar um telefone celular para testar (ou qualquer objeto). Uma vez que ele é girado em torno de um eixo ± 90 graus, os outros dois eixos terão o mesmo efeito e perder uma dimensão. Informação, muito interessante.
Na verdade, não podemos encontrar uma descrição de vetor tridimensional sem singularidade,
então a descrição quadridimensional de quatérnio é usada para representar a rotação.
3.4 Quaternion
Um número complexo estendido. O
quaternion tem três partes imaginárias, que podem expressar a rotação no espaço tridimensional
. Existem relações aritméticas específicas entre as partes imaginárias. Acho que os
quatérnios de produto cruzado no espaço tridimensional têm muitas fórmulas específicas, incluindo quatérnios. O inverso de (importante para expressar a rotação)
Nota: A multiplicação do quatérnio está sobrecarregada na biblioteca Eigon. Não é necessário escrever o inverso do quatérnio. A sobrecarga do operador automaticamente completa esta etapa.
Aula 4 Grupo de Lie e Álgebra de Lie
O objetivo fundamental de estudar grupos de Lie e álgebras de Lie:
- Transforme a matriz de rotação em uma forma que pode ser adicionada e subtraída
- Elimine problemas de restrição na otimização de back-end
Através da relação de conversão entre grupos de Lie e álgebras de Lie, espera-se transformar a estimativa de pose em um problema de otimização sem restrições.
Grupos de Lie e base de álgebra de Lie
Já contatamos dois grupos antes:
- Grupo ortogonal especial: a matriz de rotação do espaço tridimensional SO (3) é uma matriz ortogonal e o determinante é 1, então é a matriz de rotação
- Grupo euclidiano especial: SE (3) contém uma matriz de rotação espacial tridimensional R, um vetor de translação t, uma matriz de transformação espacial quadridimensional de 0 ^ T e 1, que é um grupo de transformação Euclidiana tridimensional
Grupo : É uma estrutura algébrica de um conjunto mais uma operação. Esta operação deve satisfazer as quatro condições de "fechamento inverso unitário"
- Fecho
- Lei associativa
- Unitário
- Reverter
Grupo de Lie : refere-se ao grupo
matriz antissimétrica com propriedades contínuas (suaves) : para um vetor, ele pode ser transformado em uma matriz antissimétrica, e para qualquer matriz antissimétrica, um vetor correspondente também pode ser encontrado. O símbolo específico e o significado são mostrados na figura abaixo.
Álgebra de Lie Φ : É o espaço tangente de SO (3) próximo à origem. Existem as seguintes fórmulas de cálculo aproximadas. A derivação da matriz de rotação é equivalente a multiplicar uma matriz antissimétrica de álgebra de Lie, matriz de rotação A álgebra de Lie igual a e à potência da matriz antissimétrica A
álgebra de Lie consiste em um conjunto, um campo numérico e uma operação binária. Se eles satisfizerem as seguintes características, ( V, F, [,] ) é chamada de álgebra de Lie , Deve
ser claramente marcado como g que a álgebra de Lie representa indiscriminadamente um vetor tridimensional e sua matriz antissimétrica. Isso pode ser visto na seguinte fórmula
Mapeamento exponencial : Em grupos de Lie e álgebras de Lie, o cálculo de exp (Φ ^) é chamado de Mapa Exponencial (Mapa Exponencial)
para um certo momento (isso é muito importante, independentemente da influência do tempo t), tome SO (3) como um exemplo, a seguinte equação
é válida. O lado esquerdo da equação é a matriz de rotação em um determinado momento (há um na derivação da fórmula). Ao mesmo tempo, equivalente a álgebra de Lie Φ a θa, θ é o comprimento do módulo, e a é o comprimento de 1 O vetor de direção, em
particular, a fórmula acima eFórmula de RodriguezDa mesma forma, isso mostra que a álgebra de Lie então (3) é na verdade um espaço composto dos chamados vetores de rotação , e o mapeamento exponencial é a fórmula de Rodriguez.
Por meio deles, correspondemos qualquer vetor na álgebra de Lie so (3) a uma matriz de rotação no grupo de Lie SO (3) . Por outro lado, defina o mapeamento logarítmico
Mapeamento logarítmico : o processo inverso do mapeamento exponencial, a fórmula é a seguinte:
Grupo de Lie e relacionamento de transformação mútua da álgebra de Lie é representado pelo seguinte diagrama de relacionamento
** Problema de derivação da álgebra de Lie: ** Ao resolver a estimativa ideal, frequentemente construímos e pose Funções relacionadas e, em seguida, discuta a derivada da função em relação à pose para ajustar a estimativa atual.
Idéias para derivação da álgebra de Lie:
- Use a álgebra de Lie para expressar a pose e, em seguida, derivar a álgebra de Lie de acordo com a adição da álgebra de Lie
- Multiplique o grupo de Lie para a esquerda ou direita pelo pequeno distúrbio e, em seguida, obtenha a derivada do distúrbio, que é chamada de modelos de distúrbio esquerdo e direito.
Derivação da álgebra de Lie diretamente, o resultado é o seguinte, porque contém uma forma mais complicada de Jl, não gostamos dessa representação.
A derivação do modelo de perturbação é a seguinte. É importante compreender a seguinte fórmula
Pratique Sophus
Precisa ser adicionado
Aula 5 Câmera e Imagem
Modelo de câmera
A câmera mapeia os pontos de coordenadas no mundo tridimensional (em metros) para o plano da imagem bidimensional (em pixels) e pode ser descrita por um modelo geométrico.
O mais comumente usado é o modelo pinhole .
Além disso, a relação de conversão de vários sistemas de coordenadas está envolvida aqui.
Quatro sistemas de coordenadas:
Sistema de coordenadas mundiais - sistema de coordenadas da câmera - sistema de coordenadas de imagem - sistema de coordenadas de pixel Sistema de coordenadas
mundiais : o sistema de coordenadas básico mais primitivo definido pelo homem, usado para descrever a posição de cada objeto no mundo
Sistema de coordenadas da câmera: o centro óptico da câmera é o origem, o próprio sistema de coordenadas da câmera é um sistema de coordenadas tridimensional. Sistema de
coordenadas de imagem : no plano de imagem da câmera, a fim de descrever a situação de imagem do sistema de coordenadas da câmera, o sistema de
coordenadas de pixel do sistema de coordenadas bidimensional estabelecido : pegue o canto superior esquerdo do plano de imagem É a origem, e o tamanho do pixel é o valor da divisão de coordenadas. A imagem no sistema de coordenadas da imagem é convertida em informações de coordenadas de pixel, que é o sistema de coordenadas bidimensional da imagem final
Modelo de câmera pinhole
O diagrama esquemático do modelo da câmera pinhole é mostrado na figura.
Sistema de coordenadas mundiais para sistema de coordenadas da câmera:
complete uma translação e rotação do
sistema de coordenadas mundiais personalizado para o sistema de coordenadas da imagem:
use a relação de projeção e encontre uma proporção de projeção com base em o teorema da similaridade
Sistema de coordenadas de imagem relacional para sistema de coordenadas de pixel:
devido à diferente escala de coordenadas e origem, ele precisa ser esticado e transladado
o que é interessante: Quando filmamos com uma câmera monocular, perdemos as informações de profundidade. Isso se reflete no processo de normalização do processo de cálculo. De uma perspectiva física, enquanto o ponto de projeção de um objeto permanecer inalterado, ele pode estar no espaço. a qualquer distância distante, ou pequenos objetos próximos e grandes objetos à distância podem ser exatamente iguais
Modelo de distorção
Classificação de distorção:
- Distorção radial: distorção causada pelo formato da lente: distorção em barril e distorção em almofada
- Distorção tangencial: distorção introduzida pela lente e a superfície da imagem não sendo estritamente paralela
Parte prática
Precisa ser adicionado