Driving the glenohumeral joint in translation

Hi Soren,
i’ve worked on my model for a couple of days and now I face a
new problem. I have to drive the glenohumeral joint in translation,
that is the core of my research effort. The fact is that I study the
effect of the rotator cuff muscles tears and in this case, the
stability of the glenohumeral joint is compromised. So I want to allow
a translation of the joint in the Y direction with a point file
(translation.txt). I’m not very good with the joints and drivers, but
i’ve added the point file just before the humerus segment code and a
linear driver just after this same code. You’ll find it in the
‘seg.any’ script. So, I have the same number of constraints and degree
of freedom but it gives my this error :

ERROR(OBJ.MCH.KIN2) : F:\Program Files\AnyBody
Technology\AnyBody.2.0\Repository.6.0.1\BRep\Aalborg\Arm3D\ArmCal0.any(105)
: ‘ArmCalibrationStudy0’ : Model is kinematically
over-constrained : Position analysis failed : 3 unsolvable
constraint(s) found

Maybe i’m doing the wrong way, i’m not sure of that. So if you can
have a look on it, it would be very appreciated. I will put all the
files in the ZIP file ‘shoulder_model_with_translation.zip’.

So, thank you in advance

Looking forward to meet you in Aalborg in 2 weeks

bye bye

Pierre-Olivier

Hi Pierre-Olivier

I have tried to debug you model but i think i miss the file used by
this code:

AnyString datafile = “F:\Program Files\AnyBody Technology\AnyBody.2.0
ranslation.txt”;

AnyFunInterpol MarkerData_humerus =
{
Type=Bspline;
BsplineOrder = 8;
FileName = .datafile;
};

This is in the “Seg.any” file.

I took a look at the Seg.any file, you have added a driver of the
linear measure between scapula and humerus. So this adds three
constraints to the problem.

So in order to have the model running you need to remove three dof
from the model, otherwise it will be overconstrained.

In the Jnt.any there is the following lines :

AnyKinEq GHLinCon = {
AnyKinMeasure &GHLinCon = .GHLin;
Reaction.Type={Off,Off,Off};
};

These adds also three lin constraints between the same two segments
so they will be in conflict if they are both active at the same
time.

Please consider also how you would like to have the lineat reactions
in the GH joint to carried? In the org. version of the Brep the
GHReacytion.any file takes care of ensuring that the reactions in
the GhH joints falls within the cavity on scapula. In your code by
having the reactions switched on, in the interpoaltion driver, this
will not be the case. So i think you should swicth off the reactions
in this interpolation driver.

Looking forward to see you too in Aalborg :wink:

Best regards
Søren, AnyBosy Support

— In anyscript@yahoogroups.com, “Pierre-Olivier Lemieux”
<pothekid@…> wrote:
>
> Hi Soren,
> i’ve worked on my model for a couple of days and now I
face a
> new problem. I have to drive the glenohumeral joint in translation,
> that is the core of my research effort. The fact is that I study
the
> effect of the rotator cuff muscles tears and in this case, the
> stability of the glenohumeral joint is compromised. So I want to
allow
> a translation of the joint in the Y direction with a point file
> (translation.txt). I’m not very good with the joints and drivers,
but
> i’ve added the point file just before the humerus segment code and
a
> linear driver just after this same code. You’ll find it in the
> ‘seg.any’ script. So, I have the same number of constraints and
degree
> of freedom but it gives my this error :
>
> ERROR(OBJ.MCH.KIN2) : F:\Program Files\AnyBody
> Technology\AnyBody.2.0\Repository.6.0.1
\BRep\Aalborg\Arm3D\ArmCal0.any(105)
> : ‘ArmCalibrationStudy0’ : Model is kinematically
> over-constrained : Position analysis failed : 3 unsolvable
> constraint(s) found
>
> Maybe i’m doing the wrong way, i’m not sure of that. So if you can
> have a look on it, it would be very appreciated. I will put all the
> files in the ZIP file ‘shoulder_model_with_translation.zip’.
>
> So, thank you in advance
>
> Looking forward to meet you in Aalborg in 2 weeks
>
> bye bye
>
> Pierre-Olivier
>

Hi again Soren,
sorry for the mixed-up, it was very late yesterday. So
the MarkerData_Humerus is the interpolation function that allow the
translation of the humerus from the initial position to 9 mm upward
this position. I was not sure about the linear and rotational measure
between scapula and humerus. Actually I think that is wrong because I
can drive the humerus directly by absolute coordinates in the
interpolation function. I was trying to do like the ‘MarkerData’
script in the Gait3D model and like my ‘via points’. I’ve supposed
that these drivers was necessery, in order to make the model works, so
maybe I’ve misunderstood something about that.

So, I’ve commented ‘GHreactions.any’,‘GHLinCon’ and ‘GHDriverRight’ in
order to make my glenohumeral articulation free. I’ve switched Off the
Reaction.type of my interpolation driver. Now I have a lack of
constraints in my model (3 missing constraints). I can figure 2 of
them, that are the X and Z constraints of the GH articulation. So, I
don’t really know how to add these X and Z constraints and how to find
the other constraint to add, in order to make my model works.

Thank you for your quick support (even with the time shift between
Aalborg and Montreal :wink: … )

Have a nice day

Pierre-Olivier

— In anyscript@yahoogroups.com, “AnyBody Support” <support@…> wrote:
>
> Hi Pierre-Olivier
>
>
> I have tried to debug you model but i think i miss the file used by
> this code:
>
>
>
> AnyString datafile = “F:\Program Files\AnyBody Technology\AnyBody.2.0
> ranslation.txt”;
>
> AnyFunInterpol MarkerData_humerus =
> {
> Type=Bspline;
> BsplineOrder = 8;
> FileName = .datafile;
> };
>
>
> This is in the “Seg.any” file.
>
>
> I took a look at the Seg.any file, you have added a driver of the
> linear measure between scapula and humerus. So this adds three
> constraints to the problem.
>
> So in order to have the model running you need to remove three dof
> from the model, otherwise it will be overconstrained.
>
> In the Jnt.any there is the following lines :
>
>
> AnyKinEq GHLinCon = {
> AnyKinMeasure &GHLinCon = .GHLin;
> Reaction.Type={Off,Off,Off};
> };
>
>
> These adds also three lin constraints between the same two segments
> so they will be in conflict if they are both active at the same
> time.
>
>
> Please consider also how you would like to have the lineat reactions
> in the GH joint to carried? In the org. version of the Brep the
> GHReacytion.any file takes care of ensuring that the reactions in
> the GhH joints falls within the cavity on scapula. In your code by
> having the reactions switched on, in the interpoaltion driver, this
> will not be the case. So i think you should swicth off the reactions
> in this interpolation driver.
>
> Looking forward to see you too in Aalborg :wink:
>
> Best regards
> Søren, AnyBosy Support
>
>
>
>
>
>
>
> — In anyscript@yahoogroups.com, “Pierre-Olivier Lemieux”
> <pothekid@> wrote:
> >
> > Hi Soren,
> > i’ve worked on my model for a couple of days and now I
> face a
> > new problem. I have to drive the glenohumeral joint in translation,
> > that is the core of my research effort. The fact is that I study
> the
> > effect of the rotator cuff muscles tears and in this case, the
> > stability of the glenohumeral joint is compromised. So I want to
> allow
> > a translation of the joint in the Y direction with a point file
> > (translation.txt). I’m not very good with the joints and drivers,
> but
> > i’ve added the point file just before the humerus segment code and
> a
> > linear driver just after this same code. You’ll find it in the
> > ‘seg.any’ script. So, I have the same number of constraints and
> degree
> > of freedom but it gives my this error :
> >
> > ERROR(OBJ.MCH.KIN2) : F:\Program Files\AnyBody
> > Technology\AnyBody.2.0\Repository.6.0.1
> \BRep\Aalborg\Arm3D\ArmCal0.any(105)
> > : ‘ArmCalibrationStudy0’ : Model is kinematically
> > over-constrained : Position analysis failed : 3 unsolvable
> > constraint(s) found
> >
> > Maybe i’m doing the wrong way, i’m not sure of that. So if you can
> > have a look on it, it would be very appreciated. I will put all the
> > files in the ZIP file ‘shoulder_model_with_translation.zip’.
> >
> > So, thank you in advance
> >
> > Looking forward to meet you in Aalborg in 2 weeks
> >
> > bye bye
> >
> > Pierre-Olivier
> >
>

