Ansys Zemax | 使用OpticStudio进行闪光激光雷达系统建模(下)

article/2025/9/17 7:34:47

在消费类电子产品领域,工程师可利用激光雷达实现众多功能,如面部识别和3D映射等。尽管激光雷达系统的应用非常广泛而且截然不同,而“闪存激光雷达”解决方案适用于在使用固态光学元件的目标场景中生成可检测的点阵列。

凭借在针对小型封装获取三维空间数据方面的优势,固态激光雷达系统在智能手机和笔记本电脑等消费类电子产品中日益普及。

在这个系列的文章中,我们将探讨如何使用OpticStudio对此类系统进行建模,包括从序列起始点到集成机械外壳的整个流程。该文章为闪光激光雷达系统建模系列文章的最后一篇。(点击查看上期文章)

下载

联系工作人员获取附件

简介

激光雷达系统在工业界中有着多种场景下的应用,对应于不同种类的激光雷达系统(比如用于扫描元件或确定视野的系统等),本示例将主要探索如何使用衍射光学元件来复制光源阵列在目标场景中的投影。成像透镜系统随后可观察到投影的光源阵列,以获取投射光线的飞行时间信息,进而生成投影点的深度信息。

在第三部分中,我们会介绍如何使用 Prepare for OpticsBuilder 将光学模型转换为 .ZBD 文件。通过转换,我们能够在 OpticsBuilder 中打开光学模型,并用于受支持的 CAD 平台,以生成机械外壳并执行光线追迹验证。

使用Prepare for OpticsBuilder

在前两篇文章中,我们已经在OpticStudio中为闪存激光雷达系统创建了一个完整的端到端模型。

现在,设计流程的下一步需要构建一些机械外壳,以便将光学元件固定在各自的轨道内(即特定的发射和接收模块)。此外,机械设计还需要一些能够容纳各个模块的封装。Prepare for OpticsBuilder 工具可生成扩展名为 .ZBD 的文件,该文件可以通过 OpticsBuilder 模块读取,以便用于受支持的 CAD 平台,从而帮助光学和光机工程师能够快速地进行文件共享和协作。

首先,我们来看一下之前研究的非序列模式闪光激光雷达模型,我们对它进行了简单的修改,只使用光学元件和单个散射壁面(请注意,在本文中壁面已从矩形探测器更改为矩形 2D 表面)。接下来,我们通过文件选项卡…Prepare for OpticsBuilder(File tab…Prepare for OpticsBuilder)打开 Prepare for OpticsBuilder:

在 Prepare for OpticsBuilder 中,光学工程师可指定一些合适的设置,以检查 ZBD 文件转换是否保留了与原生 OpticStudio 文件相同的性能。对于闪光激光雷达系统的转换,由于我们对光线分束和散射进行了建模,因此我们想要确保在 分析方式(Analyze With)设置中勾选 散射(Scattering)和 光线分束(Ray splitting)框。同样地,在 OpticsBuilder 中是否将文件设为只读也取决于工程师的选择,对于本例,我们将不勾选只读框:

当完成 用户输入(User Inputs)选项卡的编辑后,我们选择 准备(Prepare)以开始转换过程,并让工具检查 ZBD 文件是否能够在允许的增量和公差(在本例中,我们将其保留为默认值)范围内执行。在保存 .ZBD文件(Save .ZBD File)选项卡中单击 保存(Save),以生成 OpticsBuilder 就绪文件。

使用OpticsBuilder

一旦创建了 .ZBD 文件,光机工程师就可以将其导入到 OpticsBuilder 中。在安装了 OpticsBuilder 插件的 CAD 程序中(目前仅支持 Creo),通过打开一个新的装配体文件即可完成操作。选择合适的文件后, OpticsBuilder 将开始在您使用的 CAD 程序中生成光学系统:

在导入完成后,工程师可以查看完整的光学模型和几何结构,光学管理器(Optics Manager)中将列出相关的光学元件。如果在 Prepare for OpticsBuilder 工具中未勾选 只读?(Read-only?),光机工程师也可对其进行编辑:

由于保留了 OpticStudio 文件中的设置,我们可以使用 仿真(Simulate)按钮,直接在 OpticsBuilder 中执行与 OpticStudio 中相同的光线追迹。这使得光机工程师能够产生关于外壳整体设计的一些想法:

现在可以使用CAD软件来添加机械元件。在自上而下的设计中创建机械元件时,可以参考导入的光学元件几何结构。默认情况下,光学元件是固定的,但新创建的机械元件可以通过指定配置属性进行约束。此外,您还可以使用之前构建的现成部件,这些部件可以插入到装配体中并使用配置进行定位。最后,还可以将新引入元件的光学定义(例如膜层和散射配置文件数据)包括在内。例如,在每个轨道的光学元件之间添加机械垫片:

下一个添加的机械元件是用于容纳每个单独模块的筒:

对于所有这些物体,可以在光学管理器(Optics Manager)选项卡中,通过右键点击相关物体并选择编辑表面属性(Edit Surface Properties)来指定光学属性:

在OpticsBuilder中验证系统性能

完成机械封装后,我们可以开展另一个仿真,以便查看添加的外壳如何影响整个光学系统的光线追迹。假设我们已经准备好以下用于验证的机械设计:

要运行另一个仿真,我们将导航至 OpticsBuilder 选项卡,然后单击 仿真(Simulate)。添加新的机械元件后,OpticsBuilder 可以评估探测器在光斑尺寸、光束遮挡和像面污染等名义性能上的任何变化:

因此,有了这些机械元件,我们系统的主要变化是在光束遮挡方面。在该模型中,光斑尺寸可报告整个探测器性能的变化,即意味着它根据衍射光栅创建的点阵列来报告光斑尺寸,而这和现在的情况不太相关。像面污染可测量到达探测器的多余光线,这仍然相关并且保持在我们准备 OB 的初始步骤中定义的允许增量范围内。通过单击 “光斑尺寸(Spot size)”区域,然后单击 显示探测器…(Show Detectors…),可以查看在添加机械元件之前和之后的探测器结果:

此外,还可以通过 “打印(Print)” 按钮生成 OpticsBuilder 报告来查看这些结果:

为了进一步研究,OpticsBuilder会根据光线是否污染探测器或是否被新的几何结构遮挡来保存光线。通过右键点击相应的光线集,我们可以显示被遮挡的光线,同时定义要隐藏的其它光线集(“像面污染(Image contamination)”和“所有光线(All Rays)”):

从这个角度对光线进行更仔细的检查,可以对某些光束遮挡的光源进行一些诊断。工程师可以检查整个外壳的性能,也可以通过在仿真中包含或去除单个机械元件来评估任何添加几何结构组合的潜在干扰。例如,将外壳安装到发射模块末端的衍射光栅元件上会造成光源遮挡。光线与外壳的这一部分相互作用,随后被捕获在外壳中:

利用这些详细信息,机械工程师可以在修改外壳设计时做出明智的决策,以降低光束遮挡的情况。

OpticsBuilder 与 OpticStudio 之间的迭代

如果需要将此设计迭代发送给光学工程师进行进一步审核,光机工程师可以从OpticsBuilder导出.ZBD文件,以便在OpticsBuilder选项卡中轻松实现CAD程序和OpticStudio之间的文件传输。工程师可以选择将部件保存为所用CAD程序的原生元件,但请注意,这需要光学工程师拥有Premium OpticStudio许可证,并可以访问相同的CAD软件。此外,用户还可以选择将元件保存为静态STEP/IGES/SAT文件:

由于.ZBD文件类似于OpticStudio .ZAR存档文件,因此可以在OpticStudio中将其打开,并完全再现由光机工程师添加的光学和机械元件。 

值得注意的是,在撰写本文时,需要为散射壁面重新定义第二部分中定义的重点采样(Importance Sampling)设置,以实现如上所示的光线追迹。

在本篇文章中,我们演示了OpticStudio和OpticsBuilder之间的转换过程,从而为我们的光学模块创建机械封装。将光学模型整合到所选的兼容CAD程序后,OpticsBuilder可以使用与OpticStudio相同的光线追迹核心来仿真光线追迹,以检查光斑尺寸、光束遮挡和像面污染方面的变化。这些光线集的隔离有助于评估机械或光学设计可能需要在哪些方面进行修改。最后,光学和光机工程师可以通过在OpticsBuilder和OpticStudio之间共享.ZBD文件来实现其设计的无缝迭代。


http://chatgpt.dhexx.cn/article/w7npAVRg.shtml

相关文章

相机+激光雷达重绘3D场景

将激光雷达与相机结合,再通过深度学习的方式获得场景的3D模型——Ouster首席执行官在博客中介绍了相机OS-1,并装有激光雷达。LiveVideoStack对原文进行了摘译。 文 / Angus Pacala. Ouster 译 / 王月美 技术审校 / 田栋 原文 https://medium.com/ouster…

2020年亚太杯数学建模竞赛赛题

https://download.csdn.net/download/Suger_Lover/46133529https://download.csdn.net/download/Suger_Lover/46133529https://download.csdn.net/download/Suger_Lover/46133529

PSpice仿真之建模-以半导体激光器为例

PSpice仿真之建模 第一篇原创博客,来点干货~最近应同学之托,解决一个PSpice建模问题,在解决过程中遇到很多问题,于是想写下来,后来者少走弯路哈。这里以半导体激光器为例,讲PSpice的建模。 PSpice是啥&am…

如何保证三维激光扫描的测量精度?

非接触式扫描是三维扫描技术中的一个重要分支,具有检测速度快、零接触等优势,可以将复杂、不规则的物体三维点云数据采集到电脑中,并快速构建出三维模型。如今,三维激光扫描测量技术在文物、建筑等行业都有了成功的应用案例。 在…

激光雷达应用案例|仓储3D体积量方测量

