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

Draft: gather ik failure information in IkReturn #985

Merged
merged 162 commits into from
Feb 29, 2024
Merged

Conversation

Puttichai
Copy link
Collaborator

@Puttichai Puttichai commented Apr 28, 2021

Summary

This pull request introduces a class IkFailureInfo that gathers additional information on reasons why an IK computation fails. For example, if an IK call finishes with IKRA_RejectJointLimits, an ikFailureInfo instance will keep record of which robot configuration violates the limits.

Changes

  • Added new classes

    • IkFailureInfo: this stores information related to the failure such as robot configurations and ikparams.
    • IkFailureAccumulator: this stores caches of IkFailureInfo objects. When a valid pointer to IkFailureAccumulator is given to a FindIKSolution/FindIKSolutions call, the ik solver can retrieve IkFailureInfo from the accumulator, fill in related information, then store them in the output IkReturn. However, note that the implementation of filling failure information in IkFailureInfo and hence IkReturn is up to each ik solver.
  • IkReturn has a new member _vIkFailureInfos that stores pointers to IkFailureInfos that are filled with failure information.

  • PlannerStatus can now also store IkFailureInfos.

  • Added/modified python bindings

    • FindIKSolution and FindIKSolutions calls from python can now accept an ik failure accumulator as an input. If an accumulator is provided to the call and ikreturn=true, then ik solver can fill in failure information and output them through the returned IkReturn.
    # suppose an ik solver is set
    paccumulator = IkFailureAccumulator()
    ikreturn = manip.FindIKSolution(ikparam, IkFilterOptions.CheckEnvCollisions, True, True, paccumulator)
    ikfailureinfos = ikreturn.GetIkFailureInfos() # a list of PyIkFailureInfos

@Puttichai Puttichai requested a review from rdiankov April 28, 2021 02:40
@cielavenir
Copy link
Collaborator

sorry to bother you @ntohge, but do you know any progress on this pull request?

@rdiankov rdiankov merged commit 0594c63 into production Feb 29, 2024
1 check passed
@rdiankov rdiankov deleted the fill_vikreturns branch February 29, 2024 22:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants