在此记录一下msckf_mono的学习过程


文章目录


构建工程

按照msckf_mono的github​​工程​​上的介绍安装就好。

依赖项


  • ROS Kinetic(应该主要是为了用到rviz的可视化)
  • OpenCV
    直接用系统默认的,没有的话,运行如下命令:

$ sudo apt-get install libopencv-dev
  • Boost
    直接用系统的,没有的话,运行如下命令:
$ sudo apt-get install libboost-dev
  • Eigen
    直接用系统的,没有的话,运行如下命令:
$ sudo apt-get install libeigen3
  • fast
    这是唯一一个需要自行编译的第三方依赖库,源码来自uzh-rpg,构建指令如下:
git clone https://github.com/uzh-rpg/fast
cd fast
mdkir build
cd build
cmake ..
make
sudo make install

构建msckf_mono

创建一个ROS工作空间,在这里我的工作空间名字是vioSlam_ws,名字随意取就好。然后进入工作空间下的src拉取msckf_mono的github源码

mkdir -p ~/vioSlam_ws/src
cd src
git clone https://github.com/daniilidis-group/msckf_mono

然后编译msckf_mono:

$ cd ~/vioSlam_ws
$ catkin_make
$ source devel/setup.bash

在编译的时候出现报错:No rule to make target ‘/usr/lib/x86_64-linux-gnu/libvtkproj4-6.2.so.6.2.0’, needed by ‘/home/yan/vioSlam_ws/devel/lib/libmsckf_mono.so’。 停止

解决方法:

sudo ln -s /usr/lib/x86_64-linux-gnu/libvtkCommonCore-6.2.so /usr/lib/x86_64-linux-gnu/libvtkproj4-6.2.so.6.2.0

应该是链接libvtkproj4-6.2.so.6.2.0的问题,重新链接就好。然后重新编译。

准备数据集以及运行

msckf_mono提供了两种数据集格式

  • rosbag格式
    Download MH_03_medium.bag from into the euroc folder in this repository.
wget http://robotics.ethz.ch/~asl-datasets/ijrr_euroc_mav_dataset/machine_hall/MH_03_medium/MH_03_medium.bag
mv MH_03_medium.bag <path_to_msckf_mono>/euroc/.

运行:

roslaunch msckf_mono euroc.launch
  • ASL Format
    Download one (or more) of the datasets from https://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets in the ASL dataset format Place.
    运行:
roslaunch msckf_mono asl_msckf.launch data_set_path:=<directory of mav0 inside of sequence> stand_still_end:=<time to start at with dot at the end>

这种格式的使用需要稍微配置一下,详情可以参考源码网址的​​readme​

注:参考​​msckf_mono构建运行方法​