Releases: NVlabs/sionna
Releases · NVlabs/sionna
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
v0.12.1
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
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
andBaseDetectorWithPrior
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