在此记录一下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构建运行方法