The activation dynamics is implemented exactly as in the 2016 paper, but this results in activation and deactivation happening at almost the same speed. The function f is intended as a "soft switch" between activation (a-e < 0) and deactivation (a-e > 0). But it's too soft, the value of f stays very close to 0.5 over the whole range of inputs (a-e ranging from -1 to 1).
I suspect that the tanhSteepness parameter should have been 10 instead of 0.1.
See:
|
static const double tanhSteepness = 0.1; |
I ran some simulations to see the response to a 1 Hz square wave excitation, and this confirms that activation and deactivation speeds are very similar.
I contacted Friedl for input, a few weeks ago, but received no reply yet.
The activation dynamics is implemented exactly as in the 2016 paper, but this results in activation and deactivation happening at almost the same speed. The function f is intended as a "soft switch" between activation (a-e < 0) and deactivation (a-e > 0). But it's too soft, the value of f stays very close to 0.5 over the whole range of inputs (a-e ranging from -1 to 1).
I suspect that the tanhSteepness parameter should have been 10 instead of 0.1.
See:
opensim-core/OpenSim/Actuators/DeGrooteFregly2016Muscle.cpp
Line 208 in b4ba7ca
I ran some simulations to see the response to a 1 Hz square wave excitation, and this confirms that activation and deactivation speeds are very similar.
I contacted Friedl for input, a few weeks ago, but received no reply yet.