欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > PCL从理解到应用【02】PCL环境安装 | PCL测试| Linux系统

PCL从理解到应用【02】PCL环境安装 | PCL测试| Linux系统

2024/10/24 1:53:01 来源:https://blog.csdn.net/qq_41204464/article/details/140169030  浏览:    关键词:PCL从理解到应用【02】PCL环境安装 | PCL测试| Linux系统

前言

本文介绍在Ubuntu18.04系统中,如何安装PCL。

源码安装方式:pcl版本1.91,vtk版本8.2.0,Ubuntu版本18.04。

安装好后,可以看到pcl的库,在/usr/lib/中;

通过编写C++代码,直接调用的pcl库

#include <iostream>

#include <pcl/point_types.h>

#include <pcl/io/pcd_io.h>

#include <pcl/visualization/pcl_visualizer.h>

...............

然后使用Cmake编译,生成可执行程序,可视化效果: 

一、安装pcl所需依赖

编写一个sh脚本,包含安装pcl依赖的命令,名称为:install_dependencies.sh

#!/bin/bash
sudo apt-get update # 更新包列表
sudo apt-get install -y git build-essential linux-libc-dev # 安装基础构建工具和库
sudo apt-get install -y cmake cmake-gui # 安装 cmake 和 cmake-gui
sudo apt-get install -y libusb-1.0-0-dev libusb-dev libudev-dev # 安装 libusb 相关库
sudo apt-get install -y mpi-default-dev openmpi-bin openmpi-common # 安装 MPI 相关库
sudo apt-get install -y libflann1.9 libflann-dev # 安装 FLANN 库
sudo apt-get install -y libeigen3-dev # 安装 Eigen 库
sudo apt-get install -y libboost-all-dev # 安装 Boost 库
sudo apt-get install -y libvtk7.1-qt libvtk7.1 libvtk7-qt-dev # 安装 VTK 库
sudo apt-get install -y libqhull* libgtest-dev # 安装 QHull 和 GTest 库
sudo apt-get install -y freeglut3-dev pkg-config libxmu-dev libxi-dev # 安装 FreeGLUT 和其他依赖库
sudo apt-get install -y mono-complete openjdk-8-jdk openjdk-8-jre # 安装 Mono 和 OpenJDK

然后在终端中运行以下命令来执行脚本:

chmod +x install_dependencies.sh
./install_dependencies.sh

需要确保没有遗漏,安装成功

二、源码安装vtk

VTK(Visualization Toolkit)是一个开源的软件系统,用于3D计算机图形、图像处理和可视化。

它由Kitware公司开发和维护,并且是众多可视化和数据处理应用程序的基础。功能包括:

  • 3D图形渲染:VTK支持3D图形渲染,可以生成高质量的3D图像和动画。
  • 数据处理:VTK提供了丰富的数据处理功能,包括数据过滤、转换、采样等。
  • 图像处理:VTK可以处理2D和3D图像,提供了图像过滤、分割、变换等功能。
  • 科学计算:VTK包含多种科学计算工具,可以用于科学数据的分析和可视化。

先安装cmake 和vtk 的依赖项

sudo apt-get install cmake-curses-gui
sudo apt-get install freeglut3-dev
sudo apt-get install libqt5x11extras5 libqt5x11extras5-dev

然后下载VTK-8.2.0库,VTK官网地址:https://vtk.org/download/

 需要下来网页,找到8.2.0版本,下载VTK-8.2.0. zipVTK-8.2.0.tar. gz

进入压缩包的下载目录,解压文件,然后进入文件夹所在位置的命令终端

比如:把压缩包放到了software目录,然后解压

注意:需要退出Conda环境!!!需要退出Conda环境!!!需要退出Conda环境!!!

创建build文件夹,然后cd到build中, 使用可视化的cmake进行工程分析

mkdir build
cd  build
cmake-gui

看到如下界面,当然会有差异(没有红色部分内容,因为之前编译过了,才会出现的)

  • 点击Browse Source,选择source code的路径
  • 勾选Grouped和Advanced
  • 点击底下的Configure按钮,等待执行完成,出现红色部分的内容

展开 Module ,勾选 Module_vtkGUISupportQt

展开VTK,勾选 VTK_Group_Qt

 接着点击Configure按钮,等待完成后,再点击Generate按钮

这一步完成了cmake分析,如果没什么问题,如上图所示

编译安装VTK-8.2.0

关闭cmake-gui界面,然后输入sudo make进行编译,编译时间会较长;

如何电脑CPU性能较好,支持多线程,可以使用多线程加速编译

sudo make -j2

可以使用 -j 选项来指定线程数,其中 2 表示使用 2 个线程进行并行编译。

根据电脑性能的 CPU 核心数量调整这个数字,比如sudo make -j4

安装VTK-8.2.0

最后输入sudo make install进行安装,完成VTK的安装啦~

sudo make install

三、源码安装pcl

来到pcl开源地址,下载源码压缩包Source code 

https://github.com/PointCloudLibrary/pcl/releases/tag/pcl-1.9.1

解压下载的压缩包,然后打开终端,进入解压的目录,输入下面命令:

cd pcl-pcl-1.9.1
mkdir release
cd release

然后复制下面命令回车,用cmake分析整个源代码

cmake -DCMAKE_BUILD_TYPE=None -DCMAKE_INSTALL_PREFIX=/usr \ -DBUILD_GPU=ON-DBUILD_apps=ON -DBUILD_examples=ON \ -DCMAKE_INSTALL_PREFIX=/usr ..

构建完成后,接着输入sudo make进行编译,时间比较长

最后输入sudo make install 进行安装,完成pcl安装啦~

sudo make install

四、测试pcl

创建一个test_pcl文件夹,然后创建一个源文件test_pcl.cpp,代码如下:

#include <iostream>
#include <pcl/point_types.h>
#include <pcl/io/pcd_io.h>
#include <pcl/visualization/pcl_visualizer.h>int main(int argc, char** argv) {// 创建点云对象pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZRGB>);// 定义立方体的边长和点的数量float edge_length = 1.0;int num_points_per_axis = 10; // 每个轴上的点数int total_points = num_points_per_axis * num_points_per_axis * num_points_per_axis;// 生成均匀分布的立方体点云for (int i = 0; i < num_points_per_axis; ++i) {for (int j = 0; j < num_points_per_axis; ++j) {for (int k = 0; k < num_points_per_axis; ++k) {pcl::PointXYZRGB point;point.x = static_cast<float>(i) / (num_points_per_axis - 1) * edge_length;point.y = static_cast<float>(j) / (num_points_per_axis - 1) * edge_length;point.z = static_cast<float>(k) / (num_points_per_axis - 1) * edge_length;// 根据z坐标设置颜色渐变,使渐变更加明显uint8_t r = static_cast<uint8_t>(255 * point.z / edge_length);uint8_t g = static_cast<uint8_t>(255 * (1 - point.z / edge_length));uint8_t b = static_cast<uint8_t>(255 * std::abs(0.5 - point.z / edge_length) * 2); // 增加蓝色成分以增强渐变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);cloud->points.push_back(point);}}}cloud->width = static_cast<uint32_t>(cloud->points.size());cloud->height = 1;cloud->is_dense = true;// 保存点云到PCD文件pcl::io::savePCDFileASCII("cube_point_cloud.pcd", *cloud);std::cout << "Saved " << cloud->points.size() << " data points to cube_point_cloud.pcd." << std::endl;// 可视化点云pcl::visualization::PCLVisualizer::Ptr viewer(new pcl::visualization::PCLVisualizer("3D Viewer"));viewer->setBackgroundColor(0, 0, 0);pcl::visualization::PointCloudColorHandlerRGBField<pcl::PointXYZRGB> rgb(cloud);viewer->addPointCloud<pcl::PointXYZRGB>(cloud, rgb, "sample cloud");viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 3, "sample cloud");viewer->addCoordinateSystem(1.0);viewer->initCameraParameters();// 显示点云直到窗口关闭while (!viewer->wasStopped()) {viewer->spinOnce(100);}return 0;
}

在test_pcl文件夹下再创建一个配置文件CMakeLists.txt,代码如下:

cmake_minimum_required(VERSION 2.6)

project(test_pcl)

find_package(PCL 1.9.1 REQUIRED)

include_directories(${PCL_INCLUDE_DIRS})

link_directories(${PCL_LIBRARY_DIRS})

add_definitions(${PCL_DEFINITIONS})

add_executable(test_pcl test_pcl.cpp)

target_link_libraries (test_pcl ${PCL_LIBRARIES})

install(TARGETS test_pcl RUNTIME DESTINATION bin)

在项目目录中运行以下命令以编译并运行程序:

mkdir build
cd build
cmake ..
make
./test_pcl 

示例效果:

通过滑动鼠标,缩放大小:

恭喜完成安装啦~

报错与解决方案

如果遇到报错,显示刚才安装的vtk8.2库没有找到

./test_pcl: error while loading shared libraries: libvtkRenderingCore-8.2.so.1: cannot open shared object file: No such file or directory ls /usr/local/lib/libvtkRenderingCore-8.2.so.1 /usr/local/lib/libvtkRenderingCore-8.2.so.1

需要添加库的环境遍历,执行命令:

export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

再并运行程序 ./test_pcl

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com