[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
[Monthly Archives]
[List Home]
Re: [Virtools] CKIkJoint fails
- Subject: Re: [Virtools] CKIkJoint fails
- From: "David Callele" <callele@cs.usask.ca>
- Date: Mon, 11 Feb 2002 11:06:35 -0600
I haven't played with this part of the SDK so I can't help you with your
coding issues. However, I may be able to help with the general problem...
The problem that you are attempting to solve is well known within the field
of robotics, particularly the area of component placement using articulated
actuators (arms). I haven't kept up with the research in that area but at
the time when I was actively doing this stuff, IK just could not work for
all cases. That is because there are a (near) infinite number of paths from
the desired goal position back to the start position. So, to reach a goal
position, changing the order in which orientations are changed (X, Y, Z for
each each joint on a span (segment)) and the order in which spans are
processed (from the end effector back to the root or vice versa) changes how
the whole system works (this is also known as the 6 degree of freedom
problem). Instead, what we used to do was (what we called) forward
kinematics so that we were able to ensure that no constraints were exceeded.
That said, perhaps you can try the following (semi-hack) to simulate forward
kinematics instead.
Assume that the model is Body (ShoulderJoint) UpperArm (ElbowJoint) LowerArm
(WristJoint) Hand where the Body represents the root of the IK chain.
Identify goal position
For each segment from the root of the IK chain to the end of the IK chain
Ask IK solver to orient current segment of the IK chain
So, orient the UpperArm to face in the right direction, then the LowerArm
then the Hand.
Not pretty, but it may get you where you need to go. You should even be able
to simulate it in Dev without custom BBs.
Hope this helps,
David Callele
----- Original Message -----
From: "Rudi Lauster" <Rudi.Lauster@raysono.com>
To: <virtools-user-group@lists.theswapmeet.com>
Sent: Monday, February 11, 2002 9:50 AM
Subject: [Virtools] CKIkJoint fails
> Hello everybody,
>
> I used the CKIkJoint structure but it behaved strange. This is my code:
>
> CKIkJoint upperArmConstraint;
> CKIkJoint foreArmConstraint;
>
> upperArm->SetFlags(upperArm->GetFlags()|CK_3DENTITY_IKJOINTVALID);
>
> upperArm->GetRotationJoint( &upperArmConstraint );
> upperArmConstraint.m_Flags = CK_IKJOINT_ACTIVE_Z|CK_IKJOINT_LIMIT_Y;
> upperArmConstraint.m_Min.x = (float)0;
> upperArmConstraint.m_Min.y = (float)0;
> upperArmConstraint.m_Min.z = (float)-10*PI/180.0;
> upperArmConstraint.m_Max.x = (float)0;
> upperArmConstraint.m_Max.y = (float)0;
> upperArmConstraint.m_Max.z = (float)10*PI/180.0;
> upperArm->SetRotationJoint( &upperArmConstraint );
>
> ...
> while( ... )
> ...
> upperArm->FitToJoint;
> ...
>
> The funny thing in that piece of code is that I want to restrain the angle
> span of the rotation around the z axis but I have to set the flag
> CK_IKJOINT_LIMIT_Y.
>
> When I added another degree of freedom - for example the x axis - the
angle
> restriction completely failed.
> What did I do wrong ? The virtools sdk-documentation lacks of a detailed
> description for CKIkJoint and CKIkBodyPart.
>
> Can anybody help me ? I am completly despaired because I NEED that
> functionality.
>
> Thanks a lot and regards,
> Rudi Lauster
>
>
>
> >Hello,
> >Using the CKIkJoint structure and the relevant flags you can set up
limits
> >to
> >the rotation of a body-part joint.
> >Beware the min has to be negative and max to be positive and both are set
> >for
> >the whole joint.
> >Alternatively, look at:
> >http://www.theswapmeet.com/ubb/Forum5/HTML/000158.html
> >
> >Best regards,
> >
> >Christian Garnier.
> >
> >----- Original Message -----
> >From: "Urs Stutz" <outside@raysono.com>
> >To: <virtools-user-group@lists.theswapmeet.com>
> >Sent: Thursday, February 07, 2002 11:38 AM
> >Subject: [Virtools] angle constraints in virtools
> >
> >
> > > Hi Everybode,
> > >
> > > I'm currently working on a virtools project where we control the arms
of
> a
> > > character by the IK position BB. We get the position data of the
ankles
> > > from a data glove.
> > >
> > > The problem is, for some movements, the arms deform in an unnatural
way,
> > > e.g. the elbows bend in the wrong direction, the arms intersect the
> >body...
> > >
> > > Is it possible in virtools to restrain the angles of the bones to
> certain
> > > values?
> > >
> > > thanks
> > >
> > > Urs Stutz
> > > Ray Sono AG
> > >
> > > ...............................................................
> > > Distributed via the virtools-user-group list:
> >http://www.theswapmeet.com/numl.html
> > > To reply to the list instead of its author, use "Reply to All"
> > > To unsubscribe: send "unsubscribe virtools-user-group" to
> >Majordomo@lists.theswapmeet.com
> > > To subscribe: send "subscribe virtools-user-group" to
> >Majordomo@lists.theswapmeet.com
> > > To post a message: send it to
virtools-user-group@lists.theswapmeet.com
> > > ...............................................................
>
> ...............................................................
> Distributed via the virtools-user-group list:
http://www.theswapmeet.com/numl.html
> To reply to the list instead of its author, use "Reply to All"
> To unsubscribe: send "unsubscribe virtools-user-group" to
Majordomo@lists.theswapmeet.com
> To subscribe: send "subscribe virtools-user-group" to
Majordomo@lists.theswapmeet.com
> To post a message: send it to virtools-user-group@lists.theswapmeet.com
> ...............................................................
>
...............................................................
Distributed via the virtools-user-group list: http://www.theswapmeet.com/numl.html
To reply to the list instead of its author, use "Reply to All"
To unsubscribe: send "unsubscribe virtools-user-group" to Majordomo@lists.theswapmeet.com
To subscribe: send "subscribe virtools-user-group" to Majordomo@lists.theswapmeet.com
To post a message: send it to virtools-user-group@lists.theswapmeet.com
...............................................................
Follow-Ups:
References: