自制低成本3D激光扫描测距仪.doc

上传人:hw****26 文档编号:3200733 上传时间:2019-05-25 格式:DOC 页数:32 大小:1.99MB
下载 相关 举报
自制低成本3D激光扫描测距仪.doc_第1页
第1页 / 共32页
自制低成本3D激光扫描测距仪.doc_第2页
第2页 / 共32页
自制低成本3D激光扫描测距仪.doc_第3页
第3页 / 共32页
自制低成本3D激光扫描测距仪.doc_第4页
第4页 / 共32页
自制低成本3D激光扫描测距仪.doc_第5页
第5页 / 共32页
点击查看更多>>
资源描述

1、ZZ 自制低成本 3D 激光扫描测距仪(3D 激光雷达)在开始介绍原理前,先给出一些扫描得到的 3D 模型以及演示视频,给大家一个直观的认识。相关的图片:扫描得到的房间一角(点击查看原始尺寸 )扫描的我(点击查看原始尺寸 )扫描仪实物本文结构简单介绍了激光雷达产品的现状 激光三角测距原理 线状激光进行截面测距原理 3D 激光扫描仪的制作考虑 参考文献 简介-激光扫描仪/雷达这里所说的激光扫描测距仪的实质就是 3D 激光雷达。如上面视频中展现的那样,扫描仪可以获取各 转角情况下目标物体扫描截面到扫描仪的距离,由于这类数据在可视化后看起来像是由很多小点组成 的云团,因此常被称之为:点云(Point

2、 Clould)。在获得扫描的点云后,可以在计算机中重现扫描物体/场景的三维信息。这类设备往往用于如下几个方面:1) 机器人定位导航目前机器人的 SLAM 算法中最理想的设备仍旧是激光雷达( 虽然目前可以使用 kinect,但他无法再室 外使用且精度相对较低)。机器人通过激光扫描得到的所处环境的 2D/3D 点云,从而可以进行诸如 SLAM 等定位算法。确定自身在环境当中的位置以及同时创建出所处环境的地图。这也是我制作他的主要目 的之一。2) 零部件和物体的 3D 模型重建3) 地图测绘现状目前市面上单点的激光测距仪已经比较常见,并且价格也相对低廉。但是它只能测量目标上特定点 的距离。当然,如

3、果将这类测距仪安装在一个旋转平台上,旋转扫描一周,就变成了 2D 激光雷达 (LIDAR)。相比激光测距仪,市面上激光雷达产品的价格就要高许多:图片: Hokuyo 2D 激光雷达上图为 Hokuyo 这家公司生产的 2D 激光雷达产品,这类产品的售价都是上万元的水平。其昂贵的原因 之一在于他们往往采用了高速的光学振镜进行大角度范围(180-270)的激光扫描,并且测距使用了计算 发射/反射激光束相位差的手段进行。当然他们的性能也是很强的,一般扫描的频率都在 10Hz 以上,精 度也在几个毫米的级别。2D 激光雷达使用单束点状激光进行扫描,因此只能采集一个截面的距离信息。如果要测量 3D 的数

4、据 ,就需要使用如下 2 种方式进行扩充:采用线状激光器 使用一个 2D 激光雷达扫描,同时在另一个轴进行旋转。从而扫描出 3D 信息。 第一种方式是改变激光器的输出模式,由原先的一个点变成一条线型光。扫描仪通过测量这束线型 光在待测目标物体上的反射从而一次性获得一个扫描截面的数据。这样做的好处是扫描速度可以很快 ,精度也比较高。但缺点是由于激光变成了一条线段,其亮度(强度) 将随着距离大幅衰减,因此测距 范围很有限。对于近距离(=700在我们制作过程中,这个要求还是很容易做到的。另外目前的 CMOS 摄像头往往具有 更小的单位像素尺寸(在同样大小的芯片上做出了更高的分辨率),因此实际 fs

5、的取值下限可以更低 。而对于摄像头分辨率、激光器夹角 beta,则决定了测距的范围(最近/最远距离)。 这里也同样不再重复了,可以参考3。对于使用 pX 进行测距的摄像头,其分辨率 480640 即可做出比 较好的效果,更高的分辨率更好(当然后文会提到缺点)。beta 一般在 83deg 左右。2D 激光雷达的原理和性能制约因素在实现了单点激光测距后,进行 2D 激光扫描就非常容易:进行旋转。这里讨论的他 的性能问题:扫描速度。对于采用三角测距的方式,从摄像头画面上识别出激光点到计算出实际距离对于目 前的桌面计算机而言,几乎可以认为不需要时间。那么,制约扫描速度的因素就在于摄像头的祯率了 。对

6、于目前市面常见的 usb 摄像头,其工作在 640480 分辨率的模式下最高帧率都在 30fps,那么,扫描 速度就是 30samples/sec。换言之就是每秒钟进行30 次的测距计算。对于一个 180 度范围的激光雷达,如果按照每 1 度进行一次测距计算,最短需要 6 秒。如果要提高扫描速度,很自然的就是提高祯率。对于 usb 摄像头,有 PS eye 摄像头可 以做到 60fps。但这也只能实现 3 秒 180 度扫描。需要更加高的速率,也就意味着更快的传输速度,对于 USB2.0 而言,保证 640480 的分辨率,fps 很难有所提升。在论文3中,他们采用了高速摄像芯片+DSP 的方

7、式实现了 1200fps 的帧率。由于本制作不需要很高的扫描速度,因此我仍旧采用了 30fps 的摄像头。3D 激光扫描的原理由前文已经指出,这里采用了线状激光器一次对一条线而非单点的目标物体进行扫 描测距。将扫描器进行旋转,从而可以实现 3D 扫描。下图展示了他的工作画面和捕获到的摄像头画面 :图:本制作早期使用的红色一字线激光器的工作画面图:采用红色一字线激光器捕捉到的画面对于线状激光器进行测距的问题,可以将它转化为前面单点激光测距的计算问题。 对于上图中的激光线条,算法将按照 Y 轴依次计算出当前 Y 轴高度下,激光光斑的 X 坐标值 pX。并尝试通 过先前的算法求处该点的距离。为了简化

8、问题,我们先考虑对于一个与摄像头感光面平行的平面上激光光斑各点的 距离问题:图:激光线条光斑在平行平面上各点的距离问题抽象如上图所示,远处平面为目标待测平面,上面有一条紫色的激光光斑。近处的平面 是摄像头的感光成像平面,经过了翻折后,他可以看作是目标平面到摄像头成像中心点组成的棱锥的 一个截面。图中的 P1 点位于摄像头投影画面高度的中点,按照针孔摄像机的定义,该 点在画面上的投影 P1距离摄像头中心Camera Center 的距离应当为摄像头的焦距 F。因此,对于 P1,可 以直接带入式(4)求出实际距离。现在的问题是,对于其他高度上的点,如 P2,是否可以通过式(4)求得?图:3D 测距

9、的原理答案自然是肯定的,不过这里涉及到了额外的参数。如上图所示,设 P2 的投影点 P2 到摄像头中心距离为 f,则P2 到 baseline 垂线距离 d可由如下公式得到:d=fbaseline/x . (6)而很容易知道,f可以通过 f 求出:f=f/cos(arctan(P2.y-P1.y)/f) . (7)其中的 P2.y 以及 P1.y 分别是点 P2,P1在成像元件上的实际高度,他们可由各自点 像素坐标 pY 乘以像素高度求出。在求出了垂线距离 d后,需要转化成实际的距离 D,此时需要 知道 P2-RotationCenter 以及 Baseline 组成的夹角theta。该角度可

10、以由立体几何知识通过激光器与 Baseline 的夹角 beta 求出。具体的求解公式可以参考本制作配套源代码的计算部分。在求出了平行平面上激光光斑任意点的坐标后,可以将问题一 般化,对于 3D 空间任意激光投影点,可以先构造出该点所在的一个平行平面,然后利用上述算法求解 。对于每次测距采样,上述算法将产生一个数组 distn。其中 disti为对应画面不同高度像素坐标 i 下激光点的距离。对于采用 640480 分辨率的摄像头,n 的取值 为 480。如果进行 180 度,步进为 1 度的 3D 扫描,则可得到分辨率为 180480 的点云阵列。如果采用 0.3 度步进,扫描 180 度,则

11、得到 600480 的点云阵列激光光点像素坐标确定和求解这里讨论如何从摄像头画面中计算出光点的坐标信息,具体来说,要解决如下几个 问题:1.识别并确定激光光点,排除干扰2.确定光点中心的精确位置先来看问题一,这个问题看似简单,不过实际会有很多问题,比如下面的几幅实际 操作中遇到的画面:图:不同环境和配置下摄像头捕获的画面上面 3 幅图像分别是在使用红色激光器摄像头所拍摄到的。(a)的图像比较理想,在 于画面中除了激光光点外没有别的内容,虽然可以看到上方有光电发射发出的干扰点,但激光光点仍 旧可以通过求出画面中最亮点的方式获取。(b)画面中出现了日光灯,由于日光灯亮度也较高,从画面上看与激光点中

12、心亮度一 致(均为纯白),对于这个图像,一种办法是同时判断临近像素的色彩,红色激光点的外围均为红色。(c)画面中,除了激光点外,出现了其他的红色物体,并且部分高光区域也在图像中 表现为纯白,此时,上述通过色彩判断的算法也将失效。因此需要有另外的办法。完美的激光提取算法几乎是不存在的,一个例子就是当画面中出现了 2 个类似的激光 点(另一个来自别的测距仪或者激光笔),此时单从一副图像上很难做出判断哪个才是正确的光点。同时,较准确的识别光点也需要硬件设备以及光学设备的合作,具体的细节超过了 本文的范畴。这里列举几种可行的办法:1. 加装滤光片在文献3和文献4中均提及使用滤光片的做法,仅保留激光器发

13、射波长的光线进 入,从而可以一定程度的避免光线干扰。2. 调整摄像头曝光时间调整摄像机曝光率也可以有效去除画面的干扰,例如上图(b)和(c) ,对于 5mW 的激光 器,一定距离内其单位光照强度仍旧比日光强3(人肉眼可以在室外识别出激光笔照射在地面的光点) ,因此,只要将摄像头曝光率调整的足够段,完全由可能将画面中除了激光点之外的内容剔除。3. 采用非可见光激光器例如使用红外激光器,这个做法与遥控器使用红外 LED 理由一样,在人造环境中少有 红外光干扰。配合红外滤光片,可以有效滤除来自诸如日光灯等的干扰。但是,对于日光和白炽灯, 其中也含有足够强的红外光,无法单纯采用此法。4. 增加激光器功

14、率配合曝光率控制,增加激光器发射功率也足以使得画面中仅保留光点,但这样也有 危险性,尤其采用点状激光时。本制作采用了上述的所有方法,将在后文具体介绍。对于问题(2),最简单的做法是直接找出光电中最亮的像素的坐标。但是由于前面公 式得知,这样的得到的 pX 值是整数,计算得到的 q 将会有比较大的跳变。因此这里介绍如何将 pX 变为更 加精确的“ 次像素“级别。对于这个问题,学术界已有不少的研究,这里推荐参考论文5,其中介绍了几种次 像素激光光点定位算法的介绍以及分析了他们的优劣。这里也不再重复了。简单来说,可以认为激光光点的亮度是一个二维的 Gauss 函数经过了一次采样得到了 画面上的激光点

15、。那么,可以通过拟合或者简单的线性插值/求质心的手段,估计出光点的中心。本制作使用了简单的质心法求取次像素的激光中心点。图:采用滤光片后,从白色日光灯画面(右上图) 中识别并计算出激光光点中心坐 标可能有人会问这样的估算精确有效吗?一般而言,精确到 0.1 个像素单位是比较可靠 的,也有文献指出他们做到了 0.01 个像素的可靠定位。对于线状激光器的求解过程与点状激光类似,区别在于将按照图像的每行 (或者每列)分别找出激光光斑的中心。可参考文献6,文献7给出了一个针对线状激光 更优的光点中心提取算法。摄像头校正进行激光测距的基本原理非常简单,但在实现中却有很多制约因素。除了前文提到 的进行三角

16、测距求解公式中的那些参数需要确定之外,校正摄像头从而得到理想的针孔摄像机模型下 的图像也是很重要的环节。首先要回答的一个问题是:为何要校正摄像头?校正什么参数?校正的主要理由是实际上目前使用的摄像头并非是前文所提到的针孔摄像机模型。 所谓针孔摄像机,简单说原理就和小孔成像类似:光线通过一个小孔后再背后的感光部件上成像。但 大家知道,现实的摄像机都是采用光学透镜聚光成像的,并且所用的透镜并非是抛物面的(很难加工 ),同时,感光芯片也透镜之间也非严格平行8。总之,现实就是产生的画面实际上存在扭曲和偏移 的。如果直接使用原始摄像机的画面进行测距,势必造成误差。因此需要进行相机的校正,通过校正 后获取消除上述画面扭曲和偏移的图像,再用来进行激光测距的相关操作。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 精品笔记

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。