ichangjian / ORB_SLAM3_Mesh

ORB-SLAM3: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

功能介绍

  1. ORB_SLAM3 的基础上对RGBD数据的输入增加了生成Mesh的功能,并在在数据集 TUM rgbd-dataset 上做了测试。
  2. 在左右双目+IMU上增加了中值积分解算IMU位姿的功能,可以以IMU的帧率往外更新位姿,并在数据集TUM Visual-Inertial Dataset上作了测试。

代码改动

  1. 生成3D点云的代码参考了高翔的 ORBSLAM2_with_pointcloud_map,将点云变成Mesh的代码参考了PCL实现泊松表面重建
  2. 以IMU频率输出位姿的代码参考了IMU数据积分获得当前位姿

编译测试

在Ubuntu 20.04系统下编译,除了原本依赖的OpenCV、Eigen3、Pangolin以外,增加了对PCL的第三方库依赖,均采用 sudo apt install libXX 的形式安装,且只编译使用了 Examples/RGB-D/rgbd_tum 应用。 Image view_running.jpg 运行如下命令测试,会看到上图的运行界面,运行结束后会在当前目录下得到 CameraTrajectory.txt、KeyFrameTrajectory.txt、result_p3d.ply、result_mesh.ply

# 在TUM上测试MESH
./Examples/RGB-D/rgbd_tum ./Vocabulary/ORBvoc.txt ./Examples/RGB-D/TUM1.yaml path/rgbd_dataset_freiburg1_xyz ./Examples/RGB-D/associations/fr1_xyz.txt 

# 在D455上测试
./Examples/RGB-D/rgbd_realsense_D435i ./Vocabulary/ORBvoc.txt ./Examples/RGB-D/RealSense_D455i.yaml 

其中result_p3d.ply、result_mesh.ply可以通过MeshLab软件查看,如下图。 Image view_result.jpg

在TUM数据集room2上测试输出IMU频率POSE,绘制了SaveTrajectoryEuRoC输出的20HZ的POSE和以IMU输出的200HZ POSE的位置对比如下。Image imu_frequency_pose.png

# 在TUM上测试输出IMU频率POSE
./Examples/Stereo-Inertial/stereo_inertial_tum_vi Vocabulary/ORBvoc.txt Examples/Stereo-Inertial/TUM-VI.yaml path/dataset-room2_512_16/mav0/cam0/data path/dataset-room2_512_16/mav0/cam1/data Examples/Stereo-Inertial/TUM_TimeStamps/dataset-room2_512.txt path/dataset-room2_512_16/mav0/imu0/data.csv dataset-room2_512_stereoi 

# 在D455上测试
./Examples/Stereo-Inertial/stereo_inertial_realsense_D435i ./Vocabulary/ORBvoc.txt ./Examples/Stereo-Inertial/RealSense_D455i.yaml

如果要打印IMU的POSE可以在 Tracking::processIMU 函数中将注释取消或添加回调函数。

About

ORB-SLAM3: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM

License:GNU General Public License v3.0


Languages

Language:C++ 98.5%Language:Python 1.0%Language:CMake 0.4%Language:Shell 0.0%