reaction forces

I’m working on a leg model in which I’m driving the moment arm and
tendon direction of the tendons around the knee. I’m using a
prismatic joint with an AnyKinEqInterPolDriver to drive the anterior-
posterior postion of the tibia insertion point, a revolute joint with
an AnyKinEqInterPolDriver to drive the tendon angle, a prismatic
joint with an AnyKinEqSimpleDriver to set the length of the tendon
and an AnyKinEqInterPolDriver to drive the distance between the knee
joint and the tendon.

I have the following questions:

  1. Should the reaction types of these drivers be set to “0” or “1”?

  2. Do I need to set any Constraints.Reaction.Types of the extra
    joints I use to “0”?

Cheers,
Sietske Aalbersberg

Dear Sietske,

It is good to see that you are working with the knee model. There is
an enormous potential in accurate knee force computations. Here are
my best answers to your questions:

The tibia insertion point: This point is in reality fixed to the
tibia, so the driver that positions the point should have
Reaction.Type = {1}.

In terms of the two other drivers, I have forgotten precisely how
they are defined, i.e. which parts of the mechanism they connect.
But my guess is that they should also have Reaction.Type = {1}. If
you send me a sketch or the actual model I can give you a more
precise answer.

The second question: I think I understand the background of this
one. You are probably having trouble balancing the mechanism in the
absence of the Reaction.Type = 1 on the drivers. In general, the
physiological joints should have Reaction.Type = {0} because they
are driven by the muscles, whereas the artificial joints such as the
tendon attachments or via points should have Reaction.Type = {1} if
they represent mechanical connections.

Best regards,
John,
AnyBody Support

— In anyscript@yahoogroups.com, “Sietske Aalbersberg”
<s.aalbersberg@f…> wrote:
> I’m working on a leg model in which I’m driving the moment arm and
> tendon direction of the tendons around the knee. I’m using a
> prismatic joint with an AnyKinEqInterPolDriver to drive the
anterior-
> posterior postion of the tibia insertion point, a revolute joint
with
> an AnyKinEqInterPolDriver to drive the tendon angle, a prismatic
> joint with an AnyKinEqSimpleDriver to set the length of the tendon
> and an AnyKinEqInterPolDriver to drive the distance between the
knee
> joint and the tendon.
>
> I have the following questions:
>
> 1. Should the reaction types of these drivers be set to “0” or “1”?
>
> 2. Do I need to set any Constraints.Reaction.Types of the extra
> joints I use to “0”?
>
> Cheers,
> Sietske Aalbersberg

Hi John,

Thanks for your help.
I’ve attached the files (is this possible with yahoogroups?) of the PT
controller and the files with the momentarm and angle data .

Sietske

At , you wrote:
>Dear Sietske,
>
>It is good to see that you are working with the knee model. There is
>an enormous potential in accurate knee force computations. Here are
>my best answers to your questions:
>
>The tibia insertion point: This point is in reality fixed to the
>tibia, so the driver that positions the point should have
>Reaction.Type = {1}.
>
>In terms of the two other drivers, I have forgotten precisely how
>they are defined, i.e. which parts of the mechanism they connect.
>But my guess is that they should also have Reaction.Type = {1}. If
>you send me a sketch or the actual model I can give you a more
>precise answer.
>
>The second question: I think I understand the background of this
>one. You are probably having trouble balancing the mechanism in the
>absence of the Reaction.Type = 1 on the drivers. In general, the
>physiological joints should have Reaction.Type = {0} because they
>are driven by the muscles, whereas the artificial joints such as the
>tendon attachments or via points should have Reaction.Type = {1} if
>they represent mechanical connections.
>
>Best regards,
>John,
>AnyBody Support
>
>— In anyscript@yahoogroups.com, “Sietske Aalbersberg”
><s.aalbersberg@f…> wrote:
> > I’m working on a leg model in which I’m driving the moment arm and
> > tendon direction of the tendons around the knee. I’m using a
> > prismatic joint with an AnyKinEqInterPolDriver to drive the
>anterior-
> > posterior postion of the tibia insertion point, a revolute joint
>with
> > an AnyKinEqInterPolDriver to drive the tendon angle, a prismatic
> > joint with an AnyKinEqSimpleDriver to set the length of the tendon
> > and an AnyKinEqInterPolDriver to drive the distance between the
>knee
> > joint and the tendon.
> >
> > I have the following questions:
> >
> > 1. Should the reaction types of these drivers be set to “0” or “1”?
> >
> > 2. Do I need to set any Constraints.Reaction.Types of the extra
> > joints I use to “0”?
> >
> > Cheers,
> > Sietske Aalbersberg
>
>
>
>
>
>
>Yahoo! Groups Links
>
>
>
>


0.0 0.053
0.1 0.048
0.2 0.047
0.3 0.043
0.4 0.039
0.5 0.036
0.6 0.033
0.7 0.030
0.8 0.029
0.9 0.028
1.0 0.028


/* Controller for the moment arm and tendon angle of the patella tendon
both angle and moment arm are driven individually
this is not physiologically correct, but a temporarely solution
while knee joint is a hinge joint
*/

AnyFolder PTController= {

// segment where PT vector can slide on in a-p direction
AnySeg TibiaPTslider = {
Mass = 0;
Jii = {0,0,0};
r = {0.0,0.4,0.0}; // starting location in global axis
};

// new node on shank
Main.HumanModel.Seg.Shank = {
AnyRefNode TibiaSlideNode = {
sRel = {0.0,0.12,0.01};
};
};

// joint (slider) between slide segment and new tibia node
AnyPrismaticJoint TibiaSlideJoint = {
Axis = x;
AnyRefNode &TibiaNode = Main.HumanModel.Seg.Shank.TibiaSlideNode;
AnySeg &TBslider = .TibiaPTslider;
};

// segment to describe direction PT tendon
AnySeg TibiaPTvect = {
Mass = 0;
Jii = {0,0,0};
r = {0.01, 0.01, 0.01};
};

// ideal hinge joint to change tendon angle
AnyRevoluteJoint TibiaPTvectTibiaPTsliderJoint = {
AnySeg &ref1 = .TibiaPTvect;
AnySeg &ref2 = .TibiaPTslider;
Axis = z; // axis around which hinge rotates
};

// interpolation of the moment arm data over a time-series
AnyKinEqInterPolDriver TibiaPTvectTibiaPTsliderDriver = {
AnyKinLinear &ref1=.TibiaPTvectTibiaPTsliderJoint;
Type=Bspline;
FileName = “PTAngle.txt”;
Reaction.Type = {1};
};

AnySeg TibiaPTvectSlider = {
Mass = 0;
Jii = {0,0,0};
r = {0.076153, 0.460282, 0.004440};
AnyDrawSTL drw ={
FileName =“arrow.stl”;
ScaleXYZ={.5,.5,.5};
};
};

// translation joint
AnyPrismaticJoint PTSlideJoint = {
Axis = x;
AnySeg &ref1 = .TibiaPTvect;
AnySeg &ref2 = .TibiaPTvectSlider;
};

// driver for changing the moment arm by translating the PT tendon in a-p
direction
AnyKinEqSimpleDriver PTslideDriver = {
AnyPrismaticJoint &ref1=.PTSlideJoint;
DriverPos = {.085}; // length of the PT “tendon”
DriverVel = {0};
Reaction.Type = {1};
};

// description of the change in moment arm
// 1. connect “tendon” to thigh segment:
AnyReacForce ViaNodeFix = {
AnyKinLinear lin={
AnyRefNode &ref1 = Main.HumanModel.Seg.Thigh;
AnyRefNode &ref2 = …TibiaPTvectSlider;
};
AnyKinRotational rot={
AnyRefNode &ref1 = Main.HumanModel.Seg.Thigh;
AnyRefNode &ref2 = …TibiaPTvectSlider;
Type=RotVector;
};
};
// 2. describe the movement of the moment arm:
AnyKinLinear MomentArm = {
AnySeg &ref1 = .TibiaPTvect;
AnyRefNode &ref2 = Main.HumanModel.Seg.Shank.KneeJoint;
Ref = 0; // reference system in which vector is measured
// -1 = global, 0 = first reference, 1 = second reference
};
// 3. interpolation of the moment arm data over a time-series
AnyKinEqInterPolDriver MomentArmDriver = {
AnyKinLinear &ref1=.MomentArm;
MeasureOrganizer = {1};
Type=Bspline;
FileName = “MomentArm.txt”;
Reaction.Type = {1};
};
};

0.0 5.235327744
0.15 5.162462762
0.3 5.162462762
1.05 4.71238898

[Non-text portions of this message have been removed]

Sietske,

It used to be possible to attach files to messages, but Yahoo
removed that option some time ago. But you can log into the group
and upload a file to the Files section of the group.

Best regards,
John, AnyBody Support

— In anyscript@yahoogroups.com, “S. Aalbersberg”
<s.aalbersberg@f…> wrote:
> Hi John,
>
> Thanks for your help.
> I’ve attached the files (is this possible with yahoogroups?) of
the PT
> controller and the files with the momentarm and angle data .
>
> Sietske
>
> At , you wrote:
> >Dear Sietske,
> >
> >It is good to see that you are working with the knee model. There
is
> >an enormous potential in accurate knee force computations. Here
are
> >my best answers to your questions:
> >
> >The tibia insertion point: This point is in reality fixed to the
> >tibia, so the driver that positions the point should have
> >Reaction.Type = {1}.
> >
> >In terms of the two other drivers, I have forgotten precisely how
> >they are defined, i.e. which parts of the mechanism they connect.
> >But my guess is that they should also have Reaction.Type = {1}. If
> >you send me a sketch or the actual model I can give you a more
> >precise answer.
> >
> >The second question: I think I understand the background of this
> >one. You are probably having trouble balancing the mechanism in
the
> >absence of the Reaction.Type = 1 on the drivers. In general, the
> >physiological joints should have Reaction.Type = {0} because they
> >are driven by the muscles, whereas the artificial joints such as
the
> >tendon attachments or via points should have Reaction.Type = {1}
if
> >they represent mechanical connections.
> >
> >Best regards,
> >John,
> >AnyBody Support
> >
> >— In anyscript@yahoogroups.com, “Sietske Aalbersberg”
> ><s.aalbersberg@f…> wrote:
> > > I’m working on a leg model in which I’m driving the moment arm
and
> > > tendon direction of the tendons around the knee. I’m using a
> > > prismatic joint with an AnyKinEqInterPolDriver to drive the
> >anterior-
> > > posterior postion of the tibia insertion point, a revolute
joint
> >with
> > > an AnyKinEqInterPolDriver to drive the tendon angle, a
prismatic
> > > joint with an AnyKinEqSimpleDriver to set the length of the
tendon
> > > and an AnyKinEqInterPolDriver to drive the distance between the
> >knee
> > > joint and the tendon.
> > >
> > > I have the following questions:
> > >
> > > 1. Should the reaction types of these drivers be set to “0”
or “1”?
> > >
> > > 2. Do I need to set any Constraints.Reaction.Types of the extra
> > > joints I use to “0”?
> > >
> > > Cheers,
> > > Sietske Aalbersberg
> >
> >
> >
> >
> >
> >
> >Yahoo! Groups Links
> >
> >
> >
> >
>
> ----------
>
> 0.0 0.053
> 0.1 0.048
> 0.2 0.047
> 0.3 0.043
> 0.4 0.039
> 0.5 0.036
> 0.6 0.033
> 0.7 0.030
> 0.8 0.029
> 0.9 0.028
> 1.0 0.028
>
> ----------
>
> /* Controller for the moment arm and tendon angle of the patella
tendon
> both angle and moment arm are driven individually
> this is not physiologically correct, but a temporarely solution
> while knee joint is a hinge joint
> */
>
> AnyFolder PTController= {
>
> // segment where PT vector can slide on in a-p direction
> AnySeg TibiaPTslider = {
> Mass = 0;
> Jii = {0,0,0};
> r = {0.0,0.4,0.0}; // starting location in global axis
> };
>
> // new node on shank
> Main.HumanModel.Seg.Shank = {
> AnyRefNode TibiaSlideNode = {
> sRel = {0.0,0.12,0.01};
> };
> };
>
> // joint (slider) between slide segment and new tibia node
> AnyPrismaticJoint TibiaSlideJoint = {
> Axis = x;
> AnyRefNode &TibiaNode =
Main.HumanModel.Seg.Shank.TibiaSlideNode;
> AnySeg &TBslider = .TibiaPTslider;
> };
>
> // segment to describe direction PT tendon
> AnySeg TibiaPTvect = {
> Mass = 0;
> Jii = {0,0,0};
> r = {0.01, 0.01, 0.01};
> };
>
> // ideal hinge joint to change tendon angle
> AnyRevoluteJoint TibiaPTvectTibiaPTsliderJoint = {
> AnySeg &ref1 = .TibiaPTvect;
> AnySeg &ref2 = .TibiaPTslider;
> Axis = z; // axis around which hinge rotates
> };
>
> // interpolation of the moment arm data over a time-series
> AnyKinEqInterPolDriver TibiaPTvectTibiaPTsliderDriver = {
> AnyKinLinear &ref1=.TibiaPTvectTibiaPTsliderJoint;
> Type=Bspline;
> FileName = “PTAngle.txt”;
> Reaction.Type = {1};
> };
>
> AnySeg TibiaPTvectSlider = {
> Mass = 0;
> Jii = {0,0,0};
> r = {0.076153, 0.460282, 0.004440};
> AnyDrawSTL drw ={
> FileName =“arrow.stl”;
> ScaleXYZ={.5,.5,.5};
> };
> };
>
> // translation joint
> AnyPrismaticJoint PTSlideJoint = {
> Axis = x;
> AnySeg &ref1 = .TibiaPTvect;
> AnySeg &ref2 = .TibiaPTvectSlider;
> };
>
> // driver for changing the moment arm by translating the PT
tendon in a-p direction
> AnyKinEqSimpleDriver PTslideDriver = {
> AnyPrismaticJoint &ref1=.PTSlideJoint;
> DriverPos = {.085}; // length of the PT “tendon”
> DriverVel = {0};
> Reaction.Type = {1};
> };
>
> // description of the change in moment arm
> // 1. connect “tendon” to thigh segment:
> AnyReacForce ViaNodeFix = {
> AnyKinLinear lin={
> AnyRefNode &ref1 = Main.HumanModel.Seg.Thigh;
> AnyRefNode &ref2 = …TibiaPTvectSlider;
> };
> AnyKinRotational rot={
> AnyRefNode &ref1 = Main.HumanModel.Seg.Thigh;
> AnyRefNode &ref2 = …TibiaPTvectSlider;
> Type=RotVector;
> };
> };
> // 2. describe the movement of the moment arm:
> AnyKinLinear MomentArm = {
> AnySeg &ref1 = .TibiaPTvect;
> AnyRefNode &ref2 = Main.HumanModel.Seg.Shank.KneeJoint;
> Ref = 0; // reference system in which vector is measured
> // -1 = global, 0 = first reference, 1 = second reference
> };
> // 3. interpolation of the moment arm data over a time-series
> AnyKinEqInterPolDriver MomentArmDriver = {
> AnyKinLinear &ref1=.MomentArm;
> MeasureOrganizer = {1};
> Type=Bspline;
> FileName = “MomentArm.txt”;
> Reaction.Type = {1};
> };
> };
> ----------
>
> 0.0 5.235327744
> 0.15 5.162462762
> 0.3 5.162462762
> 1.05 4.71238898
>
>
>
> [Non-text portions of this message have been removed]

