Drive the knee joint of the right leg to straighten while sitting

Hello everyone!
My name is Alex and I am pretty new to Anybody
I want to drive the right knee joint to achieve a straight movement. However, when I carried out kinematics simulation, there was an error of "no Class Information". When I removed the fixed constraints of the seat cushion and the ground coordinate system, the kinematic simulation worked, but the movement of the human body was not a straight motion, but a standing motion. What should I change?I have uploaded my Anybody file.
Thank you all!
Alex
Manmove - p2.zip (9.8 KB)

Hi @Alex and welcome to the forum!

After a quick look at your model it seems that you have drivers that keep the feet on the ground which is counteracting your driver to flex the knee joint.
Try removing those for the foot.

Best regards,
Bjørn

Hi Bjørn!
Thank you very much for your help! I tried to find the driver of the soles of my feet, but I couldn't find it. Hope you can tell me where to cancel the procedure.
Best regards,
Alex

Hi @Alex

The drivers keeping the feet on the ground are located in the JointsAndDrivers.any file.

best regards,
Bjørn

Hi Bjørn!
Thank you very much for your help! According to the location you provided, I found the driving sentence for fixing the foot and commented it out. But when I perform kinematics analysis, the error "No Class Information" still appears. And when I annotated the program that fixes the cushion and the ground coordinate system, the human body model can move. But when I needed to perform kinetic analysis, "ERROR(OBJ.MCH.MUS4): F:/for the time/p..2/Ma..p2/Manmove.main.any(40): Study. InverseDynamics: Muscle recruitment solver: solver aborted due to singular KKT matrix” error, I don’t know where to modify, can you help me?
Best regards,
Alex

Hi @Alex

Can you try and send a screen dump of the "no class information" error ?

The KKT error is probably due to some constraint of a degree of freedom not being well defined. You mentioned that you altered the seat so it might be that you need another driver ?

Best regards,
Bjørn

Hi Bjørn!
This is my screen dump of the "no class information" error.
Thanks for your advice! I re-learned the content of the chapter on adding drivers and constraints to the model. Then I removed the seat cushion first, leaving only the procedure for driving the knee joint to rotate. Then I performed a kinematic analysis, and the model can move normally. But when I perform inverse kinetic analysis, it still shows "ERROR(OBJ.MCH.MUS4): F:/for the time/p..2/Ma..p2/Manmove.main.any(40): Study .InverseDynamics: Muscle recruitment solver: solver aborted due to singular KKT matrix". When I checked the degrees of freedom and constraints of the model, I found that there is one more constraint than the degrees of freedom at this time, as shown in the figure. Is this normal? Do I need to remove a driver from the mannequin?
I have uploaded the file of my modified mannequin.
Best regards,
Alex
Manmove - p2.zip (9.9 KB)

8deeb7886dfae3cf3969dfd76173029 c207cde7952d58c11df75bc46d80d44

Hi @Alex

You can work with overdeterminate kinematics in the AnyBody Modeling System if you switch on the correct solver. You can check in the study to see which is active - but since it does not give an error I think it is already active.

You can use the study information to see where the extra constraint is working and if it is conflicting with any other constraints - that might be the reason for your error.

Best regards,
Bjørn

Hi Bjørn!
Thank you so much for your help! I am very happy to tell you that after trying to refer to the original foot fixation procedure, I re-edited the fixed link between the pelvis and the ground coordinate system. Then the kinematics analysis was performed again, and it worked normally! In the next step I performed the inverse kinematics analysis, and the same, it worked normally. And got the analysis data I wanted. Thank you again for your help!
Best regards,
Alex

Hi Bjørn!
After I connect the exoskeleton to the human body, I drive the knee joint of the human body to rotate. Then perform inverse kinetic analysis. Check the force curve of the right leg muscles (such as VastusLateralisSuperior2). And compare with the graph after commenting out the exoskeleton import file. It was found that the value of the curve almost became 0 after importing the exoskeleton. What is the problem? Is the connection method of the exoskeleton I added wrong? Or something else? The following two pictures are the curves before and after the exoskeleton is imported. At the same time, I also uploaded files.
Best regards,
Alex!屏幕截图 2021-12-01 091806 屏幕截图 2021-12-01 092142 ManMachineCon_machinmove-p2.1.zip (147.9 KB)

Hi @Alex great to hear things are progressing!

If the muscle is not doing any work, then you have something else doing the work. I'm not sure how your Exo is working but itcould be other muscles, reaction forces on the exo constraints or any actuators on the exo?

Best regards,
Bjørn

Hi Bjørn!
Thank you very much for your answer! My connection function between EXO and the human body uses "AnyStdJoint". The connecting joints of the upper and lower parts of EXO also use the "AnyStdJoint" function. However, since it is not clear how to set the reaction force between the human body and EXO, there is no setting. Which function is used to set the reaction force between the human body and EXO?
Also, for what you call "something else doing the work", the joint I drive is the human knee joint instead of EXO, so why does the muscle fail to work? Is my driver function used incorrectly?
Best regards,
Alex

Hi Bjørn!
Thank you for your help! I re-studied the contents of the "Making Models using Solidworks" chapter to try to find a solution. But I found that the connection statement between the models used in the tutorial is also "AnyStdJoint". When I only annotated the connecting sentences of the upper and lower parts of EXO, but did not change the other parts, the muscle activation curve obtained by inverse dynamic analysis was similar to the curve that drives the human model without EXO. But when I add the connection statement of the upper and lower parts of EXO, the muscle activation curve obtained by inverse dynamic analysis becomes almost 0. What is wrong with my model?
Best regards,
Alex

Hi @Alex

Your AnyStdJoint have a Constraints.Reaction.Type property that is either On or Off - this controls the reaction force in the joint, if it is on then the joint will produce the force needed instead of the muscles spanning the joint.

Best regards,
Bjørn

Hi Bjørn!
Thank you for your help! I added the "Constraints.Reaction.Type" property under the "AnyStdJoint" and "AnyRevoluteJoint" statements and set them to "On". But the result of the inverse kinematics analysis is still wrong. I think it may be The connection program for the upper and lower parts of the EXO model is incorrect. What should I use for the connection program for the rotation center of the exoskeleton?
This is my setting for the EXO model. The "AnyStdJoint" in the first two rows is set as the contact setting between the human body and the EXO model, and the "AnyRevoluteJoint" in the third row is set as the connection setting between the upper and lower parts of the EXO model.
Best regards,
Alex

Hi @Alex

You should set the reaction forces for the connections between human and exo to Off instead.

Best regards,
Bjørn

Hi Bjørn!
Thank you for your help! I changed the connection between EXO and the mannequin to Off. And carried out inverse kinematics analysis. But it prompts KKT error. Where is the problem?
Best regards,
Alex


Hi @Alex

The KKT error indicate that the system is not stable.
You might be needing a constraint or driver at some degree of freedom.
Try and check the study information by double clicking the study from the model tree.

Best regards,
Bjørn

This topic was automatically closed 125 days after the last reply. New replies are no longer allowed.