Accompanying code for the paper Plane Segmentation Using Depth-Dependent Flood Fill (pdf) by Arindam Roychoudhury, Marcell Missura and Maren Bennewitz accepted at IROS, 2021.
The source files containing the algorithm are DDPFF.h and DDPFF.cpp.
- Create a build folder (in source or out of source). Here we assume we create a build folder within the source directory:
$mkdir build
- Navigate to the build folder:
$cd build
- Execute cmake:
$cmake ..
- Execute the application:
$./app/App
A window appears when the application is executed.
Function | Navigation | Shortcut |
---|---|---|
Load point cloud frames | File → Load state | Ctrl+L |
Navigate between frames | |< , < , > , >| buttons |
Right and left arrow keys |
Configuration | View → Config | C |
Toggle point cloud | View → Point Cloud | P |
Activate DDPFF algorithm | View → Depth dependent planar segments | Ctrl+D |
Activate algorithm | View → Show Visualization | V |
Activate merged planar segments | View → Show merged segments | Shift +U |
Activate unmerged planar segments | View → Show unmerged segments | U |
Show normals | View → Show plane normals | N |
Activate camera view | View → Camera view | G |
Activate ground truth planes | View → Show ground truth planes | Ctrl+G |
Load Artificial Scenes | File → Load Scene | Ctrl+Shift+L |
Choose scene | Scenes → Choose one of 6 scenes |
The camera position in the artificial scenes can be modified by updating the scene parameters in the config widget. They can also be adjusted using the arrow keys and the Ctrl and Shift modifiers. Please select Scenes → Adjust Scene first to enable scene parameter updates using the arrow keys.
Parameter symbol in paper | Parameter name in application config |
---|---|
κpoint | c_point |
γpoint | pointThreshold_min |
εpoint | pointThreshold_max |
κflood | c_plane |
γflood | planeThreshold_flood |
εflood | planeThreshold_flood_max |
κmerge | c_plane_merge |
γmerge | planeThreshold_merge |
εmerge | planeThreshold_merge_max |
κangle | c_angle |
γangle | angleThresholdFloodFill |
εangle | angleThresholdFloodFill_max |
κρ | c_range |
γρ | normalSampleDistance_min |
ερ | normalSampleDistance_max |
The values of the parameters can be found in the paper.
- C++ 17
- Cmake 3.8 or greater
- Qt 5.15
- Eigen 3.3
- OpenGL
- QGLViewer
- OpenCV 4
- PCL 1.10
It is easiest to set up the development environment using docker. An image with the complete list of required softwares is available at dockerhub.
First, update the location of the source directory in the file docker/args.sh
. Change the variable SOURCELOC
to point to the source local directory of the repository.
Now, to create the development environment simply navigate to the directory "docker" and execute $./init_qtcreator_integrated.sh
. This sets up a container with all the requisite softwares as well as launches the qtcreator IDE. This container shares the source directory and the data
directory with the host system. Import the project into the IDE, build and execute it. To launch qtcreator subsequently use ./start_qtcreator_integrated
.
The application supports the following datasets:
Dataset | URL | Instructions |
---|---|---|
Kinect dataset[1] | http://www.ais.uni-bonn.de/download/segmentation/kinect.zip | Rename the archive to kinect.pcd.gt.zip and load. |
SEGCOMP ABW dataset[2] | ftp://figment.csee.usf.edu/pub/segmentation-comparison/ABW-TEST-IMAGES.tar | Navigate to globals/include/globals/constants.h and change IMAGE_WIDTH and IMAGE_HEIGHT to 512. Recompile. Rename the archive to ABW-TEST-IMAGES.abw.tar and load. |
TUM RGB-D Slam dataset[3] | https://vision.in.tum.de/data/datasets/rgbd-dataset/download | Each sequence which is a *.tgz file can be loaded individually. |
Point clouds collected using Asus Xtion Pro Live | https://drive.google.com/file/d/1qqIUQoXyZsv3jmwHhzcJK8Msy8loSWrN/view?usp=sharing | Uncompress and load individual files. |
Please use conf/configABW.conf
when using the SEGCOMP ABW dataset. For the other datasets either conf/config5.conf
(for higher accuracy) or conf/config10.conf
(for higher performance) would work. Please rename each configuration files to conf/config.conf
before using them.
[1]: Bastian Oehler, Joerg Stueckler, Jochen Welle, Dirk Schulz, and Sven Behnke. "Efficient Multi-Resolution Plane Segmentation of 3D Point Clouds" Proceedings of the 4th International Conference on Intelligent Robotics and Applications (ICIRA), Aachen, December 2011
[2]: A. Hoover, G. Jean-Baptiste, X. Jiang, P. J. Flynn, H. Bunke, D. B. Goldgof, K. Bowyer, D. W. Eggert, A. Fitzgibbon, and R. B. Fisher, "An experimental comparison of range image segmentation algorithms," IEEE transactions on pattern analysis and machine intelligence, vol. 18, no. 7, pp. 673–689, 1996.
[3]: J. Sturm, N. Engelhard, F. Endres, W. Burgard and D. Cremers, A Benchmark for the Evaluation of RGB-D SLAM Systems, Proc. of the International Conference on Intelligent Robot Systems (IROS), Oct. 2012.