DroneEngine is a numerical Quadcopter flight simulation. Its purpose is to provide a physical framework for developing motor control algorithms, sensor fusion algorithms, sensor testing as well as AI algorithms for autonomous flight operation.
The numeric simulation for calcualting the physical response of the Quadcopter to the four current motor speeds is based on the Euler integration method. Only the four motor speeds can be controlled. The rotors themselves just like the whole Quadcopter have their own moment of inertia, so new commands to a rotor speed change can not be applied instantaneously. Besides the response regarding the rotor thrust, also the aerodynamics are considered via air resistance depending on the speed of the Quadcopter as well as the air density varying with height. Also a simple model for ground interaction physics is implemented including colision detection and friction.
From the numeric simulation virtual sensor measurements can be extracted in various time intervals and a Gaussian error curve can be added. This way any sensor can be simulated, for example gyroscopes, accelerometers, barometers, ultrasonic sensors, GPS etc. Since the specific measurement intervals and errors can be freely modeled, the virtual sensors provide a very good approximation to real world measurements.
The virtual sensor measurements can be used to develop and benchmark sensor fusion algorithms such as low-/high-pass filters or Kalman filters.
In order to fly stable, a Quadcopter requires some sort of stabilisation method. Each of the four rotors has to be told how fast to rotate at any given moment in time for the Quadcopter to not crash. From any sort of position and velocity input data a control algorithm calclates the rotor speed. Advanced control algorithms even allow the Quadcopter to completely autonomous fly to any fix position in space. As input data either the direct and exact values from the numeric simulation can be used for developing the most efficient algorithms or pre-tested control algorithms can be fed with the output data from the sensor fusion algorithm to test overall flight robustness.