INAV: how to setup asynchronous gyro

Together with version 1.4, INAV introduced asynchronous gyroscope processing. What is async gyro and why it is useful to have it, you can read here. In short worlds: data from gyroscope is read and filtered faster than PID controller updates motor and servo output.

When it is worth to enable asynchronous processing

In general, async gyro can be enabled when:

  • Flight controller does not ave enough processing power to run control loop faster than 2000us (500Hz mode). This is the case for all SMT32F1 boards like Naze32, Flip32 or CC3D
  • Flight controller is powerful enough to process PID control loop faster than ESC protocol (PWM, Oneshot125, Multishot) transfer commands to ESC and servos. This is usually true in case of all STM32F4 boards
  • INAV is setup on a “racer” machine that requires the best gyro signal possible

Async gyro should not be enabled when gyro and control loop frequency are the same. For example, 1kHz gyro and 1kHz control loop would give worse results than 1kHz synchronous processing.

How to enable async processing in Configurator

Async processing can be enabled in Configuration tab of INAV Configurator. Appropriate options are available only with INAV 1.4 or newer.

Asynchronous mode “Gyro”

In this mode, gyro sampling and filtering is decoupled from PID main loop and executed separately. In this mode, gyro_sync is forced and is always ON.

Frequencies available in “Gyroscope task frequency” and “Flight Controller Loop Time” depends on chosen “Gyroscope LPF cutoff frequency”. Gyro task frequency should be kept above Control Loop Frequency.

Asynchronous mode “All”

In this mode, Gyroscope sampling and filtering, Accelerometer sampling and filtering, Attitude computation and PID control loop are decoupled and run as separate tasks.

Warning Accelerometer accuracy might be lowered if task frequency is too low. Attitude task frequency should be kept below Accelerometer task frequency.

This mode is not suggested for GPS assisted UAVs. GPS assisted UAVs should use asynchronous mode None or Gyro.

Tips

  • I’m not using async processing on “big” machines.
  • On STM32F1 I’m using 1kHz gyro and 500Hz control loop
  • On SP Racing F3 I’m using 2kHz gyro and 1kHz control loop. I2C is not fast enough to retrieve data faster than that
  • All my STM32F4 birds uses 8kHz gyro and 2kHz control loop. If I do not need accelerometer (racers), I also set 250Hz accelerometer task and 100Hz attitude task. If I need accelerometer (navigation), I leave them synchronous with control loop for best performance.

10 thoughts on “INAV: how to setup asynchronous gyro

  1. When I enabled Asynchronous mode “All” on my SPRacing F3 the CPU load got up to over 500%. I didn’t try Asynchronous mode “Gyro”. Would it be a big advantage on my ZMR250 to use Asynchronous mode “Gyro”?

    1. Verify gyro, acc, attitude and PID tasks frequencies. SPracingF3 rather will not be able to do more than 2kHz on gyro and 500Hz on PID loop. Also verify if you have i2c overclocking enabled

  2. hi , what would be a recomended setup for a 350 quad, 950grams with battery .Oneshot125 and a F4 flightcontroller. Should i use async gyro ? and what looptime ? Im using inav 1.6 and the craft is just for navigation. No racing .Thanks.

  3. Hello all,
    I just set up a 450 with a Spracing Evo, 4s 5000mh, 700kv motors running 11″ props, blheli-s on multishot, 2 kHz on gyro, 1khz on pid loop.
    Also adjusted p gain to 60, 70, and 85, I gains to 40, 40, and 50, d gains to 20, 20 and 0, and rates to 720/sec roll, pitch, and yaw.
    Only had 2 flights so far, but flys amazing.
    Did have a lot of trouble trying to get a micro (18×18) gps working, (couldn’t get it to work at all), but took the old gps off of my Pixhawk quad, wired it in and worked right away.

  4. Why does inav in profiles for a heavy quad with 10 inch props and optional gps assisted recommend asynch gyro? You recomend async none for gps assisted. Well thanks for the article.

Leave a Reply

Your email address will not be published.