Passive Elements Misbehaving in Joint Reaction Analysis
Posted: Wed Feb 24, 2021 9:38 am
Hi everyone,
I have been using the dynamic neck model (https://simtk.org/projects/neckdynamics) for joint reaction analysis. I discovered a while back that the bushing elements that were used to represent passive stiffness in the cervical spine do not work correctly during static optimization. I believe the definition of bushings causes a singularity during static optimization and the force output file from static optimization contains impossibly high numbers (10^100+), making the file unsuitable for joint reaction analysis. In the past I have simply removed the bushings and acknowledged a model limitation when using static optimization. The problem resolves when using CMC.
Hoping to add passive elements back into the model that can run in static optimization, I have tried implementing both the ExpressionBasedCoordinateForce and the CoordinateLimitForce elements. These both solve the static optimization output problem (numbers are all believable), but I have run into another problem when running the joint reaction analysis. I have made sure to include the static optimization force file in the joint reaction analysis and include all the inputs used for static optimization. When I run the analysis tool I get the following warning:
WARNING: The forces file contains actuators that are not in the model's actuator set.
This makes sense, because the static optimization force output file includes forces for the passive elements. The problem is that joint reaction forces are quite a bit lower than expected. After some experimentation I believe the reserve actuator forces in the static optimization forces file don't get applied to the model. I am using reserve actuators to support the entire model (applied at the torso). When the passive elements are included, the joint reaction results indicate zero force in the ground joint (where a reserve actuator is supposed to keep the model from falling). I added a kinematics analysis and found the acceleration of the torso is 1g downward, even though the position stays at zero. When I remove the passive elements from the model all together and run the same SO and analysis setups, the reserve actuators are applied and the joint reaction forces again make sense. The torso acceleration also goes back to zero.
I would like to keep using SO instead of CMC, because I would like to explore a large range of postures/movements and appreciate the time saving SO affords. Interestingly, I have found that I can obtain reasonable results if I delete the columns from the forces file for the passive elements (and update the header appropriately). I can add this programmatically in MATLAB as a step between SO and analysis, but I want to make sure I understand what is happening behind the scenes so I don't miss anything crucial. Another strange behavior is that I can obtain reasonable results if I only have 1 ExpressionBasedCoordinateForce in the model. It appears the analysis tool can recover if only one column of force files are not in the actuator set? I may also be important to know the reserve actuators are appended to the model, meaning they show up after the passive elements in to SO force file.
Has anyone seen similar behavior in other models? Does anyone have a solution other than deleting the passive element forces from the SO forces file? Does delete the passive forces just cover up a more serious problem? Also, does anyone know more about the problem the bushing elements cause?
Thanks for your help!
I have been using the dynamic neck model (https://simtk.org/projects/neckdynamics) for joint reaction analysis. I discovered a while back that the bushing elements that were used to represent passive stiffness in the cervical spine do not work correctly during static optimization. I believe the definition of bushings causes a singularity during static optimization and the force output file from static optimization contains impossibly high numbers (10^100+), making the file unsuitable for joint reaction analysis. In the past I have simply removed the bushings and acknowledged a model limitation when using static optimization. The problem resolves when using CMC.
Hoping to add passive elements back into the model that can run in static optimization, I have tried implementing both the ExpressionBasedCoordinateForce and the CoordinateLimitForce elements. These both solve the static optimization output problem (numbers are all believable), but I have run into another problem when running the joint reaction analysis. I have made sure to include the static optimization force file in the joint reaction analysis and include all the inputs used for static optimization. When I run the analysis tool I get the following warning:
WARNING: The forces file contains actuators that are not in the model's actuator set.
This makes sense, because the static optimization force output file includes forces for the passive elements. The problem is that joint reaction forces are quite a bit lower than expected. After some experimentation I believe the reserve actuator forces in the static optimization forces file don't get applied to the model. I am using reserve actuators to support the entire model (applied at the torso). When the passive elements are included, the joint reaction results indicate zero force in the ground joint (where a reserve actuator is supposed to keep the model from falling). I added a kinematics analysis and found the acceleration of the torso is 1g downward, even though the position stays at zero. When I remove the passive elements from the model all together and run the same SO and analysis setups, the reserve actuators are applied and the joint reaction forces again make sense. The torso acceleration also goes back to zero.
I would like to keep using SO instead of CMC, because I would like to explore a large range of postures/movements and appreciate the time saving SO affords. Interestingly, I have found that I can obtain reasonable results if I delete the columns from the forces file for the passive elements (and update the header appropriately). I can add this programmatically in MATLAB as a step between SO and analysis, but I want to make sure I understand what is happening behind the scenes so I don't miss anything crucial. Another strange behavior is that I can obtain reasonable results if I only have 1 ExpressionBasedCoordinateForce in the model. It appears the analysis tool can recover if only one column of force files are not in the actuator set? I may also be important to know the reserve actuators are appended to the model, meaning they show up after the passive elements in to SO force file.
Has anyone seen similar behavior in other models? Does anyone have a solution other than deleting the passive element forces from the SO forces file? Does delete the passive forces just cover up a more serious problem? Also, does anyone know more about the problem the bushing elements cause?
Thanks for your help!