Nurse model

Thanks for the lesson on dealing with unresolved objects.

I tried a number of things including your suggestion but haven’t quite gotten it
to work.

I see now why the line I had (below) was wrong.
> AnyRevoluteJoint &T12L1Joint = .ref.JointsLumbar.NeckJnt;

But were there actually 2 problems then? The first was the reference to the
folder containing the NeckJnt was wrong, but also the reference to the
AnyRevoluteJoint was wrong? I’m not sure I understand why “AnyRevoluteJoint
&T12L1Joint” is wrong. Aren’t we defining a new AnyRevoluteJoint that will be
called T12L1Joint? (In which case the program shouldn’t care that it doesn’t
exist yet).

And I don’t understand how the line you suggest should work.
> AnyKinMeasureOrg &Ref1 = …HumanModel.Interface.Trunk.NeckJnt;

Why are we creating an AnyKinMeasureOrg object?

In any case when I inserted the above code into the NeckJntDriver folder, it
tells me Ref1 is not recognized:

Ref1 : Unresolved object.

Again, why is it complaining about this when I’m creating a new reference!?

Perhaps I put it in the wrong place? Here’s how the code looked in the
JointAndDrivers.any file:

 AnyKinEqSimpleDriver NeckJntDriver = {

 AnyKinMeasureOrg &Ref1 = ...HumanModel.Interface.Trunk.NeckJnt;
 DriverPos = {0};
 DriverVel = {0};
 Reaction.Type = {1};

};

By the way, I would think the correct code should be something like:

AnyRevoluteJoint &T12L1Joint = Main.Model.HumanModel.Interface.Trunk.NeckJnt;

Here’s how I typed it in the JointsAndDrivers.any file

 AnyKinEqSimpleDriver NeckJntDriver = {
 AnyRevoluteJoint &T12L1Joint =Main.Model.HumanModel.Interface.Trunk.NeckJnt;
 DriverPos = {0};
 DriverVel = {0};
 Reaction.Type = {1};

};

When I typed this in, the T12L1Joint is not recognized:

T12L1Joint : Unresolved object

Anyway, I’m hoping you may be able to shed some light. Thanks!
Tilak

Hi Tilak

I will try to explain

The script below creates a new driver for the neck joint by making a
reference to an already existing revolutejoint.

The name T12L1Joint is only used internally in this driver, you are
free to choose any name here, typically i would just write “ref”
because this is a reference, and in case i needed to make references
to more objects i would use ref1, ref2 … but the user is free to
choose.

 AnyKinEqSimpleDriver NeckJntDriver = {
  AnyRevoluteJoint &T12L1Joint

=Main.Model.HumanModel.Interface.Trunk.NeckJnt;
DriverPos = {0};
DriverVel = {0};
Reaction.Type = {1};
};

The reason why it write

> T12L1Joint : Unresolved object

for the script above is that it can not find the object that the
reference T12L1Joint is pointing at, if the reference had been named
Ref the error would have been “Ref : Unresolved object”

The error is that the reference is not correct so it can not be
found it should be

AnyRevoluteJoint
&T12L1Joint=Main.Model.HumanModel.Interface.Trunk.NeckJoint;

this i found out by looking for the neckjoint in the model tree.

Here are some more comments:

> And I don’t understand how the line you suggest should work.
> > AnyKinMeasureOrg &Ref1
= …HumanModel.Interface.Trunk.NeckJnt;
>
> Why are we creating an AnyKinMeasureOrg object?

Here we are not creating a AnyKinMeasureOrg object we are making a
reference to it, and you are right it should have been a
revoultejoint. The script would load with such an error but it would
throw a warning saying that Ref1 is constructed as a
AnyKinMeasureOrg and pointing at a revolute joint.

You can learn more about references in the tutorial “Advanced script
features” lesson 1, by following the link below

http://www.anybodytech.com/60.0.html

Best regards
AnyBody Support

— In anyscript@yahoogroups.com, tilak.dutta@u… wrote:
>
> Thanks for the lesson on dealing with unresolved objects.
>
> I tried a number of things including your suggestion but haven’t
quite gotten it
> to work.
>
> I see now why the line I had (below) was wrong.
> > AnyRevoluteJoint &T12L1Joint = .ref.JointsLumbar.NeckJnt;
>
> But were there actually 2 problems then? The first was the
reference to the
> folder containing the NeckJnt was wrong, but also the reference to
the
> AnyRevoluteJoint was wrong? I’m not sure I understand
why “AnyRevoluteJoint
> &T12L1Joint” is wrong. Aren’t we defining a new AnyRevoluteJoint
that will be
> called T12L1Joint? (In which case the program shouldn’t care that
it doesn’t
> exist yet).
>
> And I don’t understand how the line you suggest should work.
> > AnyKinMeasureOrg &Ref1
= …HumanModel.Interface.Trunk.NeckJnt;
>
> Why are we creating an AnyKinMeasureOrg object?
>
> In any case when I inserted the above code into the NeckJntDriver
folder, it
> tells me Ref1 is not recognized:
>
> Ref1 : Unresolved object.
>
> Again, why is it complaining about this when I’m creating a new
reference!?
>
> Perhaps I put it in the wrong place? Here’s how the code looked in
the
> JointAndDrivers.any file:
>
> AnyKinEqSimpleDriver NeckJntDriver = {
>
> AnyKinMeasureOrg &Ref1 = …HumanModel.Interface.Trunk.NeckJnt;
> DriverPos = {0};
> DriverVel = {0};
> Reaction.Type = {1};
> };
>
> By the way, I would think the correct code should be something
like:
>
> AnyRevoluteJoint &T12L1Joint =
Main.Model.HumanModel.Interface.Trunk.NeckJnt;
>
> Here’s how I typed it in the JointsAndDrivers.any file
>
> AnyKinEqSimpleDriver NeckJntDriver = {
> AnyRevoluteJoint &T12L1Joint
=Main.Model.HumanModel.Interface.Trunk.NeckJnt;
> DriverPos = {0};
> DriverVel = {0};
> Reaction.Type = {1};
> };
>
> When I typed this in, the T12L1Joint is not recognized:
>
> T12L1Joint : Unresolved object
>
> Anyway, I’m hoping you may be able to shed some light. Thanks!
> Tilak
>

I see! Thanks!

With the reference now corrected, the model loads but I get the following
warning:

Main.Study’ contains more reaction forces than rigid-body degrees of freedom of
the segments. The model may be statically indeterminate. There are 193 reactions
and only 192 rigid body degrees of freedom

Did I inadvertently add in too many drivers?

When I try to set initial postions or run the inverse dynamics analysis, I get
the following errors (I can’t actually see anything happening in the model
view):

********************************************************************************\


Set Initial Conditions: (Operation: Main.Study.SetInitialConditions):
WARNING - Approx. positions of
‘Main.Model.HumanModel.Trunk.JointsLumbar.SpineRhythmDrv.Measure’ are not set
(this is not yet possible in AnyKinMeasureLinComb)

********************************************************************************\


Inverse Dynamic Analysis (Operation: Main.Study.InverseDynamicAnalysis):
WARNING - Approx. positions of
‘Main.Model.HumanModel.Trunk.JointsLumbar.SpineRhythmDrv.Measure’ are not set
(this is not yet possible in AnyKinMeasureLinComb)
‘Main.Model.ModelEnvironmentConnection.JointsAndDrivers.AsisZDrv.LinComb’ are
not set (this is not yet possible in AnyKinMeasureLinComb)
0) Load time positions have been re-established.

  1. Kinematic analysis completed. The kinematic constraints have been resolved.
  2. Initial conditions are fully updated
  3. Inverse dynamic analysis…
    The system has less than 1 degree of freedom for the muscles to drive. The
    number of independent equilibrium equations is 0.

Any insight would again be much appreciated. I have placed the updated joints
and drivers file in yahoo group.
Tilak

Hi Tilak

> Main.Study’ contains more reaction forces than rigid-body degrees
>of freedom of
> the segments. The model may be statically indeterminate. There are
>193 reactions
> and only 192 rigid body degrees of freedom

This warning means that the muscles have nothing to do since the
reactions on the drivers and joints are doing their job.

I have looked in the JointsAndDrivers.ny file, the only thing i
noticed is that the neck joint has its reaction.type=1 this means
that this driver will carry the entire load on this joint. This is
ok in normal conditions if you use the model with muscles on. This
is because there is no muscles spanning the neck yet, so this joint
needs reactions switched on. In case you use a model with no muscles
in the spine it will automatically add reactions to this joint so it
will end up with too many reactions. The solution is to set this
reaction.type=0 for the neckdriver when you use the muscle less
models and otherwise set it to one.

> The model may be statically indeterminate. There are 193 reactions
> and only 192 rigid body degrees of freedom

This warning tells you that there are 193 reactions in the model but
only 192 ridig body dof. It is not because you have added too many
drivers in this case it is the reactions that may come along with
them that give the problem.

The warnings that you get when runing Setinitial pos is not
important if your models makes the rigth motion, that is the short
answer. The longer version is the following: Lets say you are
driving the elbow joint using a driver on this joint, then the
driver will have to drive the joint to meet a certain angle. In
order to do this it will use an approximate value as the initial
guess for the position. This approximate value helps making the
driver work reliable. The approximate values can however not be use
for a linear combination measure, so when you drive a linear
combination measure like in the PostureDriver it potential could
cause problems, for example that the spine would end up in a wrong
position. I have never seen this happen in practice but this is the
explanation for this warning.

> The system has less than 1 degree of freedom for the muscles to
>drive. The
> number of independent equilibrium equations is 0.

This means that you should remove some reaction from your model
since there are noting left for the muscles to carry, so remove the
reaction on the neckjoint driver. If you have doubt on how the
reaction.type works for drivers please read more about it in the
reference manual it is a very important feature of the system.
I think you have got this error when running a model with no muscles
on at all? but i am unsure about this, this could explain this
behaviour.

Best regards
AnyBody Support

— In anyscript@yahoogroups.com, tilak.dutta@u… wrote:
>
> I see! Thanks!
>
> With the reference now corrected, the model loads but I get the
following warning:
>
> Main.Study’ contains more reaction forces than rigid-body degrees
of freedom of
> the segments. The model may be statically indeterminate. There are
193 reactions
> and only 192 rigid body degrees of freedom
>
> Did I inadvertently add in too many drivers?
>
> When I try to set initial postions or run the inverse dynamics
analysis, I get
> the following errors (I can’t actually see anything happening in
the model view):
>
>



