如何选择汽车LiDAR的激光器和光电探测器_光电探测和激光探测的区别-程序员宅基地

技术标签: ADAS_辅助驾驶_自动驾驶  

from: http://www.eeworld.com.cn/qcdz/article_2017112520552.html

据报道,激光雷达(LiDAR)与其它传感器技术(摄像头、雷达和超声波)的相互竞争增加了对传感器融合的需求,同时也要求对光电探测器、光源和MEMS微镜的仔细甄选。


随着传感器技术、成像技术、雷达、LiDAR、电子设备和人工智能技术的进步,数十种先进驾驶辅助系统(ADAS)功能已得以实现,包括防撞、盲点监测、车道偏离报警和停车辅助。通过传感器融合同步此类系统的运行,以允许全自动驾驶车辆或无人驾驶车辆对周围环境检测,并警告驾驶员潜在的道路危险,甚至可以采取独立于驾驶员的规避动作来避免碰撞。


自动驾驶汽车还必须能在高速情况下区分并识别前方物体。使用距离判断技术,这些自动驾驶汽车必须快速构建出约100米远道路的3D地图,并能在250米远的距离上创建出高角分辨率的图像。如果驾驶员不在场,汽车人工智能必须做出最优决策。


此任务的几种基本方法之一是,测量能量脉冲从自动驾驶汽车发出到目标再返回车辆的往返飞行时间(ToF)。当知道脉冲通过空气的速度时,就可以计算出反射点的距离。这个脉冲可以是超声波(声纳),也可以是无线电波(雷达)或光(LiDAR)。


这三种ToF技术,想拥有更高的角分辨率图像,LiDAR是最好的选择,这是因为LiDAR图像的衍射(光束散度)更小,对邻近物体识别能力比雷达更优秀(见图1)。对于高速情况下需要足够时间来应对如迎头相撞等潜在危险,更高的角分辨率尤为重要。


激光源的选择


在ToF LiDAR中,激光发出持续时间为τ的光脉冲,在发射的瞬间激活计时电路内部时钟(见图2)。从目标反射的光脉冲到达光电探测器时,会产生一种使时钟失效的输出电信号。这种电子测量往返ToF Δt 可计算出目标到反射点的距离R。


若现实中激光和光电探测器位于同一位置,其距离R是由以下两因素影响:


c为光在真空中的速度,n为传播介质的折射率(空气中折射率接近1)。这两个因素影响着距离分辨率ΔR:若激光点的直径大于要解析的目标大小,则测量Δt和脉冲的空间宽度w(w = cτ)的不确定性为δΔt。


第一个因子表示为ΔR = ? cδΔt,而第二个因子则表示为ΔR = ? w = ? cτ。若距离测量的分辨率为5 cm,以上关系表明:δΔt约为300 ps,τ约为300 ps。ToF LiDAR要求利用小时间抖动的光电探测器和电子探测器(主要对δΔt有贡献)和能发射短时脉冲的激光(如相对昂贵的皮秒激光)。在典型汽车LiDAR系统中,激光产生的脉冲持续时间约为4 ns,因此最小光束发散角是必需的。


 

图1 光束发散角取决于发射天线(雷达)或透镜(LiDAR)的孔径和波长的比值。此比例对于雷达产生的较大光束发散角和较小角分辨率来说是偏大的。如图,雷达(黑色)无法区分这两辆车,而LiDAR(红色)则可以对汽车LiDAR系统设计者来说,最关键的就是选择光的波长。但有以下几项因素限制了此选择:人眼安全性、与大气的相互作用、可选用的激光器以及可选用的光电探测器。


最受欢迎的两种波长是905 nm和1550 nm,905 nm光波的主要优点是硅能吸收此波长的光子,而硅基光电探测器通常比探测1550 nm光波的砷化镓铟(InGaAs)红外(IR)光电探测器便宜。然而,1550 nm对人眼的安全性更高,允许激光使用的每个脉冲辐射能量更大——这是光子预算中的重要因素。


大气衰减(在所有的天气条件下),从空气中粒子的散射,以及目标物理表面的反射,都是依赖于波长的。但对于汽车LiDAR来说,由于天气条件和反射表面类型可能性众多,这是一个复杂的问题。在现实的环境中,由于1550 nm的吸水率比905 nm的更强,其实905 nm的光损失更少。


光电探测器的选择


发射的脉冲中只有小部分光子到达了光电探测器的有源区域。若大气衰减不会随着脉冲路径发生变化,则激光的光束发散角可忽略不计,照明点小于目标,入射角度为零,反射为完全漫反射(Lambertian),那么脉冲光接收的峰值功率P(R)为:



光电探测器的选择


其中,P0为发射激光脉冲的光峰值功率, ρ 为目标反射率,A0为接收器的孔径面积,η0为探测光的光谱透射,γ为大气衰减系数。


上述方程表明,随着距离 R的增加,接收功率迅速降低。作为参数及R=100 m的合理选择,光电探测器有源区域上返回的光子数近超过典型值(发射1020次),为其几百到几千倍的数量级。而这些光子会与未携带有用信息的环境光子竞争。


使用窄带滤波器可减少到达探测器的环境光子数量,但却不能完全消除。环境可降低检测的动态范围和增加噪声(环境光子散粒噪声)。值得注意的是,在典型的条件下,地面太阳辐射照度在905 nm到1550 nm区间。



 

图2 飞行时间(ToF)LiDAR基本设置的详解

 

在汽车周围的创建360° x 20°的3D地图,需要光栅扫描单个/多个激光光束,或对场景进行光覆盖并收集点云数据。前一种方法被称为扫描式LiDAR,而后者是Flash面阵式LiDAR。

有几种方法可以实现扫描式LiDAR。第一种方法,以Velodyne(San Jose,CA)公司为例,安装在车顶的激光雷达平台以每分钟300~900转的速度旋转,同时从64颗905 nm激光二极管发出脉冲。每个光束都有一颗专用雪崩光电二极管(APD)检测器。类似的方法是使用旋转多面镜,在不同方位和下倾角度,以略微不同的倾斜角度来控制单束脉冲。在恶劣且复杂的驾驶环境中,这两个设计中的运动部件都暗藏着失败的风险。


第二种方法,使扫描式LiDAR变得更紧凑的方法是使用MEMS微镜,在2D方向上以电控制光束。虽然技术上仍存在一些运动部件(微镜也有振动),但振动幅度很小,且频率足够高,还可防止MEMS微镜与汽车之间的机械共振。然而,MEMS微镜的几何尺寸限制了其振荡幅度,因此采用MEMS微镜的LiDAR视野有限,这是MEMS方法的缺点。尽管如此,由于此种方法成本低、技术成熟,还是赚足了眼球。


光学相控阵(OPA)技术,为第三种竞争扫描式LiDAR技术的方法,因其可靠的“无运动部件”设计而深受欢迎。它由光天线元件阵列组成,这些元件同样被相干光照亮。通过独立控制每个元件重新发射光的相位和振幅来实现光波转向,远场干扰产生一种理想的照明模式,从单光束到多光束。不幸的是,各种各样小元件的光损耗限制了其可用范围。


Flash面阵式LiDAR对场景进行光覆盖,尽管照明区域与探测器视野相匹配。在探测光学焦平面上的APD阵列即为探测器。每个APD均独立地测量ToF以实现该APD对目标特性成像。这是一种真正的“无运动部件”方法,其中切向分辨率被2D探测器的像素大小所限制。


然而,Flash面阵式LiDAR的主要缺点是光子预算:一旦距离超过几十米,返回光子的数量就太少,根本无法进行可靠的探测。如果不是对场景进行光覆盖,以牺牲切向分辨率为代价,用网格点状结构光来照明,这就可得到改善。垂直腔面发射激光器(VCSELs)使其可在不同方向同时发射成千上万的光束。


如何不受ToF限制


由于探测电子返回脉冲和带宽较宽的弱点,ToF LiDAR易受噪声影响,而阈值触发可引起测量误差Δt。基于这些原因,调频连续波(FMCW)LiDAR是一种有趣的选择。


在FMCW LiDAR(或chirped 雷达)中,天线连续发射的无线电波频率是调制的,例如其频率随着时间T从f0到 fmax线性增加,然后再随着时间T从 fmax到f0线性减少。如果反射波从某处的移动物体回到发射点,其瞬时频率将与发射瞬间的频率不同。差异来自有两个方面:一是与物体间的距离,二是其相对径向速度。因此可通过电子测量频率差异,并计算物体的距离和速度(见图3)来确定。


 

图3 在chirped 雷达中,通过电子测量 fB1 和fB2 ,可以确定反射物体的距离和它的径向速度


受到chirped 雷达的启发,FMCW LiDAR可用不同的方式接近被测物体。在最简单的设计中,可以对照亮目标的光束强度进行“啁啾chirp”(宽带线性调频)调制。该频率与FMCW雷达的载波频率遵守相同的规律(如多普勒效应)。反射回来的光被光电探测器检测到,然后恢复其调制频率。输出被放大,并与本机振荡器混合,以允许测量频率的变化,同时由此计算出目标的距离和速度。


但是FMCW LiDAR也有其局限性。与ToF LiDAR相比,它需要更强大的计算能力。因此,FMCW LiDAR在生成完整3D环境视图时,速度要慢一些。此外,测量的精度对啁啾斜线的线性度非常敏感。

 

尽管设计一套功能完善的LiDAR系统是非常有挑战性的,但这些挑战均是可克服的。随着研究的深入,我们正越来越接近“大部分汽车完成装配后就可以实现完全自动驾驶”的时代
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Real_Myth/article/details/78636592

智能推荐

c# 调用c++ lib静态库_c#调用lib-程序员宅基地

文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib

deepin/ubuntu安装苹方字体-程序员宅基地

文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang

html表单常见操作汇总_html表单的处理程序有那些-程序员宅基地

文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些

PHP设置谷歌验证器(Google Authenticator)实现操作二步验证_php otp 验证器-程序员宅基地

文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器

【Python】matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距-程序员宅基地

文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距

docker — 容器存储_docker 保存容器-程序员宅基地

文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器

随便推点

网络拓扑结构_网络拓扑csdn-程序员宅基地

文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn

JS重写Date函数,兼容IOS系统_date.prototype 将所有 ios-程序员宅基地

文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios

如何将EXCEL表导入plsql数据库中-程序员宅基地

文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql

Git常用命令速查手册-程序员宅基地

文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...

分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120-程序员宅基地

文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120

【C++缺省函数】 空类默认产生的6个类成员函数_空类默认产生哪些类成员函数-程序员宅基地

文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数

推荐文章

热门文章

相关标签