Forces over time

Hello,

I’m new to this Group. My name is Geoff and I am working on a
dynamic implementation of the full body model using a set of
AnyKinEqInterPolDrivers.

It is my understanding that a method for inputting external forces
that change over a time period has been posted here previously. I
can’t find this post. If anyone can direct me or provide the info
it would be much appreciated.

Thanks,

Geoff

Hello Geoff,

Welcome to the group!

The post is #76 just before this one. You can find the model in the
files section. It is called gait2.zip.
The model demonstrates how measured ground reaction forces can be
imposed on a model, but the method applies to any type of force
application that is interpolated between values.

Best regards,
AnyBody Support

— In anyscript@yahoogroups.com, “somadynamics1”
<somadynamics1@y…> wrote:
>
>
> Hello,
>
> I’m new to this Group. My name is Geoff and I am working on a
> dynamic implementation of the full body model using a set of
> AnyKinEqInterPolDrivers.
>
> It is my understanding that a method for inputting external forces
> that change over a time period has been posted here previously. I
> can’t find this post. If anyone can direct me or provide the info
> it would be much appreciated.
>
> Thanks,
>
> Geoff

OK, thanks for the info. I’m pretty sure I have implemented this
correctly. However, when I add a force value and run an inverse
dynamic analysis I get an error of this sort:

Constraint no. 361 above error tolerance 0.000001, error =
53.141269. - constr. #1 in ‘Main.Dummies.RightHipForce’

ERROR : C:\Program Files\Ramsis-3-8-11
\runtime\anybody\SomaModel\SomaModel.Main.any(59) : Study :
Kinmatic constraint violation error was not accepted; muscle
recruitmemnt analysis was not performed.

An example of how I have implemented it follows:

AnyFolder Dummies = {
AnySeg RightHipForceSeg = {
Mass = 0;
Jii={0,0,0};
};

AnySphericalJoint RightHipForceJoint = {
AnyRefNode &dummy = .RightHipForceSeg;
AnyRefNode &ground = …EnvironmentModel.GlobalRef;
};

AnyKinEqInterPolDriver RightHipForce = {
AnyKinMeasureOrg &Force = .RightHipForceJoint;
Type = Bspline;
BsplineOrder = 4;
T = {0.000,1.000,2.000,3.000};
Data = {
{0.000,0.000,0.000,0.000}, //x
{300.000,250.000,200.000,150.000}, //y
{0.000,0.000,0.000,0.000} //z
};
};
};

The force itself is implemented as follows:

AnyFolder Right = {
AnyFolder &rhm = .hm.Right;
AnyForce3D Hip = {
AnyRefNode &ApplPoint = .rhm.Leg.Seg.Thigh.HipJoint;
F = {…Dummies.RightHipForceJoint.Pos[0],
…Dummies.RightHipForceJoint.Pos[1],
…Dummies.RightHipForceJoint.Pos[2]};
};
};

The only differences I can see with your example is that I am using
an AnySphericalJoint to incorporate x,y and z forces for each joint
into one driver and have given a mass of zero to my dummy segments.

Thanks,

Geoff

— In anyscript@yahoogroups.com, “AnyBody Support” <support@a…>
wrote:
>
> Hello Geoff,
>
> Welcome to the group!
>
> The post is #76 just before this one. You can find the model in
the
> files section. It is called gait2.zip.
> The model demonstrates how measured ground reaction forces can be
> imposed on a model, but the method applies to any type of force
> application that is interpolated between values.
>
> Best regards,
> AnyBody Support
>
> — In anyscript@yahoogroups.com, “somadynamics1”
> <somadynamics1@y…> wrote:
> >
> >
> > Hello,
> >
> > I’m new to this Group. My name is Geoff and I am working on a
> > dynamic implementation of the full body model using a set of
> > AnyKinEqInterPolDrivers.
> >
> > It is my understanding that a method for inputting external
forces
> > that change over a time period has been posted here previously.
I
> > can’t find this post. If anyone can direct me or provide the
info
> > it would be much appreciated.
> >
> > Thanks,
> >
> > Geoff

Hi Geoff

The problem is the use of the sphericaljoint. The error messages
shows that the kinematical analysis fails for the RightHipForce
driver which works on the spherical joint.

The spherical joint is not a good choice in this situation. In
principle, you can use any joint you like, because what you need is
simply any kinematic measure that you can use in your force. Whether
it measure in radians, meter or something else, because you in fact
treat it as being forces in Newton.

The reason why the spherical joint is a bad choice is that it
measures with angles, which implies that one orientation can
actually be described by multiple values, i.e., the angle ±2 n pi
with n as any non-zero integer. The Rotational measure inside the
spherical joint (i.e. the member called Orientation in
AnySphericalJoint) measures the orientation and it tries its best to
provide a single good value for a given orientation, however, there
is no guaranty that it do it if you drive it to odd values such 200-
something radians. In fact the spherical joint works not with simple
angles but spatial rotations and that complicates the matter even
further depending on the actual type of rotational coordinates used
in the particular measure.

Anyway, a linear kinematic measure is much more reliable for general
values like the ones you probably want to use for your forces. There
are never multiple solution for a linear measure.

Please let me finally point out that this fairly odd way of
producing varying forces is a work-around in the current version. It
allows you to exploit the capabilities available for defining
function in the various kinematic drivers. The coming version 2.0
will have much better functionality for taking in data in general
expressions such as the force definition; in fact it will contain
general mathematical functions that work similarly to the kinematic
drivers you know today.

Best regards
Michael and Søren
AnyBody Support

— In anyscript@yahoogroups.com, “somadynamics1”
<somadynamics1@y…> wrote:
>
>
> OK, thanks for the info. I’m pretty sure I have implemented this
> correctly. However, when I add a force value and run an inverse
> dynamic analysis I get an error of this sort:
>
> Constraint no. 361 above error tolerance 0.000001, error =
> 53.141269. - constr. #1 in ‘Main.Dummies.RightHipForce’
>
> ERROR : C:\Program Files\Ramsis-3-8-11
> \runtime\anybody\SomaModel\SomaModel.Main.any(59) : Study :
> Kinmatic constraint violation error was not accepted; muscle
> recruitmemnt analysis was not performed.
>
> An example of how I have implemented it follows:
>
> AnyFolder Dummies = {
> AnySeg RightHipForceSeg = {
> Mass = 0;
> Jii={0,0,0};
> };
>
> AnySphericalJoint RightHipForceJoint = {
> AnyRefNode &dummy = .RightHipForceSeg;
> AnyRefNode &ground = …EnvironmentModel.GlobalRef;
> };
>
> AnyKinEqInterPolDriver RightHipForce = {
> AnyKinMeasureOrg &Force = .RightHipForceJoint;
> Type = Bspline;
> BsplineOrder = 4;
> T = {0.000,1.000,2.000,3.000};
> Data = {
> {0.000,0.000,0.000,0.000}, //x
> {300.000,250.000,200.000,150.000}, //y
> {0.000,0.000,0.000,0.000} //z
> };
> };
> };
>
> The force itself is implemented as follows:
>
> AnyFolder Right = {
> AnyFolder &rhm = .hm.Right;
> AnyForce3D Hip = {
> AnyRefNode &ApplPoint = .rhm.Leg.Seg.Thigh.HipJoint;
> F = {…Dummies.RightHipForceJoint.Pos[0],
> …Dummies.RightHipForceJoint.Pos[1],
> …Dummies.RightHipForceJoint.Pos[2]};
> };
> };
>
>
> The only differences I can see with your example is that I am
using
> an AnySphericalJoint to incorporate x,y and z forces for each
joint
> into one driver and have given a mass of zero to my dummy segments.
>
> Thanks,
>
> Geoff
>
>
> — In anyscript@yahoogroups.com, “AnyBody Support” <support@a…>
> wrote:
> >
> > Hello Geoff,
> >
> > Welcome to the group!
> >
> > The post is #76 just before this one. You can find the model in
> the
> > files section. It is called gait2.zip.
> > The model demonstrates how measured ground reaction forces can
be
> > imposed on a model, but the method applies to any type of force
> > application that is interpolated between values.
> >
> > Best regards,
> > AnyBody Support
> >
> > — In anyscript@yahoogroups.com, “somadynamics1”
> > <somadynamics1@y…> wrote:
> > >
> > >
> > > Hello,
> > >
> > > I’m new to this Group. My name is Geoff and I am working on a
> > > dynamic implementation of the full body model using a set of
> > > AnyKinEqInterPolDrivers.
> > >
> > > It is my understanding that a method for inputting external
> forces
> > > that change over a time period has been posted here
previously.
> I
> > > can’t find this post. If anyone can direct me or provide the
> info
> > > it would be much appreciated.
> > >
> > > Thanks,
> > >
> > > Geoff