> Set Initial Conditions: (Operation:
Main.Study.SetInitialConditions):
> WARNING - Approx. positions of
> ‘Main.Model.HumanModel.Trunk.JointsLumbar.SpineRhythmDrv.Measure’
are not set
> (this is not yet possible in AnyKinMeasureLinComb)
>
>



> Inverse Dynamic Analysis (Operation:
Main.Study.InverseDynamicAnalysis):
> WARNING - Approx. positions of
> ‘Main.Model.HumanModel.Trunk.JointsLumbar.SpineRhythmDrv.Measure’
are not set
> (this is not yet possible in AnyKinMeasureLinComb)
> ‘Main.Model.ModelEnvironmentConnection.JointsAndDrivers.AsisZDrv.Li
nComb’ are
> not set (this is not yet possible in AnyKinMeasureLinComb)
> 0) Load time positions have been re-established.
> 1) Kinematic analysis completed. The kinematic constraints have
been resolved.
> 2) Initial conditions are fully updated
> 3) Inverse dynamic analysis…
> The system has less than 1 degree of freedom for the muscles to
drive. The
> number of independent equilibrium equations is 0.
>
> Any insight would again be much appreciated. I have placed the
updated joints
> and drivers file in yahoo group.
> Tilak
>

>The solution is to set this
> reaction.type=0 for the neckdriver when you use the muscle less
> models and otherwise set it to one.

> This means that you should remove some reaction from your model
> since there are noting left for the muscles to carry, so remove the
> reaction on the neckjoint driver. If you have doubt on how the
> reaction.type works for drivers please read more about it in the
> reference manual it is a very important feature of the system.
> I think you have got this error when running a model with no muscles
> on at all? but i am unsure about this, this could explain this
> behaviour.

Yes, I am currently working on the “muscle-less” model. I did as you suggested.
While my load-time errors have now disappeared, I now have the following run
time errors coming up:

WARNING - Approx. positions of
‘Main.Model.HumanModel.Trunk.JointsLumbar.SpineRhythmDrv.Measure’ are not set
(this is not yet possible in AnyKinMeasureLinComb)
WARNING - Approx. positions of
‘Main.Model.ModelEnvironmentConnection.JointsAndDrivers.AsisZDrv.LinComb’ are
not set (this is not yet possible in AnyKinMeasureLinComb)

While these are warnings and not errors, when I run any of the studies, I don’t
see anything happen in the model view window. The analyses seem to run terribly
slow. Even when I try and step though the kinematic alalysis, I can’t see
anything happening (though I can hear my processor working away like mad)

I have updated the joints and drivers file in the yahoo group.

Thanks,
Tilak

Oh, I forgot to ask: To make my nurse model, I wanted to add shoulders to the
exsisting gait3d model. Can I simply copy and paste shoulders from the standing
model? (Since the marker that I will use to drive this is ) Or would it make
more sense to start with the standing model and slowly drive more and more of
the joints with markers (and perhaps get rid of the lower arms, and maybe head)?

Tilak

Hi Tilak

The warnings that you get now when running the model is not important if your
models makes the rigth motion, that is the short answer.

The longer version is the following: Lets say you are
driving the elbow joint using a driver on this joint, then the
driver will have to drive the joint to meet a certain angle. In
order to do this it will use an approximate value as the initial
guess for the position. This approximate value helps making the
driver work reliable. The approximate values can however not be use
for a linear combination measure, so when you drive a linear
combination measure like in the PostureDriver it potential could
cause problems, for example that the spine would end up in a wrong
position. I have never seen this happen in practice but this is the
explanation for this warning.

I have taken the files in the Tilak directory and combined them with the Gait3D
model to get the missing files. The model i ended up with do move, so i am
unsure what has went wrong with your model. I have zipped my version of the
nurse model an uploaded it to the Tilak files directory. Please try to check if
it now will run on you pc. If you continue to have problems please zip the
entire application and upload it and we will try to have a look at it.

Best regards

AnyBody Technology Support

— In anyscript@yahoogroups.com, tilak.dutta@u… wrote:
>
> >The solution is to set this
> > reaction.type=0 for the neckdriver when you use the muscle less
> > models and otherwise set it to one.
>
> > This means that you should remove some reaction from your model
> > since there are noting left for the muscles to carry, so remove the
> > reaction on the neckjoint driver. If you have doubt on how the
> > reaction.type works for drivers please read more about it in the
> > reference manual it is a very important feature of the system.
> > I think you have got this error when running a model with no muscles
> > on at all? but i am unsure about this, this could explain this
> > behaviour.
>
> Yes, I am currently working on the “muscle-less” model. I did as you
suggested.
> While my load-time errors have now disappeared, I now have the following run
> time errors coming up:
>
> WARNING - Approx. positions of
> ‘Main.Model.HumanModel.Trunk.JointsLumbar.SpineRhythmDrv.Measure’ are not set
> (this is not yet possible in AnyKinMeasureLinComb)
> WARNING - Approx. positions of
> ‘Main.Model.ModelEnvironmentConnection.JointsAndDrivers.AsisZDrv.LinComb’ are
> not set (this is not yet possible in AnyKinMeasureLinComb)
>
> While these are warnings and not errors, when I run any of the studies, I
don’t
> see anything happen in the model view window. The analyses seem to run
terribly
> slow. Even when I try and step though the kinematic alalysis, I can’t see
> anything happening (though I can hear my processor working away like mad)
>
> I have updated the joints and drivers file in the yahoo group.
>
> Thanks,
> Tilak
>

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

