Code Monkey home page Code Monkey logo

pointcloudregistrationtool's Introduction

Point Cloud Registration Tool

Automatically registers (aligns) and visualizes point clouds, or processes a whole bunch at once

Main Features:

  • Coarse-to-fine registration (correspondence-based followed by ICP refinement)
  • PLY/OBJ input support
  • GUI
  • Batch processing
  • Parallelized
  • Outputs to disk:
    • Registered cloud with residual colormap
    • Transformation matrix
    • F-score
    • Histogram of residuals (in GUI mode)

Demo:

Example Screenshot

Each point is colored proportional to its distance to the closest point on the target cloud.

Color range of the residual colormap: RED = 0cm, BLUE = maximum residual threshold (default: 10cm)

Up/down arrow keys adjust the: maximum residual threshold.

Install:

Ubuntu 14.04:

If you already have ROS installed:

sudo apt-get install libpcl-1.7-all-dev

Else:

sudo add-apt-repository ppa:v-launchpad-jochen-sprickerhof-de/pcl
sudo apt-get update
sudo apt-get install libpcl-all

Ubuntu 16.04:

sudo apt-get update 
sudo apt-get install libpcl-dev

MacOS:

brew install pcl

Build:

mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make

In MacOS, you may need to use a different compiler than the one shipped with Xcode to build with openMP,

to compile without openMP parallelization add: -DWITH_OPENMP=OFF

Example Usage:

The source cloud is the one we want to register to the target cloud

./point_cloud_registration_tool --verbose --gui source_cloud.ply target_cloud.ply

Some Flags:
  • --verbose, print information along the way
  • --gui, show the GUI
  • --batch_file, path to a text file containing paths to point cloud pairs
Batch File Format:
source_cloud_1.ply,target_cloud_1.ply
source_cloud_2.obj,target_cloud_2.obj
source_cloud_3.ply,target_cloud_3.obj

you can adjust many parameters of the registration routine, just ask --help

Tested on:

  • Ubuntu (PCL 1.7)
  • MacOS (PCL 1.8)
Minimum PCL 1.7 required

License

BSD 2-Clause License

pointcloudregistrationtool's People

Contributors

drethage avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

pointcloudregistrationtool's Issues

Hey

I am trying to use this tool and not sure how to get the best results. I am making point clouds with a diy structured light scanner and found it very time consuming manually aligning them. I have a ton of overlap in my scans. I have uploaded an example to ask for advice.

I could not figure out the batch process either

test.zip

Tool crashes after computing descriptors

I am trying to use the tool to automatically align two point clouds that have a lot of overlap. Unfortunately, I cannot release the point clouds for privacy reasons, but I can perform tests that may help to track down the source of the bug.

The command output looks like this:

Executing in parallel
Loaded point cloud with 240283 points:
Scan 3.ply
Loaded point cloud with 849421 points:
Scan 2.ply
Computed source cloud normals (240283)
Computed target cloud normals (849421)
Subsampled source cloud from 240283 -> 204804
Subsampled target cloud from 849421 -> 722911
Computed 204804 descriptors on source cloud keypoints
Segmentation fault (core dumped)

I ran the tool in GDB and got the following backtrace:

(gdb) bt
#0  __GI___libc_free (mem=0x9600d4) at malloc.c:3103
#1  0x00000000080698cb in boost::detail::sp_counted_impl_p<pcl::PointCloud<pcl::ReferenceFrame>>::dispose() ()
#2  0x000000000803c19a in boost::detail::sp_counted_base::release() ()
#3  0x000000000806cb67 in pcl::SHOTEstimationBase<pcl::PointXYZ, pcl::Normal, pcl::SHOT352, pcl::ReferenceFrame>::~SHOTEstimationBase() ()
#4  0x00000000080613d5 in Registrator::computeDescriptors() [clone ._omp_fn.4] ()
#5  0x00007ffff6c96c2e in ?? () from /usr/lib/x86_64-linux-gnu/libgomp.so.1
#6  0x00007ffffefd76db in start_thread (arg=0x7fffde150700) at pthread_create.c:463
#7  0x00007ffff678188f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
(gdb)

I am running this on Ubuntu LTS 18.04 on Windows 10. I am running VcXsrv in case the tool's --gui mode is trying to connect to an X server. The nature of the error makes me suspect that this is a logic error in the code, and not something specific to what platform it is running on.

What is my next step?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.