Code Monkey home page Code Monkey logo

nvlabs / diff-rt Goto Github PK

View Code? Open in Web Editor NEW
45.0 7.0 4.0 8.66 MB

This repository contains code to reproduce some of the results from the paper Sionna RT: Differentiable Ray Tracing for Radio Propagation Modeling using the Sionna™ link-level simulator.

Home Page: https://github.com/NVlabs/sionna

License: Other

Jupyter Notebook 100.00%
5g 6g communications deep-learning digital-twin gpu-acceleration link-level-simulation machine-learning open-source ray-tracing

diff-rt's Introduction

Sionna RT: Differentiable Ray Tracing for Radio Propagation Modeling

This repository contains code to reproduce some of the results from the paper Sionna RT: Differentiable Ray Tracing for Radio Propagation Modeling [A] using the Sionna™ link-level simulator [B].

Abstract

Sionna™ is a GPU-accelerated open-source library for link-level simulations based on TensorFlow. Since release (v0.14) it integrates a differentiable ray tracer (RT) for the simulation of radio wave propagation. This unique feature allows for the computation of gradients of the channel impulse response (or related quantities) with respect to many system and environment parameters, such as material properties, antenna patterns, array geometries, as well as transmitter and receiver orientations and positions. In this paper, we outline the key components of Sionna RT and showcase several use-cases such as learning of radio materials and optimizing transmitter orientations through gradient descent. While ray tracing is a crucial tool for 6G research on topics like reconfigurable intelligent surfaces, integrated sensing and communications, as well as user localization, we believe that differentiable ray tracing is a key enabler for many novel and exciting research directions such as digital twins.

Setup

Running this code requires Sionna 0.16 or later. To run the notebooks on your machine, you also need Jupyter. We recommend Ubuntu 22.04, Python 3.10, and TensorFlow 2.13.

Structure of this repository

The repository contains the following notebooks:

References

[A] J. Hoydis, F. Ait Aoudia, S. Cammerer, M. Nimier-David, N. Binder, G. Marcus, A. Keller, "Sionna RT: Differentiable Ray Tracing for Radio Propagation Modeling", Mar. 2023.

[B] J. Hoydis, S. Cammerer, F. Ait Aoudia, A. Vem, N. Binder, G. Marcus, A. Keller, "Sionna: An Open-Source Library for Next-Generation Physical Layer Research", Mar. 2022.

License and Citation

Copyright © 2023, NVIDIA Corporation. All rights reserved.

This work is made available under the NVIDIA License.

If you use this software, please cite it as:

@article{sionna-rt,
    title = {{Sionna RT: Differentiable Ray Tracing for Radio Propagation Modeling}},
    author = {Hoydis, Jakob and {Ait Aoudia}, Fayçal and Cammerer, Sebastian and Nimier-David, Merlin and Binder, Nikolaus and Marcus, Guillermo and Keller, Alexander},
    year = {2023},
    month = MAR,
    journal = {arXiv preprint},
    online = {https://arxiv.org/abs/2303.11103}
}

diff-rt's People

Contributors

jhoydis avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

diff-rt's Issues

Preview is fine but rendering is all black

When I use the scene file I generated in blender, the color can be displayed normally using preview, but it becomes black using render. This bothers me. Do I need to add appropriate lights when generating the scene file? Thank you for your attention.

1
2

Could not reproduce the result with Sionna 0.16.2

I tried to run Learning_Materials.ipynb with Sionna 0.16.2.
And, I found the following description in NVlabs/sionna#274.

(Breaking change) Removes the flags trainable_position and trainable_orientation from Transmitter and Receiver

So, I changed Learning_Materials.ipynb for Sionna 0.16.x.

before

# Create new trainable material with some default values
new_mat = RadioMaterial(mat.name + "_train",
                        relative_permittivity=3.0,
                        conductivity=0.1,
                        trainable_relative_permittivity=True,
                        trainable_conductivity=True)

after

# Create new trainable material with some default values
new_mat = RadioMaterial(mat.name + "_train",
                        relative_permittivity=3.0,
                        conductivity=0.1)

Test

https://github.com/NVlabs/diff-rt/blob/main/Learning_Materials.ipynb has training process.
And, this notebook has the following figure.

image

But, I could not reproduce with Sionna 0.16.2.

image

Environment

I read README.md.

Running this code requires Sionna 0.15 or later. To run the notebooks on your machine, you also need Jupyter. We recommend Ubuntu 20.04, Python 3.8, and TensorFlow 2.12.

So, I used the following environment.

  • Ubuntu 20.04
  • Python 3.8
  • sionna 0.16.2
  • tensorflow 2.12.0

scene.preview not working

Hi,
in the example learning_orientation, I wanted to be able to browse the scene so I decided to use scene.preview() instead of scene.render(cam).
However, doing so is not working properly as you can see below:

File ~/miniconda3/envs/sionna/lib/python3.8/site-packages/ipykernel/jsonutil.py:131, in <listcomp>(.0)
    128     obj = list(obj)
    130 if isinstance(obj, list):
--> 131     return [json_clean(x) for x in obj]
    133 if isinstance(obj, dict):
    134     # First, validate that the dict won't lose data in conversion due to
    135     # key collisions after stringification.  This can happen with keys like
    136     # True and 'true' or 1 and '1', which collide in JSON.
    137     nkeys = len(obj)

File ~/miniconda3/envs/sionna/lib/python3.8/site-packages/ipykernel/jsonutil.py:151, in json_clean(obj)
    148     return obj.strftime(ISO8601)
    150 # we don't understand it, it's probably an unserializable object
--> 151 raise ValueError("Can't clean for JSON: %r" % obj)

ValueError: Can't clean for JSON: [0.0, 0.0, 25.0]

Any idea?

got an unexpected keyword argument 'trainable_orientation'

hi, l meet a problem while running learning_orientation.ipynb in jupyter notebook. Here is the problem:

TypeError Traceback (most recent call last)
~\AppData\Local\Temp\ipykernel_34764\3417808883.py in
24
25 # Create a transmitter and add it to the scene
---> 26 tx = Transmitter("tx", position=[-232, 130, 25.0],
27 orientation=[0.0,0.0,0.0],
28 trainable_orientation=True) # Trainable orientation

TypeError: init() got an unexpected keyword argument 'trainable_orientation'

My platform is windows and the versions:
sionna: 0.16.2
tensorflow: 2.10.1
python:3.9.13

I did not change any code from the code you provide. Do you have any idea how to solve it?
Thank you!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.