Hi,
So you want to replace the load at the foot by a moment on the exoknee. To
apply a time varying moment you can use an AnyFunInterpol that will read the
values in text file like this :
AnyForce Moment = {
AnyJoint &Jnt=.ExoKneeJnt;
AnyFunInterpol MomentFun = {
Type = Bspline;
FileName = “file.txt”;
};
F = MomentFun(t);
};
Then you can find out the appropriate value of the moment by reading the
effect of the foot load at the exoknee joint using AnyForceMomentMeasure2.
This object returns an equivalent force and moment at the specified
location. Please see the reference manual for detailed explanations about
the use of this object. Applying this equivalent moment at the exoknee
should replace the load on the foot.
About the linear constraint I had in mind a slightly different joint
configuration for the leg and exosqueleton, with a revolute joint both in
the real knee and in the exoknee like this (you actually removed the real
knee joint) :
AnyRevoluteJoint GroundThighJnt = {
Axis = z;
AnyRefNode &GroundRefNode = ..GlobalRef.PelvisThighJntNode;
AnyRefNode &UpperLegNode = ..Segs.UpperLeg.PelvisThighJntNode;
};
AnyRevoluteJoint KneeJnt = {
Axis = z;
AnyRefNode &ShankNode = ..Segs.UpperLeg.ThighShankJntNode;
AnyRefNode &ThighNode = ..Segs.LowerLeg.ThighShankJntNode;
};
AnyRevoluteJoint UpperExoGndJnt = {
Axis=z;
AnyRefNode &GroundRefNode = …Segs.UpperLeg.UpperExoNode1;
AnyRefNode &UpperExoNode = …Segs.UpperExo.UpperExoNode1;
};
//AnyRevoluteJoint LowerExoGndJnt = {
// Axis=z;
// AnyRefNode &GroundRefNode = …Segs.LowerLeg.LowerExoNode1;
// AnyRefNode &LowerExoNode = …Segs.LowerExo.LowerExoNode1;
//};
AnyRevoluteJoint ExoKneeJnt = {
Axis = z;
AnyRefNode &ShankNode = ..Segs.UpperExo.UpperExoNode2;
AnyRefNode &ThighNode = ..Segs.LowerExo.LowerExoNode1;
};
//Part constricting lowerexo movement with lowerleg movement
AnyKinLinear LowerExoLin = {
Ref = 0;
AnyRefNode &LowerExoNode = ..Segs.LowerExo.LowerExoNode2;
AnyRefNode &LowerLegNode = ..Segs.LowerLeg.LowerExoNode2;
};
AnyKinMeasureOrg LowerExoLinXY = {
AnyKinLinear &ref=.LowerExoLin;
MeasureOrganizer={0}; // x direction
};
AnyKinEq PedalJointLinConstraints = {
AnyKinMeasureOrg &ref= .LowerExoLinXY;
};
Best regards,
Sylvain, AnyBody Support
From: anyscript@yahoogroups.com [mailto:anyscript@yahoogroups.com] On Behalf
Of hrishi shah
Sent: 24. januar 2009 03:39
To: anyscript@yahoogroups.com
Subject: RE: [AnyScript] Simplistic yet kinetically overconstrained Leg
model-Part2
Hi,
Firstly, thanks a lot to Sylvain for the advice. It worked well in the most
part.
The last part of my project involves giving a moment at the exo-knee (as you
already pointed out) but the purpose is to emulate the condition of
leg-weight lifting exercise with the exoskeleton.
Simply put, the exoknee torque profile should be such that the muscle forces
of the simple leg model without the exoskeleton and with the point load at
the foot should be as close as possible to the muscle forces developed with
the exoskeleton without the weight.
For this, I tried to use Moment3D with a constant value but how do I specify
a time varying moment valueso that I can finetune the moment at each instant
in time to match the muscle activity to the original muscle activity.
The files are placed in Simplistic_Leg_3.zip.
Also, I could not figure out how putting a constraint on the x displacement
of two points would force the shank and the lower exo to move together,
since there is no knee joint. Also, the revolute joint with zero velocity
drivers seem to be working fine in the model. Is there a potential problem
with this implementation?
Regards,
Hrishi Shah
— On Fri, 1/23/09, AnyScript Support <anyscriptsup@
<mailto:anyscriptsup%40anybodytech.com> anybodytech.com> wrote:
From: AnyScript Support <anyscriptsup@
<mailto:anyscriptsup%40anybodytech.com> anybodytech.com>
Subject: RE: [AnyScript] Simplistic yet kinetically overconstrained Leg
model-Part2
To: anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com
Date: Friday, January 23, 2009, 2:40 PM
Hi Hrishi Shah,
You need an apropriate configuration of the exoskeleton to avoid the model
being over constrained kinematicaly and kinetically. I guess a real
exoskeleton have has a revolute joint at the level of the knee. So it would
be good to respect this construction.
If we think again the connection between the leg and the exoskeleton from
the beginning, what I can think of is the following : fix the UpperExo
segment at the level of the hip exactly as it is done now. Then add a
revolute joint between UpperExo and LowerExo, this represent the knee. Last
step is to connect the LowerExo segment with the shank, to avoid over
constraints only one linear constraint is needed between the LowerExoNode2
of LowerExo and LowerLeg on the x direction (direction of the movement), and
of course a reaction force on this linear constraint.
This should give you the good boundary conditions. The knee joint can be
either moved by the muscles only or you can apply a moment on the
exoskeleton knee joint that will compensate a part of the muscle activation.
After this you can measure the moment in the joints with
AnyForceMomentMeasu re2. This object allows you to measure forces and
moments
created by a list muscles, general forces, at a given point of the model.
Please refer to the reference manual for detailed explanation of how to use
this object. There is also an example in the folder SmallExamples in the
file section of the group.
Best regards,
Sylvain, AnyBody Support
From: anyscript@yahoogrou ps.com [mailto:anyscript@yahoogrou ps.com] On
Behalf
Of hrishi shah
Sent: 20. januar 2009 20:23
To: anyscript@yahoogrou ps.com
Subject: [AnyScript] Simplistic yet kinetically overconstrained Leg
model-Part2
Hi Sylvain,
I tried to correct the model by:
-
turning knee reaction off and hip reaction on.
-
renaming the extra nodes and updating the muscle configuration.
and it worked!
Thanks a lot.
Now, I have introduced the two exoskeleton segments UpperExo and LowerExo
parallel to the two original ones and am supposed to find the torque profile
at the exoskeleton’ s knee joint when the original knee joint is driven and
vice-versa.
To do this, I tried to add a revolute joint between UpperExo and LowerExo
but understandably, it became kinetically over constrained. Is there any way
I can extract the torque profile at one knee joint by driving the other?
The model files are in Simplistic_Leg_ 2.zip.
Regards,
Hrishi Shah
— On Tue, 1/20/09, AnyScript Support <anyscriptsup@
<mailto:anyscriptsu p%40anybodytech. com> anybodytech. com> wrote:
From: AnyScript Support <anyscriptsup@
<mailto:anyscriptsu p%40anybodytech. com> anybodytech. com>
Subject: RE: [AnyScript] Simplistic yet kinetically overconstrained Leg
model
To: anyscript@yahoogrou <mailto:anyscript% 40yahoogroups. com> ps.com
Date: Tuesday, January 20, 2009, 8:59 AM
Hi Hrishi Shah,
The same question have been ask about this model being kinetically over
constrained by Shivaswamy Anirudh some days ago, one of your colleague I
suppose?
Well here is the answer I gave him:
"The model being kinetically over-constrained means that there are too much
reaction forces.
In your case the Reaction.Type of the hip joint and knee joint are switched
On. So all the load is carried by the artificial force of the drivers and
therefore the muscles are not activated. You have to free at least one dof.
As there are no muscles around the hip joint it is indicated to keep the
Reaction.Type On on this joint, but the Reaction.type of the knee joint must
be switched Off in order to load the muscles."
Once this is done I noticed a second issue that will prevent the model to
run the inverse dynamic analysis. The problem is that the Soleus muscle has
its origin and insertion at the same node, it is just a “point” muscle with
no length. The muscle cannot be recruited in such configuration. You should
either remove or modify this muscle.
Also the tibialis anterior and the gluteus maximus are doing some kind of
loop with the origin and insertion at the same node, I think you should
reconsider the definition of those 2 muscles.
Best regards,
Sylvain, AnyBody Support
From: anyscript@yahoogrou ps.com [mailto:anyscript@ yahoogrou ps.com] On
Behalf
Of hrishi_shah2002
Sent: 16. januar 2009 00:36
To: anyscript@yahoogrou ps.com
Subject: [AnyScript] Simplistic yet kinetically overconstrained Leg model
Hello.
I am Hrishi Shah, a graduate student at SUNY, Buffalo and am currently
on an independent study that examines the effect of an exo-knee on the
actual knee.
I aim to make a model with two actual Leg segments and two exoskeleton
leg segments attached to the leg segments nodes via fixed joints. The
exo-knee and the actual knee are the only revolute joints in the whole
setup.
However, in the first phase itself, when I tried to cut out the pelvis
and foot from the foot model by copying their nodes to the Upper leg
and shank segments resp., it comes up with an error in Inverse Dynamic
Analysis saying that its “Kinetically over constrained” . I have
already removed many muscles that are used for movements other than
the knee movements. Could someone please point out what the error is?
The files are in Simplistic_Leg. zip.
Thanking in anticipation.
Regards,
Hrishi Shah
[Non-text portions of this message have been removed]
[Non-text portions of this message have been removed]
[Non-text portions of this message have been removed]
[Non-text portions of this message have been removed]