搭建 ROS VINS 测试环境.

2740阅读 0评论2020-04-22 iibull
分类:其他平台



  单目视觉惯导 SLAM 方案基于优化和滑动窗口的 VIO ,使用 IMU 预积分构建紧耦合框架,同时还有自动初始化,在线外参标定,重定位,闭环检测,以及全局位姿图优化功能。

VINS-Fusion is an extension of , which supports multiple visual-inertial sensor types (mono camera + IMU, stereo cameras + IMU, even stereo cameras only).
VINS-Fusion基于 vins-mono, 但能支持除了单目+imu, 还能支持双目+imu, 以及之后双目.

效果还是可以的, 在室内室外,
视频中通过 室外汽车car (30km/h)  室内机器人(麦克纳姆轮, 双目 + IMU), 无人机, AR中测试效果

支持ROS, Ubuntu 64-bit 16.04 or 18.04. ROS Kinetic or Melodic

1. 需要ceres 支持.  
点击(此处)折叠或打开
  1. git clone https://ceres-solver.googlesource.com/ceres-solver
  2. # ceres 依赖 Eigen 3.2.2 以及更高.
  3. # glog 0.3.1更高.
  4. # 参见 http://ceres-solver.org/installation.html

  5. 我直接用的是ubuntu-1604自带版本
  6. ii libceres-dev 1.12.0+dfsg0-1~ubuntu16.04.1 amd64 nonlinear least squares minimizer (development files)
  7. ii libceres1 1.12.0+dfsg0-1~ubuntu16.04.1 amd64 nonlinear least squares minimizer (shared library)

2.  安装
点击(此处)折叠或打开
  1. git clone https://github.com/HKUST-Aerial-Robotics/VINS-Fusion.git
3.  在自己的设备测试.
VIO is not only a software algorithm, it heavily relies on hardware quality. For beginners, we recommend you to run VIO with professional equipment, which contains global shutter cameras and hardware synchronization.VIO不仅是一个软件算法,它还严重依赖于硬件质量。对于初学者,我们建议您使用专业的设备运行VIO,其中包含全局快门相机和硬件同步。


3.1  为你的设备写个配置文件.  
    例如: catkin_ws/src/VINS-Fusion/config/vi_car/vi_car.yaml
3.2 校准设备.
    VINS-Fusion support several camera models (pinhole, mei, equidistant). You can use  to calibrate your cameras.  目前支持一些针孔,等距相机, 目前提供了一些 校准的脚本例子, 来校准摄像头.

点击(此处)折叠或打开

  1. cd ~/catkin_ws/src/VINS-Fusion/camera_models/camera_calib_example/
  2. rosrun camera_models Calibrations -w 12 -h 8 -s 80 -i calibrationdata --camera-model pinhole #例如校准针孔相机.

3.3 执行

点击(此处)折叠或打开

  1. 双目 + IMU
  2.     roslaunch vins vins_rviz.launch
  3.     rosrun vins vins_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_stereo_imu_config.yaml
  4.     (可选) rosrun loop_fusion loop_fusion_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_stereo_imu_config.yaml
  5.     # rosbag play YOUR_DATASET_FOLDER/MH_01_easy.bag 如果你有自己的录像

点击(此处)折叠或打开

  1. 或者直接双目
  2.     roslaunch vins vins_rviz.launch
  3.     rosrun vins vins_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_stereo_config.yaml
  4.     (optional) rosrun loop_fusion loop_fusion_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_stereo_config.yaml
  5.     ### rosbag play YOUR_DATASET_FOLDER/MH_01_easy.bag

点击(此处)折叠或打开

  1. 单目 + IMU
  2.     roslaunch vins vins_rviz.launch
  3.     rosrun vins vins_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml
  4.     (optional) rosrun loop_fusion loop_fusion_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml
  5.     rosbag play YOUR_DATASET_FOLDER/MH_01_easy.bag

此部分可以在docker中使用.  不过我机器多, 不怕装环境麻烦, 都是出错时, 倒是可直接使用 VINS-Fusion/docker 环境.

点击(此处)折叠或打开

  1. To further facilitate the building process, we add docker in our code. Docker environment is like a sandbox, thus makes our code environment-independent. To run with docker, first make sure ros and docker are installed on your machine. Then add your account to docker group by sudo usermod -aG docker $YOUR_USER_NAME. Relaunch the terminal or logout and re-login if you get Permission denied error, type:

  2. cd ~/catkin_ws/src/VINS-Fusion/docker
  3. make build

  4. Note that the docker building process may take a while depends on your network and machine. After VINS-Fusion successfully built, you can run vins estimator with script run.sh. Script run.sh can take several flags and arguments. Flag -k means KITTI, -l represents loop fusion, and -g stands for global fusion. You can get the usage details by ./run.sh -h. Here are some examples with this script:

  5. # Euroc Monocualr camera + IMU
  6. ./run.sh ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml

  7. # Euroc Stereo cameras + IMU with loop fusion
  8. ./run.sh -l ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml

  9. # KITTI Odometry (Stereo)
  10. ./run.sh -k ~/catkin_ws/src/VINS-Fusion/config/kitti_odom/kitti_config00-02.yaml YOUR_DATASET_FOLDER/sequences/00/

  11. # KITTI Odometry (Stereo) with loop fusion
  12. ./run.sh -kl ~/catkin_ws/src/VINS-Fusion/config/kitti_odom/kitti_config00-02.yaml YOUR_DATASET_FOLDER/sequences/00/

  13. # KITTI GPS Fusion (Stereo + GPS)
  14. ./run.sh -kg ~/catkin_ws/src/VINS-Fusion/config/kitti_raw/kitti_10_03_config.yaml YOUR_DATASET_FOLDER/2011_10_03_drive_0027_sync/








上一篇:为什么激光雷达可以在室外用, 而TOF 结构光 camera不能用在室外?
下一篇:vins-mono保存、重载地图、evo工具测试