Match the position of the human and knee brace

Hi

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.

Best wishes
babaozhou

1 Like

Hi Babaozhou,

Please have a look at this link:

I have just updated it to reflect your questions.

Best regards
Søren

1 Like

Hi Søren

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?

Best wishes
babaozhou

Hi Babaozhou,

Yes it just need to be roughly

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.

Best regards
Søren

Hi Søren

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.

Best wishes
babaozhou

Hi Babaozhou,

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.

Best regards
Søren

Hi Søren

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.

Best wishes
babaozhou

Hi Babaozhou,

Yes and no.

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.

Before trying to decide if you want to use FDK or not for this please go though the FDK tutorial https://anyscript.org/tutorials/ForceDependentKinematics/index.html

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.

Best regards
Søren

Hi Søren

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.

Best wishes
babaozhou

Hi Babaozhou,

Please see the wiki page again

I have made some updates to answer this question

Best regards
Søren

Hi Søren

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];

Best regards
zhou

Hi Zhou,

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 have added this to the wiki page

Best regards
Søren

Hi Søren

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.

AnyKinEqSimpleDriver Exo_Thigh_Connection =
{
AnyKinLinear lin =
{
AnyRefFrame &base = Main.Model.EXO_ROBOT.THIGH_PART___1.ForceRefCoordSys1;
AnyRefFrame &target = Main.HumanModel.BodyModel.Right.Leg.Seg.Thigh.ThighNode;
Ref = 0;
};
AnyKinRotational rot =
{
AnyRefFrame &base = Main.Model.EXO_ROBOT.THIGH_PART___1.ForceRefCoordSys1;
AnyRefFrame &target = Main.HumanModel.BodyModel.Right.Leg.Seg.Thigh.ThighNode;
Type = RotAxesAngles;
};
Reaction.Type = {OFF, OFF, OFF, OFF, OFF, OFF};
CType ={Soft,Soft,Soft,Soft,Soft,Soft};
DriverPos ={0,0,0,0,0,0};
DriverVel ={0,0,0,0,0,0};
};

Best wishes
babaozhou

Hi Babaozhou,

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};

Best regards
Søren

Hi Søren

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.

Best wishes
babaozhou

Hi Babaozhou,

I think I did a small error in the code

 AnyFunConst Weight = {
       Value = {MY_Weight,MY_Weight,MY_Weight,MY_Weight,MY_Weight,MY_Weight};
 };
      

AnyKinEqSimpleDriver MyDriver ={
...
...
    WeightFun = {&.Weight};
...
};

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.

Best regards
Søren

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