Ray Simulation Analysis on the NetBeans Platform
RaPSor (Radio Propagation Simulator) is a framework for studying and testing algorithms for ray based simulations, particularly in the area of radio communication.
Below follows an interview with its author, Lilian Aveneau. Lilian is an associate professor (Maître de Conférences) in computer science at the University of Poitiers, where he works in the XLIM/SIC laboratory. His research area is computer graphics, focusing specifically on 3D visibility and rendering with ray methods, together with their usage in the context of radio communication.
What's RaPSor's problem domain?
RaPSor is a platform based on the NetBeans Platform. It is used for studying and testing algorithms for ray based simulations, mainly for radio communication channel characterisations.
However, this kind of problem is not specific to radio problematics. A "ray" approach can be used in computer graphics for image rendering using ray tracing algorithms. Similarly, it is used in radio communication for coverage simulation and prediction, even though some obvious specifics relate to this scenario. For example, diffraction (scattering) is important in radio communication, as well as specular reflection. Moreover, rays can be used in acoustics for sound simulation in an architectural model, such as when developing a new theatre or cinema project. And so on.
For all these domains, a ray simulation is always based on some geometrical recurrent constraints, which are solved using common knowledge. This is the case in environment modelling, both for geometrical and topological aspects and visibility (e.g., "Which surface is first intersected?" "Are two given points occluded or visible to each other?"). These questions imply an architectural design with ray optimizations.
That's very interesting. How did you come to create this application?
During my PhD thesis, from 1996 to 1999, I worked in both areas of computer graphics and radio communication. The difference between these areas relates mainly to the wavelength domain.
Then I began to develop two applications, one for computer graphics and one for radio communication, using a common ray kernel written in C. These applications are used by various people in production and in different environments (Linux, IRIX, Windows).
When these users wanted to add new features relating to their research problematics, several problems occured. Firstly, the application had to be compiled on the various systems with different "glibc" versions, for each new user. Secondly, the radio scientists had difficulties with computer science and collaborative development, since they made modifications in their local source code. Hence, we were not able to regroup all these modifications into a single application.
For these reasons, I decided to begin a new application, named RaPSor, with some specific design goals:
A first version was developed in 2006, using new algorithms for the kernel (since that's a great occasion to do new things, isn't it :-)). I chose Java as the language, of course, firstly for its portability and secondly for its simplicity (since radio users do not really understand the unistd brk() function, do they? :-)).
At the same time, a student project was being developed using the NetBeans Platform. It was named RenderTux and was a framework for GLSL shader development and testing. Even though this student project ended up as a profound disaster, it enabled me to look at NetBeans in a new way. I began to learn more about it and then I moved the project to the NetBeans Platform. This greatly simplified the modularity and extensibility aspects of the project.
Let's see some screenshots!
OK. One thing we're doing is experimenting with a new Antenna model, which is developed by another laboratory. We simulate the Antenna model in an anechoic chamber. The receiver locations used in the real world are reproduced in this scene. Only one big object, a metallic block, can be seen in this context. Hence, only reflections and simple diffractions can occur, as can be observed in these two screenshots:
The next two screenshots are, respectively, a 3d and a 2d view of the same simulation. The simulations are in cover mode, which is a regular grid of receivers, with a 1cm space interval between each receiver location.