pcl

基于faro SDK 读取fls原始文件

匿名 (未验证) 提交于 2019-12-03 00:41:02
1 #define _SCL_SECURE_NO_WARNINGS 2 #define _CRT_SECURE_NO_WARNINGS 3 4 #include <iostream> 5 // #include <atlsafe.h> 6 // #include <windows.h> 7 // #include <cassert> 8 #include <pcl/point_cloud.h> 9 #include <pcl/io/pcd_io.h> 10 #include <pcl/visualization/pcl_visualizer.h> 11 12 using namespace std; 13 typedef pcl::PointXYZRGBA PointT; 14 typedef pcl::PointCloud<PointT> PointCloudT; 15 16 #ifdef _WIN64 17 // Yes - type is ‘win32‘ even on WIN64! 18 #pragma comment(linker, "\"/manifestdependency:type=‘win32‘ name=‘FARO.LS‘ version=‘1.1.701.2‘ processorArchitecture=‘amd64‘ publicKeyToken=

视觉里程计 Visual Odometry

匿名 (未验证) 提交于 2019-12-03 00:39:02
首先分析include头文件下的slamBase.h文件 # pragma once // 各种头文件 // C++标准库 #include <fstream> #include <vector> #include <map> using namespace std; // Eigen #include <Eigen/Core> #include <Eigen/Geometry> // OpenCV #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/calib3d/calib3d.hpp> // PCL #include <pcl/io/pcd_io.h> #include <pcl/point_types.h> #include <pcl/common/transforms.h> #include <pcl/visualization/cloud_viewer.h> #include <pcl/filters/voxel_grid.h> // 体素滤波器 进行降采样 #include <pcl/filters/statistical_outlier_removal.h> // 统计滤波器 去除 孤立点 // 类型定义 typedef pcl:

深度相机同时保存深度图和彩色图

匿名 (未验证) 提交于 2019-12-03 00:33:02
空格键保存深度图和彩色图,办公室环境三维重建 /home/yake/catkin_ws/src/pcl_in_ros/src/16_01Kinect_rgb_depth_saver.cpp #include <ros/ros.h> #include <sensor_msgs/PointCloud2.h> #include <boost/foreach.hpp> #include <sensor_msgs/Image.h> #include <sensor_msgs/image_encodings.h> #include <image_transport/image_transport.h> #include <image_geometry/pinhole_camera_model.h> #include <cv_bridge/cv_bridge.h> // OpenCV2 #include <opencv2/opencv.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/highgui/highgui.hpp> // PCL #include <pcl/point_cloud.h> #include <pcl_conversions/pcl_conversions.h> #include <pcl/io

LOAM_velodyne学习(一)

匿名 (未验证) 提交于 2019-12-03 00:29:01
在研读了论文及开源代码后,对LOAM的一些理解做一个整理。 文章:Low-drift and real-time lidar odometry and mapping 开源代码:https://github.com/daobilige-su/loam_velodyne 系统概述 LOAM的整体思想就是将复杂的SLAM问题分为:1. 高频的运动估计; 2. 低频的环境建图。 Lidar接收数据,首先进行Point Cloud Registration,Lidar Odometry以10Hz的频率进行运动估计和坐标转换,Lidar Mapping以1Hz的频率构建三维地图,Transform Integration完成位姿的优化。这样并行的结构保证了系统的实时性。 接下来是代码的框架图: 整个算法分为四个模块, 相对于其它直接匹配两个点云的算法,LOAM是通过提取特征点进行匹配之后计算坐标变换。具体流程为:ScanRegistration 提取特征点并排除瑕点; LaserOdometry从特征点中估计运动,然后整合数据发送给LaserMapping;LaserMapping输出的laser_cloud_surround为地图;TransformMaintenance订阅LaserOdometry与LaserMapping发布的Odometry消息,对位姿进行融合优化

PCL 可视化(写的很好)

匿名 (未验证) 提交于 2019-12-03 00:27:02
可视化(visualization)是利用计算机图形学和图像处理技术,将数据转换图像在屏幕上显示出来,并进行交互处理的的理论,方法和技术, pcl_visualization库建立了能够快速建立原型的目的和可视化算法对三维点云数据操作的结果。类似于opencv的highgui例程显示二维图像,在屏幕上绘制基本的二维图形,库提供了以下几点: (1)渲染和设置视觉特性的方法(如颜色、大小、透明度等)在PCL任意n维的点云数据集pcl::PointCloud<T> format (2)在屏幕上绘制基本的3D形状的方法(例如,圆柱体,球体,线,多边形等),无论是从点集或参数方程; (3)一个直方图可视化模块(pclhistogramvisualizer)的二维图; (4)大量的几何和颜色处理pcl::PointCloud<T> datasets pcl::RangeImage . pcl::visualization::CloudViewer CloudViewer实现创建点云可视化的窗口,以及相关的可视化功能 Public Member Functions CloudViewer ~CloudViewer showCloud ColorCloud::ConstPtr 可视化窗口显示cloud对应的点云,考虑到多个点云用键值cloudname来限定是哪一个点云 wasStopped