John,

I thought so. I’ve uploaded it.

I also ran into another problem:
The inverse dynamics worked after changing the reaction.types, but
only once. I’ve looked at some other models after this and now the
inverse dynamics of my own model give strange results. Halfway the
analysis (with extermely large muscle activities) it give this
message: “ERROR :
D:\AnyBody\Repository.3.PreRelease\ARep\VUAmsterdam\KneeShearForce\Kne
eShearForce.Main.any(64): MyStudy : Muscle recruitment analysis
failed, simplex solver reports that solution does not satisfy all
constraints.”
Is there a relation with looking at other models, or should I look
into my model to find the problem?

Cheers,
Sietske

— In anyscript@yahoogroups.com, “AnyBody Support” <support@a…>
wrote:
> Sietske,
>
> It used to be possible to attach files to messages, but Yahoo
> removed that option some time ago. But you can log into the group
> and upload a file to the Files section of the group.
>
> Best regards,
> John, AnyBody Support
>

Sieske,

I need all the files to be able to test your problem. Please zip the
directory in the ARep branch where you keep your problem and upload
it to the Files section.

About the other question: The most likely explanation is that the
system is not properly balanced. In this case the solver will
usually fail, but since this condition manifests itself in a
singular matrix, round-off errors may sometimes mean that you can
solve the problem anyhow. In this case, very small differences can
cause the problem to solve or fail, but always with a rediculous
result.

This can be caused by the wrapping muscles, which may converge
slightly differently depending on their initial state. Hence you can
have differet results depending on whether you have analyzed the
model before or start from fresh.

