真正的全栈工程师!B站硬核UP主自己造了一个激光雷达
机器之心报道
机器之心编辑部
转载自:机器之心
从零造一个激光雷达,需要多久?
激光雷达(LiDAR)是激光探测及测距系统的简称,目前广泛应用在无人驾驶和扫地机器人等领域。这种广泛的应用一方面得益于激光雷达的性能提升,一方面也得益于其成本的下降。
根据扫描方式,激光雷达可分为 MEMS 型、Flash 型、相控阵型、机械旋转型;根据线数,可分为单线型和多线型:
话说回来,有没有可能自制一个激光雷达?B 站的一位硬核 UP 主「不想宅的技术宅」还真就把这个小目标实现了。
UP 主用了大半年的业余时间,用一个激光测距传感器整出了一个单线机械旋转式激光雷达,总共包括硬件设计、结构设计、FPGA 开发和 3D 打印几个步骤。对于 UP 主来说,这不算是新的挑战,只能算是「把以前学过的东西复习了一遍」:
虽然 UP 主很谦虚,但很多人播放完视频之后,只能表示「不懂,但受到震撼」:
做一个激光雷达,需要哪些基本部件?
UP 主选用了一款 FPGA 开发板,主芯片为 Xilinx ZYNQ7000,板上搭载了一个最高可输出 1080p60 帧视频的 HDMI 接口、32 个 GPIO(通用输入输出接口)等其他外设。在这块开发板上,将要完成雷达数据的采集、运算和显示。
此外还有一个直流减速机,额定电压为 12V,减速比为 1:30,最大输出转速为 300 转每分钟,电机尾部安装了 500 线的光电编码器,通过光电编码器可以获知输出轴的转动角度。
最后,还有一个激光测距传感器,测距精度为 1cm,量程为 12m,每秒钟可以测量 1000 次,输出接口为串口。
这些就是自制激光雷达所需要的基本部件,然后就是结构设计的问题了。
结构设计
UP 主表示,激光雷达在工作时,探头需要连续旋转,因此探头和底座的信号传输无法用导线连接,否则会引发缠绕问题,他通过导电滑环解决了这个问题。导电滑环内部是一组电刷,可以解决信号线在旋转情况下的缠绕问题:
如此,激光雷达就设计好了:
整个激光雷达分为底座和探头,探头和底座通过旋转轴进行连接,激光测距传感器通过螺丝固定在探头基座上。
探头基座内部还固定有转子 PCB,底座部分固定有导电滑环、电机和定子 PCB。
在实际装配时,电机输出轴和导电滑环和旋转中心因为误差关系大概率不会处于同一轴心上,这里使用了一个弹性连轴器来补偿轴向偏差:
探头和底座之间设计了一对红外对管,用来确定探头转动的初始位置:
至此,结构设计就完成了。随后将设计好的结构件在 3D 打印软件中添加支撑,然后切片,最后通过 3D 打印机打印出来。打印好的探头基座、探头盖和底座就是这样:
硬件电路设计
整体框架如图所示,包含定子 PCB 和转子 PCB:
下图是整个电源以及隔离设计的框图,整个电机控制部分和其他电路没有实际的连接,电机在工作时不会干扰其他电路:
再之后是 PCB 设计:
一番装配之后(此处省略一万个步骤),激光雷达就做好了:
激光雷达和 FGPA 之间通过排线进行通信。在软件设计上,分为两部分:PS 侧的嵌入式开发,以及 PL 侧的 FPGA 开发,相比之下,PL 侧的开发显得比较复杂。整体框图如下:
而主要的难度恰恰在于 FPGA 部分。UP 主表示:「要把雷达数据叠加在视频数据流上,费了我不少脑细胞。」
最后,看下实际运行效果
受限于激光测距传感器测量频率,探头转动一圈采集 500 个点的数据,所以激光雷达的扫描频率只能做到 2Hz 每秒。
为了视觉效果,UP 主加上了雷达扫描线,最终实现的效果还是不错的:
目前,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视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。
▲长按加微信群或投稿
▲长按关注公众号
3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列、三维点云系列、结构光系列、手眼标定、相机标定、激光/视觉SLAM、自动驾驶等)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近4000星球成员为创造更好的AI世界共同进步,知识星球入口:
学习3D视觉核心技术,扫描查看介绍,3天内无条件退款
圈里有高质量教程资料、答疑解惑、助你高效解决问题
觉得有用,麻烦给个赞和在看~
真正的全栈工程师!B站硬核UP主自己造了一个激光雷达相关推荐
- 【AI简报20220211期】硬核UP主自己造了一个激光雷达、详解AI加速器
嵌入式AI 详解AI加速器(一):2012年的AlexNet到底做对了什么? 原文: https://mp.weixin.qq.com/s?__biz=MzA3MzI4MjgzMw==&mid ...
- B站硬核up主稚晖君:对于有志学习嵌入式开发的软件工程师,我有这些建议!...
稚晖君,何许人也? 本硕就读于电子科技大学 华为AI架构师 热爱硬件开发 B站硬核UP主 "栈溢出"工程师 加入"华为天才少年计划" 或许当你看到这一堆Titl ...
- 全栈工程师?并没有什么卵用。每个人都应该去创业,不为别的,就为了健全你的人格(转)...
困境: 全栈工程师在实际工作中,意义并不大. 从员工角度说,工作中几乎不存在需要你全栈能力的项目或岗位,项目本身的技术跨度就不会特别大,人员配备一般也会比较健全,你的技术力通常难以得到体现,虽然你也可 ...
- 全栈工程师为啥值40W的年薪?
最近小编查看留言发现:询问的内容也大多是如何选择职业方向,如何成为一名优秀的软件工程师,以及怎样快速提高自身的技能等.我在一一回复的同时,结合身边无数朋友的经历,谈谈如何才能成为一名优秀的.年薪50万 ...
- 从全栈工程师到全栈管理师——全栈管理师诞生记
近年来,全栈这个概念似乎在IT圈子里面被炒得火热,耳濡目染之后,自己也就慢慢的开始关注全栈这个新鲜的事物.记得早些时候,流行的是一些Web栈.移动栈.服务栈.技术栈等等这些概念.慢慢的,这些纷繁复杂的 ...
- 全栈工程师是如何炼成的?Node大神狼叔访谈
导读:6 月 1 ~ 2 日,GIAC 全球互联网架构大会将于深圳举行.GIAC 是一个面向架构师.技术负责人及高端技术从业人员的技术架构大会.今年的 GIAC 已经有腾讯.阿里巴巴.百度.今日头条. ...
- 软件必备模块-全栈工程师
这篇文章又叫一即是全,全即是一. 初心 有时候想想为什么写程序?写程序的初心是什么?这个代码写时间长了有时候就忘记了.为生计?为房贷?都不是.我想做自己喜欢的东西.就想一个一个画家画出了自己想表达的东 ...
- 开课吧:全栈工程师的关键开发技能(硬实力)
一般来说想要成为一名全栈工程师,熟练了解和掌握开发技能是必然的事情,那么全栈工程师的关键开发技能(硬实力)有哪些? Git/GitHub 把Git作为关键技能的第一条,是因为它不仅仅是一个代码管理工具 ...
- 《Web全栈工程师的自我修养》读书笔记
<Web全栈工程师的自我修养>读书笔记 [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://w ...
最新文章
- 【笔记】C++ 简化位图图像操作
- 使用 MWC V2.5 中的 MPU6050中的DMP进行计算姿态(转载)
- leetcode刷题之树(1)
- tp5更改入口文件到根目录的方法分享
- error: Refusing toundefine while domain managed save image exists
- linux连接外部库时候编译,交叉编译时如何使用外部库?
- checkbox:全选与反全选
- 关系型数据库 vs 非关系型数据库
- 【Flink】ClassCastException 以及自定义序列化
- 【思维导图】幕布大纲至Xmind思维导图
- 分析百度搜索算法中:收录骤增骤减背后的原因
- 厉害了!小学生用大数据研究苏轼,结论出人意料
- 常见电商模式B2B、B2C、C2B、C2C、O2O
- 百度地图多点路线规划_期待已久的多地点路线规划功能
- 一些相似单词的区别之处
- 计算机配置时能关机吗,怎么设置时间让电脑自动关机?
- Eclipse插件列表
- Android开发-Notification通知栏通知最基础运用
- 二手车好大风,老平台都推新服务
- 信号的Fourier分析的matlab编程
热门文章
- 微信小程序 --- 拨打电话
- HDU4920 Matrix multiplication 矩阵
- RHEL7升级openssh7.4p1教程
- 我的这10年——从机械绘图 到 炼油 到 微软MVP 的华丽转身
- php HASHTABLE 实现
- 矮个男生不好找对象?某大厂程序员自称太高也难找对象!身高196cm,有房有车,却被嫌太高!...
- CPU深夜狂飙,一帮大佬都傻眼了...
- 跟刘强东、雷军等大佬聊天后,我总结了:如何结交牛人,跟大咖做朋友!
- ElasticSearch 索引 VS MySQL 索引
- 深度学习在阿里B2B电商推荐系统中的实践