Hi Tilak

The warnings that you get now when running the model is not important if your
models makes the rigth motion, that is the short answer.

The longer version is the following: Lets say you are
driving the elbow joint using a driver on this joint, then the
driver will have to drive the joint to meet a certain angle. In
order to do this it will use an approximate value as the initial
guess for the position. This approximate value helps making the
driver work reliable. The approximate values can however not be use
for a linear combination measure, so when you drive a linear
combination measure like in the PostureDriver it potential could
cause problems, for example that the spine would end up in a wrong
position. I have never seen this happen in practice but this is the
explanation for this warning.

I have taken the files in the Tilak directory and combined them with the Gait3D
model to get the missing files. The model i ended up with do move, so i am
unsure what has went wrong with your model. I have zipped my version of the
nurse model an uploaded it to the Tilak files directory. Please try to check if
it now will run on you pc. If you continue to have problems please zip the
entire application and upload it and we will try to have a look at it.

Best regards

AnyBody Technology Support

— In anyscript@yahoogroups.com, tilak.dutta@u… wrote:
>
> >The solution is to set this
> > reaction.type=0 for the neckdriver when you use the muscle less
> > models and otherwise set it to one.
>
> > This means that you should remove some reaction from your model
> > since there are noting left for the muscles to carry, so remove the
> > reaction on the neckjoint driver. If you have doubt on how the
> > reaction.type works for drivers please read more about it in the
> > reference manual it is a very important feature of the system.
> > I think you have got this error when running a model with no muscles
> > on at all? but i am unsure about this, this could explain this
> > behaviour.
>
> Yes, I am currently working on the “muscle-less” model. I did as you
suggested.
> While my load-time errors have now disappeared, I now have the following run
> time errors coming up:
>
> WARNING - Approx. positions of
> ‘Main.Model.HumanModel.Trunk.JointsLumbar.SpineRhythmDrv.Measure’ are not set
> (this is not yet possible in AnyKinMeasureLinComb)
> WARNING - Approx. positions of
> ‘Main.Model.ModelEnvironmentConnection.JointsAndDrivers.AsisZDrv.LinComb’ are
> not set (this is not yet possible in AnyKinMeasureLinComb)
>
> While these are warnings and not errors, when I run any of the studies, I
don’t
> see anything happen in the model view window. The analyses seem to run
terribly
> slow. Even when I try and step though the kinematic alalysis, I can’t see
> anything happening (though I can hear my processor working away like mad)
>
> I have updated the joints and drivers file in the yahoo group.
>
> Thanks,
> Tilak
>

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

> I have taken the files in the Tilak directory and combined them with the
> Gait3D model to get the missing files. The model i ended up with do move, so
> i am unsure what has went wrong with your model. I have zipped my version of
> the nurse model an uploaded it to the Tilak files directory. Please try to
> check if it now will run on you pc.

Thanks! I don’t know what I have different in my files, but yours work fine now.

Ok, so I’m ready to move forward with adding my motion capture data to the
gait3d model. One of the differences with our data is that we assume the ankle
is fixed. So, what I want to do is replace the MalleolusRDrv and MalleolusLDrv
in the joints and drivers file with drivers from the StandingModel
JointsAndDrivers file as shown below:

I want to replace:


AnyKinEqSimpleDriver MalleolusRDrv = {
AnyKinLinear MalleolusR ={
AnyRefFrame &ref1=Main.Model.Markers.p3.Seg;
AnyRefFrame
&ref2=Main.Model.HumanModel.Right.Leg.Seg.Shank.MalleolusMarkerR;
//AnyDrawPLine drw={RGB={1,0,0};Thickness=0.005; };
};
MeasureOrganizer={1};
DriverPos={0};
DriverVel={0};
Reaction.Type={0};
};


and


AnyKinEqSimpleDriver MalleolusLDrv = {
AnyKinLinear MalleolusL ={
AnyRefFrame &ref1=Main.Model.Markers.p10.Seg;
AnyRefFrame
&ref2=Main.Model.HumanModel.Left.Leg.Seg.Shank.MalleolusMarkerL;
//AnyDrawPLine drw={RGB={1,0,0};Thickness=0.005; };
};
MeasureOrganizer={1};
DriverPos={0};
DriverVel={0};
Reaction.Type={0};
};


with


AnyKinEqSimpleDriver LAnkleX ={
AnyKinLinear AnklePos = {
AnyFixedRefFrame &Ground = Main.Model.EnvironmentModel.GlobalRef;
AnyRefNode &Ankle = …LegL.Seg.Foot.AnkleJoint;
};
MeasureOrganizer = {0}; // Only the x coordinate
DriverPos = {0.0};
DriverVel = {0.0};
Reaction.Type = {0};
};


and


AnyKinEqSimpleDriver RAnkleX = {
AnyKinLinear AnklePos = {
AnyFixedRefFrame &Ground = Main.Model.EnvironmentModel.GlobalRef;
AnyRefNode &Ankle = …LegR.Seg.Foot.AnkleJoint;
};
MeasureOrganizer = {0}; // Only the x coordinate
DriverPos = {0.0};
DriverVel = {0.0};
Reaction.Type = {0};
};


I know I’ll probably have invalid references if I simply copy and paste, and
I’ll fix those issues, but in principle, should this work?

Many thanks!
Tilak

Hi Tilak

To obtain a fixed ankel you will need to drive two dof in the ankle
since this is made as a universal joint.

So you also need to remove one more marker driver from the foot.
This driver could be z direction of the heel marker or the z
direction of the matatarsal marker.

Best regards
AnyBody Technology Support

— In anyscript@yahoogroups.com, tilak.dutta@u… wrote:
>
>
> > I have taken the files in the Tilak directory and combined them
with the
> > Gait3D model to get the missing files. The model i ended up with
do move, so
> > i am unsure what has went wrong with your model. I have zipped
my version of
> > the nurse model an uploaded it to the Tilak files directory.
Please try to
> > check if it now will run on you pc.
>
> Thanks! I don’t know what I have different in my files, but yours
work fine now.
>
> Ok, so I’m ready to move forward with adding my motion capture
data to the
> gait3d model. One of the differences with our data is that we
assume the ankle
> is fixed. So, what I want to do is replace the MalleolusRDrv and
MalleolusLDrv
> in the joints and drivers file with drivers from the StandingModel
> JointsAndDrivers file as shown below:
>
> I want to replace:
> ___________________________________________________________________
> AnyKinEqSimpleDriver MalleolusRDrv = {
> AnyKinLinear MalleolusR ={
> AnyRefFrame &ref1=Main.Model.Markers.p3.Seg;
> AnyRefFrame
&ref2=Main.Model.HumanModel.Right.Leg.Seg.Shank.MalleolusMarkerR;
> //AnyDrawPLine drw={RGB={1,0,0};Thickness=0.005; };
> };
> MeasureOrganizer={1};
> DriverPos={0};
> DriverVel={0};
> Reaction.Type={0};
> };
>


> and
>


> AnyKinEqSimpleDriver MalleolusLDrv = {
> AnyKinLinear MalleolusL ={
> AnyRefFrame &ref1=Main.Model.Markers.p10.Seg;
> AnyRefFrame
&ref2=Main.Model.HumanModel.Left.Leg.Seg.Shank.MalleolusMarkerL;
> //AnyDrawPLine drw={RGB={1,0,0};Thickness=0.005; };
> };
> MeasureOrganizer={1};
> DriverPos={0};
> DriverVel={0};
> Reaction.Type={0};
> };
>


>
> with
>


> AnyKinEqSimpleDriver LAnkleX ={
> AnyKinLinear AnklePos = {
> AnyFixedRefFrame &Ground =
Main.Model.EnvironmentModel.GlobalRef;
> AnyRefNode &Ankle = …LegL.Seg.Foot.AnkleJoint;
> };
> MeasureOrganizer = {0}; // Only the x coordinate
> DriverPos = {0.0};
> DriverVel = {0.0};
> Reaction.Type = {0};
> };
>


> and
>


> AnyKinEqSimpleDriver RAnkleX = {
> AnyKinLinear AnklePos = {
> AnyFixedRefFrame &Ground =
Main.Model.EnvironmentModel.GlobalRef;
> AnyRefNode &Ankle = …LegR.Seg.Foot.AnkleJoint;
> };
> MeasureOrganizer = {0}; // Only the x coordinate
> DriverPos = {0.0};
> DriverVel = {0.0};
> Reaction.Type = {0};
> };
>


>
> I know I’ll probably have invalid references if I simply copy and
paste, and
> I’ll fix those issues, but in principle, should this work?
>
> Many thanks!
> Tilak
>

Hi Soeren,

I can not figure out the explanation because I can see that you have sent it
to both the yahoogroup and Anybody support. Next time please write only to
the yahoo group since I am getting these messages multiple times.

Sorry about this, I just switched over to using a new email address and
forgot to add that to my yahoo profile. From now on, I’ll only send to the
group.

The stuff about the neck marker is simple :wink: you miss a semicolon “;” on
the following line

Sheesh, I should have figured that one out on my own! However, this brings
me to a question that I have been wondering about:

I would like to create new markers at C7, T10, and the left and right PSIS
(Posterior superior iliac spine). I’ve managed to find T10 (atleast I think)
by looking in the Spine/ContactPoints.any file.:

AnyFolder &T10 = refThorax.ThoraxSeg;
T10={
AnyRefNode T10ContactNode = {
sRel= .Scale({-0.052,0.187,0});
AnyDrawNode drw={
ScaleXYZ={0.005,.005,.0050};
RGB={1,0,0};
};
};

};

I took the coordinates of the T10ContactNode and made it a marker for T10
(see below). Two possible issues:

  1. When I only use the given coords: {-0.052,0.187,0}, the marker looks like
    it’s in the wrong place, so then I added in the .Scale before it: .Scale({-
    0.052,0.187,0}) and it looks better. But, how come none of the other markers
    in the MarkerPosOnBody file need such a scaling?

  2. Is the T10ContactNode really the bony prominence that we physically place
    our motion capture marker on? Or does it refer to the contact between T10
    and T11 or something. (the way it shows up in the model view, it looks a
    little low - my anatomy is rusty but it looks a little low.)

