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

Add Lie group capabilities to NavState #1613

Draft
wants to merge 13 commits into
base: develop
Choose a base branch
from
Draft

Conversation

varunagrawal
Copy link
Collaborator

This PR makes NavState the $SE_2(3)$ Lie Group as defined in Barrau20icra.

There are some things that need to be completed before this PR can land:

  • Jacobians for AdjointTranspose.
  • Verify computation of retract and localCoordinates. Specifically, need to derive the jacobians and verify they are the same as Barrau20icra.
  • If we remove the custom retract and localCoordinates, lots of unit tests fail, so it is important to check this too.

@varunagrawal varunagrawal self-assigned this Aug 29, 2023
@ProfFan
Copy link
Collaborator

ProfFan commented Aug 29, 2023

As a quick note, unit tests from #1582 should be added and pass

@dellaert
Copy link
Member

dellaert commented Sep 1, 2023

CI also fails for Cayley variants....

@varunagrawal varunagrawal linked an issue Sep 4, 2023 that may be closed by this pull request
@dellaert
Copy link
Member

CI fails. Can you comment on state of this PR?

@r4hul77
Copy link

r4hul77 commented May 6, 2024

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

@varunagrawal
Copy link
Collaborator Author

@dellaert @r4hul77 this paper and this paper have detailed descriptions of the various $SE_2(3)$ Lie algebra operations which I plan to implement. However, this will take a while since I am currently occupied with ICRA and PhD stuff.

@r4hul77
Copy link

r4hul77 commented May 9, 2024

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 ?

@stefangachter
Copy link
Contributor

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
This implementation was used to improve IMU pre-integration as described in the paper authored by Brossard: https://ieeexplore.ieee.org/document/9519152 Maybe you can crosscheck or leverage your implementation based on Brossard's implementation.

@stefangachter
Copy link
Contributor

Note that there is an error with coriolis term according to the paper cited above (https://ieeexplore.ieee.org/document/9519152):
image
As far as I can see, this is still not corrected:
https://github.com/mbrossar/gtsam/blob/a5e8d5f7f9ed77032f521b75c728176a42f2766c/gtsam/navigation/NavState.cpp#L222
Because it is part of NavState, it could be corrected within this PR.

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

Successfully merging this pull request may close these issues.

NavState between constraint
5 participants