ROS学习笔记——PCL、点云 and ROS

*本篇简单介绍一下后续需要使用的PCL 

一、PCL 

PCL:point cloud library,即点云库。用于2D/3D的图像/点云信息处理。在PCL官网(http://pointclouds.org/)可以获取更多的信息。

对于3D点云处理来说,PCL完全是一个的模块化的现代C++模板库。其基于以下第三方库:Boost、Eigen、FLANN、VTK、CUDA、OpenNI、Qhull,实现点云相关的获取、滤波、分割、配准、检索、特征提取、识别、追踪、曲面重建、可视化等。

从算法的角度,PCL是指纳入了多种操作点云数据的三维处理算法,其中包括:过滤,特征估计,表面重建,模型拟合和分割,定位搜索等。每一套算法都是通过基类进行划分的,试图把贯穿整个流水线处理技术的所有常见功能整合在一起,从而保持了整个算法实现过程中的紧凑和结构清晰,提高代码的重用性、简洁可读。为了进一步简化和开发,PCL被分成一系列较小的代码库,使其模块化,以便能够单独编译使用提高可配置性,特别适用于嵌入式处理中。


二、点云

点云是用于表示多维点集合的数据结构,通常用于表示三维数据,在3D点云中,这些点通常代表基础采样表面的X,Y和Z几何坐标。下图是在rviz中可视化的点云数据:

ROS学习笔记——PCL、点云 and ROS_第1张图片


三、ROS和PCL

PCL起初就是ROS 下的一个开源项目,因而,在ROS中使用PCL处理外部信息是比较容易的。需要注意的就是数据格式之间的转换。

以激光雷达为例,雷达输出的初始数据为pcap格式文件,然后通过rosbag指令生成bag包,进一步将bag文件转换到pcd格式文件。每个pcd文件都是一帧数据,可以通过pcl_viewer命令查看pcd格式的文件:

ROS学习笔记——PCL、点云 and ROS_第2张图片

当然,这并没有结束,点云数据类型有以下几种:

ROS学习笔记——PCL、点云 and ROS_第3张图片

所以,如果我们要在ROS中使用点云数据,还需要将pcd格式文件或者其他格式转换到sensor_msgs下的合法类型,下篇将以一个示例详细说明。最后,一张图总结一下激光雷达的数据转换过程:

 

你可能感兴趣的:(ROS)