pcl

10/03/2019 PCL-1.8.1 Ubuntu 16.04 boost 1.69 CUDA 9.0 installation

匿名 (未验证) 提交于 2019-12-02 23:06:17
cmake -DCMAKE_BUILD_TYPE=None -DBUILD_GPU=ON -DBUILD_CUDA=ON -DBUILD_gpu_kinfu=ON -DBUILD_gpu_kinfu_large_scale=ON .. 会遇到很多安装的问题, 在安装之前, 请依照以下网址依次修改文件: 1. https://github.com/Signafy/pcl/commit/fc50cc6f3d0c9d0f8366164f62b013e508b01f6f 2. https://github.com/PointCloudLibrary/pcl/pull/2212 3. https://github.com/PointCloudLibrary/pcl/pull/2181 4. https://github.com/PointCloudLibrary/pcl/pull/1929 修改之后, 即可顺利安装.

将PCD点云批量中心化

时光毁灭记忆、已成空白 提交于 2019-12-02 12:43:55
将PCD点云批量中心化 代码功能:将文件夹下的.pcd文件批量中心化。 # include <pcl/io/io.h> # include <pcl/io/pcd_io.h> # include <pcl/io/obj_io.h> # include <pcl/PolygonMesh.h> # include <pcl/point_cloud.h> # include <pcl/kdtree/kdtree_flann.h> # include <pcl/common/common.h> # include <pcl/io/vtk_lib_io.h> using namespace pcl ; using namespace pcl ; using namespace pcl :: io ; using namespace pcl :: console ; using namespace std ; void getFiles ( string path , vector < string > & files ) { //文件句柄 long hFile = 0 ; //文件信息 struct _finddata_t fileinfo ; string p ; if ( ( hFile = _findfirst ( p . assign ( path ) . append ( "\\*

对ORB-SLAM2添加稠密重建模块,ROS编译报错:fatal error: pcl/common/transforms.h: No such file or directory

房东的猫 提交于 2019-12-02 10:41:05
报错现象: fatal error: pcl/common/transforms.h: No such file or directory 解决办法: 在/home/bruce/study/slam/orb/point_map/Examples/ROS/ORB_SLAM2目录下打开CMakeLists.txt文件作如下修改,原版的ORB-SLAM2没有添加PCL库等信息,现在只需要添加进去即可。 find_package(PCL 1.9.1 REQUIRED ) #添加了稠密点云显示,用到了pcl库,要找到PCL库并添加进来 include_directories( ${PROJECT_SOURCE_DIR} ${PCL_INCLUDE_DIRS} ${PROJECT_SOURCE_DIR}/../../../ ${PROJECT_SOURCE_DIR}/../../../include ${Pangolin_INCLUDE_DIRS} ) link_directories( ${PCL_LIBRARY_DIRS} ) set(LIBS ${OpenCV_LIBS} ${EIGEN3_LIBS} ${Pangolin_LIBRARIES} ${PROJECT_SOURCE_DIR}/../../../Thirdparty/DBoW2/lib/libDBoW2.so $

[PCL] 3D特征点概述(1)

廉价感情. 提交于 2019-12-02 05:40:01
广泛使用的几何点特征的示例是下图的表面在查询点p处的估计曲率和法线。被认为是局部特征,因为它们使用由其k个最近点邻居提供的信息来表征点。 为了有效地确定这些邻居,输入数据集通常使用空间分解技术(八叉树或kd树)分割成更小的块( 上:kd-tree,下:八叉树),然后执行在那个空间里最近点搜索。 接下来介绍几种特征点性质属性,以及应用的场景领域。 PFH (Point Feature Histogram) 一种局部特征点。 输入格式: (1)由一组带有方向的点P组成的点云。有方向意味着所有点都具有正常的N(法向量)。 (2)此功能不使用颜色信息。 工作原理: (1)迭代点云P中的点。 (2)对于输入云中的每个点Pi(i是迭代索引),收集具有半径r的Pi周围的球体内的所有相邻点。 这个集合称为Pik(k为k个邻居) (3)循环关于Pik中的两对点,比如p1和p2。 法线与矢量p1-p2的角度较小的点是源点ps,另一个是目标点pt。 (4)计算四个特征,它们一起表示目标点pt处的平均曲率。 将它们组合并放入等效的直方图箱中。 简短概述: (1)为P中的所有的点云计算法线。 (2)估计P中的点Pi的特征:获取围绕点Pi(Pik)的半径r中的k个邻居的集合。在两点之间计算四个特征。相应的bin增加1.生成点特征直方图(PFH)。 (3)将得到的直方图组与其他点云的组进行比较,以便找到对应关系

PCL1.8.1 匹配

谁都会走 提交于 2019-12-01 18:41:30
iterative closest point 最基础的使用,代码示例如下: #include <iostream> #include <pcl/io/pcd_io.h> #include <pcl/point_types.h> #include <pcl/registration/icp.h> pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_in (new pcl::PointCloud<pcl::PointXYZ>); pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_out (new pcl::PointCloud<pcl::PointXYZ>); *cloud_out = *cloud_in; /*将cloud_out点云平移[0.7, 0, 0] * 最终得到的旋转平移矩阵变成: * 1 0 0 0.7 * 0 1 0 0 * 0 0 1 0 * 0 0 0 1 */ for (std::size_t i = 0; i < cloud_in->points.size (); ++i) cloud_out->points[i].x = cloud_in->points[i].x + 0.7f; pcl::IterativeClosestPoint<pcl::PointXYZ, pcl::PointXYZ>

PCL1.8.1 匹配

一个人想着一个人 提交于 2019-12-01 18:36:13
iterative closest point 最基础的使用,代码示例如下: #include <iostream> #include <pcl/io/pcd_io.h> #include <pcl/point_types.h> #include <pcl/registration/icp.h> pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_in (new pcl::PointCloud<pcl::PointXYZ>); pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_out (new pcl::PointCloud<pcl::PointXYZ>); *cloud_out = *cloud_in; /*将cloud_out点云平移[0.7, 0, 0] * 最终得到的旋转平移矩阵变成: * 1 0 0 0.7 * 0 1 0 0 * 0 0 1 0 * 0 0 0 1 */ for (std::size_t i = 0; i < cloud_in->points.size (); ++i) cloud_out->points[i].x = cloud_in->points[i].x + 0.7f; pcl::IterativeClosestPoint<pcl::PointXYZ, pcl::PointXYZ>

PCL点云库(Point Cloud Library)简介

泄露秘密 提交于 2019-12-01 17:30:28
什么是 PCL PCL ( Point Cloud Library )是在吸收了前人点云相关研究基础上建立起来的大型跨平台开源 C++ 编程库,它实现了大量点云相关的通用算法和高效数据结构,涉及到点云获取、滤波、分割、配准、检索、特征提取、识别、追踪、曲面重建、可视化等。支持多种操作系统平台,可在 Windows 、 Linux 、 Android 、 Mac OS X 、部分嵌入式实时系统上运行。如果说 OpenCV 是 2D 信息获取与处理的结晶,那么 PCL 就在 3D 信息获取与处理上具有同等地位, PCL 是 BSD 授权方式,可以免费进行商业和学术应用。 PCL 的发展与创景 PCL 起初是 ROS ( Robot Operating System )下由来自于慕尼黑大学( TUM - Technische Universität München )和斯坦福大学( Stanford University ) Radu 博士等人维护和开发的 开源项目,主要应用于机器人研究应用领域,随着各个算法模块的积累,于 2011 年独立出来,正式与全球 3D 信息获取、处理的同行一起,组建了强大的开发维护团队,以多所知名大学、研究所和相关硬件、软件公司为主,可参考图 1 。截止目前,发展非常迅速,不断有新的研究机构等加入,在 Willow Garage, NVidia, Google

PCL1.8.1 分割

不打扰是莪最后的温柔 提交于 2019-12-01 16:43:16
ModelOutlierRemoval 基于模型的点分割操作,将模型外的点从点云中剔除。 #include <iostream> #include <pcl/point_types.h> #include <pcl/filters/model_outlier_removal.h> pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>); pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_sphere_filtered (new pcl::PointCloud<pcl::PointXYZ>); //x^2 + y^2 + z^2 = 1 pcl::ModelCoefficients sphere_coeff; sphere_coeff.values.resize (4); sphere_coeff.values[0] = 0; sphere_coeff.values[1] = 0; sphere_coeff.values[2] = 0; sphere_coeff.values[3] = 1; pcl::ModelOutlierRemoval<pcl::PointXYZ> sphere_filter; sphere_filter