-
Notifications
You must be signed in to change notification settings - Fork 246
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 SE_2(3) extended pose Lie group manifold to manif #152
Comments
Hi @prashanthr05, It would definitely be interesting to have I'm not sure either about the While totally optional, it would be great to see a toy example making use of To summarize, please do open a PR 👍. |
Great! I shall open a PR soon with the suggestions incorporated. |
Actually, I forgot to bring this up earlier. One of the important design choices is the serialization for the vector space in the case of semi-direct products with a rotation matrix, which affects the structure of the Adjoint matrix and the Jacobians. Right now, I notice for But, there are cases in which this serialization changes leading to lower-triangular Adjoint matrices (which is actually the case used in the papers linked above where they use Have you thought of providing the user with the choice of serialization for the vector space? |
There is no mandatory act function in a lie group. It depends on what we
act onto. Therefore, we can pick up any transformation we find practical to
have.
As a minimum default for se23.act, we should fold back to se3.act, which is
a plain rigid motion. Maybe we want to act on other objects than 3d points.
Which one? Only the users of se23 are in position of telling which is the
choice that makes more sense.
Once implemented, proper explanations like these must be added to the
documentation.
I think I would not leave it empty with an assert. But I have not thought
about it thoroughly.
Joan
…On Mon, Aug 3, 2020, 15:05 Jeremie Deray ***@***.***> wrote:
Hi @prashanthr05 <https://github.com/prashanthr05>,
It would definitely be interesting to have SE_2(3) in manif! I've had my
eyes on it for a time as a matter of fact. But I'm busy with a couple
(upcoming) redesigns (starting with #150
<#150>). However since you already
implemented it, feel free to open a PR as it is, I will take care of
'porting' it to the new design once that's ready.
I'm not sure either about the act implementation, maybe @joansola
<https://github.com/joansola> has an idea? In case it does not make sense
to implement it, we can put there a failing static_assert or such and
handle it in the test suite.
While totally optional, it would be great to see a toy example making use
of SE_2(3) accompanying the PR in the examples folder. That helps greatly
in terms of documentation. Similarly don't hesitate to reference papers
(and equations numbers) in the actual code documentation when possible.
To summarize, please do open a PR 👍.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#152 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAS2LPP6TSIQQSGBCP7M7WLR62YZRANCNFSM4PTECIGQ>
.
|
We encountered this 'issue' as well in the past. It is not really an issue but rather something to pay attention to.
I'm not sure how this could be implemented, especially since it changes some block-ordering in e.g. the Jacobians. I'm afraid such feature would only bloat the API and complexify the internal implementation - especially since I'm working on giving the user the choice of right/left Jacobians as proposed here. At this point I doubt it is worth the trouble. |
I understand. It would indeed complexify the implementations.
In that case then, if we extend towards composite manifolds (with direct products), would a default definition of an act() method make complete sense? Why I bring this up is the definition of act() in the LieGroupBase class. |
In that case then, if we extend towards composite manifolds, would a
default definition of an act() method make complete sense?
I'm not sure if I understand this right. Composite action I believe
deserves the same considerations as above. But it has in general poor
geometrical meaning. For example, R3xSO3xR3 would be a composite for SE23.
What does the action on 3d points mean? Translation plus rotation plus
translation? It makes no sense.
On Mon, Aug 3, 2020, 15:52 Joan Sola Ortega <joan.sola.ortega@upc.edu>
wrote:
… There is no mandatory act function in a lie group. It depends on what we
act onto. Therefore, we can pick up any transformation we find practical to
have.
As a minimum default for se23.act, we should fold back to se3.act, which
is a plain rigid motion. Maybe we want to act on other objects than 3d
points. Which one? Only the users of se23 are in position of telling which
is the choice that makes more sense.
Once implemented, proper explanations like these must be added to the
documentation.
I think I would not leave it empty with an assert. But I have not thought
about it thoroughly.
Joan
On Mon, Aug 3, 2020, 15:05 Jeremie Deray ***@***.***> wrote:
> Hi @prashanthr05 <https://github.com/prashanthr05>,
>
> It would definitely be interesting to have SE_2(3) in manif! I've had my
> eyes on it for a time as a matter of fact. But I'm busy with a couple
> (upcoming) redesigns (starting with #150
> <#150>). However since you already
> implemented it, feel free to open a PR as it is, I will take care of
> 'porting' it to the new design once that's ready.
>
> I'm not sure either about the act implementation, maybe @joansola
> <https://github.com/joansola> has an idea? In case it does not make
> sense to implement it, we can put there a failing static_assert or such
> and handle it in the test suite.
>
> While totally optional, it would be great to see a toy example making use
> of SE_2(3) accompanying the PR in the examples folder. That helps
> greatly in terms of documentation. Similarly don't hesitate to reference
> papers (and equations numbers) in the actual code documentation when
> possible.
>
> To summarize, please do open a PR 👍.
>
> —
> You are receiving this because you were mentioned.
> Reply to this email directly, view it on GitHub
> <#152 (comment)>, or
> unsubscribe
> <https://github.com/notifications/unsubscribe-auth/AAS2LPP6TSIQQSGBCP7M7WLR62YZRANCNFSM4PTECIGQ>
> .
>
|
Can this be closed following #154 merge? |
Yes, I think we can close this issue for now. Maybe if we are interested in the SLAM manifold ( |
Yes, open a new PR. The SE_{N+2}(3) manifold is in any case a new thing, therefore a new PR. |
I'm not convinced by the relevance of |
It was introduced for EKF-SLAM (1, 2) for embedding N landmark positions within the state along with the robot pose. However, I agree that implementing it would be more complicated. In any case, we can rename this issue and close it. |
Considering landmarks (thus In the case of |
Yes, it's dynamic. The author of the paper (one with contacts) has a minimal implementation of the Lie group here. I am not certain at the moment if it would be a good addition to the library or worth the effort/time. However, manif's Lie group base generic operators are always a plus. But if I ever end up giving it a try, I will definitely open a PR. |
Having said that we can close this issue. |
First of all, thank you for this great repository!
I would like to make a feature request for adding an additional Lie group$SE_2(3)$ (extended pose or double direct spatial isometry as introduced in The invariant extended Kalman filter as a stable observer, appendix A2 .
This can be useful in some applications using inertial measurement units. Please see, Associating Uncertainty to Extended Poses for on Lie Group IMU Preintegration with Rotating Earth, where the orientation, position and linear velocity (with the frame located in the origin of the body and the orientation same as the inertial frame) can be packed into a single Lie group.
Similarly. a possible extension could be towards a generic$SE_{N+2}(3)$ Lie group which can be useful for SLAM based applications. Please see Contact-Aided Invariant Extended Kalman Filtering for Legged Robot State Estimation.
@artivis Do you think it would be meaningful to have these Lie groups added to the repository?
I've made an initial implementation for$SE_2(3)$ in my fork with prashanthr05@7169899 and prashanthr05@c96f1f4
However, there is a missing implementation for the action of this Lie group on a vector,
act()
method. It was not clear to me about how this operation might work.Let me know what you think about this. If you agree, I can maybe open a PR. Thank you!
The text was updated successfully, but these errors were encountered: