Chama aberta

Relatório de aprendizagem Openvslam

O que é Openvslam

conceito

OpenVSLAM (Visual SLAM) é uma biblioteca de localização visual e construção de mapas de código aberto (Visual Simultaneous Localization and Mapping, Visual SLAM). O objetivo é obter posicionamento de câmeras em tempo real e construção de mapas usando câmeras monoculares, câmeras binoculares, câmeras RGB-D ou outros sensores . Visual SLAM é uma tecnologia que permite que máquinas (como robôs, veículos ou drones) detectem informações visuais em um ambiente desconhecido para localizar e construir mapas em tempo real . Permite que os desenvolvedores aproveitem os dados de imagem capturados por uma câmera para posicionar a própria câmera e criar mapas do ambiente . Ele combina tecnologias básicas, como extração de recursos, correspondência de recursos, estimativa de pose e construção de mapas para obter posicionamento de câmera e construção de mapas precisos e em tempo real.

Características

  • Suporte multisensor
  • desempenho em tempo real
  • Código aberto
  • Fácil de usar

Instale e execute OpenVSLAM

Clonar código-fonte

git clone https://github.com/lp-research/openvslam

Instale bibliotecas dependentes

  • Instale as dependências do sistema Ubuntu
sudo apt update -y
sudo apt upgrade -y --no-install-recommends
# basic dependencies
sudo apt install -y build-essential pkg-config cmake git wget curl unzip
# g2o dependencies
sudo apt install -y libatlas-base-dev libsuitesparse-dev
# OpenCV dependencies
sudo apt install -y libgtk-3-dev
sudo apt install -y ffmpeg
sudo apt install -y libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libavresample-dev
# eigen dependencies
sudo apt install -y gfortran
# other dependencies
sudo apt install -y libyaml-cpp-dev libgoogle-glog-dev libgflags-dev

# (if you plan on using PangolinViewer)
# Pangolin dependencies
sudo apt install -y libglew-dev
  • Instale a biblioteca de matrizes Eigen
cd /Desktop/study/dir
wget -q http://bitbucket.org/eigen/eigen/get/3.3.4.tar.bz2
tar xf 3.3.4.tar.bz2
rm -rf 3.3.4.tar.bz2
cd eigen-eigen-5a0156e40feb
mkdir -p build && cd build
cmake \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=/usr/local \
    ..
make -j4
sudo make install
  • Instale a biblioteca OpenCV
cd /Desktop/study/dir
wget -q https://github.com/opencv/opencv/archive/3.4.0.zip
unzip -q 3.4.0.zip
rm -rf 3.4.0.zip
cd opencv-3.4.0
mkdir -p build && cd build
cmake \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=/usr/local \
    -DENABLE_CXX11=ON \
    -DBUILD_DOCS=OFF \
    -DBUILD_EXAMPLES=OFF \
    -DBUILD_JASPER=OFF \
    -DBUILD_OPENEXR=OFF \
    -DBUILD_PERF_TESTS=OFF \
    -DBUILD_TESTS=OFF \
    -DWITH_EIGEN=ON \
    -DWITH_FFMPEG=ON \
    -DWITH_OPENMP=ON \
    ..
make -j4
sudo make install
  • Instale o DBoW2
cd /Desktop/study/dir
git clone https://github.com/shinsumicco/DBoW2.git
cd DBoW2
mkdir build && cd build
cmake \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=/usr/local \
    ..
make -j4
sudo make install
  • Instalar g2o
cd /Desktop/study/dir
git clone https://github.com/RainerKuemmerle/g2o.git
cd g2o
git checkout 9b41a4ea5ade8e1250b9c1b279f3a9c098811b5a
mkdir build && cd build
cmake \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=/usr/local \
    -DCMAKE_CXX_FLAGS=-std=c++11 \
    -DBUILD_SHARED_LIBS=ON \
    -DBUILD_UNITTESTS=OFF \
    -DBUILD_WITH_MARCH_NATIVE=ON \
    -DG2O_USE_CHOLMOD=OFF \
    -DG2O_USE_CSPARSE=ON \
    -DG2O_USE_OPENGL=OFF \
    -DG2O_USE_OPENMP=ON \
    ..
make -j4
sudo make install
  • Instale a biblioteca Pangolin
cd /Desktop/study/dir
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
git checkout ad8b5f83222291c51b4800d5a5873b0e90a0cf81
mkdir build && cd build
cmake \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=/usr/local \
    ..
make -j4
sudo make install
  • Compilar código fonte
cd /Desktop/study/openvslam
mkdir build && cd build
cmake \
    -DBUILD_WITH_MARCH_NATIVE=ON \
    -DUSE_PANGOLIN_VIEWER=ON \
    -DUSE_SOCKET_PUBLISHER=OFF \
    -DUSE_STACK_TRACE_LOGGER=ON \
    -DBOW_FRAMEWORK=DBoW2 \
    -DBUILD_TESTS=ON \
    ..
make -j4

Teste (o ambiente foi instalado com sucesso)

Insira a descrição da imagem aqui

correr

Insira a descrição da imagem aqui

Resumo de execuções com falha

O grande sucesso é a saída depois que alterei o código. Talvez a memória esteja cheia. Depois de ouvir o conselho do professor, aluguei um servidor. E depois de consultar as informações, descobri que pode ser instalado com um clique usando Docker.

Execute com sucesso

$ docker pull celinachild/openvslam:latest

$ docker run --gpus all -it --ipc=host --net=host --privileged -e DISPLAY=unix$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix:rw -e NVIDIA_DRIVER_CAPABILITIES=all celinachild/openvslam

# for mapping
$ ./run_video_slam -v ./orb_vocab/orb_vocab.dbow2 -m ./aist_living_lab_1/video.mp4 -c ./aist_living_lab_1/config.yaml --no-sleep --map-db map.msg

# for localization
$ ./run_video_localization -v ./orb_vocab/orb_vocab.dbow2 -m ./aist_living_lab_2/video.mp4 -c ./aist_living_lab_2/config.yaml --no-sleep --map-db map.msg

Insira a descrição da imagem aqui

Insira a descrição da imagem aqui

projeto de sistema

O design geral do sistema OpenVSLAM pode ser resumido nos seguintes aspectos principais:

  1. Modelo de câmera e entrada de sensor : OpenVSLAM suporta muitos tipos diferentes de modelos de câmera e entrada de sensor, incluindo câmeras monoculares, binoculares, RGB-D, etc.
  2. Extração e rastreamento de recursos : OpenVSLAM usa recursos visuais para localização e mapeamento. O módulo de extração e rastreamento de recursos é responsável por detectar pontos-chave na imagem e rastrear esses pontos de recursos entre quadros consecutivos.
  3. Odometria visual : Este módulo é responsável por calcular a estimativa de movimento da câmera entre quadros consecutivos para determinar a posição e atitude da câmera.
  4. Detecção de loopback : OpenVSLAM inclui um módulo de detecção de loopback para identificar quadros semelhantes obtidos em diferentes pontos no tempo e corrigir possíveis desvios.
  5. Mapeamento : O módulo de mapeamento converte pontos característicos e estimativas de movimento em mapas para representar a estrutura tridimensional do ambiente.
  6. Otimização : O módulo de otimização é usado para otimização global do mapa para melhorar a precisão do posicionamento e a consistência do mapa.
  7. Visualização e saída : OpenVSLAM também inclui ferramentas de visualização e módulos de saída para facilitar aos usuários a visualização de posicionamento e resultados de mapas.

Módulos e interfaces de função

O código do OpenVSLAM é basicamente dividido em vários módulos de acordo com o design do sistema acima, e cada módulo contém múltiplas funções e classes. Aqui estão alguns dos principais módulos e suas funções:

  1. Módulo FeatureExtractor : responsável pela extração de pontos característicos.
  2. Módulo inicializador : realiza operações de inicialização, como inicializar a odometria visual.
  3. Módulo de rastreamento : realiza rastreamento e posicionamento da câmera.
  4. Módulo LoopDetector : usado para detectar loopbacks.
  5. Módulo Mapa : gerencia a estrutura do mapa, incluindo quadros-chave e pontos do mapa.
  6. Módulo otimizador : realiza otimização global do mapa.
  7. Módulo do sistema : O núcleo do sistema, coordenando a operação de cada módulo.

Processo de chamada

O processo de chamada do OpenVSLAM geralmente envolve as seguintes etapas:

  1. Inicialize o sistema OpenVSLAM e selecione o tipo e configuração da câmera.
  2. Fornece entrada de sensor, como sequências de imagens ou fluxos de dados de câmeras.
  3. Execute extração e rastreamento de recursos e calcule a odometria visual.
  4. Durante a operação, o módulo de detecção de loopback pode ser acionado para detectar loopbacks.
  5. A otimização global do mapa é realizada regularmente para melhorar a consistência do mapa e a precisão do posicionamento.
  6. Resultados de posicionamento de saída e dados de mapa para visualização ou aplicação posterior.

fluxograma

Insira a descrição da imagem aqui

Referências

lp-research/openvslam: OpenVSLAM Fork para LP-Research (github.com)

zm0612/openvslam-comments: Comente o código da versão do openvslam (github.com)

https://hub.docker.com/r/celinachild/openvslam

https://arxiv.org/abs/1910.01122 (artigo: OpenVSLAM: uma estrutura visual SLAM versátil)

ChatGPT (openai.com)

Acho que você gosta

Origin blog.csdn.net/m0_56898461/article/details/132729433
Recomendado
Clasificación