Best regards,
John, AnyBody Support

— In anyscript@yahoogroups.com, “Sietske Aalbersberg”
<s.aalbersberg@f…> wrote:
> John,
>
> I thought so. I’ve uploaded it.
>
> I also ran into another problem:
> The inverse dynamics worked after changing the reaction.types, but
> only once. I’ve looked at some other models after this and now the
> inverse dynamics of my own model give strange results. Halfway the
> analysis (with extermely large muscle activities) it give this
> message: “ERROR :
>
D:\AnyBody\Repository.3.PreRelease\ARep\VUAmsterdam\KneeShearForce\Kn
e
> eShearForce.Main.any(64): MyStudy : Muscle recruitment analysis
> failed, simplex solver reports that solution does not satisfy all
> constraints.”
> Is there a relation with looking at other models, or should I look
> into my model to find the problem?
>
> Cheers,
> Sietske
>
> — In anyscript@yahoogroups.com, “AnyBody Support” <support@a…>
> wrote:
> > Sietske,
> >
> > It used to be possible to attach files to messages, but Yahoo
> > removed that option some time ago. But you can log into the
group
> > and upload a file to the Files section of the group.
> >
> > Best regards,
> > John, AnyBody Support
> >

John,

I’ve uploaded both the ARep and the BRep files, since I’ve also
changed the BRep a little.

My inverse dynamics problem probably results from wrapping, so I’ll
try to model it without wrapping and see if the problem disappears.

Thanks again,
Sietske

— In anyscript@yahoogroups.com, “AnyBody Support” <support@a…>
wrote:
> Sieske,
>
> I need all the files to be able to test your problem. Please zip
the
> directory in the ARep branch where you keep your problem and upload
> it to the Files section.
>
> About the other question: The most likely explanation is that the
> system is not properly balanced. In this case the solver will
> usually fail, but since this condition manifests itself in a
> singular matrix, round-off errors may sometimes mean that you can
> solve the problem anyhow. In this case, very small differences can
> cause the problem to solve or fail, but always with a rediculous
> result.
>
> This can be caused by the wrapping muscles, which may converge
> slightly differently depending on their initial state. Hence you
can
> have differet results depending on whether you have analyzed the
> model before or start from fresh.
>
> Best regards,
> John, AnyBody Support
>
>
> — In anyscript@yahoogroups.com, “Sietske Aalbersberg”
> <s.aalbersberg@f…> wrote:
> > John,
> >
> > I thought so. I’ve uploaded it.
> >
> > I also ran into another problem:
> > The inverse dynamics worked after changing the reaction.types,
but
> > only once. I’ve looked at some other models after this and now
the
> > inverse dynamics of my own model give strange results. Halfway
the
> > analysis (with extermely large muscle activities) it give this
> > message: “ERROR :
> >
>
D:\AnyBody\Repository.3.PreRelease\ARep\VUAmsterdam\KneeShearForce\Kn
> e
> > eShearForce.Main.any(64): MyStudy : Muscle recruitment analysis
> > failed, simplex solver reports that solution does not satisfy all
> > constraints.”
> > Is there a relation with looking at other models, or should I
look
> > into my model to find the problem?
> >
> > Cheers,
> > Sietske
> >
> > — In anyscript@yahoogroups.com, “AnyBody Support”
<support@a…>
> > wrote:
> > > Sietske,
> > >
> > > It used to be possible to attach files to messages, but Yahoo
> > > removed that option some time ago. But you can log into the
> group
> > > and upload a file to the Files section of the group.
> > >
> > > Best regards,
> > > John, AnyBody Support
> > >

Hi Sieske

I have been looking into the files and changed a bit in the
files “MomentArmControlller.any” and “JointsAndDrivers.any” i will
upload these files shortly.

I have changed the mechanism that controls the PTVectSlider segment
kinematically, now it does not supply any reacforces to this segment
anymore these are removed by adding the following line in the
PTSlideJoint

Constraints.Reaction.Type = {0,0,0,0,0}; //This line ensures that
there will be no reactions in the joint

Now the PTSlideJoint is carried only by the
AnyReacForce ViaNodeFix, which is what we want. This means that the
kinematics of the PTVectSlider is controlled by the mechanish but the
forces are carried by the Thigh through the AnyReacForce ViaNodeFix.

In the AnyReacForce ViaNodeFix i have added the line
Ref=0;
This is important the default value is Ref=-1 which means that the
force will act between the global reference system and the
TibiaPTvectSlider, and not between thigh and TibiaPTvectSlider, which
is want we want here

I have also added the following lines
AnyReacForce TibiaSlideJointReacForce = {
AnyPrismaticJoint &reacforce = .TibiaSlideJoint;
};
This reacforce is needed to carry the TibiaSlideNode.

I the file “JointsAndDrivers.any” i have also changed the line
Reaction.Type = {1,1,1};
in the AnyKinEqSimpleDriver ChairRot. Without this change the
rotations of the entire system was not supported. With this change
there will be six reactions between the hip and the globalref.

I hope this was possible to understand

Best regards
Søren

— In anyscript@yahoogroups.com, “Sietske Aalbersberg”
<s.aalbersberg@f…> wrote:
> John,
>
> I’ve uploaded both the ARep and the BRep files, since I’ve also
> changed the BRep a little.
>
> My inverse dynamics problem probably results from wrapping, so I’ll
> try to model it without wrapping and see if the problem disappears.
>
> Thanks again,
> Sietske
>
> — In anyscript@yahoogroups.com, “AnyBody Support” <support@a…>
> wrote:
> > Sieske,
> >
> > I need all the files to be able to test your problem. Please zip
> the
> > directory in the ARep branch where you keep your problem and
upload
> > it to the Files section.
> >
> > About the other question: The most likely explanation is that the
> > system is not properly balanced. In this case the solver will
> > usually fail, but since this condition manifests itself in a
> > singular matrix, round-off errors may sometimes mean that you can
> > solve the problem anyhow. In this case, very small differences
can
> > cause the problem to solve or fail, but always with a rediculous
> > result.
> >
> > This can be caused by the wrapping muscles, which may converge
> > slightly differently depending on their initial state. Hence you
> can
> > have differet results depending on whether you have analyzed the
> > model before or start from fresh.
> >
> > Best regards,
> > John, AnyBody Support
> >
> >
> > — In anyscript@yahoogroups.com, “Sietske Aalbersberg”
> > <s.aalbersberg@f…> wrote:
> > > John,
> > >
> > > I thought so. I’ve uploaded it.
> > >
> > > I also ran into another problem:
> > > The inverse dynamics worked after changing the reaction.types,
> but
> > > only once. I’ve looked at some other models after this and now
> the
> > > inverse dynamics of my own model give strange results. Halfway
> the
> > > analysis (with extermely large muscle activities) it give this
> > > message: “ERROR :
> > >
> >
>
D:\AnyBody\Repository.3.PreRelease\ARep\VUAmsterdam\KneeShearForce\Kn
> > e
> > > eShearForce.Main.any(64): MyStudy : Muscle recruitment analysis
> > > failed, simplex solver reports that solution does not satisfy
all
> > > constraints.”
> > > Is there a relation with looking at other models, or should I
> look
> > > into my model to find the problem?
> > >
> > > Cheers,
> > > Sietske
> > >
> > > — In anyscript@yahoogroups.com, “AnyBody Support”
> <support@a…>
> > > wrote:
> > > > Sietske,
> > > >
> > > > It used to be possible to attach files to messages, but Yahoo
> > > > removed that option some time ago. But you can log into the
> > group
> > > > and upload a file to the Files section of the group.
> > > >
> > > > Best regards,
> > > > John, AnyBody Support
> > > >

Hi Søren,

That’s a great help! I think I understand it, but would never have thought
of it myself. I’ve removed the files from the web (it was quit large).

Thanks,
Sietske

