Python から libpcl を使う(GitHub の davidcaron/pclpy, Python を使用)(Ubuntu 上)

目次

利用条件などは利用者において確認してください

サイト内の関連ページ

参考Webページ

謝辞:このページで使用しているソフトウェア類の作者に感謝します

前準備

Python のインストール(Windows上)

注:既にPython(バージョン3.12を推奨)がインストール済みの場合は,この手順は不要である.

winget(Windowsパッケージマネージャー)を使用してインストールを行う

  1. Windowsで,管理者権限コマンドプロンプトを起動(手順:Windowsキーまたはスタートメニュー > cmd と入力 > 右クリック > 「管理者として実行」)。
  2. winget(Windowsパッケージマネージャー)が利用可能か確認する:
    winget --version
    
  3. Pythonのインストール(下のコマンドにより Python 3.12 がインストールされる).
    reg add "HKLM\SYSTEM\CurrentControlSet\Control\FileSystem" /v LongPathsEnabled /t REG_DWORD /d 1 /f
    REM Python をシステム領域にインストール
    winget install --scope machine --id Python.Python.3.12 -e --silent
    REM Python のパス
    set "INSTALL_PATH=C:\Program Files\Python312"
    echo "%PATH%" | find /i "%INSTALL_PATH%" >nul
    if errorlevel 1 setx PATH "%PATH%;%INSTALL_PATH%" /M >nul
    echo "%PATH%" | find /i "%INSTALL_PATH%\Scripts" >nul
    if errorlevel 1 setx PATH "%PATH%;%INSTALL_PATH%\Scripts" /M >nul
    
  4. 【関連する外部サイト】

    【サイト内の関連ページ】

Visual Studio 2022 Build Toolsとランタイムのインストール

管理者権限でコマンドプロンプトを起動(手順:Windowsキーまたはスタートメニュー > cmd と入力 > 右クリック > 「管理者として実行」)し、以下を実行する。管理者権限は、wingetの--scope machineオプションでシステム全体にソフトウェアをインストールするために必要である。


REM Visual Studio 2022 Build Toolsとランタイムのインストール
winget install --scope machine Microsoft.VisualStudio.2022.BuildTools Microsoft.VCRedist.2015+.x64
set VS_INSTALLER="C:\Program Files (x86)\Microsoft Visual Studio\Installer\setup.exe"
set VS_PATH="C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools"
REM C++開発ワークロードのインストール
%VS_INSTALLER% modify --installPath %VS_PATH% ^
--add Microsoft.VisualStudio.Workload.VCTools ^
--add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 ^
--add Microsoft.VisualStudio.Component.Windows11SDK.22621 ^
--includeRecommended --quiet --norestart

Git のインストール(Windows 上)

Gitは,バージョン管理システム.ソースコードの管理や複数人での共同に役立つ.

サイト内の関連ページWindows での Git のインストール: 別ページ »で説明

関連する外部ページGit の公式ページ: https://git-scm.com/

Gitのインストール

管理者権限でコマンドプロンプトを起動(手順:Windowsキーまたはスタートメニュー > cmd と入力 > 右クリック > 「管理者として実行」)し、以下を実行する。管理者権限は、wingetの--scope machineオプションでシステム全体にソフトウェアをインストールするために必要となる。


REM Git をシステム領域にインストール

7-Zip のインストール

管理者権限でコマンドプロンプトを起動(手順:Windowsキーまたはスタートメニュー > cmd と入力 > 右クリック > 「管理者として実行」)し、以下を実行する。管理者権限は、wingetの--scope machineオプションでシステム全体にソフトウェアをインストールするために必要となる。


REM 7-Zip をシステム領域にインストール
winget install --scope machine --id 7zip.7zip -e --silent
REM 7-Zip のパス設定
set "SEVENZIP_PATH=C:\Program Files\7-Zip"
if exist "%SEVENZIP_PATH%" (
    echo "%PATH%" | find /i "%SEVENZIP_PATH%" >nul
    if errorlevel 1 setx PATH "%PATH%;%SEVENZIP_PATH%" /M >nul
)

libpcl 1.9.1 のインストール

davidcaron/pclpy を使いたい.次のページによれば,バージョンは 1.9.1 が指定されている.

davidcaron/pclpy の URL: https://github.com/davidcaron/pclpy

  • Windows での libpcl のインストール手順は,別ページ »で説明
  • Ubuntu の場合は,次のコマンドを実行する.
    # パッケージリストの情報を更新
    sudo apt update
    sudo apt -y install libboost-all-dev libeigen3-dev libvtk9-dev libflann-dev
    cd /usr/local
    sudo rm -rf pcl-pcl-1.9.1
    cd /tmp
    curl -O -L https://github.com/PointCloudLibrary/pcl/archive/refs/tags/pcl-1.9.1.tar.gz
    cd /usr/local
    sudo tar -xvzof /tmp/pcl-1.9.1.tar.gz
    sudo chown -R $USER pcl-pcl-1.9.1
    cd pcl-pcl-1.9.1
    mkdir build
    cd build
    cmake -DCMAKE_BUILD_TYPE=Release ..
    make -j2
    sudo make install
    

davidcaron/pclpy のインストール

davidcaron/pclpy の URL: https://github.com/davidcaron/pclpy

  1. インストールディレクトリを空にする
    • Windows の場合
      mkdir c:\pytools
      cd c:\pytools
      rmdir /s /q pclpy
      
    • Ubuntu の場合
      sudo mkdir /usr/local/pytools
      cd /usr/local/pytools
      sudo rm -rf pclpy
      
  2. github の davidcaron/pclpy のダウンロード
    • Windows の場合
      cd c:\pytools
      git clone --recursive https://github.com/davidcaron/pclpy
      
    • Ubuntu の場合
      cd /usr/local/pytools
      sudo git clone --recursive https://github.com/davidcaron/pclpy
      
  3. 前提パッケージのインストール
    • Windows の場合
      cd pclpy
      python -m pip install -r requirements-dev.txt
      
    • Ubuntu の場合は「sudo pip3」
      cd pclpy
      sudo apt -y install python3-pybind11 python3-inflection python3-unidecode python3-pytest
      sudo pip3 install -r requirements-dev.txt
      
  4. インストール

    Ubuntu の場合

    sudo chown -R $USER /usr/local/pytools/pclpy
    cd /usr/local/pytools/pclpy
    PYTHON=python3 bash scripts/download_pcl.sh
    PYTHON=python3 bash scripts/generate_points_and_bindings.sh
    # scripts/generate_hpp_point_types.sh
    cd generators
    PCL_REPO_PATH=/usr/local/pcl-pcl-1.9.1 PYTHONPATH=/usr/local/pytools/pclpy python3 generate_point_types.py
    cd ..
    python3 setup.py build
    sudo python3 setup.py install
    
  5. 動作確認

    https://github.com/davidcaron/pclpy/blob/master/README.md に記載の Python プログラムを実行してみる

    エラーメッセージが出なければOKとする

    import pclpy
    from pclpy import pcl
    
    point_cloud = pclpy.read("/usr/local/pclpy/tests/test_data/street.las", "PointXYZRGBA")
    mls = pcl.surface.MovingLeastSquaresOMP.PointXYZRGBA_PointNormal()
    tree = pcl.search.KdTree.PointXYZRGBA()
    mls.setSearchRadius(0.05)
    mls.setPolynomialFit(False)
    mls.setNumberOfThreads(12)
    mls.setInputCloud(point_cloud)
    mls.setSearchMethod(tree)
    mls.setComputeNormals(True)
    output = pcl.PointCloud.PointNormal()
    mls.process(output)