Hi Pierre-Olivier

I wil try to list the consequences of commeting the different items:

‘GHreactions.any’ This will have no effect on the motion but it will
remove the linear reactions in the GH joint.

‘GHLinCon’ By not having this object you will remove three linear
constraints in the GH joint, so it bascially removes the joint…
The reactions in this object has already been switched off, so the
reactions are not affected by removing the object.

‘GHDriverRight’ This driver drives the rotations between scapula and
huemrus so removing this object leaves these rotations free.

So as i have understood your problem you still need to have the
GHDriverRight active to control the motion of the humerus.
Furthermore you also need to have the new interpolation driver
between scapula and humerus active this will basically replace the
GHLinCon object, the reactions in this interpolation driver should
remain on, you have nothing else to carry these reactions as i see
the problem.

There is a problem here though, by having these reactions switched
on in the interpolation driver and having a motion introduced there
at the same time, it adds artificial energy to the system. In a
normal spherical joint with no linear motion there is no energy
added since there is no lin. motion, but this is not the case here,
i am afraid this will be a problem.

In principle you need to be able to define these reactions wrt to
something that do not move, otherwise you will introduce energy into
the system.

I have not fully understood what controls the lin motion of the gh
joint center in your case, so i need more info on this in order to
suggest a solution.

I have a loose idead on a possible setup, that may solve some of the
problem. I think it is important to keep the principle of the
GHreactions.any file, please see the previous posting on the concept
of this file if needed. Maybee you could “cut loose” the glenoid
cavity as a new segment and the create a prismatic joitn between
this new seg and scapula, that could slide in the desired direction.
The GHLinCon should then be changed so that it would measure wrt to
this new seg. This setup would ensure a good description of the
reactions in the GH joint. There is still one question left though
what should be the setting of this new dof of the prismatic joint?,
if possible i think it should be free, but it is not sure that the
muscles around the GH joint will be able to balance it for all load
cases.

Best regards
Søren, AnyBody Support

> order to make my glenohumeral articulation free. I’ve switched Off
the
> Reaction.type of my interpolation driver. Now I have a lack of
> constraints in my model (3 missing constraints). I can figure 2 of
> them, that are the X and Z constraints of the GH articulation. So,
I

