[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: "ChrGarnier" <chrgarnier@wanadoo.fr>
- Date: Mon, 11 Feb 2002 22:52:09 +0100
Hello,
Back to the SDK, reading your code, it appears to me:
1, After modifying the joint parameters, FitToJoint has to be called, then a
behavior such as IKPosition BB
has to be used.
2, The Y rotation uses X limit, the Z rotation use Y limit but I am not able
to limit rotation around X.
3,Using these settings I managed to limit and activate both Y and Z
rotations. How about setting the bodyparts
with a ref using Y and Z axis as main one?
4, I have to come back to what I previously wrote: the limit values have to
obey to min<max even if angle are
both negatives.
5, FitToJoint behaves "strangely" for a child bodypart and needs a
SetPosition after being used!
6, I do agree this feature requires explanations (and debugging).
Best regards,
Christian Garnier.
----- Original Message -----
From: "David Callele" <callele@cs.usask.ca>
To: "Rudi Lauster" <Rudi.Lauster@raysono.com>;
<virtools-user-group@lists.theswapmeet.com>
Sent: Monday, February 11, 2002 6:06 PM
Subject: Re: [Virtools] CKIkJoint fails
> 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
> ...............................................................
...............................................................
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
...............................................................
References: