Quantcast

Failed to get ik solution for our 3 dof robot

classic Classic list List threaded Threaded
14 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Failed to get ik solution for our 3 dof robot

Shadab


We have made a custom xml for our 3 dof robot and using the generated .cpp and ikfast.h.
We have given each point(x,y,z) sequentially for a cube(bigger than the workspace of the robot arm),We plot a red dot for the point for which solution was found and its transparent if no ik solution was obtained.
In the screenshot above we can see that there are 2 spherical cavities(on z axis) for which solutions were not generated.Why has that happened?(especially when they are very much in reach of the robot)
Also in our robot model in .xml we had given limits to each of the three joints but the solutions we get do not respect the limits.Hence i think that providing limits in the .xml model has not lead to the above cavities.
Thanks in advance :)


Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Failed to get ik solution for our 3 dof robot

Shadab
It would be really helpful if anyone gives a reply to my query :) as this is a major issue that we face.
I have used the following script to generate the .cpp code:
openrave.py --database inversekinematics  --robot=/path/Humanoid_Arm_Robot.xml  --iktype=Translation3D
Do I need to change/provide more parameters in a way that it generates a .cpp which gives solutions for all points?

In iPython:
openrave.py -i /path/Humanoid_Arm_Robot.xml
i can successfully move the robot using robot.SetDOFValues([0,1,1],[0,1,2]),also if I overshoot the limits here then the robot still goes to that position but also throws a notification as limits are specified in the .xml

With iktest=10000:
openravepy.databases.inversekinematics: testik, success rate: 0.990200, wrong solutions: 0.000000, no solutions: 0.009800, missing solution: 0.000000
The above suggests that we should be getting solutions for all points,but when we use the same .cpp code in our application code(with no limits),it does not give solutions as explained in the previous post.Can someone help me solve this?
Thanks in advance :)
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Failed to get ik solution for our 3 dof robot

Rosen Diankov
Administrator
I'm guessing it's not giving you solutions there because of the singularity when the arm is fully stretched out. that's consistent with the fact that 0.98% of the space cannot be solved.

have you tried the latest ikfast from openrave master branch? there have been many fixes to ikfast recently...

sincerely,
rosen,



2014-05-27 14:14 GMT+09:00 Shadab <[hidden email]>:
It would be really helpful if anyone gives a reply to my query :) as this is
a major issue that we face.
I have used the following script to generate the .cpp code:
*openrave.py --database inversekinematics
--robot=/path/Humanoid_Arm_Robot.xml  --iktype=Translation3D*
Do I need to change/provide more parameters in a way that it generates a
.cpp which gives solutions for all points?

In iPython:
openrave.py -i /path/Humanoid_Arm_Robot.xml
i can successfully move the robot using
robot.SetDOFValues([0,1,1],[0,1,2]),also if I overshoot the limits here then
the robot still goes to that position but also throws a notification as
limits are specified in the .xml

With iktest=10000:
*openravepy.databases.inversekinematics: testik, success rate: 0.990200,
wrong solutions: 0.000000, no solutions: 0.009800, missing solution:
0.000000*
The above suggests that we should be getting solutions for all points,but
when we use the same .cpp code in our application code(with no limits),it
does not give solutions as explained in the previous post.Can someone help
me solve this?
Thanks in advance :)




--
View this message in context: http://openrave-users-list.185357.n3.nabble.com/Failed-to-get-ik-solution-for-our-3-dof-robot-tp4026988p4027001.html
Sent from the OpenRAVE Users List mailing list archive at Nabble.com.

------------------------------------------------------------------------------
The best possible search technologies are now affordable for all companies.
Download your FREE open source Enterprise Search Engine today!
Our experts will assist you in its installation for $59/mo, no commitment.
Test it for FREE on our Cloud platform anytime!
http://pubads.g.doubleclick.net/gampad/clk?id=145328191&iu=/4140/ostg.clktrk
_______________________________________________
Openrave-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/openrave-users


------------------------------------------------------------------------------
The best possible search technologies are now affordable for all companies.
Download your FREE open source Enterprise Search Engine today!
Our experts will assist you in its installation for $59/mo, no commitment.
Test it for FREE on our Cloud platform anytime!
http://pubads.g.doubleclick.net/gampad/clk?id=145328191&iu=/4140/ostg.clktrk
_______________________________________________
Openrave-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/openrave-users
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Failed to get ik solution for our 3 dof robot

Shadab
Thanks Rosen :)
Will try it and let you know.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Failed to get ik solution for our 3 dof robot

Shadab
Hi Rosen,
        Just to clear my doubt,I completely agree that no ik solutions are generated under singularity conditions(arm fully stretched out) (the 0.98% space) ,hence it should be a shell in 3D space.But as we see in the 1st post there are two spheres(with no solutions inside the spherical space as well),this accounts for a huge volume(considerably greater than 0.98%) for which solutions are NOT generated.Thus I notice inconsistency between the iktest and the screenshot.
