Releases: NVlabs/sionna
v0.19.0
Ray Tracing
-
New notebook: Tutorial on Coverage Maps.
It computes coverage maps for different precoding vectors, visualizes metrics like path gain, received signal strength (RSS), and signal-to-interference-plus-noise ratio (SINR), estimates user-to-transmitter associations, and samples user positions for the generation of channel impulse responses -
Scene extended with bandwidth and temperature properties
-
Transmitter extended with a transmit power property in Watt and dBm
-
CoverageMap extended to compute SINR maps and RSS maps, in addition to the already existing path gain maps
-
CoverageMap extended to compute and visualize cell-to-transmitter association
-
CoverageMap extended to compute and visualize the CDF of path gain, RSS, or SINR
-
show() property of CoverageMap extended to visualize SINR and RSS maps in addition to the existing path gain
maps -
Adds feature to Scene.coverage_map to execute multiple runs of shoot-and-bounce to compute coverage maps. This allows computing coverage maps using large number of rays despite memory limitation
-
Breaking Change:
CoverageMap.as_tensor()
replaced by path_gain, rss, and sinr properties
Config
-
Pseudo-random generators can be configured from the config module to ensure reproducible results, for Python, Numpy and TensorFlow
-
New config.seed property to configure all Python, Numpy and TensorFlow pseudo-random generator seeds at once
OFDM
- Adds feature to prepend cyclic prefixes to OFDM symbols of different lengths (see OFDMModulator and the related PR #465)
Precoding
- Adds feature to produce Discrete Fourier Transform (DFT) grid of beams for uniform linear and rectangular MIMO antenna arrays
Fixes
-
Addresses the significant increase in memory footprint for path and coverage map computations introduced in version 0.18
-
Fixes the skewness of the UTs position distribution toward the center of the sector generated via drop_uts_in_sector, ensuring a uniform distribution across the sector
-
Fixes ray leakage in coverage map computation (#564)
-
Fixes the application of precoding vector in coverage map computation in the presence of multiple transmitters
-
Fixes object IDs issues in ray tracer: Scene objects now always have contiguous indices starting from 0
-
Fixes missing scenes in Docker (#597)
v0.18.0
Ray tracing
- Adds support for reconfigurable intelligent surfaces (RIS). Exact paths as well as coverage maps can be computed.
- New “Tutorial on Reconfigurable Intelligent Surfaces” notebook
- New section in the EM Primer on Reconfigurable Intelligent Surfaces
Misc
- Fixes scaling of the antenna positions of planar arrays with the frequency (#470, #400)
- Fixes support of non-CUDA GPUs in Sionna RT (#464)
- Fixes an issue accessing the positions of SceneObjects (#449)
- Fixes deprecated matplotlib function used in coverage maps (#444)
- Fixes typos in the “5G NR PUSCH Tutorial Notebook”
- Fixes a bug in the detection of wedges on CPU (#347, contribution by @AinurZiga)
- Fixes crash of mobility notebook in Google Colab (#422)
- Updates to the Makefile and Dockerfile (#309)
v0.17.0
Ray tracing
- Every scene object has a now a velocity vector which is used to compute per-path Doppler shifts. These are used by
Paths.apply_doppler()
to compute time evolution of channel impulse responses. - Every scene object has now a
position
andorientation
property that can be modified after a scene is loaded. - A new tutorial notebook “Mobility in Sionna RT” demonstrates various ways how the new features can be used to simulate mobility.
Misc
- Fixes typos in the 5G NR PUSCH Tutorial (#384)
- Fixes typos in the Neural Receiver Tutorial (#406, contribution by @pablosreyero)
- Fixes typos in Tutorial Notebooks 1 and 2 (#355, contribution by @LateNightIceCream)
- Fixes a bug in the
Demapper
for very high SNR (#327, contribution by @japm48) - Fixes an issue in
sample_positions()
for coverage maps (#376) - Removes warnings related to casting from
tf.float
totf.complex
(#348) - Fixes a bug in
theta_phi_from_unit_vec()
so that gradients are always well defined
v0.16.2
Ray tracing
- New feature that allows defining a plane beyond which everything in the preview becomes invisible. This is useful, e.g., to look into buildings
- For the computation of coverage maps, not providing a combining vector now results in summing the energy received by all antennas
- Improved accuracy of the implementation of the Fibonacci lattice
Misc
- All evaluation statistics are now passed to the
callback
ofsim_ber
(PR#286, contribution by @nbecker) - Fixes issues related to compatibility with versions 2.14 and 2.15 of TensorFlow
v0.16.1
v0.16.0
Ray tracing
- Splits path tracing and EM field computation through the addition of two methods to
Scene
:trace_paths()
to trace the paths andcompute_fields()
to compute the corresponding EM fields Scene.compute_fields()
can now be executed in graph mode- Adds a feature to use a callable object to compute radio material properties from the intersection points between rays and the scene and the ids of the intersected objects
- Adds a feature to use a callable object to compute the scattering patterns
- Adds a feature to define custom colors for radio devices that are used for rendering and preview
- Enables the instantiation of radio materials without loading a scene (PR #216, contribution by @fklement)
- Fixes a bug with diffraction that was creating
NaN
s in some scenarios (#201) - Fixes a bug that occurred when reversing link directions using
Paths.reverse_direction
- (Breaking change) Delay normalization is now done across all receive and transmit antennas of each transmitter-receiver pair
RadioMaterial
properties are not defined anymore astf.Variable
but can now be set freely by the user to be either atf.Variable
or atf.Tensor
- (Breaking change) Removes the flags
trainable_relative_permittivity
,trainable_conductivity
,trainable_scattering_coefficient
, andtrainable_xpd_coefficient
fromRadioMaterial
Transmitter
andReceiver
position and orientation are not defined anymore astf.Variable
but can be set freely by the user to be either atf.Variable
or atf.Tensor
- (Breaking change) Removes the flags
trainable_position
andtrainable_orientation
fromTransmitter
andReceiver
- Fixes a bug with paths that were wrongly flagged as LoS in some multi-link scenarios
- Adds a flag to
Scene.compute_paths()
andScene.compute_fields()
to disable the addition of random phases to scattered paths - Fixes the link to the
simple_reflector
Blender file in API documentation - Speeds-up
Scene.preview()
by switching touint8
-typed textures for coverage maps - Better document the difference between edges and wedges (PR #214, contribution by @jeertmans)
- Fixes #231
- Fixes #222
- Fixes #217
FEC
- Fixes a bug in
make_systematic()
(PR #236, contribution by @daniel-x) - Fixes XLA issue in CN update of
LDPCBPDecoder
(#255)
MISC
v0.15.1
FEC
RT
- (Breaking change)
Paths.cir()
now returns the equivalent baseband channel impulse response (CIR) - (Breaking change) When using non-synthetic arrays,
Paths.cir()
does not anymore apply the phase shifts due to the array geometries to the channel coefficients and discards the antenna dimensions of the tensor carrying the delays (tau
). This is becausecir_to_ofdm_channel()
andcir_to_time_channel()
accept as input CIRs with different delays for every transmit-receive antenna pair. - Fixes ray leakage through corners in coverage map computation
- Fixes
Scene.compute_paths()
that was not working with non-synthetic arrays and multiple transmitters or receivers - Fixes issue #174
Misc
- Fixes reference to incorrect PUSCHTransmitter in
ebnodb2no
calculation of5G_NR_PUSCH.ipynb
tutorial - Expands the API documentation of
Paths.apply_doppler()
with mathematical details for clarity
v0.15.0
Features
Ray Tracing
- Add support for scattering:
- Paths: Only for the last interaction, i.e., transmitter -> N >= 0 reflections -> 1 scattering -> receiver
- Coverage map: Support for paths with arbitrary number of reflections and scattering interactions, in arbitrary order
- Enrich radio materials with scattering coefficients that control the power distribution between scattered and reflected rays
- Add support for Lambertian, directive, and backscattering patterns
- (Paths only) Randomly remove some scattered paths controlled by the
scat_keep_prob
parameter to avoid an overwhelming number of paths
- Add support for first-order diffraction, i.e., transmitter -> wedge -> receiver (paths and coverage map)
- (Breaking change) Replace uniform random sampling of initial ray directions with a Fibonacci lattice
- Removeseed
parameter ofScene.compute_paths()
andScene.coverage_map()
- (Breaking change) New definition of the coverage map
- (Breaking change)
Scene.compute_paths()
now returns paths coefficients instead of transition matrices- Remove
Paths2CIR
layer: Channel impulse responses can be obtained through thePaths.cir()
method - Applying Doppler shift can now be done through the
Paths.apply_doppler()
method
- Remove
- Add support for the 3GPP TR38901 polarization Model-1
- Add flags for enabling/disabling paths types in
Scene.compute_paths()
,Scene.coverage_map()
andPaths.cir()
- Add flags for disabling check of the scene prior to computing paths of coverage maps
- New scenes
simple_wedge
: A wedge with a 90 degrees opening anglesimple_reflector
: A metallic squaredouble_reflector
: Two metallic squarestriple_reflector
: Three metallic rectanglesbox
: A metallic box
- Fix (#128)
FEC
- Enhanced MCS support for
TBConfig
andLDPC5GEncoder
(#146, #147) - Add support for downlink in
Polar5GEncoder
andPolar5GDecoder
(PR #84) - Add feature to return CRC status in
PolarSCLDecoder
(#134) - Numerical improvements in
PolarSCLDecoder
Channel models
- Add discrete channel models:
BinaryMemorylessChannel
BinarySymmetricChannel
BinaryErasureChannel
BinaryZChannel
- Fix (#115)
Tutorials
- Add dedicated section for ray tracing tutorials
- Add tutorials on diffraction and scattering
- Update the "Primer on Electromagnetics" with sections on diffraction and scattering
Other
- Switch the docker images from Jupyter to JupterLab
v0.14.0
Features
Ray Tracing
-
Scene
- Loading of geometries and EM-properties
- Support to load scenes from external tools
- Built-in scenes
- Differentiable computation of propagation paths
- Differentiable computation of coverage maps
- 3D interactive viewer in notebooks
- Ray tracing-based rendering of scenes
-
Radio Materials
- Customization with frequency-dependent properties
- Integrated ITU radio materials
-
Radio Devices
- Support for arbitrary positions and orientations
- Support for arbitrary antenna arrays and patterns
-
Layer to compute channel impulse responses from propagation paths
-
Cameras for visualization of scenes from arbitrary viewpoints
-
Utility functions for 3D geometry
Tutorials
- Sionna Ray Tracing Tutorial notebook
- “Primer on Electromagnetics” explaining the theory behind ray tracing
- Video showing how import real-world environments in Sionna RT using Blender and OpenStreetMap
Fixes
- Fixes issue (#103)
- Fixes broken links in 5G NR PUSCH tutorial
- Updated DOCKERFILE (TF 2.11 as default)
- Updated file headers
Other
- Updated “Made with Sionna” section
- Updated installation guide
- New requirements: Mitsuba, pythreejs, ipywidgets
v0.13.0
Features
5G NR Module
- CarrierConfig
- LayerMapper
- LayerDemapper
- PUSCHConfig
- PUSCHDMRSConfig
- PUSCHLSChannelEstimator
- PUSCHPilotPattern
- PUSCHPrecoder
- PUSCHReceiver
- PUSCHTransmitter
- TBConfig
- TBEncoder
- TBDecoder
- calculate_tb_size
- generate_prng_seq
- select_mcs
FEC Module
- TB5GScrambler
Channel Module
- Adaptive step-size for SSFM
Tutorials
- 5G NR PUSCH Tutorial
- Introduction to Iterative Detection and Decoding
Fixes
- Fixes issue #95
Other
- Modified visualisation of PilotPattern and ResourceGrid
- Changed bs_yaw angle in sionna.channel.gen_single_sector_topology to align with sector center