MicroArduCopter, 3" props, Omnibus Nano, Success!

I’ve also added https://github.com/ArduPilot/ardupilot/pull/14891 which could possibly make the FFT a little more accurate.

I did an outdoor flight with my 3 inch copter with omnibus v6 nano and small-copter-4.1 (built 5 days ago) with gyro_rate 1KHz (so nothing special).

I had Potential Thrust Loss errors, never seen before, where do I have to investigate? Battery, ESC, …?

Here the log:
https://drive.google.com/file/d/1KMcnSnuUzRrfgFW86CwTiytZ9y8FSpnh/view?usp=sharing

[Edit]
As battery I use 2 18650 Li-ion cell (Sony / Murata US18650VTC5 2600mAh - 30A), they could go down to 3V each without problems.
Maybe they are a little bit old, too much charge - discharge cycles?

It must be because your desired alt deviates so much from the actual altitude. Did you check that the baro alt is the same?

BAlt is similar to Alt (obviously with more error).

Did the RCOUT drop at the same time or stay high?

@andyp1per returning to your last PR on gyro rate I tested your last small-copter-4.1 (as of today) with my other 3 inch copter with revo-mini, same config as post #871

INS_GYRO_RATE = 1
FFT_WINDOW_SIZE = 64

[Edit]
Changed image, it was the wrong one.

I see strange behavior on RCOUT in the “falling” zone

That looks pretty good to me! The latest update removes the 188Hz pre-filter. You can probably squasuh the remaining peak more by using the double-notch but you may not have enough CPU for that

That’s what I fear

fill for 20 char min

You might be ok - you only need two peaks and two notches on each - so four total. Remind me what FFT options you are using?

No idea what is going on here

Here the FFT params:

FFT_ATT_REF,15.00000000
FFT_BW_HOVER,131.06542969
FFT_ENABLE,1
FFT_FREQ_HOVER,341.35119629
FFT_HMNC_FIT,10
FFT_HMNC_PEAK,0
FFT_MAXHZ,480
FFT_MINHZ,180
FFT_SAMPLE_MODE,0
FFT_SNR_REF,25.00000000
FFT_THR_REF,0.12224859
FFT_WINDOW_OLAP,0.50000000
FFT_WINDOW_SIZE,64

No problem, I will see, Thanks.

And INS_HMNC_OPTS?

You could set

FFT_HMNC_PEAK

To 1 to always track the first peak

Here INS_HNTCH_*

INS_HNTCH_ATT,40.00000000
INS_HNTCH_BW,150.00000000
INS_HNTCH_ENABLE,1
INS_HNTCH_FREQ,300.00000000
INS_HNTCH_HMNCS,3
INS_HNTCH_MODE,4
INS_HNTCH_OPTS,0
INS_HNTCH_REF,1.00000000

I will try with:

FFT_HMNC_PEAK,1
INS_HNTCH_OPTS,1
1 Like

FFT graph with previous config +

FFT_HMNC_PEAK,1
INS_HNTCH_OPTS,1

Accel0

Gyro0

Now I have also a static notch at 120Hz

[Edit]
Top accel
Bottom gyro

Before latest test I see this on GCS Messages:

[MAV 001:1] PreArm: EKF3 still initialising 
[MAV 001:1] PreArm: Radio failsafe on 
[MAV 001:1] PreArm: Internal errors 0x8000 l:391 ,main_loop_st 
[MAV 001:1] k 
[MAV 001:1] PreArm: EKF3 still initialising 
[MAV 001:1] PreArm: Radio failsafe on 
[MAV 001:1] PreArm: Internal errors 0x8000 l:391 ,main_loop_st 
[MAV 001:1] k 
[MAV 001:1] PreArm: EKF3 still initialising 
[MAV 001:1] PreArm: Radio failsafe on 
[MAV 001:1] PreArm: Internal errors 0x8000 l:391 ,main_loop_st 
[MAV 001:1] k 
[MAV 001:1] PreArm: EKF3 still initialising 
[MAV 001:1] PreArm: Radio failsafe on 
[MAV 001:1] PreArm: Internal errors 0x8000 l:391 ,main_loop_st 
[MAV 001:1] k 
[MAV 001:1] PreArm: EKF3 still initialising 
[MAV 001:1] PreArm: Radio failsafe on 
[MAV 001:1] PreArm: Internal errors 0x8000 l:391 ,main_loop_st 
[MAV 001:1] k 
[MAV 001:1] PreArm: Radio failsafe on 
[MAV 001:1] PreArm: Internal errors 0x8000 l:391 ,main_loop_st 
[MAV 001:1] k 
[MAV 001:1] PreArm: Radio failsafe on 
[MAV 001:1] PreArm: Internal errors 0x8000 l:391 ,main_loop_st 
[MAV 001:1] k 
[MAV 001:1] PreArm: Radio failsafe on 
[MAV 001:1] PreArm: Internal errors 0x8000 l:391 ,main_loop_st 
[MAV 001:1] k 
[MAV 001:1] Radio Failsafe Cleared 
[MAV 001:1] PreArm: Internal errors 0x8000 l:391 ,main_loop_st 
[MAV 001:1] k 
[MAV 001:1] PreArm: Internal errors 0x8000 l:391 ,main_loop_st 
[MAV 001:1] k 
[MAV 001:1] PreArm: EKF3 still initialising 
[MAV 001:1] PreArm: Internal errors 0x8000 l:391 ,main_loop_st 
[MAV 001:1] k 
[MAV 001:1] PreArm: Internal errors 0x8000 l:391 ,main_loop_st 
[MAV 001:1] k 
[MAV 001:1] PreArm: Internal errors 0x8000 l:391 ,main_loop_st 
[MAV 001:1] k 

Then I rebooted and done the test OK.

Looks like its worse, probably not enough CPU.

@andyp1per I was thinking about Nyquist frequency, folding, aliases, things I studied many years ago and now I am a little bit confused.

The accel FFT spectrum (pre-filter) on post #887 seems to me sampled at 1KHz and not 2KHz, I say this because is near perfectly symmetrical around 500Hz, 0 to 500Hz the signal, 500Hz to 1000Hz the folding. Am I wrong?

I report here the FFT in question
Accel-Folding

Another thing i would like understand: when we sample, say the accel, at 1KHz all vibration at frequencies higher then 500Hz re-enter in the signal we sample as aliases. Is this right? Could this be cause of problems in stability (leaning)?

From what I remember the only way to eliminate aliases is to filter the signal in the analog domain to not let frequencies above Fs/2 enter the ADC. But in our case both the analog signal (accel) and the ADC are inside the IMU chip.

You are correct on all counts!

The MPU6000 will only go up to 1Khz on Accels, but 8Khz on Gyros - my PR allows these to be independent. So when you set the gyro rate to 2kz we downsample gyros to 2kz but accels remain at 1khz. You would need to have a ICM20689 to avoid this.

Aliasing is a problem, and we filter to avoid aliasing effects, but I don’t think it’s the problem.