At , you wrote:
>Hi Sieske
>
>I have been looking into the files and changed a bit in the
>files “MomentArmControlller.any” and “JointsAndDrivers.any” i will
>upload these files shortly.
>
>I have changed the mechanism that controls the PTVectSlider segment
>kinematically, now it does not supply any reacforces to this segment
>anymore these are removed by adding the following line in the
>PTSlideJoint
>
>Constraints.Reaction.Type = {0,0,0,0,0}; //This line ensures that
>there will be no reactions in the joint
>
>Now the PTSlideJoint is carried only by the
>AnyReacForce ViaNodeFix, which is what we want. This means that the
>kinematics of the PTVectSlider is controlled by the mechanish but the
>forces are carried by the Thigh through the AnyReacForce ViaNodeFix.
>
>In the AnyReacForce ViaNodeFix i have added the line
> Ref=0;
>This is important the default value is Ref=-1 which means that the
>force will act between the global reference system and the
>TibiaPTvectSlider, and not between thigh and TibiaPTvectSlider, which
>is want we want here
>
>I have also added the following lines
> AnyReacForce TibiaSlideJointReacForce = {
> AnyPrismaticJoint &reacforce = .TibiaSlideJoint;
> };
>This reacforce is needed to carry the TibiaSlideNode.
>
>I the file “JointsAndDrivers.any” i have also changed the line
> Reaction.Type = {1,1,1};
>in the AnyKinEqSimpleDriver ChairRot. Without this change the
>rotations of the entire system was not supported. With this change
>there will be six reactions between the hip and the globalref.
>
>I hope this was possible to understand
>
>Best regards
>Søren
>
>
>
>
>— In anyscript@yahoogroups.com, “Sietske Aalbersberg”
><s.aalbersberg@f…> wrote:
> > John,
> >
> > I’ve uploaded both the ARep and the BRep files, since I’ve also
> > changed the BRep a little.
> >
> > My inverse dynamics problem probably results from wrapping, so I’ll
> > try to model it without wrapping and see if the problem disappears.
> >
> > Thanks again,
> > Sietske
> >
> > — In anyscript@yahoogroups.com, “AnyBody Support” <support@a…>
> > wrote:
> > > Sieske,
> > >
> > > I need all the files to be able to test your problem. Please zip
> > the
> > > directory in the ARep branch where you keep your problem and
>upload
> > > it to the Files section.
> > >
> > > About the other question: The most likely explanation is that the
> > > system is not properly balanced. In this case the solver will
> > > usually fail, but since this condition manifests itself in a
> > > singular matrix, round-off errors may sometimes mean that you can
> > > solve the problem anyhow. In this case, very small differences
>can
> > > cause the problem to solve or fail, but always with a rediculous
> > > result.
> > >
> > > This can be caused by the wrapping muscles, which may converge
> > > slightly differently depending on their initial state. Hence you
> > can
> > > have differet results depending on whether you have analyzed the
> > > model before or start from fresh.
> > >
> > > Best regards,
> > > John, AnyBody Support
> > >
> > >
> > > — In anyscript@yahoogroups.com, “Sietske Aalbersberg”
> > > <s.aalbersberg@f…> wrote:
> > > > John,
> > > >
> > > > I thought so. I’ve uploaded it.
> > > >
> > > > I also ran into another problem:
> > > > The inverse dynamics worked after changing the reaction.types,
> > but
> > > > only once. I’ve looked at some other models after this and now
> > the
> > > > inverse dynamics of my own model give strange results. Halfway
> > the
> > > > analysis (with extermely large muscle activities) it give this
> > > > message: “ERROR :
> > > >
> > >
> >
>D:\AnyBody\Repository.3.PreRelease\ARep\VUAmsterdam\KneeShearForce\Kn
> > > e
> > > > eShearForce.Main.any(64): MyStudy : Muscle recruitment analysis
> > > > failed, simplex solver reports that solution does not satisfy
>all
> > > > constraints.”
> > > > Is there a relation with looking at other models, or should I
> > look
> > > > into my model to find the problem?
> > > >
> > > > Cheers,
> > > > Sietske
> > > >
> > > > — In anyscript@yahoogroups.com, “AnyBody Support”
> > <support@a…>
> > > > wrote:
> > > > > Sietske,
> > > > >
> > > > > It used to be possible to attach files to messages, but Yahoo
> > > > > removed that option some time ago. But you can log into the
> > > group
> > > > > and upload a file to the Files section of the group.
> > > > >
> > > > > Best regards,
> > > > > John, AnyBody Support
> > > > >
>
>
>
>
>
>
>Yahoo! Groups Links
>
>
>
>

Dear Sietske,

I can understand why it sounds a bit complicated, but it really is
not as difficult as you probably think. The point is that the model
in the form it had could rotate freely in space. So it was simply
lacking a boundary condition somewhere, and Søren elected to add
it to the chair segment.

After adding this boundary condition it turned out that some of the
artificial stuff simulating the knee structures was constrained too
much, such that the “knee cap” was over-supported. The system
actually comes out with a warning when that happens, so it is not so
difficult to detect.

Best regards,
John