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 zaxis 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 
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 matrix as parametrs. The last column ist the position of my TCP and the r00 r01 r02 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
I tried to do this through multiplying of three rotation matrixes about x, y and zaxis 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 codelevel 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 _______________________________________________ Openraveusers mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/openraveusers 
Administrator

ikfast doesn't use euler angles anywhere.... 2013/8/7 Vitaliy Beguchiy <[hidden email]>
 Get 100% visibility into Java/.NET code with AppDynamics Lite! It's a free troubleshooting tool designed for production. Get down to codelevel 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 _______________________________________________ Openraveusers mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/openraveusers 
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....
 Get 100% visibility into Java/.NET code with AppDynamics Lite! It's a free troubleshooting tool designed for production. Get down to codelevel 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 _______________________________________________ Openraveusers mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/openraveusers 
Administrator

hope this makes sense: ComputeFk(somejointvalues, eetrans, eerot);IkReal eetrans[3], eerot[9]; IkReal somejointvalues[6]={0}, freejoints[GetNumFreeParameters()]={0}; IkSolutionListBase<IkReal> solutions; /**  ``eetrans``  3 translation values. For iktype **TranslationXYOrientation3D**, the zaxis 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]>
 Get 100% visibility into Java/.NET code with AppDynamics Lite! It's a free troubleshooting tool designed for production. Get down to codelevel 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 _______________________________________________ Openraveusers mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/openraveusers 
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: [OpenRAVEusers] IK generated rotation problem
hope this makes sense:
ComputeFk(somejointvalues, eetrans, eerot);IkReal eetrans[3], eerot[9]; IkReal somejointvalues[6]={0}, freejoints[GetNumFreeParameters()]={0}; IkSolutionListBase<IkReal> solutions; /**  ``eetrans``  3 translation values. For iktype **TranslationXYOrientation3D**, the zaxis 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]>
 Get 100% visibility into Java/.NET code with AppDynamics Lite! It's a free troubleshooting tool designed for production. Get down to codelevel 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 _______________________________________________ Openraveusers mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/openraveusers roboarm.hand.xml (2K) Download Attachment roboarm.kinbody.xml (9K) Download Attachment roboarm.robot.xml (2K) Download Attachment 
Free forum by Nabble  Edit this page 