kriswiner / LSM6DSM_LIS2MDL_LPS22HB

8 stars 3 forks source link

Yaw takes a long time to stabilise after excitment #4

Open joeholdsworth opened 5 years ago

joeholdsworth commented 5 years ago

Hi,

Firstly thank you for developing these boards they are great for someone like me. I have committed the design to my own PCB and I'm now in the process of testing it.

I am having a problem with yaw value taking a long time to stabilise after moving the device in yaw, it carry's on moving long after the initial excitement. Pitch and Roll look good.

I have the hard and soft iron calibration as per your example arduino code. Strangely without performing the calibration this sometimes doesn't happen and things look much better.

The update rate is 100Hz for the magnetometer and 170Hz for the accel and gyro. The fusion update rate is 500Hz although I have tried 1kHz and the problem seems to be worse.

For the magnetometer input into the Madgwick what should the magnetometer values range from, -1 -> +1 after scaling?

Thanks for your time,

Joe.

kriswiner commented 5 years ago

Several possibilities.

How do you know the sensors are calibrated? how do you check?

We usuall use 833 Hz gyro and accel sample rates. Then depending on the MCU our fusion rates and several kHz. I am not sure how you are selecting your fusion rate, but you could be running everything too slowly.

Are you feeding the Madgwick or Mahony filter with NED sensor data? These filters normalize the accel and mag data anyway, no need to do so in the main sketch. Gyro (the main sensor) should be provided in radians/sec.

On Thu, Mar 21, 2019 at 1:28 AM joeholdsworth notifications@github.com wrote:

Hi,

Firstly thank you for developing these boards they are great for someone like me. I have committed the design to my own PCB and I'm now in the process of testing it.

I am having a problem with yaw value taking a long time to stabilise after moving the device in yaw, it carry's on moving long after the initial excitement. Pitch and Roll look good.

I have the hard and soft iron calibration as per your example arduino code. Strangely without performing the calibration this sometimes doesn't happen and things look much better.

The update rate is 100Hz for the magnetometer and 170Hz for the accel and gyro. The fusion update rate is 500Hz although I have tried 1kHz and the problem seems to be worse.

For the magnetometer input into the Madgwick what should the magnetometer values range from, -1 -> +1 after scaling?

Thanks for your time,

Joe.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/kriswiner/LSM6DSM_LIS2MDL_LPS22HB/issues/4, or mute the thread https://github.com/notifications/unsubscribe-auth/AGY1qnncNQ6RgXX-SRTD9H5lHG1DP0tcks5vY0LGgaJpZM4cA69e .

joeholdsworth commented 5 years ago

Hi,

Thanks for the swift reply:

I am using the Madgwick filter

So for calibration:

At start up I calculate offsets from the gyros and accelerometers whilst the device is still (like you have done I believe). For every sensor sample I apply these offsets to the sensor values.

For the magnetometers I rotate the unit in all axis and cross axis quite a few times to calculate the bias and then the scaling error.

These, offsets and scaling are applied is applied as per your example to the gyro, accelerometer and magnetometer measurements before they are then used in the function update(ax, ay, az, gx, gy, gz, mx, my, mz) .

When you say normalize the data you mean that it doesn't matter that the magnetometer is scaled to +-1 on all axis?

Have you seen the symptoms described before for the yaw?

Thanks,

Joe Holdsworth

M: +44 (0)772 3029494 http://www.bloodhoundssc.com/

On Thu, 21 Mar 2019 at 15:33, Kris Winer notifications@github.com wrote:

Several possibilities.

How do you know the sensors are calibrated? how do you check?

We usuall use 833 Hz gyro and accel sample rates. Then depending on the MCU our fusion rates and several kHz. I am not sure how you are selecting your fusion rate, but you could be running everything too slowly.

Are you feeding the Madgwick or Mahony filter with NED sensor data? These filters normalize the accel and mag data anyway, no need to do so in the main sketch. Gyro (the main sensor) should be provided in radians/sec.

On Thu, Mar 21, 2019 at 1:28 AM joeholdsworth notifications@github.com wrote:

Hi,

Firstly thank you for developing these boards they are great for someone like me. I have committed the design to my own PCB and I'm now in the process of testing it.

I am having a problem with yaw value taking a long time to stabilise after moving the device in yaw, it carry's on moving long after the initial excitement. Pitch and Roll look good.

I have the hard and soft iron calibration as per your example arduino code. Strangely without performing the calibration this sometimes doesn't happen and things look much better.

The update rate is 100Hz for the magnetometer and 170Hz for the accel and gyro. The fusion update rate is 500Hz although I have tried 1kHz and the problem seems to be worse.

For the magnetometer input into the Madgwick what should the magnetometer values range from, -1 -> +1 after scaling?

Thanks for your time,

Joe.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/kriswiner/LSM6DSM_LIS2MDL_LPS22HB/issues/4, or mute the thread < https://github.com/notifications/unsubscribe-auth/AGY1qnncNQ6RgXX-SRTD9H5lHG1DP0tcks5vY0LGgaJpZM4cA69e

.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/kriswiner/LSM6DSM_LIS2MDL_LPS22HB/issues/4#issuecomment-475279055, or mute the thread https://github.com/notifications/unsubscribe-auth/Aiag-Y_r8KDWHbOlIXdG8-Jn28Kfco2Nks5vY6Y8gaJpZM4cA69e .