I want to predict the change in upper body kinetics due to different types of motion (e.g., raising right hand vs. raising right hand and tilting the body a little bit). I think I am going to start with example WheelTurn. The layout of the main.any file looks very different compared to the walking/running model. Do they follow the same steps (e.g., calculate kinematics from mocap data, then calculate forces from inverse dynamics analysis)? If so, in Mocap experiment, I assume we are not going to measure GRF but will only take gravity into account? Can you show me where the forces are calculated in the WheelTurn example?
The MoCap model is indeed quite different to the rest of the models. The other models show how to one can synthesize a needed motion by defining explicit or environment-driven joint angles.
In the case of WheelTurn example we have the following logic - the external rotation of GH joint is predefined, whereas the rest of angles are computed in the inverse kinematics analysis: the handle is moving and joints angles are computed to account for this motion. The motion of the handle corresponds to a normal revolute joint. So, the arm motion is, sort of, synthetic.
In the end of the JointsAndDrivers.any you can find the following lines:
// Joints between the human model and the environment
AnyFolder Joints = {
AnySphericalJoint HandHandle = {
AnySeg &Palm = Main.Model.HumanModel.Right.ShoulderArm.Seg.Glove;
AnyRefNode &Rim = Main.Model.EnvironmentModel.Wheel.Handle;
};
AnySphericalJoint HandRest = {
AnySeg &Palm = Main.Model.HumanModel.Left.ShoulderArm.Seg.Glove;
AnyRefNode &Ground = Main.Model.EnvironmentModel.GlobalRef.HandRest;
};
};
Spherical joints by default have reaction forces enabled for the linear DoFs, which means that you don’t need to do something extra to get the external forces act on the human body. It is, of course, not optimal to have it concentrated in one point and may need to be refined in case of more sensitive analysis.
Thanks, Pavel! That makes a lot of sense. Thanks for showing me how the human-environment connection was defined. I am still a little confused about how forces are calculated - can you direct me to the lines? Are the calculated internal forces based on both gravity or do they also incorporate the effects from acceleration/deceleration of the body motion, etc.?
Moreover, for studies involving subjects with pathological conditions, can we use real rather than synthetic arm/upper body motions? Is it possible to do MoCap experiment to acquire upper body kinematics, and then derive calculate the joint angles (similar to the MoCap model)? This way we can use the real motion to drive the model.
Please check the Environment.any file to see how the torque is prescribed to the crank. The forces that human is experiencing on the hand - are reaction forces, and they are a part of the AnySphericalJoint object. Check HandHandle.Constraints.Reaction. And yes, the simulation takes into account inertial forces and gravity automatically.
Secondly, if you have the MoCap trials you should use those with the MoCap model. The synthetic motion is used when real motion is not available and this example demonstrates how it can be set up.