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

IMU information in ImuFactorExample #369

Open
aspears1935 opened this issue Jun 24, 2020 · 8 comments
Open

IMU information in ImuFactorExample #369

aspears1935 opened this issue Jun 24, 2020 · 8 comments
Assignees
Labels
docs Update to docs or README without code changes

Comments

@aspears1935
Copy link

Feature

If possible, can you please note the type of IMU you used for this example so it will be easier for users to translate the example noise sigma values to what they should use for their own IMUs? I see some old discussions of how to obtain these values for different IMUs, but don’t see any conclusive equations.

Motivation

Knowing the IMU you used can help us back out how those example numbers were obtained so we can figure out how to obtain the correct values for other IMUs. Thank you.

@varunagrawal
Copy link
Collaborator

I am actually working on this right now and any help would be appreciated.
Can you please point me to the discussions?

@varunagrawal varunagrawal self-assigned this Jun 24, 2020
@varunagrawal varunagrawal added the docs Update to docs or README without code changes label Jun 24, 2020
@mikesheffler
Copy link
Contributor

mikesheffler commented Jun 24, 2020

@varunagrawal Here is one time I waded in on the Google group mailing list on the topic.

One thing that is maybe not ideal about the status quo is that a lot of people jump onto the Kitti example as the first thing they try to understand (I did), and the IMU data has no documentation. My memory is that the IMU used in the Kitti tests was a OXTS RT3003. It's also my memory that I couldn't definitively connect the parameters used in the example to the datasheet. I think I got to the point where I realized that the noise numbers might have been an integer multiple of the datasheet value if you squinted just right and interpreted the datasheet in a way that I didn't think was correct. The bias noise were then integer multiples of the original noise numbers, which was not a crazy choice, given that the Allan variance plots aren't available for that IMU (I don't think).

Who converted the data and how is probably lost to the mists of time. 🙁

And, just to be clear, that's all about the Kitti example -- I don't think I know anything about the creation of ImuFactorExample.

@aspears1935
Copy link
Author

#213
https://github.com/ethz-asl/kalibr/wiki/IMU-Noise-Model

In some of the papers about the new IMU factor, the ADIS16448 IMU is mentioned, but the datasheet doesn't seem to correspond.

@mikesheffler
Copy link
Contributor

mikesheffler commented Jun 24, 2020

I don't know if this helps, but there is a nice thread on a (closed) issue on the Kalbr site about some of the gymnastics that get you from one conception of the data to another. It also notes that they use different parameters for the 16448 than they used to.

Edit: In this case, 'they' refers to the ETHZ crowd, but, if by some of the papers about the new IMU factor you mean stuff with Forster, than there's blurring between Georgia Tech and ETHZ and that's why I thought of that issue.

@aspears1935
Copy link
Author

Ok. Thanks. I will try to play around with the equations and see if I can match the numbers to any of the 16448 values to see if that might be what was used.

@andre-nguyen
Copy link
Contributor

I'd just like to chime in here and mention a few things which may or may not help:

  1. It's probably best to just go ahead and plot out the allan deviation curves instead of just relying on the datasheet as a sanity check.
  2. Some datasheets will give you the required values and it is relatively easy to convert the units to the expected ones in the Kalibr noise model some don't.
  3. Unless you have a good calibration setup (temperature controlled chamber, vibration isolated), you're basically going to be guesstimating the values anyways. This is especially true for the random walk part of the model where you're supposed to fit a +1/2 slope to (sort of) the right side of the plot. To do so you need to capture values for higher values of tau (10^3, 10^4, 10^5). Now assuming you capture data for 12 hours that would only give you 4-5 data points for tau = 10^4 resulting in very noisy graphs. But for a 12 hour timespan of data collection (as well as larger spans) you're bound to be affected by your building's thermostat or air currents. Note that this may not be true for decent industrial IMUs which ship with temperature compensation.
  4. I've seen a lot of examples floating around where they assume that the noise values are the same for each axis but this may not be true either, consider that internally some IMUs are composed of multiple mems chips its possible for each chip to have different noise properties. A great example is the xsens boards where you can literally see the two extra perpendicular boards holding the extra sensors.

image

@varunagrawal
Copy link
Collaborator

So the numbers from the OXTS don't match up. I guess we have to ask @lucacarlone directly...

@lucacarlone
Copy link
Contributor

@varunagrawal : I would check this thread about the measurement units required to instantiate the quantities in the IMU factor: #213 (comment).
The IMUFactorExample went through many iterations and it is not easy for me to backtrack the numbers we are using there.
You can also find an example where we use the IMU stats from the Euroc dataset (https://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets) in Kimera (https://github.com/MIT-SPARK/Kimera)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
docs Update to docs or README without code changes
Projects
None yet
Development

No branches or pull requests

5 participants