-
Notifications
You must be signed in to change notification settings - Fork 1
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
(Special) Orthogonal / Unitary / Euclidean groups #17
Conversation
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #17 +/- ##
==========================================
+ Coverage 99.20% 99.50% +0.30%
==========================================
Files 13 21 +8
Lines 756 1625 +869
==========================================
+ Hits 750 1617 +867
- Misses 6 8 +2 ☔ View full report in Codecov by Sentry. |
Status update 1: In theory SE(n) is defined, in practice I am not able to dispatch on the new const. Hence the constructor still falls back to calling the general show (of semidirect product) @mateuszbaran can you maybe take a look? After an hour of trying I am a bit out of ideas what is wrong with my constant |
I've fixed the issue with SpecialEuclideanGroup alias 🙂 |
Nice. I would not have noticed the tuple necessary during the rest of the year. You changed one . to a map. Should I do that for the rest as well? |
Oh and sorry for the capitalisation foo – Mac OS does not distinguish that on files when loading them … super annoying. |
I generally prefer
No problem, that was an easy fix 🙂 |
…eGroups.jl into kellertuer/SOn-and-SEn
The main work today was a bit of structure, since now one of my main worries already works – So I am confident that this should not be too complicated – and am quite happy with how semidirect turned out. |
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…eGroups.jl into kellertuer/SOn-and-SEn
All dummies are there, now the rest is mainly getting all functions from the test suite implemented and tested. |
…ally needed. Starts transferring xp/log from Manifolds.jl for these.
…working on the right component (for left semi) and vice versa.
Final update for today (got a bit carried away)
Since we at least make code cov already happy with only 8 new lines – we had 6 before, but this PR is larger than all previous code... maybe that is ok? |
Nice! I think we can skip function jacobian_conjugate!(
G::LieGroup, J, g, h; B::AbstractBasis=DefaultLieAlgebraOrthogonalBasis()
)
Bb = get_basis(G, h, B)
Vs = get_vectors(G, h, Bb)
for i in eachindex(Vs)
get_coordinates!(G, view(J, :, i), g, diff_conjugate(G, g, h, Vs[i]), B)
end
return J
end This doesn't work because there are some issues with bases which we also might want to resolve here. I'm not 100% sure if I didn't mix |
Co-authored-by: Mateusz Baran <mateuszbaran89@gmail.com>
Hm, I do not yet understand this – neither your proposed code, nor why we have “some issues with bases” (and where), so I have to first read up on all that. |
This is calculating Jacobian by separately passing each basis vector through the |
Anyway, you'll see the issue when you try running this code. |
I mainly mean all the nitty gritty details, that the differential could be seen as a map between tangent spaces but for us the tangent spaces are all identified with the Lie group – but does that then involve The docs on the Jacobian are still a bit short on that so I have to track that down first before I can say something about your code – and I also would need a concrete example to run this on, otherwise I can not just run that code. |
Right, it might not be that straightforward and isn't crucial to this PR. I will just open an issue about |
thanks – I do agree that that should be provided, but I would need probably a day or two to get the notation in the docs right, understand the form and implement it correctly. I can do that after the ValidationLieGroup (which is my next plan after this PR) |
There is no rush, I'd just like to have |
I do fully agree on that. Then it is very good to have an issue open about that. |
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 think this is good enough now. I've opened one issue to check some aspects of SE(N) which are handled by Manifolds.jl but probably not here but it can be handled later (though before removing groups from Manifolds.jl). We should also note that quaternionic unitary needs to be handled (though just a point on the roadmap is enough).
SE(n) should be more generic here, because it works on (R,t), (R,t) and the matrix containing R t in homogeneous coordinates – but sure, performance is not my main area of expertise. |
I know, and that's good. I mean primarily performance, support for AD and handling different numeric types. |
Yes, very good to keep these in mind and have those aspects covered as well. Thanks for having that in mind. I will merge this later today after my meetings and lectures then. |
This PR aims to provide the special orthogonal group and the first concrete semidirect product: Special Euclidean, since the complex case is similar, this will also cover the special unitary case.
This PR resolves #15, since it introduces point and (Lie algebra) tangent vector types and carefully introduces all necessary passthroughs.
🛣️🗺️
OrthogonalGroup
SpecialOrthogonalGroup
SpecialEuclideanGroup
UnitrayGroup
SpecialUnitaryGroup
exp(G, Id, X)
toexp(G,X)
and similarlylog(G, Ig, g)
tolog(G, g)