ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

linux安装pcl1.10

2022-02-22 18:35:14  阅读:191  来源: 互联网

标签:pcl1.10 sudo PCL pcl apt install linux test 安装


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

标签:pcl1.10,sudo,PCL,pcl,apt,install,linux,test,安装
来源: https://blog.csdn.net/qq_40164094/article/details/123074320

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有