Repository navigation
Merged
Conversation
each sub-map measures which way is up as it is built: every accelerometer sample is rotated into the keypose frame with the odometry's attitude at that sample's time and summed, and at the split the average has the platform's mean acceleration over the same span subtracted off, taken from the odometry trajectory by finite differences. what is left points up, and it goes into the graph as a unary edge on the keypose weighted by gravity_info_scale. global roll and pitch are observable with those edges, so the gauge holds the first keypose in position and yaw instead of fixing it outright. without an imu there are no gravity edges, the first keypose is held fully fixed the pose graph dump carries the gravity edges, and multi-session alignment reads them back into the joint graph and gauges the root session the same way.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
this pr starts really exploiting the IMU for slam, where before it was used only for the odometry.
each sub-map measures which way is up as it is built: every accelerometer sample is rotated into the keypose frame with the odometry's attitude at that sample's time and summed, and at the split the average has the platform's mean acceleration over the same span subtracted off, taken from the odometry trajectory by finite differences. what is left points up, a measurement of gravity by the imu, and it goes into the graph as a unary edge on the keypose weighted by gravity_info_scale. the edge is modelled as an S2 correction, an observation on the roll and pitch. improving that indirectly improves the z estimate as well.
See the following as an example (image also on the docs now):
and another
This will probably be one of the single biggest (numerical) improvements i'll ever make on this repo.

In numbers:
global roll and pitch are observable with those edges, so the gauge holds the first keypose in position and yaw instead of fixing it outright. without an imu there are no gravity edges, the first keypose is held fully fixed
the pose graph dump carries the gravity edges, and multi-session alignment reads them back into the joint graph and gauges the root session the same way.
needless to say, this pr was a massive amount of effort