However as you said i am going ahead with installing OpenRAVE from master branch,i was able to get rid of prior errors but these won't go away.I'm attaching the log below.Thanks in advance  :)

Shady:make -f Makefile
-- The C compiler identification is GNU
-- The CXX compiler identification is GNU
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Compiling OpenRAVE Version 0.9.0, soversion=0.9
-- Using cmake version 2.8.7
-- Using double precision
-- detected system processor: x86_64
CMake Warning at CMakeLists.txt:82 (find_package):
  Could not find module FindPKGCONFIG.cmake or a configuration file for
  package PKGCONFIG.

  Adjust CMAKE_MODULE_PATH to find FindPKGCONFIG.cmake or set PKGCONFIG_DIR
  to the directory containing a CMake configuration file for PKGCONFIG.  The
  file will have one of the following names:

    PKGCONFIGConfig.cmake
    pkgconfig-config.cmake



-- Found PythonInterp: /usr/bin/python (found version "2.7.3")
-- Found PythonLibs: /usr/lib/libpython2.7.so (Required is at least version "2")
-- installing to /usr/local, python exe /usr/bin/python, python subdir is lib/python2.7/dist-packages, program suffix is '0.9'
-- Performing Test LINKER_HAS_RDYNAMIC
-- Performing Test LINKER_HAS_RDYNAMIC - Success
-- Performing Test LINKER_HAS_BSYMBOLIC
-- Performing Test LINKER_HAS_BSYMBOLIC - Success
-- Performing Test LINKER_HAS_BSYMBOLIC_FUNCTIONS
-- Performing Test LINKER_HAS_BSYMBOLIC_FUNCTIONS - Success
-- Performing Test LINKER_HAS_VISIBILITY
-- Performing Test LINKER_HAS_VISIBILITY - Success
-- Performing Test LINKER_HAS_VISIBILITY_INLINES_HIDDEN
-- Performing Test LINKER_HAS_VISIBILITY_INLINES_HIDDEN - Success
-- Could NOT find Boost
-- found boost version: 104601
-- Targetting Unix Makefiles
-- Using /usr/bin/c++ compiler.
-- Found GMP: /usr/lib/x86_64-linux-gnu/libgmp.so
-- Found GMPXX: /usr/lib/x86_64-linux-gnu/libgmpxx.so
-- Found MPFR: /usr/lib/x86_64-linux-gnu/libmpfr.so
-- Looking for mpfr_div_d in /usr/lib/x86_64-linux-gnu/libmpfr.so
-- Looking for mpfr_div_d in /usr/lib/x86_64-linux-gnu/libmpfr.so - found
-- Found MPFI: /usr/lib/libmpfi.so
-- Looking for crlibm_init in crlibm
-- Looking for crlibm_init in crlibm - not found
-- Looking for crlibm.h
-- Looking for crlibm.h - not found
-- Using local crlibm
-- Looking for fpu_control.h
-- Looking for fpu_control.h - found
-- Looking for fenv.h
-- Looking for fenv.h - found
-- Looking for inttypes.h
-- Looking for inttypes.h - found
-- Check size of long double
-- Check size of long double - done
-- compiling with double extended (long double) floating point
-- assimp version 3.0.1264, , /usr/include
-- Performing Test IS_ASSIMP_PRE_R896
-- Performing Test IS_ASSIMP_PRE_R896 - Failed
-- Performing Test IS_X86_64
-- Performing Test IS_X86_64 - Success
-- Looking for clock_gettime in rt
-- Looking for clock_gettime in rt - found
-- WARNING: you are using the obsolete 'PKGCONFIG' macro, use FindPkgConfig
-- Found LibXml2: /usr/lib/x86_64-linux-gnu/libxml2.so
-- libxml2 found
-- Looking for Q_WS_X11
-- Looking for Q_WS_X11 - found
-- Looking for Q_WS_WIN
-- Looking for Q_WS_WIN - not found.
-- Looking for Q_WS_QWS
-- Looking for Q_WS_QWS - not found.
-- Looking for Q_WS_MAC
-- Looking for Q_WS_MAC - not found.
-- Found Qt4: /usr/bin/qmake (found version "4.8.1")
CMake Error at CMakeLists.txt:563 (pkg_check_modules):
  Unknown CMake command "pkg_check_modules".


-- Configuring incomplete, errors occurred!
make: *** [all] Error 1
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Failed to get ik solution for our 3 dof robot

Rosen Diankov
Administrator
then it might be because of self collisions or joint limits?

You are using manip.FindIKSolution right?
 Can you try passing

IkFilterOptions.IgnoreSelfCollisions|IkFilterOptions.IgnoreJointLimits

to the filter options to see if you get your entire space?

sincerely


2014-06-03 18:55 GMT+09:00 Shadab <[hidden email]>:
Hi Rosen,
        Just to clear my doubt,I completely agree that no ik solutions are
