cancel
Showing results for 
Search instead for 
Did you mean: 

LSM6DSV16X drift issue

Gorbit99
Associate III

Hi!

We are a group trying to get reliable rotation data out of the LSM6DSV16X sensor. The accumulated error values in the datasheet seemed promising. However, we are currently in a state, where the sensor is returning gyroscope data, but the actual observed drift is much higher (upwards of 20 degrees of drift over the period of 5 minutes).

I'll try to summarize what we are doing, but the code for the project can be found here .

We are setting up the ODR for the gyroscope and the accelerometer to be 120Hz, as that is our polling frequency. We then set the BDR of the SFLP to be also at that frequency. We then run through the FIFO every iteration, extract out the relevant data and send it to our server software, where it gets displayed. This part works, we get about 120 updates every second, and the actual rotation data seems accurate. However if the sensor is continuously moved over 5 minutes, we get unacceptably big drift.

We are currently only really using the fusioned game vector for this problem, the gravity vector and the gyro bias are mostly just ignored. We are running with limits of 4g acceleration and 2000dps. We tried setting the ODR rate for the sensors higher (up to the maximum 7.86k limit), but that didn't help.

So the question is, how do you achieve the claimed accuracies listed in the datasheet?

5 REPLIES 5
RhSilicon
Lead

How is the hardware structure? Is it something like a drone, with no fixed reference, just gravity? The sensor seems to be operating relatively, it would be interesting if it could operate absolutely.

There are two ways that encoders represent rotation and angle information: a relative angle and an absolute angle, and the format of an electrical signal output from encoders differ depending on each expression way.

  • Relative angle: How many angles have you moved before and after moving?
  • Absolute angle: How many degrees are you in now from the home position?

Source: https://www.akm.com/us/en/products/rotation-angle-sensor/tutorial/type-mechanism-2/

 

It's an on body device. Think mocap mainly. the rotation is relative to a 0,0,0 gotten from a rotation reset. The returned quaternion is offset like that.

Gorbit99
Associate III

I'd appreciate any input on this. The current path we are trying to go down is manually setting gyroscope bias. But if we are doing something incorrectly, a pointer would be appreciated.

RhSilicon
Lead

I found this:

"the gyroscope angle readings drift by itself" "The error was just some delay in the gyroReading() function, I just deleted it"

https://forum.arduino.cc/t/mpu6050-gyroscope-readings-are-drifting/1113217

Thank you for the link, but we don't have anything of that sort in our library functions.