IKfast solution

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

IKfast solution

Goutham Mallapragada
Hi Rosen,

I generated IK for my robot using IKFast with default precision and accuracy parameters.
The IK works most of the time but some times the orientation of the end effector seems off.

An example is as follows:
1) Target position:
       Trans: [.720247, .050806, 1.10182]
       Quat: [0.0 , 0.707, 0.0, 0.707]

2) After getting the joints using manip.FindIKSolution(Target,True) and setting the joints, manip.GetEndEffectorTransform() returns
      Trans: [.720247, .050806, 1.10182]
      Quat: [ 0.04916447,  0.70539553,  0.04916447,  0.70539553]

There are other examples I have seen where the rotation is off a lot more than in the current example.

In one instance I was using the MoveHandStraight function of BaseManipulation and although the tool position maintained a
straight line motion, the orientation of the tool joint did not remain constant through out the move. I was wondering if the issue
with IK is what caused this effect. Any idea why the IK is returning different orientation than what was requested? The odd thing is
when I get a list of all solutions using FindIKSolutions() I do see some solutions that have the required orientation. There are also solutions
that are differing in orientation quite a bit from the target orientation eventhough the IKParameterization if of type Transform6D.

Goutham

------------------------------------------------------------------------------


_______________________________________________
Openrave-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/openrave-users
Reply | Threaded
Open this post in threaded view
|

Re: IKfast solution

Rosen Diankov
Administrator
hi goutham,

you were right, there was two bugs with ikfast. i just fixed them and
updated all the ik solvers (r1442).

for users using ikfast solutions i recommend updating openrave.
for those using the inversekinematics.py file to load iksolvers,
openrave will automatically rebuild the solutions.

For future reference, passing in '--numiktests=10' to
inversekinematics.py will allow people to validate the generated
solvers (in case there are still bugs). If people are really paranoid,
they can try to increase 10 to 1000. Note that sometimes this will
fail with a 'no ik solution found', this usually occurs due to testing
near joint limits or because of the discretization of the free
parameter, so it is OK.

rosen,

2010/5/10 Goutham Mallapragada <[hidden email]>:

> Hi Rosen,
>
> I generated IK for my robot using IKFast with default precision and accuracy
> parameters.
> The IK works most of the time but some times the orientation of the end
> effector seems off.
>
> An example is as follows:
> 1) Target position:
>        Trans: [.720247, .050806, 1.10182]
>        Quat: [0.0 , 0.707, 0.0, 0.707]
>
> 2) After getting the joints using manip.FindIKSolution(Target,True) and
> setting the joints, manip.GetEndEffectorTransform() returns
>       Trans: [.720247, .050806, 1.10182]
>       Quat: [ 0.04916447,  0.70539553,  0.04916447,  0.70539553]
>
> There are other examples I have seen where the rotation is off a lot more
> than in the current example.
>
> In one instance I was using the MoveHandStraight function of
> BaseManipulation and although the tool position maintained a
> straight line motion, the orientation of the tool joint did not remain
> constant through out the move. I was wondering if the issue
> with IK is what caused this effect. Any idea why the IK is returning
> different orientation than what was requested? The odd thing is
> when I get a list of all solutions using FindIKSolutions() I do see some
> solutions that have the required orientation. There are also solutions
> that are differing in orientation quite a bit from the target orientation
> eventhough the IKParameterization if of type Transform6D.
>
> Goutham
>
> ------------------------------------------------------------------------------
>
>
> _______________________________________________
> Openrave-users mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/openrave-users
>
>

------------------------------------------------------------------------------

_______________________________________________
Openrave-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/openrave-users
Reply | Threaded
Open this post in threaded view
|

regarding the contact point

Jong Eun Kim
In reply to this post by Goutham Mallapragada


Hello,
I need the contact point for self collision, because I designed my robot
hand that one finger can overlap the other finger. I make the one finger
moves faster than the other and this is why I need it. However, If I
cannot find the contact point for the self collision, it is ok with it.

The biggest problem right now is to find the contact point. I plot the
contact data and it does not give the correct location of the contact
point but only gives points that is close to the original point for my
robot. I plot the contact point and since it is close to the origin of the
robot, it marked the origin of the robot.  I could not figure out why it
does not give the correct contact point.  In addition, the normal vector
is somehow not correct too. It checks the collision but I do not know why
it could not find the correct contact point and the normal vector. What
does N mean for the 7 by N matrix for contact point. does N mean that the
number of the contact point? because it is supposed to have only one
contact point . I will attach the code and my robot xml files and wrl
files.
Please help me to find the contact point and normal vector.

Thanks !!~

------------------------------------------------------------------------------


_______________________________________________
Openrave-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/openrave-users

hand.zip (40K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: regarding the contact point

Rosen Diankov
Administrator
hi jong eun,

please send a screenshot of your contact point problem. usually if
your finger penetrates the target object far enough, several contact
points will appear around the collision boundary.

also, i see you are using the pqp collision checker, this could be one
reason why you are not getting your desired contact points, try
switching to the ode checker.

rosen,

2010/5/11 Jong Eun Kim <[hidden email]>:

>
>
> Hello,
> I need the contact point for self collision, because I designed my robot
> hand that one finger can overlap the other finger. I make the one finger
> moves faster than the other and this is why I need it. However, If I
> cannot find the contact point for the self collision, it is ok with it.
>
> The biggest problem right now is to find the contact point. I plot the
> contact data and it does not give the correct location of the contact
> point but only gives points that is close to the original point for my
> robot. I plot the contact point and since it is close to the origin of the
> robot, it marked the origin of the robot.  I could not figure out why it
> does not give the correct contact point.  In addition, the normal vector
> is somehow not correct too. It checks the collision but I do not know why
> it could not find the correct contact point and the normal vector. What
> does N mean for the 7 by N matrix for contact point. does N mean that the
> number of the contact point? because it is supposed to have only one
> contact point . I will attach the code and my robot xml files and wrl
> files.
> Please help me to find the contact point and normal vector.
>
> Thanks !!~
>

------------------------------------------------------------------------------

_______________________________________________
Openrave-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/openrave-users
Reply | Threaded
Open this post in threaded view
|

Re: regarding the contact point

Rosen Diankov
Administrator
hi jong eun,

i think your problem is that your bodies are too small

box=orBodyGetAABB(2)
ans =

 0.0000e+00   3.5000e-05
 3.2500e-05   2.2500e-05
 2.0000e-05   2.0000e-05

it looks like the size of your box is 0.00002, this reaches some of
the precision limits in serialization, that's why it looks like the
contact point is in the wrong place

i suggest you scale your geometry so that you work in the meter scale.

(i'll see what i can do about the self-collision contact points)

and i recommend using ode if you want better contact normals.
rosen,

2010/5/11 Jong Eun Kim <[hidden email]>:

>
>
>
>
> Hello,
> After I use ode collision checker, one finger checks the collision but the
> finger moving faster could not check the collision correctly.  When I use
> pqp collision checker, both fingers check the collision correctly.  I
> attach the two screenshots, one for pqp(pqp.png) and one for ode(ode.png)
>
> In both pictures, the red square dot represents the location of the
> contact point for link 2  by using the following function,
> orEnvPlot(contactV4(1:3,:)','color',[1 0 0],'size',15);
>
>
>  It should appear around the collision boundary but this contact point is
> around the origin of the robot and I do not know why it happens.
>
> thanks,
>
> On Tue, May 11, 2010 6:14 am, Rosen Diankov wrote:
>> hi jong eun,
>>
>> please send a screenshot of your contact point problem. usually if your
>> finger penetrates the target object far enough, several contact points
>> will appear around the collision boundary.
>>
>> also, i see you are using the pqp collision checker, this could be one
>> reason why you are not getting your desired contact points, try switching
>> to the ode checker.
>>
>> rosen,
>>
>> 2010/5/11 Jong Eun Kim <[hidden email]>:
>>
>>>
>>>
>>> Hello,
>>> I need the contact point for self collision, because I designed my robot
>>>  hand that one finger can overlap the other finger. I make the one
>>> finger moves faster than the other and this is why I need it. However,
>>> If I
>>> cannot find the contact point for the self collision, it is ok with it.
>>>
>>> The biggest problem right now is to find the contact point. I plot the
>>> contact data and it does not give the correct location of the contact
>>> point but only gives points that is close to the original point for my
>>> robot. I plot the contact point and since it is close to the origin of
>>> the robot, it marked the origin of the robot.  I could not figure out
>>> why it does not give the correct contact point.  In addition, the normal
>>> vector is somehow not correct too. It checks the collision but I do not
>>> know why it could not find the correct contact point and the normal
>>> vector. What does N mean for the 7 by N matrix for contact point. does N
>>> mean that the number of the contact point? because it is supposed to
>>> have only one contact point . I will attach the code and my robot xml
>>> files and wrl files. Please help me to find the contact point and normal
>>> vector.
>>>
>>> Thanks !!~
>>>
>>>
>>
>>
>

------------------------------------------------------------------------------

_______________________________________________
Openrave-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/openrave-users