generated under singularity conditions(arm fully stretched out) (the 0.98%
space) ,hence it should be a shell in 3D space.But as we see in the 1st post
there are two spheres(with no solutions inside the spherical space as
well),this accounts for a huge volume(considerably greater than 0.98%) for
which solutions are NOT generated.Thus I notice inconsistency between the
iktest and the screenshot.
However as you said i am going ahead with installing OpenRAVE from master
branch,i was able to get rid of prior errors but these won't go away.I'm
attaching the log below.Thanks in advance  :)

Shady:make -f Makefile
-- The C compiler identification is GNU
-- The CXX compiler identification is GNU
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Compiling OpenRAVE Version 0.9.0, soversion=0.9
-- Using cmake version 2.8.7
-- Using double precision
-- detected system processor: x86_64
CMake Warning at CMakeLists.txt:82 (find_package):
  Could not find module FindPKGCONFIG.cmake or a configuration file for
  package PKGCONFIG.

  Adjust CMAKE_MODULE_PATH to find FindPKGCONFIG.cmake or set PKGCONFIG_DIR
  to the directory containing a CMake configuration file for PKGCONFIG.  The
  file will have one of the following names:

    PKGCONFIGConfig.cmake
    pkgconfig-config.cmake



-- Found PythonInterp: /usr/bin/python (found version "2.7.3")
-- Found PythonLibs: /usr/lib/libpython2.7.so (Required is at least version
"2")
-- installing to /usr/local, python exe /usr/bin/python, python subdir is
lib/python2.7/dist-packages, program suffix is '0.9'
-- Performing Test LINKER_HAS_RDYNAMIC
-- Performing Test LINKER_HAS_RDYNAMIC - Success
-- Performing Test LINKER_HAS_BSYMBOLIC
-- Performing Test LINKER_HAS_BSYMBOLIC - Success
-- Performing Test LINKER_HAS_BSYMBOLIC_FUNCTIONS
-- Performing Test LINKER_HAS_BSYMBOLIC_FUNCTIONS - Success
-- Performing Test LINKER_HAS_VISIBILITY
-- Performing Test LINKER_HAS_VISIBILITY - Success
-- Performing Test LINKER_HAS_VISIBILITY_INLINES_HIDDEN
-- Performing Test LINKER_HAS_VISIBILITY_INLINES_HIDDEN - Success
-- Could NOT find Boost
-- found boost version: 104601
-- Targetting Unix Makefiles
-- Using /usr/bin/c++ compiler.
-- Found GMP: /usr/lib/x86_64-linux-gnu/libgmp.so
-- Found GMPXX: /usr/lib/x86_64-linux-gnu/libgmpxx.so
-- Found MPFR: /usr/lib/x86_64-linux-gnu/libmpfr.so
-- Looking for mpfr_div_d in /usr/lib/x86_64-linux-gnu/libmpfr.so
-- Looking for mpfr_div_d in /usr/lib/x86_64-linux-gnu/libmpfr.so - found
-- Found MPFI: /usr/lib/libmpfi.so
-- Looking for crlibm_init in crlibm
-- Looking for crlibm_init in crlibm - not found
-- Looking for crlibm.h
-- Looking for crlibm.h - not found
-- Using local crlibm
-- Looking for fpu_control.h
-- Looking for fpu_control.h - found
-- Looking for fenv.h
-- Looking for fenv.h - found
-- Looking for inttypes.h
-- Looking for inttypes.h - found
-- Check size of long double
-- Check size of long double - done
-- compiling with double extended (long double) floating point
-- assimp version 3.0.1264, , /usr/include
-- Performing Test IS_ASSIMP_PRE_R896
-- Performing Test IS_ASSIMP_PRE_R896 - Failed
-- Performing Test IS_X86_64
-- Performing Test IS_X86_64 - Success
-- Looking for clock_gettime in rt
-- Looking for clock_gettime in rt - found
-- WARNING: you are using the obsolete 'PKGCONFIG' macro, use FindPkgConfig
-- Found LibXml2: /usr/lib/x86_64-linux-gnu/libxml2.so
-- libxml2 found
-- Looking for Q_WS_X11
-- Looking for Q_WS_X11 - found
-- Looking for Q_WS_WIN
-- Looking for Q_WS_WIN - not found.
-- Looking for Q_WS_QWS
-- Looking for Q_WS_QWS - not found.
-- Looking for Q_WS_MAC
-- Looking for Q_WS_MAC - not found.
-- Found Qt4: /usr/bin/qmake (found version "4.8.1")
CMake Error at CMakeLists.txt:563 (pkg_check_modules):
  Unknown CMake command "pkg_check_modules".


-- Configuring incomplete, errors occurred!
make: *** [all] Error 1




--
View this message in context: http://openrave-users-list.185357.n3.nabble.com/Failed-to-get-ik-solution-for-our-3-dof-robot-tp4026988p4027018.html
Sent from the OpenRAVE Users List mailing list archive at Nabble.com.

------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/NeoTech
_______________________________________________
Openrave-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/openrave-users


------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/NeoTech
_______________________________________________
Openrave-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/openrave-users
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Failed to get ik solution for our 3 dof robot

Shadab
Thanks a lot Rosen,

Knowing that im new to OpenRAVE and maybe asking on a basic level,your prompt replies really makes me admire your willingness to help :)
I'm using python scripts only to generate the .cpp which i use in my application code(written in C).As of now I have commented out the main() of the generated code and instead assigning eetrans[0] = x;eetrans[1] = y;eetrans[2] = z; directly.So in my opinion i am using it correctly.
As i understand correctly,if I have to disable the filters(self colli and jnt limits),then it has to be done before I generate the code.
1)But I could not figure out how to give that as a parameter in the terminal?
2)I want to work on the version 9 for which i got stuck(log in previous post),can someone help me with that?
Thanks.




<quote author="Rosen Diankov">
then it might be because of self collisions or joint limits?

You are using manip.FindIKSolution right?
 Can you try passing

IkFilterOptions.IgnoreSelfCollisions|IkFilterOptions.IgnoreJointLimits

to the filter options to see if you get your entire space?

sincerely


2014-06-03 18:55 GMT+09:00 Shadab <[hidden email]>:

> Hi Rosen,
>         Just to clear my doubt,I completely agree that no ik solutions are
> generated under singularity conditions(arm fully stretched out) (the 0.98%
> space) ,hence it should be a shell in 3D space.But as we see in the 1st
> post
> there are two spheres(with no solutions inside the spherical space as
> well),this accounts for a huge volume(considerably greater than 0.98%) for
> which solutions are NOT generated.Thus I notice inconsistency between the
> iktest and the screenshot.
> However as you said i am going ahead with installing OpenRAVE from master
> branch,i was able to get rid of prior errors but these won't go away.I'm
> attaching the log below.Thanks in advance  :)
>
> Shady:make -f Makefile
> -- The C compiler identification is GNU
> -- The CXX compiler identification is GNU
> -- Check for working C compiler: /usr/bin/gcc
> -- Check for working C compiler: /usr/bin/gcc -- works
> -- Detecting C compiler ABI info
> -- Detecting C compiler ABI info - done
> -- Check for working CXX compiler: /usr/bin/c++
> -- Check for working CXX compiler: /usr/bin/c++ -- works
> -- Detecting CXX compiler ABI info
> -- Detecting CXX compiler ABI info - done
> -- Compiling OpenRAVE Version 0.9.0, soversion=0.9
> -- Using cmake version 2.8.7
> -- Using double precision
> -- detected system processor: x86_64
> CMake Warning at CMakeLists.txt:82 (find_package):
>   Could not find module FindPKGCONFIG.cmake or a configuration file for
>   package PKGCONFIG.
>
>   Adjust CMAKE_MODULE_PATH to find FindPKGCONFIG.cmake or set PKGCONFIG_DIR
>   to the directory containing a CMake configuration file for PKGCONFIG.
>  The
>   file will have one of the following names:
>
>     PKGCONFIGConfig.cmake
>     pkgconfig-config.cmake
>
>
>
> -- Found PythonInterp: /usr/bin/python (found version "2.7.3")
> -- Found PythonLibs: /usr/lib/libpython2.7.so (Required is at least
> version
> "2")
> -- installing to /usr/local, python exe /usr/bin/python, python subdir is
> lib/python2.7/dist-packages, program suffix is '0.9'
> -- Performing Test LINKER_HAS_RDYNAMIC
> -- Performing Test LINKER_HAS_RDYNAMIC - Success
> -- Performing Test LINKER_HAS_BSYMBOLIC
> -- Performing Test LINKER_HAS_BSYMBOLIC - Success
> -- Performing Test LINKER_HAS_BSYMBOLIC_FUNCTIONS
> -- Performing Test LINKER_HAS_BSYMBOLIC_FUNCTIONS - Success
> -- Performing Test LINKER_HAS_VISIBILITY
> -- Performing Test LINKER_HAS_VISIBILITY - Success
> -- Performing Test LINKER_HAS_VISIBILITY_INLINES_HIDDEN
> -- Performing Test LINKER_HAS_VISIBILITY_INLINES_HIDDEN - Success
> -- Could NOT find Boost
> -- found boost version: 104601
> -- Targetting Unix Makefiles
> -- Using /usr/bin/c++ compiler.
> -- Found GMP: /usr/lib/x86_64-linux-gnu/libgmp.so
> -- Found GMPXX: /usr/lib/x86_64-linux-gnu/libgmpxx.so
> -- Found MPFR: /usr/lib/x86_64-linux-gnu/libmpfr.so
> -- Looking for mpfr_div_d in /usr/lib/x86_64-linux-gnu/libmpfr.so
> -- Looking for mpfr_div_d in /usr/lib/x86_64-linux-gnu/libmpfr.so - found
> -- Found MPFI: /usr/lib/libmpfi.so
> -- Looking for crlibm_init in crlibm
> -- Looking for crlibm_init in crlibm - not found
> -- Looking for crlibm.h
> -- Looking for crlibm.h - not found
> -- Using local crlibm
> -- Looking for fpu_control.h
> -- Looking for fpu_control.h - found
> -- Looking for fenv.h
> -- Looking for fenv.h - found
> -- Looking for inttypes.h
> -- Looking for inttypes.h - found
> -- Check size of long double
> -- Check size of long double - done
> -- compiling with double extended (long double) floating point
> -- assimp version 3.0.1264, , /usr/include
> -- Performing Test IS_ASSIMP_PRE_R896
> -- Performing Test IS_ASSIMP_PRE_R896 - Failed
> -- Performing Test IS_X86_64
> -- Performing Test IS_X86_64 - Success
> -- Looking for clock_gettime in rt
> -- Looking for clock_gettime in rt - found
> -- WARNING: you are using the obsolete 'PKGCONFIG' macro, use FindPkgConfig
> -- Found LibXml2: /usr/lib/x86_64-linux-gnu/libxml2.so
> -- libxml2 found
> -- Looking for Q_WS_X11
> -- Looking for Q_WS_X11 - found
> -- Looking for Q_WS_WIN
> -- Looking for Q_WS_WIN - not found.
> -- Looking for Q_WS_QWS
> -- Looking for Q_WS_QWS - not found.
> -- Looking for Q_WS_MAC
> -- Looking for Q_WS_MAC - not found.
> -- Found Qt4: /usr/bin/qmake (found version "4.8.1")
> CMake Error at CMakeLists.txt:563 (pkg_check_modules):
>   Unknown CMake command "pkg_check_modules".
>
>
> -- Configuring incomplete, errors occurred!
> make: *** [all] Error 1
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Failed to get ik solution for our 3 dof robot

