NVlabs / sionna

Sionna: An Open-Source Library for Next-Generation Physical Layer Research
https://nvlabs.github.io/sionna
Other
786 stars 222 forks source link

RT data structure #369

Closed PhilSoy closed 7 months ago

PhilSoy commented 7 months ago

In my simulation, I have 1 transmitter and 12 receivers. Sionna calculates 534 paths. I need to determine the source and target of each path, as well as the number and type of each interaction. but do not understand the data structure, especially for what concerns paths.type. Here are the shapes of some parameters: a shape : (1, 12, 1, 1, 1, 534, 1) tau shape : (1, 12, 1, 534) types shape : (1, 534) theta_t shape : (1, 12, 1, 534) targets shape : (12, 3) vertices shape: (5, 12, 1, 534, 3) *** mask shape : (1, 12, 1, 534) The paths.type should be an attribute of each path (similarly to Tau, DoA, and DoD), but it has only 2 dimensions. I understood initially that Sionna calculates a TOTAL of 534 paths (for all receivers combined), but this becomes inconsistent with the other parameters which indicates that 534 paths are calculated for EACH receiver. I also noticed that some paths.tau equal -1 Can you please explain the data structure ?

faycalaa commented 7 months ago

Hi @PhilSoy

Also, please note that the tensors targets and vertices are undocumented. This is because their shape differ from the other documented tensors in the following ways:

PhilSoy commented 7 months ago

I still do not understand the data structure. A path has the following attributes:

jhoydis commented 7 months ago

Hi @PhilSoy,

You must understand that a path in Sionna RT can only consist of the following interaction types :

1) LoS 2) Up to max_depth specular reflections 3) Up to max_depth-1 specular reflections followed by a diffuse reflection 4) A single diffraction

Thus, we do not need to report for every interaction its type. Please see also #276.

PhilSoy commented 7 months ago

This is a limitation for sensing, but I recognize that multiple diffuse reflections result in very small intensity can be neglected in most case.

One question remains open. Since there is a single paths.type attribute per path, does it correspond to the first interaction, or to the last one ?

faycalaa commented 7 months ago

The value of the types property is set as follows:

PhilSoy commented 7 months ago

Thanks, this answers my question. Are there any evolution planned of the RT engine ?. I think that these limitations make Sionna not usable for sensing. Indeed: diffuse-->specular, and diffuse-->diffuse paths would be needed to model phenomenon like on this photo File:Eiffel Tower under cloudy sky.jpg - Wikipediahttps://en.wikipedia.org/wiki/File:Eiffel_Tower_under_cloudy_sky.jpg. This kind of Ghost targets (reversed Eiffel tower) would never happen with the current RT engine. Similarly diffuse to diffuse paths cannot be ignored (e.g. moonight)

jhoydis commented 7 months ago

We have not planned to add these types of interactions for now. The main reason being speed.

Can you explain why you need higher-order diffuse reflections for sensing applications?

Higher-order diffuse reflections will lead in many cases to very weak paths because the pathloss is proportional to the square of the product of the distances between interaction points and not the square of their sums as for purely specular paths.

PhilSoy commented 7 months ago

The highest priority would be to support paths experiencing diffusion followed by a specular reflection (creates ghost targets. Ref. my example with the Eiffel tower) Diffuse to diffuse is also desirable: this is the case of signal reflecting on the walls and then illuminating targets Transmission would also be useful, as most material are permeable.