在消费类电子产品领域,工程师可利用激光雷达实现众多功能,如面部识别和3D映射等。尽管激光雷达系统的应用非常广泛而且截然不同,但是 “闪光激光雷达” 解决方案通常都适用于在使用固态光学元件的目标场景中生成可检测的点阵列。凭借具有针对小型封装结构但可获取三维空间数据方面的优势,固态激光雷达系统在智能手机和笔记本电脑等消费类电子产品中日益普及。在这个系列的文章中,我们将探讨如何使用 Ansys Zemax OpticStudio 对此类系统进行建模,包括从序列初始设计到集成机械外壳的整个流程。
该文章为闪光激光雷达系统建模系列文章的第二篇。(点击查看第一篇)
激光雷达系统在工业界中有着多种场景下的应用,对应于不同种类的激光雷达系统(比如用于扫描元件或确定视野的系统等),本示例将主要探索如何使用衍射光学元件来复 制光源阵列在目标场景中的投影。成像透镜系统随后可观察到投影的光源阵列,以获取投射光线的飞行时间信息,进而生成投影点的深度信息。
在本文中,我们将介绍如何将上篇的序列模式起始结构进行转换,并向非序列模型中添加更多细节。我们还将应用 ZOS-API 在闪光激光雷达系统中生成一些时间飞行结果。
初始转换至非序列模式
为了观察这两个模块结合成为整个系统将如何工作,我们可以在每个系统中使用 “转换至非序列模式组” 工具(可以在 文件选项卡…转换至非序列模式组 中找到)来生成照明和成像子系统的非序列模型。在照明模块(清除多重结构编辑器,只保留一种结构)和成像模块中,转换至非序列模式组工具将使用以下设置:
以下为非序列模式下各子系统的转换输出结果:
组合模块
在此阶段,我们可以进行一些编辑,以更轻松地组合模块。在最终装配中,我们假设照明模块的光源和成像模块的传感器在同一个平面上,因为我们可以想象它们在整个系统中共享同一个电路板。我们在非序列模式中采用的总体方法是:
对于照明模块而言:
重新定义模块中物体的布局,使光源位于全局 Z 位置原点
在模块的 “像平面” 上移除三个探测器中的两个,增加其余探测器的尺寸,并应用镜面材料(因为这最终会起到散射壁面的作用)
删除三个光源中的两个,因为我们很快会编辑剩余的光源作为二极管光源阵列
对于成像模块而言:
从模块中移除光源
移除三个检测器中的两个,并根据序列模式文件的尺寸增加其余检测器的尺寸
重新定义像平面的物体参考摆放情况
包含上述修改的示例文件,已作为本文章附件添加至附件下载部分。示例文件分别为:“FlashLidar_Emitter_DiffGrat_PostEdit.ZAR” 以及 “FlashLidar_Receiver_PostEdit.ZAR”。
调整后,我们可以通过复 制和粘贴将成像模块物体插入到照明模块的非序列元件编辑器中。粘贴后,我们需要确保为插入后的物体重新编号 “参考物体 (Reference Object)” 参数,以指向新的物体编号(如适用的话),例如我们的成像模块光学元件现在需要指向组合模型中的 “物体10”(“成像模块参考” 为空物体)。然后使用参考空物体编辑 X 位置来确定模块的布局:
完整装配体的最终细节
为了确定模型,我们首先需要更新光源定义,以整合关于阵列和发射特性的其他详细信息。我们使用以下参数将光源从椭圆光源(Source Ellipse)转换到二极管(Source Diode)光源物体:
参考物体:1
X-/Y-发散角:5°
X-/Y-超高斯系数:0
X’/Y’-数量:5
Delta-X/Y:32mm
在我们的场景中生成完整的光斑阵列需要修改衍射光栅(Diffraction Grating)物体的物体属性(Object Properties)。对于每个衍射光栅,我们通过衍射(Diffraction)选项卡中的 “分裂” 设置来定义衍射级次,使用 “按以下表格分裂” 实现每个衍射级次的理想、均匀传输。为简单起见,将 I.99999999 的理想膜层定义放在两个模块所有元件的前后表面上。通过这些修改,一旦允许在 3D视图(3D Viewer)中分裂光线,我们就可以查看完整的投影点阵列:
为了使壁面物体作为散射表面,在 “散射壁面” 探测器上应用了朗伯散射配置文件。同样,我们还通过设置 I.0 膜层(确保100%反射)和散射分数(Scatter Fraction)值为1,使壁面成为理想的反射和散射表面。然而,在当前定义中,由于广角散射,散射光线很少能追迹到成像模块。因此,重点采样(Importance Sampling)可用于迫使光线向任何指定物体的顶点散射(参阅文章“如何利用重点采样进行高效的散射建模” (英文原文),了解关于重点采样工作原理的更多详情)。我们将使用的目标是 “物体11”,即成像模块的物理孔径,尺寸值为 0.7 mm。
当瞄准目标物体时,由于重点采样会降低散射光线的功率(以考虑光线从表面法线散射时的实际功率降低),因此需要降低最小相对光线强度(Minimum Relative Ray Intensity),以允许 OpticStudio 追迹这些较低能量的光线。在这种情况下,设置为 1e-8 可以追迹光线,我们可以看到光线现在可以离开照明模块,由成像模块捕获。应该注意的是,在两个模块之间引入了一个吸收矩形物体,以防止照明系统的杂散光影响成像透镜探测器。
现在,我们可以观察投影到壁面上的点列图案以及通过成像透镜观察到的点列图案。该步骤的示例文件已经保存为:“FlashLidar_FullSystem.ZAR”:
时间飞行考虑
激光雷达系统通过测量光到达探测器时的飞行时间来获得场景的深度信息。例如,传感器通常是时间门控的,以捕获从观察到的场景中散射的入射光束的信息。
通过利用 ZOS-API 来构建用户分析(User Analysis),我们可以获得落在最终矩形探测器上的每条光线的飞行时间数据;通过解析 ZRD 文件并分析落在成像模块传感器上的光线路径长度,从而获得所观察场景的深度。知识库文章 “如何使用ZOS-API创建飞行时间用户分析” 包含了构建这类用户分析的更多信息,我们将直接使用该分析。
在闪光激光雷达系统中,添加了一些相关的几何结构用例,例如一个小型桌子模型和一个用作手势识别的(极为简化)拳头大小的球体。
在运行用户分析(User Analysis)之前,需要先进行光线追迹,并且需要在光线追迹控制(Ray Trace Control)窗口中保存光线追迹数据。然后,用户分析将能够读取保存的.ZRD文件。在分析中使用以下设置,我们可以获得以下深度输出:
有了这些结果,我们可以区分场景中的不同特性以及它们在不同深度的位置。例如,我们粗略的 “拳头” 示意球体 位于用户分析输出的左上角,而位于桌子模型顶部的杯子则位于场景右上角稍远一些的位置。为了进行演示,我们用矩形光源(Source Rectangle)使光源的全部区域发光,使场景充满照明,从而更容易看到整个场景的深度信息:
通过设计闪存激光雷达系统的照明模块和成像模块,我们可以在最终的探测器平面上求解所投影的点阵列,并利用 ZOS-API 创建用户分析,以获取点阵列所到达的几何结构的深度信息。能够求解所观察场景的特征并检索距离信息,意味着这些信息能够传送至计算软件生成图像供用户查看,并利用用户的运动数据在计算机生成的场景中产生一些变化。
结论
在本文章中,我们已经介绍了序列模式下的闪光激光雷达照明和成像模块是如何转换到非序列模式的。我们还演示了如何改进模型,以及将两个模型合并到单个 OpticStudio 文件中的一些方法。此外,还定义了光源的其他细节,并定义了远距离壁面上的散射属性,以验证穿过整个系统的光线追迹。最后,我们讨论了 ZOS-API 中内置的自定义用户分析的用法,该分析返回了全闪光激光雷达系统的时间飞行数据。