TSDF++ is a novel multi-object TSDF formulation that can encode multiple object surfaces at each voxel. In a multiple dynamic object tracking and reconstruction scenario, a TSDF++ map representation allows maintaining accurate reconstruction of surfaces even while they become temporarily occluded by other objects moving in their proximity. At the same time, the representation allows maintaining a single volume for the entire scene and all the objects therein, thus solving the fundamental challenge of scalability with respect to the number of objects in the scene and removing the need for an explicit occlusion handling strategy.
When using TSDF++ in your research, please cite the following publication:
Margarita Grinvald, Federico Tombari, Roland Siegwart, and Juan Nieto, TSDF++: A Multi-Object Formulation for Dynamic Object Tracking and Reconstruction, in 2021 IEEE International Conference on Robotics and Automation (ICRA), 2021. [Paper] [Video]
@INPROCEEDINGS{grinvald2021tsdf,
author={Grinvald, Margarita and Tombari, Federico and Siegwart, Roland and Nieto, Juan},
booktitle={2021 IEEE International Conference on Robotics and Automation (ICRA)},
title={{TSDF++: A Multi-Object Formulation for Dynamic Object Tracking and Reconstruction}},
year={2021},
volume={},
number={},
pages={14192-14198},
doi={10.1109/ICRA48506.2021.9560923}}The installation has been tested on Ubuntu 16.04 and Ubutnu 20.04.
- ROS
- C++14 for PCL 1.10
Install ROS following the instructions at the ROS installation page. The full install (ros-kinetic-desktop-full, ros-melodic-desktop-full) are recommended.
Make sure to source your ROS setup.bash script by following the instructions on the ROS installation page.
In your terminal, define the installed ROS version and name of the catkin workspace to use:
export ROS_VERSION=kinetic # (Ubuntu 16.04: kinetic, Ubuntu 18.04: melodic)
export CATKIN_WS=~/catkin_wsIf you don't have a catkin workspace yet, create a new one:
mkdir -p $CATKIN_WS/src && cd $CATKIN_WS
catkin init
catkin config --extend /opt/ros/$ROS_VERSION --merge-devel
catkin config --cmake-args -DCMAKE_CXX_STANDARD=14 -DCMAKE_BUILD_TYPE=Release
wstool init srcClone the tsdf-plusplus repository over HTTPS (no Github account required) and automatically fetch dependencies:
cd $CATKIN_WS/src
git clone https://github.com/ethz-asl/tsdf-plusplus.git
wstool merge -t . tsdf-plusplus/tsdf_plusplus_https.rosinstall
wstool updateAlternatively, clone over SSH (Github account required):
cd $CATKIN_WS/src
git clone git@github.com:ethz-asl/tsdf-plusplus.git
wstool merge -t . tsdf-plusplus/tsdf_plusplus_ssh.rosinstall
wstool updateBuild and source the TSDF++ packages:
catkin build tsdf_plusplus_ros rgbd_segmentation mask_rcnn_ros cloud_segmentation
source ../devel/setup.bash # (bash shell: ../devel/setup.bash, zsh shell: ../devel/setup.zsh)By default catkin build on a computer with N CPU cores will run N make jobs simultaneously. If compilation seems to hang forever, it might be running low on RAM. Try limiting the number of maximum parallel build jobs through the -jN flag to a value way lower than your CPU count, i.e.
catkin build tsdf_plusplus_ros rgbd_segmentation mask_rcnn_ros cloud_segmentation -j4If it still freezes at compilation time, you can go as far as limiting the maximum number of parallel build jobs and max load to 1 through the -lN flag:
catkin build tsdf_plusplus_ros rgbd_segmentation mask_rcnn_ros cloud_segmentation -j1 -l1The code is available under the MIT license.