Recentemente, configurei o projeto de código VINS_Fusion do laboratório HKUST-Aerial-Robotics ao fazer treinamento em pesquisa científica. Tive alguns problemas com erros de compilação. Deixe-me anotar alguns problemas comuns encontrados durante minha configuração e guardá-los para referência futura e trocar e estudar com todos.
portal do site github -> https://github.com/HKUST-Aerial-Robotics/VINS-Fusion
1. Instale o ubnutu20.04
Não vou entrar em detalhes aqui, mas recomendo o vídeo instrutivo sobre a instalação do dual system do ubuntu20.04 na estação b, que é muito bom!
Portal -> Instalação e desinstalação do sistema dual Windows e Ubuntu_哔哩哔哩_bilibili
2. Instale o ROS
Para cada versão ubuntu diferente, ROS tem uma versão especial única correspondente a ela. Por exemplo, ROS Kinetic corresponde a ubuntu16.04, ROS Melodic corresponde a ubuntu18.04 e ROS corresponde a ubuntu20.04.noetic.
As etapas de instalação do ROS são relativamente maduras, portanto, os artigos existentes são citados diretamente aqui como referência.
Portal ->
As etapas deste tweet são relativamente simples e quase suficientes. Esta é a primeira escolha.
Nova instalação e configuração do Ubuntu20.04 ROS Instalação Noetic_ubuntu20.04 ros
Este tweet é muito mais complicado. Não sabemos por que a instalação do ROS é tão complicada hahahaha, mas deve haver algumas etapas de relatório de erro adicionadas a ele. Se você tiver problemas de relatório de erro, pode consultá-lo.
3. Instale o Ceres
Observe que haverá um buraco aqui. Se você seguir o link fornecido no github, o ceres instalado é a versão 2.X. Ao usar esta versão, isso causará erros de compilação posteriormente, portanto, não siga as etapas de instalação no oficial A versão que precisamos escolher aqui é Ceres1.14.0, instalar esta versão evitará muitos problemas mais tarde.
Primeiro baixe as dependências
sudo apt-get install cmake
sudo apt-get install libgoogle-glog-dev libgflags-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install libeigen3-dev
sudo apt-get install libsuitesparse-dev
Em seguida, baixe o pacote de instalação ceres-solver1.14.0 e descompacte-o (o pacote de instalação baixado está no diretório principal)
#下载安装包
wget ceres-solver.org/ceres-solver-1.14.0.tar.gz
#解压安装包
tar -xvf ceres-solver-1.14.0.tar.gz
Por fim, conclua a operação de compilação e instalação
cd ceres-solver-1.14.0
mkdir build
cd build
cmake ..
sudo make
sudo make test
sudo make install
Até agora, a instalação da versão ceres1.14.0 está concluída.
4. Configure o VINS-Fusion
Clone o código do github e compile
cd ~/catkin_ws/src
git clone https://github.com/HKUST-Aerial-Robotics/VINS-Fusion.git
cd ../
catkin_make
source ~/catkin_ws/devel/setup.bash
Observe que aqui catkin_ws é apenas um nome de arquivo usado para identificar o arquivo compilado. Se o seu computador criou um arquivo catkin_ws pertencente a esse trecho de código no computador ao compilar outros códigos, você precisa alterar esse trecho de código aqui. Compile o nome do arquivo, como alterar para vins_ws, para evitar conflitos.
Na etapa catkin_make, se o anaconda3 estiver configurado em seu sistema ubuntu ou houver um problema com o caminho python no uso anterior, é recomendável especificar o caminho de compilação python3 aqui. O comando é o seguinte:
catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3
Durante o processo de compilação, haverá os seguintes tipos de erros:
1. Em primeiro lugar, há um conflito entre o OpenCV4 que vem com a versão ROS noetic e o OpenCV3 que precisa ser usado no VINS-mono. Modifique o código vins-mono para ser compatível com opencv4. Na verdade, a principal modificação é o pacote camera_model.Felizmente, descobriu-se que não há necessidade de modificar as variáveis incompatíveis no código, mas os arquivos de cabeçalho ausentes podem ser incluídos diretamente. Portanto, consulte o documento de referência opencv para localizar o arquivo de cabeçalho da variável indefinida em opencv4 em opencv3 e, em seguida, adicione-o ao arquivo de cabeçalho correspondente de camera_model para resolver o problema sem problemas. (Vá para a pasta na interface gráfica para encontrar o arquivo correspondente)
在camera_model包中的头文件Chessboard.h中添加
#include <opencv2/imgproc/types_c.h>
#include <opencv2/calib3d/calib3d_c.h>
在CameraCalibration.h中添加
#include <opencv2/imgproc/types_c.h>
#include <opencv2/imgproc/imgproc_c.h>
2. Um erro foi relatado durante a compilação: 'CV_FONT_HERSHEY_SIMPLEX' não foi declarado neste escopo
Solução: Encontre o arquivo de erro correspondente de acordo com o caminho indicado no lembrete de erro, procure por CV_FONT_HERSHEY_SIMPLEX no arquivo e substitua por cv::FONT_HERSHEY_SIMPLEX.
3. Um erro foi relatado durante a compilação: 'CV_BGR2GRAY' não foi declarado neste escopo
Solução: Encontre o arquivo de erro correspondente de acordo com o caminho indicado no lembrete de erro, procure por CV_BGR2GRAY no arquivo e substitua-o por cv::COLOR_BGR2GRAY.
4. Um erro foi relatado durante a compilação: 'CV_LOAD_IMAGE_GRAYSCALE' não foi declarado neste escopo
Solução: Encontre o arquivo de erro correspondente de acordo com o caminho indicado no lembrete de erro, procure por CV_LOAD_IMAGE_GRAYSCALE no arquivo e substitua por IMREAD_GRAYSCALE.
Todas as etapas acima exigem que encontremos a localização dos arquivos lentamente e modifiquemos um por um. É complicado, então não fique ansioso, esses são processos necessários!
Você pode consultar os artigos relacionados: Ubuntu20.04 executa Vins-fusion_run vin fusion_Keji's Blog-CSDN Blog
5. Execute o conjunto de dados
Até agora, todas as configurações foram concluídas, só precisamos baixar o conjunto de dados e salvá-lo no local especificado e executá-lo de acordo com as instruções no github.
Exemplo——Câmera monocular + IMU
roslaunch vins vins_rviz.launch
rosrun vins vins_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml
(optional) rosrun loop_fusion loop_fusion_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml
rosbag play YOUR_DATASET_FOLDER(需要修改为放置数据集的文件夹名字)/MH_01_easy.bag
Na segunda linha de comando, se nosso arquivo compilado não for chamado catkin_ws, mas chamado vins_ws ou outros nomes, precisamos modificar o comando da seguinte maneira:
rosrun vins vins_node ~/vins_ws(或者对应的文件名)/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml
O comando de quatro linhas precisa ser executado em quatro terminais mesmo~
Finalmente, podemos ver a gravação em vídeo do conjunto de dados rodando no RVIZ!
FIM!