ODE is the default physics engine of Gazebo that solves the equation of motion. But how is flight simulated though, which plugins does it use to simulate rotor dynamics.

Because ODE isn't suitable for accurate and precise flight dynamics (compared to JSBSim or a 6DoF solver that uses aerodynamics lookup table, I tried to find some research article that benchmarks ODE in terms of accuracy and stability against accurate computational Flight dynamics models but came across empty thus far....the benchmark analyses I found were against similar engines targeted at games for multi articulated systems, ground dynamics, but not for flight.


1 Answer 1


You haven't specified whether you're talking about Gazebo Classic or new Gazebo. So I'll answer for both.

Gazebo Classic: The core of the simulator doesn't support multicopters. There is a 3rd-party ROS/Gazebo package rotors_gazebo_plugins that adds this support. The provided plugin uses a more or less proper model where torque generates thrust and drag. Wind can be incorporated by a topic. You can inspect the source code here: https://github.com/ethz-asl/rotors_simulator/blob/master/rotors_gazebo_plugins/src/gazebo_motor_model.cpp .

(New) Gazebo: The core supports multicopters via plugin gazebo-multicopter-motor-model-system. The implementation is similar to the previously mentioned one. Wind effects are directly incorporated if wind is simulated in the world. New Gazebo uses DART or Bullet for dynamics, not ODE. The implementation is here: https://github.com/gazebosim/gz-sim/blob/gz-sim7/src/systems/multicopter_motor_model/MulticopterMotorModel.cc and you can also have a look at an example of the plugin configuration.

  • $\begingroup$ I am using Gazebo 11, which is Gazebo Classic. But doesn't Gazebo have some aerodynamic plugin that provides estimates of drag and lift. Are you saying this rotos_gazebo_plugins provide all thrust and moments. How is used by ODE ? is ODE even used for drone flight simulation ? how about accuracy ? $\endgroup$ Commented Sep 17, 2023 at 4:03
  • $\begingroup$ Is there a y to check which plugin is used for the purpose discussed above ? $\endgroup$ Commented Sep 17, 2023 at 4:21
  • $\begingroup$ The lift and drag are simulated locally just for the propellers. They are translated to locally acting forces which are then sent to ODE with the rest of the simulation state to compute the dynamics. It is also possible to simulate lift and drag of large surfaces (wings) via the builtin LiftDragPlugin (which is however meant for airplanes, so not sure how it works elsewhere). This plugin also works the same way - computes tbe resulting forces via aerodynamic equations and passes the forces to ODE. The model is described at classic.gazebosim.org/… . $\endgroup$ Commented Sep 17, 2023 at 6:58
  • $\begingroup$ Thanks, but how about accuracy ? are there benchmarks or evaluation of accuracy ? I did some research, all I find mainly is benchmarking with Bullet, Physx, for the accuracy of the integration, and the tests are mundane objects e.g. rolling ball or pendulum, but I found nothing thus far on flight evaluation. Do you happen to know something about that ? Thank you $\endgroup$ Commented Sep 17, 2023 at 18:45
  • 1
    $\begingroup$ Also, the (new) Gazebo plugin was used for all UAVs in DARPA SubT challenge and nobody was complaining about unrealistic behavior (except for crashes - in simulation, you can just fly under a ceiling pushing against it without a crash). $\endgroup$ Commented Sep 17, 2023 at 20:20

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.