-
Notifications
You must be signed in to change notification settings - Fork 259
SE3(3)? Or SEk(d) #328
New issue
Have a question about this project? Sign up for a free GitHub account to open an i 8000 ssue 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
Comments
Hello @andre-nguyen thanks for this suggestion. Yes the SE_n(3) group is well known already as the n-isometries group, and several papers take advantage of it. For example see Section IV.A in: P. Vial, J. Solà, N. Palomeras and M. Carreras, "On Lie Group IMU and Linear Velocity Preintegration for Autonomous Navigation Considering the Earth Rotation Compensation, " in IEEE Transactions on Robotics, vol. 41, pp. 1346-1364, 2025, doi: 10.1109/TRO.2024.3521865, see alternate link. Mathematically, SE_n(3) is built from the same blocks as SE(3), and therefore the exponential map, the adjoint matrix and the Jacobian (left or right) are easy to build. All formulas can be found in Section IV.A of the paper above. Code-wise, I ignore how to achieve a class that can handle any number 'n' of isometries, e.g. a template class There is also the 2-frames group SE_{n+m}(3) which also may deserve attention. Again, the blocks to build it are those existing for SE(3) -- if I am not wrong --, and in this case we'd have two sets 'n' and 'm' of isometries. The hypothetical template class would be In this line of thinking, other groups are available:
And of course the same is true for the 2-dimensional cases. |
Hello,
Any such generic class would require a clear repetitive pattern to implement it, which might be the case here. It really depends on how complex the pattern... The |
Also, should this SEn(3) group be implemented, then the SE(3) and the SE_2(3) groups would be particular cases. They could perhaps be re-defined as typedefs of the first somehow:
Just a thought... Moreover, SO(3) would be a particular case
but I think this is utterly weird, I would not recommend it. |
I am thinking: The ordering of the tangent spaces for SE3 and SE23 are a little inconvenient to make them special cases of SEn3, because they start with rho:
but SEn3 should be one of these two options:
so I think it's best to leave it as a separate design. |
Would there be any interest in having |
I don't know if SGal(3) can be generalized to more than 2 vectors, since I dont know how time would interact. As per SEn(2), I guess it would also be interesting. But dimensions other than 2 or 3 make no sense, at least for robotics. As I said earlier, a SEmn<m,n>(D), with any m,n and with D in {2,3} makes also sense. But it's a different story. It is true that SEmn<0,n>(3) would be the same as SEn(3), but it's maybe an overkill. NOTE: In SE_mn(3), we have 'm' vectors in the local reference frame, and 'n' vectors in the global frame. |
Maybe we can check the formulas for SEmn(D) and see if we want to build one only template, and then just typedef the rest. However, this could impact the order of the tangent spaces, thereby not being backward compatible with the current SE(D) and SE2(3) I dont't know how to deal with changes that can impact current users of the lib in the community. I guess this must come in major revisions such as manif 1.0.0, 2.0.0, etc. In such occasion, we should reconsider harmonizing all the tangent space orderings. |
SEmn(D) would be more difficult to implement as it also requires a special handling of oplus/ominus (and I guess there are no more I would look at SEn(D) on its own, it might not be all that difficult to implement, and possibly consider SEmn(D) later on. I propose we pick the option As for the slight mess that currently is manif tangent spaces, yeah we should bring some order to that. Note that |
Sounds like a good plan to me, @artivis ! |
And yes, I think the best order is starting with |
I've stumbled upon two papers that reference the lie group SE3(3) [1], [2]. Admittedly, I don't have access to [1] but from [2] I can see that they add the magnetic field state and cite [3] as definition of SE3(3) but I don't see it being explicitly mentioned in [3].
Am I understanding correctly that there is a way to add more states to the lie group, call it
SE_k(d)
. As long as the state has dimensiond
and satisfies certain properties? Would it be possible and would it even make sense to have a generic implementation for groupSE_k(d)
?Would be very interested in hearing your thoughts @artivis @joansola !
The text was updated successfully, but these errors were encountered: