在WSL-Ubuntu18.04下,安装OpenREALM过程及遇到的问题和解决办法

源码安装CMake-3.18.4

OpenREALM要求CMake版本在3.15以上。

安装CMake-3.18.4:

  • 命令1sudo apt install build-essential libssl-dev
  • 命令2wget https://github.com/Kitware/CMake/releases/download/v3.18.4/cmake-3.18.4.tar.gz
  • 命令3tar -zxvf cmake-3.18.4.tar.gz
  • 命令4cd cmake-3.18.4
  • 命令5./bootstrap
  • 命令6make
  • 命令7sudo make install

安装OpenCV-3.3.1

1.安装CUDA和依赖环境

  • 命令1sudo apt-get install nvidia-cuda-toolkit
  • 命令2sudo apt-get install build-essential
  • 命令3sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
  • 命令4sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev
  • 命令6sudo apt update
  • 命令7sudo apt install libjasper1 libjasper-dev

2.安装gcc-6和g++-6,并将其设置为当前选项。

  下载gcc:sudo apt-get install gcc-6 g++-6

  完成后可输入  ls /usr/bin/gcc*与ls /usr/bin/g++*  查看系统装有的gcc与g++版本。

  装了gcc-6之后,指定gcc-6进行编译:

    sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 100

  更新默认的gcc版本配置:

    sudo update-alternatives --config gcc

  指定g++-6进行编译:

    sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-6 100

  更新默认的g++版本配置:

     sudo update-alternatives --config g++

3.源码安装OpenCV-3.3.1(注意!!必须带有 opencv_contrib ):

  这里用gcc-6和g++-6是因为后面用的是CUDA-9进行编译,所以GCC与G++的版本保持为6即可。  

  OpenCV-3.3.1的安装过程请参考这篇博客:安装OpenCV-3.3.1,带opencv_contrib (点击本链接即可打开)

  


安装OpenVSLAM

依赖环境:CUDA-9、OpenCV-3.3.1、Pangolin-0.5

注意:该版本是OpenREALM作者修改过的版本,安装其他版本的OpenVSLAM可能会导致OpenREALM无法正常运行。

1.安装依赖库

  • 命令1sudo apt-get install libglew-dev
  • 命令2sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev
  • 命令3sudo apt-get install libx11-dev libxmu-dev libglu1-mesa-dev libgl2ps-dev libxi-dev g++ libzip-dev libpng12-dev libcurl4-gnutls-dev libfontconfig1-dev libsqlite3-dev libglew*-dev libssl-dev
  • 命令4sudo apt-get install glew-utils
  • 命令5sudo apt install libglew-dev
    •   报错1:The following packages have unmet dependencies:
      libglewmx-dev : Conflicts: libglew-dev but 2.0.0-5 is to be installedE: Unable to correct problems,you have held broken packages.
    •   原因:应该是系统现有版本与欲装版本问题不匹配
    •   解决办法:

        sudo apt update

        sudo apt-get install libglewmx-dev

2.安装Pangolin-0.5

  到GitHub上下载Pangolin-0.5源码(链接:Pangolin-0.5

  • 命令1cd Pangolin
  • 命令2mkdir build && cd build
  • 命令3cmake -DCPP11_NO_BOOST=1 ..
  • 命令4make -j6
  • 命令5sudo make install

3.安装OpenVSLAM

首先打开\openvslam\.git\config,将 https://github.com/OpenVSLAM-Community/FBoW.git 修改为:https://github.com/stella-cv/FBoW.git

  • 命令1cd ~ && cd app && cd openvslam
  • 命令2git clone git@github.com:laxnpander/openvslam.git
  • 命令3cd openvslam
  • 命令4git submodule init && git submodule update
  • 命令5mkdir build && cd build
  • 命令6cmake \

           -DUSE_PANGOLIN_VIEWER=ON \

           -DINSTALL_PANGOLIN_VIEWER=ON \

           -DUSE_SOCKET_PUBLISHER=OFF \

           -DUSE_STACK_TRACE_LOGGER=ON \

           -DBUILD_TESTS=ON \

           -DBUILD_EXAMPLES=ON \

           ..

    •   报错1:无法下载release-1.10.0.tar.gz
    •   原因:被墙
    •   解决办法:网址https://github.com/google/googletest/tags,去浏览器下载googletest-release-1.10.0.tar.gz,然后将以下这个路径的文件替换为刚刚下载好的压缩包:openvslam\build\googletest-download\googletest-download-prefix\src\release-1.10.0.tar.gz

      注意,需要将压缩包改名为release-1.10.0.tar.gz

      然后再次执行cmake。

  • 命令7make -j6
  • 命令8sudo make install

安装OpenREALM

(官方安装教程:https://github.com/laxnpander/OpenREALM)

1.下载安装包

  • 命令1git clone https://github.com/laxnpander/OpenREALM.git
  • 命令2git submodule init
  • 命令3git submodule update

2.安装依赖包

打开OpenREALM\tools\install_deps.sh,将#OpenVSLAM部分注释掉。

若g2o下载慢,可顺便将第138行的链接改为:git@github.com:RainerKuemmerle/g2o.git

  • 命令1cd OpenREALM/tools
  • 命令2chmod u+x install_deps.sh
  • 命令3./install_deps.sh

3.编译安装OpenREALM

  • 命令1cd ..
  • 命令2mkdir build && cd build
  • 命令3cmake ..
    • 报错1:realm_densifier/realm_densifier_impl/psl does not contain a CMakeLists.txt file.
    • 原因:没有下载PSL
    • 解决办法:去GitHub下载psl,然后重新cmake即可

      cd OpenREALM/modules/realm_densifier/realm_densifier_impl/psl

      git clone git@github.com:laxnpander/PSL.git

    •  

      错误2:CMake Error at modules/realm_stages/CMakeLists.txt:105 (add_library):   Target "realm_stages" links to target "fbow::fbow" but the target was not   found.  Perhaps a find_package() call is missing for an IMPORTED target, or   an ALIAS target is missing?

    • 原因: 找不到FboW依赖包
    • 解决方法:打开OpenREALM\CMakeLists.txt,添加以下几句:    

      set(FBOW_INCLUDE_DIRS "/usr/local/include")

      set(FBOW_LIBS "/usr/local/lib/libfbow.so")

      find_package(fbow REQUIRED)

      然后重新cmake。

  • 命令4make -j6
  • 命令5:sudo make install

安装OpenREALM测试数据集

1.Create a ROS workspace for compilation(在OpenREALM\路径下执行)

  • 命令1mkdir catkin_ws && cd catkin_ws
  • 命令2mkdir src && cd src

2.Get the ROS package && additional dependencies

      (SSH方式:git clone git@github.com:laxnpander/OpenREALM_ROS1_Bridge.git)

  # Additional ROS package dependencies

  • 命令2sudo apt install -y -q python-catkin-tools build-essential git wget
  • 命令3sudo apt install -y -q ros-$ROS_DISTRO-geographic-msgs
  • 命令4sudo apt install -y -q ros-$ROS_DISTRO-geodesy
  • 命令5sudo apt install -y -q ros-$ROS_DISTRO-cv-bridge
  • 命令6sudo apt install -y -q ros-$ROS_DISTRO-rviz
  • 命令7sudo apt install -y -q ros-$ROS_DISTRO-pcl-ros

3.Make sure you are in catkin_ws, not src. Then build it

  • 命令1cd ..
  • 命令2catkin_make -DCMAKE_BUILD_TYPE=Release
    • 错误1:CMake Error at OpenREALM_ROS1_Bridge/realm_ros/CMakeLists.txt:143 (add_executable):

          Target "realm_exiv2_grabber" links to target "Boost::filesystem" but the

          target was not found.  Perhaps a find_package() call is missing for an

          IMPORTED target, or an ALIAS target is missing?

    

    • 原因:找不到相应的文件
    • 解决办法:(参考:https://github.com/laxnpander/OpenREALM/issues/75)

      打开OpenREALM\catkin_ws\src\OpenREALM_ROS1_Bridge\realm_ros\CMakeList.txt文件,

      在第53行添加:

      # boost

        find_package(Boost COMPONENTS thread filesystem date_time system REQUIRED)

      在第74行添加:

        find_package(fbow REQUIRED)

        find_package(CGAL REQUIRED)  

      在第115行添加:

        set(CMAKE_MODULE_PATH "/usr/lib/x86_64-linux-gnu/cmake")

        add_library(FLANN::FLANN INTERFACE IMPORTED)

      在第125行,在target_link_libraries(...) 处添加:

        ${Boost_FILESYSTEM_LIBRARIES}

        ${Boost_SYSTEM_LIBRARIES}

    


运行OpenREALM测试数据集

1.下载数据集(建议下载后再拖到Ubuntu里面):

https://drive.google.com/open?id=1-2h0tasI4wzxZKLBbOz3XbJ7f5xlxlMe

2.进入到数据所在的路径,然后解压:

  • 命令1tar -xvzf open_realm_edm_dataset.tar.gz

3.确认Launch文件中的数据集路径:

  profiles文件夹路径为:OpenREALM\catkin_ws\src\OpenREALM_ROS1_Bridge\realm_ros

  在运行前需要打开OpenREALM\catkin_ws\src\OpenREALM_ROS1_Bridge\realm_ros\launch

  需要修改launch文件中的第13行,将value值设置为自己数据集所在的绝对地址

4.安装AerialMapDisplay功能包:

  sudo apt-get install ros-$ROS_DISTRO-rviz-satellite

5.运行Launch文件:

  先进入到OpenREALM/catkin_ws/src/OpenREALM_ROS1_Bridge/realm_ros/launch路径下,然后再输入以下测试命令。

  • GNSS only mapping:

    命令:roslaunch realm_ros alexa_gnss.launch

  • 2D mapping with visual SLAM:

    命令:roslaunch realm_ros alexa_noreco.launch

  • 5D mapping with visual SLAM and surface reconstruction:

    命令:roslaunch realm_ros alexa_reco.launch

 

在运行时可能遇到的错误:

  • 错误1:RLException: [alexa_gnss.launch] is neither a launch file in package [realm_ros] nor is [realm_ros] a launch file name.

The traceback for the exception was written to the log file

  • 原因:realm_ros环境没有添加到ROS的路径里面,所以找不到。
  • 解决办法:

    打开bashrc文件:

      sudo vim ~/.bashrc

    然后在最下面一行输入(路径按自己电脑的路径进行修改):

      source /home/your_name/app/OpenREALM/catkin_ws/devel/setup.sh

      export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/your_name/app/OpenREALM/catkin_ws/

    保存并退出,然后重启bashrc:

      source ~/.bashrc

    查看路径是否加上:

      echo $ROS_PACKAGE_PATH

  • 错误2:运行后会弹出空白RViz窗口。

    同时在终端也会提示:

    [ERROR] [1700274476.866316760]: PluginlibFactory: The plugin for class 'rviz_plugins/AerialMapDisplay' failed to load.  Error: According to the loaded plugin descriptions the class rviz_plugins/AerialMapDisplay with base class type rviz::Display does not exist.

    

  • 原因1: 缺少AerialMapDisplay功能包
  • 解决办法:sudo apt-get install ros-$ROS_DISTRO-rviz-satellite
  •  
  • 原因2: OpenCV没有带有OpenCV_contrib依赖包,导致OpenVSlam运行不起来,所以跟踪不到影像的特征点,拼接失败,故Rviz界面是空白的。
  • 解决办法:重新安装一遍带有OpenCV_contrib依赖包的OpenCV-3.3.1;可以参见我上面的安装流程。

 


成功运行的结果图:

posted @ 2023-11-19 12:19  LesPlumes  阅读(1371)  评论(19编辑  收藏  举报