/segmenters_lib

The LiDAR segmenters library, for segmentation-based detection.

Primary LanguageC++

segmenters_lib

CircleCI

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 and object_builders_lib as dependencies.
    $ 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 using kitti_ros's replayer.
    $ 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.
      $ 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.
      $ cd $(CATKIN_WS)
      $ source devel/setup.bash
      $ roslaunch segmenters_lib demo.launch
  3. Follow the demo 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.
    • Refer to our CMakeLists.txt for building your own ros package using this library.

Parameters

  • Demo parameters, defined in 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.
    • Get these paramters using common::getSegmenterParams(const ros::NodeHandle& nh, const std::string& ns_prefix) in common_lib.
    • Adjust some paramters to your hardware installation.

TODO lists

Ground Segmenters

  • PCL RANSAC, ICCV2011 PCL-Segmentation

    Refer: PCL: Plane model segmentation

  • GPF (Ground Plane Fitting), ICRA 2017
    @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, IV 2010
    @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, IROS 2016
    @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.
    @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
    @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

  • PCL Euclidean Cluster Extraction, ICCV2011 PCL-Segmentation

    Refer: PCL: Euclidean Cluster Extraction

  • Region-based Euclidean Cluster Extraction
    @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
    @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
    @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}
    }

  • Tracking-help Segmentation. IV, 2012. Implemented in our tracking_lib.
    @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}
    }