FunnyWii
FunnyWii
Published on 2023-01-12 / 61 Visits
0
0

PCL入门笔记 - PCL 1.13.0 的安装和配置(Ubuntu 20.04 LTS)

我宣布我是傻逼,果然幻想着在Windows下做C++开发的我,就是个傻逼。

安装PCL

目前(2023年1月),PCL已经提供了apt下载的方式,因此不需要像大部分文章所说的那样,先安装大量的依赖。

在 https://pointclouds.org/downloads/ 中可以看到,安装PCL的命令行:

sudo apt install libpcl-dev

目前下载的是最新版PCL 1.13.0

安装VTK

首先安装VTK的依赖:X11,OpenGL,cmake和cmake-gui

# X11
sudo apt-get install libx11-dev libxext-dev libxtst-dev libxrender-dev libxmu-dev libxmuu-dev
# OpenGL
sudo apt-get install build-essential libgl1-mesa-dev libglu1-mesa-dev
# cmake && cmake-gui
sudo apt-get install cmake cmake-gui

之后去VTK官网 https://vtk.org/download/ 安装最新版的VTK,VTK-9.2.5.tar.gz

打开terminal,输入:

cmake-gui

会打开 cmake的图形界面。

同时我们需要在VTK的解压目录新建一个build文件夹。

在cmake-gui中:

配置 where is the source code 为VTK-9.2.5所在目录;
配置 where to build the binaries 为VTK-9.2.5下的build文件夹;
点击“Configure”,(用“Unix Makefiles”就可以);配置完成后,显示“Configuring done”。
勾选“VTK-Group-Qt”,再点击“Configure”;配置完成后,显示“Configuring done”;
点击“Generate”;显示“Generating done”,在build文件夹下生成工程文件。

pclinstall1.png

在终端里切换到VTK安装目录下的build文件夹,输入:

make
sudo make install

至此,vtk安装完成。

CMakeList

对应的CMakeList:

cmake_minimum_required(VERSION 3.24)
project(GraduateProjectCPP)

set(CMAKE_CXX_STANDARD 11)

find_package(PCL 1.13 REQUIRED)

include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
add_executable(GraduateProjectCPP main.cpp src/RegionGrowing.h)
target_link_libraries (GraduateProjectCPP ${PCL_LIBRARIES})
install(TARGETS GraduateProjectCPP RUNTIME DESTINATION bin)

测试PCL

我用的是Clion,具体咋配置Clion的C++环境就不多说了。

// 网络测试用例
#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 std;
 
int main(int argc, char **argv) {//柱型点云测试
  cout << "Test PCL !" << endl;
  pcl::PointCloud<pcl::PointXYZRGB>::Ptr point_cloud_ptr (new pcl::PointCloud<pcl::PointXYZRGB>);
  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) {
      pcl::PointXYZRGB point;
      point.x = cos (pcl::deg2rad(angle));
      point.y = sin (pcl::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;
 
  pcl::visualization::CloudViewer viewer ("pcltest测试");

  viewer.showCloud(point_cloud_ptr); 
  while (!viewer.wasStopped()){ };
  return 0;
}

结果应该是显示出下面的图形。如果没有bug,显示的却不是这个,滑动一下滚轮并且点击左键拖动一下。

pclinstall2.png

参考文章

[1] PCL1.12+VTK7.1.1 && Ubuntu20.04.3+VSCode https://zhuanlan.zhihu.com/p/461910839


Comment