As for C7, I’m not sure how to get precise coords for this point. I used the
coords for NeckNode in Spine/SegmentsThorax/SkullSeg and by trial and error
I moved it around until it sat over the point where I think C7 should be. It
seems there should be a better way to do this. Since the image of C7 is
there, the coords for that point should exist somewhere, no?

(You can take a look at my files, the updated JointsAndDrivers as well as
the updated MarkerPosOnBody are in the yahoo group)

It appears that I’ll have to do the same thing for both the left and right
PSIS’s so I’ll hold off for now to verify my methods with you.

I have changed the drivers for the heel the by removing the AnkleX drivers I
> do not really see the point of these since they drive the ankle maker in the
> x direction. I guess what you wanted to do was to drive the two dof in the
> ankle joint, so I have changed this.
>

Just to be clear: does this still mean that the foot is fixed relative to
the shank now?

Tilak

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

Hi Tilak

> I took the coordinates of the T10ContactNode and made it a marker for T10
> (see below). Two possible issues:
>
> 1. When I only use the given coords: {-0.052,0.187,0}, the marker looks like
> it’s in the wrong place, so then I added in the .Scale before it: .Scale({-
> 0.052,0.187,0}) and it looks better. But, how come none of the other markers
> in the MarkerPosOnBody file need such a scaling?

This is correct you need to have the scale function around the srel coordinates
otherwise the position for this marker will only work for this particlar
subject. If the size of throax was changed in the AnyNurse.any file the marker
would not remain at the same spot. You are also right that the scaling has to be
added for the remaining markers on the leg, this is something that have been on
my list of things to do for a while ;-). As it is now these marker positions
will only be correctly positioned for this particular subject. I will update
this at some point next week if i find the time for this. I you need it
urgently please follow this procedure

For each marker:

1 copy the marker and rename it

2 add a scale around the srel on the new marker

3 reload the model

4 subtract srel of the two nodes (the one with and without the scale term)

5 use this results to obtain the correct postion of the scaled node, by
subtracing the vector on the original srel

6 you should now have a maker which can be scaled together with the bone

> 2. Is the T10ContactNode really the bony prominence that we physically place
> our motion capture marker on? Or does it refer to the contact between T10
> and T11 or something. (the way it shows up in the model view, it looks a
> little low - my anatomy is rusty but it looks a little low.)

This marker is only roughly fitted to the spine around T10, so please just
relocate this as you prefer to have it.

> As for C7, I’m not sure how to get precise coords for this point. I used the
> coords for NeckNode in Spine/SegmentsThorax/SkullSeg and by trial and error
> I moved it around until it sat over the point where I think C7 should be. It
> seems there should be a better way to do this. Since the image of C7 is
> there, the coords for that point should exist somewhere, no?

I am affraid the manual procedure is the fasted and only option here…

>
> Just to be clear: does this still mean that the foot is fixed relative to
> the shank now?
>

Yes the ankel jont is locked 100% so the foot is fixed relative to the shank

Best regards

AnyBody Technology Support

Great! now that I have the markers being scaled with the bones, I think I’m
ready to try and apply my motion capture data to my model. I have already
made the forceplate data and motion capture data files. One question I have
is: what is the CentreOfPressurePlateOffset1?

Also, I noticed that one of the consequences of making the ankle joint of my
model fixed is that the “force arrows” that display the groud reaction
forces no longer look like they make contact with the bottom of the
foot.Does the force still act on the foot in this case? (You can confirm the
problem by running my model/application. I’ve included the entire
application with all associated files on the yahoo group.)

Finally, I assume I’ll have to put in anthropometric data for my subject in
order to use the subjects motion capture data. I would like to veryify from
the model view that my new anthropometrics are being incorporated into the
model. Is there an easy way to display segment lengths or total body mass
parameters in the model view so I can do this?

Many thanks,
Tilak

