1. Home
    1. Dashboard
    2. Search
  2. Forum
    1. Unresolved Threads
    2. Members
      1. Recent Activities
      2. Users Online
      3. Team Members
      4. Search Members
      5. Trophys
  3. Articles
  4. Blog
  5. Videos
  6. Jobs
  7. Shop
    1. Orders
  • Login or register
  • Search
This Thread
  • Everywhere
  • This Thread
  • This Forum
  • Articles
  • Pages
  • Forum
  • Blog Articles
  • Products
  • More Options
  1. Robotforum - Support and discussion community for industrial robots and cobots
  2. Forum
  3. General Category - Robot Forum
  4. Robot Geometry, Linear Algebra, Forward and Inverse Kinematics
Your browser does not support videos RoboDK Software for simulation and programming
Visit our Mainsponsor
IRBCAM
Robotics Channel
Robotics Training
Advertise in robotics
Sponsored Ads

General conversion between different coordinate system types (KUKA, Fanuc, ABB, etc)

  • SkyeFire
  • January 7, 2022 at 5:36 PM
  • Thread is Unresolved
  • MOM
    Reactions Received
    176
    Trophies
    7
    Posts
    1,424
    • January 14, 2022 at 12:38 AM
    • #21

    Part 2

    To do frame arithmetic, frames do not really help! We need the transformation matrice.

    What do do?

    - let's call the reference coordinate system from previous post C0 

    - the Target Frame (or target coordinate sytem from previous post) coordinate system C1

    Checking the contents of Notepad we can (will) see:

    - translation (shift along the reference coordinate system - yellow part)

    - axes of the target coordinate system are divided into pieces of the reference coordinate system (blue part)

    By now we have a matrice with four columns and only three rows!

    For matrice multiplication we need a matrice 4x4

    The red marked row fullfill this requirement without changing the result of the matrice

    For this thread we are only have a look for the values in the blue field and there are some more restrictions:

    - coordinate system must follow the right hand rule (x:thumb, y: index finger; z: middle finger). There is also an easier way: draw x-axis horizonal, y-axis vertical (as learned at school) put a box with lower left corner to the origin of your xy-coordinate system and the upper left corner will show the z-direction (in my area z-axis would go up). You can check that by calculating the determint of the rotation matrice with a result of +1

    - the sum of x*x+y*y+z*z must be one; in word 1.0 - reason:radius of the sphere equals 1.0

    next part will be a closer look to the rotation matrice

    so long

  • Online
    Nation
    Typical Robot Error
    Reactions Received
    556
    Trophies
    9
    Posts
    1,937
    • January 14, 2022 at 3:35 AM
    • #22

    With the rotation matrix, is there ever a case where the bottom row would ever be anything but 0,0,0,1? I've heard of using this area to scale or skew a matrix, but never seen it in action.

    Also, what about left hand coordinate systems? I looked into using Unity to create a kinematic model of a robot, but found that it uses a left had coordinate system. Converting from right hand to left is pretty trivial for translations, but didn't look that easy for rotations. Like every other project I want to work on, I got swamped with work and it got put on the back burner.

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

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

  • MOM
    Reactions Received
    176
    Trophies
    7
    Posts
    1,424
    • January 14, 2022 at 10:58 AM
    • #23

    The matrix shown in post #21 is actually a transformation matrix (includes the blue, yellow and red fields). The matrix consists of 4 rows and 4 columns [mat4x4 or SE(3)]

    The rotation matrix is only the blue part [mat, mat3x3 or SO(3)]. For scaling you would use a mat3x3 like [[sx, 0, 0], [0, sy, 0],[ 0,0,sz]]

    The 4th row must always be 0,0,0,1! Otherwise there will be a different result.

    Left hand rule:

    Instead of using the right hand use the left hand (x:thumb, y: index finger; z: middle finger)

    Result:

    2 axes match, 3rd axis in opposite direction

    pictures in one of the next parts

  • MoEL
    Reactions Received
    5
    Trophies
    2
    Posts
    111
    • January 14, 2022 at 3:04 PM
    • #24

    I leave a message to follow this interesting thread.

  • MOM
    Reactions Received
    176
    Trophies
    7
    Posts
    1,424
    • January 15, 2022 at 6:19 PM
    • #25

    Part 3

    There are different ways to draw a coordinate system. Here is the example on how I do it

    Adding up the squares in a row or column the result must be 1

    Coordinate System follow which rule ? Right Hand Rule (RHR) or Left Hand Rule (LHR)


    By comparing the coordinate systems K0-K1 and KO-K2 the rotation matrices are created and then checked for RHR or LHR.

    In order t create a LHR out of RHR you need to inverse either one or all axes

  • Online
    SkyeFire
    Reactions Received
    1,061
    Trophies
    12
    Posts
    9,463
    • January 17, 2022 at 4:34 AM
    • #26

    Gahhh... I was hoping to sit down and dig into this this weekend, but I ended up having to make two 400-mile road trips back to back.

  • MOM
    Reactions Received
    176
    Trophies
    7
    Posts
    1,424
    • January 17, 2022 at 11:53 PM
    • #27

    Part 4

    Elementary rotations

    In the past we created a rotation matrix by comparing the target coordinate system with the reference coordinate system.

    This time we will use another way to create this matrices

    X- Rotation:

    The x rotation is not changing the position of the x-axis (shown as red numbers).

    According to the tool kit:

    x: out (positive rotation direction CCW); y: right ;z: up

    2nd column: projection of y'-axis to y-axis (cos(angle) and z-axis (sin(angle))

    3rd column: projection of z'-axis to z-axis (-sin(angle) and z-axis (cos(angle))


    Y- Rotation:

    The y rotation is not changing the position of the y-axis (shown as red numbers).

    According to the tool kit:

    y: in (positive rotation direction CW); x: right ;z: up

    1st column: projection of x'-axis to x-axis (cos(angle) and z-axis (-sin(angle))

    3rd column: projection of z'-axis to x-axis (sin(angle) and z-axis (cos(angle))


    Z- Rotation:

    The z rotation is not changing the position of the z-axis (shown as red numbers).

    According to the tool kit:

    z: out (positive rotation direction CCW); x: right ;y: up

    1st column: projection of x'-axis to x-axis (cos(angle) and y-axis (sin(angle))

    2nd column: projection of y'-axis to x-axis (-sin(angle) and y-axis (cos(angle))

    Now the bad news:

    For combined rotations you have to use matrix multiplications and this has to be done in a certain sequence

    Good news:

    There are only 24 combinations

  • MOM
    Reactions Received
    176
    Trophies
    7
    Posts
    1,424
    • January 18, 2022 at 2:50 AM
    • #28

    Part 5

    In my last part I promised you 24 combinations, here they are

    As technician I always start with the worst case scenario.

    Taking the gray ones out will end up with 12 combinations!

    (they are just the inverse of the blue or orange ones)

    So, take the blue or orange ones and just put the calculated angles in reverse order (instead of a1,a2 and a3 just bring them up as a3, a2 and a1)

    After I checked all the conversions there will another reduction - more in the next part

    By the way: if you find any errors - keep them - I have plenty of them

  • Jeremy RoboDK
    Reactions Received
    17
    Trophies
    3
    Posts
    75
    • January 19, 2022 at 2:00 PM
    • #29

    Sorry, I'm a bit late to the party, but if you install RDK you will get our Python library where you can find the algorithms/code we use to convert from one Euler format to the other.

    C:/RoboDK/Python/robodk.py

    Ctrl-F -> "def Pose_2_"

    You will find Pose_2_ABB, Pose_2_Kuka, etc.
    And pose to Pose_2_TxyzRxyz

    Hope it helps.

    Jeremy

    RoboDK - Simulation and Offline programming software for industrial and collaborative robots.

    Visit us at RoboDK.com
    Take a look at our tutorial videos on our YouTube channel.

  • MOM
    Reactions Received
    176
    Trophies
    7
    Posts
    1,424
    • January 22, 2022 at 1:01 AM
    • #30

    Final Report - Part 1

    For me it was very interesting to find an answer for the question

    Quote from SkyeFire

    So, here's a question: is there a general-use tool for converting coordinates from any robot brand to any other? XYZ is obviously XYZ, but every brand uses a different Euler angle sequence -- KUKA uses Rz-Ry'-Rx", Fanuc uses Rx-Ry'-Rz", Kawasakis use (used to use?) Rz-Ry'-Rz", and of course ABB uses quaternions....

    There is actually no tool to answer ALL of your questions

    Quote from SkyeFire

    In fact, I'd be even more interested in a set of algorithms, or even a useable rule set, that I could use to write a script of my own, and/or could implement at will in different languages. A simple tool would be nice, but the ability to write my own reliable converter would be best. Especially when some obscure or new brand shows up that uses a completely unique Euler sequence (given that there are over 30 different valid Eulers....)

    In one of these posts you will find an algorithm to solve all of your problems

    (I also would like to understand why and how)

    Quote from SkyeFire

    I've seen some books lay out the formulae for converting a particular robot's coordinates to/from a matrix, and I know that doing so is a key part of doing the conversion, but every book only ever concentrates on a single "brand" of coordinates. I've never seen the conversion process all assembled and explained across all types.

    so, here is the answer to the question:

    Key is the Rotation Matrix

    In Final Report - Part 2

    I will show you the results

    In Final Report - Part 3

    I will give you some useful links

    Afterwards Thread from my side is closed

    (I will answer questions)

  • MOM
    Reactions Received
    176
    Trophies
    7
    Posts
    1,424
    • January 24, 2022 at 6:23 PM
    • #31

    In Final Report - Part 2


    checking for needed transformation matrices and made the calculations

    results as expected

    Now the idea

    For one robot the transformation matrix will be created

    This transformation matrix then will be used to calculate the poses for the other robots

    And here are the results:


    For new robots check what type of transformation matrix is used (maybe already available) and the routtine for recalculating the angles

  • MOM
    Reactions Received
    176
    Trophies
    7
    Posts
    1,424
    • January 28, 2022 at 8:14 PM
    • #32

    @SkyFire

    are all your questions answered and you are happy with the results?

  • MOM
    Reactions Received
    176
    Trophies
    7
    Posts
    1,424
    • January 28, 2022 at 8:33 PM
    • #33

    For all:

    I have a little queston:

    I set angle rot.y to 180.0 degrees

    What is the answer you get?

    This information would be very helpful and also the name of the rotations (rot.z e.g. (KUKA "A", ABB "EZ")

    Thank You very much in advance

  • Online
    SkyeFire
    Reactions Received
    1,061
    Trophies
    12
    Posts
    9,463
    • January 29, 2022 at 2:46 PM
    • #34
    Quote from MOM

    @SkyFire

    are all your questions answered and you are happy with the results?

    Still working weekends.

  • MOM
    Reactions Received
    176
    Trophies
    7
    Posts
    1,424
    • February 26, 2022 at 9:16 PM
    • #35

    This was actually very intersting for me, so I am (still) working on that:

    my results so far:

    That's it so far!

    my first prototype

    If you have any suggestions - tell me

  • Online
    Nation
    Typical Robot Error
    Reactions Received
    556
    Trophies
    9
    Posts
    1,937
    • February 27, 2022 at 4:59 AM
    • #36

    Looks good. What are you using to generate the UI?

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

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

  • MOM
    Reactions Received
    176
    Trophies
    7
    Posts
    1,424
    • February 27, 2022 at 7:57 AM
    • #37

    MahApps.Metro and C#

  • MOM
    Reactions Received
    176
    Trophies
    7
    Posts
    1,424
    • March 3, 2022 at 5:43 PM
    • #38

    Now I am much closer

  • Online
    SkyeFire
    Reactions Received
    1,061
    Trophies
    12
    Posts
    9,463
    • March 3, 2022 at 5:45 PM
    • #39

    Great Googly Moogly! I've created a monster! :icon_eek: :toothy9:

    :respect: :guru:

  • Online
    Nation
    Typical Robot Error
    Reactions Received
    556
    Trophies
    9
    Posts
    1,937
    • March 3, 2022 at 11:32 PM
    • #40

    Wow, that is awesome! I really like the 3D display. Its something I would like to implement eventually in my programs, but haven't gotten around to it.

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

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

Advertising from our partners

IRBCAM
Robotics Channel
Robotics Training
Advertise in robotics
Advertise in Robotics
Advertise in Robotics

Job Postings

  • Anyware Robotics is hiring!

    yzhou377 February 23, 2025 at 4:54 AM
  • How to see your Job Posting (search or recruit) here in Robot-Forum.com

    Werner Hampel November 18, 2021 at 3:44 PM
Your browser does not support videos RoboDK Software for simulation and programming

Tag Cloud

  • abb
  • Backup
  • calibration
  • Communication
  • CRX
  • DCS
  • dx100
  • dx200
  • error
  • Ethernet
  • Ethernet IP
  • external axis
  • Fanuc
  • help
  • hmi
  • I/O
  • irc5
  • IRVIsion
  • karel
  • kawasaki
  • KRC2
  • KRC4
  • KRC 4
  • krc5
  • KRL
  • KUKA
  • motoman
  • Offset
  • PLC
  • PROFINET
  • Program
  • Programming
  • RAPID
  • roboguide
  • robot
  • robotstudio
  • RSI
  • safety
  • Siemens
  • simulation
  • SPEED
  • staubli
  • tcp
  • TCP/IP
  • teach pendant
  • vision
  • Welding
  • workvisual
  • yaskawa
  • YRC1000

Thread Tag Cloud

  • abb
  • Backup
  • calibration
  • Communication
  • CRX
  • DCS
  • dx100
  • dx200
  • error
  • Ethernet
  • Ethernet IP
  • external axis
  • Fanuc
  • help
  • hmi
  • I/O
  • irc5
  • IRVIsion
  • karel
  • kawasaki
  • KRC2
  • KRC4
  • KRC 4
  • krc5
  • KRL
  • KUKA
  • motoman
  • Offset
  • PLC
  • PROFINET
  • Program
  • Programming
  • RAPID
  • roboguide
  • robot
  • robotstudio
  • RSI
  • safety
  • Siemens
  • simulation
  • SPEED
  • staubli
  • tcp
  • TCP/IP
  • teach pendant
  • vision
  • Welding
  • workvisual
  • yaskawa
  • YRC1000

Tags

  • coordinate
  • coordinates
  • Euler Angles
  • Conversion
  1. Privacy Policy
  2. Legal Notice
Powered by WoltLab Suite™
As a registered Member:
* You will see no Google advertising
* You can translate posts into your local language
* You can ask questions or help the community with your knowledge
* You can thank the authors for their help
* You can receive notifications of replies or new topics on request
* We do not sell your data - we promise

JOIN OUR GREAT ROBOTICS COMMUNITY.
Don’t have an account yet? Register yourself now and be a part of our community!
Register Yourself Lost Password
Robotforum - Support and discussion community for industrial robots and cobots in the WSC-Connect App on Google Play
Robotforum - Support and discussion community for industrial robots and cobots in the WSC-Connect App on the App Store
Download