在物流、仓储等工业行业中,获取物品体积数量、掌握物品出入库情况对生产库存管理具有重要意义。 以煤炭仓储及生产领域煤炭体积测量为例,为了解煤炭出入库情况,通常依靠人力手持全站仪进行人工煤炭体积监测。然而这一传统解决方案始终面对着技…

数学建模——光盘的数据容量

1、背景和问题 (1)20世纪80年代出现激光唱片(CD)与激光视盘(LD),统称为光盘。 (2)20世纪90年代出现数字视频光盘(DVD)。 (3&#x…

管网三维激光扫描建模_BIM建模_可视化平台_吉优赛维数字孪生

这几年我国的能源领域已经得到了飞速的发展基础,基础建设也得到了长效的发展,那么现在在石油天然气的运输过程当中,是否已经做到了没有任何的后患之忧了呢?实际上现在的传统人工管理方式还是存在很大程度上的安全盲区的&#xff0…

LaserMaker激光建模软件V1.6.40 更新说明

尊敬的LaserMaker用户,LaserMaker进行了版本更新,新版本为V1.6.40,欢迎您下载使用 LaserMakerV1.6.40下载地址:LaserMaker 新增功能 1.打断线段 橡皮擦工具下新增打断线段功能,同一图案分别设置不同加工工艺更方便…

自制三维激光扫描建模

看图片就是我做的东西,很炫酷是不是。 好吧,开玩笑,这是电影普罗米修斯的截图。 当初看这个电影的时候就感觉这东西好眩酷,我能不能做出来。最近借着帮做毕业设计的机会我也做了一个。 就是这个丑丑的东西啦~ 首先感谢来自CSK的…

Ansys Zemax | 使用 OpticStudio 进行闪光激光雷达系统建模(上)

前言 在消费类电子产品领域,工程师可利用激光雷达实现众多功能,如面部识别和3D映射等。尽管激光雷达系统的应用非常广泛而且截然不同,但是 “闪光激光雷达” 解决方案通常都适用于在使用固态光学元件的目标场景中生成可检测的点阵列。凭借具…

复杂建筑物三维激光扫描与室内外精细建模的科普解析

如今,随着科技的进步,复杂建筑物的三维激光扫描与室内外精细建模成为了现实。本文将通过简洁易懂的方式,介绍这一技术的原理、应用和操作过程,并引用可靠数据和研究成果进行支持,以确保准确性和可信度。 第一部分&…

真实多模激光的建模

作者:Daniel Asoubar(LightTrans) 相关文件:Tutorial_101.01,Snippet_028 需求:VirtualLab™5.11.1-基本工具箱 许可证:CC-BY-SA 3.0 摘要 1). 这个案例展示了如何在VirtualLab中对一个真…

nohup启动jar_nohup命令详解

nohup命令详解 在我们想要把SpringBoot微服务工程部署到远程服务器时,会通过java -jar springboot.jar的方式启动SpringBoot微服务。但是当我们把运行这个命令的SSH客户端退出登录就会导致SpringBoot进程也一起停止了,然后当然就没法访问我们启动的项目了…

Linux-nohup命令详解

场景 今天在linux上部署wdt程序,在SSH客户端执行./start-dishi.sh,启动成功,在关闭SSH客户端后,运行的程序也同时终止了,怎样才能保证在推出SSH客户端后程序能一直执行呢?通过网上查找资料,发现需要使用nohup命令。 …

c语言连续生成不同随机数_C语言连续生成多个随机数(可限制范围)

生成随机数 在现实中我们经常用到随机数,可怎么实现呢,且听小乔慢慢道来。 在C语言中,我们一般使用 头文件中的 rand() 函数来生成随机数 int void rand() 可是却发现生成的数字都一样。 这是因为rand() 函数产生的随机数是伪随机数&#xff…

c语言不用随机数种子,C语言的随机数与随机种子

引言: 在实际编程中,我们经常会用到随机数这个概念,其实也是一个伪随机数,实际上并不是一个真正的随机数,但是也足够我们使用了。在C语言中,编写一些关于游戏之类的程序时就需要用到随机数了。同时C语言也提…

C 语言随机数

1. 随机数概述 编写程序过程中,我们经常需要产生一些随机数。随机数在程序中分为两种: 真随机数:完全没有规则,无法预测接下来要产生的数。 伪随机数:通过一些预先设定好的规则产生不能简单预测的数。 当然&#xff0…

产生瑞利分布的随机数 C语言实现

瑞利分布的概率密度函数为 瑞丽分布的均值为,方差为 首先使用逆变换法产生参数的指数分布的随机变量,其概率密度函数为 然后通过变换,产生瑞丽分布的随机变量x,具体的方法如下: (1)产生均匀分布的随机数 &#xff…

产生(a,b)区间上均匀分布的随机数 C语言实现

uniform.h文件 #ifndef UNIFORM_H_ #define UNIFORM_H_/* 函数功能: 产生(a,b)区间上均匀分布的随机数组 输入参数说明: a 给定区间的下限 b 给定区间的上线 seed 长整型指针变量, *seed 为伪随机数的种子 */ doubl…

洛谷:明明的随机数,C语言

题目描述 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的…