inav icon indicating copy to clipboard operation
inav copied to clipboard

Fixed althold issue in surface mode for multirotors

Open ultrazar opened this issue 6 months ago • 5 comments

Some people, including me, were experiencing problems with maintaining altitude in surface mode using mtf-01 sensor. It seems that the problem was caused by high vibration levels which decreased the accelerometer weight down to 0.3, which is the minimum. But then, this value is squared in navigation_pos_estimator_agl.c, which means it goes down to 0.3*0.3=0.09 which is so low that the accelerometer almost becomes unused. Therefore, it was only using the rangefinder measurements but they have so much delay that the drone becomes unable to maintain a good altitude. https://github.com/iNavFlight/inav/blob/b5e8b2bf6817268e04086d1cf8a190e794ea6d1c/src/main/navigation/navigation_pos_estimator.c#L360 https://github.com/iNavFlight/inav/blob/b5e8b2bf6817268e04086d1cf8a190e794ea6d1c/src/main/navigation/navigation_pos_estimator_agl.c#L153

I fixed this issue primarily by disabling the dynamic accelerometer weight and setting it to fixed 1.0 ( which is the value it should get when there are normal vibration levels )

I added a new setting to do that, acc_weight. By default, it is set to zero and that means that its value is determined automatically (as normal). But you can set it to 1.0 and that means the accelerometer weight will always be 1.0. I particularly tested this version and works well.

Surface mode with 0.3 accelerometer weight: image Surface mode with 1.0 accelerometer weight: image

ultrazar avatar Aug 21 '24 22:08 ultrazar