読者です 読者をやめる 読者になる 読者になる

MyEnigma

とあるエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

Point Cloud Library(PCL)の各プラットフォームへのインストール方法とサンプルコードを動かす方法

Xbox One Kinect センサー (DANCE CENTRAL SPOTLIGHT (ご利用コード) 同梱)

Xbox One Kinect センサー (DANCE CENTRAL SPOTLIGHT (ご利用コード) 同梱)

目次

はじめに

先日、

Point Cloud Libraryの基本的なモジュールの説明をしたので、

myenigma.hatenablog.com

今回は、各種OSのインストール方法と、

最も単純なPCLコードを

動かす方法について説明します。

 

PCLのインストール方法

それぞれのOSに応じて、

下記の方法でインストールします。

Mac (Homebrewを使う場合)

基本的には下記の記事と同じように、

必要なライブラリをHomebrewでインストールし、

PCLはソースからコンパイルしました。

 

$ brew install cmake

$ brew install boost

$ brew install eigen

$ brew install flann

$ brew install vtk5 –with-qt

$ git clone https://github.com/PointCloudLibrary/pcl

$ cd pcl

$ mkdir build

$ cd build

$ cmake ..

$ make

$ sudo make install

Ubuntu

ubuntuの場合は、

下記の公式ドキュメントのように、

apt-getで非常に簡単にインストールできます。

$ sudo add-apt-repository ppa:v-launchpad-jochen-sprickerhof-de/pcl

$ sudo apt-get update

$ sudo apt-get install libpcl-all

ちなみにubuntu14,16では、

一番最初のppaの追加は不要だという話です。

 

PCLのサンプルコードを動かす方法

続いて、PCLを使った

非常に単純なサンプルコードを動かす方法について説明したいと思います。

 

ちなみに下記のコードはすべて下記の

GitHubリポジトリにも置いてあります。

github.com

 

1. PCLのサンプルコードを書く

まず初めにPCLを使ったサンプルコードを書きます。

今回は下記のような、

指定した個数、[-1,1]の範囲の三次元点群を作成し、

そのデータをPCLの特有のデータフォーマット、

PCDファイルに保存するサンプルコードを使用します。

下記のファイルをpcd_write.cppとしておきます。 

#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>

int main (int argc, char** argv)
{
  pcl::PointCloud<pcl::PointXYZ> cloud;

  // Fill in the cloud data
  cloud.width    = 5;
  cloud.height   = 1;
  cloud.is_dense = false;
  cloud.points.resize (cloud.width * cloud.height);

  for (size_t i = 0; i < cloud.points.size (); ++i)
  {
    cloud.points[i].x = 1024 * rand () / (RAND_MAX + 1.0f);
    cloud.points[i].y = 1024 * rand () / (RAND_MAX + 1.0f);
    cloud.points[i].z = 1024 * rand () / (RAND_MAX + 1.0f);
  }

  pcl::io::savePCDFileASCII ("test_pcd.pcd", cloud);
  std::cerr << "Saved " << cloud.points.size () << " data points to test_pcd.pcd." << std::endl;

  for (size_t i = 0; i < cloud.points.size (); ++i)
    std::cerr << "    " << cloud.points[i].x << " " << cloud.points[i].y << " " << cloud.points[i].z << std::endl;

  return (0);
}

2. CMakeLists.txtを書く

続いて、ファイルビルド用の

CMakeLists.txtを作成します。

下記のように、

非常にシンプルなCMakeLists.txtでOKです。

cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
project(HELLO_WORLD)
find_package(PCL 1.3 REQUIRED COMPONENTS common io)
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
add_executable(pcd_write_test pcd_write.cpp)
target_link_libraries(pcd_write_test ${PCL_COMMON_LIBRARIES} ${PCL_IO_LIBRARIES})

3. ソフトのビルドする

あとは、

下記のようにbuildディレクトリを作り、

cmakeでmakefileを作って、

makeできます。

$ cd build

$ cmake ..

$ make

あとは、実行ファイルを実行するだけです。

./pcd_write_test

f:id:meison_amsl:20160501160652p:plain

 

参考資料

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

Xbox One Kinect センサー (DANCE CENTRAL SPOTLIGHT (ご利用コード) 同梱)

Xbox One Kinect センサー (DANCE CENTRAL SPOTLIGHT (ご利用コード) 同梱)