Gazebo SITL Cannot get a stable hover in stabilized mode


I’m trying to get the Iris model flying in Stabilized mode in the Gazebo SITL.

Altitude and position hold modes work fine, as does off board position commands via ROS.

Whenever I enter stabilized mode the drone will either ascend or descend, no equilibrium can be reached.
Most often the drone will end up bouncing on the floor, with any increase in throttle resulting in ascending forever.

I am using a Taranis X9D as a joystick via QGC.

I have attempted to adjust MPC_THR_HOVER and THR_MDL_FAC to many different values, I have adjusted my controller exponential to many values, and also tried having the center = 0 as opposed to the bottom position being 0 to overcome any central dead zone problems.

This problem occurs with the standard 3DR Iris model, as well as the Solo and then my own custom model also (A large, heavy Iris essentially).

I’m at a loss what to try next so any help is much appreciated.


@Uplinkc60 Please post a log.

I have uploaded the .ulg to Flight review, I hope it can be viewed via this link.

Google drive link to .ulg:

I performed a very short flight in stabilized mode, attempting to take off and hover, just trying to maintain altitude I mostly ignored roll and pitch so the drone is drifting all over the place.

This flight was done with my customized heavy Iris model, however I get very similar performance with the standard Iris.

Is this a mainline branch build?

Yes, but a couple of months old I think.

The reason I ask is that mainline can be in an inconsistent state of flux.
You might be better off using a released branch.
Also you might look at the PID tuning.

I checked and in fact I was using a released branch.

I do not think PID tuning is the problem, the base Iris model is well tuned, and exhibited the same problems as my own likely less well-tuned model.

I’ll see how it fairs with the latest stable release tomorrow, next thing to try is going to be another transmitter. I’m concerned it’s an issue with the underlying library in QGC used for getting the ‘joystick’ data.

I’d like to pass RC data directly via MAVLINK from the linux joystick library but I’m unsure on exactly how to do that yet.