Copter incorrectly detects level attitude in althold without GPS

After doing some maneuvers the copter detects incorrect level position. I recorded a video from the simulator. Even though it stays on flat surface, the HUD shows almost 5 degrees lean angle. Sometimes it drifts quite significantly

video and log files
What is the nature of such behavior ?

Usually that stems from either an hardware issue or from a missconfiguration.

First issue can be solved by reading section 1 of the “How to methodically configure and tune any ArduCopter” and the second issue is addressed in the following sections of the same post.

Following these recommendations will help you solve the problem on your own.

If you do not want to solve it yourself, and can’t be bothered learning new skills, wait for someone else to give you an answer

The example I provided is taken from SITL. So I don’t expect it to be a hardware issue. From my observation, this problem is more noticeable when GPS is turned off (SIM_GPS_DISABLE = 1 in this case) and I’m curious how GPS may affect the drone’s attitude.

GPS is used by the EKF3 to remove the long term IMU drift.

My setup is completely without GPS, so I turned it off for EKF3 where possible
EK3_SRC1_POSZ 1 # Baro
EK3_SRC1_YAW 1 # Compass

What else I can adjust to improve althold performance ?

Nope, disabling as many EKF3 features as possible will not give you better performance nor accuracy.

It will do exactly the opposite of what you want.

Please do read the documentation on GPS denied navigation, and be as little creative as possible.
If the results are still not good enough, then you need to get more expensive IMUs and improve vibration damping

1 Like

Non GPS navigation documentation is completely focused on different kinds of sensors. But here I don’t have any sensor. At the end of video, I landed completely. Also, I disarmed copter after that (so vibrations should gone away), but misalignment was still there.

Attitude errors are accomulative.
Just because vibrations disappear does not correct attitude. A gps receiver does correctly correct attitude errors.

what about manual modes like stabilize? I’m curious what is the difference from attitude control to maintain level position in stabilize mode comparing to althold.

Take a look at the system identification page, the differences are described there.