chstetco / virtualradar

Open-Source Millimeter-Wave Radar Simulation Framework by Institute of Smart System Technologies, University of Klagenfurt and Institute of Mechatronics and Robotics, JOANNEUM RESEARCH
https://aau.at/vira
MIT License
88 stars 21 forks source link

Is it possible to use it with Flightmare? #8

Open JuanshuB2 opened 2 years ago

JuanshuB2 commented 2 years ago

Hi, I would like to know the extensibilty of this sensor to use it in a simulator based on Unity like Flightmare. I am also considering the use of RotorS, a simulator based on ROS Gazebo, to perform my algorithm evaluation. I am interested in getting the azimuth and elevation 2D plot, and all the radars I have seen are based in 1D scan line. Thanks!

chstetco commented 2 years ago

Hey JuanshuB2,

Thank you very much for your interest in our framework! We are very looking forward to your progress in using ViRa coupled with other simulators such as Flightmare. We have not yet investigated ViRa within these environments but if you can integrate them within Unity3D it should not be a problem. Currently we have a running version which either extracts azimuth or elevation angles at a single simulation step. Hence, to extract both angles at the same time, the sensor configuration must be changed accordingly and the simulation triggered again.

If you have any further questions please don't hesitate to contact us.

Best, Christian

JuanshuB2 commented 2 years ago

Hi Christian,

Sorry for my late response. I have been working in AirSim these months, and finally I am trying to add ViRA to my framework (I am delighted by your work). I have two questions I would be grateful if you can guide me about:

1) The AirSim version I am working with is based on Unreal Engine 4. As far as you know, how challenging can be to adapt ViRA to UE instead of Unity? Regarding things as the radiation pattern or the RCS calculus.

2) Back to Unity, I am testing the radar performance in the "out of the box" scene, sending the raw data to a Python server. With a similar radar configuration as the one detailed in your paper, I have a FPS of 0.3 or so, instead of 35FPS (28ms) as you get in a more heavy simulation. I have a very similar laptop with 16GB RAM and a RTX 3060 Laptop, so I am wondering whether I have to configure something else in Unity in order to get a better FPS.

Thanks for your time.

P.D.: I am working in a framework to test sensor fusion algorithms for Infineon, so I also want to simulate the BGT60TR13C radar

chstetco commented 2 years ago

Hey Juanshu,

Sorry for my late response, the past days were quit busy.

Regarding 1), I am not an experienced UE user, so I cannot give you a clear answer to your questions. I suppose, if UE is also based on C# then you should be able to migrate the code to UE. For the shader codes, I am not sure though.

Regarding 2), Can you give a bit more details here? Normally the FPS rate should not drop to this value. It should keep stable FPS around 20-30. Is maybe the Python server slowing something down or waiting for response?

Best, Christian

JuanshuB2 commented 2 years ago

Hello Christian,

Thanks for your response,

Regarding 1), I am working with AirSim but, by now, using the Python API to simulate the radar. I am using the formulas of "Virtual Radar" in Python, gathering the depth and the normal images and processing them. With the processing I am doing, I am able to extract the range and velocity, not yet the angles. Regarding the angles, I have come up with the following idea to simulate both azimuth and elevation angles in a L-shape RX antenna configuration as in the BGT60TR13C radar (maybe the same can be done in "Virtual Radar"):

                if antenna == 1:
                    antenna_shift = 0
                if antenna == 2:
                    shift_x = (2 * np.pi / wavelength) * d_antenna * np.sin(azimuth) * np.cos(elevation)
                    shift_z = (2 * np.pi / wavelength) * d_antenna * np.sin(elevation)
                    antenna_shift = shift_x + shift_z
                if antenna == 3:
                    shift_x = (2 * np.pi / wavelength) * d_antenna * np.sin(azimuth) * np.cos(elevation)
                    antenna_shift = shift_x

Regarding 2), I have checked out that the bottleneck is not in the Python server, so it would be related with my laptop.

Thanks for your support and contribution, it is been essential for my work :)

Example of detecting two people with a negative velocity: 62