On 10/28/05, AnyBody Support <support@anybodytech.com> wrote:
>
>
> Hi Tilak
>
>
> > I took the coordinates of the T10ContactNode and made it a marker for
> T10
> > (see below). Two possible issues:
> >
> > 1. When I only use the given coords: {-0.052,0.187,0}, the marker looks
> like
> > it’s in the wrong place, so then I added in the .Scale before it:
> .Scale({-
> > 0.052,0.187,0}) and it looks better. But, how come none of the other
> markers
> > in the MarkerPosOnBody file need such a scaling?
>
>
> This is correct you need to have the scale function around the srel
> coordinates otherwise the position for this marker will only work for this
> particlar subject. If the size of throax was changed in the AnyNurse.anyfile
the marker would not remain at the same spot. You are also right that
> the scaling has to be added for the remaining markers on the leg, this is
> something that have been on my list of things to do for a while ;-). As it
> is now these marker positions will only be correctly positioned for this
> particular subject. I will update this at some point next week if i find the
> time for this. I you need it urgently please follow this procedure
>
> For each marker:
>
> 1 copy the marker and rename it
>
> 2 add a scale around the srel on the new marker
>
> 3 reload the model
>
> 4 subtract srel of the two nodes (the one with and without the scale term)
>
> 5 use this results to obtain the correct postion of the scaled node, by
> subtracing the vector on the original srel
>
> 6 you should now have a maker which can be scaled together with the bone
>
>
> > 2. Is the T10ContactNode really the bony prominence that we physically
> place
> > our motion capture marker on? Or does it refer to the contact between
> T10
> > and T11 or something. (the way it shows up in the model view, it looks a
> > little low - my anatomy is rusty but it looks a little low.)
>
>
> This marker is only roughly fitted to the spine around T10, so please just
> relocate this as you prefer to have it.
>
>
> > As for C7, I’m not sure how to get precise coords for this point. I used
> the
> > coords for NeckNode in Spine/SegmentsThorax/SkullSeg and by trial and
> error
> > I moved it around until it sat over the point where I think C7 should
> be. It
> > seems there should be a better way to do this. Since the image of C7 is
> > there, the coords for that point should exist somewhere, no?
>
>
> I am affraid the manual procedure is the fasted and only option here…
>
> >
> > Just to be clear: does this still mean that the foot is fixed relative
> to
> > the shank now?
> >
>
>
> Yes the ankel jont is locked 100% so the foot is fixed relative to the
> shank
>
>
>
> Best regards
>
> AnyBody Technology Support
>
>
>
>
>
>
>
> AnyBody Technology provides free support on the use of the AnyBody
> Modeling System and the Scripting language AnyScript. Other users are
> welcome to join the discussions.
> Yahoo! Groups Links
>
>
>
>
>
>
>

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

Hi Tilak

The offset stuff is used to move the center of pressure sideways in respect to
the ankle. This was something which was needed to adjust the center of pressure
to act in the right way on the foot, otherwise the center of pressure would act
too much sideways on the foot. The inacuray may have come from misplaced markers
on the model compared to marker position on the real subject. So if you start
with your own data do not use the offset stuff.

Making the ankle stiff ill have the consequences you describe that is to be
expected, when a joint is locked and the remaining kinematic drives are the same
the foot will not follow the floor anymore. Between the forceplates and the feet
there is a AnyReactionForce. The short description is that this can be used for
adding reactions between segments whitout controlling the kinematics, please
look up the details in the manual. So even when the feet do not have contact
with the floor there wil be a reaction between the forceplate and the foot
segment.

If the distance between the foot and the force plate are large it will add an
extra moment to the foot which could be undesired. Basically the foot and the
forceplate could be regarded as one stiff segment if you look only at one
timestep, because the AnyReacForce creates reaction forces between the two
segments. Then in the next timestep the distance between the segment will have
changed and they can be regarded as a new segment of another size. So what i
wanted to say was that in our model the motion of the model and location of the
forceplate center fits. There will not be an undesired moment around the foot
due to large distances between the segments, that will create a moment arm.

If you in your model have a mismatch between kinematics and the center of
pressure it will add an error to your results. So if the subject is walking
with a free ankle and you measure the forceplate data. Then it should be
allright afterwards to lock the ankle motion and still use the measured
forceplate location. If you on the otherhand had measured the motion of a
subject and used force plate center for another one it will not work.

Sorry about this long explanation i hope it was more or less clear… :wink:

When you make the changes in the AnyNurse.any file and use this for the scaling
this will change the sizes of the bones in the ModelView. If you would like to
see the length you have used please look in the following folder in the
modeltree

HumanModel.Scaling.AnthroSegmentLengths

Best regards

AnyBody Technology Support

