MicroArduCopter, 3" props, Omnibus Nano, Success!

Good suggestion. I will try to check what ESCs works below 3V. I have a variable DC power source. I will connect one ESC and motor at ~7V and will manually decrease the voltage down to 5V to see if the motor keeps working. I’ll try to do it along the week with the ones I have and with 2 more 4in1 ESCs that are on the way…
About the design, actually it changed a bit. I’m not using Benewake TFmini anymore. I replaced it by the Pololu VL53L1X LiDAR, less than 1g and 3.6m of range, and very tiny. The optical flow Cheerson CX-OF is working okay. I just have to calibrate it. So, I post some news along the week…

Hello, friend!
How is going your PID tuning? Did you got a stable config?
I was fixing a lot of issues and I will restart PID calibration tomorrow.

Yes, I basically increased P to about double what I got from AutoTune, and am happy with it now. I and D are still close to what I got with Auto Tune.
I’ll post a screen shot or parameter file this weekend.

1 Like

I have pretty much doubled everything for R/P and things seem pretty good. Still need to play with the notch a bit more.

1 Like

I want to try the notch filter, but how can I see what effect it is having? Is there anything I can plot from the log that shows post-filtered vibrations?

Have you tried simply making another FFT?

there seems to be some confusion about whether or not it shows you the post-filtered data…

here’s a thread where a few people say it doesn’t show you the post-filtered data… But then at the very end someone posts screen shots where there is a clear improvement in their notch enabled vs disabled FFT’s.

I am using the notch and was able to increase my PID’s w/ it enabled. But I have not yet made a new FFT so don’t personally know if it shows you the filtered data or not.

I haven’t tried enabling the notch yet. The wiki page on logging says the logged vibration levels are derived from raw IMU data. No mention of any filter params being applied. And the thread you linked seems pretty clear the FFT is using pre-filtered data. There just doesn’t seem to be a way to view the effect of the notch.

Hey guys,

finally found some time to do flights endurance tests on 2S Li-Ion cells:

My feeling at this moment is Arducopter is not very good at controlling such small quadcopters. Played a lot with PID tuning (see my youtube video about that posted in this thread previously). I do not understand why Arducopter is not on par for this with Betaflight for example ?

1 Like

Thanks for the video… that’s helpful info abou the batteries.

I think it’s because all betaflight does is improve the performance with filters and changes to the PID processing, etc. Things like the notch filter that changes w/ motor RPM, and the vast options for all the filters.
There’s a lot more going on in arducopter with sensors and autonomy, etc. We need to attract more developers who are interested in the performance aspects.

I am much happier w/ mine now than I was a couple months ago… Like I said recently, my changes are basically increasing the filters even more, which is less filtering (Gyro is at 100, yaw is at 20, etc). I enabled the notch filter. And I increased the PID’s. P is about double what I got w/ auto tune. Over .1 for all axes. I tune I for ‘feel’. And D is just a little higher than I got w/ auto tune.
Almost all the issues I was having seem to be taken care of w/ higher PID’s.

I also decreased EK2_ABIAS_P_NSE (thanks to andyp1per). At least a few of us were having trouble w/ these small inexpensive flight controllers having issues like consistently going out of level (adding bias to X or Y), or issues maintaining altitude (adding too much bias in Z). Lowering that setting fixed my level issue. Either these FC’s have issues w/ the IMU’s, or maybe it’s the frequency of the smaller props spinning, but this made my copter more predictable.

I’ll get a param file posted soon…

Here is a video I made about two 4 in 1 ESC models:

Will be interesting to compare with mine (although I use 4500Kv motors and 2 blade props)

Here is my last saved param file… I think my PID’s are slightly higher than this now, but this is close to what I’m flying… (I don’t have time to get my copter and flight laptop turned on, etc… Kids out of control this weekend)

1402, 8000kv, 2 blade 3" props, 2s.

z3.save.param (19.8 KB)

Only on week-ends ? Youre lucky! I am compassionate with this feeling :slight_smile:

Thx for the param file. I’ll experiment with it.

I did try using your filter and PID settings om my 3" microquad: it flies much much better, especially to resist winds. Also altitude hold works with quasi no jumping up and down which was annoying in my previous settings.
The difference with my previous PIDs is a strong increase in P settings values while the D setting is lower! Seems counter intuitive but obviously it works.

My filters were quite close to yours already. I doubled the sched loop rate to 800 (instead of default 400) like what you did.

With these changes I redid an endurance test, this time fully in alt hold. It flies with more control but I lost 1.5 min (13.5 min instead of 15 min). I guess the extra control of the ship burns more energy. So optimum PIDs for control might not be the optimum PIDs for endruance flights !

That’s good news!

About the efficiency, I noticed an immediate change when I lowered the EK2_ABIAS_P_NSE parameter. My hover throttle increased and my flight time decreased! I don’t understand why… But it changed.

You might want to try some other values or go back to default on that and see what changes you get… (Let me know if you do )

And yeah, my kid is usually pretty good and interested in my drones, so I can’t complain. He just gets a little hyper compared to his old middle aged dad sometimes. :slight_smile:

I’ll try playing with that one to see if it has any effect on endurance or control.

I think the key here is increasing INS_GYRO_FILTER to 80 or more (default is 20) and also decreasing PSC_ACCZ_P. By default I think the settings are optimized for copters with much more mass that need high input to change height and react slowly. I also found that decreasing MOT_SPIN_MIN helped the copter stop trying to take off when armed. I really wish there was better documentation on INS_GYRO_FILTER it really is so crucial to be high for smaller copters.

If you look at https://github.com/betaflight/betaflight/wiki/PID-Tuning-Guide you’ll see that the focus these days is totally on P. That seems to be a result of the much more powerful motors and efficient ESC’s that racing copters have now.

I’ve never found this has much effect for me.
Here are my settings (this is a bigger 180mm quad, but with quite powerful motors). QAV180-PIDPlus.param

My theory with EK2_ABIAS_P_NSE is that because the prop rpm’s are much higher than with bigger copters they tend to interfere with the gyro’s but are impossible to remove entirely (notch should help a bit here). Any moderately aggressive flying means that the EKF is trying to tune out the perceived “bias” meaning that over time the position estimate gets worse, but even more problematic is that if you then hover the “learned” bias is still there and the EKF is in all sorts of trouble. For me this meant that RTL would often fail if I flew for long enough. By reducing the bias learning, the position estimate will recover more quickly - and that is my experience.

1 Like

That makes sense, but I’m not sure… Because with my tilting issue, different FC’s do it differently. I went through 3 FC’s on this copter (all omnibus nano’s) and one was so bad I couldn’t fly… It just leaned and leaned to the point I couldn’t compensate for it. The other two did it less and I could work around it, but they were still different from each other. And there are tons of posts on the betaflight forums about omnibus boards doing the same thing for them… They eventually changed the way the driver for the IMU works, and added a few different filters that fixed it for everyone. That makes me think it’s more of an issue w/ either bad sensors, or noisy PSU or some sort of electrical problem. I don’t know for sure, though.

I wish I could understand why changing the abias_p_nse param changes the efficiency of the copter! It definitely does. I can go back and forth w/ that setting, and my hover throttle and flight time change.

Thanks for this useful information and explanations, it helps me understand these sometimes obscure parameters.

I’ve spent a peaceful bank holiday going through the filtering code :slight_smile:

My favorite explanation of filters so far is this: https://www.propwashed.com/betaflight-software-filters-setup-guide

My findings for ArduCopter:

  • Filters are applied in the order Raw Gyro -> LPF -> notch
  • Only filtered values are used by the PID controller
  • The notch filter only applies to the gyro
  • The batch sampler definitely shows only raw values, so there is no way it can show the effect of the notch
  • The primary problem with the LPF is latency, this is why altitude control is so bad with a low LPF value. The default for betaflight is 90Hz, which reduces latency but let’s more noise through. So INS_GYRO_FILTER=90 is a good option
  • The betaflight dynamic notch requires dshot telemetry :frowning:
  • The betaflight static notch is set to 400hz with another at 200Hz, this is pretty typical for small copters so a notch around 400Hz means you are on the right path. Interestingly the above article indicates that the LPF attenuates these frequencies anyway, but they are so strong that they still get through so the notch filter is much more aggressive in betaflight. Not sure about ours
  • Allowing the batch sampler to show filtered values would be pretty easy. I might try it.
  • More noise means your motors are working harder (they think the noise is pilot commanded) adjusting so get hotter and reduce flight time