# segmenters_lib
**Repository Path**: ryontang/segmenters_lib
## Basic Information
- **Project Name**: segmenters_lib
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2020-02-12
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# segmenters_lib
[](https://circleci.com/gh/LidarPerception/segmenters_lib/tree/master)
The LiDAR segmenters library, for segmentation-based detection.
## How to use
1. We name your ros workspace as `CATKIN_WS` and `git clone` as a ROS package, with [common_lib](https://github.com/LidarPerception/common_lib) and [object_builders_lib](https://github.com/LidarPerception/object_builders_lib) as dependencies.
```bash
$ cd $(CATKIN_WS)
# we recommand you to organize your workspace as following
$ mkdir -p src/common
$ mkdir -p src/perception/libs
# git clone basic libraries, like common_lib
$ cd $(CATKIN_WS)/src/common
$ git clone https://github.com/LidarPerception/common_lib.git libs
# git clone perception libraries, segmenters_lib and its dependencies
$ cd $(CATKIN_WS)/src/perception/libs
$ git clone https://github.com/LidarPerception/roi_filters_lib.git roi_filters
$ git clone https://github.com/LidarPerception/object_builders_lib.git object_builders
$ git clone https://github.com/LidarPerception/segmenters_lib.git segmenters
# build your ros workspace for our segmentation-based detection demo
# uncomment add_subdirectory() in src/perception/libs/segmenters/CMakeLists.txt, git diff as following:
-#add_subdirectory(example)
+add_subdirectory(example)
$ cd $(CATKIN_WS)
$ catkin build -DCMAKE_BUILD_TYPE=Release
```
2. Run demo under [KiTTI raw dataset](http://www.cvlibs.net/datasets/kitti/raw_data.php) using [kitti_ros](https://github.com/LidarPerception/kitti_ros.git)'s replayer.
```bash
$ cd $(CATKIN_WS)/src
$ git clone https://github.com/LidarPerception/kitti_ros.git
# build your ros workspace for our segmentation-based detection demo
$ cd ..
$ catkin build -DCMAKE_BUILD_TYPE=Release
```
+ **Terminal 1**: KiTTI raw dataset replay, [more tutorials](https://github.com/LidarPerception/kitti_ros#how-to-use).
```bash
$ cd $(CATKIN_WS)
$ source devel/setup.bash
# change Mode for Keyboard Listening Device
$ sudo chmod 777 /dev/input/event3
# launch kitti_ros's kitti_player for frame-by-frame algorithm testing
$ roslaunch kitti_ros kitti_player.launch
```
+ **Terminal 2**: launch **Seg-based Detector** demo.
```bash
$ cd $(CATKIN_WS)
$ source devel/setup.bash
$ roslaunch segmenters_lib demo.launch
```
3. Follow the [demo example](./example) to use our LiDAR segmenters library.
+ Cascadingly use **roi_filter**, **ground_remover** and **non_ground_segmenter** for Point Cloud perception, like our **Seg-based Detector**: [detection_node](./example/detection_node.cpp).
+ Refer to our [CMakeLists.txt](./example/CMakeLists.txt) for building your own ros package using this library.
## [Parameters](./launch/demo.launch)
+ Demo parameters, defined in [detection.yaml](./config/kitti/detection.yaml)
+ Subscribe Point Cloud in topic `sub_pc_topic`, default is **/kitti/points_raw** _(sensor_msgs/PointCloud2)_.
+ Publish **Ground Point Cloud** in topic `pub_pc_ground_topic`, default is **/segmenter/points_ground** _(sensor_msgs/PointCloud2)_.
+ Publish **Non-Ground Point Cloud** in topic `pub_pc_nonground_topic`, default is **/segmenter/points_nonground** _(sensor_msgs/PointCloud2)_.
+ Publish **Candidate Objects Cloud**, different objects with different intensity, in topic `pub_pc_clusters_topic`, default is **/segmenter/points_clustered** _(sensor_msgs/PointCloud2)_.
+ Segmenters algorithm parameters, defined in [segmenter.yaml](./config/kitti/segmenter.yaml).
+ Get these paramters using `common::getSegmenterParams(const ros::NodeHandle& nh, const std::string& ns_prefix)` in [common_lib](https://github.com/LidarPerception/common_lib/blob/master/include/common/parameter.hpp).
+ Adjust some paramters to your hardware installation.
## TODO lists
### Ground Segmenters
- [x] PCL RANSAC, [ICCV2011 PCL-Segmentation](./doc/ICCV2011%20PCL-Segmentation.pdf)
> Refer: [PCL: Plane model segmentation](http://pointclouds.org/documentation/tutorials/planar_segmentation.php#planar-segmentation)
- [x] GPF (Ground Plane Fitting), ICRA 2017
```bibtex
@inproceedings{zermas2017fast,
title={Fast segmentation of 3d point clouds: A paradigm on lidar data for autonomous vehicle applications},
author={Zermas, Dimitris and Izzat, Izzat and Papanikolopoulos, Nikolaos},
booktitle={Robotics and Automation (ICRA), 2017 IEEE International Conference on},
pages={5067--5073},
year={2017},
organization={IEEE}
}
```
- [ ] [linefit_ground_segmentation](https://github.com/lorenwel/linefit_ground_segmentation), IV 2010
```bibtex
@inproceedings{himmelsbach2010fast,
title={Fast segmentation of 3d point clouds for ground vehicles},
author={Himmelsbach, Michael and Hundelshausen, Felix V and Wuensche, H-J},
booktitle={Intelligent Vehicles Symposium (IV), 2010 IEEE},
pages={560--565},
year={2010},
organization={IEEE}
}
```
- [ ] [depth_clustering](https://github.com/PRBonn/depth_clustering), IROS 2016
```bintex
@inproceedings{bogoslavskyi2016fast,
title={Fast range image-based segmentation of sparse 3D laser scans for online operation},
author={Bogoslavskyi, Igor and Stachniss, Cyrill},
booktitle={Intelligent Robots and Systems (IROS), 2016 IEEE/RSJ International Conference on},
pages={163--169},
year={2016},
organization={IEEE}
}
```
- [ ] Scan Line Run, ICRA 2017, like Standford's Junior self-driving car.
```bibtex
@inproceedings{zermas2017fast,
title={Fast segmentation of 3d point clouds: A paradigm on lidar data for autonomous vehicle applications},
author={Zermas, Dimitris and Izzat, Izzat and Papanikolopoulos, Nikolaos},
booktitle={Robotics and Automation (ICRA), 2017 IEEE International Conference on},
pages={5067--5073},
year={2017},
organization={IEEE}
}
@incollection{montemerlo2009junior,
title={Junior: The stanford entry in the urban challenge},
author={Montemerlo, Michael and Becker, Jan and Bhat, Suhrid and Dahlkamp, Hendrik and Dolgov, Dmitri and Ettinger, Scott and Haehnel, Dirk and Hilden, Tim and Hoffmann, Gabe and Huhnke, Burkhard and others},
booktitle={The DARPA Urban Challenge},
pages={91--123},
year={2009},
publisher={Springer}
}
```
- [ ] Deep-learning: FCN, IV 2017
```bibtex
@inproceedings{caltagirone2017fast,
title={Fast LIDAR-based road detection using fully convolutional neural networks},
author={Caltagirone, Luca and Scheidegger, Samuel and Svensson, Lennart and Wahde, Mattias},
booktitle={Intelligent Vehicles Symposium (IV), 2017 IEEE},
pages={1019--1024},
year={2017},
organization={IEEE}
}
```
### Non-ground Segmenters
- [x] PCL Euclidean Cluster Extraction, [ICCV2011 PCL-Segmentation](./doc/ICCV2011%20PCL-Segmentation.pdf)
> Refer: [PCL: Euclidean Cluster Extraction](http://pointclouds.org/documentation/tutorials/cluster_extraction.php#cluster-extraction)
- [x] Region-based Euclidean Cluster Extraction
```bibtex
@inproceedings{yan2017online,
title={Online learning for human classification in 3d lidar-based tracking},
author={Yan, Zhi and Duckett, Tom and Bellotto, Nicola},
booktitle={Intelligent Robots and Systems (IROS), 2017 IEEE/RSJ International Conference on},
pages={864--871},
year={2017},
organization={IEEE}
}
```
- [ ] Model-based Segmentation, ITSC 2017
```latex
@article{shin2017real,
title={Real-time and accurate segmentation of 3-D point clouds based on Gaussian process regression},
author={Shin, Myung-Ok and Oh, Gyu-Min and Kim, Seong-Woo and Seo, Seung-Woo},
journal={IEEE Transactions on Intelligent Transportation Systems},
volume={18},
number={12},
pages={3363--3377},
year={2017},
publisher={IEEE}
}
```
- [ ] Probabilistic Framework, RSS 2016
```bibtex
@inproceedings{held2016probabilistic,
title={A Probabilistic Framework for Real-time 3D Segmentation using Spatial, Temporal, and Semantic Cues.},
author={Held, David and Guillory, Devin and Rebsamen, Brice and Thrun, Sebastian and Savarese, Silvio},
booktitle={Robotics: Science and Systems},
year={2016}
}
```
- [x] **Tracking-help Segmentation**. IV, 2012. Not yet in this repository.
```bibtex
@inproceedings{himmelsbach2012tracking,
title={Tracking and classification of arbitrary objects with bottom-up/top-down detection},
author={Himmelsbach, Michael and Wuensche, H-J},
booktitle={Intelligent Vehicles Symposium (IV), 2012 IEEE},
pages={577--582},
year={2012},
organization={IEEE}
}
```