Today, Loïc Morvan, who created the UAV simulation (UAV stands for unmanned aerial vehicle). I have presented in a video last week, is going to tell us more about his work.
Loïc, what is exactly behind this UAV simulation?
Well, this is a real physic 3D real-time simulation that you see here. It is based on Microsoft XNA for 3D rendering, and on different physic engines for physics. The simulated drone which is flying here has real physic attributes such as its mass, inertia, collision shapes… and it behaves realistically to torques and forces we apply to it. The physic equations are solved by precise discrete solvers, which make the drone having a behavior close to reality.
How did you build that simulated drone, and how long did that take?
The whole construction of the simulated drone did not take more than a few days.
First, we need the 3D model of the drone. That part of the work is done by our 3D designers, and it is actually the longer (1 or 2 days).
Then, we have to define the physic shapes of the drones, and physic constraints (mass, dynamic friction, static friction…). As the physic shapes are defined independently from the 3D model, we can choose our degree of complexity by using more or less accurate physic shapes.
Once the 3D model and physic properties are defined, I have attached some sensors, like the camera and the inclinometers.
Finally, I have added the rotors which are generic objects composed by a rotor blade and an engine (mechanic joint), so that the drone flying algorithm can be implemented.
That was over. The next step was to implement the drone control algorithms to test its behavior.
The simulated drone is supposed to behave like the real one, but you use generic objects, how can you explain that?
Generic objects such as the rotors have many parameters so that you can customize them to create your precise item. Here I have set particular max rotation speed and max torque for my rotors, but we could imagine setting other values for another drone.
What about the drone sensors (camera, inclinometers…)?
We also use generic elements. If you want to create a particular simulated motion camera, you just have to take our generic one and modify the parameters: size and quality of the pictures, number of frames per second, additional noise… That’s it!
Could you tell us more about how the wind is simulated?
The simulated wind is pre-generated considering the static objects (buildings…) which compose the simulation. This generation produces a 2D or 3D map which contains the wind information in each 3D point of the environment. Some of the algorithms we use for that come from the world of image processing.
The map is then inserted into the simulation and the wind is applied to every physic object.
You talk about “multi physic engine compatibility”, could you explain what it is exactly?
A physic engine is the program which computes the physic calculations. It contains the discrete solver used to integrate the equations. There are many physic engines available on the market: PhysX, Newton Game Dynamics, Havok, ODE…
Today, most of simulations are compatible with only one of these physic engines. What we do at SimplySim, is to provide the ability to be compatible with any of them, thanks to a technology that we have called SimplyDynamics. This is why we can talk about “multi physic engine compatibility”.
When you create a 3D simulation, do you only need the SimplyEngine?
No, I also need the 3D models of what I want to simulate. For the drone, we have modeled the drone and the 3D environment with 3D modeling tools which our not created by SimplySim. After that, we worked with the SimplyEngine and with our own edition tools.
Can you tell us a bit more about these edition tools ?
These edition tools represent an easy and graphic way to create the different parts of a simulation. For instance, we have one editor to design the physic properties, which is more user-friendly than typing code! There are a lot of other editors we prepare, some of them will be released in 2010, the goal is really to ease as much as possible the process of creating a 3D simulation.