Inverse kinematics problem

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

Inverse kinematics problem

simon xu-2
Hi, Rosen,

I am trying to find a inverse kinematics solution for a 7DoF robot,
which is a Manus Arm plus a rotational carriage. The
inversekinematics.py return the following error. It looks like that
the tsolve() returned an assert false. Does that mean that no solution
can be found?

Thanks a lot.

Jijie


moved translation  [0, 0, 0] to right end
moved translation on intersecting axis
[0.154999999999999998889776975375, 0, 0] to left
attempting  j2  =  0
attempting  j2  =  pi/2
attempting  j2  =  pi
attempting  j2  =  -pi/2
attempting  None  =  None
Traceback (most recent call last):
  File "inversekinematics.py", line 466, in <module>
    run()
  File "inversekinematics.py", line 463, in run
    InverseKinematicsModel.RunFromParser(*args,**kwargs)
  File "inversekinematics.py", line 439, in RunFromParser
    OpenRAVEModel.RunFromParser(Model=Model,parser=parser,args=args,**kwargs)
  File "/home/jijie/or/share/openrave/openravepy/openravepy_ext.py",
line 492, in RunFromParser
    model.autogenerate(options=options)
  File "inversekinematics.py", line 132, in autogenerate
    self.generate(iktype=iktype,freejoints=freejoints,usedummyjoints=usedummyjoints,accuracy=accuracy,precision=precision,forceikbuild=forceikbuild,outputlang=outputlang)
  File "inversekinematics.py", line 209, in generate
    code = solver.generateIkSolver(self.manip.GetBase().GetIndex(),self.manip.GetEndEffector().GetIndex(),solvejoints=solvejoints,freeparams=freejointinds,usedummyjoints=usedummyjoints,solvefn=solvefn,lang=outputlang)
  File "/home/jijie/or/share/openrave/openravepy/ikfast.py", line 530,
in generateIkSolver
    return self.generateIkSolverChain(chain,solvefn,lang=lang)
  File "/home/jijie/or/share/openrave/openravepy/ikfast.py", line 541,
in generateIkSolverChain
    chaintree = solvefn(self,chain, Tee)
  File "/home/jijie/or/share/openrave/openravepy/ikfast.py", line
1257, in solveFullIK_6D
    solsubs = solsubs)
  File "/home/jijie/or/share/openrave/openravepy/ikfast.py", line
1394, in solveIKTranslationAll
    childbranch =
self.solveIKTranslationAll(Positions,Positionsee,curtransvars,otherunsolvedvars,allsolvedvars,endbranchtree,solsubs,uselength=uselength)
  File "/home/jijie/or/share/openrave/openravepy/ikfast.py", line
1394, in solveIKTranslationAll
    childbranch =
self.solveIKTranslationAll(Positions,Positionsee,curtransvars,otherunsolvedvars,allsolvedvars,endbranchtree,solsubs,uselength=uselength)
  File "/home/jijie/or/share/openrave/openravepy/ikfast.py", line
1307, in solveIKTranslationAll
    solvedvars += self.solveIKTranslationLength(Positions,
Positionsee, rawvars =
curtransvars,otherunsolvedvars=otherunsolvedvars)
  File "/home/jijie/or/share/openrave/openravepy/ikfast.py", line
1458, in solveIKTranslationLength
    solutions = self.customtsolve(eqnew,var.svar)
  File "/home/jijie/or/share/openrave/openravepy/ikfast.py", line
2781, in customtsolve
    newsols = solve(neweq3,sym)
  File "/home/jijie/or/share/openrave/sympy/solvers/solvers.py", line
89, in solve
    result = [tsolve(f, *symbols)]
  File "/home/jijie/or/share/openrave/sympy/solvers/solvers.py", line
605, in tsolve
    assert False, 'tsolve: at least one Function expected at this point'
AssertionError: tsolve: at least one Function expected at this point

------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
Openrave-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/openrave-users
Reply | Threaded
Open this post in threaded view
|

Re: Inverse kinematics problem

Rosen Diankov
Administrator
hi Jijie,

Try setting the free joint to the carriage instead of j2 (use the
--freejoint option). Also, please send your robot xml file so we can
take a look why j2 is failing when it is free.

rosen,

2010/7/22 simon xu <[hidden email]>:

> Hi, Rosen,
>
> I am trying to find a inverse kinematics solution for a 7DoF robot,
> which is a Manus Arm plus a rotational carriage. The
> inversekinematics.py return the following error. It looks like that
> the tsolve() returned an assert false. Does that mean that no solution
> can be found?
>
> Thanks a lot.
>
> Jijie
>
>
> moved translation  [0, 0, 0] to right end
> moved translation on intersecting axis
> [0.154999999999999998889776975375, 0, 0] to left
> attempting  j2  =  0
> attempting  j2  =  pi/2
> attempting  j2  =  pi
> attempting  j2  =  -pi/2
> attempting  None  =  None
> Traceback (most recent call last):
>  File "inversekinematics.py", line 466, in <module>
>    run()
>  File "inversekinematics.py", line 463, in run
>    InverseKinematicsModel.RunFromParser(*args,**kwargs)
>  File "inversekinematics.py", line 439, in RunFromParser
>    OpenRAVEModel.RunFromParser(Model=Model,parser=parser,args=args,**kwargs)
>  File "/home/jijie/or/share/openrave/openravepy/openravepy_ext.py",
> line 492, in RunFromParser
>    model.autogenerate(options=options)
>  File "inversekinematics.py", line 132, in autogenerate
>    self.generate(iktype=iktype,freejoints=freejoints,usedummyjoints=usedummyjoints,accuracy=accuracy,precision=precision,forceikbuild=forceikbuild,outputlang=outputlang)
>  File "inversekinematics.py", line 209, in generate
>    code = solver.generateIkSolver(self.manip.GetBase().GetIndex(),self.manip.GetEndEffector().GetIndex(),solvejoints=solvejoints,freeparams=freejointinds,usedummyjoints=usedummyjoints,solvefn=solvefn,lang=outputlang)
>  File "/home/jijie/or/share/openrave/openravepy/ikfast.py", line 530,
> in generateIkSolver
>    return self.generateIkSolverChain(chain,solvefn,lang=lang)
>  File "/home/jijie/or/share/openrave/openravepy/ikfast.py", line 541,
> in generateIkSolverChain
>    chaintree = solvefn(self,chain, Tee)
>  File "/home/jijie/or/share/openrave/openravepy/ikfast.py", line
> 1257, in solveFullIK_6D
>    solsubs = solsubs)
>  File "/home/jijie/or/share/openrave/openravepy/ikfast.py", line
> 1394, in solveIKTranslationAll
>    childbranch =
> self.solveIKTranslationAll(Positions,Positionsee,curtransvars,otherunsolvedvars,allsolvedvars,endbranchtree,solsubs,uselength=uselength)
>  File "/home/jijie/or/share/openrave/openravepy/ikfast.py", line
> 1394, in solveIKTranslationAll
>    childbranch =
> self.solveIKTranslationAll(Positions,Positionsee,curtransvars,otherunsolvedvars,allsolvedvars,endbranchtree,solsubs,uselength=uselength)
>  File "/home/jijie/or/share/openrave/openravepy/ikfast.py", line
> 1307, in solveIKTranslationAll
>    solvedvars += self.solveIKTranslationLength(Positions,
> Positionsee, rawvars =
> curtransvars,otherunsolvedvars=otherunsolvedvars)
>  File "/home/jijie/or/share/openrave/openravepy/ikfast.py", line
> 1458, in solveIKTranslationLength
>    solutions = self.customtsolve(eqnew,var.svar)
>  File "/home/jijie/or/share/openrave/openravepy/ikfast.py", line
> 2781, in customtsolve
>    newsols = solve(neweq3,sym)
>  File "/home/jijie/or/share/openrave/sympy/solvers/solvers.py", line
> 89, in solve
>    result = [tsolve(f, *symbols)]
>  File "/home/jijie/or/share/openrave/sympy/solvers/solvers.py", line
> 605, in tsolve
>    assert False, 'tsolve: at least one Function expected at this point'
> AssertionError: tsolve: at least one Function expected at this point
>
> ------------------------------------------------------------------------------
> This SF.net email is sponsored by Sprint
> What will you do first with EVO, the first 4G phone?
> Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
> _______________________________________________
> Openrave-users mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/openrave-users
>

------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
Openrave-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/openrave-users
Reply | Threaded
Open this post in threaded view
|

Re: Inverse kinematics problem

Rosen Diankov
Administrator
Hi Jijie,

I just ran inversekinematics on my side without any problems (for j2)

And the --database option is working.... If anything is documented on
the website, then it is expected to work.

If you find a problem with openrave, please update to the newest
version, confirm your problem, then email the users list or write a
bug report here:

https://sourceforge.net/apps/trac/openrave/newticket

Specify the revision you tested and give as much information as possible.

rosen,

2010/7/22 simon xu <[hidden email]>:

> Hi, Rosen,
>
> Thanks a lot.
>
> The attached is the robot file. I will try the freejoint option.
>
> Also, I found that the option --database is no longer working. Is it right?
>
> Best,
>
> Jijie
>
> On Thu, Jul 22, 2010 at 6:05 PM, Rosen Diankov <[hidden email]> wrote:
>> hi Jijie,
>>
>> Try setting the free joint to the carriage instead of j2 (use the
>> --freejoint option). Also, please send your robot xml file so we can
>> take a look why j2 is failing when it is free.
>>
>> rosen,
>>
>> 2010/7/22 simon xu <[hidden email]>:
>>> Hi, Rosen,
>>>
>>> I am trying to find a inverse kinematics solution for a 7DoF robot,
>>> which is a Manus Arm plus a rotational carriage. The
>>> inversekinematics.py return the following error. It looks like that
>>> the tsolve() returned an assert false. Does that mean that no solution
>>> can be found?
>>>
>>> Thanks a lot.
>>>
>>> Jijie
>>>
>>>
>>> moved translation  [0, 0, 0] to right end
>>> moved translation on intersecting axis
>>> [0.154999999999999998889776975375, 0, 0] to left
>>> attempting  j2  =  0
>>> attempting  j2  =  pi/2
>>> attempting  j2  =  pi
>>> attempting  j2  =  -pi/2
>>> attempting  None  =  None
>>> Traceback (most recent call last):
>>>  File "inversekinematics.py", line 466, in <module>
>>>    run()
>>>  File "inversekinematics.py", line 463, in run
>>>    InverseKinematicsModel.RunFromParser(*args,**kwargs)
>>>  File "inversekinematics.py", line 439, in RunFromParser
>>>    OpenRAVEModel.RunFromParser(Model=Model,parser=parser,args=args,**kwargs)
>>>  File "/home/jijie/or/share/openrave/openravepy/openravepy_ext.py",
>>> line 492, in RunFromParser
>>>    model.autogenerate(options=options)
>>>  File "inversekinematics.py", line 132, in autogenerate
>>>    self.generate(iktype=iktype,freejoints=freejoints,usedummyjoints=usedummyjoints,accuracy=accuracy,precision=precision,forceikbuild=forceikbuild,outputlang=outputlang)
>>>  File "inversekinematics.py", line 209, in generate
>>>    code = solver.generateIkSolver(self.manip.GetBase().GetIndex(),self.manip.GetEndEffector().GetIndex(),solvejoints=solvejoints,freeparams=freejointinds,usedummyjoints=usedummyjoints,solvefn=solvefn,lang=outputlang)
>>>  File "/home/jijie/or/share/openrave/openravepy/ikfast.py", line 530,
>>> in generateIkSolver
>>>    return self.generateIkSolverChain(chain,solvefn,lang=lang)
>>>  File "/home/jijie/or/share/openrave/openravepy/ikfast.py", line 541,
>>> in generateIkSolverChain
>>>    chaintree = solvefn(self,chain, Tee)
>>>  File "/home/jijie/or/share/openrave/openravepy/ikfast.py", line
>>> 1257, in solveFullIK_6D
>>>    solsubs = solsubs)
>>>  File "/home/jijie/or/share/openrave/openravepy/ikfast.py", line
>>> 1394, in solveIKTranslationAll
>>>    childbranch =
>>> self.solveIKTranslationAll(Positions,Positionsee,curtransvars,otherunsolvedvars,allsolvedvars,endbranchtree,solsubs,uselength=uselength)
>>>  File "/home/jijie/or/share/openrave/openravepy/ikfast.py", line
>>> 1394, in solveIKTranslationAll
>>>    childbranch =
>>> self.solveIKTranslationAll(Positions,Positionsee,curtransvars,otherunsolvedvars,allsolvedvars,endbranchtree,solsubs,uselength=uselength)
>>>  File "/home/jijie/or/share/openrave/openravepy/ikfast.py", line
>>> 1307, in solveIKTranslationAll
>>>    solvedvars += self.solveIKTranslationLength(Positions,
>>> Positionsee, rawvars =
>>> curtransvars,otherunsolvedvars=otherunsolvedvars)
>>>  File "/home/jijie/or/share/openrave/openravepy/ikfast.py", line
>>> 1458, in solveIKTranslationLength
>>>    solutions = self.customtsolve(eqnew,var.svar)
>>>  File "/home/jijie/or/share/openrave/openravepy/ikfast.py", line
>>> 2781, in customtsolve
>>>    newsols = solve(neweq3,sym)
>>>  File "/home/jijie/or/share/openrave/sympy/solvers/solvers.py", line
>>> 89, in solve
>>>    result = [tsolve(f, *symbols)]
>>>  File "/home/jijie/or/share/openrave/sympy/solvers/solvers.py", line
>>> 605, in tsolve
>>>    assert False, 'tsolve: at least one Function expected at this point'
>>> AssertionError: tsolve: at least one Function expected at this point
>>>
>>> ------------------------------------------------------------------------------
>>> This SF.net email is sponsored by Sprint
>>> What will you do first with EVO, the first 4G phone?
>>> Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
>>> _______________________________________________
>>> Openrave-users mailing list
>>> [hidden email]
>>> https://lists.sourceforge.net/lists/listinfo/openrave-users
>>>
>>
>

------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
Openrave-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/openrave-users
Reply | Threaded
Open this post in threaded view
|

simple c++ planning example

Daniel Leidner-2
In reply to this post by Rosen Diankov
hi rosen,

i am wondering if there is no simple planning example in c++ like "move
manipulator to mug"!?
i know the best way to do that is using python... but if you want to be
really fast c should be the choice.
if you could make such an example that would be really great!

daniel

------------------------------------------------------------------------------
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: simple c++ planning example

Rosen Diankov
Administrator
Hi Daniel,

This is an excellent suggestion! Just added two examples to address
these concerns (r1749).

One deals with how to call into BaseManipulation to plan:

http://openrave.programmingvision.com/ordocs/en/html/orplanning_problem_8cpp-example.html

The other deals with how to call a planner directly using PlannerParamemters

http://openrave.programmingvision.com/ordocs/en/html/orplanning_planner_8cpp-example.html

Perhaps another helpful C++ example would be to load an ikfast solver
and use BaseManipulation's MoveToHandPosition...

rosen,

2010/9/30 Daniel Leidner <[hidden email]>:

> hi rosen,
>
> i am wondering if there is no simple planning example in c++ like "move
> manipulator to mug"!?
> i know the best way to do that is using python... but if you want to be
> really fast c should be the choice.
> if you could make such an example that would be really great!
>
> daniel
>
> ------------------------------------------------------------------------------
> 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
>

------------------------------------------------------------------------------
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: simple c++ planning example

Daniel Leidner-2
Hi rosen,

those examples are very nice. and indeed another example with
MoveToHandPosition would be awesome as well!

thank you, daniel

Rosen Diankov wrote:

> Hi Daniel,
>
> This is an excellent suggestion! Just added two examples to address
> these concerns (r1749).
>
> One deals with how to call into BaseManipulation to plan:
>
> http://openrave.programmingvision.com/ordocs/en/html/orplanning_problem_8cpp-example.html
>
> The other deals with how to call a planner directly using PlannerParamemters
>
> http://openrave.programmingvision.com/ordocs/en/html/orplanning_planner_8cpp-example.html
>
> Perhaps another helpful C++ example would be to load an ikfast solver
> and use BaseManipulation's MoveToHandPosition...
>
> rosen,
>
> 2010/9/30 Daniel Leidner <[hidden email]>:
>  
>> hi rosen,
>>
>> i am wondering if there is no simple planning example in c++ like "move
>> manipulator to mug"!?
>> i know the best way to do that is using python... but if you want to be
>> really fast c should be the choice.
>> if you could make such an example that would be really great!
>>
>> daniel
>>
>> ------------------------------------------------------------------------------
>> 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
>>
>>    


------------------------------------------------------------------------------
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: simple c++ planning example

Rosen Diankov
Administrator
hi daniel,

added (r1753)

http://openrave.programmingvision.com/ordocs/en/html/orplanning_ik_8cpp-example.html

rosen,

2010/10/1 Daniel Leidner <[hidden email]>:

> Hi rosen,
>
> those examples are very nice. and indeed another example with
> MoveToHandPosition would be awesome as well!
>
> thank you, daniel
>
> Rosen Diankov wrote:
>> Hi Daniel,
>>
>> This is an excellent suggestion! Just added two examples to address
>> these concerns (r1749).
>>
>> One deals with how to call into BaseManipulation to plan:
>>
>> http://openrave.programmingvision.com/ordocs/en/html/orplanning_problem_8cpp-example.html
>>
>> The other deals with how to call a planner directly using PlannerParamemters
>>
>> http://openrave.programmingvision.com/ordocs/en/html/orplanning_planner_8cpp-example.html
>>
>> Perhaps another helpful C++ example would be to load an ikfast solver
>> and use BaseManipulation's MoveToHandPosition...
>>
>> rosen,
>>
>> 2010/9/30 Daniel Leidner <[hidden email]>:
>>
>>> hi rosen,
>>>
>>> i am wondering if there is no simple planning example in c++ like "move
>>> manipulator to mug"!?
>>> i know the best way to do that is using python... but if you want to be
>>> really fast c should be the choice.
>>> if you could make such an example that would be really great!
>>>
>>> daniel
>>>
>>> ------------------------------------------------------------------------------
>>> 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
>>>
>>>
>
>

------------------------------------------------------------------------------
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