How to use PCL with Qt GUI

What is Qt?

QtはC++向けのクロスプラットフォームで動作するアプリケーション開発フレームワークです。
GUIやNetworkなどそれぞれの環境に依存しやすい機能でも、ソースコードを書き直すことなく様々な環境で動作するアプリケーションを作ることができます。

PCL with Qt GUI

PCLをQtで利用するためのチュートリアルが公開されています。
Qtを使うことでリッチなGUIを用意することができます。

How to Build Tutorial?

しかし、このチュートリアルは最新の環境ではそのままでは動作しません。
ここでは最新の開発環境とライブラリを用いてサンプルプログラムを動かす方法を紹介します。

Development Environment

以下の開発環境で確認しました。

  • Visual Studio 2015
  • PCL 1.8.0
  • VTK 7.1.0
  • Qt 5.8.0
  • CMake 3.6.1 (or later)

Build VTK with Qt (QVTK) and Generate QVTKWidgetPlugin

PCLをQtで利用するには、Qt機能を有効にしたVTKが必要になります。
これは一般にQVTKと呼ばれています。

以下のドキュメントに従い、QtをインストールしてQVTKをビルドします。
また、QVTKWidgetPluginを生成してQt Designerに登録します。

Build PCL with QVTK

上記で作成したQVTKを利用してPCLをビルドします。

以下のドキュメントに従い、PCLをビルドします。
このさい、VTKはQVTKを設定、WITH_QTオプションにチェックを入れます。
なお、VTK以外のライブラリはPCL All-in-one Installerに含まれる3rdPartyを流用することもできます。

Build Sample Program

チュートリアルのサンプルプログラムをビルドします。

1. Fix Sample Program

サンプルコードはPCLのリポジトリにあります。
このチュートリアルは古い環境(Qt4)向けに書かれているため、少し修正する必要があります。
修正済みのサンプルコードは以下からダウンロードできます。

修正は以下の通りです。
CMakeLists.txtはすべて書き直しました。
Qt CreatorのプロジェクトファイルはQtのメジャーバージョンを5に書き換えました。

  • CMakeLists.txt#ALL
  • 	cmake_minimum_required( VERSION 3.6 )
    	
    	# Create Project
    	project( pcl_visualizer )
    		
    	# Set StartUp Project
    	set_property( DIRECTORY PROPERTY VS_STARTUP_PROJECT "pcl_visualizer" )
    		
    	# Find PCL Package
    	set( PCL_ROOT $ENV{PCL_ROOT} )
    	find_package( PCL 1.8.0 REQUIRED )
    	
    	# Find VTK Package
    	# VTK_DIR is QVTK directory
    	set( VTK_DIR "$ENV{PCL_ROOT}/3rdParty/VTK" )
    	find_package( VTK REQUIRED )
    	
    	# Find Qt Package
    	# QTDIR is Qt directory
    	set( QTDIR $ENV{QTDIR} )
    	set( CMAKE_PREFIX_PATH ${QTDIR} )
    	find_package( Qt5Widgets REQUIRED )
    	
    	# Set Automatic MOC
    	set( CMAKE_INCLUDE_CURRENT_DIR ON )
    	set( CMAKE_AUTOMOC ON )
    	
    	# Generate MOC Code and UI Header
    	qt5_wrap_cpp( MOC pclviewer.h )
    	qt5_wrap_ui( UI_HEADER pclviewer.ui )
    
    	# Add Executable
    	add_executable( pcl_visualizer main.cpp pclviewer.h pclviewer.cpp pclviewer.ui )
    	
    	# Additional Include Directories
    	include_directories( ${PCL_INCLUDE_DIRS} )
    	include_directories( ${CMAKE_CURRENT_SOURCE_DIR} )
    	include_directories( ${CMAKE_CURRENT_BINARY_DIR} )
    	
    	# Load VTK Settings
    	include( ${VTK_USE_FILE} )
    	
    	# Preprocessor Definitions
    	add_definitions( ${PCL_DEFINITIONS} )
    
    	# Additional Library Directories
    	link_directories( ${PCL_LIBRARY_DIRS} )
    	
    	# Additional Dependencies
    	target_link_libraries( pcl_visualizer ${PCL_LIBRARIES} ${VTK_LIBRARIES} Qt5::Widgets )
    	
  • pcl_visualizer.pro#L9
  • 	greaterThan(QT_MAJOR_VERSION, 5): QT += widgets
    	

2. Open Qt Creator Project

Qt Creatorを起動してプロジェクトファイル(qt_visualizer\sample\src\pcl_visualizer.pro)を開く。
[Configure Project]ボタンを押す。

Configure Project

3. Build Settings

[Projects]ボタンを押してBuild Settingsを開き、以下のように設定する。

3-1. Edit Build Configuration

Edit build configurationのプルダウンメニューから設定するビルド構成(Debug or Release)を選択する。

3-2. Set Build Directory

GeneralのBuild directoryにビルドディレクトリ(../build)を指定する。
このビルドディレクトリはQt Creatorの仕様でソースコードディレクトリと同じ深さにある必要があります。

├──build
└──src
   ├── CMakeLists.txt
   ├── main.cpp
   ├── pclviewer.cpp
   ├── pclviewer.h
   ├── pclviewer.ui
   └── pcl_visualizer.pro
3-3. Set Build Steps

Build Stepsにビルドステップを設定します。
まず既存のビルドステップはすべて削除します。

Build StepsのプルダウンメニューからCustom Process Stepを選択、追加します。
このCustom Process Stepを2つ追加します。
1つめはプロジェクトを作成するためのCMake、2つめはプロジェクトをビルドするためのMSBuildの設定をします。

CMake

Command cmake
Arguments -G “Visual Studio 14 2015 Win64” ../src
(または-G “Visual Studio 14 2015” ../src)
Working directory %{buildDir}/../build
MSBuild

Command msbuild
Arguments pcl_visualizer.vcxproj /p:configuration=release
(またはpcl_visualizer.vcxproj /p:configuration=debug)
Working directory %{buildDir}/../build

Build Steps for Debug
Build Steps for Release

4. Build Project

ビルド構成(Debug or Release)を選択、[Build Project]ボタンを押してプロジェクトをビルドします。

Edit Build Configuration
Build Project

5. Execution

[Run]ボタンを押してサンプルプログラムを実行します。
以下のように表示されます。

Run Sample Program


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です