Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LSM9DS1 Successors & Icebergs #7

Open
adamgarbo opened this issue Apr 19, 2024 · 3 comments
Open

LSM9DS1 Successors & Icebergs #7

adamgarbo opened this issue Apr 19, 2024 · 3 comments

Comments

@adamgarbo
Copy link

Hi @jremington,

Following along a similar vein to #6, I would be interested to get your thoughts on the current (2024) selection of IMUs available from Adafruit.

In my application, I am deploying tracking beacons on icebergs in the Canadian Arctic and using the IMUs to determine the iceberg's rotation (and orientation of the instrument): https://github.com/cryologger/ice-tracking-beacon

In the past, I've had very good success with the LSM303 (DLHC/D). When the LSM303 was discontinued, I switched to the LSM6DS33+LIS3MDL and using your LSM9DS1 calibration methods and tilt-compensated code, also achieved good results.

When the LSM6DS33 was discontinued, I switched to the LSM303AGR and again adapted your LSM9DS1 code. However, this time, the results were poor. Despite a seemingly successful calibration, the tilt-compensated heading measurements from deployed instruments were very limited in range (see include figure for example dataset) for icebergs that were confirmed to be making full 360° rotations. I suspect this was likely due to inadequate calibration and/or the magnetometer being less suitable for this application. I would happy for any additional ideas.

As the LSM303AGR doesn't appear to be the best choice of sensor, I'm in the market for a suitable drop-in replacement. Adafruit's offerings are not currently overly plentiful, but I'd be keen to get your thoughts of the most suitable sensor for my application. The LSM6DSOX + LIS3MDL looks like it could be a good option. I intend to continue using your tilt-compensated heading code.

Cheers,
Adam

imu

@jremington
Copy link
Owner

jremington commented Apr 19, 2024

"the tilt-compensated heading measurements from deployed instruments were very limited in range" sounds like an error in the code, in the magnetometer calibration, or both.

The apparent discontinuities in the Euler angle output might be a concern, but no conclusions can be drawn without further information on the X-axis sampling interval, whether this is observed in parallel experiments with other examples of the LSM303AGR, etc.

@adamgarbo
Copy link
Author

adamgarbo commented Apr 23, 2024

Hi Jim,

The dataset is from a single tracking beacon collecting hourly data. During this time, the LSM303AGR recorded heading values between 42-54°. However, satellite imagery confirmed the iceberg experienced greater rotation than this during this period. I have several more datasets of beacons in geographically distinct regions exhibiting the same behaviour, so this is some form of systematic error.

The pitch and roll discontinuities are likely due to the shifting of the beacon on the ice surface during different times of the year (i.e., due to weather, surface ablation, polar bears, etc.)

Cheers,
Adam

@jremington
Copy link
Owner

jremington commented Apr 23, 2024

It is 99% certain that either the magnetometer calibration or the code is incorrect. Check the handedness correction and axis alignment, as the sensor axis configurations differ between the LSM9DS1 and the LSM303AGR.

The LSM303AGR accelerometer and magnetometer coordinate systems are both left handed, according to the data sheet labeling scheme.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants