Giter Site home page Giter Site logo

Comments (4)

gkjohnson avatar gkjohnson commented on May 24, 2024

Another option is exponential maps (#30). See appendix B here:

https://www2.ccs.neu.edu/research/gpc/publications/Vona__2009__Virtual_Articulation_and_Kinematic_Abstraction_in_Robotics.pdf

http://www.cs.cmu.edu/~spiff/moedit99/expmap.pdf

from closed-chain-ik-js.

gkjohnson avatar gkjohnson commented on May 24, 2024

Places that need to change if the joint is 3 rotational DoF:

Joint Target Error

Target error is just used for determining how far a joint is away from it's current angle target so we may want to calculate error in some way that doesn't use euler because of the redundant representations:

  • Setting jacobian error affect
  • Computing the error for a given target degree of freedom
    • This is where redundant representations can be an issue. Both rotations need to be converted to closest represented orientation vectors (consistently choose target or current to adjust so it can be done consistently on read back)
    • code reference

Computing Closure Error Adjustment

  • When computing the error delta from a DoF change we need to adjust it as though the orientation vector representation is being adjusted.

    • code reference -- this function call needs to be changed in order to adjust the orientation vector field rather than the euler values when computing the delta matrix to be consistent
  • The rest pose would need to be adjusted here and when setting joint values here.

EDIT: It may be best to book keep the rotations as exponential maps but then provide an API for manipulating it via euler. Or just providing a function for reading and setting rotations as exponential maps?

from closed-chain-ik-js.

gkjohnson avatar gkjohnson commented on May 24, 2024

In Appendix B of this paper the rotations are described as an "orientation vector" with rotation axis defined by the vector direction and rotation amount defined by vector length. The paper defines equations for converting these to and from quaternions but intuitively the axis angle functions should be able to be used for this.

Other Notes

  • Must be careful of which frame the orientation is defined in (parent frame).
  • When reaching a singularity ( > PI rotation ) the orientation vector is reparametrized.
  • Error computations need to take the shortest delta error.

from closed-chain-ik-js.

gkjohnson avatar gkjohnson commented on May 24, 2024

With the number of places that need to be carefully adjusted and rotation count checked it might be best to just bookkeep all rotation as orientation vectors internally and provide an API for getting and setting rotations via euler. OR a read function can be used in the solver that reads and sets joint values in an orientation vector format (would joint limits be harder to impose?)

from closed-chain-ik-js.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.