前言:
说起来,该3D激光扫描测距仪(3D激光雷达)就核心设计原理来而言,应该在激光键盘(https://www.cirmall.com/circuit/2978/detail?3)设计项目之后。现在给大伙讲讲3D扫描测距仪的相关原理和制作细节。请耐心读完,方可吸收其中的精华。
在开始介绍原理前,先给出一些扫描得到的3D模型以及演示视频,给大家一个直观的认识
扫描得到的房间一角:
扫描的我
扫描仪实物
激光三角测距原理这里统一列出他们的参数:
- 摄像头:VGA画质的USB摄像头,30fps (市面普遍可以购买的型号)。非广角
- 激光器:50mW 红外一字线激光 808nm
- 滤光片:10mm直径红外低通滤光片
- 舵机:HS-322hd 43g标准舵机
本文结构简单介绍了激光雷达产品的现状 :
- 线状激光进行截面测距原理
- 3D激光扫描仪的制作考虑
- 参考文献
简介-激光扫描仪/雷达:
这里所说的激光扫描测距仪的实质就是3D激光雷达。如上面视频中展现的那样,扫描仪可以获取各转角情况下目标物体扫描截面到扫描仪的距离,由于这类数据在可视化后看起来像是由很多小点组成的云团,因此常被称之为:点云(Point Clould)。在获得扫描的点云后,可以在计算机中重现扫描物体/场景的三维信息。
这类设备往往用于如下几个方面:
机器人定位导航
- 目前机器人的SLAM算法中最理想的设备仍旧是激光雷达(虽然目前可以使用kinect,但他无法再室外使用且精度相对较低)。机器人通过激光扫描得到的所处环境的2D/3D点云,从而可以进行诸如SLAM等定位算法。确定自身在环境当中的位置以及同时创建出所处环境的地图。这也是我制作他的主要目 的之一。
- 零部件和物体的3D模型重建
- 地图测绘
现状:
目前市面上单点的激光测距仪已经比较常见,并且价格也相对低廉。但是它只能测量目标上特定点的距离。当然,如果将这类测距仪安装在一个旋转平台上,旋转扫描一周,就变成了2D激光雷达 (LIDAR)。相比激光测距仪,市面上激光雷达产品的价格就要高许多:
Hokuyo 2D激光雷达截图:
上图为Hokuyo这家公司生产的2D激光雷达产品,这类产品的售价都是上万元的水平。其昂贵的原因之一在于他们往往采用了高速的光学振镜进行大角度范围(180-270)的激光扫描,并且测距使用了计算发射/反射激光束相位差的手段进行。当然他们的性能也是很强的,一般扫描的频率都在10Hz以上,精度也在几个毫米的级别。
2D激光雷达使用单束点状激光进行扫描,因此只能采集一个截面的距离信息。如果要测量3D的数据 ,就需要使用如下2种方式进行扩充:
- 采用线状激光器
- 使用一个2D激光雷达扫描,同时在另一个轴进行旋转。从而扫描出3D信息。
说明:
第一种方式是改变激光器的输出模式,由原先的一个点变成一条线型光。扫描仪通过测量这束线型光在待测目标物体上的反射从而一次性获得一个扫描截面的数据。这样做的好处是扫描速度可以很快 ,精度也比较高。但缺点是由于激光变成了一条线段,其亮度(强度)将随着距离大幅衰减,因此测距范围很有限。对于近距离(<10m)的测距扫描而言,这种方式还是很有效并且极具性价比的,本文介绍的激光雷达也使用这种方式,
对于第二种方式,优点是可以很容易用2D激光雷达进行改造,相对第一种做法来说,他在相同的激光器输出功率下扫描距离更远。当然,由于需要控制额外自由度的转轴,其误差可能较大,同时扫描速度也略低。
这类激光雷达产品目前在各类实验室、工业应用场景中出现的比较多,但对于个人爱好着或者家用 设备中,他们的价格实在是太高了。当然,目前也有了一个替代方案,那就是kinect,不过他的成像 分辨率和测距精度相比激光雷达而言低了不少,同时无法在室外使用。
低成本的方案
造成激光雷达设备高成本的因素为
- 使用测量激光相位差/传播时间差测距
- 高速振镜的高成本
- 矫正算法和矫正人工成本
对于个人DIY而言,第三个因素可以排除,所谓知识就是力量这里就能体现了:-) 对于前2个因素,如果要实现完全一样的精度和性能,那恐怕成本是无法降低的。但是,如果我们对精度、性能要求稍 微降低,那么成本将可以大幅的下降。
首先要明确的是投入的物料成本与能达成的性能之间并非线型比例的关系,当对性能要求下降到一 定水平后,成本将大幅下降。对于第一个因素,可以使用本文将介绍的三角测距方式来进行。而对于 扫锚用振镜,则可以使用普通的电机机构驱动激光器来替代。
本文介绍的低成本3D激光扫描仪实现了如下的成本/性能:
成本:~¥150
测量范围:最远6m
测量精度:(测量距离与实际距离的误差)最远6m出最大80mm误差,近距离(<1m),误差水平在 5mm以内
扫描范围:180度
扫描速度:30 samples/sec (比如以1度角度增量扫描180度,耗时6秒)
对于精度而言,这个低成本方案足以超过kinect,不过扫描速度比较慢,但是对于一般业余用途而言已经足够。不过,该扫描速度是很容易提升的,本文将在分析其制约因素后介绍提高扫描速度的方 法。
原理和算法:https://www.csksoft.net/blog/post/lowcost_3d_laser_...
自制低成本3D激光扫描测距仪(3D激光雷达),第二部分
https://www.csksoft.net/blog/post/lowcost_3d_laser_ranger_2.html
视频:另一段实时扫面渲染
视频:matlab中观察点云:https://v.youku.com/v_show/id_XMzE4MTA0MzMy.html
参考文献
[1] 自制低成本3D激光扫描测距仪(3D激光雷达),第一部分
https://www.csksoft.net/blog/post/lowcost_3d_laser_ranger_1.html
[2]: Driverless USB AVR/51 ISP Programmer powered by RoboPeak
https://code.google.com/p/rp-usb-connector/
[3]: 本制作在Google Code的开源项目页面
https://code.google.com/p/rp-3d-scanner
[4]: V-USB, Virtual USB port for AVR microcontrollers
https://www.obdev.at/products/vusb/index.html
[5]: Arduino-Lite, Lightweight AVR library developed by RoboPeak
https://www.robopeak.net/blog/?p=131
[6]: Arduino-Lite Project
https://code.google.com/p/arduino-lite/
[7]: Irrlicht Engine - A free open source 3d engine
https://irrlicht.sourceforge.net/
[8]: MeshLab OpenSource Project
https://meshlab.sourceforge.net/
[9]: Blender OpenSource Project
https://www.blender.org/
[10]: PCL - Point Cloud Library
https://pointclouds.org/