IK generated rotation problem

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

IK generated rotation problem

begvit
Hi Rosen,

I generated the IK Solver cpp code for puma.robot.xml of the OpenRAVE library. I have had also integrated the cpp code in my own project, so I can get FK and IK and it works well.

The issue that I couldn’t solve till now is the orientation/direction of the TCP.
The generated cpp code requires an
r00 r01 r02 t0
r10 r11 r12 t1
r20 r21 r22 t2
0    0    0    1
matrix as parametrs. The last column ist the position of my TCP and the
r00 r01 r02
r10 r11 r12
r20 r21 r22
should be the orientation specified by the rotation matrix.

By using your fk function of the generated code by giving the joint angles of the manipulator it returns me the TCP position as x, y and z- components, such a matrix and three Euler angles Yaw, Pitch and Roll.

If I got that right, there should be a way to encode this three angles of the orientation into the rotation matrix:
r00 r01 r02
r10 r11 r12
r20 r21 r22.

I tried to do this through multiplying of three rotation matrixes about x, y and z-axis and parameterizing these rotation matrixes cosine and sine components this Yaw Pith Roll angles respectively. But I’m still receiving not the matrix, the fk function of your code does return.

So now I have the 6DOF kinematics without ability to control the direction of TCP, but just a position.

What do I do wrong by encoding the Yaw Pith Roll angles in to the rotation matrix? Could you give me any hint, how can I do this regarding the puma.robot.xml manipulator of the OpenRAVE library?

Best regards!
Vitaliy
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

IK generated rotation problem

begvit

Hi Rosen,

I generated the IK Solver cpp code for puma.robot.xml of the OpenRAVE library. I have had also integrated the cpp code in my own project, so I can get FK and IK and it works well.


The issue that I couldn’t solve till now is the orientation/direction of the TCP.

The generated cpp code requires an

r00 r01 r02 t0
r10 r11 r12 t1
r20 r21 r22 t2
0    0    0    1

matrix as parametrs. The last column ist the position of my TCP and the

r00 r01 r02
r10 r11 r12
r20 r21 r22

should be the orientation specified by the rotation matrix.


By using your fk function of the generated code by giving the joint angles of the manipulator it returns me the TCP position as x, y and z- components, such a matrix and three Euler angles Yaw, Pitch and Roll.


If I got that right, there should be a way to encode this three angles of the orientation into the rotation matrix:

r00 r01 r02
r10 r11 r12
r20 r21 r22.


I tried to do this through multiplying of three rotation matrixes about x, y and z-axis and parameterizing these rotation matrixes cosine and sine components this Yaw Pith Roll angles respectively. But I’m still receiving not the matrix, the fk function of your code does return.


So now I have the 6DOF kinematics without ability to control the direction of TCP, but just a position.


What do I do wrong by encoding the Yaw Pith Roll angles in to the rotation matrix? Could you give me any hint, how can I do this regarding the puma.robot.xml manipulator of the OpenRAVE library?


Best regards!

Vitaliy


------------------------------------------------------------------------------
Get 100% visibility into Java/.NET code with AppDynamics Lite!
It's a free troubleshooting tool designed for production.
Get down to code-level detail for bottlenecks, with <2% overhead.
Download for free and get started troubleshooting in minutes.
http://pubads.g.doubleclick.net/gampad/clk?id=48897031&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: IK generated rotation problem

Rosen Diankov
Administrator
ikfast doesn't use euler angles anywhere....


2013/8/7 Vitaliy Beguchiy <[hidden email]>

Hi Rosen,

I generated the IK Solver cpp code for puma.robot.xml of the OpenRAVE library. I have had also integrated the cpp code in my own project, so I can get FK and IK and it works well.


The issue that I couldn’t solve till now is the orientation/direction of the TCP.

The generated cpp code requires an

r00 r01 r02 t0
r10 r11 r12 t1
r20 r21 r22 t2
0    0    0    1

matrix as parametrs. The last column ist the position of my TCP and the

r00 r01 r02
r10 r11 r12
r20 r21 r22

should be the orientation specified by the rotation matrix.


By using your fk function of the generated code by giving the joint angles of the manipulator it returns me the TCP position as x, y and z- components, such a matrix and three Euler angles Yaw, Pitch and Roll.


If I got that right, there should be a way to encode this three angles of the orientation into the rotation matrix:

r00 r01 r02
r10 r11 r12
r20 r21 r22.


I tried to do this through multiplying of three rotation matrixes about x, y and z-axis and parameterizing these rotation matrixes cosine and sine components this Yaw Pith Roll angles respectively. But I’m still receiving not the matrix, the fk function of your code does return.


So now I have the 6DOF kinematics without ability to control the direction of TCP, but just a position.


What do I do wrong by encoding the Yaw Pith Roll angles in to the rotation matrix? Could you give me any hint, how can I do this regarding the puma.robot.xml manipulator of the OpenRAVE library?


Best regards!

Vitaliy


------------------------------------------------------------------------------
Get 100% visibility into Java/.NET code with AppDynamics Lite!
It's a free troubleshooting tool designed for production.
Get down to code-level detail for bottlenecks, with <2% overhead.
Download for free and get started troubleshooting in minutes.
http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk
_______________________________________________
Openrave-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/openrave-users



------------------------------------------------------------------------------
Get 100% visibility into Java/.NET code with AppDynamics Lite!
It's a free troubleshooting tool designed for production.
Get down to code-level detail for bottlenecks, with <2% overhead.
Download for free and get started troubleshooting in minutes.
http://pubads.g.doubleclick.net/gampad/clk?id=48897031&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: IK generated rotation problem

begvit

Hi Rosen,

 

thank you for your reply!

 

Can you tell me, how should I better build the rotation matrix R3x3 as an input for the ikfast solver I have generated with OpenRAVE?

 

Does OpenRAVE use the rotations about every frame axis in order to get the R3x3 matrix? So that such rotation matrix is achieved by the multiplying of every rotation step about every axis or there is something more, what I didn’t get yet?


Best regards!

Vitaliy




ikfast doesn't use euler angles anywhere....


Hi Rosen,

I generated the IK Solver cpp code for puma.robot.xml of the OpenRAVE library. I have had also integrated the cpp code in my own project, so I can get FK and IK and it works well.


The issue that I couldn’t solve till now is the orientation/direction of the TCP.

The generated cpp code requires an

r00 r01 r02 t0
r10 r11 r12 t1
r20 r21 r22 t2
0    0    0    1

matrix as parametrs. The last column ist the position of my TCP and the

r00 r01 r02
r10 r11 r12
r20 r21 r22

should be the orientation specified by the rotation matrix.


By using your fk function of the generated code by giving the joint angles of the manipulator it returns me the TCP position as x, y and z- components, such a matrix and three Euler angles Yaw, Pitch and Roll.


If I got that right, there should be a way to encode this three angles of the orientation into the rotation matrix:

r00 r01 r02
r10 r11 r12
r20 r21 r22.


I tried to do this through multiplying of three rotation matrixes about x, y and z-axis and parameterizing these rotation matrixes cosine and sine components this Yaw Pith Roll angles respectively. But I’m still receiving not the matrix, the fk function of your code does return.


So now I have the 6DOF kinematics without ability to control the direction of TCP, but just a position.


What do I do wrong by encoding the Yaw Pith Roll angles in to the rotation matrix? Could you give me any hint, how can I do this regarding the puma.robot.xml manipulator of the OpenRAVE library?


Best regards!

Vitaliy


------------------------------------------------------------------------------
Get 100% visibility into Java/.NET code with AppDynamics Lite!
It's a free troubleshooting tool designed for production.
Get down to code-level detail for bottlenecks, with <2% overhead.
Download for free and get started troubleshooting in minutes.
http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk
_______________________________________________
Openrave-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/openrave-users



------------------------------------------------------------------------------
Get 100% visibility into Java/.NET code with AppDynamics Lite!
It's a free troubleshooting tool designed for production.
Get down to code-level detail for bottlenecks, with <2% overhead.
Download for free and get started troubleshooting in minutes.
http://pubads.g.doubleclick.net/gampad/clk?id=48897031&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: IK generated rotation problem

Rosen Diankov
Administrator
hope this makes sense:

IkReal eetrans[3], eerot[9];
IkReal somejointvalues[6]={0}, freejoints[GetNumFreeParameters()]={0};

ComputeFk(somejointvalues, eetrans, eerot);
IkSolutionListBase<IkReal> solutions;
ComputeIk(eetrans, eerot, freejoints, solutions);


/**
   - ``eetrans`` - 3 translation values. For iktype **TranslationXYOrientation3D**, the z-axis is the orientation.
   - ``eerot``
   - For **Transform6D** it is 9 values for the 3x3 rotation matrix.
*/
IKFAST_API bool ComputeIk(const IkReal* eetrans, const IkReal* eerot, const IkReal* pfree, ikfast::IkSolutionListBase<IkReal>& solutions);

IKFAST_API void ComputeFk(const IkReal* joints, IkReal* eetrans, IkReal* eerot);




2013/8/7 Vitaliy Beguchiy <[hidden email]>

Hi Rosen,

 

thank you for your reply!

 

Can you tell me, how should I better build the rotation matrix R3x3 as an input for the ikfast solver I have generated with OpenRAVE?

 

Does OpenRAVE use the rotations about every frame axis in order to get the R3x3 matrix? So that such rotation matrix is achieved by the multiplying of every rotation step about every axis or there is something more, what I didn’t get yet?


Best regards!

Vitaliy




ikfast doesn't use euler angles anywhere....


Hi Rosen,

I generated the IK Solver cpp code for puma.robot.xml of the OpenRAVE library. I have had also integrated the cpp code in my own project, so I can get FK and IK and it works well.


The issue that I couldn’t solve till now is the orientation/direction of the TCP.

The generated cpp code requires an

r00 r01 r02 t0
r10 r11 r12 t1
r20 r21 r22 t2
0    0    0    1

matrix as parametrs. The last column ist the position of my TCP and the

r00 r01 r02
r10 r11 r12
r20 r21 r22

should be the orientation specified by the rotation matrix.


By using your fk function of the generated code by giving the joint angles of the manipulator it returns me the TCP position as x, y and z- components, such a matrix and three Euler angles Yaw, Pitch and Roll.


If I got that right, there should be a way to encode this three angles of the orientation into the rotation matrix:

r00 r01 r02
r10 r11 r12
r20 r21 r22.


I tried to do this through multiplying of three rotation matrixes about x, y and z-axis and parameterizing these rotation matrixes cosine and sine components this Yaw Pith Roll angles respectively. But I’m still receiving not the matrix, the fk function of your code does return.


So now I have the 6DOF kinematics without ability to control the direction of TCP, but just a position.


What do I do wrong by encoding the Yaw Pith Roll angles in to the rotation matrix? Could you give me any hint, how can I do this regarding the puma.robot.xml manipulator of the OpenRAVE library?


Best regards!

Vitaliy


------------------------------------------------------------------------------
Get 100% visibility into Java/.NET code with AppDynamics Lite!
It's a free troubleshooting tool designed for production.
Get down to code-level detail for bottlenecks, with <2% overhead.
Download for free and get started troubleshooting in minutes.
http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk
_______________________________________________
Openrave-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/openrave-users




------------------------------------------------------------------------------
Get 100% visibility into Java/.NET code with AppDynamics Lite!
It's a free troubleshooting tool designed for production.
Get down to code-level detail for bottlenecks, with <2% overhead.
Download for free and get started troubleshooting in minutes.
http://pubads.g.doubleclick.net/gampad/clk?id=48897031&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: IK generated rotation problem

begvit
Hi Rosen,

thank you for the explanation of API.

I am modelling a 6DOF robot arm manipulator in university project "Roboarm". I followed the tutorial http://openrave.programmingvision.com/wiki/index.php/Format:XML and have modelled my robot arm. The IKfast generating of type Transform6D was successfull and I could also use the API as well, but with some angles of TCP direction only.

There is still the same problem I was mentioned in last post:

I do create the rotation matrix to put it into the API as a multiplication of three rotation matrixes about Z, Y and X.

When I do perform some direction on TCP, which is applying the rotations of joints 3, 4 and 5 at the same time, the computed rotation matrix (as described above) is not the same as the rotation matrix of the FK result of the IK solver when I'm using the FK API to verify the TCP pose.

If any of the joints 3, 4 or 5 is in initial position (angle = 0) then the rotation matrix I did get with FK solver by giving the IK result to FK API is the same to the matrix I could compute with rotations multiplication about Z, Y and X.

Do I perform the creation of rotation matrix in a wrong way or may be my modell is unproperly defined?


The aim we are trying to achive:

We are trying to create the robot manipulator arm which do pocy the motion of a human arm. The copying of the motion doesn't go as a directly copying of a human arm joints, but just performing the same primitive action like pick & place. We do perform the capturing of the motions with 3D cam and implement our image processing routine on FPGA so it should work without PC at all. With Transform6D solution it would be a nice thing but we still have the rotation matrix problem.

best regards,
Vitaliy
  
 




Von: [hidden email] [[hidden email]]" im Auftrag von "Rosen Diankov [[hidden email]]
Gesendet: Mittwoch, 7. August 2013 16:24
An: Vitaliy Beguchiy
Cc: [hidden email]
Betreff: Re: [OpenRAVE-users] IK generated rotation problem

hope this makes sense:

IkReal eetrans[3], eerot[9];
IkReal somejointvalues[6]={0}, freejoints[GetNumFreeParameters()]={0};

ComputeFk(somejointvalues, eetrans, eerot);
IkSolutionListBase<IkReal> solutions;
ComputeIk(eetrans, eerot, freejoints, solutions);


/**
   - ``eetrans`` - 3 translation values. For iktype **TranslationXYOrientation3D**, the z-axis is the orientation.
   - ``eerot``
   - For **Transform6D** it is 9 values for the 3x3 rotation matrix.
*/
IKFAST_API bool ComputeIk(const IkReal* eetrans, const IkReal* eerot, const IkReal* pfree, ikfast::IkSolutionListBase<IkReal>& solutions);

IKFAST_API void ComputeFk(const IkReal* joints, IkReal* eetrans, IkReal* eerot);




2013/8/7 Vitaliy Beguchiy <[hidden email]>

Hi Rosen,

 

thank you for your reply!

 

Can you tell me, how should I better build the rotation matrix R3x3 as an input for the ikfast solver I have generated with OpenRAVE?

 

Does OpenRAVE use the rotations about every frame axis in order to get the R3x3 matrix? So that such rotation matrix is achieved by the multiplying of every rotation step about every axis or there is something more, what I didn’t get yet?


Best regards!

Vitaliy




ikfast doesn't use euler angles anywhere....


Hi Rosen,

I generated the IK Solver cpp code for puma.robot.xml of the OpenRAVE library. I have had also integrated the cpp code in my own project, so I can get FK and IK and it works well.


The issue that I couldn’t solve till now is the orientation/direction of the TCP.

The generated cpp code requires an

r00 r01 r02 t0
r10 r11 r12 t1
r20 r21 r22 t2
0    0    0    1

matrix as parametrs. The last column ist the position of my TCP and the

r00 r01 r02
r10 r11 r12
r20 r21 r22

should be the orientation specified by the rotation matrix.


By using your fk function of the generated code by giving the joint angles of the manipulator it returns me the TCP position as x, y and z- components, such a matrix and three Euler angles Yaw, Pitch and Roll.


If I got that right, there should be a way to encode this three angles of the orientation into the rotation matrix:

r00 r01 r02
r10 r11 r12
r20 r21 r22.


I tried to do this through multiplying of three rotation matrixes about x, y and z-axis and parameterizing these rotation matrixes cosine and sine components this Yaw Pith Roll angles respectively. But I’m still receiving not the matrix, the fk function of your code does return.


So now I have the 6DOF kinematics without ability to control the direction of TCP, but just a position.


What do I do wrong by encoding the Yaw Pith Roll angles in to the rotation matrix? Could you give me any hint, how can I do this regarding the puma.robot.xml manipulator of the OpenRAVE library?


Best regards!

Vitaliy


------------------------------------------------------------------------------
Get 100% visibility into Java/.NET code with AppDynamics Lite!
It's a free troubleshooting tool designed for production.
Get down to code-level detail for bottlenecks, with <2% overhead.
Download for free and get started troubleshooting in minutes.
http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk
_______________________________________________
Openrave-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/openrave-users




------------------------------------------------------------------------------
Get 100% visibility into Java/.NET code with AppDynamics Lite!
It's a free troubleshooting tool designed for production.
Get down to code-level detail for bottlenecks, with <2% overhead.
Download for free and get started troubleshooting in minutes.
http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk
_______________________________________________
Openrave-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/openrave-users

roboarm.hand.xml (2K) Download Attachment
roboarm.kinbody.xml (9K) Download Attachment
roboarm.robot.xml (2K) Download Attachment
Loading...