ZEMAX | 如何使用 ZOS-API 创建飞行时间自定义分析

LiDAR(光探测和测距)是一种传感器技术,它可以通过测量发射的光从周围物体反射到接收器的时间来帮助创建环境的三维数字地图。作为自动驾驶汽车的一项关键技术,这种三维地图在汽车工业中正变得至关重要。在汽车行业之外,LiDAR 被用于移动设备,用于增强现实、测量距离以及模糊照片和视频的背景等功能。


在这篇文章中,我们将展示如何使用 ZOS-API 创建自定义分析 (User Analysis),以测量激光雷达系统的飞行时间 (TOF)。此分析将读取 ZRD 文件,提取其数据并绘制到达探测器的光线的飞行时间。



什么是自定义分析?


ZOS-API (应用程序接口 (Application Programming Interface) ) 可以使用最新的软件技术连接和定制应用程序。应用程序与 OpticStudio 之间的连接有四种程序模式,但可以分为两大类:


1) 完全控制(独立 (Standalone) 模式和自定义扩展 (User Extensions) 模式),这种情况下,用户通常完全控制镜头设计和用户界面;


2) 有限访问(自定义操作数 (User Operands) 模式和自定义分析模式),这种情况下,用户使用现有镜头文件的副本进行处理和分析。


自定义分析模式用于填充自定义分析的数据。这些数据是用 OpticStudio 提供的现有图形来显示,用于大多数分析。此模式不允许对当前镜头系统或用户界面进行更改(即:在这种模式下只允许对系统的副本进行更改)。自定义分析可以用 C++ (COM) 或 C# (.NET) 编写。本文的自定义分析是用 C#编写的。


有关自定义分析的更多信息,请点击编程 (Programming) 选项卡>关于ZOS-API (About the ZOS-API) >自定义分析 (User Analysis),查看内置帮助文件。


打开新的编程模板


使用 C# 创建自定义分析:



使用 Windows 资源管理器打开解决方案文件夹 ‘..\Documents\Zemax\ZOS-API Projects\CSharpUserAnalysisApplication1’。Visual Studio 也打开了新的解决方案。该解决方案包含模板代码,该模板代码可以用作任何自定义分析的基础模板。在 Visual Studio 中,用户自定义分析被编译为可执行文件,然后将可执行文件复制到 \Zemax\ZOS-API\User Analysis 文件夹中,以便 OpticStudio 可以使用。


打开激光雷达文件


在本文的附件文件 “Flash_NSC_Final.zar” ,(联系我们下载文章中的附件)中包含代表快闪激光雷达的系统,激光雷达位于货车的顶部,货车在路上,路上还有两个行人和一堵立着的绿色墙体。



激光雷达向场景中发射激光脉冲:



光照射到周围的物体上发生散射,部分光被散射回激光雷达探测器。


如下图所示:来自红色行人的散射光到达了激光雷达探测器的一个单位像素上。



激光雷达会将接收到返回信号花费的时长记录下来,即飞行时间,并将飞行时间转换为距离。像素的位置可表明入射光的方向。


这两个值都表明散射光线来自站在离货车10米远的红色行人。OpticStudio 实际上测量的不是时间,而是光线路径长度,也就是物体和探测器之间的距离。


探测器查看器 (Detector Viewer) 可以显示探测器上辐射特性的测量结果,但它不显示从激光雷达光源返回到激光雷达探测器的光线经过的距离。这就是 ZOS-API 派上用场的时候!自定义分析可以显示探测器到物体的距离数据,从而反映飞行时间的信息。



使用光线数据库查看器读取ZRD文件


ZRD 文件即光线数据库文件,光线路径长度可以在 ZRD 文件中读取。


运行光线追迹 (Ray Trace) 并通过选中保存光线 (Save Rays) 将光线保存为 ZRD 文件。



点击分析 (Analyze) >光线数据库查看器,可以显示照射到探测器17上的光线的路径长度。将“使用字符串 (Apply Filter) ”设置为 H17来过滤照射到探测器17上的光线。



例如,光线1的第8段已经到达探测器17,该光线的路径长度 4E4 (40m) 是所有光线段的光线路径长度之和。光线经过物体,然后回到探测器。物体到探测器的距离是该路径的一半,即20米。



所以,物体到探测器的距离可以通过读取照射到探测器的每条光线的路径长度来确定,可以使用 ZOS-API 自动完成此操作。