— In anyscript@yahoogroups.com, “Pierre-Olivier Lemieux”
<pothekid@…> wrote:
>
> Hi again Soren,
> sorry for the mixed-up, it was very late yesterday.
So
> the MarkerData_Humerus is the interpolation function that allow the
> translation of the humerus from the initial position to 9 mm upward
> this position. I was not sure about the linear and rotational
measure
> between scapula and humerus. Actually I think that is wrong
because I
> can drive the humerus directly by absolute coordinates in the
> interpolation function. I was trying to do like the ‘MarkerData’
> script in the Gait3D model and like my ‘via points’. I’ve supposed
> that these drivers was necessery, in order to make the model
works, so
> maybe I’ve misunderstood something about that.
>
> So, I’ve commented ‘GHreactions.any’,‘GHLinCon’
and ‘GHDriverRight’ in
> order to make my glenohumeral articulation free. I’ve switched Off
the
> Reaction.type of my interpolation driver. Now I have a lack of
> constraints in my model (3 missing constraints). I can figure 2 of
> them, that are the X and Z constraints of the GH articulation. So,
I
> don’t really know how to add these X and Z constraints and how to
find
> the other constraint to add, in order to make my model works.
>
> Thank you for your quick support (even with the time shift between
> Aalborg and Montreal :wink: … )
>
> Have a nice day
>
> Pierre-Olivier
>
>
>
> — In anyscript@yahoogroups.com, “AnyBody Support” <support@>
wrote:
> >
> > Hi Pierre-Olivier
> >
> >
> > I have tried to debug you model but i think i miss the file used
by
> > this code:
> >
> >
> >
> > AnyString datafile = “F:\Program Files\AnyBody
Technology\AnyBody.2.0
> > ranslation.txt”;
> >
> > AnyFunInterpol MarkerData_humerus =
> > {
> > Type=Bspline;
> > BsplineOrder = 8;
> > FileName = .datafile;
> > };
> >
> >
> > This is in the “Seg.any” file.
> >
> >
> > I took a look at the Seg.any file, you have added a driver of
the
> > linear measure between scapula and humerus. So this adds three
> > constraints to the problem.
> >
> > So in order to have the model running you need to remove three
dof
> > from the model, otherwise it will be overconstrained.
> >
> > In the Jnt.any there is the following lines :
> >
> >
> > AnyKinEq GHLinCon = {
> > AnyKinMeasure &GHLinCon = .GHLin;
> > Reaction.Type={Off,Off,Off};
> > };
> >
> >
> > These adds also three lin constraints between the same two
segments
> > so they will be in conflict if they are both active at the same
> > time.
> >
> >
> > Please consider also how you would like to have the lineat
reactions
> > in the GH joint to carried? In the org. version of the Brep the
> > GHReacytion.any file takes care of ensuring that the reactions
in
> > the GhH joints falls within the cavity on scapula. In your code
by
> > having the reactions switched on, in the interpoaltion driver,
this
> > will not be the case. So i think you should swicth off the
reactions
> > in this interpolation driver.
> >
> > Looking forward to see you too in Aalborg :wink:
> >
> > Best regards
> > Søren, AnyBosy Support
> >
> >
> >
> >
> >
> >
> >
> > — In anyscript@yahoogroups.com, “Pierre-Olivier Lemieux”
> > <pothekid@> wrote:
> > >
> > > Hi Soren,
> > > i’ve worked on my model for a couple of days and now
I
> > face a
> > > new problem. I have to drive the glenohumeral joint in
translation,
> > > that is the core of my research effort. The fact is that I
study
> > the
> > > effect of the rotator cuff muscles tears and in this case, the
> > > stability of the glenohumeral joint is compromised. So I want
to
> > allow
> > > a translation of the joint in the Y direction with a point file
> > > (translation.txt). I’m not very good with the joints and
drivers,
> > but
> > > i’ve added the point file just before the humerus segment code
and
> > a
> > > linear driver just after this same code. You’ll find it in the
> > > ‘seg.any’ script. So, I have the same number of constraints
and
> > degree
> > > of freedom but it gives my this error :
> > >
> > > ERROR(OBJ.MCH.KIN2) : F:\Program Files\AnyBody
> > > Technology\AnyBody.2.0\Repository.6.0.1
> > \BRep\Aalborg\Arm3D\ArmCal0.any(105)
> > > : ‘ArmCalibrationStudy0’ : Model is kinematically
> > > over-constrained : Position analysis failed : 3 unsolvable
> > > constraint(s) found
> > >
> > > Maybe i’m doing the wrong way, i’m not sure of that. So if you
can
> > > have a look on it, it would be very appreciated. I will put
all the
> > > files in the ZIP file ‘shoulder_model_with_translation.zip’.
> > >
> > > So, thank you in advance
> > >
> > > Looking forward to meet you in Aalborg in 2 weeks
> > >
> > > bye bye
> > >
> > > Pierre-Olivier
> > >
> >
>

Hi Soren,
well, if I understand you, I’m facing a real big problem now.
But if you think that it could be resolved, so it gives me a lot of hope.

So, I would like to discuss with you about all this by e-mail before
my arrival in Aalborg, that will be on october 4. My departure sould
be on october 21. Here is my email address : pothekid@hotmail.com

