Non-Uniform Scaling 4.1
Posted: Wed Sep 02, 2020 9:56 am
Hi,
There seems to be an issue with the current output of inertia after non-uniform manual scaling. Our team has investigated this and come up with a suggested fix. Here is the issue posted on github. There is also a supporting document attached with more detail.
Identically scaling the gait2354 model in versions 3.3 and 4.1, comparison was performed for all segments. Scaled results were retrieved from the OpenSim GUI. Only difference in results was seen in inertia.
Looking into file body.cpp, we have been able to identify the problem in function scaleInertialProperties() line 218,
For a reason unknown to us, the symmetric matrix is not allowing value assignments to specific elements.
(a) inertia *= ...
(b) inertia[0][0] = ...
Assignment type (a) works and (b) gets tolerated by the compiler but does not work. The suggested fix we have is to change the inertia variable type to a standard 3 X 3 matrix.
This replacement worked when tested with the command line scaling tool.
Hope this helps and please let us know if there is a better fix.
Best regards,
Fouad
There seems to be an issue with the current output of inertia after non-uniform manual scaling. Our team has investigated this and come up with a suggested fix. Here is the issue posted on github. There is also a supporting document attached with more detail.
Identically scaling the gait2354 model in versions 3.3 and 4.1, comparison was performed for all segments. Scaled results were retrieved from the OpenSim GUI. Only difference in results was seen in inertia.
Looking into file body.cpp, we have been able to identify the problem in function scaleInertialProperties() line 218,
Code: Select all
SimTK::SymMat33 inertia = _inertia.asSymMat33();
(a) inertia *= ...
(b) inertia[0][0] = ...
Assignment type (a) works and (b) gets tolerated by the compiler but does not work. The suggested fix we have is to change the inertia variable type to a standard 3 X 3 matrix.
Code: Select all
SimTK::Mat33 inertia = _inertia.toMat33();
Hope this helps and please let us know if there is a better fix.
Best regards,
Fouad