Skip to content

Releases: NVlabs/sionna

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

v0.12.1

04 Jan 16:06
eb1d5c4
Compare
Choose a tag to compare

Fixes

  • Issue with CRCEncoder and int_mod_2  function for large input tensors
  • (#76) Issue related to step noise calculation in SSFM
  • (#75) Issue related to llr_max of LDPC decoder and adds new attribute
  • Issue in the tests for KBest
  • Updates documentation and fixes typos

Misc

  • Add support for TensorFlow 2.11
  • Version adjustments in requirements

v0.12.0

07 Dec 15:53
b2878ed
Compare
Choose a tag to compare

MIMO

  • Add MMSEPICDetector layer for MMSE-PIC detection, contribution from rwiesmayr
  • Add EPDetector layer for expectation propagation (EP) detection
  • Add KBestDetector for K-Best detection
  • Utility layer PAM2QAM now also supports soft information

FEC

  • Add OSDDecoder layer for ordered statistics decoding (OSD)
  • Add submodule fec.linear for universal support of Linear Codes
  • Add support for max-log BCJR decoding to the convolutional and Turbo decoders
  • Align Turbo and convolutional encoders
  • Add support for code termination to convolutional codes
  • Add input LLR clipping to LDPC BP decoding

OFDM

  • Add base class BaseChannelEstimator to ease the implementation of OFDM channel estimators
  • Add base class BaseChannelInterpolator to ease the implementation of OFDM channel interpolators
  • Add LMMSEInterpolator for LMMSE channel time and frequency interpolation and optional spatial smoothing
  • Add utility functions to compute time and frequency covariance matrices of TDL models
  • Add base class BaseEqualizer to ease implementation of OFDM MIMO equalizers
  • Add base classes BaseDetector and BaseDetectorWithPrior to ease the implementation of OFDM MIMO detectors without and with prior information
  • Add LinearDetector layer for LMMSE, MR, or ZF equalization followed by app or max-log demapping for OFDM MIMO detection
  • Add KBestDetector for K-Best-based OFDM MIMO detection
  • Add EPDetector for EP-based OFDM MIMO detection
  • Add MMSEPICDetector for MMSE-PIC-based OFDM MIMO detection
  • Add a setter to PilotPattern to support one-the-fly update of pilot symbols

Channel

  • Add MIMO support to TDL channel models through the specification of arbitrary correlation matrices
  • Add support for TDL A30, B100, and C300 channel models
  • Fix base station orientation in gen_topology_* utilities

Tutorials

  • Add a notebook showing how to use and compare some of the OFDM channel estimators and MIMO detectors available in Sionna

MISC

  • Typos fix and new test cases
  • Drop support for TensorFlow 2.6