Skip to content

Releases: NVlabs/sionna

v0.19.0

30 Sep 16:34
6a85e1c
Compare
Choose a tag to compare

Ray Tracing

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

11 Jun 21:54
0a4a22e
Compare
Choose a tag to compare

Ray tracing

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

24 Apr 20:30
8ad32bc
Compare
Choose a tag to compare

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 and orientation 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 to tf.complex (#348)
  • Fixes a bug in theta_phi_from_unit_vec() so that gradients are always well defined

v0.16.2

26 Jan 18:06
7eb04f4
Compare
Choose a tag to compare

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 of sim_ber (PR#286, contribution by @nbecker)
  • Fixes issues related to compatibility with versions 2.14 and 2.15 of TensorFlow

v0.16.1

08 Dec 15:58
58e32c5
Compare
Choose a tag to compare

Ray tracing

  • Fixes issue related to slow GPU computation in compute_paths (#283)
  • Fixes a formatting issue in the Diffraction notebook (#279)

v0.16.0

28 Nov 19:33
fd8b13a
Compare
Choose a tag to compare

Ray tracing

  • Splits path tracing and EM field computation through the addition of two methods to Scene: trace_paths() to trace the paths and compute_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 NaNs 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 as tf.Variable but can now be set freely by the user to be either a tf.Variable or a tf.Tensor
  • (Breaking change) Removes the flags trainable_relative_permittivity, trainable_conductivity, trainable_scattering_coefficient, and trainable_xpd_coefficient from RadioMaterial
  • Transmitter and Receiver position and orientation are not defined anymore as tf.Variable but can be set freely by the user to be either a tf.Variable or a tf.Tensor
  • (Breaking change) Removes the flags trainable_position and trainable_orientation from Transmitter and  Receiver
  • Fixes a bug with paths that were wrongly flagged as LoS in some multi-link scenarios
  • Adds a flag to Scene.compute_paths() and Scene.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 to uint8-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

  • Adds multi-gpu support via tf.distribute to sim_ber()
  • Adds target_ber, target_bler and callback  to sim_ber() (PR #257, contribution by @nbecker)
  • Update requirements: TensorFlow 2.10 – 2.13, Python 3.9 – 3.11 and Ubuntu 22.04 recommended

v0.15.1

11 Aug 10:28
f5ea373
Compare
Choose a tag to compare

FEC

  • Fixes incompatibility with scipy>=1.11 in LDPC5GEncoder and LDPCBPDecoder (#186, #191)

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 because cir_to_ofdm_channel() and cir_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 of 5G_NR_PUSCH.ipynb tutorial
  • Expands the API documentation of Paths.apply_doppler() with mathematical details for clarity

v0.15.0

11 Jul 22:32
03ced4c
Compare
Choose a tag to compare

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
        - Remove seed parameter of Scene.compute_paths() and Scene.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 the Paths.cir() method
    • Applying Doppler shift can now be done through the Paths.apply_doppler() method
  • Add support for the 3GPP TR38901 polarization Model-1
  • Add flags for enabling/disabling paths types in Scene.compute_paths(), Scene.coverage_map() and Paths.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 angle
    • simple_reflector: A metallic square
    • double_reflector: Two metallic squares
    • triple_reflector: Three metallic rectangles
    • box: A metallic box
  • Fix (#128)

FEC

  • Enhanced MCS support for TBConfig and LDPC5GEncoder (#146, #147)
  • Add support for downlink in Polar5GEncoder and Polar5GDecoder (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

Other

  • Switch the docker images from Jupyter to JupterLab

v0.14.0

20 Mar 20:28
99c7292
Compare
Choose a tag to compare

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

24 Feb 11:01
037be52
Compare
Choose a tag to compare

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