# 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.