Ansys Zemax | 设计抬头显示器时要使用哪些工具 – 第三部分

2024-02-19 08:20

本文主要是介绍Ansys Zemax | 设计抬头显示器时要使用哪些工具 – 第三部分,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文为使用OpticStudio工具设计优化HUD抬头显示器系统的第三部分,主要包含演示了如何使用OpticStudio非序列模式工具正向分析HUD系统的性能以及后续可能的扩展分析。

上两篇文章中(第一部分点此查看,第二部分点此查看),我们主要介绍了如何以逆向方式对于HUD系统进行建模,以及根据分析系统的初始性能,并结合具体设计指标了解如何对系统进行控制与优化。本篇文章将主要结合OpticStudio非序列模式功能进行正向HUD系统性能的整体评估。(联系我们获取文章附件)

最终步骤:从显示器到虚像(正向)

翻转系统

翻转系统不是直接一步到位的。镜头数据编辑器中的元件翻转工具有一些限制,HUD系统肯定会破坏这些限制,因为该系统包含坐标间断和非标准表面。

棘手的部分是Z轴是“翻转的”。对于像HUD这样的非对称系统,该工具无法正常工作。

另一种解决方案如下所述:

•在镜头数据编辑器中,选择Make Double Pass工具:

该系统在表面12上包含一个反射面,该反射就是LCD。只有我们系统的之后部分才值得关注。

•表面24是新的STOP表面。首先可以固定表面24的半直径,将“孔径”更改为“按光阑大小浮动”,然后将“STOP”表面设置为表面24。

•系统需要整理:删除从“虚像”到“显示器”中定义的所有表面;从表面1到11。设计结果可以在表面13上移除,表面13的厚度是固定值2000mm。“物面厚度(表面0)”设置为0mm。

•表面13即STOP面可以设置为全局坐标参考表面。系统如下所示:

•现在,视场数据编辑器中的视场必须重新定义为LCD视场尺寸:

系统性能

•光斑尺寸(模糊):可以在Afocal image Space中检查图像清晰度,STOP的大小等于白天的瞳孔尺寸,它的直径是4毫米。

光斑的模糊低于2’,1’大约是人眼的分辨率。

•图像模拟:HUD将对车辆的速度进行成像。图像模拟工具可以让用户了解HUD系统图像质量:

•发散/会聚(双目视差):驾驶员的双眼将通过光学系统观看虚像。每只眼睛看到同一图像点的方向之间通常有一个很小的角度差异。垂直(上/下)角度差被称为双会聚。水平(左/右)角度差称为收敛。可以使用结果文件“HUD_Step1_MF_after_optim_2_eyes.zar”进行检查。瞳孔直径为4mm,瞳孔间距设置为50mm。对于视觉系统,这些值的典型极限在1.0 mrad的数量级上,因此系统在该极限范围内。

步骤3:非序列模式 

直接转换为NSC组(非序列组)

系统现在已准备好导出到非序列进行进一步分析。

初始的文件名为“HUD_Step2_reversed.zar”

OpticStudio有一个内置工具“转换为NSC组”,可以将序列表面转换为非序列元件;或者将整个序列系统转换为非序列系统。转换反射镜时,如果基板厚度大于0,则会将反射镜转换为复合透镜物体,其厚度等于反射镜基板厚度。因此,在这个文件中,我们将反射镜4、6、8和11的厚度设置为5毫米。该文件现在已准备好进行转换。

一旦转换了文件,就需要进行一些整理。下面的列表说明了不同的步骤。最后的非序列文件可以在文章的顶部下载:  

“HUD_Step3_NONSEQ_after_tidying_up.zar”

•在全局坐标系中定义所有的物体:

 

•只保留一个光源:以视场1为中心,第4行的椭圆光源。删除所有其它光源(第1行至第3行和第5行至第12行)。将该光源更改为“矩形光源”,其宽度为±12.5mm,尺寸为±5mm。将布局光线的数量设置为10:

•逆追迹光线:

•删除在序列模式中对翻转系统有用的表面2以及表面3。删除所有空物体。

•删除平面反射镜:在非序列模式下只需要一个平面反射镜(删除第10-14行)。

•将风挡玻璃的材料改为N-BK7(第14行)。

•将Eyebox(第15行)更改为Detector Color(检测器颜色),并添加约为-8度的Tilt(倾斜)X。速度将显示在Detector Color的底部。眼盒尺寸为X半宽=50mm,Y半宽=20mm。将X中的像素数设置为400,将Y中的像素数目设置为200。此外,Detector Color半角设置为X 20度和Y 10度,并且添加了180度的倾斜Y和倾斜Z,使得最终图像在右方向上显示。

•将检测器25更改为矩形光源,并将注释更改为“虚像”。添加-8度的“倾斜X”,并将“Y位置”更改为275 mm,以使其位于探测器的中心。

20条布局光线,X半宽=1000mm,Y半宽=500mm,光源距离=2000,翻转光线。

•删除所有其他探测器(16至24)。

