In this article, we demonstrate how to optimize a 2D grating with a non-hexagonal grid arrangement to enhance the uniformity in the Eye Box of an AR waveguide system.
In this workflow, we consider an optical system with a 1D in-coupler grating (IC), and a 2D out-coupler grating (OC). The system is set in Ansys Zemax OpticStudio, and a dynamic link with the RCWA solver of Ansys Lumerical is used with the grating objects to simulate accurately their behavior. Finally, we optimize the system with Ansys optiSLang and compare the results in the case of a non-hexagonal grid with the standard hexagonal case.
Overview
Understand the simulation workflow and key results
For the design of waveguides for AR/VR applications, it is necessary to expand the eye-box by replicating the pupil. This can be done with either two 1D gratings (fold grating + out-coupler), or a single 2D grating. In the latter case, the grating is generally arranged in an hexagonal grid. For more information of these standard cases, see Optimization of an Exit Pupil Expander with 1D gratings and Optimization of Exit Pupil Expander with 2D out-coupler .
An hexagonal lattice corresponds to an arrangement with an angle of 60° between the two lattice vectors, as illustrated below. It is convenient for most simulation software because it can also be represented with an equivalent orthogonal lattice.
Ansys Lumerical supports non-orthogonal lattice, so 2D gratings with hexagonal shapes can be directly modeled with non-orthogonal unit cells (see Using Non-orthogonal RCWA Unit Cells ). Furthermore, the RCWA solver is not limited to the support of hexagonal grids with angles set at 60°, the angle can be set freely to get non-hexagonal patterns.
For a 2D out-coupler used for a waveguide, an hexagonal grid brings a certain symmetry because both directions of diffraction are guided at the same angle, and provide a regular grid of out-coupling points. It is illustrated below with the k-space, and with a visualization of the ray propagation in Zemax (where a few possible paths for the rays are highlighted).
A non-hexagonal lattice breaks this symmetry. The diffracted rays do not propagate at the same angles in the two directions, and therefore do not travel the same physical distance within the waveguide. As a result, the rays do not meet at a regular space after several bounces and many more extraction points become available (Only a few possible paths are illustrated below).
The capability to support non-hexagonal lattice brings an additional degree of freedom in the design of 2D gratings. In this example, we demonstrate that adding a variable representing the lattice angle in the optimization process of a 2D out-coupler enables to improve the uniformity in the eye-box.
This article is divided in 2 main steps as follows:
Step 1: Setting up the Optical system
In this section, we first present how the optical system is set up. The whole system including the waveguide, the light source, and the detector is set in Ansys Zemax OpticStudio. It is dynamically linked to Lumerical and the RCWA solver to provide real-time information on the grating diffraction to the raytracing engine.
Step 2: Optimization with optiSlang
The system optimization is performed with optiSLang. The OC grating is divided into 6 different zones, and the height of the grating is optimized individually for each zone so that the energy can be balanced within the eye-box. Two different runs of optimization are performed: one with a standard hexagonal grid, and one where the lattice angle of the full OC is set as an additional variable.
Run and Results
Instructions for running the model and discussion of key results
Step 1: Setting up the Optical system
- Open the file [[EPE_non_hexagonal.zprj]] in Zemax OpticStudio to check the system settings.
- In the multi-configuration operand tab, set the lattice angle to 50° (operand NPRO 1/3/335).
- Clear detector and trace the rays. Check the 3D layout window to observe the impact of the lattice angle on the rays propagation paths within the waveguide.
In Ansys Lumerical, the parameters defining the length of the grating unit cell are along the X and Y orthogonal axes. In our example, the Y value is unchanged, and we enforce \(X’= Y \) when varying the lattice angle \(\theta\). Then, it is important to note that the parameter to enter in the GUI for the X axis is \(X=X’/sin(\theta) \).
In the multi-configuration editor of the Zemax file, the grating parameters are already defined to control the system. These parameters can also be found directly in the properties of each grating surfaces, in the diffraction tab.
For each zone, we control the lattice angle, the period X and Y of the grating, and the grating height. The period Y is actually fixed, but the setting of period X is varying with the lattice angle to enforce X’=Y. Note that Pick-ups are used in the other gratings to copy these parameters, only the grating height is left as a separate variable for each grating.
Below, we illustrate the results for angles of 50°, 60°, and 70°. We see that for the non-hexagonal lattices the light is spread to multiple extraction points compared to the hexagonal case.
Step 2: Optimization with optiSlang
- In the folder "optiSlang with angle lattice 60deg", Open the file non-orthogonal_lattice_optimization.opf .
- Double click on the title of the box "Evolutionary Algorithm" and check the "Result designs" tab to see the full list of data for the optimization run. You can also double click on the icon "Postprocessing (1)" to observe the optimization results in a graph and extract the value for a particular iteration.
- Repeat the process to examine the data in the folder "optiSlang with varying angle lattice"
- The data are extracted and gathered in the file "data_optiSlang.xlsx". The data are illustrated in the plot below.
Two different optimization runs are performed with optiSlang, with and without the angle lattice set as variable. In both cases, the grating height is optimized for each zone to balance the energy within the eye box.
For more details on how to setup optiSLang to optimize an EPE, see the articles Optimization of an EPE with 1D gratings and Optimization of EPE with 2D out-coupler .
In both cases, we see that the optimization provides a space of solutions with a balance between total power and overall uniformity across the eye-box. What is of interest is to see that when the lattice angle is added as a variable we obtain solutions providing a better uniformity for an equivalent total power compared to the simple hexagonal space.
Important model settings
Description of important objects and settings used in this model
- The grating height of each zone is optimized individually, but we keep the same value for the lattice angle over the full OC. This is not a limitation of the simulation, it is only a consideration regarding the manufacturability.
Taking the Model Further
There are some considerations that are not covered in this demonstration but users could pay more attention when they try to follow this process for their systems.
- In this example, the lattice period is constrained to maintain X’=Y. In the non-hexagonal case we see in k-space that the supported FOV may be reduced. If the FOV specification can accommodate some margin it is possible to add a variable in the system to optimize this parameter as well.
Additional Resources
Additional documentation, examples and training material
Related Publications
- Michael Cheng, Thibault Leportier, Alexandra Christophe, and Jens Niegemann "Exit pupil expander with non-hexagonal 2D grating", Proc. SPIE 12913, Optical Architectures for Displays and Sensing in Augmented, Virtual, and Mixed Reality (AR, VR, MR) V, 1291319 (12 March 2024); https://doi.org/10.1117/12.2692847