linux qt pcl,[Part 3] 在Ubuntu 16.04源码编译PCL 1.8.1支持VTK和QT

Part-3: Install and Configure PCL 1.8.1 with vtk qt support on Ubuntu 16.04 from source

Series

Guide

qt: 5.7.0

qmake: 3.0

qtcreator: 3.5.1

vtk: 8.1.0 (source)

pcl :1.8.1 (source)

Setup Prerequisites

sudo apt-get update

sudo apt-get install git build-essential linux-libc-dev

sudo apt-get install cmake cmake-gui

sudo apt-get install libusb-dev libudev-dev

sudo apt-get install mpi-default-dev openmpi-bin openmpi-common

sudo apt-get install libpcap-dev

sudo apt-get install libflann1.8 libflann-dev

sudo apt-get install libeigen3-dev

sudo apt-get install libopenni2-dev

sudo apt-get install libqhull7 libqhull-dev

sudo apt-get install freeglut3-dev pkg-config

sudo apt-get install libxmu-dev libxi-dev

sudo apt-get install mono-complete

sudo apt-get install openjdk-8-jdk openjdk-8-jre

dropped

sudo apt-get install qt-sdk

sudo apt-get install libvtk5.10-qt4 libvtk5.10 libvtk5-dev

sudo apt-get install vtk6 libvtk6-dev libvtk6-qt-dev

Notice for vtk version.

metslib

for cmake error:

no metslib found.

fix by

wget https://www.coin-or.org/download/source/metslib/metslib-0.5.3.tgz

tar xzvf metslib-0.5.3.tgz

cd metslib-0.5.3

./configure

make

sudo make install

glxinfo

install

sudo apt-get install mesa-utils

glxinfo

possible error

X Error of failed request: BadRequest (invalid request code or no such operation)

Major opcode of failed request: 154 (GLX)

Minor opcode of failed request: 34 ()

Serial number of failed request: 34

Current serial number in output stream: 33

fix,make sure NVIDIA drivers are installed successfully and no conflict.

check display OpenGL info

$ glxinfo | grep OpenGL

OpenGL vendor string: NVIDIA Corporation

OpenGL renderer string: GeForce GTX 1060/PCIe/SSE2

OpenGL core profile version string: 4.5.0 NVIDIA 384.90

OpenGL core profile shading language version string: 4.50 NVIDIA

OpenGL core profile context flags: (none)

OpenGL core profile profile mask: core profile

OpenGL core profile extensions:

OpenGL version string: 4.5.0 NVIDIA 384.90

OpenGL shading language version string: 4.50 NVIDIA

OpenGL context flags: (none)

OpenGL profile mask: (none)

OpenGL extensions:

OpenGL ES profile version string: OpenGL ES 3.2 NVIDIA 384.90

OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20

OpenGL ES profile extensions:

It means we use OpenGL version 4.5.0 for NVIDIA display.

Or by nvidia-settings, NVIDIA X Server Settings--> X Screen 0 --> OpenGL/GLX Information.

compile

wget https://github.com/PointCloudLibrary/pcl/archive/pcl-1.8.1.tar.gz

cd pcl

mkdir build

cd build

cmake-gui ..

with options

QT_USE_FILE /home/kezunlin/program/pcl-1.8.1/build/use-qt5.cmake

VTK_DIR /usr/local/lib/cmake/vtk-8.1

CMAKE_BUILD_TYPE Release

CMAKE_CONFIGURATION_TYPES Release

CMAKE_INSTALL_PREFIX /usr/local

PCL_SHARED_LIBS ON

PCL_QT_VERSION 5

PCL_ENABLE_SSE ON

Build_visualization ON

Build_apps ON

Build_examples OFF # error may occur

Using CPU native flags for SSE optimization: -march=native

make and install

# it may take several minutes, wait ...

make -j8

sudo make -j8 install

cmake install to /usr/local/bin, /usr/local/lib/, /usr/local/include/pcl-1.8

