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

Discussion in 'Support requests' 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.