版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第2章PCL入门本章依次详细介绍了在Windows下安装配置PCL开发环境、 Linux下配置搭建PCL开发环境,以及其他操作系统下 用户如何配置,最后利用实例介绍如何建立自己的 PCL应用程序。对于Windows和Linux用户可以跳过与 自己所用系统无关的小节,最后利用CMmke编程模式 建立实例应用程序,适用于各个平台的用户。阅读完 本章,读者可以掌握PCL开发环境搭建的流程和注意 事项及关键配置选项,以及如何开发自己基于PCL的 应用程序。注意:本章假设读者熟悉CMake> svn、make和C+编译 链接等工具和基础知识。本章各小节目录2.1 Windows下配置安装PCL开发
2、环境2.2 Linux下配置搭建PCL开发环境2.3其他操作系统2.4建立自己的PCL应用程序2.1 Windows下配置安装PCL开发环境PCL为了方便Windows用户的安装,提供预编译的安 装文件,但是只限于用户使用Visual Studio2010或 Visual Studio2008,如果用户采用其他编译器或长 期采用PCL作为开发平台或者因为编译包不是对应最新的源代码,需要使用最新功能的用户,这些 情况下就需要自己从源码安装。本节依次详细介 绍这两种情况,笔者建议初学者最好使用安装包 安装方式,步骤较简单,简单几步即可体验PCL的 强大功能,如果读者为Linux用户,可以阅读2.2
3、节Linux下配置安装PCL开发环境,但如果是从源码编译则需要从2丄2小节阅读,项进行了详细的解释。因为该小节对PCL的Cmake选2.1.1从预编译包搭建开发环境1. 准备工作(1) 获取All in one安装包,PCL提供了配置为Visual Studio 2010的32位和64位、Visual Studio2008的32位和 64位下的该安装包,该包包含了PCL中所使用全部第 三方编译包,除了 Qt编译包。(2) 获取All in one包对应的PDB文件包,该包用于后期 单步调试时使用。(3) 获取PCL源码包。(4) 安装开发工具Visual Studio2010或Visual S
4、tudio2008 和CMake开发工具,需要CMake版本大于283,主要 考虑到PCL中用到了高版本的一些宏定义,低版本不 兼容。注意:/downloads/windows.html可 下载All in one安装包和其对应的PDB文件包,源码包 可在/downloads/处下载。以上所 有包都在本书提供的光盘中对应第2章的文件夹中可 以找到,本章编写时以2012年2月22日官方发布的 版本为准。如果用户安装了RGBD相关设备驱动与中间 件,则需要卸载OpenNI相关的驱动、中间件,避免与 All in o
5、ne提供的驱动与中间件冲突,如果没有,忽略 此项,OpenNI、RGBD相关的内容后续章节I/O有介绍。 图24所示为准备工作最终需要的文件。2.安装安装过程很简单(笔者配置为VisualC+2008 ExpressEdition> CMake2.8.5> 32位系统),单击安装上一步所准备的文件 PCL-1.5.1-AlllnOne-masvc2008-win32.exeo运行如图2-2图2-8所示,按照提示默认安装即可,如 果需要改变安装路径到非C盘,后面CMake配置时需要自行设置各个第三方库的路径以及PCL头文件与链接 库路径,因为PCL中提供的CMake相关搜索路径默认只
6、 会在C盘下搜索相关的库。PCL-1.5.1 AlllnOne Win32 安at定安件:出囲趣1 0 3rdty Librari葩 所需空低:1.5GB44、I A<|_J 2J安叭S件,并林筍选你不希51安件.厚击 曲 a) 耐安<23 pci F :鼻珈-PCL-1. 5. l-Ania0ne-win32*XalljzoftSystem-<上気| 載滴©安装组件库选择界面时,可以通过是否打勾来确定用户自己需要的模块相关的头文件和库文件,对于首次使 用PCL的用户直接默认,全选即可。63 pel滲鶴馬要安装的组件,并躺勾选你不届望安皴的組件.单击安騷CT)】幵&
7、#187;1安选择你想要安裟aPCL-1.5. l-AHIn0ne-wiii32w的那空功选定安灌的组件: 所超间:1 5GBB 03rEd Party Librt<|BoostQhull1 Fltnn3 VTK3 OpenNI_一 綁休的临指世到 麵梓之上 (I5IO1 它的描迩.41 ±1Hull softeih 辺如 <上T E)厂虫装a I取消©成功安装之后,安装目录下有6个文件夹3rdParty> bin、 cmake> include> lib> share,其中 3 rd Party 内部有6 个 开源包预编译库(Boost
8、、Eigen> Flann> OpenNI> Qhull、VTK),如图2-9所示,预编译中文件夹中包含 了安装包对应的编译器版本编译的链接库以及include 头文件等,bini录下包含编译好的PCL相关的.DLL文 件与EXE文件,此处编译好的EXE文件有很多是示例, 用户可以自行运行测试,例如和kinect相关的kinfu重 建工具、PCD可视化工具pedviewer等。CMake内包含 开发包相关的Cmake配置文件,在建立工程时,利用此文件中包含的宏寻找第三方包和PCL相应的include 和lib目录,include文件夹包含了PCL的头文件,lib文件夹包含PC
9、L相关的丄IB文件、share文件夹包含帮助文 将PDB解压文件复制到安装好的PCL目录下bin文件夹中, 如图2J0所示,以实现后期单步PCL源码调试,至此就 在Windows卞准安聂曾己置好PCL开发环境还需要最后一件等。步进行测试确保安装的正确性。pci 1.5.1 pdb*nnvcZ008 Win32文样(E) MKD 蚕駅刃 收工JUD 丽帧D O , / »* 文栋j > X >9 函 . btnanesUI r oneM5VC 2008 (32bt)pd-l .5. l-pd>rr»vc2006Mn32itw Q E:PCLbooW.7&qu
10、ot;boundary jKUmanon.debug. | Progt.>fi( £rebug C'dtabse 6.62OK8.Qausan.noise.debuQ.pdb rodcn Debug C*oiahaw ,ntoiaI<omp_dwd_enor jjotug, P>S<wn C>ebug Zabxe 5,0121duster .extraction jtebug pdbFbogram tiebug Wabasc5.57? «=、conwUna2_pw<sjxd_d»b ProgratA DebuQ 3皿 眩
11、 1328 »Bconvvt jxd_«a_blnary_(itbProqwn Debug Watae h?16KRexamptecheckJjMWJsjva.J Program Debj Dteba$enop Jo JuJ.debug pdbekh.debug.pdb! Pr W” Zmjq DeUbase| 利Ctaboce3.测试安装是否成功建立两个文件,源程序文件project_inliers.cpp和Cmake配 置文件CMakeLists.txt,如图2-1所示,其内容复制链 接 /documentation/tutor
12、ials/proiect inliers.php#project-inliers 中对应的代码及 CMakeLists 的代码(此处也可以从光盘本章中test文件夹中复制得到 对应的文件),放在同一文件夹source下,在source 同一目录下建立cmake-bin文件夹。3rdParty6 bincmakecmake-bi nincludeb libshareUninstall.exe打开Cmake程序,设置源文件目录与编译目录,如图2- 12所示。选择对应的编译器,如图2-13所示,笔者选择对应visual studio 9 2008,单击Finish按钮,再单击配置与生成按 f,如图2
13、-14所示,即可得到工程文件,如图2J5所 Zjl OSpci fy the aerator for thi 5 project'isgl Studio 9 20C6O Uro daFault ntiv« compilersSpecify native conpilersO Specify toclchcin £ila Eor crozs-compjling Specify options for cross-compilia?找不到OpenNI,虽然我查看了环境变量存在,没办法,我是自己加进去的参考文献:find-openniOPENNIJNCLUDEDIRS O
14、PENNLUBRARY nr> ArniMn i mr mn D:/OpenNI/Include D:/OpenNI/Li b/openNI.lib r. inti 1 c 1 /:»l J. /.l 1 uCgcolA CMake 55.2 DPCL 15.1/cnwke-bi-iAlo Took Options MdpYK»t« im th« Rftrc cod» D:/PCL I 5 l/”urceVK»t <o buiLd binar t »' D /?CL 1.5 l/ctlkf blTiNam
15、eValueCMAKE_CONnGURAnCN_TYPE$ CMAKE.INSTAU.PREFIX ErGEN_tNCLUD£.DIRS nANN.INClUDE.DIRS PLANN.LIBRARY aANN.UBRARY.OEBUG OPENNIJNauDE-OIRS OPENNI.UBRARY PCUAPPSJNCLUDE.D1R PCk.COMMON_INO.UDE.DlR PCV.D1RDebug;Reka5e;MinSizffRel;RdWithDebIn*oCProgram Files (xB6)/project_inlier5DPCL 1.5. l/3rdParty/
16、Eigen/hdudeDPCL 1.5.1/3rdParty/Flann/includeDyPCL 1.5.1/3rdParty/Rdnn/1ib/flann_cpp_s.libDyPCL 1.5.1/3rdP8rty/Rannib/flann.cpp.$-,-OOpenNI/lndudeDOpenNIAib/openNIJibD7PCL 1.5.1/ncludc/pd-1.5DyPCL 1.5.1/include/pcl.l.5DPCL 1.5.VcmakeSearch:<5r卯elAdvanced &» Add Entry"-tryh*eK CoT
17、7;f:cure to np«14te end 4isplay ma bdlges ia r*d. then press GmerHe to ceTieriteselected bnil6 files. can ike-ben3文件(£) m(D MWXJKD WthOD|Om J/、«»文税X *9 Mkttt(Q) |uJ E:pa bookexaftc>tepro>ect rto$camte4w AU BULO.vcproi1 r.cmafejrtrtal.cmato=*rrj 盜;MX0CMeCache.M一project .nier
18、s.rinprojectjnlers.vcpro)K>&GmOx-七卜匕 Pro疽.>SJ 47IB n| 0Dfje*e £enerote C»irr*nt Gmet肛m* 'SriI Stndi c- Q 2005for- X_FILTERSleokiryg for Kn._SEQff!nATIIlwkioa for XL VIS(TUI2A2ICWlookiog for H1_FEMORESlooking for PCI_STOFACE looking for PCL_REGISTRATII leokina for PCI XIYK5IXT
19、S Ink二8 for 乂匚血CKDiG looking for PCI_APPSFound PCL: optliLzed;D:/PCL 1.5.1 /3rdParcy/Booac/1 it»/lIbtoca.ayaceB-vco-dd- 1 ConflOTTl»7Geaezacg dcae ZERO.CHECK.vcproj 七卜X " M皿139 KB打开工程文件编译链接生成EXE文件,如图2-16所示。打开cmd.exe,到编译输岀的project_inliers.exe文件目录下运行该程序文件,可 以看到oE!Wm刨IMEME拙旳* WW2“ A -J &
20、amp; ")住.output fron: ftJdierot eftI Xo>yri(ht IXiakmcB ;别' X习 0、.口為<£ fTBTHTrC) licriofl CorporaDctt All r>(htv r«i«rvtdIdirD>b卯IbtnhQt Ea¥«41ix maxi fest I crvofl Q) Yinchvi Q) I«teure« Compiler V«rc> 6 1 6723 1 I Xopyri <hl C)Crpr
21、atim All rrotrvti.i Bo&ld loc saved at PtL book'txBl.八Dfomt inl4Ter”frbgI Xr o iu I b dsU3crsrtdrini3trator>D:S>cdPCL 1.5.1xPCLl.S.i>cd cnake-bing 0 &kip>tdPCLD:XPCLCloud before projection:(2812S 577.H94 197930828.225 599.631 491.3?S 358.688 917.-138 842.563 764.5 178.281 879
22、.531 727.531Cloud after1.28125828.125358.6881.5.1 Xcrirtke-binDelmg>projectin 1 iet*x .exe525.844 311.281 projection: 577.694 0599.031 «917.438 07645 178.281 0727.531 525.844 Hp:PCI» 1.5.1 crwJ<c-binPch<ig>,需要安装KinectSDK 并 且需要 Kinect摄像 头吧!对于使用类kinect设备的用户可以使用bin目录下的kinect_viewe
23、r_cuda_release.exe 测试是否配置好 OpenNI 相关断驱动塞 运行测试结果如上图所示。至此就完 成了PCL在Windows上的开发环境搭建,用户可以自行 体验官方网站提供的大量实例代码了,如果用户只是 使用稳定的PCL版本,就可以直接去2.4节阅读如何建 立自己的PCL应用程序了。2丄2用第三方预编译包从源码搭建开发环境如果是除Visual Studio之外的第三方开发环塚2.1.2从源码搭建开发环境从源码搭建开发环境是指读者需要自行编译链接第三方库,然后按照2丄2小节所介绍的编译安装PCL库。所以在这里只介绍如何从第三方库的源码编译链接得到第三方库,后续编译安装测试PCL
24、与2丄2小节一样。2.2 Linux下配置搭建PCL开发环境对于Linux用户,搭建PCL开发环境同样有两种选择, 一是基于定期更新维护的PCL开发包,二是通过源 码编译搭建PCL开发环境,前者目前只限于Ubuntu, Debian和Fedora版本的Linux,后者需要用户自行 编译所有的第三方库,再编译PCL,对于初级用户 较困难,主要是各个库版本之间的兼容性必须选 择官方测试过的版本。2.2.1预编译包搭建1. Ubuntu上安装目前通过PPA支持Ubuntu(Lucid, Maverick, Natty, Oneiric)系统,其安装命令为:sudo add -apt - reposi
25、tory ppa:v- launchpad -jochen sprickerhof- de/ pcisudo apt 一 get updatesudo apt 一 get install libpcl -all2.2.2从源代码安装对于未提供预编译安装包的Linux版本的用户需要自行从 源代码编译生成PCL开发环境。2.3其他操作系统目前PCL还提供对Mac OS的支持2.4建立自己的PCL应用程序PCL开发模式采用CMake工具来进行开发,所有应用 程序源码可以通过CMake跨平台在不同的开发工 具下使用,所以本小节内容适合Linux和Windows 等系统的用户。本节利用一个简单的工程演示
26、基 于PCL的应用程序的CMake开发模式。2.4.1先决条件假设用户已经在机器上下载、编译并安装了PCL,如果 没有安装PCL请参考本章前面小节。2.4.2工程设置首先建立放源文件的文件夹source,将其放在/PATH/TO/MY/GRAND/PROJECT 目录下,在source文件夹下, 创建右为pcd_write.cpp的单独的cpp文件(从/docuinentation/tutorials/writing ped. Dhp下载或者从本书提供的CD中复制),然后在该文件夹 中新建一个名为CMakeLists.txt的文件,内容如下:cmake
27、_minimumequired(VERSION 2.6 FATAL_ERROR) project(MY_GRAND_PROJECT)find_package(PCL 1.3 REQUIRED COMPONENTS common io) inlcude_directories($PCL_INCLUDE_DIRS) link_directories($PCL_LIBRARY_DIRS) add_definitions($PCDEFINITIONS) add_executable(pcd_write_test pcd_write.cpp)target_link_libraries(pcd_write
28、_test $PCL_COMMON_LIBRARIES $PC l_IO_LIBRARIES)下面,让我们解读这段CMakeLists.txt中的代码: cmake_minimumequired(VERSION 2.6 FATAL_ERROR) 这是对CMake版本的最低要求,由于做的是非常基础的 工程,不需要CMake2.8或者更高版本中的功能。p roject(MY_G RAN D_PROJECT)这一行为工程命名,同时CMake会自动产生一些有用的 CMake变量,例如源代码目录路径变量名为(MY_GRAND_PROJECT_SOURCE_DIR ),工程存储目 录变量名为(MY_GRA
29、ND_PROJECT_BINARY_DIR),这 些都是CMake在ft部根据丄面定义陥工程茗称自动生 成的,不需要用户定义,而用户只需要利用project(XX) 宏即可引发其他变量的内部定义。findpackage(PCL 1.3 REQUIRED COMPONENTS comm on io)这行要求该工程依赖PCL最低1.3的版本,并且该版本需要至少包含common和I/O两个模块,即在Cmake配置生 成工程文件时,必须找到符合要求的PCL库相关模型 所在的库和头文件路径,这里的REQUIRED意味着如果 对应的库不能找到,贝'JCmake配置过程将完全失败, 因为PCL是模块
30、化的,也可以作如下的要求:一个组件:find_package(PCL 1.3 REQUIRED COMPONENTS io) 多个组件:find_package(PCL 1.3 REQUIRED COMPONENTS io com mon)所有组件:find_package(PCL 13 REQUIRED)下面语句是利用CMake的宏完成对PCL的头文件路径和链 接路径变量的配置和添加,即如果缺省下面几句,在 生成的过程文件编译时会提示找不到相关头文件错误, 箜者在链接的时候岀现无法解析的外部符号等错误提 zj Oinclude_directories($PCLJNCLUDE_DIRS) li
31、nk_directories($PCL_LIBRARY_DIRS) add_definitions($PCL_DEFINITIONS) 在配置CMake时,当CMake找到了安装的PCL,下面相关 的包含文件、链接库路径变量等就会自动设置:PCL_FOUND:如果找到了PCL,被设置为1,否则不设置。PCL_INCLUDE_DIRS:被设置成PCL安装头文件和依赖头文件的目 录。PCL_LIBRARIES:被设置成所建立和安装的PCL库的文件名。PCL_LIBRARY_DIRS:被设置成PCL库和第三方依赖文件所在的目 录。PCL_VERSION:所找到的PCL的版本。PCL_COMPONEN
32、TS:列出所有可用组件。PCL_DEFINITIONS:列出所需要的预处理器定义和编译器标志。 为了让CMake知道包含到自己工程中的外部头文件,需要使用include_directories()宏,在实例中为 PCLJNCLUDEDIRS,精确地包含了我们所需要的PCL 相关的头文牟 因此CMake会自动根据找到的PCL安装 目录自动搜索PCL所有可能包含的目录。add_executable(pcd_write_test pcd_write.cpp)该匂告诉CMake,義们正狂图从番个源文件_pcd_write.cpp来新建一个名为pcd_write_test的可执行 文件,CMake会注意到后缀(在Windows平台上为.exe, 在unix平台上为空)和权
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 海员内部等级制度
- 混凝土公司内部审核制度
- 上海行健职业学院《自动驾驶概论》2024-2025学年第二学期期末试卷
- 煤矿企业调度室内部管理制度
- 监控中心内部稽核制度
- 监理内部培训管理制度
- 监理部内部物品管理制度
- 科学工作内部制度
- 科技公司内部制度
- 稽核流程内部控制制度
- 2026年小学四年级下册劳动教育教学计划
- 酒店客房员工考核制度
- 2026年内蒙古商贸职业学院单招职业技能测试题库附答案详解(夺分金卷)
- 2026年春季学期学校红领巾广播站工作计划及栏目设置表更新通知
- 小儿静脉血栓栓塞症诊疗指南
- 2026云南昆明巫家坝商业运营管理有限公司校园招聘8人笔试备考题库及答案解析
- 五年级数学下册期末真题卷(人教版成都锦江区)
- 培训学校理事会监督制度
- 2026年中煤一局集团有限公司招聘备考题库及一套完整答案详解
- (2025年)机械操作手安全培训试题及答案
- 泸州泸天化化工园区总体规划(2022-2035)
评论
0/150
提交评论