I exported a knee brace from Solidworks to the Plug-in-Gait model. The brace is composed of thigh and shank parts, and the knee joint is connected by a hinge. However, it does not match the position of the human body. If I adjust the ro of the thigh and shank separately, it will cause the nodes at the joint to not be on the same axis. Can you tell me how to move them at the same time to match the position of the Human? Thank you very much.
Thank you for your quick reply, I just need to adjust the ro of the thighs and shank to roughly match the position of the human body, even if the axes at the nodes of the knee joint are not on the same line, right?
That said I would advice that the axes are not pointing opposite to each other, so that the solver would have to rotate on segment 180 deg to solve a constraint.
The initial position just need to be good enough to get the kinematics started.
Thank you very much for your reply, I read this link and you said EXO with two parts connected by a revolute joint would need exactly 7 constraints to the human for it to work. Is it by adding 6 constraints on the thighs or shank, and then using one constraint to synchronize Exo knee flexion with the human body? In this case, the movement of the person and Exo is synchronized, the real situation should be out of sync and there is interaction between the Human and Exo. Could you give me some suggestions on adding constraints?Thank you again.
I have made some updates to the wiki page to reflect these questions
I understand why you ask this question, but if the motion between EXO and human can be regarded as relatively small I do not think this is a problem that the motion are in perfect sync, because you have full control on how the knee torque should be applied either as a passive force with any angle/torque relation you would like.
If the small motion between EXO and human is very important I have added a new section which is intended for expert users, that allows both the contact forces and motion between EXO and human to be found.
If I want to allow relative movement between Exo and people, I must use the FDK method, right? Can I add 6 constraints on the thigh and then add the contact element on the shank to connect the shank of Exo? Instead of adding a driver at the knee joint to synchronize the movement. The contact element drives the Exo movement and then measures the interaction at the shank. I don't know if it is correct, I'm not very clear about this. Any help would be greatly appreciated. Thank you again.
FDK is one way to obtain the small motion between ESo and human, another way is to use over-determined kinematics, which is simpler since it would not account for the forces, these would still need to be made using the contact elements.
There are many nice things about FDK that it finds the motion based on force balance, but keep in mind that cost is, increased calculation speed and much higher model complexity. So only apply FDK if you have modeling experience and if predicting the FDK motion is indeed important for the force, which is not always the case.
For an exo model the first step would be to make it run without FDK, then you can alter it and add the FDK if it turns out to be needed, so add complexity gradually.
Thank you very much for your patience. Could you tell me where I can get more information about over-determined kinematics? I didn't see much explanation about it. I don't understand how over-determined kinematics are used in Human-Exo. Could you tell me how many constraints should be added and set to soft? Any help would be greatly appreciated.
I have just studied Anybody, and I am also very interested in the study of exoskeletons. This topic helped me a lot. I read the link above, In the context of Kinetics, We need to supply a torque to the EXO, I checked the SitToStand model, I don’t know What is the value of the torque for the exoskeleton, its code is as follows. Could you tell me what the value of Knee_Right.Fout[0]?Thank you very much for your reply.
AnyReacForce Knee_Right =
{
AnyKinMeasureOrg& ref =Main.Model.ModelEnvironmentConnection.Robot_Measures.Knee_Flexion_Right;
};
AnyVar Torque_Knee_Right = Knee_Right.Fout[0];
Good question, this actuator is the "optimal one" it is a reaction force applied to the knee joint. It will carry the knee flexion/extension moments which should otherwise be carried by muscles. The variation of this torque will give you an idea on if it would be feasible to replace it by an elastic spring.
So the output of this object is torque in knee joint.
I am trying to use overdetermined kinematics to connect Human and Exo. Because during walking, people and Exo have relative movements in thighs and shanks.Therefore, I added the following code to the thighs and shanks. The exoskeleton has 7 degrees of freedom, I added 12 Soft constraints. So can I capture the sliding between people and Exo? Is this correct?If I add 10 soft constraints, what's the difference. Thank you in advance.
In principle this is correct, but you may want to adjust the weights on the soft drivers, so that all weights are not the same, you can differ between rotational and linear. In the code you have it will use a default weight of 1.
Note the weight will here act as "springs" and the weights are their stiffness, it is not like FDK but you can get some motion in there.
Code like this can be added in the driver
AnyFunConst Fun = {
Value = {MY_Weight,MY_Weight,MY_Weight,MY_Weight,MY_Weight,MY_Weight};
};
};
WeightFun = {&Weights.Fun};
Thank you for your reply, so I only need to set a linear weight and a rotational weight, right? Could you tell me what weight value is appropriate? I don't know how to set the appropriate weight value. And I got this error: 'Weights': Unresolved object. Could you tell me how to define the Weights? Thanks a lot in advance.
I can not tell you what is a good value... in general these values are all relative to each other, the optimizer will try to minimize the soft driver error. If one DOF has higher weight this DOF becomes more important to lower for the optimizer, the default weight value is 1. It you use same weight for the optimizer it means than 1m error is of same importance of 1 rad.