pcl的初步使用(ROS)

ROS里面已经预装好了pcl,和一些与pcl之间的转换,我们接下来看看如何在ros里面使用pcl.。

总的来说,PCL包含了一个很重要得到数据结构,叫PointCloud,这是一个模板类,把点的类型作为模板参数。

下面是最重要的在点云里面的公共域

header 这个域是pcl::PCLHeader类型和指定点云的获取时间。

points:这个域是std::vector<PointT,..>类型,是点云存储的容器。PointT是类模板参数。

width:这个域指定点云的宽度在组织一个图像的时候,否则只有一个。

height:这个域指定点云的高度,没有指定则只有一个。

is_dense:这个域指定点云是否包含无效值(infinite或者NaN)

sensor_origin_:这个域是Eigen::Vector4f 类型,它定义 了传感器的获取姿势就一个区域的转换而言。

sensor_orientation_:这个域是Eigen::Quaternion类型,他定义了sensor作为一个旋转的角度而言。

了解了点云的数据结构以后,下面就可以了解不同点云的类型,pcl是怎么工作的,已及pcl与ROS间的关系。


不同的点云类型

前面所说的,pcl::PointCloud包含一个域,它作为点的容器,这个域是PointT类型的,这个域是PointT类型的是pcl::PointCloud类的模板参数,定义了点云的存储类型。PCL定义了很多类型的点,下面是一些最常用的:

pcl::PointXYZ 这是最简单的点的类型,存储着点的x,y,z信息。

pcl::PointXYZI:这个类型的点是和前面的那个很相似的,但是他也包含一个域描述了点的密集程度。另外还有两个其他的标准的特殊的点的类型:第一个是pcl::InterestPoint,它有一个域去存储长处而不是密集度。pcl::PointWithRange,存储了点的范围(深度).

pcl::PointXYZRGBA:这个类型的点存储了3D信息同时和RGB与Alpha(透明度)

pcl::PointXYZRGB

pcl::Normal:这是一个最常用的点的类型,它代表了给定点的 曲面法线(normal翻译为法线有点奇怪)和曲率的测量。

pcl::PointNormal:这个类型和前面那个一样。只不过它多了坐标(x,y,z)。他的变体有PointXYZRGBNormal和PointXYZINormal,就像名字所说的一样,前者包含颜色,后者包含密集度。


除了以上这些常用的点的类型,还有很多 标准的其他的PCL类型,比如PointWithViewpoint,MomentInvariants,Boundary,PrincipalCurvatures,Histogram.更重要的是在PCL里面除了这些类型,用户还可以自己定义自己的类型。


PCL里面的算法

PCL用一个很特别的设计模式贯穿整个库去定义点云处理算法。总体来说,上面这些类型的算法是高度配置的,为了开发他们的潜能,库必须要提供一个机制对用户来指定哪些参数是需要的,哪些是默认的。

为了解决这个问题,PCL的开发者决定去使每个算法属于一个特定共同点下的同层次的类。这个方式允许PCL开发者通过派生和添加参数值的方式,复用存在的算法。它也允许用户去提供参数值,剩余的是默认值。下面是一小段代码当使用PC

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值