PCL1.8.1 VS2015 X64系统点云配置经验
最近接触了3D轮廓建模,pcl安装与使用。PCL已经广泛使用在各种轮廓扫描建模中,在机器人自主导航和ROS中都有很大用处。官网和论坛都有很多资料,但是很少看到有介绍在vs2015下配置PCL1.8.1(目前最新2018年)的经验分享,而这些涉及到PCL本身的安装配置,还有个人项目里的配置。在此做个经验分享交流。
主要难点在于lib的配置,源文件里如max min 等的修改,如果使用结合MFC来显示的话,还需要相应的头文件,模板文件,实现文件(.h .hpp .cpp).相关头文件,库文件路径及在工程属性里各项的设置!!!!
sensor_msgs::PointCloud2 ------------------------>pcl::PCLPointCloud2
下载相关文件
1.下载PCL-1.8.1-AllInOne-msvc2015-win32.exe。
https://github.com/PointCloudLibrary/pcl/releases/tag/pcl-1.8.1
二、Windows7下安装步骤:
1.点击CL-1.8.1-AllInOne-msvc2015-win32.exe一键安装,可以默认也可以自己选择安装路径,如本文所选择的路径D:\Program Files;(放在D盘更好,避免有时没有权限修改或者移动C盘缺省文件!!!!);
2.在安装过程中,OpenNI2在安装时会弹出界面。其他教程中说可以自己选择路径(选择第一步的),但本人安装时并没有弹出该界面,而是默认安装,但安装位置不对,需要手动将错误的文件夹下的OpenNI2移到C:\Program Files\PCL;
3.等待一段时间,则安装完成。
注意事项:在安装点击“我接收(I)”之后弹出来的对话框中一定要选择第二项Add PCL to the systemPATH for all users:(如图)
三、系统配置步骤
1.点击win7的控制面板->系统->高级系统设置->在系统属性的“高级选项”卡下点击“环境变量”;
2.在系统子菜单里面找到“Path”,如图(这里面显示的C盘的安装):
3.点击编辑,依次加入
C:\Qt\4.8.0\bin;C:\Program Files (x86)\PCL 1.8.1\bin;%PCL_ROOT%\bin;%OPENNI2_REDIST%;C:\Program Files(x86)\PCL 1.8.1\3rdParty\FLANN\bin;C:\Program Files(x86)\PCL 1.8.1\3rdParty\Qhull\bin;C:\Program Files(x86)\PCL 1.8.1\3rdParty\OpenNI2\Tools;C:\Program Files(x86)\PCL 1.8.1\3rdParty\VTK\bin
注意,第一项在“一键安装”时就已经添加。
4.重启电脑
四、VS2015工程配置步骤
1.打开VS2015,创建新的win32控制台工程;
2.点击项目菜单的属性,如图:
3.在弹出的对话框中,
① 点击“包含目录”下拉箭头->编辑,添加文件路径:
C:\ProgramFiles (x86)\PCL 1.8.1\3rdParty\VTK\include\vtk-8.0
C:\ProgramFiles (x86)\PCL 1.8.1\3rdParty\VTK\include
C:\ProgramFiles (x86)\PCL 1.8.1\3rdParty\Qhull\include
C:\ProgramFiles (x86)\PCL 1.8.1\3rdParty\FLANN\include
C:\Program Files (x86)\PCL 1.8.1\3rdParty\Eigen\eigen3
C:\ProgramFiles (x86)\PCL 1.8.1\3rdParty\Boost\include\boost-1_64
C:\ProgramFiles (x86)\PCL 1.8.1\3rdParty\Boost\include\boost-1_64\boost
C:\ProgramFiles (x86)\PCL 1.8.1\3rdParty\Boost\include
C:\ProgramFiles (x86)\PCL 1.8.1\include\pcl-1.8
C:\ProgramFiles (x86)\PCL 1.8.1\include\pcl-1.8\pcl
完成后点击确定;
② 点击“库目录”下拉箭头->编辑,添加文件路径:
完成后点击确定;
4.点击连接器->输入->附加依赖项:
PCL1.8.0 的一些库文件为1.6.1或7.0lib。PCL1.8.1 的大部分库文件为1.6.4或8.0lib。点击下拉箭头->编辑,添加下列文件:
pcl_common_debug.lib
vtknetcdf_c++-gd.lib
pcl_features_debug.lib
pcl_filters_debug.lib
pcl_io_ply_debug.lib
pcl_io_debug.lib
pcl_kdtree_debug.lib
pcl_keypoints_debug.lib
pcl_ml_debug.lib
pcl_octree_debug.lib
pcl_outofcore_debug.lib
pcl_people_debug.lib
pcl_recognition_debug.lib
pcl_registration_debug.lib
pcl_sample_consensus_debug.lib
pcl_search_debug.lib
pcl_segmentation_debug.lib
pcl_stereo_debug.lib
pcl_surface_debug.lib
pcl_tracking_debug.lib
pcl_visualization_debug.lib
libboost_atomic-vc140-mt-gd-1_64.lib
libboost_bzip2-vc140-mt-gd-1_64.lib
libboost_chrono-vc140-mt-gd-1_64.lib
libboost_container-vc140-mt-gd-1_64.lib
libboost_context-vc140-mt-gd-1_64.lib
libboost_coroutine-vc140-mt-gd-1_64.lib
libboost_date_time-vc140-mt-gd-1_64.lib
libboost_exception-vc140-mt-gd-1_64.lib
libboost_fiber-vc140-mt-gd-1_64.lib
libboost_filesystem-vc140-mt-gd-1_64.lib
libboost_graph-vc140-mt-gd-1_64.lib
libboost_graph_parallel-vc140-mt-gd-1_64.lib
libboost_iostreams-vc140-mt-gd-1_64.lib
libboost_locale-vc140-mt-gd-1_64.lib
libboost_log-vc140-mt-gd-1_64.lib
libboost_log_setup-vc140-mt-gd-1_64.lib
libboost_math_c99-vc140-mt-gd-1_64.lib
libboost_math_c99f-vc140-mt-gd-1_64.lib
libboost_math_c99l-vc140-mt-gd-1_64.lib
libboost_math_tr1-vc140-mt-gd-1_64.lib
libboost_math_tr1f-vc140-mt-gd-1_64.lib
libboost_math_tr1l-vc140-mt-gd-1_64.lib
libboost_mpi-vc140-mt-gd-1_64.lib
libboost_numpy3-vc140-mt-gd-1_64.lib
libboost_numpy-vc140-mt-gd-1_64.lib
libboost_prg_exec_monitor-vc140-mt-gd-1_64.lib
libboost_program_options-vc140-mt-gd-1_64.lib
libboost_python3-vc140-mt-gd-1_64.lib
libboost_python-vc140-mt-gd-1_64.lib
libboost_random-vc140-mt-gd-1_64.lib
libboost_regex-vc140-mt-gd-1_64.lib
libboost_serialization-vc140-mt-gd-1_64.lib
libboost_signals-vc140-mt-gd-1_64.lib
libboost_system-vc140-mt-gd-1_64.lib
libboost_test_exec_monitor-vc140-mt-gd-1_64.lib
libboost_thread-vc140-mt-gd-1_64.lib
libboost_timer-vc140-mt-gd-1_64.lib
libboost_type_erasure-vc140-mt-gd-1_64.lib
libboost_unit_test_framework-vc140-mt-gd-1_64.lib
libboost_wave-vc140-mt-gd-1_64.lib
libboost_wserialization-vc140-mt-gd-1_64.lib
libboost_zlib-vc140-mt-gd-1_64.lib
flann-gd.lib
flann_cpp-gd.lib
flann_cpp_s-gd.lib
flann_s-gd.lib
qhull_d.lib
qhullcpp_d.lib
qhullstatic_d.lib
qhullstatic_r_d.lib
qhull_p_d.lib
qhull_r_d.lib
vtkalglib-8.0-gd.lib
vtkChartsCore-8.0-gd.lib
vtkCommonColor-8.0-gd.lib
vtkCommonComputationalGeometry-8.0-gd.lib
vtkCommonCore-8.0-gd.lib
vtkCommonDataModel-8.0-gd.lib
vtkCommonExecutionModel-8.0-gd.lib
vtkCommonMath-8.0-gd.lib
vtkCommonMisc-8.0-gd.lib
vtkCommonSystem-8.0-gd.lib
vtkCommonTransforms-8.0-gd.lib
vtkDICOMParser-8.0-gd.lib
vtkDomainsChemistry-8.0-gd.lib
vtkexoIIc-8.0-gd.lib
vtkexpat-8.0-gd.lib
vtkFiltersAMR-8.0-gd.lib
vtkFiltersCore-8.0-gd.lib
vtkFiltersExtraction-8.0-gd.lib
vtkFiltersFlowPaths-8.0-gd.lib
vtkFiltersGeneral-8.0-gd.lib
vtkFiltersGeneric-8.0-gd.lib
vtkFiltersGeometry-8.0-gd.lib
vtkFiltersHybrid-8.0-gd.lib
vtkFiltersHyperTree-8.0-gd.lib
vtkFiltersImaging-8.0-gd.lib
vtkFiltersModeling-8.0-gd.lib
vtkFiltersParallel-8.0-gd.lib
vtkFiltersParallelImaging-8.0-gd.lib
vtkFiltersPoints-8.0-gd.lib
vtkFiltersProgrammable-8.0-gd.lib
vtkFiltersSelection-8.0-gd.lib
vtkFiltersSMP-8.0-gd.lib
vtkFiltersSources-8.0-gd.lib
vtkFiltersStatistics-8.0-gd.lib
vtkFiltersTexture-8.0-gd.lib
vtkFiltersTopology-8.0-gd.lib
vtkFiltersVerdict-8.0-gd.lib
vtkfreetype-8.0-gd.lib
vtkGeovisCore-8.0-gd.lib
vtkgl2ps-8.0-gd.lib
vtkhdf5-8.0-gd.lib
vtkhdf5_hl-8.0-gd.lib
vtkImagingColor-8.0-gd.lib
vtkImagingCore-8.0-gd.lib
vtkImagingFourier-8.0-gd.lib
vtkImagingGeneral-8.0-gd.lib
vtkImagingHybrid-8.0-gd.lib
vtkImagingMath-8.0-gd.lib
vtkImagingMorphological-8.0-gd.lib
vtkImagingSources-8.0-gd.lib
vtkImagingStatistics-8.0-gd.lib
vtkImagingStencil-8.0-gd.lib
vtkInfovisCore-8.0-gd.lib
vtkInfovisLayout-8.0-gd.lib
vtkInteractionImage-8.0-gd.lib
vtkInteractionStyle-8.0-gd.lib
vtkInteractionWidgets-8.0-gd.lib
vtkIOAMR-8.0-gd.lib
vtkIOCore-8.0-gd.lib
vtkIOEnSight-8.0-gd.lib
vtkIOExodus-8.0-gd.lib
vtkIOExport-8.0-gd.lib
vtkIOExportOpenGL-8.0-gd.lib
vtkIOGeometry-8.0-gd.lib
vtkIOImage-8.0-gd.lib
vtkIOImport-8.0-gd.lib
vtkIOInfovis-8.0-gd.lib
vtkIOLegacy-8.0-gd.lib
vtkIOLSDyna-8.0-gd.lib
vtkIOMINC-8.0-gd.lib
vtkIOMovie-8.0-gd.lib
vtkIONetCDF-8.0-gd.lib
vtkIOParallel-8.0-gd.lib
vtkIOParallelXML-8.0-gd.lib
vtkIOPLY-8.0-gd.lib
vtkIOSQL-8.0-gd.lib
vtkIOTecplotTable-8.0-gd.lib
vtkIOVideo-8.0-gd.lib
vtkIOXML-8.0-gd.lib
vtkIOXMLParser-8.0-gd.lib
vtkjpeg-8.0-gd.lib
vtkjsoncpp-8.0-gd.lib
vtklibharu-8.0-gd.lib
vtklibxml2-8.0-gd.lib
vtklz4-8.0-gd.lib
vtkmetaio-8.0-gd.lib
vtkNetCDF-8.0-gd.lib
vtkoggtheora-8.0-gd.lib
vtkParallelCore-8.0-gd.lib
vtkpng-8.0-gd.lib
vtkproj4-8.0-gd.lib
vtkRenderingAnnotation-8.0-gd.lib
vtkRenderingContext2D-8.0-gd.lib
vtkRenderingContextOpenGL-8.0-gd.lib
vtkRenderingCore-8.0-gd.lib
vtkRenderingFreeType-8.0-gd.lib
vtkRenderingGL2PS-8.0-gd.lib
vtkRenderingImage-8.0-gd.lib
vtkRenderingLabel-8.0-gd.lib
vtkRenderingLIC-8.0-gd.lib
vtkRenderingLOD-8.0-gd.lib
vtkRenderingOpenGL-8.0-gd.lib
vtkRenderingVolume-8.0-gd.lib
vtkRenderingVolumeOpenGL-8.0-gd.lib
vtksqlite-8.0-gd.lib
vtksys-8.0-gd.lib
vtktiff-8.0-gd.lib
vtkverdict-8.0-gd.lib
vtkViewsContext2D-8.0-gd.lib
vtkViewsCore-8.0-gd.lib
vtkViewsInfovis-8.0-gd.lib
vtkzlib-8.0-gd.lib
opengl32.lib
完成后点击确定;
注意:上面为在debug下运行的文件,如果想在release下运行,则将其中的gd改成r即可!!!
后面就可以使用PCL相关的定义,数据类型,和算法等等!! 主要可以用在相机或激光传感器扫描的数据中,生成相应的3D环境!!下图为结合激光测距做出的3D图形。
如有相关技术交流,可联系:[email protected]