Hello everybody,
I am currently working on a gait model with motion capture data and pressure insoles. I applied both into Anybody and the calculated knee reaction forces seem to be too high (as well as the forces from other joints). Especially the Anterior posterior force goes up to 600% BW and the Proximo distal force also increases up to 1.000% BW. My research showed that normal joint reaction forces in the knee while walking should be around 200-280%BW in the Proximo distal direction and only around 20% BW in the Anterior posterior direction.
I checked problems with the reference frame, applied the same model in a newer version and checked the applied ground reaction force, but didn’t find a problem. Some help or ideas would be great!
Thanks in advance,
Regards
Tabea
Hi Tabea,
Here are the things I can think of in this situation:
- is sync between mocap and pressure ok
- have you checked the applied pressure forces magnitude? does it resemble GRF predictions from same model.
- Pressure by nature does not have friction, how did you deal with this? if you have applied the pressure "forces" as vertical forces acting from ground to foot it will create a strictly vertical force to the foot. This will create very high forces in the joints because the resultant GRF is pointing straight up and not in any way aligned with the joints which is normally the case.
Do you have full-body mocap to drive the model, this would be useful to predict direction of GRF?
Best regards
Søren
Hi Søren,
First of all thank you for the quick reply!!
I checked the first two points you mentioned and both are not a problem! The third one could actually be part of the problem, I applied the forces through the following code:
//Sensor 1 links
AnyRefFrame &Marker1links = Main.HumanModel.BodyModel.Left.Leg.Seg.Foot.ConditionalContact_Nodes.Node22;
Marker1links = {
AnyRefNode Sensor1links = {
sRel = {0,0,0};
viewRefFrame.Visible = On;
viewRefFrame.RGB = {1,0,0};
AnyDrawRefFrame DrwNode = {
RGB = {0,0.32941176,0.62352941};
};
};
AnyDrawRefFrame drw1l={
ScaleXYZ={0.05,0.05,0.05};
RGB={1,0,0};
};
};
AnyForce3D SensorLoad1links = {
AnyRefFrame &Punkt1links = Main.HumanModel.BodyModel.Left.Leg.Seg.Foot.ConditionalContact_Nodes.Node22;
F = {0,0,Main.Studies.InverseDynamicStudy.FootLoads.TestF(Main.Studies.InverseDynamicStudy.t)[0]};
viewForce = {
Visible = On;
ForceScale = 100;
};
AnyFloat Fout1l = Fout;
};
The forces are imported as a text file. I created 16 nodes on each foot, because the pressure insoles used have 16 measuring points.
The force is now applied vertical in the global reference system (z is the vertical direction).
How can I align the now strictly vertical force with the joints? Should I somehow use the local coordinate system of the foot? And if so, how could I implement this?
Thanks again for the help
Best Regards
Tabea
Hi Søren,
I exchanged "F" to "Flocal", like mentioned in Anyscript Turtorials and changed the direction to "Y" so the force is always applied vertical to the Node of the foot, which decreased the joint reaction forces slightly, but the forces in general, and in the AnteriorPosterior direction especially, still remain very high (maximum reduction is about 10%)
Hi Tabea,
Unfortunately neither using global vertical direction or letting the forces follow the foot will resolve the problem as you have seen.
The best would be if you have measured fulll-body motion capture, is this the case?
If this is case you can in principle do the following, it is a little tricky, but the idea is to apply the measure force to a virtual force plate which has horizontal reactions enabled, and then do normal predictions between plate and foot. This basically ends up using the measured forces as "constraints" to the GRF prediction problem.
Create a specialized force plate: Here you apply the pressure to the plate not the foot, in the right location wrt to the plate. Then you do GRF prediction between foot and plate. The plate should have reactions in horizontal plane, allowing it to transmit frictional forces to the ground.
This will involve these model steps:
-
Creating a force plate: This is a segment, no mass and inertia, it should have reactions on for the horizontal dof. and axial rotation around vertical, the other directions should be off. Kinematically it is lock in space for all 6 dof.
-
Apply forces to plate: Make a dummy seg that follows foot exactly, but has no reactions to foot, your measured forces are applied to this new seg. Make an AnyReacForce between new seg and force plate. This will transmit the forces to the plate in the correct location.
-
Setup normal GRF prediction to apply forces to this new forceplate.
*You will need to have some weak residual actuators on the plate to allow it to be carried when the foot has no contact, otherwise it will lead to kkt errors in invers analysis.
Hope it makes sense and you have full-body mocap available ?
Otherwise please write again.
Best regards
Søren.
Hi Søren,
I am using full-body mocap. I understand your explanation and will try to implement it!!
However, I’m not sure this will solve my problem: For example, when I run the model completely without my GRF insole data and only with the GRF prediction model, the joint reaction forces are in the same (too high) range and only differ in the ratio between the legs — meaning that both legs are used to the same extent rather than one being significantly weaker.
Greetings
Tabea
Hi Tabea,
I would check the limits for contact detections in the GRF predictions, if these limits are to "high" it may mean that contact is a bit wrong and it may lead to strange forces. These plates has both a distance and velocity limit to play with.
At which instance of the gait are you seeing the high force?
Best regards
Søren