Jump to content
Tekomoro

Mag and Heading Drift in imu 2 brick

Recommended Posts

Hello,

I am using imu v2 brick and the heading is drifting each time i move the imu around then, bring it back to the original orientation

here, graph of my data

 

 

spacer.png

Data File : https://drive.google.com/open?id=10oZmZbXHNbt_hVxKdvHcBp-fRI97i6LU

at start the heading value is "359.6"

after moving the imu around it was "132.25"

moving it around again it was "133.3"

i have 2 problems here,

1: the change from 359 to 132 is strange

2: drift from 132 to 133 .. sometimes it goes high up to 20 degrees drift

I also noticed that there is a drift in magZ mainly so, any suggestions ?

Thank You,

Edited by Tekomoro

Share this post


Link to post
Share on other sites

Did you start you test with the IMU Brick in green calibration state, see:

https://www.tinkerforge.com/en/doc/Hardware/Bricks/IMU_V2_Brick.html#calibration

Do you have anything near to the IMU Brick that produces a (changing) magnetic field? For example, try to stay away from monitors even modern TFT ones. Try moving the IMU Brick near to a running monitor without rotating it and see that the orientation will rotate due to the magnetic fields of the monitor.

Share this post


Link to post
Share on other sites

  

34 minutes ago, photron said:

Did you start you test with the IMU Brick in green calibration state, see:

https://www.tinkerforge.com/en/doc/Hardware/Bricks/IMU_V2_Brick.html#calibration

Do you have anything near to the IMU Brick that produces a (changing) magnetic field? For example, try to stay away from monitors even modern TFT ones. Try moving the IMU Brick near to a running monitor without rotating it and see that the orientation will rotate due to the magnetic fields of the monitor.

Thank You for your response,

I did calibrate it and saved the calibration, but do you mean that before I start I have to wait until the calibration state value is 0b111111 ?

I don't have any varying magnetic field source around the device, but is a piece of metal considered a source of changing mag. field?

I did the test again and that is the output [Heading] for each time I move the imu and bring it back to its initial position:

[130, 135.12, 135.06, 131.81, 130.4, 136.56, 137.6, 135.19, 136.25, 131.81, 135.31]

Still varies within 6 degrees in the same orientation.

Share this post


Link to post
Share on other sites

Hi,

The data sheet of the IMU shows on page 15, that the heading error can be ±2.5 degree or more: "The heading accuracy depends on hardware and software. A fully calibrated sensor and ideal tilt compensation are assumed." (for ±2.5 degree). So your observed error of ±3 degree can be explained mostly by that. Also the sensor fuses the measurements of the magnetometer, gyroscope and accelerometer, which could increase the error a bit.

The sudden jump from 359 to 132 degree you've observed, could be explained with the calibration, that the sensor does continously: The sensor always recalibrates its measurements. If you call save calibration (or use the Brick Viewer for this), the current calibration is stored in flash, so that the brick has not start completely fresh again on start-up. Maybe the sensor was adapting to your environment, while your first test was running, generating the observed jump.

Share this post


Link to post
Share on other sites

Google around and you will find countless issues with the Bosch BNO055 and it's auto calibration routines especially around 'heading' or yaw.

I tried absolutely everything and the Tinkerforge guys were great with a small change in the firmware that allowed a different mode to be enabled but I was never successful in getting a reliable and consistent heading.

I gave up and went for a separate IMU but still integrated with the rest of the boards from Tinkerforge

Share this post


Link to post
Share on other sites

Also, if you only need an accurate heading and don't care for the other measurements of the IMU, you can use a Compass Bricklet. This Bricklet can measure the heading with a precision of ± 1 degree, but is more sensitive to magnetic field disturbances.

Share this post


Link to post
Share on other sites
On 11/25/2019 at 3:15 PM, rtrbt said:

Hi,

The data sheet of the IMU shows on page 15, that the heading error can be ±2.5 degree or more: "The heading accuracy depends on hardware and software. A fully calibrated sensor and ideal tilt compensation are assumed." (for ±2.5 degree). So your observed error of ±3 degree can be explained mostly by that. Also the sensor fuses the measurements of the magnetometer, gyroscope and accelerometer, which could increase the error a bit.

The sudden jump from 359 to 132 degree you've observed, could be explained with the calibration, that the sensor does continously: The sensor always recalibrates its measurements. If you call save calibration (or use the Brick Viewer for this), the current calibration is stored in flash, so that the brick has not start completely fresh again on start-up. Maybe the sensor was adapting to your environment, while your first test was running, generating the observed jump.

Thank you rtrbt,

I tried many calibrations and all are the same, the error still high for me, sometimes it goes as high as 20 degrees
 as i mentioned in the original post,

So, i don't think it is only calibration problem.

On 11/26/2019 at 8:06 PM, stevehayles said:

Google around and you will find countless issues with the Bosch BNO055 and it's auto calibration routines especially around 'heading' or yaw.

I tried absolutely everything and the Tinkerforge guys were great with a small change in the firmware that allowed a different mode to be enabled but I was never successful in getting a reliable and consistent heading.

I gave up and went for a separate IMU but still integrated with the rest of the boards from Tinkerforge

Thank you steve,

Can you tell me which imu you went for ?

 

On 11/27/2019 at 10:32 AM, rtrbt said:

Also, if you only need an accurate heading and don't care for the other measurements of the IMU, you can use a Compass Bricklet. This Bricklet can measure the heading with a precision of ± 1 degree, but is more sensitive to magnetic field disturbances.

Again, thank you

Going for something that is sensitive to magnetic isn't a good choice for me as i need it to work outdoors with another cars around and other field sources that i can't avoid

So in words you are telling me that this is the best i can get from the tinker brick, and I can only recalibrate it every time i see something like that [which isn't doable for me it will be mounted in a vehicle without ability to move it around for calibration]?

Share this post


Link to post
Share on other sites

As a last resort with the IMU Brick, you could try the fusion mode without magnetometer: Call set sensor fusion mode with the constant 2 (as documented for example here). This requires at least firmware 2.0.6.

Other possibilities depend on your exact use-case. If you want to get a useful heading in a moving vehicle, you could for example try to use a GPS 2.0 Bricklet.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...