# Position Converter - Convert from XYZWPR Rep to Joint Rep and Back

• How does that work? I'm not sure we're using the same terminology here -- I know that when I'm programming a Fanuc vs a KUKA, and using my hand to work out what angles I need to use, I have to rotate in completely different sequences.

Its a property of extrinsic (always rotating about world frame) vs intrinsic (rotating about the frame created from the previous rotation (the ' and '' notations)) Euler rotations.

To quote the wiki article on it:

Any extrinsic rotation is equivalent to an intrinsic rotation by the same angles but with inverted order of elemental rotations, and vice versa. For instance, the intrinsic rotations x-y’-z″ by angles α, β, γ are equivalent to the extrinsic rotations z-y-x by angles γ, β, α.

Check out the Fanuc position converter I wrote here! Now open source!

Check out my example Fanuc Ethernet/IP Explicit Messaging program here!

• Ah! That explains it. I've only ever worked in the intrinsic context, b/c that's how all the normal robot coding works.

• I've updated the position converter to v1.1.

Changes:

Added support for R2000iB/210F and the 165F.

Added the ability to convert on robots with multiple groups. However only GP1 will convert.

Check out the Fanuc position converter I wrote here! Now open source!

Check out my example Fanuc Ethernet/IP Explicit Messaging program here!

• Hi,

Yes they are. However, we are both right! Rx - Ry' - Rz'' is equivalent to Rz - Ry - Rx.

probably not

Kuka is using Rz - Ry' - Rx"

in accordance to the quote - it is not the same

For technichians it is the best way always rotate around the new coordinate system (right/(left) hand rule)

I am using the right hand rule with my left hand; so I can use my right hand for the direction of rotation.

The math will have slight differences from a conversion done on the Fanuc controller vs a conversion done by this program. Typically the differences are in the order of hundredths to thousandths of a millimeter

yes, agree you are completely off - what's about the angles?

When I made first comparison between the robot reading and my values I was off about the same.

After adjusting (PI, atan_2, etc.) I got almost the same values (off about 0.00001 mm or deg)

There is actually not only one set of DH Parameter (for kuka there are at least 4 sets)

• probably not

What. Did you even read the wiki article I referenced? This is a mathematical concept that that has been proven. Extrinsic rotations of a particular order are the same as Intrinsic rotations with the order reversed. We were not discussing the order of rotations a particular robot uses.

yes, agree you are completely off - what's about the angles?

Angles are typically fine. "Completely off" is a bit of a strech here. Being off by a few microns on a robot not capable of repeating ten times the error my program introduces is a non issue. I don't feel like chasing down rounding errors in Fanuc's or my code when it produces the results I want within an acceptable margin of error.

Check out the Fanuc position converter I wrote here! Now open source!

Check out my example Fanuc Ethernet/IP Explicit Messaging program here!

• Hi,

yes, agree you are completely off - what's about the angles?

Your quote: typically the differences are in the order of hundredths to thousandths of a millimeter

to be honest - could be better

Yes they are. However, we are both right! Rx - Ry' - Rz'' is equivalent to Rz - Ry - Rx.

This is correct - but not working for kuka

Kuka is using Rz - Ry' - Rx"

in accordance to the quote - it is not the same

We were not discussing the order of rotations a particular robot uses.

This I missed, sorry

• I think 1 hundredth of a mm is more than adequate for any industrial robotic application, and I have had to deal with some very demanding applications.

• I agree, normally distance of better than 0.01 mm is very good. But I also asked about degree.

Althogether Nation did and still doing a very good job.

If anyone had the idea, that I want to blame him - I am very sorry, this was never the case.

He even encouraged me to work more on the robot models (ABB, FANUC, KUKA) in order to get a better understanding of the differences.

regards

MOM

• This is a really cool. I understand the overview that you provided, but will need to brush up my linear algebra to understand how the nuts and bolts are actually put together. Thank you for sharing it with us.

• Hello,

I just want to know how did you do that freeware? which tool or software did you use? I want to do one application too.

Regards

• I used visual studio 2019 community edition, and just wrote everything in C#.

I used roboguide to verify the results, and to generate the test programs.

Check out the Fanuc position converter I wrote here! Now open source!

Check out my example Fanuc Ethernet/IP Explicit Messaging program here!

• Hi Nation I am trying to run the program and it is also showing that the program can not find version.dg (I did an all of the above backup of the MD) I tried looking for the file on the robot itself and I don't seem to be able to find the file there either. Is there a way for me to bypass this step and enter the values manually?

• I’m in the process of learning the kinematics. It looks like you wrote this in c#. Would you be willing to share source code so I could use it to help me understand the process?

• I’m in the process of learning the kinematics. It looks like you wrote this in c#. Would you be willing to share source code so I could use it to help me understand the process?

Sure. I've made it open source. Not the greatest code or organization, but you can view it on github.

IK Conversion is done here.

Check out the Fanuc position converter I wrote here! Now open source!

Check out my example Fanuc Ethernet/IP Explicit Messaging program here!