- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《点云库PCL学习教程》第4章 输入、输出(IO)概要1
第4章 输入、输出(IO);PCL中所有的处理都是基于点云展开的,利用不同的设备获取点云、存储点云等都是点云处理前后必须做的流程,PCL中有自己设计的内部PCD文件格式,为此,设计读写该格式以及与其他3D文件格式之间进行转化的接口类都是很必要的,目前PCL内部支持对常用的3D格式文件的打开和存储操作,以及与PCD内部格式之间的互相转化。
本章首先对PCL中支持的点云获取设备(如kinect)以及OpenNI开源框架作一个基本介绍,其次对PCL中的I/O模块及相关类进行简单说明,最后通过应用实例来展示如何对PCL中I/O模块进行灵活运用。;本章各小节目录;4.1 I/O涉及的设备及相关概念简介;4.1.1 OpenNI开源框架
OpenNI(开放式自然交互)来源于由业界领导的一个非营利性组织,创建于2010年11月,专注于提高和改善自然交互设备与应用软件的互操作能力。其官方网站于12月8号正式公开,主要成员之一是PrimeSense公司(Kinect的核心芯片正是由这家公司提供),其他成员还包括开发ROS的机器人公司Willow Garage,以及游戏公司Side-Kick等。
OpenNI是一个多语言、跨平台的框架,它定义了一套用于编写通用自然交互应用的API。OpenNI的主要目的就是形成标准的API,便于下面两个接口之间进行通信:
(1)视觉和音频传感器(用来感知周围环境信息)。;(2)视觉和音频感知中间件(用来对应用场景中所记录的音频和视觉数据进行分析与理解,例如能够接收一份可见的图像数据并返回从中检测到的手掌位置信息)。
OpenNI提供了一组基于传感器设备实现的API和另外一组由中间件组件实现的API,打破了传感器和中间件之间的依赖关系。这样,使用OpenNI API开发应用程序时就不需要在各种中间件模块的上层操作上浪费时间,可以做到一次编写、随处部署。OpenNI的这种分层设计机制允许中间件开发者可以直接基于最原始的数据格式编写算法,而不管这些数据是由何种传感器设备产生,同时也让传感器生产商制造的设备能用于任何OpenNI兼容的应用程序。
OpenNI的这套标准化API使得自然交互应用开发人员;可以利用由传感器输入并计算过的数据类型,很方便地跟踪处理现实生活中的场景(例如,可以是表示人体全???的数据,也可以是表示手的位置数据,或者仅仅是深度图里面的一组像素等)。这样可以保证编写应用程序的时候,不用考虑传感器或中间件供应商相关的细节。
图4-1展示了OpenNI框架的应用概念,分为三层:
(1)应用层:基于OpenNI实现的自然交互应用软件。
(2)中间件接口层:代表OpenNI本身,提供了传感器和中间件之间的交互接口。
(3)硬件设备层:列出了捕捉视觉和音频数据的多种硬件设备。;4.1.2 OpenNI兼容设备
OpenNI目前已成为PCL集成进来的第一个设备相关的第三方库,用来抓取OpenNI兼容设备中的点云数据。上节描述的OpenNI应用框架说明,只要底层的设备传感器设备与OpenNI兼容,都可以作为点云数据输入源,图4-2则展示了目前流行的OpenNI兼容设备。
其中,Primesense Reference Design、Microsoft Kinect和Asus XtionPro这3种摄像头设备均进行了OpenNI兼容性测试。选择其中任何一个设备进行点云数据采集,都可以经OpenNI处理后转化为标准数据供上层应用使用。如今,OpenNI已成为微软xbox360配件kinect在PC上的开源驱动中必须安装的一个API。;4.2 PCL中I/O模块及类介绍;4.2.1 I/O模块中类以及全局函数说明
I/O模块中目前共有21个类,随着RGDB设备的流行必将引入更多的设备相关的I/O扩展,以后有可能增加以下几类。
1. class pcl::FileReader
类FileReader定义了PCD文件的读取接口,主要用做其他读取类的父类。从它继承的子类必须实现自己的读取函数,即该类中的纯虚函数其继承关系如图4-3所示。但为了保持向后兼容,提供了FILE_V6版本文件读取的实现函数。;类FileReader关键成员函数:
virtual intreadHeader(const std::string file_name, sensor_msgs::PointCloud2 cloud, Eigen::Vector4f origin, Eigen::Quaternionf orientation, int file_version, int data_type, unsigned int data_idx, const int offset=0)=0
纯虚函数,定义读取点云文件头的接口函数,其参数意义:
file_
文档评论(0)