I’ve also wrote a e-mail to M. Rasmussen to inform him of my passage
in Aalborg and I’m waiting for a confirmation.

So, until then, I will try to understand more my problem and I will
write you back next week.

thank you for the great support

See you later

Pierre-Olivier

— In anyscript@yahoogroups.com, “AnyBody Support” <support@…> wrote:
>
> Hi Pierre-Olivier
>
> I wil try to list the consequences of commeting the different items:
>
> ‘GHreactions.any’ This will have no effect on the motion but it will
> remove the linear reactions in the GH joint.
>
> ‘GHLinCon’ By not having this object you will remove three linear
> constraints in the GH joint, so it bascially removes the joint…
> The reactions in this object has already been switched off, so the
> reactions are not affected by removing the object.
>
> ‘GHDriverRight’ This driver drives the rotations between scapula and
> huemrus so removing this object leaves these rotations free.
>
> So as i have understood your problem you still need to have the
> GHDriverRight active to control the motion of the humerus.
> Furthermore you also need to have the new interpolation driver
> between scapula and humerus active this will basically replace the
> GHLinCon object, the reactions in this interpolation driver should
> remain on, you have nothing else to carry these reactions as i see
> the problem.
>
> There is a problem here though, by having these reactions switched
> on in the interpolation driver and having a motion introduced there
> at the same time, it adds artificial energy to the system. In a
> normal spherical joint with no linear motion there is no energy
> added since there is no lin. motion, but this is not the case here,
> i am afraid this will be a problem.
>
> In principle you need to be able to define these reactions wrt to
> something that do not move, otherwise you will introduce energy into
> the system.
>
> I have not fully understood what controls the lin motion of the gh
> joint center in your case, so i need more info on this in order to
> suggest a solution.
>
> I have a loose idead on a possible setup, that may solve some of the
> problem. I think it is important to keep the principle of the
> GHreactions.any file, please see the previous posting on the concept
> of this file if needed. Maybee you could “cut loose” the glenoid
> cavity as a new segment and the create a prismatic joitn between
> this new seg and scapula, that could slide in the desired direction.
> The GHLinCon should then be changed so that it would measure wrt to
> this new seg. This setup would ensure a good description of the
> reactions in the GH joint. There is still one question left though
> what should be the setting of this new dof of the prismatic joint?,
> if possible i think it should be free, but it is not sure that the
> muscles around the GH joint will be able to balance it for all load
> cases.
>
>
> Best regards
> Søren, AnyBody Support
>
>
>
>
>
>
> > order to make my glenohumeral articulation free. I’ve switched Off
> the
> > Reaction.type of my interpolation driver. Now I have a lack of
> > constraints in my model (3 missing constraints). I can figure 2 of
> > them, that are the X and Z constraints of the GH articulation. So,
> I
>
>
>
> — In anyscript@yahoogroups.com, “Pierre-Olivier Lemieux”
> <pothekid@> wrote:
> >
> > Hi again Soren,
> > sorry for the mixed-up, it was very late yesterday.
> So
> > the MarkerData_Humerus is the interpolation function that allow the
> > translation of the humerus from the initial position to 9 mm upward
> > this position. I was not sure about the linear and rotational
> measure
> > between scapula and humerus. Actually I think that is wrong
> because I
> > can drive the humerus directly by absolute coordinates in the
> > interpolation function. I was trying to do like the ‘MarkerData’
> > script in the Gait3D model and like my ‘via points’. I’ve supposed
> > that these drivers was necessery, in order to make the model
> works, so
> > maybe I’ve misunderstood something about that.
> >
> > So, I’ve commented ‘GHreactions.any’,‘GHLinCon’
> and ‘GHDriverRight’ in
> > order to make my glenohumeral articulation free. I’ve switched Off
> the
> > Reaction.type of my interpolation driver. Now I have a lack of
> > constraints in my model (3 missing constraints). I can figure 2 of
> > them, that are the X and Z constraints of the GH articulation. So,
> I
> > don’t really know how to add these X and Z constraints and how to
> find
> > the other constraint to add, in order to make my model works.
> >
> > Thank you for your quick support (even with the time shift between
> > Aalborg and Montreal :wink: … )
> >
> > Have a nice day
> >
> > Pierre-Olivier
> >
> >
> >
> > — In anyscript@yahoogroups.com, “AnyBody Support” <support@>
> wrote:
> > >
> > > Hi Pierre-Olivier
> > >
> > >
> > > I have tried to debug you model but i think i miss the file used
> by
> > > this code:
> > >
> > >
> > >
> > > AnyString datafile = “F:\Program Files\AnyBody
> Technology\AnyBody.2.0
> > > ranslation.txt”;
> > >
> > > AnyFunInterpol MarkerData_humerus =
> > > {
> > > Type=Bspline;
> > > BsplineOrder = 8;
> > > FileName = .datafile;
> > > };
> > >
> > >
> > > This is in the “Seg.any” file.
> > >
> > >
> > > I took a look at the Seg.any file, you have added a driver of
> the
> > > linear measure between scapula and humerus. So this adds three
> > > constraints to the problem.
> > >
> > > So in order to have the model running you need to remove three
> dof
> > > from the model, otherwise it will be overconstrained.
> > >
> > > In the Jnt.any there is the following lines :
> > >
> > >
> > > AnyKinEq GHLinCon = {
> > > AnyKinMeasure &GHLinCon = .GHLin;
> > > Reaction.Type={Off,Off,Off};
> > > };
> > >
> > >
> > > These adds also three lin constraints between the same two
> segments
> > > so they will be in conflict if they are both active at the same
> > > time.
> > >
> > >
> > > Please consider also how you would like to have the lineat
> reactions
> > > in the GH joint to carried? In the org. version of the Brep the
> > > GHReacytion.any file takes care of ensuring that the reactions
> in
> > > the GhH joints falls within the cavity on scapula. In your code
> by
> > > having the reactions switched on, in the interpoaltion driver,
> this
> > > will not be the case. So i think you should swicth off the
> reactions
> > > in this interpolation driver.
> > >
> > > Looking forward to see you too in Aalborg :wink:
> > >
> > > Best regards
> > > Søren, AnyBosy Support
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > > — In anyscript@yahoogroups.com, “Pierre-Olivier Lemieux”
> > > <pothekid@> wrote:
> > > >
> > > > Hi Soren,
> > > > i’ve worked on my model for a couple of days and now
> I
> > > face a
> > > > new problem. I have to drive the glenohumeral joint in
> translation,
> > > > that is the core of my research effort. The fact is that I
> study
> > > the
> > > > effect of the rotator cuff muscles tears and in this case, the
> > > > stability of the glenohumeral joint is compromised. So I want
> to
> > > allow
> > > > a translation of the joint in the Y direction with a point file
> > > > (translation.txt). I’m not very good with the joints and
> drivers,
> > > but
> > > > i’ve added the point file just before the humerus segment code
> and
> > > a
> > > > linear driver just after this same code. You’ll find it in the
> > > > ‘seg.any’ script. So, I have the same number of constraints
> and
> > > degree
> > > > of freedom but it gives my this error :
> > > >
> > > > ERROR(OBJ.MCH.KIN2) : F:\Program Files\AnyBody
> > > > Technology\AnyBody.2.0\Repository.6.0.1
> > > \BRep\Aalborg\Arm3D\ArmCal0.any(105)
> > > > : ‘ArmCalibrationStudy0’ : Model is kinematically
> > > > over-constrained : Position analysis failed : 3 unsolvable
> > > > constraint(s) found
> > > >
> > > > Maybe i’m doing the wrong way, i’m not sure of that. So if you
> can
> > > > have a look on it, it would be very appreciated. I will put
> all the
> > > > files in the ZIP file ‘shoulder_model_with_translation.zip’.
> > > >
> > > > So, thank you in advance
> > > >
> > > > Looking forward to meet you in Aalborg in 2 weeks
> > > >
> > > > bye bye
> > > >
> > > > Pierre-Olivier
> > > >
> > >
> >
>