最近开始做研究生毕设,有一部分因为没有什么好的思路,就把以前用过的PCL点云搬出来,重新用源码装了一遍PCL,一开始装的过程中没什么大问题,在后面用的时候碰到了很多小问题,特此记录。

1.PCL版本问题

如果你用ROS的话,安装的时候会自带PCL的1.7版本,不过本着用源码安装的习惯,我们还是从github上下载源码来自行安装。目前最新版是1.9,我自己安装1.9没碰到什么版本冲突问题,也就是在后面跑代码的时候会提示可能与已安装的1.7版本有冲突,不过是warning我也就懒得管了,不知道可否删掉ROS中自带的那个PCL。但在跟同学的交流过程中,发现她以前源码安装1.8版本的时候跟自带的1.7冲突,至于到什么地步也没问,这么看来确实有版本的问题,但是网上那么多源码安装的教程,应该问题不严重。

2.CMakelists里指定PCL的版本

因为电脑里PCL有两个版本,我们想用的是1.9,因此需要指定版本。一般按照下面的写就足够了。

find_package(PCL 1.9 REQUIRED)
INCLUDE_DIRECTORIES(${PCL_INCLUDE_DIRS})
LINK_DIRECTORIES(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})

不需要专门set安装的路径,最后一行的add_definitions一定要加上,不然会报错。最后记得在target_link_libraries里加上${PCL_LIBRARIES}。

3.关于VTK的版本问题

如果用到了PCL中visualization的模块,需要配置一下VTK,其实电脑里(ROS?)自带了6.2版本的VTK,但是在安装PCL的时候提示版本有问题,我就用源码装了一遍VTK的最新的8.2版本,然后可以安装成功,我也就没管了。后来我想把算出来的点云可视化出来,用了PCL的visualization::CloudViewer函数,然后就报VTK的错,找不到VTK的库,没有对应函数之类的问题。在网上找了好久才发现,是VTK版本太新,7.1以后的版本有几个函数名变了。

GetTupleValue -> GetTypedTuple
SetTupleValue -> SetTypedTuple
InsertTupleValue -> InsertTypedTuple
InsertNextTupleValue -> InsertNextTypedTuple

最简单的办法就是重新下一个旧版本的VTK自己编译,于是我在gitlab上找到了对应的代码,我建议下.zip格式的包,我一开始下的tar.gz解压后总是安装失败。然后删掉之前最新版安装遗留下来的文件,慎用rm *。重新安装之后就没有显示的问题了。

4.CMakelists.txt里需要添加的组件

一开始我只在find_package里加了PCL 1.9 REQUIRED,后来发现程序经常crash,我用的是QT,搞不太明白,后来看了一下Compile Output,给我警告io features可能被disabled,于是我就改了一下find_package

find_package(PCL 1.9 REQUIRED COMPONENTS common io)

还有

target_link_libraries(generate_point_cloud ${PCL_LIBRARIES} ${PCL_COMMON_LIBRARIES} ${PCL_IO_LIBRARIES})

这下程序就没有crash了。

先记这么多,以后如果有别的小问题会继续更新。

[学习笔记]PCL使用心得的更多相关文章

  1. 学习笔记---C++析构函数心得

    1.动态分配的对象的析构函数 class man{ public: man(){ cout<<"man begin"<<endl; }; ~man(){ c ...

  2. 有关c#的学习笔记整理与心得

    [ 塔 · 第 一 条 约 定 ] 整理c#:Array Arraylist List Hashtable Dictionary Stack Queue等 Array 的容量是固定的,而 ArrayL ...

  3. Zim学习笔记 (Fedora)

    俗话说好记性不如烂笔头, 对于一个搞IT的人来说最好的笔毫无疑问就应该是电脑了, 但最好的本呢? 之前一直在找一款适合自己的笔记软件, 找来找去只有Zim适合自己, 当然对于有编辑器之神之美誉的ema ...

  4. Learning ROS for Robotics Programming Second Edition学习笔记(七) indigo PCL xtion pro live

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS forRobotics Pro ...

  5. SpringBoot学习笔记(7):Druid使用心得

    SpringBoot学习笔记(7):Druid使用心得 快速开始 添加依赖 <dependency> <groupId>com.alibaba</groupId> ...

  6. 从实例学习 Go 语言、"并发内容" 学习笔记及心得体会、Go指南

    第一轮学习 golang "并发内容" 学习笔记,Go指南练习题目解析.使用学习资料 <Go-zh/tour tour>.记录我认为会比较容易忘记的知识点,进行补充,整 ...

  7. Java学习笔记心得——初识Java

    初识Java 拿到这本厚厚的<Java学习笔记>,翻开目录:Java平台概论.从JDK到TDE.认识对象.封装.继承与多态...看着这些似懂非懂的术语名词,心里怀着些好奇与担忧,就这样我开 ...

  8. 3年的坚持,最终造就著作——《Learninghard C#学习笔记》

    前言 起初开始写博文主要是记录学习过程中对学到内容的自我总结和理解,同时也希望本人的理解可以帮助到一些走在学习路上的朋友.但是令我没有想到的是,我总结的博文得到了广大园友的评论和支持,正是博友的支持, ...

  9. 《CSS 设计指南》学习笔记 一

    本篇文章是对这几天看完 Charles Wyke-Smit 的 <CSS 设计指南> 后的一些学习笔记与心得,笔者好像是大一的时候开始接触网页设计,由于并不是计算机专业的,所以所有都是自己 ...

随机推荐

  1. codeforces 17D Notepad

    codeforces 17D Notepad 题意 题解 TBD 更新模板(phi.欧拉降幂) 代码 #include<bits/stdc++.h> using namespace std ...

  2. Substring Search

    查找子字符串 Introduction 在长度为 N 的文本里寻找长度为 M 的模式(子串),典型情况是 N >> M. 这个应用就很广泛啦,在文本中寻找特定的模式(子串)是很常见的需求. ...

  3. html5 js 游戏的一篇博客 貌似不错

    http://blog.csdn.net/lufy_legend/article/details/8888787

  4. React Native 基础报错及解决方案记录

    刚开始上手RN,碰到很多坑,记录一下.碰到问题多去看看github上面的issue! 启动命令react-native run-ios报错 1.:xcrun: error: unable to fin ...

  5. 前端统计利器:Sentry & Matomo

    今天主要说下两款前端统计工具的使用,Sentry & Matomo.以下主要是统计代码接入方式,因此使用前提是你已经在自己的服务器上搭建好了Sentry和Matomo的服务器 Sentry统计 ...

  6. kubernetes 认证授权

    每个Kubernetes集群都有一个集群根证书颁发机构(CA). 集群中的组件通常使用CA来验证API server的证书,由API服务器验证kubelet客户端证书等.为了支持这一点,CA证书包被分 ...

  7. 20145203盖泽双 《Java程序设计》第五周学习总结

    20145203盖泽双 <Java程序设计>第五周学习总结 教材学习内容总结 1.Java中所有错误都会被打包为对象,运用try.catch,可以在错误发生时显示友好的错误信息,还可以在捕 ...

  8. IPython学习笔记(一)

    开始看<利用python进行数据分析>这一本书,记录下学习的点滴,对于每一个小知识点记录得过于详细,但是好记性不如烂笔头,动动手还是记得比较深刻点. 1.Tab自动补齐 输入an后按Tab ...

  9. Python学习笔记系列——读写文件以及敏感词过滤器的实现

    一.读文件 #打开文件,传入文件名和标识符,r代表读 f= open('\\Users\ZC\Desktop\zc.txt','r') #调用read方法一次性读取文件的全部内容,存入内存,用str对 ...

  10. linux文件系统初始化过程(2)---挂载rootfs文件系统

    一.目的 本文主要讲述linux3.10文件系统初始化过程的第一阶段:挂载rootfs文件系统. rootfs是基于内存的文件系统,所有操作都在内存中完成:也没有实际的存储设备,所以不需要设备驱动程序 ...