
3D 激光雷达开发
文章平均质量分 56
主要介绍3d激光雷达如何使用、如何优化
嵌入式-老费
计算机科班出身,09年研究生毕业即投入嵌入式开发工作,欢迎付费咨询,微信联系:xiaoxing_fei。
展开
-
3d激光雷达开发(从halcon看点云pcl库)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】做点云开发的,很少有不知道pcl库的,这一点就有点像做数字图像处理的,很少有不知道opencv的一样。然而在工业视觉,或者是实际生产中,另外一些专业软件,比如halcon、visionpro的使用其实更广泛一些。从这一点来说,如果需要让3d点云软件被更多的普通人接受,需要在下面三个地方进行重点着墨。1、更简单易用的UI界面、操作界面这部分就有点类似于dos...原创 2022-03-17 19:09:06 · 5392 阅读 · 0 评论 -
3d激光雷达开发(多雷达标定)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】有过camera开发经验的朋友都知道,camera有两种标定。一种是内参标定,主要是标定切向畸变、径向畸变等参数;一种是外参标定,主要是把数据从摄像头坐标系转移到全局坐标系。举个例子来说,车上的传感器很多,每个传感器获得的数据都是以自己的坐标系为基础获得的,要想把这些数据整合在一起,必须有一个统一的车坐标系,其他传感器的数据转到这个统一的坐标系上,才能继续进行下面的工作。 ...原创 2022-03-16 00:13:16 · 2866 阅读 · 0 评论 -
3d激光雷达开发(欧几里得聚类算法)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 图形处理里面有一个聚类算法,叫k-means。基本思想就是默认图像里面有k个区域,每个区域都可以内部聚合、外部松散的组合体,找到了这k个区域,就可以实现图像的分割了。正好,点云算法里面也有类似的一个算法,称之为欧几里得聚类算法,https://pcl.readthedocs.io/projects/tutorials/en/master/cluster_extraction.htm...原创 2022-03-15 09:01:40 · 1452 阅读 · 1 评论 -
3d激光雷达开发(ransac的思想)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 前面我们写了平面分割(https://blog.csdn.net/feixiaoxing/article/details/123388791?spm=1001.2014.3001.5501)、圆柱分割(https://blog.csdn.net/feixiaoxing/article/details/123389321?spm=1001.2014.3001.5501)这两篇文章。细心...原创 2022-03-14 22:48:24 · 511 阅读 · 0 评论 -
3d激光雷达开发(平面映射)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 3d点云当中,一个经常用到的方法就是先找到一个平面,然后将点映射到平面上面。这个里面用到的数据结构是ProjectInliers。参考的代码链接在这,https://blog.csdn.net/weixin_42291376/article/details/106154329,代码和参数稍微做了一些修改1、准备pcl.cpp文件#include <iostream...原创 2022-03-13 09:01:16 · 261 阅读 · 0 评论 -
3d激光雷达开发(字符串输出和实体绘制)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】前面说过了长方体绘制,这一次谈一下字符串。一个有demo效果的软件,或者说算法也行,除了用长方体绘制出效果以后,还要用字符串打印必要的信息。此外,随着时间的改变,这个信息最好是一直跳动和更新的,这样才能达到最佳的演示效果。1、照旧准备pcl.cpp文件#include<string>#include <iostream>#include &...原创 2022-03-12 18:31:31 · 701 阅读 · 0 评论 -
3d激光雷达开发(绘制长方体)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】不管是测量,或者是识别,一般在算法执行的过程当中,都要把相关得物体锁定出来,这个时候,绘制一个长方体就是一个不错的方法。这有点类似于opencv。因为在opencv当中,不管是检测,还是说识别,也是用一个框把具体的物体标记出来。示例代码参考了这篇blog,做了适当的修改,https://blog.csdn.net/varyshare/article/details/103355931...原创 2022-03-12 15:26:28 · 1198 阅读 · 0 评论 -
3d激光雷达开发(项目练习)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】网上关于pcl的教程很多,大部分都是翻译过来的。但是怎么把pcl这些教程串在一起,做一个简单的项目,这方面的资料不多。今天,正好看到一个范例项目,很有代表性,值得一看。1、代码地址https://github.com/veraposeidon/PointCloudVolumeMeasure2、项目目标主要就是测量中间突出的那部分体积大小3、查看CM...原创 2022-03-10 21:18:29 · 3708 阅读 · 5 评论 -
3d激光雷达开发(圆柱分割)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 和平面分割一样,pcl也支持圆柱分割。使用的方法和平面分割也差不多,都是基于ransac的基本原理。在pcl官方库当中,也给出了参考代码,注意关联的pcd文件,https://pcl.readthedocs.io/projects/tutorials/en/master/cylinder_segmentation.html#cylinder-segmentation1、准备c...原创 2022-03-09 22:32:22 · 555 阅读 · 0 评论 -
3d激光雷达开发(平面分割)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 平面分割是点云数据经常需要处理的一个功能。在很多场景下面,平面数据都是没有用的。这个时候需要考虑的,就是怎么把平面数据从点云当中分割出去。鉴于此,pcl库给我们提供了一种这样的分割处理方法,https://pcl.readthedocs.io/projects/tutorials/en/master/planar_segmentation.html#planar-segmentati...原创 2022-03-09 22:10:58 · 465 阅读 · 0 评论 -
3d激光雷达开发(ndt匹配)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 除了icp匹配之外,ndt匹配也是使用比较多的一种方法。相比较icp而言,ndt匹配花的时间要少一些。此外,ndt匹配还需要输入估计的yaw、pitch、roll、x、y、z,这个可以根据经验值给出。猜的越准,算法收敛的越快。参考的代码出处在这,https://pcl.readthedocs.io/projects/tutorials/en/master/normal_distrib...原创 2022-03-09 20:43:04 · 1075 阅读 · 0 评论 -
3d激光雷达开发(icp匹配)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 所谓匹配,其实就是看两个点云数据里面,哪些关键点是一样的。这样就可以把一个点云移动到另外合适的位置,组成一个新的点云。一般来说,单个机器人上面,3d激光扫描到的空间总是有限的,有了这个匹配算法,就可以把所有的点云组合成一个完整的3d地图了。参考的代码原来链接在这,https://pcl.readthedocs.io/projects/tutorials/en/master/itera...原创 2022-03-09 20:28:59 · 452 阅读 · 0 评论 -
3d激光雷达开发(旋转和位移)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】对于点云数据来说,旋转和位移的计算是十分必要的。比如数据匹配、识别、定位,如果需要查看获得的旋转矩阵对不对,那么就可以将原来的数据和旋转矩阵做一个乘积,这样就可以立刻看到对应的效果了。1、准备transform.cpp文件#include <iostream>#include <pcl/io/pcd_io.h>#include <pc...原创 2022-03-09 19:46:40 · 386 阅读 · 0 评论 -
3d激光雷达开发(法向量预测)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】法向量在3d点云当中扮演很重要的一个角色。一个三维数据点的特征,不仅和它自己有关,还和它周围的点有关。而法向量,正是基于这一点所提出来的特征属性。参考代码原来的出处在这,https://blog.csdn.net/datase/article/details/849604971、准备normal_estimation.cpp文件#include <pcl/poin...原创 2022-03-09 19:31:21 · 454 阅读 · 0 评论 -
3d激光雷达开发(sift关键点)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 关键点在数据匹配、三维重建和物体识别方面发挥了巨大的作用。和narf关键点相比较,sift点用的更多。不光是点云数据,sift最早是用在图像方面,相信有过图像开发经验的朋友应该不陌生。这个算法是受专利保护的算法,这一点需要注意下。1、准备sift.cpp// STL#include <iostream>// PCL#include <pcl/i...原创 2022-03-08 22:35:29 · 1102 阅读 · 1 评论 -
3d激光雷达开发(narf关键点)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 所谓关键点,其实就是那些梯度信息特征比较明显的点。至于是多明显,这部分需要用数学公式来进行标识。第一次学的时候,可以先有一个感性的认识。pcl库给出的例子是从RangeImage中提取narf关键点,原代码地址在这,https://pcl.readthedocs.io/projects/tutorials/en/latest/narf_keypoint_extraction.html...原创 2022-03-08 22:18:40 · 1011 阅读 · 0 评论 -
3d激光雷达开发(生成RangeImage)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 RangeImage,这个英文单词不太好翻译,姑且称之为深度图。因为点云数据中,每一个点其实都是有深度信息的。想象一下,如果把点云数据转换成一幅图片的话,那么图片中每个像素的数值就是这个深度信息。那RangeImage就是根据这个生成的。不仅于此,用户可以自己调剂距离、视场角,生成不同的深度图。之前的代码在这里,https://pcl.readthedocs.io/projects/...原创 2022-03-08 21:55:33 · 1975 阅读 · 0 评论 -
3d激光雷达开发(基于半径或者条件的滤波)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 基于半径的滤波,主要是指某个半径的范围内,必须要有一定数量的邻居。而基于条件的滤波,这一点和PassThrough有点像,但是它可以把很多条件组合在一起,比如说同时满足x轴、y轴、z轴等条件,然后开始滤波。原来的代码在这,https://pcl.readthedocs.io/projects/tutorials/en/latest/remove_outliers.html#remov...原创 2022-03-08 21:35:17 · 376 阅读 · 0 评论 -
3d激光雷达开发(基于参数模型的滤波)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 基于参数模型滤波,更准确的说,是依赖于某一个参数方程的滤波。比如说,ax+by+cz+d=0,这个时候只要知道a、b、c、d四个数值,其实就可以确定这个平面了。不过这个方法对参数要求较高,使用场景有一定的限制。原来的代码链接在这,https://pcl.readthedocs.io/projects/tutorials/en/latest/project_inliers.html#...原创 2022-03-08 21:18:32 · 358 阅读 · 0 评论 -
3d激光雷达开发(基于统计滤波)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 基于统计方法的滤波其实是比较好理解的。也就是说,在一个局部范围内,选择距离最近的几十个点,要求他们的平均值必须小于一个数值。这样,无形之中就把那些离散点给去除了。从原理上说,这个算法比较直观。但是它最大的问题就是计算时间太长。我一开始运行后,都以为程序不对了,结果是pc运行时间太长导致的。原来的代码地址在这,https://pcl.readthedocs.io/projects/tu...原创 2022-03-07 22:29:47 · 246 阅读 · 0 评论 -
3d激光雷达开发(voxel滤波)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 有一种滤波方法,被称之为基于体素网格的下采样滤波。虽然名字听上去有点拗口,其实功能并不复杂。它的中心思想就是在一个网格的空间内,只能有一个点。这么做的一个好处就是,对于一些稠密空间的点云,可以极大地降低数据的个数,这对减少计算量来说是大有裨益的。原来的代码在这https://pcl.readthedocs.io/projects/tutorials/en/master/voxel_g...原创 2022-03-07 20:59:48 · 624 阅读 · 0 评论 -
3d激光雷达开发(PassThrough滤波器)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】这个滤波器可能是最简单的那一类滤波器。有点类似于opencv里面的roi,也就是感兴趣区域。简单来说,这个滤波器就是对点云数据做一个裁剪,把某一个轴上面的数据段保留下来,或者剔除。原来的代码链接在这,https://pcl.readthedocs.io/projects/tutorials/en/master/passthrough.html#passthrough1、准备p...原创 2022-03-07 08:26:49 · 377 阅读 · 0 评论 -
3d激光雷达开发(八叉树)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 和kd树一样,八叉树也是一种数据管理方式。如果二叉树分别由左子树和右子树两个分支,那么八叉树就有八个分支。选择这一种数据结构主要也是为了查找方便。参考代码可以查找这个链接,https://pcl.readthedocs.io/projects/tutorials/en/master/octree.html#octree-search1、准备octree_search.cpp文...原创 2022-03-06 21:58:42 · 672 阅读 · 0 评论 -
3d激光雷达开发(kd树)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】kd 树是点云数据的一种管理方式。如果打个比方,就像一串数据一样,可以用数组串起来,也可以用二叉树串起来。用特定的数据结构把数据管理起来,最终还是为了更快更好的查找数据。比如如果我们查找一个点周围有哪些数据,如果没有kd树这样的数据结构,那么就只能一个一个去遍历了,效率非常低。参考的代码网页在这里,https://pcl.readthedocs.io/projects/tutoria...原创 2022-03-06 20:56:33 · 396 阅读 · 0 评论 -
3d激光雷达开发(点云数据显示)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】点云数据显示是开发过程中必不可少的一个环节。因为在实际场景中,可能会涉及到很多的算法步骤,这中间的每一步,都要停下来看一下,处理结果是不是我们自己想要的,所以这中间就必然会涉及到查看显示的部分。显示本身不复杂,但是有几个细节需要注意下。1、准备cloud_view.cpp #include <pcl/visualization/cloud_viewer.h> #inclu原创 2022-03-06 15:44:15 · 1690 阅读 · 0 评论 -
3d激光雷达开发(pcd数据读取)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 之前谈到了,如果从lidar获取数据,那么需要保存成pcd的形式。这个在https://feixiaoxing.blog.csdn.net/article/details/123292126里面谈到过。那么如何从pcd加载数据,其实方法也是一样的。相关内容可以参考这个链接Reading Point Cloud data from PCD files — Point Cloud Lib...原创 2022-03-06 14:22:39 · 970 阅读 · 0 评论 -
3d激光雷达开发(lidar使用)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】安装好了pcl库之后,下面就是需要想办法采集真实的雷达数据了。和camera不同,3d雷达一般需要单独购买。这方面,camera就强太多了,不仅手机有camera,电脑有camera,就算单独购买,也只要几百块钱。3d雷达则不同,最便宜的3d雷达也要3-4千块,多的可能大几万,这方面大家量力而行。有条件,可以自己购买;没有条件,可以申请单位购买;再不济,那就只能去看一下有没有别人不用...原创 2022-03-05 15:24:14 · 3344 阅读 · 1 评论 -
3d激光雷达开发(pcl安装和使用)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】之前讨论过,目前3d激光雷达这块,算法部分用的最多的就是pcl库。网上很多教程都是讲pcl在linux平台上面使用的,其实在windows上面也是非常方便的。所以,今天就看一下,在windows平台,特别是win10平台上面,pcl应该如何使用。1、前置条件 pcl被使用,一般需要这三个条件,分别是vs2017、cmake和pcl库。vs2017是编译工具...原创 2022-03-05 12:16:25 · 1563 阅读 · 1 评论 -
3d激光雷达开发(入门)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】大约在2017年的时候,学习百度的apollo系统的时候,就知道3d激光雷达了。3d激光雷达和普通的激光雷达不太一样。像现在很多的扫地机器人,都配置了激光雷达。不过这些扫地机器人用的是单线激光雷达,常常用于定位。而从去年开始到现在,车企开始部署和推广的是3d激光雷达,也就是多线激光雷达。这里面原因很多,价格其实是最主要的原因,通俗一点说就是便宜了、用得起了。1、为什么现在学3...原创 2022-03-05 10:31:01 · 2325 阅读 · 1 评论