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使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

MySQL中EXISTS与IN用法使用与对比分析

《MySQL中EXISTS与IN用法使用与对比分析》在MySQL中,EXISTS和IN都用于子查询中根据另一个查询的结果来过滤主查询的记录,本文将基于工作原理、效率和应用场景进行全面对比... 目录一、基本用法详解1. IN 运算符2. EXISTS 运算符二、EXISTS 与 IN 的选择策略三、性能对比

使用Python构建智能BAT文件生成器的完美解决方案

《使用Python构建智能BAT文件生成器的完美解决方案》这篇文章主要为大家详细介绍了如何使用wxPython构建一个智能的BAT文件生成器,它不仅能够为Python脚本生成启动脚本,还提供了完整的文... 目录引言运行效果图项目背景与需求分析核心需求技术选型核心功能实现1. 数据库设计2. 界面布局设计3

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do

Android Paging 分页加载库使用实践

《AndroidPaging分页加载库使用实践》AndroidPaging库是Jetpack组件的一部分,它提供了一套完整的解决方案来处理大型数据集的分页加载,本文将深入探讨Paging库... 目录前言一、Paging 库概述二、Paging 3 核心组件1. PagingSource2. Pager3.

python使用try函数详解

《python使用try函数详解》Pythontry语句用于异常处理,支持捕获特定/多种异常、else/final子句确保资源释放,结合with语句自动清理,可自定义异常及嵌套结构,灵活应对错误场景... 目录try 函数的基本语法捕获特定异常捕获多个异常使用 else 子句使用 finally 子句捕获所

Mysql中设计数据表的过程解析

《Mysql中设计数据表的过程解析》数据库约束通过NOTNULL、UNIQUE、DEFAULT、主键和外键等规则保障数据完整性,自动校验数据,减少人工错误,提升数据一致性和业务逻辑严谨性,本文介绍My... 目录1.引言2.NOT NULL——制定某列不可以存储NULL值2.UNIQUE——保证某一列的每一

C++11右值引用与Lambda表达式的使用

《C++11右值引用与Lambda表达式的使用》C++11引入右值引用,实现移动语义提升性能,支持资源转移与完美转发;同时引入Lambda表达式,简化匿名函数定义,通过捕获列表和参数列表灵活处理变量... 目录C++11新特性右值引用和移动语义左值 / 右值常见的左值和右值移动语义移动构造函数移动复制运算符

Python对接支付宝支付之使用AliPay实现的详细操作指南

《Python对接支付宝支付之使用AliPay实现的详细操作指南》支付宝没有提供PythonSDK,但是强大的github就有提供python-alipay-sdk,封装里很多复杂操作,使用这个我们就... 目录一、引言二、准备工作2.1 支付宝开放平台入驻与应用创建2.2 密钥生成与配置2.3 安装ali

C#中lock关键字的使用小结

《C#中lock关键字的使用小结》在C#中,lock关键字用于确保当一个线程位于给定实例的代码块中时,其他线程无法访问同一实例的该代码块,下面就来介绍一下lock关键字的使用... 目录使用方式工作原理注意事项示例代码为什么不能lock值类型在C#中,lock关键字用于确保当一个线程位于给定实例的代码块中时