linux安装pcl1.10

2022/2/23 7:24:52

本文主要是介绍linux安装pcl1.10,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

PCL官方教程:http://pointclouds.org/documentation/tutorials/

PCL官方github库: https://github.com/PointCloudLibrary/pcl.git

github库太慢了,使用国内镜像码云库

Gitee.com 码云库: https://gitee.com/mirrors/pcl

背景
Ubuntu16.04 + pcl-1.10

安装
1、 安装依赖

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-1.0-0-dev libusb-dev libudev-dev
sudo apt-get install mpi-default-dev openmpi-bin openmpi-common
sudo apt-get install libflann1.8 libflann-dev
sudo apt-get install libeigen3-dev
sudo apt-get install libboost-all-dev

注意这里libvtk的版本需要与pcl匹配,如安装的pcl是1.9以上,需要使用 vtk6.2

pcl>1.9 则使用 sudo apt-get install libvtk6.2 libvtk6.2-qt libvtk6-dev

否则,会在运行测试demo时,会报错,下文会给出解决办法

sudo apt-get install libvtk5.10-qt4 libvtk5.10 libvtk5-dev
sudo apt-get install libqhull* libgtest-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 qt-sdk openjdk-8-jdk openjdk-8-jre
sudo apt-get install libopenni-dev libopenni2-dev
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
vtk介绍:(visualization toolkit)是一个开源的免费软件系统,主要用于三维计算机图形学、图像处理和可视化。

2、 下载源码

https://github.com/PointCloudLibrary/pcl.git

git clone https://gitee.com/mirrors/pcl
git checkout pcl-1.10.0
1
2
3
gitee 国内镜像 每天同步一次github数据

3、编译源码

cd pcl
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=None -DCMAKE_INSTALL_PREFIX=/usr
-DBUILD_GPU=ON -DBUILD_apps=ON -DBUILD_examples=ON
-DCMAKE_INSTALL_PREFIX=/usr …
make
1
2
3
4
5
6
7
4、安装

sudo make install
1
5、测试

创建test/test_pcl.cpp文件

#include
#include <pcl/common/common_headers.h>
#include <pcl/io/pcd_io.h>
#include <pcl/visualization/pcl_visualizer.h>
#include <pcl/visualization/cloud_viewer.h>
#include <pcl/console/parse.h>
using namespace pcl;

int main(int argc, char const *argv[])
{
std::cout << “Test Pcl !” << std::endl;
PointCloud::Ptr point_cloud_ptr(new PointCloud);
uint8_t r(255), g(15), b(15);
for(float z(-1.0); z <= 1.0; z += 0.05){
for(float angle(0.0); angle <= 360.0; angle += 5.0){
PointXYZRGB point;
point.x = 0.5 * cosf (deg2rad(angle));
point.y = sinf (deg2rad(angle));
point.z = z;

		uint32_t rgb = (static_cast<uint32_t>(r) << 16 |
			static_cast<uint32_t>(g) << 8 | static_cast<uint32_t>(b));
		point.rgb = *reinterpret_cast<float*>(&rgb);
		point_cloud_ptr->points.push_back (point);
	}

	if(z < 0.0){
		r -= 12;
		g += 12;
	} else {
		g -= 12;
		b += 12;
	}
}

point_cloud_ptr->width = (int) point_cloud_ptr->points.size();
point_cloud_ptr->height = 1;
visualization::CloudViewer viewer("PCL Test");
viewer.showCloud(point_cloud_ptr);
while(!viewer.wasStopped()){};
return 0;

}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
创建test/CMakeList.txt

cmake_minimum_required(VERSION 2.6)
project(pcl_test)

#要求工程依赖的PCL最低版本为1.2,并且版本至少包含common和IO两个模块 这里的REQUIRED意味着如果对应的库找不到 则CMake配置的过程将完全失败,
#因为PCL是模块化的,也可以如下操作:

一个组件 find_package(PCL 1.6 REQUIRED COMPONENTS io)

多个组件 find_package(PCL 1.6 REQUIRED COMPONENTS commom io)

所有组件 find_package(PCL 1.6 REQUIRED )

find_package(PCL 1.2 REQUIRED)

#下面的语句是利用CMake的宏完成对PCL的头文件路径和链接路径变量的配置和添加,如果缺少下面几行,生成文件的过程中就会提示
#找不到相关的头文件,在配置CMake时,当找到了安装的PCL,下面相关的包含的头文件,链接库,路径变量就会自动设置

PCL_FOUND:如果找到了就会被设置为1 ,否则就不设置

PCL_INCLUDE_DIRS:被设置为PCL安装的头文件和依赖头文件的目录

PCL_LIBRARIES:被设置成所建立和安装的PCL库头文件

PCL_LIBRARIES_DIRS:被设置成PCL库和第三方依赖的头文件所在的目录

PCL_VERSION:所找到的PCL的版本

PCL_COMPONENTS:列出所有可用的组件

PCL_DEFINITIONS:列出所需要的预处理器定义和编译器标志

include_directories( P C L I N C L U D E D I R S ) l i n k d i r e c t o r i e s ( {PCL_INCLUDE_DIRS}) link_directories( PCLI​NCLUDED​IRS)linkd​irectories({PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})

add_executable(pcl_test pcl_test.cpp)

#虽然包含了PCL的头文件,因此编译器知道我们现在访问所用的方法,我们也需要让链接器知道所链接的库,PCL找到库文件由
#PCL_COMMON_LIBRARIES变量指示,通过target_link_libraries这个宏来出发链接操作
target_link_libraries (pcl_test ${PCL_LIBRARIES})

install(TARGETS pcl_test RUNTIME DESTINATION bin)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
编译test_pcl.cpp

cd test
mkdir build
cd build
cmake …
make
1
2
3
4
5
报如下错误:

Scanning dependencies of target pcl_test
[ 50%] Building CXX object CMakeFiles/pcl_test.dir/pcl_test.cpp.o
/home/bing/Study/pcl/test/pcl_test.cpp:4:46: fatal error: pcl/visualization/pcl_visualizer.h: No such file or directory
1
2
3
关键报错信息pcl/visualization/pcl_visualizer.h
打开pcl的安装目录,查看是否存在该include目录,前门编译pcl时,设置的安装目录在/usr/
进入/usr/include/pcl-1.10/pcl/,发现果真没有visualization目录,安装时出了问题。

解决思路:从pcl的CMakeLists文件可知,需要安装高版本的vtk依赖库,很多教程中的VTK5.10版本
重新安装VTK76.2版本。无需卸载旧版本,再重新cmake+make编译,再make install安装pcl,可以解决该问题。

打开cpl的 CMakeList.txt 搜索一下关键字vtk,发现需要6.2版本的

安装vtk6.2

sudo apt-get install libvtk6.2 libvtk6.2-qt libvtk6-dev

进入删除原来编译的pcl

cd pcl/build
sudo rm -rf *

重新编译

cmake -DCMAKE_BUILD_TYPE=None -DCMAKE_INSTALL_PREFIX=/usr
-DBUILD_GPU=ON -DBUILD_apps=ON -DBUILD_examples=ON
-DCMAKE_INSTALL_PREFIX=/usr …
make

重新安装,无需要删除原来安装的pcl,直接再次安装即可

sudo make install
1
2
3
4
5
6
7
8
9
10
11
12
完成后,再次编译test_pcl

cd test/build
cmake …
make

运行

./test_pcl
1
2
3
4
5
运行结果如下

————————————————
版权声明:本文为CSDN博主「丰色木夕」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/youlinhuanyan/article/details/104123740



这篇关于linux安装pcl1.10的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程