including slides from federico tombari - point cloud library · why pcl . overview . ......

20
Including slides from Federico Tombari

Upload: trannguyet

Post on 30-Apr-2018

213 views

Category:

Documents


0 download

TRANSCRIPT

Including slides from Federico Tombari

PCL Intro

• Collection of Libraries focused on Point Cloud processing • BSD Licensed - free for commercial use

• Started in March 2010 at Willow Garage (US) by Radu Rusu • Currently:

More than 450 developers/contributors More than 1600 users (2000+ mailing list subscribers) 100 M hits on the website (500k unique) Over 60 Tutorials and many examples

PCL Community

Financial Support

Open Perception

• New non-profit foundation dedicated to supporting PCL

• Helps coordinate sponsors & donors with development community

• CEO: Radu Rusu • openperception.org

Recent & ongoing activities

• Extension of pcl::people module for detecting people in unconventional poses

• Human action recognition from skeleton information • Sample Consensus (SaC) fitting of superquadric shapes • RGB-D object segmentation in clutter • Object Discovery in Kinfu data • Face shift • Stereo module improvement • Etc.

http://www.pointclouds.org/blog/gsoc14/

Why PCL

Overview

Getting Started

• Binaries are available for stable releases on Ubuntu, Windows, Mac OSX

• PCL repository is hosted on GitHub: https://github.com/PointCloudLibrary/pcl • Trunk version has all recent features, and is generally

useable despite being under very active development • Tutorials are a great starting point • pcl/apps also has many good examples

Getting Help

• Main Web Site: http://www.pointclouds.org/ • Docs & Tutorials: http://www.pointclouds.org/documentation/ • Mailing List + Nabble: http://www.pcl-users.org/ • IRC: #pcl on irc.oftc.net

Getting Involved

• Use PCL in your research • Develop & maintain code • Participate in code sprints • Participate in the mailing list / IRC • Organize developer meetups • Help write tutorials, docs, web pages, etc

The class pcl::PointCloud is a container of elements of PointT class. To indicate which type of PointT you want to store in your cloud you have to use this syntax:

pcl::PointCloud<PointT>()

Basic strucures

PointXY { float x; float y; };

PointXYZ { float x; float y; float z; };

Normal { float normal_x; float normal_y; float normal_z; float curvature; };

PointXYZRGBNormal

PointXYZRGB { float x; float y; float z; int8 r; int8 g; int8 b; }; PointXYZINormal

PointNormal

PointXYZI { float x; float y; float z; float intensity; };

Some PointT types available

PFHSignature125

Point Feature Histogram

FPFHSignature33

Fast Point Feature Histogram

VFHSignature308

Viewpoint Feature Histogram

Narf36

Normally Aligned Radius Feature

PointT for 3D descriptors

MyPointType { double test; };

also from the existing ones:

MySecondPointType { float normal_x; float normal_y; float normal_z; float curvature; double test; };

You can define more types!

# .PCD v.7 - Point Cloud Data file format

VERSION .7

FIELDS x y z rgb

SIZE 4 4 4 4

TYPE F F F F

COUNT 1 1 1 1

WIDTH 213

HEIGHT 1

VIEWPOINT 0 0 0 1 0 0 0

POINTS 213

DATA ascii

0.93773 0.33763 0 4.2108e+06

0.90805 0.35641 0 4.2108e+06

0.81915 0.32 0 4.2108e+06

0.97192 0.278 0 4.2108e+06

0.944 0.29474 0 4.2108e+06

0.98111 0.24247 0 4.2108e+06

PCD file version

name of each dimension/field that a point can have

size of each dimension in bytes

type of each dimension as a char: I - signed types

U - unsigned types

F - floating types

elements for each dimension

width and height of the point cloud dataset

acquisition viewpoint for the dataset

data type: - ascii

- bynary

number of points in the cloud

PCD file format

pcl::PointCloud<pcl::PointXYZ> cloud;

Read a point cloud from a .pcd file

pcl::io::loadPCDFile<pcl::PointXYZ>("test.pcd",cloud);

Write a point cloud to a .pcd file

pcl::io::savePCDFileASCII ("test.pcd", cloud);

Concatenate two point clouds

cloud_a += cloud_b;

Simple commands

Tutorial Overview

Virtual Machine

• Ubuntu 14.04 • PCL trunk (1.7.2) • 4 tutorials

Registration Segmentation People detection Object recognition

Build the tutorials: cd <tutorial_name>

mkdir build

cd build

cmake -DPCL_DIR=<pcl_directory> ..

make

Run the tutorials: cd ../bin

./<executable_name> <arguments>