This repository contains a DVO-SLAM fork (ROS Kinetic) with modifications for our BMVC 2017 paper "Efficient Online Surface Correction for Real-time Large-Scale 3D Reconstruction". In particular, this code also outputs the current keyframe graph to disk when the keyframe map changes.
- dvo_core Core implementation of the motion estimation algorithm.
- dvo_ros Integration of dvo_core with ROS.
- dvo_slam Pose graph SLAM system based on dvo_core and integration with ROS.
- dvo_benchmark Integration of dvo_slam with TUM RGB-D benchmark, see http://vision.in.tum.de/data/datasets/rgbd-dataset.
Setup ROS environment and create a ROS catkin workspace:
# source ROS environment
source /opt/ros/kinetic/setup.bash
# create ROS workspace folder
mkdir ros_catkin_ws
cd ros_catkin_ws
# create catkin workspace and source setup .sh file
catkin_make
source devel/setup.bash
Checkout and build the DVO-SLAM source code:
# clone repository
cd src/
git clone https://github.com/robmaier/dvo_slam_correctablefusion.git
# create TUM benchmark output directories
cd dvo_slam_correctablefusion/dvo_benchmark
mkdir dvo_slam_correctablefusion/dvo_benchmark/output/
mkdir dvo_slam_correctablefusion/dvo_benchmark/output/graph/
cd ..
# build package (and workspace) using catkin_make
catkin_make
Download one of the TUM RGB-D Benchmark sequences:
# go into data folder
cd src/dvo_slam_correctablefusion/data/
# download dataset
wget https://vision.in.tum.de/rgbd/dataset/freiburg3/rgbd_dataset_freiburg3_long_office_household.tgz
# extract data
tar -xvzf rgbd_dataset_freiburg3_long_office_household.tgz
mv rgbd_dataset_freiburg3_long_office_household fr3_office
# associate color and depth images using their timestamps
python associate.py fr3_office/rgb.txt fr3_office/depth.txt > fr3_office/assoc.txt
# go back to parent folder
cd ../../../
Run roscore
(in a new different terminal):
source /opt/ros/kinetic/setup.bash
roscore
Estimate camera trajectory for the downloaded RGB-D dataset:
roslaunch dvo_benchmark benchmark.launch dataset:=$PWD/src/dvo_slam_correctablefusion/data/fr3_office
We calculate the camera tracking accuracy and plot the differences between the groundtruth trajectory and the estimated trajectory as follows:
cd src/dvo_slam_correctablefusion/data/fr3_office
python ../evaluate_ate.py groundtruth.txt ../../dvo_benchmark/output/trajectory.txt --plot plot.png --verbose
You can also use RVIZ for real-time visualization:
source /opt/ros/kinetic/setup.bash
# start RVIZ
rosrun rviz rviz
In the GUI,
- Start RVIZ
- Set the Fixed Frame (Global Options) to
/world
- Add an Interactive Marker display and set its Update Topic to
/dvo_vis/update
- Optional: add a PointCloud2 display and set its Topic to
/dvo_vis/cloud
The following publications describe the approach:
- Dense Visual SLAM for RGB-D Cameras (C. Kerl, J. Sturm, D. Cremers), In Proc. of the Int. Conf. on Intelligent Robot Systems (IROS), 2013.
- Robust Odometry Estimation for RGB-D Cameras (C. Kerl, J. Sturm, D. Cremers), In Proc. of the IEEE Int. Conf. on Robotics and Automation (ICRA), 2013
- Real-Time Visual Odometry from Dense RGB-D Images (F. Steinbruecker, J. Sturm, D. Cremers), In Workshop on Live Dense Reconstruction with Moving Cameras at the Intl. Conf. on Computer Vision (ICCV), 2011.
The packages dvo_core, dvo_ros, dvo_slam, and dvo_benchmark are licensed under the GNU General Public License Version 3 (GPLv3), see http://www.gnu.org/licenses/gpl.html.