2024-04-17 08:14 AM - edited 2024-04-24 12:21 AM
Hi,
I'm trying to solve dead-reckoning over small distances and durations (few centimeters to few meters, over 2s to 20s approx. each time). After reading a lot of documentation ad publications, this seems pretty doable over small distances because the drift doesn't accumulate too much.
I have a LSM6DSV16B IMU sensor, use the SFLP block to compensate for gravity and gyroscope bias, then I filter and integrate the accelerometer data twice to estimate distance made (with speed reset after movement to remove integration error). At this point I'm not even trying to plot a trajectory, but just estimate an absolute distance made during a movement.
To test setup consists of a 1m long rail with small tilt, and an optical sensor measuring displacement (100Hz sampling) to compare the results. The sensor is placed on an object hanging from that rail, and dropped without initial speed. Sampling of accelerometer, gyroscope and SFLP, along with FIFO batching, are all done at 240Hz.
Extracted data from optical sensor gave me this (m, m/s^-2, m/s^-2 over time in ms), speed and acceleration are derived from displacement:
This results matches real-world behavior and serves as reference.
The same movement is measured with IMU, and below is the acceleration on X-Y-Z (acceleration in m/s^-2 over time in s), gravity is compensated with SFLP data:
This huge burst on the right comes from the sudden stop when reaching the end of the rail, so it is ignored.
Some basic interpretation :
- the signal completely looks like noise
- the initial acceleration isn't measured, so the speed doesn't rise up as it should, same for the displacement
- after integration, displacement over the whole measure is around 0.1 m on X and Y, 0 on Z
I reprodruce the same test several times, the plot looks the same and the results are always +/- 0.15m over X and Y, so I consider this to be noise integration rather than actual displacement. Sometimes the acceleration's mean is negative, so the speed becames negative, as if the IMU was moving in the opposite direction.
As you can see, I'm really far from estimating 1 m. Have anyone already tried this and can give me a clue ? Am I missing something here ?
Thanks !