manif icon indicating copy to clipboard operation
manif copied to clipboard

Add unit dual quaternion

Open artivis opened this issue 3 years ago • 7 comments

This PR adds the unit dual quaternion group, currently called DHu.

note: I suspect there is a better name than DHu

Draft implementation:

Group

  • [x] DHu::Random
  • [x] DHu::Inverse
  • [x] DHu::Compose
  • [x] DHu::normalize
  • [x] DHu::conjugate
  • [x] DHu::conjugatedual
  • [x] DHu::rotation
  • [x] DHu::translation
  • [x] DHu::isometry
  • [ ] DHu::adj
  • [ ] DHu::log
  • [ ] DHu::act
  • [ ] Jacobians
  • [ ] DHu::...

Tangent

  • [ ] DHuTangent::rjac
  • [ ] DHuTangent::ljac
  • [ ] DHuTangent::smallAdj
  • [ ] DHuTangent::hat
  • [ ] DHuTangent::exp
  • [ ] DHuTangent::...

Comes on top of #150.

Closes #164.

artivis avatar Aug 18 '20 02:08 artivis

Draft implementation (class layout and a few functions in b9f046007476b3ca72679445c942d2aca99f9e9c).

artivis avatar Aug 18 '20 02:08 artivis

Codecov Report

Merging #165 into devel will decrease coverage by 0.83%. The diff coverage is 92.19%.

@@            Coverage Diff             @@
##            devel     #165      +/-   ##
==========================================
- Coverage   98.23%   97.39%   -0.84%     
==========================================
  Files          37       43       +6     
  Lines        1130     1190      +60     
==========================================
+ Hits         1110     1159      +49     
- Misses         20       31      +11     

codecov-commenter avatar Aug 18 '20 02:08 codecov-commenter

We should start by exp. Did you find any suitable source of info? I don't have a very sharp mind lately and would prefer to copy-paste as much as possible from reputable sources, rather than develop from scratch (which is much more fun, funnily).

I guess after exp we'll be able to develop the adjoint. This is normally easy.

The trouble will be as always with J_l and J_r ....... I fear these.

Jacobians are easy once we have the blocks above. We can try to simplify the expressions resulting from the chain rule. Often we are luck with these simplifications.

joansola avatar Aug 18 '20 08:08 joansola

Nice job BTW! how do you code so quickly? Did you create a template or script for new classes in manif?

joansola avatar Aug 18 '20 08:08 joansola

We should start by exp. Did you find any suitable source of info? I don't have a very sharp mind lately and would prefer to copy-paste as much as possible from reputable sources, rather than develop from scratch (which is much more fun, funnily).

No I haven't found yet a source for exp/log, I'll look for it specifically. Definitely agree on developing as little as possible from scratch. So far I relied on this source.

how do you code so quickly? Did you create a template or script for new classes in manif?

Ahah that's one of the many advantages of manif. Between the code standardization and the paper formalism more than half the job is done. I do not have a script, I simply copy an existing class (e.g. here SE3 and related) and do some renaming accordingly. I could make a script but I'm not sure it is worth it time-wise.

artivis avatar Aug 18 '20 12:08 artivis

exp can be found in 5.1 here

joansola avatar Aug 18 '20 13:08 joansola

log in 8.6

joansola avatar Aug 18 '20 13:08 joansola