PCL配置即常见问题

匿名 (未验证) 提交于 2019-12-03 00:26:01
把与VS版本对应PCL的AllInOne包下载下来。要下对安装包,需要了解安装包的命名的含义,以下面的一个AllInOne包的名字为例。 PCL-1.8.0-AllInOne-msvc2013-win32.exe 其中,1.8.0表示的PCL的版本号,然后2013表示这个安装包只适用于VS2013中使用,其它VS版本不行,最后win32表示这个安装包只能用来开发32位的程序。 再以下面的安装包名字为例。 PCL-1.7.2-AllInOne-msvc2012-win64.exe 这个安装包是PCL1.7.2版本的,其只能用在VS2012上,然后使用在64位的VS项目开发中。 下载地址:http://www.zhangzscn.com/,http://unanancyowen.com/ 安装路径最好不要包括中文; 建议勾选上“AddPCLtothesystemPATHforallusers”; 安装时,会提示安装OpenNI,这个建议安装在PCL安装路径的3rdParty下的OpenNI2文件夹中。 去掉“预编译头(P)”前的勾 去掉“安全开发生命周期(SDL)检查(C)”前的勾。 根据当前需要编译的程序位数和传统的直接在“解决方案资源管理器”里选中项目右键设置项目属性的方式,不太灵活。这里以创建属性表的方式来配置VS。这个根据你当前需要生成的程序,往“属性管理器

PCL点云库:ICP算法(讲解很好带有图,作者研究很深入)

匿名 (未验证) 提交于 2019-12-03 00:26:01
Implementations .   ICP算法采用最小二乘估计计算变换矩阵,原理简单且具有较好的精度,但是由于采用了迭代计算,导致算法计算速度较慢,而且采用ICP进行配准计算时,其对待配准点云的初始位置有一定要求,若所选初始位置不合理,则会导致算法陷入局部最优。PCL点云库已经实现了多种点云配准算法: pcl::GeneralizedIterativeClosestPoint< PointSource, PointTarget > Class Template Reference pcl::IterativeClosestPoint< PointSource, PointTarget, Scalar > Class Template Reference pcl::IterativeClosestPointWithNormals< PointSource, PointTarget, Scalar > Class Template Reference pcl::IterativeClosestPointNonLinear< PointSource, PointTarget, Scalar > Class Template Reference pcl::JointIterativeClosestPoint< PointSource, PointTarget, Scalar >

点云的曲面法向量估计(PCL)

匿名 (未验证) 提交于 2019-12-03 00:22:01
表面法线是几何体表面的重要属性,在很多领域都有大量应用,例如:在进行光照渲染时产生符合可视习惯的效果时需要表面法线信息才能正常进行,对于一个已知的几何体表面,根据垂直于点表面的矢量,因此推断表面某一点的法线方向通常比较简单。然而,由于我们获取的点云数据集在真实物体的表面表现为一组定点样本,这样就会有两种解决方法: 使用曲面重建技术,从获取的点云数据集中得到采样点对应的曲面,然后从曲面模型中计算表面法线; 直接从点云数据集中近似推断表面法线。 本文将针对后一种情况进行讲解,已知一个点云数据集,在其中的每个点处直接近似计算表面法线。 确定表面一点法线的问题近似于估计表面的一个相切面法线的问题,因此转换过来以后就变成一个最小二乘法平面拟合估计问题。 因此估计表面法线的解决方案就变成了分析一个协方差矩阵的特征矢量和特征值(或者 PCA―主成分分析),这个协方差矩阵从查询点的近邻元素中创建。更具体地说,对于每一个点Pi,对应的协方差矩阵C,如下: 此处, k是点P i 邻近点的数目, 表示最近邻元素的三维质心, 是协方差矩阵的第个特征值, 是第j个特征向量。 下面利用PCL库编写程序计算一平面上各点的法向量和曲率,在三维空间坐标系中,平面的一般方程是A*x + B*y + C*z + D = 0,该平面的法向量是(A, B, C), 曲率为0。下面我们针对平面方程x + y + z = 1

PCL环境测试程序

匿名 (未验证) 提交于 2019-12-03 00:21:02
虽然之前装好了环境,也测试过了。但是记性真的差,没几个礼拜没搞就忘了…… 重新创建了一个文件夹( PCL_Learning )专门用于学习pcl了,现在写第一个程序,创建了一个工程( Test_environment ),开始吧。 KDevelop创建工程时会自动生成CMakeLists.txt文件。我们需要在里面添加pcl的内容。 CMakeLists.txt 内容如下: cmake_minimum_required (VERSION 2.6 FATAL_ERROR) project (test_environment) find_package (PCL 1.8 REQUIRED COMPONENTS common io) include_directories ( ${PCL_INCLUDE_DIRS} ) link_directories ( ${PCL_LIBRARY_DIRS} ) add_definitions ( ${PCL_DEFINITIONS} ) add_executable (test_environment main.cpp) target_link_libraries (test_environment ${PCL_COMMON_LIBRARIES} ${PCL_IO_LIBRARIES} ) 完成后需要编译,编译完成后继续主程序的编写。 2、main