Implement Muscle Actuator

Discussion in 'Simulation' started by Chris Saliba, Sep 15, 2016.

  1. Hi,

    I'm working on implementing a model using biological muscles as actuators. In the mujoco.h header file, there are definitions for mju_muscleFVL and mju_musclePassive functions. Most of the inputs to these functions make sense, but some I'm not sure of - the values in the prm input for example. I couldn't find a detailed description of the functions in the current documentation. What are the appropriate inputs to these functions?

    Thanks in advance,

  2. Emo Todorov

    Emo Todorov Administrator Staff Member

    These functions are just placeholders. They don't do anything for now. The plan is to implement a default muscle model at some point.
  3. Ok, thanks for the quick reply.
  4. Hello,

    Is there a default muscle model available now??
    I am very interested to use it in my project for lower limb model with powered exoskeleton.

  5. Emo Todorov

    Emo Todorov Administrator Staff Member

    There is no default muscle model. I will probably add one in version 1.60 due by the end of May.
  6. hi,

    Thanks for the information. Waiting for the update :)

  7. Any update regarding muscle functions?
  8. I'm also running into this. I'd specifically love it if tendons could act as non-linear springs (exponential rather than Hookean) as that would allow for easily implementation of Hill-type models. Maybe there's an easy way to do this already, if so please do let me know!
  9. Emo Todorov

    Emo Todorov Administrator Staff Member

  10. Very glad to see this! Thanks for all the hard work. I look forward to getting to play with them. A couple questions on a first pass reading

    1. Do the combined muscle+tendon structures have elastic properties by default? If not is there anything stopping a user setting the standard stiffness param on a tendon to have it display spring like behavior?

    2. Muscle fatigue comes in (at least) two components. 1. central (which is effectively a modifier on the control signal) and 2. peripheral (which is effectively a modifier on the activation level). For my model I'd love to provide a callback that sits between the tau filter and the FLV function. Is that possible?
  11. Emo Todorov

    Emo Todorov Administrator Staff Member

    1. Elasticity is built into the FLV function, in the sense that it has positive slope in the interval (lmin, 1). You could add linear elasticity to the tendon itself. But if you are talking about explicit modeling of a muscle and an elastic tendon in series, this is not done and is left to the user.

    2. You can replace the default filter with a callback, but it is easier to simply change tau over time. There is a separate tau for each muscle. You can also change the peak force F0 of the muscle.
    Ali Marjaninejad likes this.
  12. Dear Dr. Todorov (@Emo Todorov),
    I am using this feature on a project for a publication I am working on. Just to make sure I have understood it right, when you mentioned "add linear elasticity to the tendon itself" on the previous comment (how I added this was by declaring a non-zero stiffness value as a tendon property) it will be an element that can be modeled as a passive spring that can only pull and not push (and damper in case of non-zero damper/stiffness loss) added in parallel to the tendon. Is that correct?
    I also wanted to make sure about the unit for stiffness used in MuJoCo, it is N/m (SI) similar to all other units that are in SI, right??
    Thank you in advance :)
    Last edited: Sep 6, 2019