Can LT(Length of Tendon) have a negative value?

Discussion in 'Priority support' started by Dongmin Kim, Mar 5, 2020.

  1. Hello,

    I'm checking the FLV Curve in MuJoCo muscle dynamics by re-implement them + the force generation calculation part.

    When I calculate the value of LT of "EF" muscles in the default arm26.xml model, it was -0.51, which were negative value. It this value acceptable?

    Here are some values of arm26.xml model: (for EF)
    scale = 200
    range_min = 0.75
    range_max = 1.05
    lengthrange_min = 0.01
    lengthrange_max = 0.21
    lmin = 0.5
    lmax = 1.6
    vmax = 1.5
    fpmax = 1.3
    fvmax = 1.2
    peak_force (derived) = 126.92

    Calculation of LT and L0:
    (0.01 - LT) / L0 = 0.75
    (0.21 - LT) / L0 = 1.05
    LT (derived) = -0.51
    L0 (derived) = 0.68

    It makes value of L as:
    L = LM / L0 = (actuator_length - LT) / L0 = (actuator_length + 0.51) / 0.68

    Therefore, normalized L might have a value larger than (max value of LM) / L0.

    ===

    I tried to calculate the FP (Passive force of muscle) same as FLV.m (apologize for python)

    FP = np.zeros(self.n_tendons)

    cond1 = L <= 1
    cond2 = np.invert(cond1) & (L <= b)
    cond3 = np.invert(cond1 | cond2)

    FP[cond1] = 0
    FP[cond2] = 0.25 * self.muscle_fpmax[cond2] * np.power((L[cond2] - 1) / (b[cond2] - 1), 3)
    FP[cond3] = 0.25 * self.muscle_fpmax[cond3] * (1 + 3*(L[cond3] - b[cond3]) / (b[cond3] - 1))

    f_active = 0
    self.fiber_force = (f_active + f_passive) * self.muscle_peak_force

    FP and mjData.actuator_force, with the setting of mjModel.actuator_dyntype = mjDYN_NONE and ctrl = 0, was different.


    Please let me know if any calculation was wrong.

    Thanks.
     
  2. Emo Todorov

    Emo Todorov Administrator Staff Member

    Yes you can end up with negative LT if you apply the formulas. In real muscles this should never happen of course. But it can happen in the model if you set unrealistic parameters. Note that your lengthrange_min = 0.01. There is no way a real muscle+tendon will be so short, given that it can stretch all the way up lengthrange_max = 0.21.