在这一点上,来自LCD窗口的布局光线似乎与风挡玻璃没有相互作用。风挡玻璃是一个布尔原生对象:它是矩形体积和由2个扩展多项式曲面组成的复合透镜。

要了解发生了什么,让我们通过取消勾选“Do Not Draw Object”选项卡中的“不绘制对象”选项来绘制矩形体积:

三维布局显示“光源”位于矩形体积内,矩形体积是布尔体的父对象之一。在这种情况下,需要启用Source的Inside Of f标识才能指向布尔对象。还需要在NSCE(非序列数据编辑器)中的布尔物体之后定义光源,以便内部能正常工作。

 

•在第1行剪切矩形光源物体,并将其复制到风挡玻璃下方。更改Inside Of flag。现在光线在风挡玻璃上散射了。

•添加一个幻灯片物体作为LCD显示屏上显示速度的源图像,并将其放在LCD光源的前面。将“X全宽”设置为26 mm,将“纵横比”设置为1.0。

•虚拟图像处的矩形光源(物体#17)将用于模拟建立太阳光照射。添加一个幻灯片物体以表示司机看到的背景场景(Object Properties >Sources> Raytrace> Reverse Rays,以便光线向探测器发射)。将“幻灯片X全宽”设置为2000 mm,将“纵横比”设置为1.0。

•在第17行设置矩形光源的光谱,以匹配太阳光谱。

•光源14(LCD显示器):功率=1W,分析射线数=1E6

•光源17(照明背景):功率=10W,分析射线数=1E7

整理后,NSC实体模型中的最终系统如下所示。

结论

可以使用Detector Viewer显示驾驶员看到的模拟图像。首先单击 Analyze > Ray Trace 执行光线追迹,然后设置“光线追迹控制”,如下所示。然后通过单击 Analyze > Detector Viewer 来查看探测器查看器。在“设置”菜单下,设置“显示为:真彩色”和“显示数据:角度空间”。角度空间是序列非无焦像空间设置的非序列同等形式设置。这里使用它是因为人眼模型没有在这个系统中建模。

探测器查看器现在以真彩色显示驾驶员将使用设计的HUD系统看到的内容:

除此之外

在非序列模式下,用户可以执行其他分析,例如Straylight Analysis(杂散光分析),或由驾驶员头部移动引起的图像观察亮度变化等。

这篇关于Ansys Zemax | 设计抬头显示器时要使用哪些工具 – 第三部分的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/724083

相关文章

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

redis中使用lua脚本的原理与基本使用详解

《redis中使用lua脚本的原理与基本使用详解》在Redis中使用Lua脚本可以实现原子性操作、减少网络开销以及提高执行效率,下面小编就来和大家详细介绍一下在redis中使用lua脚本的原理... 目录Redis 执行 Lua 脚本的原理基本使用方法使用EVAL命令执行 Lua 脚本使用EVALSHA命令

Java 中的 @SneakyThrows 注解使用方法(简化异常处理的利与弊)

《Java中的@SneakyThrows注解使用方法(简化异常处理的利与弊)》为了简化异常处理,Lombok提供了一个强大的注解@SneakyThrows,本文将详细介绍@SneakyThro... 目录1. @SneakyThrows 简介 1.1 什么是 Lombok?2. @SneakyThrows

使用Python和Pyecharts创建交互式地图

《使用Python和Pyecharts创建交互式地图》在数据可视化领域,创建交互式地图是一种强大的方式,可以使受众能够以引人入胜且信息丰富的方式探索地理数据,下面我们看看如何使用Python和Pyec... 目录简介Pyecharts 简介创建上海地图代码说明运行结果总结简介在数据可视化领域,创建交互式地

Java中的工具类命名方法

《Java中的工具类命名方法》:本文主要介绍Java中的工具类究竟如何命名,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Java中的工具类究竟如何命名?先来几个例子几种命名方式的比较到底如何命名 ?总结Java中的工具类究竟如何命名?先来几个例子JD

Java Stream流使用案例深入详解

《JavaStream流使用案例深入详解》:本文主要介绍JavaStream流使用案例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录前言1. Lambda1.1 语法1.2 没参数只有一条语句或者多条语句1.3 一个参数只有一条语句或者多

Java Spring 中 @PostConstruct 注解使用原理及常见场景

《JavaSpring中@PostConstruct注解使用原理及常见场景》在JavaSpring中,@PostConstruct注解是一个非常实用的功能,它允许开发者在Spring容器完全初... 目录一、@PostConstruct 注解概述二、@PostConstruct 注解的基本使用2.1 基本代

C#使用StackExchange.Redis实现分布式锁的两种方式介绍

《C#使用StackExchange.Redis实现分布式锁的两种方式介绍》分布式锁在集群的架构中发挥着重要的作用,:本文主要介绍C#使用StackExchange.Redis实现分布式锁的... 目录自定义分布式锁获取锁释放锁自动续期StackExchange.Redis分布式锁获取锁释放锁自动续期分布式