Skip to content

Support auto differentiation #1058

Open
@marip8

Description

@marip8

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)

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions