VS2017+PCL1.8.1+Cmake(3.6 or later)环境配置

来源:互联网 发布:家用健身器材 知乎 编辑:程序博客网 时间:2024/06/05 09:47

身为博士,最近转了方向,毅然从光学设计跳到SLAM,其中辛苦心酸不能提。庆幸的是二位导师的体谅和理解,中国好老板,同样放在心里。

话不多说,要学习SLAM,高博等大神提供的解决方案都是在linux系统下。对linux系统不是很熟悉的同学,或者像我这般转专业的小白可能会很头疼。

我目前的思路是现在windows系统下把点云玩起来,同时学习linux系统,并慢慢搭建slam环境。这二者并不相互违背。就像很多同学利用matlab去了解算法,以及算法中各项参数的作用,在工程实践中则选择c,or c++提高效率一样。对我来说,这是理论和实践并行学习的最好策略了。当然,如有大神指教,m18729348406@163.com,万分感激。


好啦,说了这么多,不过是给自己看,记录下此刻的心境和思路,方便来日反思。


进入正题,vs2017+pcl1.8.1+Cmake(3.6 or later)。

参考博客:

http://unanancyowen.com/en/pcl181/     点击打开链接        内含PCL1.8.1ALL-in-one Installer MSVC2017 (x32,x64)以及PCL1.8.1 PDB MSVC2017(x32,x64)


https://segmentfault.com/a/1190000003988970 

其中vs2017的安装较为简单,这里就不再赘言了。

1.软件角色

pcl是点云算法库。
pcl-pdb是pcl的数据库文件。
cmake是用来为你所编写的程序进行环境配置及生成项目文件。有blog提供不使用Cmake的解决方案,但是从使用上将,建议安装Cmake,这样就不需要每次编写项目的时候还要兼顾配置环境变量。毕竟包含目录,库目录,以及链接器--输入--附加依赖项中加入lib文件是一件并不轻松的工作。
visual studion是windows的开发工具,将经过cmake生成的项目文件执行产生可执行文件。
qt是一个图形库,这里需要安装qt是因为pcl中有一个第三库vtk中涉及qt库中的函数。某些VTK库中的函数对qt有依赖,因此虽然目前不知道用处,但是还是安装了QT。

2.安装PCL1.8.1






由于OpenNI2需要另外安装,其安装路径应在$PCL-ROOT/PCL 1.8.1\3rdParty\OpenNI2下。之后一路点下一步就好。

3.安装Cmake



然后一路next,安装非常简单。


4.利用Cmake进行编译

准备工作

首先在pcl1.8.1文件夹下新建文件夹,可命名为example。如下图:


注意,确定自己安装的文件夹包含cmake文件,且内含PCLConfig.cmake、PCLConfigVersion.cmake如下图:


否则,cmake将一直报错。

在example文件下建立两个文件夹,如图:


cmake-bin是空文件夹,方便编译后的文件存储。

source文件包括:


其中Cmakelists.txt中包含下列cmake程序(可直接粘贴复制):

cmake_minimum_required(VERSION 2.6 FATAL_ERROR)project(pcd_write_test)find_package(PCL 1.3 REQUIRED COMPONENTS common io)include_directories(${PCL_INCLUDE_DIRS})link_directories(${PCL_LIBRARY_DIRS})add_definitions(${PCL_DEFINITIONS})add_executable(pcd_write_test pcd_write.cpp)target_link_libraries(pcd_write_test ${PCL_COMMON_LIBRARIES} ${PCL_IO_LIBRARIES})
代码的具体含义可参考:
http://pointclouds.org/documentation/tutorials/using_pcl_pcl_config.php
点击打开链接
同时在vs2017中新建项目,名称设为pcd_write  其中输入测试代码,如:

#include <pcl/visualization/cloud_viewer.h>  #include <iostream>//标准C++库中的输入输出类相关头文件。  #include <pcl/io/io.h>  #include <pcl/io/pcd_io.h>//pcd 读写类相关的头文件。  #include <pcl/io/ply_io.h>  #include <pcl/point_types.h> //PCL中支持的点类型头文件。  int user_data;void viewerOneOff(pcl::visualization::PCLVisualizer& viewer){viewer.setBackgroundColor(1.0, 0.5, 1.0);   //设置背景颜色  }int main(){pcl::PointCloud<pcl::PointXYZRGBA>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZRGBA>);pcl::io::loadPCDFile("test.pcd", *cloud);pcl::visualization::CloudViewer viewer("Cloud Viewer");     //创建viewer对象  viewer.showCloud(cloud);viewer.runOnVisualizationThreadOnce(viewerOneOff);system("pause");return 0;}

将其保存在PCL1.8.1/example/source文件夹下


开始编译

打开Cmake,


值得注意的有几点:

1.将where is the source code和where to build the binaries 如图设置好后,会弹出选择VS版本的选项,选择 VS 15 2017 win64.可根据自身版本进行选择。

2.框格中有红色字体报warning不用慌,只要如下:


出现Configuring done 和Generating done之后,即说明Cmake编译成功。二者的作用如下:


这个时候,就可以愉快的进入Cmake-bin文件夹,此时该文件下下应为:


设置的名称不同,sln文件名和vcvproj的文件名会和图中不一致,不必纠结,可对应即可。

打开Sln文件,进行vs2017.

如出现如下error1:

无法启动程序D:\build\debug\ALL_BUILD 系统找不到指定文件;

处理办法为:

将project_inliers工程设置为启动项目    找到项目右击--设为启动项目。

将project_inliers工程设置为启动项目

error2:

error LNK2019: 无法解析的外部符号

处理办法为:

在VC++目录--库目录中加入PCL1.8.1/lib文件;

在附加依赖项中加入:pcl下 的lib文件名:

如:

pcl_common_debug.lib
pcl_common_release.lib
pcl_features_debug.lib
pcl_features_release.lib
pcl_filters_debug.lib
pcl_filters_release.lib
pcl_io_debug.lib
pcl_io_ply_debug.lib
pcl_io_ply_release.lib
pcl_io_release.lib
pcl_kdtree_debug.lib
pcl_kdtree_release.lib
pcl_keypoints_debug.lib
pcl_keypoints_release.lib
pcl_ml_debug.lib
pcl_ml_release.lib
pcl_octree_debug.lib
pcl_octree_release.lib
pcl_outofcore_debug.lib
pcl_outofcore_release.lib
pcl_people_debug.lib
pcl_people_release.lib
pcl_recognition_debug.lib
pcl_recognition_release.lib
pcl_registration_debug.lib
pcl_registration_release.lib
pcl_sample_consensus_debug.lib
pcl_sample_consensus_release.lib
pcl_search_debug.lib
pcl_search_release.lib
pcl_segmentation_debug.lib
pcl_segmentation_release.lib
pcl_stereo_debug.lib
pcl_stereo_release.lib
pcl_surface_debug.lib
pcl_surface_release.lib
pcl_tracking_debug.lib
pcl_tracking_release.lib
pcl_visualization_debug.lib
pcl_visualization_release.lib


可能有同学会问:如何一下得到上述的lib文件名称,而不是一个一个的粘贴复制:

有方法如下:

分别粘贴复制静态链接库名到文本甚是麻烦,故通过批处理来完成


例如要获取目录中E:\CPlusPlusLib\VTK_debug\VTK2008\lib\vtk-5.8下的所有静态链接库文件名并存储至文本.txt,方法如下: 
1、win+r 
2、输入:cmd回车 
3、输入:cd /d E:\CPlusPlusLib\VTK_debug\VTK2008\lib\vtk-5.8 回车 
4、输入:dir /b *.lib*>0.txt 回车 

在0.txt文件中即可获得。



按照上述方法运行编译后的pcd_write.cpp文档不报错,且出现:



即为安装 成功,至于为什么是这三种颜色,而不是test.pcd 中的兔子

 因为没有点云的数据库啊!!!


原创粉丝点击