Shadab
The Problem of unreachable space was because of the restriction of one of the joints in the model (prob explained in the image below):



Now so that the robot reaches the earlier unreachable space,we have added the 4th joint between shoulder and elbow to help us reach that space(checked with  robot.SetDOFValues() ).But to solve for Translation3d we are making the new joint as free...hence the generated .cpp never gives any angle for that joint...And as far as the unreachable cavity is concerned....it still says no ik sols found for that space....Am I missing something...also is there any other way I can get my robot to reach that space

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Failed to get ik solution for our 3 dof robot

Shadab
Custom4dofRobot.xml

I use the following script on the above simple stick model 4 dof robot(attached):

openrave.py --database inversekinematics  --robot=/home/858232/workBench/4dofRobot/ASIMO/Custom4dofRobot_ASIMO.xml --freejoint=Arm2  --iktype=Translation3D

This generates the .cpp which i compile using:
g++ -o ik ikfast61.Translation3D.0_1_3_f2.cpp

But when i give the points x=0.2,    y=0.2,    z=0.3 from the terminal using:
./ik 1 0 0 0.2 0 1 0 0.2 0 0 1 0.3 Arm2
 it gives 4 solutions but the value for Arm2 in all the solutions is zero
858232@01hw611467:~/workBench/4dofRobot/ASIMO/Custom4dof/kinematics.f0bada31f974a680cd95f99c2e13205d$ ./ik 1 0 0 0.2 0 1 0 0.2 0 0 1 0.3 Arm2
Found 4 ik solutions:
sol0 (free=0): 1.851202920851478, 0.500811992971360, 0.000000000000000, 1.430334912085041,
sol1 (free=0): 2.861186059533209, -0.500811992971362, 0.000000000000000, 1.430334912085041,
sol2 (free=0): -0.280406594056581, 0.500811992971360, 0.000000000000000, -1.430334912085041,
sol3 (free=0): -1.290389732738322, -0.500811992971358, 0.000000000000000, -1.430334912085041,

For my arm to reach the whole space,i need varying/non zero values for Arm 2 which i am not getting...where am i going wrong?
Thanks in advance
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Failed to get ik solution for our 3 dof robot

Rosen Diankov
Administrator
Arm2 is a free joint, which the user sets. So when you make the IK call:

./ik 1 0 0 0.2 0 1 0 0.2 0 0 1 0.3 Arm2

You should set different values for Arm2.
The raw IK call also doesn't care about joint limits and collisions.

All those constraints and testing different Arm2 solutions is taken care of by Manipulator::FindIkSolutions call, so the user doesn't have to worry about it.
Because there is a free joint, you can set the discretization level of that free joint (called freeinc). By default it is 0.1 radians, which is pretty rough. If you set it to 0.01, you should get 10x more solutions. You can set freeinc in several ways:

- if using inversekinematics model, in the "load" or "setrobot" calls

