Skip to content
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

Interest in Unit Dual Quaternions? #164

Open
artivis opened this issue Aug 14, 2020 · 12 comments · May be fixed by #165
Open

Interest in Unit Dual Quaternions? #164

artivis opened this issue Aug 14, 2020 · 12 comments · May be fixed by #165
Assignees
Labels
question Further information is requested

Comments

@artivis
Copy link
Owner

artivis commented Aug 14, 2020

After seeing this post on ROS Dicourse and the comments asking for a c++ implementation, I wondered if 'Unit Dual Quaternions' (DH_u I believe) would be an interesting/useful addition to manif given that it is somewhat equivalent to SE3.

@artivis artivis added the question Further information is requested label Aug 14, 2020
@joansola
Copy link
Collaborator

I agree. Just for the fun of it, and just because we could be the firsts to have it!

I however dont know how it works

But lets check it out

@joansola
Copy link
Collaborator

See appendix in https://cs.gmu.edu/~jmlien/teaching/cs451/uploads/Main/dual-quaternion.pdf for arithmetic.

Exp and Log are not in the paper. Neither the tangent space.

@artivis
Copy link
Owner Author

artivis commented Aug 17, 2020

Alright then I'll get started with the class layout and we can fill up the implementation as we uncover it.

What should I call the new class, DHu??

@joansola
Copy link
Collaborator

joansola commented Aug 17, 2020 via email

@artivis
Copy link
Owner Author

artivis commented Aug 17, 2020

No we should definitely keep both. DHu would be an alternative to SE3 for whomever wants to use it for whatever reason...

@prashanthr05
Copy link
Contributor

prashanthr05 commented Aug 17, 2020

Related python library from the ROS discourse https://github.com/Achllle/dual_quaternions

This could be really interesting. I am looking forward to this feature.

@artivis artivis linked a pull request Aug 18, 2020 that will close this issue
20 tasks
@joansola
Copy link
Collaborator

I believe this is a relevant relative https://dqrobotics.github.io/

@joansola
Copy link
Collaborator

I got in contact with Bruno Adorno @bvadorno @dqrobotics who is a specialist on dual quaternions.

@artivis
Copy link
Owner Author

artivis commented Nov 25, 2020

Good to hear! Is it something you want to pick up? I don't know when I'll have time to resume this.

@bvadorno
Copy link

Hi @joansola and @artivis!

It'd be my pleasure to help you guys in this endeavor. I've followed the discussion trail and there are some things that may be helpful to you.

DQ Robotics is implemented in C++, Matlab, and Python (actually we use bindings to access the C++ implementation, so on the high level the user sees Python code, but under the hood, everything runs in C++, which makes the Python code suitable for realtime applications).

Several operations that I see you guys need are already there: exponential and logarithmic maps, different Jacobians. I still have to see with @joansola if there is a Jacobian that matches the Jacobian you guys use. Probably yes, but since the library implements the general operations of dual quaternion algebra and dual quaternion calculus, only a subset of it is related to Lie Algebra, namely the subset of unit dual quaternions. Therefore, we still need to see which Jacobian is the one you guys usually work with.

We have recently published a paper showcasing the main points of the library that may be useful:

Adorno, Bruno Vilhena, and Murilo Marques Marinho. 2020. “DQ Robotics: A Library for Robot Modeling and Control.” IEEE Robotics & Automation Magazine, 0–0. https://doi.org/10.1109/MRA.2020.2997920. There is a version available on ArXiv.

The overall notation is described in something that I've been writing for a while and hopefully will become a book soon: Adorno, Bruno Vilhena. 2017. “Robot Kinematic Modeling and Control Based on Dual Quaternion Algebra -- Part I: Fundamentals.” You can download it here. The idea is to have three parts, and the first one is related to the fundamentals of dual quaternion algebra. It includes several elements that you guys often use in Lie Theory (the concept of groups, Lie Algebra, tangent space, etc.), but I tried to keep the jargon to a minimum so the material could be self-contained.

There are several things implemented in the library that are scattered around within the papers I co-authored, but they are usually cited in the library documentation. Whenever you get the chance to take a look at it, if there's anything I can do to help, please let me know.

Cheers,
Bruno

@joansola
Copy link
Collaborator

Hi Bruno welcome to the fun!!

@artivis
Copy link
Owner Author

artivis commented Nov 25, 2020

Hi @bvadorno,
Thanks a lot for the references! We will be looking into them 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants