Hi Leng-Feng
We have investigated the matter a bit further and it seems you have
helped us discover a bug in the system, which will lead to
recruitment errors in rare cases. Thanks!
It seems there is a bug in the RotVector rotational measure which
can be triggered at 0,90,180,270 and 360 if at the same time there
is applied a moment to the measure like in this case, where it fails
at zero deg. In the environment.any file you use a revolute joint
for the hub and there is a moment applied to the hub. In the system
the revolute joint is made using a RotVector as the rotational
measure.
A temporary fix of your model is to replace the Revolute joint with
a joint made from an AnyKinLinear and an AnyKinRotational measure
which are using a RotAxesAngle measure as the type:
In your case, replace the following lines of your environment.any
file
// Join the wheels to the chair (ground, actually)
AnyRevoluteJoint Hub = {
AnyRefNode &Ground = .WheelRef.Hub;
AnySeg &Wheel = .Wheel;
Axis = y;
};
AnyKinRotational Rot={
AnyRefNode &Ground = .WheelRef.Hub;
AnySeg &Wheel = .Wheel;
Type=RotAxesAngles;
Axis1=y;
Axis2=z;
Axis3=x;
};
// Drive the wheels. This in turn determines the hand movement
AnyKinEqSimpleDriver WheelDr = {
AnyRevoluteJoint &Joint = .Hub;
DriverPos = {0};
DriverVel = {Main.WheelParameters.Omega*pi/180};
Reaction.Type = {0}; // Let applied moment through
};
// Moment affecting the wheels and caried by the muscles
AnyForce Moment = {
AnyRevoluteJoint &Joint = .Hub;
F = {Main.WheelParameters.M};
};
With these ones:
AnyKinEqSimpleDriver ReplicaRevolute={
AnyKinLinear Lin={
AnyRefNode &Ground = ..WheelRef.Hub;
AnySeg &Wheel = ..Wheel;
};
AnyKinRotational Rot={
AnyRefNode &Ground = ..WheelRef.Hub;
AnySeg &Wheel = ..Wheel;
Type=RotAxesAngles;
Axis1=y;
Axis2=z;
Axis3=x;
};
DriverPos={0,0,0,0,0,0};
DriverVel={0,0,0,Main.WheelParameters.Omega*pi/180,0,0};
Reaction.Type={1,1,1,0,1,1};
};
AnyKinMeasureOrg ReplicaRevoluteFree={
AnyKinEqSimpleDriver &ref=.ReplicaRevolute;
MeasureOrganizer={3};
};
AnyForce Moment = {
AnyKinMeasureOrg &Hub = .ReplicaRevoluteFree;
F = {Main.WheelParameters.M};
};
The model should behave in the exact same way, but will be much more
stable at the specified angles mentioned above, i hope.
We are sorry for the inconvenience this have caused you and would
like to thank you again for your help in solving this issue.
Our R&D department are working on resolving the matter 100% and on
removing the bug from the system permanently. Hopefully this will be
done soon, and hopefully this temporary fix will solve your current
problems.
Best regards
Søren, AnyBody Support
— In anyscript@yahoogroups.com, “Leng-Feng Lee” <lengfenglee@…>
wrote:
>
> Hello Søren,
>
> The simulation now failed at x=0.19 & angle=6 deg. How to resolve
this?
>
>
>
> Thanks,
> Leng-Feng
>
>
> — In anyscript@yahoogroups.com, “Leng-Feng Lee” <lengfenglee@>
wrote:
> >
> > Hello Søren,
> >
> > you actually explained here…my bad.
> >
> > > > My theory is the following: the model is supported at the
thorax
> > > > which is connected rigidly to the ground. This means that
the
> > > > muscles in the spine do not have to carry almost any load.
This
> > > > should not be a problem, but if you have large muscles
groups in
> > > > this case the spine with very low activation it can make the
> problem
> > > > difficult to solve numerically, because it makes the problem
ill-
> > > > conditioned.
> >
> > The changes you made to the model… I wonder, will this causes
the
> > inacuracy in the modeling of the human repository? I guess the
answer
> > is probably not, but why not?
> >
> > Thanks for your time.
> >
> > Thanks,
> > Leng-Feng
> >
> >
> >
> >
> > — In anyscript@yahoogroups.com, “Leng-Feng Lee” <lengfenglee@>
wrote:
> > >
> > > Hello Søren,
> > >
> > > You are right, the x position is the hub’s x position.
> > >
> > > Thanks, currently I am trying the modified code for all other
points,
> > > and will let you know how it work out.
> > >
> > > The thing I don’t quite understand is that, for example, if we
have
> > > place the wheel in a space infront of the human (let say, a
square in
> > > the x-z plane, and in this square, the wheel is within
the ‘reachable’
> > > region of the hand), isn’t that the simulation ‘should’ works
in ALL
> > > points in that region?
> > >
> > > The strange thing is it work on the ‘side’(limits) of the
square but
> > > some points inside that region the simulation failed…
speaking in
> > > another way: the simulation works when x=0.1 and x=0.3, thus it
> > > ‘should’ works in all other points between 0.1 and 0.3.
> > >
> > > This is the part that I still don’t get it why. It act if
there are
> > > some ‘singularity point’.
> > >
> > > Can you point out to me where I missed? Also, do you have the
> > > documentation on the WheelTurn example (for repository 5)–or
any
> > > report (I see in the presentation file that this model is used
for
> > > shoulder verification)?
> > >
> > > Thanks for your (and other people in this support group) timely
> > response.
> > >
> > > Thanks,
> > > Leng-Feng
> > >
> > >
> > >
> > > — In anyscript@yahoogroups.com, “AnyBody Support” <support@>
wrote:
> > > >
> > > > Hi Leng-Feng
> > > >
> > > > I have tried your model and have some suggestions.
> > > >
> > > > When i first loaded the model
WheelTurn_Lee\WheelTurn_Main.any
> > > >
> > > > The wheel hub where set to this location
> > > >
> > > > AnyVec3 Hub = {2.2, -0.05, 0.30};
> > > >
> > > > since the Throax is attached at {0,0,0} it will not assemble
> > > > kinemtatically there is no way it will be able to reach.
> > > >
> > > > You write about the parameters
> > > > x=0.21, deg =0;
> > > > x=0.21, deg =5;
> > > > x=0.22, deg =3;
> > > > x=0.20, deg =3;
> > > >
> > > > I am in doubt what is the x value so i assume it is the x
component
> > > > of the Wheelhub.sRel. I tried to run the inverse analysis
and you
> > > > are right if fails to balance the system, for x=0.21 and
tilt =3
> deg.
> > > >
> > > > My theory is the following: the model is supported at the
thorax
> > > > which is connected rigidly to the ground. This means that
the
> > > > muscles in the spine do not have to carry almost any load.
This
> > > > should not be a problem, but if you have large muscles
groups in
> > > > this case the spine with very low activation it can make the
> problem
> > > > difficult to solve numerically, because it makes the problem
ill-
> > > > conditioned.
> > > >
> > > > To avoid this i have made some changes in the
JointAndDrivers.any
> > > > file. These changes removes the support of the thorax and
adds them
> > > > to the pelvis instead. These changes resolves the problems
for
> > > > x=0.21 and tilt =3 deg, i have not tested it for other
> > > > configurations.
> > > >
> > > > I have uploaded the file WheelTurn_Lee_JointAndDrivers.any
> > > >
> > > > I hope this solves the problems, otherwise please write
again.
> > > >
> > > > Best regards
> > > > Søren, AnyBody Support
> > > >
> > > >
> > > >
> > > > — In anyscript@yahoogroups.com, “Leng-Feng Lee”
<lengfenglee@>
> > > > wrote:
> > > > >
> > > > > Hello Dr John,
> > > > >
> > > > > Thanks. I uploaded my file in the file section–called
> > > > > "WheelTurn_Lee.rar ".
> > > > >
> > > > > The location where I change the x position and the tile
angle, I
> > > > made
> > > > > a comment. The file where these two parameters located are:
> > > > >
> > > > > x position - in WheelTurn.Main.any
> > > > > tile angle - in Environment.any
> > > > >
> > > > > Thanks for your time and assistance.
> > > > >
> > > > > Thanks,
> > > > > Leng-Feng
> > > > >
> > > > > — In anyscript@yahoogroups.com, “AnyBody Support”
<support@>
> > > > wrote:
> > > > > >
> > > > > > Hi Leng-Feng,
> > > > > >
> > > > > > It sounds like your method should be ok. What I was
concerned
> > > > about
> > > > > > was whether you had implemented a joint with
insufficient
> > > > support.
> > > > > >
> > > > > > In general an AnyBody model needs connections to the
> > > > surrroundings
> > > > > > that can provide enough reaction forces to balance the
overall
> > > > > > model. Also the internal parts of the model must be
balanced,
> > > > which
> > > > > > normally is done by the muscles. If any support anywhere
in the
> > > > > > model is insufficient, then the equilibrium equations
will be
> > > > > > singular, and the problem has not solution.
> > > > > >
> > > > > > You are welcome to zip your model and upload it to the
group.
> > > > The we
> > > > > > shall take a look at it.
> > > > > >
> > > > > > Best regards,
> > > > > > John
> > > > > >
> > > > > > — In anyscript@yahoogroups.com, “Leng-Feng Lee”
> <lengfenglee@>
> > > > > > wrote:
> > > > > > >
> > > > > > > Hello Dr John,
> > > > > > >
> > > > > > > The implementation of the axis is done by defining a
> > > > AnyFixedFrame
> > > > > > and
> > > > > > > rotate it by a propriate angle (as shown in the
> > > > > > > “RevoluteJointDefinition.any” file in the file
section).
> > > > > > >
> > > > > > > This is very strange that there are some “dead Point”–
like
> > > > > > > singularity points in which only at that point the
simulation
> > > > > > gives an
> > > > > > > error but the point surronding it is fine (as
described).
> > > > > > >
> > > > > > > By the way, can you explain more about the Boundary
> Constraint
> > > > > > idea a
> > > > > > > little more detail? Why is it happen and why it causes
the
> > > > problem.
> > > > > > >
> > > > > > > Thanks,
> > > > > > > Leng-Feng
> > > > > > >
> > > > > > >
> > > > > > > — In anyscript@yahoogroups.com, “AnyBody Support”
> <support@>
> > > > > > wrote:
> > > > > > > >
> > > > > > > > Hello Leng-Feng,
> > > > > > > >
> > > > > > > > The message you are geting usually means that the
model has
> > > > > > > > insufficient boundary conditions. I am wondering
whether
> > > > this
> > > > > > could
> > > > > > > > be connected to the variation of the angle about the
z
> axis.
> > > > > > Could
> > > > > > > > you describe how this angle variation implemented?
> > > > > > > >
> > > > > > > > Thanks,
> > > > > > > > John
> > > > > > > >
> > > > > > > > — In anyscript@yahoogroups.com, “Leng-Feng Lee”
> > > > <lengfenglee@>
> > > > > > > > wrote:
> > > > > > > > >
> > > > > > > > > Hello,
> > > > > > > > >
> > > > > > > > > I have a Question:
> > > > > > > > >
> > > > > > > > > For the WheelTurn example from the repository 5, I
> perform
> > > > a
> > > > > > > > > parametric sweep for x location and wheel angle (I
> > > > created,
> > > > > > this
> > > > > > > > angle
> > > > > > > > > rotate about the z-axis).
> > > > > > > > >
> > > > > > > > > I do a parametric sweep of x position from 0.15 to
025
> > > > (with
> > > > > > > > increment
> > > > > > > > > of 0.01), and a wheel angle sweep of 0-60 deg
(with
> > > > increment
> > > > > > of 3
> > > > > > > > > deg, the wheel angle is measured from the positive
global
> > > > y-
> > > > > > axis).
> > > > > > > > > While performing this sweep, I realized that at
certain
> > > > > > points, the
> > > > > > > > > AnyBody gives me error saying that constraint is
not
> > > > satisfied-
> > > > > > -
> > > > > > > > This
> > > > > > > > > is okay, but the strange thing is that all
neighbouring
> > > > points
> > > > > > are
> > > > > > > > > fine. For example:
> > > > > > > > >
> > > > > > > > > at x=0.21, deg = 3 --simulation fail.
> > > > > > > > > But at:
> > > > > > > > > x=0.21, deg =0;
> > > > > > > > > x=0.21, deg =5;
> > > > > > > > > x=0.22, deg =3;
> > > > > > > > > x=0.20, deg =3;
> > > > > > > > > [all are suurounding points of x=0.21, deg=3]
> > > > > > > > >
> > > > > > > > > at all these points, the simulation works fine…I
> cannot
> > > > > > figure
> > > > > > > > out
> > > > > > > > > what is the problem. And it happens at some other
points
> > > > too.
> > > > > > > > >
> > > > > > > > > It seem for me that the simulation does not act
like
> > > > > > a “continuous
> > > > > > > > > functions”–it failed at some point although
points at
> > > > > > surrounding
> > > > > > > > > works fine.
> > > > > > > > >
> > > > > > > > > Can anyone explain this?
> > > > > > > > >
> > > > > > > > > Thanks,
> > > > > > > > > Leng-Feng
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>