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

Support auto differentiation #1058

Open
marip8 opened this issue Nov 4, 2024 · 0 comments
Open

Support auto differentiation #1058

marip8 opened this issue Nov 4, 2024 · 0 comments
Labels
enhancement New feature or request

Comments

@marip8
Copy link
Contributor

marip8 commented Nov 4, 2024

It would be very helpful for many optimization applications if various elements of tesseract (like the scene graph) could support auto differentiation. Instead of manually defining gradients for custom optimization costs, auto differentiation could provide them out of the box.

Looking at some trajopt_ifoptconstraints, it seems that theSceneGraphandJointGroupobjects would be good first targets for supporting autodiff. I'm not sure how deep the support of autodiff types would need to go (e.g., regardingLink, Joint`, and geometry types), but my first interest would be in supporting autodiff only for the calculation of the position of links in the scene graph. It would also be interesting to support autodiff at the geometry level as well for costs like collision checking.

I the following high-level tasks would be required to support this change:

  • Choose autodiff library (e.g., Eigen)
  • Reformat relevant classes as templates (with current class names being the double template for backwards compatibility)
  • Replace gradient calculations with autodiff implementation
  • Test (e.g., in trajopt_ifopt Cartesian position constraint)
@marip8 marip8 added the enhancement New feature or request label Nov 4, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant