真正的全栈工程师!B站硬核UP主自己造了一个激光雷达

机器之心报道

机器之心编辑部

转载自:机器之心

从零造一个激光雷达,需要多久?

激光雷达(LiDAR)是激光探测及测距系统的简称,目前广泛应用在无人驾驶和扫地机器人等领域。这种广泛的应用一方面得益于激光雷达的性能提升,一方面也得益于其成本的下降。

根据扫描方式,激光雷达可分为 MEMS 型、Flash 型、相控阵型、机械旋转型;根据线数,可分为单线型和多线型:

19fb8958592833919f5d1b5dd49a2f50.png

话说回来,有没有可能自制一个激光雷达?B 站的一位硬核 UP 主「不想宅的技术宅」还真就把这个小目标实现了。

UP 主用了大半年的业余时间,用一个激光测距传感器整出了一个单线机械旋转式激光雷达,总共包括硬件设计、结构设计、FPGA 开发和 3D 打印几个步骤。对于 UP 主来说,这不算是新的挑战,只能算是「把以前学过的东西复习了一遍」:

647959c96f21be8069a9b88c1707d762.png

虽然 UP 主很谦虚,但很多人播放完视频之后,只能表示「不懂,但受到震撼」:

6feba61dbe8face87860555e2706a9a3.png

做一个激光雷达,需要哪些基本部件?

UP 主选用了一款 FPGA 开发板,主芯片为 Xilinx ZYNQ7000,板上搭载了一个最高可输出 1080p60 帧视频的 HDMI 接口、32 个 GPIO(通用输入输出接口)等其他外设。在这块开发板上,将要完成雷达数据的采集、运算和显示。

67e7c37ddcbe06e12372536337f90204.png

此外还有一个直流减速机,额定电压为 12V,减速比为 1:30,最大输出转速为 300 转每分钟,电机尾部安装了 500 线的光电编码器,通过光电编码器可以获知输出轴的转动角度。

9fe14621825522799f0c552a8f0dabb7.png

最后,还有一个激光测距传感器,测距精度为 1cm,量程为 12m,每秒钟可以测量 1000 次,输出接口为串口。

e2f934d694d167c61d5c9ecf1338cb65.png

这些就是自制激光雷达所需要的基本部件,然后就是结构设计的问题了。

结构设计

UP 主表示,激光雷达在工作时,探头需要连续旋转,因此探头和底座的信号传输无法用导线连接,否则会引发缠绕问题,他通过导电滑环解决了这个问题。导电滑环内部是一组电刷,可以解决信号线在旋转情况下的缠绕问题:

9df837c5ff6c14d9e2abf285b4cf513d.png

e336437cba6adb8ca1013606f85c10fc.png

如此,激光雷达就设计好了:

82f613ce7b2fcd6e0a89a8284c1317ec.gif

整个激光雷达分为底座和探头,探头和底座通过旋转轴进行连接,激光测距传感器通过螺丝固定在探头基座上。

0d1e7fc762375da1756580127b1c7f49.gif

探头基座内部还固定有转子 PCB,底座部分固定有导电滑环、电机和定子 PCB。

1e4d9ac62dd35332f91e011dce3daa30.gif

在实际装配时,电机输出轴和导电滑环和旋转中心因为误差关系大概率不会处于同一轴心上,这里使用了一个弹性连轴器来补偿轴向偏差:

3b1f021e8442798c0fd3fc4d11a9373d.png

探头和底座之间设计了一对红外对管,用来确定探头转动的初始位置:

6be1007420945ed26aa46bedc6782fb9.gif

至此,结构设计就完成了。随后将设计好的结构件在 3D 打印软件中添加支撑,然后切片,最后通过 3D 打印机打印出来。打印好的探头基座、探头盖和底座就是这样:

e61796a928b8250b7b94e6e6ea7ad458.png

硬件电路设计

整体框架如图所示,包含定子 PCB 和转子 PCB:

59a5b179b90f97357e85f5d3a1143973.png

下图是整个电源以及隔离设计的框图,整个电机控制部分和其他电路没有实际的连接,电机在工作时不会干扰其他电路:

36cc81e8c9d24d0842d9010c75e866c9.png

再之后是 PCB 设计:

ec7b31a81e288dacb9b70d77e5dde856.png

7d73591e7ef946a55a64c13a56899f44.png

一番装配之后(此处省略一万个步骤),激光雷达就做好了:

d96735cdf76ad0dcc9bf2e0457c11e8e.gif

激光雷达和 FGPA 之间通过排线进行通信。在软件设计上,分为两部分:PS 侧的嵌入式开发,以及 PL 侧的 FPGA 开发,相比之下,PL 侧的开发显得比较复杂。整体框图如下:

0fdb6b61568d0666af9cb66d5ea280bc.png

而主要的难度恰恰在于 FPGA 部分。UP 主表示:「要把雷达数据叠加在视频数据流上,费了我不少脑细胞。」

最后,看下实际运行效果

受限于激光测距传感器测量频率,探头转动一圈采集 500 个点的数据,所以激光雷达的扫描频率只能做到 2Hz 每秒。

为了视觉效果,UP 主加上了雷达扫描线,最终实现的效果还是不错的:

b8300a72832f3b68d7d11c5e5c9533a2.gif

目前,UP 主已经把视频中激光雷达的结构和 pcb 设计文件上传到 Github 平台,想要做一个玩玩的小伙伴可以去下载。

项目传送门:https://github.com/Messi-xiong/LiDAR.git

本文仅做学术分享,如有侵权,请联系删文。

3D视觉精品课程推荐:

1.面向自动驾驶领域的多传感器数据融合技术

2.面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)
3.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进
4.国内首个面向工业级实战的点云处理课程
5.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解
6.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦
7.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化
8.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)

9.从零搭建一套结构光3D重建系统[理论+源码+实践]

10.单目深度估计方法:算法梳理与代码实现

11.自动驾驶中的深度学习模型部署实战

12.相机模型与标定(单目+双目+鱼眼)

13.重磅!四旋翼飞行器:算法与实战

14.ROS2从入门到精通:理论与实战

重磅!3DCVer-学术论文写作投稿 交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。

一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。

e838609ccaa93cbdfbf426ccb1c513fb.png

▲长按加微信群或投稿

1e154d47ec2c65b0c00e029d9417f852.png

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列三维点云系列结构光系列手眼标定相机标定激光/视觉SLAM自动驾驶等)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近4000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

d279a204b9d96e784a768c6690bc5d76.png

 圈里有高质量教程资料、答疑解惑、助你高效解决问题

觉得有用,麻烦给个赞和在看~  

前言: 说起来,该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秒) 对于精
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值