— In anyscript@yahoogroups.com, Tilak Dutta <tilak.dutta@g…> wrote:
>
> Great! now that I have the markers being scaled with the bones, I think I’m
> ready to try and apply my motion capture data to my model. I have already
> made the forceplate data and motion capture data files. One question I have
> is: what is the CentreOfPressurePlateOffset1?
>
> Also, I noticed that one of the consequences of making the ankle joint of my
> model fixed is that the “force arrows” that display the groud reaction
> forces no longer look like they make contact with the bottom of the
> foot.Does the force still act on the foot in this case? (You can confirm the
> problem by running my model/application. I’ve included the entire
> application with all associated files on the yahoo group.)
>
> Finally, I assume I’ll have to put in anthropometric data for my subject in
> order to use the subjects motion capture data. I would like to veryify from
> the model view that my new anthropometrics are being incorporated into the
> model. Is there an easy way to display segment lengths or total body mass
> parameters in the model view so I can do this?
>
> Many thanks,
> Tilak
>
> On 10/28/05, AnyBody Support support@a… wrote:
> >
> >
> > Hi Tilak
> >
> >
> > > I took the coordinates of the T10ContactNode and made it a marker for
> > T10
> > > (see below). Two possible issues:
> > >
> > > 1. When I only use the given coords: {-0.052,0.187,0}, the marker looks
> > like
> > > it’s in the wrong place, so then I added in the .Scale before it:
> > .Scale({-
> > > 0.052,0.187,0}) and it looks better. But, how come none of the other
> > markers
> > > in the MarkerPosOnBody file need such a scaling?
> >
> >
> > This is correct you need to have the scale function around the srel
> > coordinates otherwise the position for this marker will only work for this
> > particlar subject. If the size of throax was changed in the AnyNurse.anyfile
the marker would not remain at the same spot. You are also right that
> > the scaling has to be added for the remaining markers on the leg, this is
> > something that have been on my list of things to do for a while ;-). As it
> > is now these marker positions will only be correctly positioned for this
> > particular subject. I will update this at some point next week if i find the
> > time for this. I you need it urgently please follow this procedure
> >
> > For each marker:
> >
> > 1 copy the marker and rename it
> >
> > 2 add a scale around the srel on the new marker
> >
> > 3 reload the model
> >
> > 4 subtract srel of the two nodes (the one with and without the scale term)
> >
> > 5 use this results to obtain the correct postion of the scaled node, by
> > subtracing the vector on the original srel
> >
> > 6 you should now have a maker which can be scaled together with the bone
> >
> >
> > > 2. Is the T10ContactNode really the bony prominence that we physically
> > place
> > > our motion capture marker on? Or does it refer to the contact between
> > T10
> > > and T11 or something. (the way it shows up in the model view, it looks a
> > > little low - my anatomy is rusty but it looks a little low.)
> >
> >
> > This marker is only roughly fitted to the spine around T10, so please just
> > relocate this as you prefer to have it.
> >
> >
> > > As for C7, I’m not sure how to get precise coords for this point. I used
> > the
> > > coords for NeckNode in Spine/SegmentsThorax/SkullSeg and by trial and
> > error
> > > I moved it around until it sat over the point where I think C7 should
> > be. It
> > > seems there should be a better way to do this. Since the image of C7 is
> > > there, the coords for that point should exist somewhere, no?
> >
> >
> > I am affraid the manual procedure is the fasted and only option here…
> >
> > >
> > > Just to be clear: does this still mean that the foot is fixed relative
> > to
> > > the shank now?
> > >
> >
> >
> > Yes the ankel jont is locked 100% so the foot is fixed relative to the
> > shank
> >
> >
> >
> > Best regards
> >
> > AnyBody Technology Support
> >
> >
> >
> >
> >
> >
> >
> > AnyBody Technology provides free support on the use of the AnyBody
> > Modeling System and the Scripting language AnyScript. Other users are
> > welcome to join the discussions.
> > Yahoo! Groups Links
> >
> >
> >
> >
> >
> >
> >
>
>
> [Non-text portions of this message have been removed]
>

Hi,

So, I finally included all my own forceplate data as well as motion capture
data, but when I try to compile, I get an error saying that I have too many
points (or perhaps too few points) in some file. As far as I can tell, I put
60*7+2 = 422 data points into each file.

Here’s the error I got:
Tilak-Nurse - Nov6withRosalie\Environment.any(39) : LinDrv1 : The matrix
must contain the same number of columns as T has elements, i.e., data points
and time must match

Deleting last loaded model…
Model loading skipped

Any ideas what I might be doing wrong?

Also, I think I’m going to have a problem with my initial positions study.
How do I update the InitialPositions.any file to fit my data?

I have zipped my application to the yahoo group.

Many thanks,
Tilak

On 11/2/05, AnyBody Support <support@anybodytech.com> wrote:
>
>
> Hi Tilak
>
> The offset stuff is used to move the center of pressure sideways in
> respect to the ankle. This was something which was needed to adjust the
> center of pressure to act in the right way on the foot, otherwise the center
> of pressure would act too much sideways on the foot. The inacuray may have
> come from misplaced markers on the model compared to marker position on the
> real subject. So if you start with your own data do not use the offset
> stuff.
>
> Making the ankle stiff ill have the consequences you describe that is to
> be expected, when a joint is locked and the remaining kinematic drives are
> the same the foot will not follow the floor anymore. Between the forceplates
> and the feet there is a AnyReactionForce. The short description is that this
> can be used for adding reactions between segments whitout controlling the
> kinematics, please look up the details in the manual. So even when the feet
> do not have contact with the floor there wil be a reaction between the
> forceplate and the foot segment.
>
> If the distance between the foot and the force plate are large it will add
> an extra moment to the foot which could be undesired. Basically the foot and
> the forceplate could be regarded as one stiff segment if you look only at
> one timestep, because the AnyReacForce creates reaction forces between the
> two segments. Then in the next timestep the distance between the segment
> will have changed and they can be regarded as a new segment of another size.
> So what i wanted to say was that in our model the motion of the model and
> location of the forceplate center fits. There will not be an undesired
> moment around the foot due to large distances between the segments, that
> will create a moment arm.
>
> If you in your model have a mismatch between kinematics and the center of
> pressure it will add an error to your results. So if the subject is walking
> with a free ankle and you measure the forceplate data. Then it should be
> allright afterwards to lock the ankle motion and still use the measured
> forceplate location. If you on the otherhand had measured the motion of a
> subject and used force plate center for another one it will not work.
>
> Sorry about this long explanation i hope it was more or less clear… :wink:
>
> When you make the changes in the AnyNurse.any file and use this for the
> scaling this will change the sizes of the bones in the ModelView. If you
> would like to see the length you have used please look in the following
> folder in the modeltree
>
> HumanModel.Scaling.AnthroSegmentLengths
>
> Best regards
>
> AnyBody Technology Support
>

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