PCLの実装

Ubuntu16.04では以下では不成功:「ダウンロードに失敗」(2018-04-02)

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

解決策: https://askubuntu.com/questions/916260/how-to-install-point-cloud-library-v1-8-pcl-1-8-0-on-ubuntu-16-04-2-lts-for に従う

  1. Install oracle-java8-jdk:
    sudo add-apt-repository -y ppa:webupd8team/java && sudo apt update && sudo apt -y install oracle-java8-installer
  2. Install universal pre-requisites:
    sudo apt -y install g++ cmake cmake-gui doxygen mpi-default-dev openmpi-bin openmpi-common libusb-1.0-0-dev libqhull* libusb-dev libgtest-dev
    sudo apt -y install git-core freeglut3-dev pkg-config build-essential libxmu-dev libxi-dev libphonon-dev libphonon-dev phonon-backend-gstreamer
    sudo apt -y install phonon-backend-vlc graphviz mono-complete qt-sdk libflann-dev
  3. PCL v1.8, Ubuntu 16.04.2 という条件においては(Downloadsディレクトリを仮のインストールディレクトリとしている)
sudo apt -y install libflann1.8 libboost1.58-all-dev

cd ~/Downloads
wget http://launchpadlibrarian.net/209530212/libeigen3-dev_3.2.5-4_all.deb
sudo dpkg -i libeigen3-dev_3.2.5-4_all.deb
sudo apt-mark hold libeigen3-dev

wget http://www.vtk.org/files/release/7.1/VTK-7.1.0.tar.gz
tar -xf VTK-7.1.0.tar.gz
cd VTK-7.1.0 && mkdir build && cd build
cmake ..
make                                                                   
sudo make install

cd ~/Downloads
wget https://github.com/PointCloudLibrary/pcl/archive/pcl-1.8.0.tar.gz
tar -xf pcl-1.8.0.tar.gz
cd pcl-pcl-1.8.0 && mkdir build && cd build
cmake ..
make
sudo make install

cd ~/Downloads
rm libeigen3-dev_3.2.5-4_all.deb VTK-7.1.0.tar.gz pcl-1.8.0.tar.gz
sudo rm -r VTK-7.1.0 pcl-pcl-1.8.0

(4) 以上でビルドされているはずだが検証 (以下はこちらをダウンロードして展開後7から実行 )

cd ~
mkdir pcl-test && cd pcl-test

(5) Create a CMakeLists.txt file: (注意: Pythonコードではないが字が崩れるのでPythonコードの欄に記入, 以下同様)

In [ ]:
cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
project(pcl-test)
find_package(PCL 1.2 REQUIRED)

include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})

add_executable(pcl-test main.cpp)
target_link_libraries(pcl-test ${PCL_LIBRARIES})

SET(COMPILE_FLAGS "-std=c++11")
add_definitions(${COMPILE_FLAGS})

(6) Create a main.cpp file:

In [ ]:
#include <iostream>

int main() {
    std::cout << "hello, world!" << std::endl;
    return (0);
}

(7) Compile:

mkdir build && cd build
cmake ..
make

(8) Test:

./pcl-test

出力は hello, world! となれば成功

使用しているライブラリ

参考: https://www.slideshare.net/masafuminoda/pcl-11030703

  • Boost:C++準標準ライブラリ – スマートポインタ、関数オブジェクト、スレッド、シグナルなど
  • Eigen:行列計算(固有値など)
  • FLANN:最近傍探索ライブラリ
  • qHull:凸包、三角面化、ドロネー分割
  • OpenNI:Kinect, Xtion
  • VTK:GUIツールキット

python binding

ソース https://github.com/strawlab/python-pcl --- これはpclをインストールしてから使える

手順: readme.rstに従う

  1. pip module install.
     pip install --upgrade pip    
     pip install cython==0.25.2  
     pip install numpy
  2. instal python module
     python setup.py build_ext -i    
     python setup.py install

基本はこれでよいはずだが、examples/example.pyが動かない---pcl.pcl_visualizationがロードできないというエラーになる。

上記の解決策: 参考: https://github.com/strawlab/python-pcl/issues/127

(私の環境: pcl-1.8, vtk-7.1, Ubuntu 16.04)

1. setup.pyを編集:ポイントは /usr/local/include/vtk-7.1の登録と、pcl/pcl_visualization.pyxの登録

553,554c553,554
<     ext_args['include_dirs'].append('/usr/local/include/vtk-7.1')
< # pcl 1.8.1(MacOSX)
---
>     # pcl 1.8.1(MacOSX)
>     # ext_args['include_dirs'].append('/usr/local/include/vtk-8.0')
614c614
<                   Extension("pcl.pcl_visualization", ["pcl/pcl_visualization.pyx"], language="c++", **ext_args),
---
>                   # Extension("pcl.pcl_visualization", ["pcl/pcl_visualization.pyx"], language="c++", **ext_args),
621d620
<                   Extension("pcl.pcl_visualization", ["pcl/pcl_visualization.pyx"], language="c++", **ext_args),

2. あとは上記の手順に従う、すなわち(ただし、sudo -sしておいた方がよい)

    python setup.py build_ext -i    
    python setup.py install

examples/example.pyの実行

python examples/example.py

以下が出力されvisualizerが立ち上がる(マウスをうまく操作しないと、単に真っ黒な画面がみえるだけ...)

<PointCloud of 0 points>
62.2126 201.60611 2.0 16777215.0
477.4537 414.17624 0.042777944 16777215.0
137.43857 169.87613 0.035300206 16777215.0
75.71391 39.28469 -2.0 16777215.0
253.92021 61.253967 0.03907928 16777215.0
473.97513 357.2193 0.04289817 16777215.0
58.400024 475.75995 4.0 16777215.0
0.2371532 182.71176 0.037874404 16777215.0
325.96082 68.07368 0.026990592 16777215.0
246.13014 239.2525 0.0034214535 16777215.0
20.3025 359.74774 0.032554 16777215.0
444.84967 237.97546 0.037247818 16777215.0
221.02495 38.875286 0.04509917 16777215.0
325.25787 180.64923 0.039011408 16777215.0
447.5587 51.657703 0.0390195 16777215.0
188.4684 329.1508 0.0015491303 16777215.0
448.93726 233.74994 0.008429269 16777215.0
166.54489 214.51729 0.009543508 16777215.0
(以下略)

Viewerの操作方法

  • 左ドラッグ:視点の回転
  • Shift+左ドラッグ:視点の平行移動
  • Ctrl+左ドラッグ:画面上の回転
  • 右ドラッグ:ズーム
  • g:メジャーの表示
  • j:スクリーンショットの保存