SLAM 各算法运行方法与过程

本文发布于 2020-01-15,距今已超 365 天,内容可能已过时,请注意甄别。

本文介绍本人在实践过程中遇到的各个间接法的运行和配置过程。

主要包括以下五种算法:

  1. VINS_mono/fusion
  2. OKVIS
  3. ROVIO
  4. VI_ORB-SLAM
  5. MSCKF

本文介绍 VINS_mono/fusion、OKVIS、ROVIO、VI_ORB-SLAM 与 MSCKF 五种间接法 SLAM 算法的运行与配置过程,涵盖编译注意事项、启动命令、roslaunch 用法及输出轨迹等代码修改要点。

跑通五种算法,间接法体系尽收眼底

VINS_mono


OKVIS

Run OKVIS

可能需要加入std::ftream
Opencv需要3.4.2或以下版本,需要opencvv模块
Opencv3.4.7没有这个模块


ROVIO

可参考:该博客

1
catkin build rovio --cmake-args -DCMAKE_BUILD_TYPE=Release -DMAKE_SCENE=ON

运行ROVIO

1
2
$ source devel/setup.bash 
$ roslaunch rovio rovio_node.launch

修改代码以输出路径

在发送IMU数据下边添加输出到文件的代码

1
2
3
4
5
6
7
8
9
10
11
//把数据写到文档里
std::ofstream vio_result_file("/home/guoben/Documents/output/vio_result.csv", ios::app);
vio_result_file << ros::Time(mpFilter_->safe_.t_) << " "
<< imuOutput_.WrWB()(0) << " "
<< imuOutput_.WrWB()(1) << " "
<< imuOutput_.WrWB()(2) << " "
<< imuOutput_.qBW().x() << " "
<< imuOutput_.qBW().y()<< " "
<< imuOutput_.qBW().z() << " "
<< -imuOutput_.qBW().w() << std::endl;
vio_result_file.close();

VI-ORB_SLAM

LearnVIORB 的代码地址
代码运行方法
轨迹生成
输出位置位于 System.cc


MSCKF

运行方法

1
2
3
roslaunch msckf_vio msckf_vio_euroc.launch 
rosrun rviz rviz -d ~/Project/msckf_vio_workspace/src/msckf_vio/rviz/rviz_euroc_config.rviz //rviz显示模型
rosbag play /home/wj/Downloads/dataset/EuRoC/ROS_bag/MH_05_difficult.bag

NOTE
The software does not run on EuRoC MH_01_easy.bag and MH_02_easy.bag. As explained in the README, the algorithm requires the sensor to start from staic in order to initialize the orientation and IMU bias. unfortunately, MH_01_easy.bag and MH_02_easy.bag do not have the initial static period.

打赏
  • 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!
  • © 2019-2026 guoben

微信