Ubuntu 配置安装PCL

Ubuntu 配置安装PCL

之前一直在Mac下开发,现在入手Ubuntu,也借此学习一下Linux下的源码编译安装过程.

PCL简介

PCL(Point Cloud Library)是在吸收了前人点云相关研究基础上建立起来的大型跨平台开源C++编程库,它实现了大量点云相关的通用算法和高效数据结构,涉及到点云获取、滤波、分割、配准、检索、特征提取、识别、追踪、曲面重建、可视化等。支持多种操作系统平台,可在Windows、Linux、Android、Mac OS X、部分嵌入式实时系统上运行。如果说OpenCV是2D信息获取与处理的结晶,那么PCL就在3D信息获取与处理上具有同等地位,PCL是BSD授权方式,可以免费进行商业和学术应用。

具体步骤

1. 安装依赖项

apt-get update && \
		apt-get install -y libflann-dev \
		libvtk5-dev \
		libqhull-dev

2. 下载源码

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

3. 配置安装

cmake -DCMAKE_BUILD_TYPE=Release .
make -j 8 # job数量根据自身的CPU核数定
sudo make install

4. 安装目录

  • 通过apt安装的头文件(如vtk)在/usr/include里面
  • 通过apt安装的动态链接库(如vtk)在/usr/lib里面
  • 自己编译安装的头文件(如PCL)在/usr/local/include里面
  • 自己编译安装的动态链接库(如PCL)在/usr/local/lib里面

以上文件夹在写CMakeLists.txt使用find_package()命令都可以找到,这里列出来只是为了更加了解细节,或者有的代码补全工具会需要库的具体路径

测试

main.cpp

#include <pcl/common/common_headers.h>
#include <pcl/visualization/pcl_visualizer.h>

boost::shared_ptr<pcl::visualization::PCLVisualizer> simpleVis(
    pcl::PointCloud<pcl::PointXYZ>::ConstPtr cloud)
{
    boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer(
        new pcl::visualization::PCLVisualizer("3D Viewer"));

    viewer->setBackgroundColor(0, 0, 0);
    viewer->addPointCloud<pcl::PointXYZ>(cloud, "sample cloud");
    viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 3, "sample cloud");
    viewer->addCoordinateSystem(1.0);
    viewer->initCameraParameters();
    return (viewer);
}

int main(int argc, char **argv)
{ 
    // 创建点云
    pcl::PointCloud<pcl::PointXYZ>::Ptr basic_cloud_ptr(
        new pcl::PointCloud<pcl::PointXYZ>);

    for (float z(-1.0); z <= 1.0; z += 0.05)
    {
        for (float angle(0.0); angle <= 360.0; angle += 5)
        {
            // 底面为椭圆
            pcl::PointXYZ basic_point;
            basic_point.x = 0.5 * cosf(pcl::deg2rad(angle));
            basic_point.y = sinf(pcl::deg2rad(angle));
            basic_point.z = z;
            basic_cloud_ptr->points.push_back(basic_point);
        }
    }

    basic_cloud_ptr->width = (int)basic_cloud_ptr->points.size();
    basic_cloud_ptr->height = 1;

    boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer;
    viewer = simpleVis(basic_cloud_ptr);
    while (!viewer->wasStopped())
    {
        viewer->spinOnce(100);
        boost::this_thread::sleep(boost::posix_time::microseconds(100000));
    }
    return 0;
}

CMakeLists.txt

cmake_minimum_required(VERSION 3.0)
project(demo01)

set(CMAKE_CXX_STANDARD 11)

find_package(PCL REQUIRED)
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})

add_executable(demo01 main.cpp)
target_link_libraries (demo01 ${PCL_LIBRARIES})

命令

cmake .
make
./demo01

运行结果

小结

之前配环境都是apt一键解决,在Mac上也是brew一下,没有从源码编译过,这次实验可以说更进一步了解了底层细节,学到很多.

Linux上开发还是挺舒服的~

posted @ 2018-07-20 11:59  潇雨危栏  阅读(3464)  评论(0编辑  收藏  举报