Add Lie group capabilities to NavState#1613
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): |
dellaert
left a comment
There was a problem hiding this comment.
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.
| //------------------------------------------------------------------------------ | ||
| 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.
Why was retract unchanged but local coordinates changed? And, what’s the difference with example and logmap?
|
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... |
# Conflicts: # gtsam/geometry/Pose3.h # gtsam/navigation/NavState.cpp # gtsam/navigation/NavState.h

This PR makes$SE_2(3)$ Lie Group as defined in Barrau20icra.
NavStatetheFrank: this PR needs to just finish the transpose group operations.