These packages provide an implementation of the rigid body motion estimation of an RGB-D camera from consecutive images.
dvo_core
Core implementation of the motion estimation algorithm.
dvo_ros
Integration of dvo_core with ROS.
dvo_benchmark
Integration of dvo_core with TUM RGB-D benchmark, see http://vision.in.tum.de/data/datasets/rgbd-dataset.
sophus
ROS package wrapper for Hauke Strasdat's Sophus library, see https://github.com/strasdat/Sophus.
Checkout the branch for your ROS version into a folder in your ROS_PACKAGE_PATH
and build the packages with rosmake
.
ROS Fuerte:
git clone -b fuerte git://github.com/tum-vision/dvo.git
rosmake dvo_core dvo_ros dvo_benchmark
ROS Electric:
You need to install perception_pcl_unstable
with PCL version 1.5+.
git clone -b electric git://github.com/tum-vision/dvo.git
rosmake dvo_core dvo_ros dvo_benchmark
Estimating the camera trajectory from an RGB-D image stream:
roslaunch openni_launch openni.launch
rosrun dvo_ros camera_tracker
/camera/driver
enable depth_registration on/camera_tracker
enable reconstruction, use_weighting, run_dense_tracking, and use_dense_tracking_estimateIf everything works, the stdout of the camera_tracker node should show [ WARN] [1355131430.132265592]: RGB image size has changed, resetting tracker!
and the camera pose is published on the /rgbd/pose
topic. You can restart the camera motion estimation by disabling and enabling the run_dense_tracking option.
For visualization:
/world
/dvo_vis/update
/dvo_vis/cloud
The red camera shows the current camera position. The blue camera displays the initial camera position.
The following publications describe the approach:
The packages dvo_core, dvo_ros, and dvo_benchmark are licensed under the GNU General Public License Version 3 (GPLv3), see http://www.gnu.org/licenses/gpl.html.
The package sophus is licensed under the MIT License, see http://opensource.org/licenses/MIT.