Skip to content

Fast and robust clustering of point clouds generated with a Velodyne sensor.

License

Notifications You must be signed in to change notification settings

zzzdeb/depth_clustering

 
 

Repository files navigation

Depth Clustering

Build Status Codacy Badge Coverage Status

This is a fast and robust algorithm to segment point clouds taken with Velodyne sensor into objects. It works with all available Velodyne sensors, i.e. 16, 32 and 64 beam ones. With user provided Configuration it is even possible to work with any typical Laserscanner. But the one, who uses general configuration, must ensure that fundemantal algorithm makes sense to be implemented. Due to the enviroment, a robot is operating in, appropriate configuration must be tuned (f.E. depth_ground_removal or tunnel_ground_removal)

Check out a video that shows all objects which have a bounding box of less than 10 squared meters: Segmentation illustration

How to build?

Prerequisites

  • Catkin.
  • OpenCV: sudo apt-get install libopencv-dev
  • PCL
  • ROS

Build script

This is a catkin package. So we assume that the code is in a catkin workspace and CMake knows about the existence of Catkin. Then you can build it from the project folder:

  • mkdir build
  • cd build
  • cmake ..
  • make -j4
  • (optional) ctest -VV

It can also be built with catkin_tools if the code is inside catkin workspace:

  • catkin build depth_clustering

P.S. in case you don't use catkin build you should. Install it by sudo pip install catkin_tools.

How to run?

'roslaunch depth_clustering ....' create your own launch file in ./launch/ (read depth_clusterer.launch) create your own configuration files in ./config/clusterer and ./config/projection (read defaults)

Run on real world data

Go to folder with binaries:

cd <path_to_project>/build/devel/lib/depth_clustering

Frank Moosmann's "Velodyne SLAM" Dataset

Get the data:

mkdir data/; wget http://www.mrt.kit.edu/z/publ/download/velodyneslam/data/scenario1.zip -O data/moosmann.zip; unzip data/moosmann.zip -d data/; rm data/moosmann.zip

Default configuration is for Moosmann's Dataset: edit parameter from_path in default.yaml to the path:

roslaunch depth_clustering depth_clusterer.launch

Documentation

You should be able to get Doxygen documentation by running:

cd doc/
doxygen Doxyfile.conf

Related publications

Please cite related papers if you use this code:

@InProceedings{bogoslavskyi16iros,
title     = {Fast Range Image-Based Segmentation of Sparse 3D Laser Scans for Online Operation},
author    = {I. Bogoslavskyi and C. Stachniss},
booktitle = {Proc. of The International Conference on Intelligent Robots and Systems (IROS)},
year      = {2016},
url       = {http://www.ipb.uni-bonn.de/pdfs/bogoslavskyi16iros.pdf}
}
@Article{bogoslavskyi17pfg,
title   = {Efficient Online Segmentation for Sparse 3D Laser Scans},
author  = {I. Bogoslavskyi and C. Stachniss},
journal = {PFG -- Journal of Photogrammetry, Remote Sensing and Geoinformation Science},
year    = {2017},
pages   = {1--12},
url     = {https://link.springer.com/article/10.1007%2Fs41064-016-0003-y},
}

About

Fast and robust clustering of point clouds generated with a Velodyne sensor.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 94.4%
  • CMake 5.6%