PCL_DIR will be /usr/local/share/pcl-1.8

error for example

/home/kezunlin/program/pcl-1.8.1/examples/segmentation/example_cpc_segmentation.cpp:493:17: error: ‘class vtkUnsignedCharArray’ has no member named ‘InsertNextTupleValue’

colors->InsertNextTupleValue (color);

so cmake with options

Build_examples OFF

Test pcl_viewer

test pcl_viewer

/usr/local/bin/pcl_viewer ~/program/pcl-1.8.1/test/car6.pcd

Success.

2ecda7424c3e6713c42b1d1dd974b76a.png

Tips: screen snapshot by gnome-screenshot -a.

Cloud Viewer

cloud_viewer.cpp

#include

#include

#include

#include

int user_data;

void

viewerOneOff (pcl::visualization::PCLVisualizer& viewer)

{

viewer.setBackgroundColor (1.0, 0.5, 1.0);

pcl::PointXYZ o;

o.x = 1.0;

o.y = 0;

o.z = 0;

viewer.addSphere (o, 0.25, "sphere", 0);

std::cout << "i only run once" << std::endl;

}

void

viewerPsycho (pcl::visualization::PCLVisualizer& viewer)

{

static unsigned count = 0;

std::stringstream ss;

ss << "Once per viewer loop: " << count++;

viewer.removeShape ("text", 0);

viewer.addText (ss.str(), 200, 300, "text", 0);

//FIXME: possible race condition here:

user_data++;

}

int

main ()

{

// car6 x y z

// colored_cloud x y z rbga

pcl::PointCloud<:pointxyzrgba>::Ptr cloud (new pcl::PointCloud<:pointxyzrgba>);

pcl::io::loadPCDFile ("colored_cloud.pcd", *cloud);

pcl::visualization::CloudViewer viewer("Cloud Viewer");

//blocks until the cloud is actually rendered

viewer.showCloud(cloud);

//use the following functions to get access to the underlying more advanced/powerful

//PCLVisualizer

//This will only get called once

viewer.runOnVisualizationThreadOnce (viewerOneOff);

//This will get called once per visualization iteration

viewer.runOnVisualizationThread (viewerPsycho);

while (!viewer.wasStopped ())

{

//you can also do cool processing here

//FIXME: Note that this is running in a separate thread from viewerPsycho

//and you should guard against race conditions yourself...

user_data++;

}

return 0;

}

/*

http://pointclouds.org/documentation/tutorials/cloud_viewer.php

http://pointclouds.org/documentation/tutorials/pcl_visualizer.php

http://docs.pointclouds.org/1.7.0/structpcl_1_1_point_x_y_z_r_g_b.html

*/

CMakeLists.txt

cmake_minimum_required(VERSION 2.8 FATAL_ERROR)

project(cloud_viewer)

# set bin folder

set(CMAKE_BINARY_DIR ${CMAKE_SOURCE_DIR}/bin)

set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR})

set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR})

find_package(PCL 1.8.1 REQUIRED)

#message( [***] ${PCL_INCLUDE_DIRS})

#message( [***] ${PCL_LIBRARY_DIRS})

#message( [***] ${PCL_DEFINITIONS})

#message( [***] ${PCL_LIBRARIES})

include_directories(${PCL_INCLUDE_DIRS})

link_directories(${PCL_LIBRARY_DIRS})

add_definitions(${PCL_DEFINITIONS})

add_executable (cloud_viewer cloud_viewer.cpp)

target_link_libraries (cloud_viewer ${PCL_LIBRARIES})

compile

mkdir build

cd build

cmake ..

make

run demo

bin folder

$ tree bin/

bin/

├── cloud_viewer

└── colored_cloud.pcd

0 directories, 2 files

run demo

./cloud_viewer

Code Example

Pcd write

Reference

for windows

History

20180105: created.

20180227: rewrite pcl compile part.

Copyright

Post author: kezunlin

Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值