MyEnigma

とある自律移動システムエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

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

目次

はじめに

先日、

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

MyEnigma Supporters

もしこの記事が参考になり、

ブログをサポートしたいと思われた方は、

こちらからよろしくお願いします。

https://gumroad.com/l/myenigmasupportersgumroad.com