Potential inaccuracies in corner reflector simulation #954
Replies: 2 comments 1 reply
-
Hi @Luke-Jacobs, Without having looked at your code, I suspect that what is happening is the following:
A first sanity check would be to test what happens if you pick the Lambertian pattern (which radiates energy uniformly in all directions). In this case, only the cross section should matter and the cube consequently reflect more energy. You could also play around with the orientation of the cube which should have a very strong impact on the received energy if you use a directional scattering pattern. |
Beta Was this translation helpful? Give feedback.
-
I think the problem comes from the scattering coefficient, essentially corner reflector has two reflections, making the energy dispersed after diffuse scattering. I've tested it with a isotropic scattering pattern, where:
So if we calculate the energy spreads out in a diffuse scattering case ( Corner Reflector (Double Reflection):
Plate (Single Reflection):
That means, the amplitude scaling creates a 31.9 dB penalty compared to single (20×log₁₀((2π)²) = 31.9 dB) I've reconstruct your code/case with isotropic scattering pattern (see appendix) and get a similar result to analytical value when
But, if we reduce
Moreover, if we rotate the corner reflector and plate, it then shows the corner reflector property!
Also, in the reference [Degli-Esposti07], they concluded that:
So I think, pick a smaller S to start and then compare/calibrate with your HW measurement should works for you. Appendix @sionna.rt.radio_material.scattering_pattern_registry.register(name="iso")
class IsotropicPattern(ScatteringPattern):
r"""
Perfect isotropic scattering pattern that distributes energy uniformly
in all directions, completely independent of incident direction.
This pattern treats every surface as a perfect diffuser that scatters
energy equally in all directions over the hemisphere.
"""
def __init__(self):
"""
Initialize the isotropic scattering pattern.
No parameters needed - energy is always distributed uniformly.
"""
# Normalization factor for hemisphere: 1/(2π) for energy conservation
self.normalization = 1.0 / (2.0 * np.pi)
def __call__(self, ki_local: mi.Vector3f, ko_local: mi.Vector3f) -> mi.Float:
r"""
Compute the scattering pattern value.
:param ki_local: Direction of incident wave (IGNORED - not used)
:param ko_local: Direction of scattered wave (IGNORED - not used)
:return: Constant scattering pattern value (uniform in all directions)
"""
# Return constant value regardless of any directions
# This creates uniform scattering in all directions
return mi.Float(self.normalization) |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Hello, my name is Luke and I am a PhD student researching remote sensing. I have been using Sionna to simulate radar, and I have been running some experiments trying to calibrate Sionna's raytracing output to my radar's output. This involves scaling the energy of Sionna paths by a calibration factor so that for the same object, the CIR of Sionna and my radar are closely matching. It is common to use an object of known RCS- like a trihedral corner reflector- to perform this calibration, so I have designed a corner reflector object in Blender and have simulated it in Sionna. However, I have noticed that Sionna seems to drastically underestimate the energy reflected by the corner reflector.
I have attached code that simulates the CIR of a large trihedral reflector (each side 5 cm length) and a small metal plate (5 cm side length).
Corner reflector at 122cm distance with 6.5 GHz radar:



Metal plate at 122cm distance with 6.5 GHz radar:
According to RCS equations of these objects, the trihedral should reflect more energy than the metal plate, but in simulation, much less energy is reflected (seen by a smaller corner reflector peak in the CIR plot):
This has made me wonder if this particular geometry is not well simulated by raytracing and/or the accuracy of path energy decreases as the number of reflections increases. I would be great to know if this is true (and if there are other known geometries that Sionna struggles to simulate) or if I have setup my simulation code incorrectly.
Here is a picture of a sample of rays scattering from the corner reflector (in my full simulation I used 2M rays) for visualization:

(I set the scattering coefficient of the PEC material to 1.0 and the scattering pattern to directive with an alpha parameter of 20 because I was not getting any specular reflection paths from the corner reflector.)

Any help would be appreciated! I have attached my code and 3d models. Thank you Sionna developers for creating this tool and its excellent documentation.
files_for_reproducible_code.zip
Beta Was this translation helpful? Give feedback.
All reactions