Giter VIP home page Giter VIP logo

Comments (5)

yuvaltassa avatar yuvaltassa commented on June 7, 2024

Your motivation, as stated, does not make sense.

I'd like to calculate the velocity of the joints given the velocity of the "torso".

This is clearly impossible, the velocity of the torso does not uniquely determine the velocity of all the joints. Try clarifying what you want and we might be able to help.

from mujoco.

FrancescoTrotti avatar FrancescoTrotti commented on June 7, 2024

Thank you for your answer.
Yes, you are right I was wrong to indicate the joint name, I meant "root" and not "torso". As far as I know, when we talk about redundant systems, the assignment is not unique, and a given velocity in the Cartesian corresponds to an infinite number of joint configurations. However, if we consider, for instance, a manipulator where we have the Cartesian velocity of the end-effector, it is possible, using the inverse Jacobian, to also trace the velocities relative to the joints. I'm therefore wondering if it is possible in the halfcheetah contest to do something similar: given a velocity at 'root', calculate the relative velocities at the joints. It's currently unclear to me how to calculate the Jacobian correctly. In tests run with the code posted above, I actually run the inverse of the Jacobian multiplied by a velocity in the Cartesian at the "root," and I correctly get back the first three components, which in the documentation should correspond to X, Z sliding velocities and rate of rotation on Y of the "root", while the other velocities at the joints are zero. How can I correctly calculate the complete Jacobian to find the velocities at all joints? In mujoco's documentation, the function mj_jac requires specifying a "const mjtNum point[3]" and an "int body", but I don't understand how to compute the complete Jacobian for all joints.

Thanks again for your help

from mujoco.

yuvaltassa avatar yuvaltassa commented on June 7, 2024

if we consider, for instance, a manipulator where we have the Cartesian velocity of the end-effector, it is possible, using the inverse Jacobian, to also trace the velocities relative to the joints.

Yes, because the velocity of the end effector is a function of the joint velocities, if there is a smooth function, it has partial derivatives, the Jacobian exists.

I'm therefore wondering if it is possible in the halfcheetah contest to do something similar: given a velocity at 'root', calculate the relative velocities at the joints.

No, it is not possible. The root velocity is not a function of the joint velocities, but rather the other way around. The equivalent to the arm scenario is the Jacobian of the halfcheetah's foot w.r.t all joints, including the root. I understand that this would be nice to have, but it is not possible, as stated.

The only thing that would conceivably work is to use a data-based approach: measure lots of data of the moving cheetah and try to fit a non-parametric function to the data that attempts to predict what you want. This may or may not work well, depending on your dataset and ML proficiency. YMMV, good luck.

from mujoco.

Balint-H avatar Balint-H commented on June 7, 2024

@yuvaltassa What if we assume a no-slip condition with the foot/feet in contact with the ground? Would then the end effector Jacobians be related to the CoM motion Jacobian (-1 times)?

from mujoco.

yuvaltassa avatar yuvaltassa commented on June 7, 2024

@Balint-H, yes and no, the clue is in your own question. One could assume a no-slip condition with a foot, in which case you have a simple kinematic chain, but you have to pick a foot. If there are $n>1$ feet touching the ground you have a closed loop which is not analytic. Also, what if you are in a flight phase? Good luck picking a foot in that case 🙂

from mujoco.

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.