Skip to content

How can i get relatively accurate data on sustained accelerations ? #298

Description

@earthPerson-001

I am using this algorithm to estimate roll,pitch and yaw for an electric scooter. The use case requires providing relatively accurate attitude estimation on sustained accelerations and vibrations.

What i have done

constexpr uint16_t GYRO_SAMPLE_RATE_HZ = 100;

FusionAhrsSettings settings = {
    .convention = FusionConventionNed,
    .gain = 0.05f,
    .gyroscopeRange = 2000.0f,
    .accelerationRejection = 10.0f,
    .magneticRejection = 10.0f,
    .recoveryTriggerPeriod = 10 * GYRO_SAMPLE_RATE_HZ,
};

The problem is that, scooter might go through sustained acceleration for very long time. And if the vehicle is still accelerating when the recovery is initiated, it will use invalid data to correct for the current state.

As per my understanding, accelerationRejection will reject any sensor values from accelerometer if the difference between system state (gyro predicted) and accelerometer only attitude is greater than accelerationRejection.

Now the question is:

  • How does acceleration recovery work ? Is my understanding correct or there is some sort of logic for using only valid sensor measurements for recovery ?
  • What if high acceleration is still present when recovery is initiated ?
  • If i set recoveryTriggerPeriod to 0, will accelerationRejection and magneticRejection still work ?
  • What should i do to be completely dependent upon gyro in cases of high acceleration ?

The used IMU sensor is LSM6DSOX and magnetometer is IIS2MDCTR.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions