成本仅100美元的激光雷达:这个项目教你零基础DIY
从 PCB 到上位机软件全开源,项目中所有材料均能买到,不怕你做不出来。
本文引用地址:http://www.amcfsurvey.com/article/202006/414358.htm
激光雷达能够帮助机器人快速获取其周围环境信息,且具有探测范围广、精度高、抗干扰能力强等优势,是自动驾驶汽车、扫地机器人、仓储机器人等一系列地面自主移动机器人的重要组成部分。然而,目前工业级激光雷达往往造价高昂,像谷歌、百度造的那些无人车,其激光雷达的造价甚至超过了车辆本身的价值,让普通人望而却步。即使是探测范围仅有 25m 的单线激光雷达,在某宝上也卖到了千元级别。
想入坑自动驾驶却无法承受激光雷达高昂的价格?这个由俄罗斯的一位 Github 主近期开源的项目也许非常适合你,让你也能低成本自制激光雷达。
项目地址:
https://github.com/iliasam/OpenTOFLidar
效果演示
我们先来看看该项目制作完成后激光雷达的参数,这也许是大家最关心的问题,毕竟抛开精度谈价格都是在耍流氓!
扫描速度:每秒 15 次
分辨率:大约检测距离的 1%,但不会优于±2 cm
最小检测距离:5 cm
最大检测距离:大约 25 米(白色反射平面)
角分辨率:0.5 度
扫描频率:大约 11 kHz
扫描角度范围:大约 230 度,改变相应结构还有一定提升空间
功率:5 V/0.1 A(也就是 0.5 瓦),刚启动时电压可能会超过 0.8A
尺寸:50x50x120 mm
下图为该激光雷达的 CAD 模型与成品图。
在作者公寓的检测效果如下图所示
项目作者表示制作该激光雷达大零部件总成本大约只需要 114 美元,且激光发射器与接收器所使用的光学透镜均为监控相机标准镜头。看到这里你是不是已经忍不住想要自己上手试一试了呢?下面我们逐一为大家道来其制作过程。
激光雷达测距原理及其制作流程
该激光雷达采用的是 TOF(Time-of-Flight)测距原理。由于之后的镜头选型、安装调试与校准均涉及到 TOF 原理的知识,这里我们简要介绍一下它。
测距原理
如下图所示,激光器发射出一系列光脉冲,遇到物体反射后被感光元件捕获,感光元件产生的电信号经过放大器后,使用运算电路捕捉其上升沿或下降沿计算出光脉冲在空中的飞行时间,结合光速即可得到被测物体距离激光雷达的距离。
TOP 测距原理示意图(图片来源:维基百科)
我们从 TOP 测距的原理可以看出,以下几个因素决定了激光雷达的测量性能:
1. 环境中物体的颜色及其反射表面
由于 TOP 测距是通过计算光脉冲信号发射与接收前后的时间差来工作的,假如发射出的光脉冲被环境中物体吸收,或反射到感光元件测量范围之外,此时激光雷达是无法收集到正确测量数据的。这里举一个极端的,隐形战斗机就是通过使用能够吸收雷达的涂层以及较小的雷达反射面积来实现「隐身」的。
当然由于室内的墙大多以白色或浅色为主,大可不必担心。需要注意的是当环境中存在镜子或颜色较深的物体时,激光雷达的测量精度会受到较大影响。
2. 激光器与感光元件的相对位置及其镜头焦距
为有效捕捉到激光器发出的脉冲信号,感光元件需要安放在距离激光器合适的位置。并且需要根据测量需求,为激光器和感光元件安装合适焦距的镜头。下图为该项目中激光雷达镜头安装完成后的图片。
3. 激光信号发生器脉宽以及放大电流与运算单元分辨率
还有一个对传感器性能影响至关重要的是激光信号发射器的脉宽,它决定了激光雷达能够测量的最大距离。假设光速为 c = 300,000,000 m/s,当光脉冲宽度为 50 ns 时,其最远测量距离为 7.5 m。
由于感光元件产生的电信号需要经过放大处理,相应放大元件的增益、带宽、噪声、电源抑制比、共模抑制比、线性度、输出阻抗等关键指标,在制作过程中也是需要考虑的因素。最后就是运算单元的分辨率,其决定着传感器能否准确计算出激光脉冲往返的时间差。
制作流程
首先是激光脉冲电路的制作。作者选用了价格相对便宜但功能强大的脉冲激光二极管「SPL PL90_3」,其工作在 905 nm 的波长下,能够产生高达 75 瓦功率的激光脉冲,对应驱动电路图如左下所示。在检测电路部分,作者选用雪崩光电二极管(APD)作为光电探测元件,同时设计了 DC-DC 转换器为其产生足够高的偏置电压。激光脉冲探测需要信号带宽大且输入电容低的运算放大器,于是作者选用 MAX3658 作为运放。该芯片专门设计用于光电二极管,放大倍数为 18000,带宽为 580 MHz。此外,该芯片还包含一个内置滤波器,可削减低频噪声。检测电路图如图所示:
脉冲激光驱动电路图;脉冲检测单位电路图。
在时间节点测量部分,作者选用了用于超声波液体流量计的现成芯片 TDC-GP21。该微电路的时间分辨率为 90 ps 左右,MCU 可通过 SPI 总线对其进行控制。作者选用 STM32F303CBT6 作为微控制器,以实现对激光脉冲的发送与接收、测量数据读取与校准、反光镜电机转速的控制以及与上位机的通讯。制作完成的 PCB 如下图所示。
正面示意图+背面示意图。
在光学元件方面,选用标准的 M12 镜头作为激光透镜,发散角约为 0.45 度。并选用焦距为 25 mm 的镜头用于感光元件,该镜头具有较大的光圈,能够尽可能多地让反射光落在光电二极管上,以获得更高的信噪比。如果要在强光照射条件下(例如户外)使用激光雷达,作者建议在光电二极管和透镜之间安装专为 905 nm 波长设计的干涉滤光片。由于本项目是在室内照明条件下进行测试,所以没有安装。
旋转类型的激光雷达有两种方式来实现对周围环境的探测,分别是通过旋转整个测距仪或通过旋转相对于激光雷达光轴倾斜 45 度的反射镜来完成扫描,其对应工作方式如下图所示。
这两种方法各有优缺点,由于第二种方法仅需旋转反射镜,而第一种方法需要考虑测距仪在旋转时的供电与通信问题,所以这里采用仅旋转反射镜的扫描方法。待装好反射镜和驱动电机后,就完成了整个激光雷达硬件部分的制作工作。下面就可以使用项目作者提供的上位机软件进行调试与测量了。
上位机软件软件示意图。
将激光雷达用于 SLAM 可以说是如今比较成熟的技术,其具有精度高、速度快、抗干扰能力强等优势。然而目前由于其高昂的造价限制了它在民用无人驾驶领域的普及,哪怕是售价高达 100 余万人民币的特斯拉 Model S,使用的检测方案仍然以摄像头为主。或许此类低成本的激光雷达开源项目能对我们了解这一技术提供便利。
评论