pcl

SLAM拾萃(1):octomap

半城伤御伤魂 提交于 2020-01-26 01:56:42
前言   大家好,时隔多年之后,我又开始了博客旅程。经历了很多事情之后呢,我发现自己的想法真的很简单:好好读书做课题,闲下来时写写博客,服务大家。所以我会继续写SLAM相关的博客。如果你觉得它对你有帮助,那是最好不过的啦!写作过程中得到了许多热心读者的帮助与鼓励,有些读者还成了要好的朋友,在此向大家致谢啦!关于SLAM,读者也会有很多问题。由于我个人精力和学力都有限,无法一一回答,向大家说声抱歉!有些共同的问题,我肯定会在博客里介绍的!   前两天刚从珠海开会回来,与中山大学的同学们聚在一起玩耍,很开心!   《一起做》系列已经结束,事实上它是我以前探索过程中的一些总结。虽然仍然有很多令人不满意的地方,不过相信读了那个系列,读者应该对SLAM的流程有一定的了解了。尤其是通过代码,你能知道许多论文里没讲清楚的细节。在这之后,我现在有两个规划。一是对目前流行的SLAM程序做一个介绍,沿着《视觉SLAM实战》往下写;二是介绍一些好用的开源工具/库,写成一个《SLAM拾萃》。我觉得这两部分内容,对读者了解SLAM会有较大的帮助。当然,如果你对我的博客有任何建议,可以在下方评论或给我发邮件。   本篇是《SLAM拾萃》第一篇,介绍一个建图工具:octomap。和往常一样,我会介绍它的原理、安装与使用方式,并提供例程供读者学习。必要时也会请小萝卜过来吐槽。(小萝卜真是太好用了

ubuntu 安装PCL point cloud library

可紊 提交于 2020-01-25 13:23:25
ubuntu 安装 PCL 安装所需依赖 安装 PCL 测试时若出现,cannot find -lvtkproj4错误 注意:apt-get 使用的是清华源 安装所需依赖 sudo apt-get update sudo apt-get install git build-essential linux-libc-dev sudo apt-get install cmake cmake-gui sudo apt-get install libusb-1.0-0-dev libusb-dev libudev-dev sudo apt-get install mpi-default-dev openmpi-bin openmpi-common sudo apt-get install libflann1.8 libflann-dev sudo apt-get install libeigen3-dev sudo apt-get install libboost-all-dev sudo apt-get install libvtk5.10-qt4 libvtk5.10 libvtk5-dev sudo apt-get install libqhull* libgtest-dev sudo apt-get install freeglut3-dev pkg-config sudo apt

c++ pcl绘制SLAM轨迹(3D点)

隐身守侯 提交于 2020-01-24 05:36:40
这段代码主要功能:   - 读取保存有pose的文件,文件格式为:timestamp tx ty tz qw qx qy qz;   - 第3个参数dataset_i表示测试的第i个数据集的轨迹,代码中,直接将第i个数据集的groundtruth写死了.   - PCL绘制轨迹,用红色表示第一个文件中的轨迹,绿色表示第二个文件中的轨迹. **局部效果图: ** 代码如下: #include <iostream> #include <fstream> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <Eigen/Geometry> #include <boost/format.hpp> // for formating strings #include <pcl/point_types.h> #include <pcl/io/pcd_io.h> #include <pcl/visualization/pcl_visualizer.h> #include <string> using namespace std; int main( int argc, char** argv ) { if(argc != 4){ cerr << "Error! ./joinMap

pcl出错:添加windows.h就编译不过的解决

最后都变了- 提交于 2020-01-22 19:48:07
vs2019加载点云文件时,对点云数据处理,每次添加头文件**#include<windows.h>**,就会报一堆的错: 之前有参考其他人的解决方案, 降低SDK版本 ,但是我的似乎作用不大,无奈只好点开错误尝试,点开错误:C2598,找到错误的文件,做出如下修改: 原来是: template static std::string generateHeader (const pcl::PointCloud &cloud, const int nr_points = std::numeric_limits::max ()); 修改为: template static std::string generateHeader (const pcl::PointCloud &cloud, const int nr_points = (std::numeric_limits::max) ()); 类似的错误做出同样的修改 即可。 大功告成!(对于初学者的我,改出一个错误,都觉得知足啊) 来源: CSDN 作者: 静语流年 链接: https://blog.csdn.net/ximulixi/article/details/104071991

C++编译那些事

徘徊边缘 提交于 2020-01-22 04:03:46
最近想从PCL库中继承类进行改写,然后遇到了很多问题,这里记录一下,自己是菜鸟,编译什么的都不太懂。 我们一般都是.cpp和.h的形式,PCL是在.h中定义,然后在.hpp中实现,.cpp的作用我现在也没搞明白,还有涉及预编译什么的,蒙; 从库的.h和.hpp分别复制了文件出来,命名成自己的,继承类也改了名: 原来的.h文件中B:A,C:B,一开始我只复制了C:B,并给C改了名,但是提示没有定义B,然后又复制了B:A,这时问题来了,B进行了重复定义,正确做法应该是include原来的.h文件,不要重定义B; 然后复制完.h文件后,记得最上面#ifndef语句必须要修改,不然这个.h文件不会起作用; 提示库里缺少一个.hpp文件,看usr/local中对应的文件夹下确实缺少这个文件,但是pcl自己的继承类就没有这个问题,不知道怎么规避的,没办法,使用cp指令拷贝进去; 同事说一般要么.cpp+.h,要么.hpp,不要.h和.hpp混用,然后我就删除了.hpp,把内容复制到.cpp,但是一直提示unreference,链接不到; 最后发现,模板类涉及二次编译,因此需要存放在同一个.h或者.hpp文件中,不能放到.cpp文件中,因此把函数的实现就放在.h文件的定义后面,也就是说直接实现就可以了; 来源: CSDN 作者: 历尽千帆_SLAM 链接: https://blog.csdn

Ransac 平面方程

ε祈祈猫儿з 提交于 2020-01-18 23:54:48
void do_ransac(pcl::PointCloud<PointT>::Ptr cloud) { pcl::PointIndices::Ptr inliers; pcl::ModelCoefficients::Ptr coefficients pcl::SACSegmentation<PointT> seg; //pcl::SACSegmentationFromNormals<PointT, pcl::Normal> seg; seg.setOptimizeCoefficients(true); //seg.setModelType (pcl::SACMODEL_NORMAL_PLANE); seg.setModelType(pcl::SACMODEL_PLANE); seg.setMethodType(pcl::SAC_RANSAC); seg.setDistanceThreshold(distance_threshold); seg.setMaxIterations(max_iterations); seg.setInputCloud(cloud); seg.segment(*inliers, *coefficients); } 求平面方程:ax+by+cz+d=0; cout<<"平面方程参数"<<coefficients->values[0]<

将三维点云投影到XOZ面上

六月ゝ 毕业季﹏ 提交于 2020-01-17 20:05:31
如图左边是原始的三维点云pcd格式,右边是投影到XOZ面上的数据,Y为0. #include <iostream> #include <pcl/filters/project_inliers.h> #include <pcl/io/pcd_io.h> #include <pcl/point_types.h> #include <pcl/filters/statistical_outlier_removal.h> #include <pcl/features/normal_3d.h> #include <pcl/segmentation/extract_clusters.h> #include <pcl/visualization/pcl_visualizer.h> #include <pcl/visualization/cloud_viewer.h> #include <pcl/ModelCoefficients.h> #include<cstdlib> #include <windows.h> #include <pcl/console/parse.h> #include <pcl/console/print.h> #include <pcl/correspondence.h> #include <boost/filesystem.hpp> using namespace pcl

PCL_几种点云滤波方法

坚强是说给别人听的谎言 提交于 2020-01-16 00:53:46
通常点云数据很大,同时带有噪声和离群点,在点云分析之前需要先进行滤波处理,学习郭浩老师的点云处理,总结几种滤波方法。 1. 直通滤波器 // 创建滤波器对象 pcl :: PassThrough < pcl :: PointXYZ > pass ; pass . setInputCloud ( cloud ) ; pass . setFilterFieldName ( "z" ) ; pass . setFilterLimits ( 0.0 , 1.0 ) ; //pass.setFilterLimitsNegative (true); pass . filter ( * cloud_filtered ) ; 2. VoxelGrid滤波器 创建三维体素栅格,将体素栅格内所有点的重心代替体素中其他点,实现下采样。 // 创建滤波器对象 pcl :: VoxelGrid < pcl :: PointXYZ > sor ; sor . setInputCloud ( cloud ) ; sor . setLeafSize ( 0.01f , 0.01f , 0.01f ) ; sor . filter ( * cloud_filtered ) ; 3.StatisticalOutlireRemoval滤波器 对每一个点的近邻进行一个统计分析,计算点到近邻点的距离

PCL两种方式的点云读写

会有一股神秘感。 提交于 2020-01-15 04:20:14
首先第一种读取方式使用reader #include <pcl/point_types.h>//PCL对各种格式的点的支持头文件 #include <pcl/io/pcd_io.h>//PCL的PCD格式文件的输入输出头文件 #include <pcl/kdtree/kdtree_flann.h> typedef pcl::PointXYZI PointT; int main (int argc, char** argv) { pcl::PointCloud<pcl::PointXYZI>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZI>); // Generate pointcloud data,新建指针cloud存放点云 pcl::PCDReader reader; reader.read<pcl::PointXYZI>("1.pcd", *cloud);//读取1.pcd文件,用指针传递给cloud。 std::cout << "Loaded " << cloud->width * cloud->height << " data points from test_pcd.pcd with the following fields: " << std::endl; for (std::size_t i = 0; i < cloud-

PCL错误总汇

空扰寡人 提交于 2020-01-14 02:49:27
文章目录 格式错误 格式错误 1.在函数‘_start’中:对‘main’未定义的引用 原因:编译的文件中,找不到main()这个函数 解决: 严格按照PCL默认格式写 int main(){ } 不要写成 int main(){ } 1.错误:pcl_viewer: symbol lookup error: pcl_viewer: undefined symbol [点击并拖拽以移动] 解决方法:sudo apt-get dist-upgrade https://answers.ros.org/question/227084/symbol-lookup-error-undefined-symbol/ 来源: CSDN 作者: low米 链接: https://blog.csdn.net/baoxiao7872/article/details/103946199