FindIKSolution problem

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

FindIKSolution problem

Mehmet Remzi Dogar
Hi,
In the documentation it says that the FindIKSolution call should
return the closest solution to the current joint angles of the robot.
But I am experiencing problems with that. Attached is an example
python script, where the solution found is far away. Note that if I do
FindIKSolutions to get all the solutions, I am able to find a
configuration that is actually very close to the current
configuration.

Thanks,
-mehmet

------------------------------------------------------------------------------
This SF.net Dev2Dev email is sponsored by:

Show off your parallel programming skills.
Enter the Intel(R) Threading Challenge 2010.
http://p.sf.net/sfu/intel-thread-sfd
_______________________________________________
Openrave-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/openrave-users

validateIkSolver.py (1K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: FindIKSolution problem

Rosen Diankov
Administrator
hi mehmet,

This is an excellent question. As you know, the default iksolver has
free parameters for arms with more than 6 joints. It discretizes these
free parameters and tests them in the order of proximity to the
current free parameters set. So if the current free parameter is 0,
openrave will test:

0, 0.1, -0.1, 0.2, -0.2, 0.3, -0.3 ...

if the discretization is 0.1

In your example, the default robot values are:

[-0.8726, 0.657, -2.64, -0.5726, -2.763, 0.523, -2.801];

and the returned ik fast solution is:

[ 2.37, -0.5 , -2.64 ,  1.033 , -2.615, -0.234,  0.580]

Because the free parameter for the barrett wam is the 3rd joint, the
closest 3rd joint value is found such that a solution exists. And if
you will notice, the 3rd joint of both solutions match.

This however is not the closest solution in terms of the entire arm
joints. In order for you to compute that, you will have to call
FindAllIkSolutions and test each one, which could take a long time.

If you want to prioritize the first joint, then you can create a new
ik solver with the free parameter being the first joint.

rosen,

2010/9/9 mehmet dogar <[hidden email]>:

> Hi,
> In the documentation it says that the FindIKSolution call should
> return the closest solution to the current joint angles of the robot.
> But I am experiencing problems with that. Attached is an example
> python script, where the solution found is far away. Note that if I do
> FindIKSolutions to get all the solutions, I am able to find a
> configuration that is actually very close to the current
> configuration.
>
> Thanks,
> -mehmet
>
> ------------------------------------------------------------------------------
> This SF.net Dev2Dev email is sponsored by:
>
> Show off your parallel programming skills.
> Enter the Intel(R) Threading Challenge 2010.
> http://p.sf.net/sfu/intel-thread-sfd
> _______________________________________________
> Openrave-users mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/openrave-users
>
>

------------------------------------------------------------------------------
Automate Storage Tiering Simply
Optimize IT performance and efficiency through flexible, powerful,
automated storage tiering capabilities. View this brief to learn how
you can reduce costs and improve performance.
http://p.sf.net/sfu/dell-sfdev2dev
_______________________________________________
Openrave-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/openrave-users
Reply | Threaded
Open this post in threaded view
|

Re: FindIKSolution problem

Rosen Diankov
Administrator
hi mehmet,

There was in fact a couple of places where prioritizations of the
solutions could have been computed better. After working on them a
little, your example now works (r1728). I don't think it should affect
speed that much, but please tell me if you notice anything.

thanks!
rosen,

2010/9/11 Rosen Diankov <[hidden email]>:

> hi mehmet,
>
> This is an excellent question. As you know, the default iksolver has
> free parameters for arms with more than 6 joints. It discretizes these
> free parameters and tests them in the order of proximity to the
> current free parameters set. So if the current free parameter is 0,
> openrave will test:
>
> 0, 0.1, -0.1, 0.2, -0.2, 0.3, -0.3 ...
>
> if the discretization is 0.1
>
> In your example, the default robot values are:
>
> [-0.8726, 0.657, -2.64, -0.5726, -2.763, 0.523, -2.801];
>
> and the returned ik fast solution is:
>
> [ 2.37, -0.5 , -2.64 ,  1.033 , -2.615, -0.234,  0.580]
>
> Because the free parameter for the barrett wam is the 3rd joint, the
> closest 3rd joint value is found such that a solution exists. And if
> you will notice, the 3rd joint of both solutions match.
>
> This however is not the closest solution in terms of the entire arm
> joints. In order for you to compute that, you will have to call
> FindAllIkSolutions and test each one, which could take a long time.
>
> If you want to prioritize the first joint, then you can create a new
> ik solver with the free parameter being the first joint.
>
> rosen,
>
> 2010/9/9 mehmet dogar <[hidden email]>:
>> Hi,
>> In the documentation it says that the FindIKSolution call should
>> return the closest solution to the current joint angles of the robot.
>> But I am experiencing problems with that. Attached is an example
>> python script, where the solution found is far away. Note that if I do
>> FindIKSolutions to get all the solutions, I am able to find a
>> configuration that is actually very close to the current
>> configuration.
>>
>> Thanks,
>> -mehmet
>>
>> ------------------------------------------------------------------------------
>> This SF.net Dev2Dev email is sponsored by:
>>
>> Show off your parallel programming skills.
>> Enter the Intel(R) Threading Challenge 2010.
>> http://p.sf.net/sfu/intel-thread-sfd
>> _______________________________________________
>> Openrave-users mailing list
>> [hidden email]
>> https://lists.sourceforge.net/lists/listinfo/openrave-users
>>
>>
>

------------------------------------------------------------------------------
Start uncovering the many advantages of virtual appliances
and start using them to simplify application deployment and
accelerate your shift to cloud computing
http://p.sf.net/sfu/novell-sfdev2dev
_______________________________________________
Openrave-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/openrave-users
Reply | Threaded
Open this post in threaded view
|

Re: FindIKSolution problem

Mehmet Remzi Dogar
Thanks! I will give it a try and let you know.
-mehmet

On Sat, Sep 11, 2010 at 11:48 AM, Rosen Diankov <[hidden email]> wrote:

> hi mehmet,
>
> There was in fact a couple of places where prioritizations of the
> solutions could have been computed better. After working on them a
> little, your example now works (r1728). I don't think it should affect
> speed that much, but please tell me if you notice anything.
>
> thanks!
> rosen,
>
> 2010/9/11 Rosen Diankov <[hidden email]>:
>> hi mehmet,
>>
>> This is an excellent question. As you know, the default iksolver has
>> free parameters for arms with more than 6 joints. It discretizes these
>> free parameters and tests them in the order of proximity to the
>> current free parameters set. So if the current free parameter is 0,
>> openrave will test:
>>
>> 0, 0.1, -0.1, 0.2, -0.2, 0.3, -0.3 ...
>>
>> if the discretization is 0.1
>>
>> In your example, the default robot values are:
>>
>> [-0.8726, 0.657, -2.64, -0.5726, -2.763, 0.523, -2.801];
>>
>> and the returned ik fast solution is:
>>
>> [ 2.37, -0.5 , -2.64 ,  1.033 , -2.615, -0.234,  0.580]
>>
>> Because the free parameter for the barrett wam is the 3rd joint, the
>> closest 3rd joint value is found such that a solution exists. And if
>> you will notice, the 3rd joint of both solutions match.
>>
>> This however is not the closest solution in terms of the entire arm
>> joints. In order for you to compute that, you will have to call
>> FindAllIkSolutions and test each one, which could take a long time.
>>
>> If you want to prioritize the first joint, then you can create a new
>> ik solver with the free parameter being the first joint.
>>
>> rosen,
>>
>> 2010/9/9 mehmet dogar <[hidden email]>:
>>> Hi,
>>> In the documentation it says that the FindIKSolution call should
>>> return the closest solution to the current joint angles of the robot.
>>> But I am experiencing problems with that. Attached is an example
>>> python script, where the solution found is far away. Note that if I do
>>> FindIKSolutions to get all the solutions, I am able to find a
>>> configuration that is actually very close to the current
>>> configuration.
>>>
>>> Thanks,
>>> -mehmet
>>>
>>> ------------------------------------------------------------------------------
>>> This SF.net Dev2Dev email is sponsored by:
>>>
>>> Show off your parallel programming skills.
>>> Enter the Intel(R) Threading Challenge 2010.
>>> http://p.sf.net/sfu/intel-thread-sfd
>>> _______________________________________________
>>> Openrave-users mailing list
>>> [hidden email]
>>> https://lists.sourceforge.net/lists/listinfo/openrave-users
>>>
>>>
>>
>
>

------------------------------------------------------------------------------
Start uncovering the many advantages of virtual appliances
and start using them to simplify application deployment and
accelerate your shift to cloud computing
http://p.sf.net/sfu/novell-sfdev2dev
_______________________________________________
Openrave-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/openrave-users