- Once the IK is set on the manipulator, SendCommand("SetFreeIncrements 0.01") to the IkSolver object

i'm attaching the IK generated on the latest bleeding edge openrave.
hope this helps,
rosen,


2014-07-08 21:47 GMT+09:00 Shadab <[hidden email]>:
Custom4dofRobot.xml
<http://openrave-users-list.185357.n3.nabble.com/file/n4027066/Custom4dofRobot.xml>

I use the following script on the above simple stick model 4 dof
robot(attached):

openrave.py --database inversekinematics
--robot=/home/858232/workBench/4dofRobot/ASIMO/Custom4dofRobot_ASIMO.xml
--freejoint=Arm2  --iktype=Translation3D

This generates the .cpp which i compile using:
g++ -o ik ikfast61.Translation3D.0_1_3_f2.cpp

But when i give the points x=0.2,    y=0.2,    z=0.3 from the terminal
using:
./ik 1 0 0 0.2 0 1 0 0.2 0 0 1 0.3 Arm2
 it gives 4 solutions but the value for Arm2 in all the solutions is zero
858232@01hw611467:~/workBench/4dofRobot/ASIMO/Custom4dof/kinematics.f0bada31f974a680cd95f99c2e13205d$
./ik 1 0 0 0.2 0 1 0 0.2 0 0 1 0.3 Arm2
Found 4 ik solutions:
sol0 (free=0): 1.851202920851478, 0.500811992971360, 0.000000000000000,
1.430334912085041,
sol1 (free=0): 2.861186059533209, -0.500811992971362, 0.000000000000000,
1.430334912085041,
sol2 (free=0): -0.280406594056581, 0.500811992971360, 0.000000000000000,
-1.430334912085041,
sol3 (free=0): -1.290389732738322, -0.500811992971358, 0.000000000000000,
-1.430334912085041,

For my arm to reach the whole space,i need varying/non zero values for Arm 2
which i am not getting...where am i going wrong?
Thanks in advance



--
View this message in context: http://openrave-users-list.185357.n3.nabble.com/Failed-to-get-ik-solution-for-our-3-dof-robot-tp4026988p4027066.html
Sent from the OpenRAVE Users List mailing list archive at Nabble.com.

------------------------------------------------------------------------------
Open source business process management suite built on Java and Eclipse
Turn processes into business applications with Bonita BPM Community Edition
Quickly connect people, data, and systems into organized workflows
Winner of BOSSIE, CODIE, OW2 and Gartner awards
http://p.sf.net/sfu/Bonitasoft
_______________________________________________
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

Custom4dofRobot.ikfast71.Translation3D.0_1_3_f2.tgz (71K) Download Attachment
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Failed to get ik solution for our 3 dof robot

Shadab
Thanks Rosen,your reply did help,now I am able to get all angles(provided i have already given the value for free joint).Also i'm giving a low discretization value 0.000001 rad .As pointed out earlier this robot cant find solutions in a cavity,so the free joint becomes very crucial for points to be reached in that cavity(as seen in the images)
Pic1(Robot tip at the edge of the cavity)



Pic2(Importance of the 3rd joint to help reach the point which was unreachable before)


and it all depends on WHAT VALUE of the free joint i give before i call computeIK( ),otherwise it says no ik solution found.So for a solution to be "found" or to have "smooth" trajectory the value we give to the free joint becomes very imp as the solution is calculated after the 3rd joint is frozen hence one has to supply that point carefully.

858232@01hw611467:/home/858232/workBench/4dofRobot/resolved/kinematics.freeinc_000001$ ./ik 1 0 0 0 0 1 0 0.21 0 0 1 0.3 0.5
Failed to get ik solution
858232@01hw611467:/home/858232/workBench/4dofRobot/resolved/kinematics.freeinc_000001$ ./ik 1 0 0 0 0 1 0 0.21 0 0 1 0.3 0.6
Found 4 ik solutions:
sol0 (free=0): 2.903710939249241, -0.384391019785284, 0.600000000000000, 1.718533162216832,
sol1 (free=0): -2.903710939249248, -0.775221729916789, 0.600000000000000, 1.718533162216832,
sol2 (free=0): 0.237881714340552, 0.775221729916794, 0.600000000000000, -1.718533162216832,
sol3 (free=0): -0.237881714340559, 0.384391019785282, 0.600000000000000, -1.718533162216832,

So its not a real challenge to decide what value has to be given for the third joint(Arm2) if we are dealing with a single point,but if the tip has to move in a straight line then the Arm2 has to be supplied with values(with varying rate of change) so that the solutions calculated(for the rest 3 joints) provide smooth movement at the tip.
My question is how to know those Arm2 values?

PS:We are having a C application code(not using python) which calls the .cpp only to get the joint angles

Thanks.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Failed to get ik solution for our 3 dof robot

Rosen Diankov
Administrator
Have you tried setting the other joints as free joints? Usually there's one free joint where performance is really good and the rest suck.


2014-07-14 22:30 GMT+09:00 Shadab <[hidden email]>:
Thanks Rosen,your reply did help,now I am able to get all angles(provided i
have already given the value for free joint).Also i'm giving a low
discretization value 0.000001 rad .As pointed out earlier this robot cant
find solutions in a cavity,so the free joint becomes very crucial for points
to be reached in that cavity(as seen in the images)
Pic1(Robot tip at the edge of the cavity)
<http://openrave-users-list.185357.n3.nabble.com/file/n4027071/34.png>


Pic2(Importance of the 3rd joint to help reach the point which was
unreachable before)
<http://openrave-users-list.185357.n3.nabble.com/file/n4027071/folded.png>

and it all depends on WHAT VALUE of the free joint i give before i call
computeIK( ),otherwise it says no ik solution found.So for a solution to be
"found" or to have "smooth" trajectory the value we give to the free joint
becomes very imp as the solution is calculated after the 3rd joint is frozen
hence one has to supply that point carefully.

858232@01hw611467:/home/858232/workBench/4dofRobot/resolved/kinematics.freeinc_000001$
./ik 1 0 0 0 0 1 0 0.21 0 0 1 0.3 0.5
Failed to get ik solution
858232@01hw611467:/home/858232/workBench/4dofRobot/resolved/kinematics.freeinc_000001$
./ik 1 0 0 0 0 1 0 0.21 0 0 1 0.3 0.6
Found 4 ik solutions:
sol0 (free=0): 2.903710939249241, -0.384391019785284, 0.600000000000000,
1.718533162216832,
sol1 (free=0): -2.903710939249248, -0.775221729916789, 0.600000000000000,
1.718533162216832,
sol2 (free=0): 0.237881714340552, 0.775221729916794, 0.600000000000000,
-1.718533162216832,
sol3 (free=0): -0.237881714340559, 0.384391019785282, 0.600000000000000,
-1.718533162216832,

So its not a real challenge to decide what value has to be given for the
third joint(Arm2) if we are dealing with a single point,but if the tip has
to move in a straight line then the Arm2 has to be supplied with values(with
varying rate of change) so that the solutions calculated(for the rest 3
joints) provide smooth movement at the tip.
My question is how to know those Arm2 values?

PS:We are having a C application code(not using python) which calls the .cpp
only to get the joint angles

Thanks.



--
View this message in context: http://openrave-users-list.185357.n3.nabble.com/Failed-to-get-ik-solution-for-our-3-dof-robot-tp4026988p4027071.html
Sent from the OpenRAVE Users List mailing list archive at Nabble.com.

------------------------------------------------------------------------------
Want fast and easy access to all the code in your enterprise? Index and
search up to 200,000 lines of code with a free copy of Black Duck&#174;
Code Sight&#153; - the same software that powers the world's largest code
search on Ohloh, the Black Duck Open Hub! Try it now.
http://p.sf.net/sfu/bds
_______________________________________________
Openrave-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/openrave-users


------------------------------------------------------------------------------
Want fast and easy access to all the code in your enterprise? Index and
search up to 200,000 lines of code with a free copy of Black Duck&#174;
Code Sight&#153; - the same software that powers the world's largest code
search on Ohloh, the Black Duck Open Hub! Try it now.
http://p.sf.net/sfu/bds
_______________________________________________
Openrave-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/openrave-users
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Failed to get ik solution for our 3 dof robot

Shadab
Yes Rosen...performance is much better when i make Arm0 as a free joint.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Failed to get ik solution for our 3 dof robot

Shadab
I expanded the 3dof xml file for 7dof:

Custom7dofRobot.rar

 And I'm generating IK (translation6d) using the script:
 /home/858232$ openrave.py --database inversekinematics --robot=/home/858232/workBench/7dofRobot/Custom7dofRobot/Custom7dofRobot.xml --freejoint=Arm0

The above is successful,but if i make Arm2 as free joint then the IK generation gets stuck at:

858232@01hw611467:/home/858232$ openrave.py --database inversekinematics  --robot=/home/858232/workBench/7dofRobot/Custom7dofRobot/Custom7dofRobot.xml --freejoint=Arm2
getIndicesFromJointNames [2] ['Arm2']
openravepy.databases.inversekinematics: generate, Generating inverse kinematics for manip arm: Transform6D [0, 1, 3, 4, 5, 6] (this might take up to 10 min)
openravepy.databases.inversekinematics: generate, creating ik file /home/858232//.openrave/kinematics.7def0ad9dfacbbab27c1b8065300abbf/ikfast61.Transform6D.0_1_3_4_5_6_f2.cpp
/usr/lib/python2.7/dist-packages/openravepy/_openravepy_0_8/ikfast.py:1122: RuntimeWarning: invalid value encountered in divide
  axisangle /= angle
openravepy.ikfast: forwardKinematicsChain, moved translation [0, 0, 0] to right end
openravepy.ikfast: forwardKinematicsChain, moved translation [0, 0, 1/20] to left end
openravepy.ikfast: forwardKinematicsChain, moved translation on intersecting axis [0, 0, 1/10] to left
openravepy.ikfast: generateIkSolver, [[1, 0, 0, 0],[0, 1, 0, 0],[0, 0, 1, 1/20]]
openravepy.ikfast: generateIkSolver, [[cos(j0), -sin(j0), 0, 0],[sin(j0), cos(j0), 0, 0],[0, 0, 1, 0]]
openravepy.ikfast: generateIkSolver, [[1, 0, 0, 0],[0, 0, 1, 0],[0, -1, 0, 0]]
openravepy.ikfast: generateIkSolver, [[cos(j1), -sin(j1), 0, 0],[sin(j1), cos(j1), 0, 0],[0, 0, 1, 0]]
openravepy.ikfast: generateIkSolver, [[1, 0, 0, 0],[0, 0, -1, -1/8],[0, 1, 0, 0]]
openravepy.ikfast: generateIkSolver, [[cos(j2), -sin(j2), 0, 0],[sin(j2), cos(j2), 0, 0],[0, 0, 1, 0]]
openravepy.ikfast: generateIkSolver, [[0, 0, 1, 0],[0, 1, 0, 0],[-1, 0, 0, 1/8]]
openravepy.ikfast: generateIkSolver, [[cos(j3), -sin(j3), 0, 0],[sin(j3), cos(j3), 0, 0],[0, 0, 1, 0]]
openravepy.ikfast: generateIkSolver, [[0, 0, -1, -1/5],[0, 1, 0, 0],[1, 0, 0, 0]]
openravepy.ikfast: generateIkSolver, [[cos(j4), -sin(j4), 0, 0],[sin(j4), cos(j4), 0, 0],[0, 0, 1, 0]]
openravepy.ikfast: generateIkSolver, [[1, 0, 0, 0],[0, 0, 1, 0],[0, -1, 0, 0]]
openravepy.ikfast: generateIkSolver, [[cos(j5), -sin(j5), 0, 0],[sin(j5), cos(j5), 0, 0],[0, 0, 1, 0]]
openravepy.ikfast: generateIkSolver, [[0, 0, 1, 0],[1, 0, 0, -1/25],[0, 1, 0, 0]]
openravepy.ikfast: generateIkSolver, [[cos(j6), -sin(j6), 0, 0],[sin(j6), cos(j6), 0, 0],[0, 0, 1, 0]]
openravepy.ikfast: generateIkSolver, [[0, 0, -1, 0],[0, 1, 0, 0],[1, 0, 0, 0]]
openravepy.ikfast: solveFullIK_6D, ikfast 6d: [j0, j1, j3, j4, j5, j6]
openravepy.ikfast: iterateThreeNonIntersectingAxes, found 3 consecutive non-intersecting axes links[2:9], vars=[j1, j3, j4]
openravepy.ikfast: solveLiWoernleHiller, attempting li/woernle/hiller general ik method
openravepy.ikfast: solveLiWoernleHiller, AU has symbols, so working with inverse might take some time
openravepy.ikfast: solveLiWoernleHiller, found non-singular AU matrix
openravepy.ikfast: solveLiWoernleHiller, failed with leftvar htj5: 'equations are not linearly independent'
openravepy.ikfast: solveLiWoernleHiller, failed with leftvar htj6: 'equations are not linearly independent'
openravepy.ikfast: solveLiWoernleHiller, failed with leftvar htj4: 'solveDialytically: more unknowns than equations 12>8'
openravepy.ikfast: solveFullIK_6DGeneral, 'failed to solve dialytically'
openravepy.ikfast: solveLiWoernleHiller, attempting li/woernle/hiller general ik method
openravepy.ikfast: solveLiWoernleHiller, AU has symbols, so working with inverse might take some time
openravepy.ikfast: solveLiWoernleHiller, found non-singular AU matrix
openravepy.ikfast: solveLiWoernleHiller, failed with leftvar htj0: 'equations are not linearly independent'
openravepy.ikfast: solveLiWoernleHiller, failed with leftvar htj6: 'equations are not linearly independent'
openravepy.ikfast: solveLiWoernleHiller, failed with leftvar htj1: 'solveDialytically: more unknowns than equations 12>8'
openravepy.ikfast: solveFullIK_6DGeneral, 'failed to solve dialytically'
openravepy.ikfast: solveKohliOsvatic, attempting kohli/osvatic general ik method
openravepy.ikfast: _computereducedequations, solving for all pairwise variables in (cj5, sj5, cj6, sj6), number of symbol coeffs are 16
openravepy.ikfast: _computereducedequations, finished with 6 equations
openravepy.ikfast: solveKohliOsvatic, build final equations for symbols: [cj1, sj1, cj3, sj3, cj5, sj5]

Please help me out with this?
Thanks in advance,
Loading...