Add group action param to Product Lie Group#2494
Add group action param to Product Lie Group#2494rohan-bansal wants to merge 21 commits intoborglab:developfrom
Conversation
|
Awesome start! Some quick comments:
|
|
Looks good to me. I was able to pull the code and run a unit test with the SD group. |
dellaert
left a comment
There was a problem hiding this comment.
Left some comments. And also love to see a little bit more comment in the code on how semi product is different. And it suspicious that in many cases the semi branch seems simpler.
|
@rohan-bansal ping |
|
Sorry for the delay @dellaert , have been feeling a bit under the weather. Changes:
The one thing I was not able to do that I would appreciate some guidance on is making the Expmap/Logmap generic for the semi-direct product. For a semidirect product |
|
I’ll email - I might have just the thing. |
| template <typename G, typename H> | ||
| ProductLieGroup<G, H> ProductLieGroup<G, H>::operator*( | ||
| // --------------------------------------------------------------------------- | ||
| // phi01Kernel: compute φ₀(A)=exp(A) and φ₁(A)=Σ Aᵏ/(k+1)! in one shot. |
There was a problem hiding this comment.
Pretty cool. But is this cheaper?
Also - maybe in a next PR - we need to think about a mechanism to special-case Rot3 and other G groups we have closed forms for.
There was a problem hiding this comment.
Good point, this is not intended to be cheaper than closed forms like the Rot3 kernels, and updated the comment to make that explicit. I agree that we should special-case these groups in a separate PR.
|
Status? |
|
From my end it looks ready for re-review. I did my best to be faithful to the PDFs, hopefully there are no mistakes; I would hope that the tests catch all of them. Just added another generality test with Rot2 x R2. |
|
My comment on |
|
Oh I see, I misinterpreted. Will make this change |
|
Updated. |
|
Replaced numerical code with analytical. |
I tried adding the group action parameter by way of a sibling class to ProductLieGroup, but the extra re-implementation felt unnecessary.
The version I ran with is implemented directly into the ProductLieGroup, keeping all the branches/if-checking in the internals, and exposing a lean public template/API.