Skip to content

Instantly share code, notes, and snippets.

@anindex
Last active July 27, 2017 15:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anindex/ffbe070df65073191c6b94adc98f2503 to your computer and use it in GitHub Desktop.
Save anindex/ffbe070df65073191c6b94adc98f2503 to your computer and use it in GitHub Desktop.

Instructions

Status

The current state of this repository on branch master is compilable. It was managed to not use any other library dependencies than the main repo. The branch is now able to robustly detect rotational symmetries and segment round object in cluttered scene.

Features

  1. Parallel extracting segments from a cloud with different parameters to generate a resource for symmetry detection:
  • Graph structures and graph algorithms
  • Implementing merging similar segment mechanism
  1. Robustly detecting rotational symmetries over a scene
  • Implementing PCA solver
  • Implementing Levenberg-Marquardt algorithm (damped least square fitting)
  • Implementing Rotational Symmetry scoring system
  • Implementing filtering and merging similar symmetries mechanism
  1. Robustly segment round objects from rotational symmetries in cluttered scene
  • Implementing weighted graph and graph constructor for foreground segmentation
  • Implementing boykov min cut based on boost library

Underlying theories

This method to segment objects in cluttered scene scenarios is the combination of my method and the author method. I will explain in detail at the end of GSoC period.

Setting up

Download the cluttered scene dataset (www.umiacs.umd.edu/%7Eaecins/projects/symseg/dataset/CTD.tar.gz) from the author and extract it. Create your dataset directory and copy whatever cloud you want from author and name it like cloud1.pcd, cloud2.pcd, etc. I recommend you use scene_86, scene_82 for best result. This branch still uses old LoadPointCloud AE, so you could specify your dataset path in robosherlock/descriptors/annotators/io/LoadPointCloud.xml like:

   <nameValuePair>
     <name>folder</name>
       <value>
          <string>/home/<your-username>/dataset/</string>
       </value>
   </nameValuePair>
   <nameValuePair>
      <name>filenames</name>
        <value>
           <array>
             <string>cloud.pcd</string>
             <string>cloud1.pcd</string>
             <string>cloud2.pcd</string>
           </array>
        </value>
   </nameValuePair>

Compiling

cd ~\<your_workspace>
catkin_make

Demo

roscore&
rosrun robosherlock run cluttered_scene

Usage

On RotationalSymmetrySegmenation AE point cloud viewer screen, use key 'a' and 'd' to view segments consecutively.

Please note that there is sometime the engine does not detect any rotational symmetries, because these rotational symmetries are not qualify for subsequent segmentation and then they are filtered out, basing on tuned parameters that can be changed for better results. Bilateral symmetry segmentation (not yet completed) will do the rest of segmentation. The pipeline processing time is below 8 second per frame, it is not a fast segmentation due to many phases of processing, under CPU i7 2.8GHz, RAM 16GB.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment