-
Notifications
You must be signed in to change notification settings - Fork 782
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
Add Lie group capabilities to NavState #1613
base: develop
Are you sure you want to change the base?
Conversation
As a quick note, unit tests from #1582 should be added and pass |
CI also fails for Cayley variants.... |
CI fails. Can you comment on state of this PR? |
Hi, is there any plan for this ? I want to add NavState Between Factor for dynamics constraint between 2 states. My state is NavState as I want to conveniently use ImuFactor2 |
Gotcha, thanks for this amazing library btw. I kinda found a work around by setting up a hard constraint between a pose3 and NavStates Pose3 to be equal and I'm doing the between factors between the pose3. Is it an acceptable work around ? |
Hi @varunagrawal, there is an older SE2(3) implementation for GTSAM available from Bonnabel and Barrau's team: https://github.com/mbrossar/gtsam see, https://github.com/mbrossar/gtsam/blob/develop/gtsam/geometry/ExtendedPose3.h and https://github.com/mbrossar/gtsam/blob/develop/gtsam/geometry/ExtendedPose3.cpp |
Note that there is an error with coriolis term according to the paper cited above (https://ieeexplore.ieee.org/document/9519152): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Given your PR to bring in Brossard’s changes, @stefangachter , it would be good to finish this PR, but @varunagrawal is very focused on other things. As Varun remarked, there are some things left:
- the older retract/local I think should be left unchanged unless there is good reason to change them.
- Unit tests in this PR are not complete. Especially exp/log derivatives need to be validated I think.
Re the other PR:
- ExtendedPose3 should be removed In favor of the Lie NavState I think, no need to have two redundant classes.
- Coriolis and earth rotation correction might have to be added in a separate PR
- Focus (IMHO) should be on the “invariant” advantages
I’ll also paste these comments there.
@@ -133,6 +388,30 @@ NavState NavState::retract(const Vector9& xi, // | |||
//------------------------------------------------------------------------------ | |||
Vector9 NavState::localCoordinates(const NavState& g, // | |||
OptionalJacobian<9, 9> H1, OptionalJacobian<9, 9> H2) const { | |||
// return LieGroup<NavState, 9>::localCoordinates(g, H1, H2); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why was retract unchanged but local coordinates changed? And, what’s the difference with example and logmap?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I merged two PRs, #1930 and #1932. #1930 was based on this PR but also introduced ExpmapTranslation. #1932 simplified the Expmap jacobians of Pose3 and hence also of NavState::Expmap. I propose yet another PR takes care of retract and localCoordinates, and this one does the more advanced transpose operations... |
This PR makes$SE_2(3)$ Lie Group as defined in Barrau20icra.
NavState
theFrank: this PR needs to just finish the transpose group operations.