最近开始做研究生毕设,有一部分因为没有什么好的思路,就把以前用过的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. TCP socket和web socket的区别

    小编先习惯性的看了下某中文百科网站对Web Socket的介绍,觉得很囧.如果大家按照这个答案去参加BAT等互联网公司的前端开发面试,估计会被鄙视. 还是让我们阅读一些英文材料吧. 让我们直接看sta ...

  2. linux查看主板型号及内存硬件信息,及硬盘测速

    查看主板型号: sudo  dmidecode |grep -A16 "System Information$" 内存槽及内存条: sudo  dmidecode |grep -A ...

  3. 一劳永逸部署项目:通过tomcat加载环境变量

    一劳永逸部署项目:通过tomcat加载环境变量 转载自:https://blog.csdn.net/u010414666/article/details/46499953 一.说明 项目中经常会用到x ...

  4. impdp导入expdp导出数据库实例

    impdp命令在cmd下直接用,不必登录oracle.只能导入expdp导出的dmp文件. expdp导出的时候,需要创建 DIRECTORY 导出什么表空间,导入也要什么表空间. 导出什么用户,导入 ...

  5. 20165318 《Java程序设计》实验一(Java开发环境的熟悉)实验报告

    20165318 <Java程序设计>实验一(Java开发环境的熟悉)实验报告 一.实验报告封面 课程:Java程序设计        班级:1653班        姓名:孙晓暄    ...

  6. bn两个参数的计算以及layer norm、instance norm、group norm

    bn一般就在conv之后并且后面再接relu 1.如果输入feature map channel是6,bn的gamma beta个数是多少个? 6个. 2.bn的缺点: BN会受到batchsize大 ...

  7. 横向滑动页面,导航条滑动居中的 js 实现思路

    最近在做新闻咨询页的项目,各个新闻频道通过横向滑动切换,顶部的导航active栏需要跟着切换到对应频道,并且active到达中部时,要一直处在中间. 类似效果就是uc浏览器<UC头条>的导 ...

  8. 初识Qt涂鸦板绘制

    1.新建一个Qt Gui应用,项目名称为myPalette,基类选择为QMainWindow,类名设置为MainWindow. 2.在mainwindow.h头文件中添加以下代码,同时添加#inclu ...

  9. 两个Integer比较大小需要注意的误区

    通过下面的例子,来了解integer比较大小需注意的几点. eg.定义Integer对象a和b,比较两者结果为:a不等于b Integer a = 1; Integer b = 1; if(a==b) ...

  10. CAN--UART的协议转换器

    CAN--UART的协议转换器 //------------------------------------------------------//  CAN <==> UART的协议转换 ...