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. Industrial Robot Support and Discussion Center
  4. KUKA Robot Forum
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

Chaining geometric operator

  • Hes
  • April 13, 2023 at 12:22 AM
  • Thread is Unresolved
  • Hes
    Reactions Received
    40
    Trophies
    2
    Posts
    238
    • April 13, 2023 at 12:22 AM
    • #1

    Hi,

    This might be a brainfart but left me wondering... I do not have access to OL or a robot at this moment so i currently have no way of testing this.

    If you chain geometric operators multiple times. What will the outcome be?

    Suppose you have an array of arbitrary frames lets say F[5].

    It is understood that understand that -> ThisWillShiftInBase:F[5]:ThisWillShiftInTool or as stated in the manuals: go to the point on the right side, in relation to the point on the left side. (My first thoughts from this statement is that geometric operator works from left to right, in other words and pseudocode, this happens first ThisWillShiftInBase:F[5] and the result of that is then appended by :ThisWillShiftInTool)

    But what becomes of F[1]:F[2]:F[3]:F[4]:F[5] ?

    Will F[4] be shifted in the tool frame once by F[5] and F[1]:F[2]:F[3] in base?

    Or will F[2] be shifted in base once by F[1] and F[3]:F[4]:F[5] in tool?

    You get the point..

    Is this even legal in krl?

    Can you put parentheses around which way you want the expression to evaluate? Eg. (F[1]:(F[2]:(F[3]:F[4]:F[5]))). I know it is possible to take the explicit result and shift it again with the geometric operator as many times as one wishes.

    I have not been able to find anything applicable in the latest SI manual that would quell these thoughts.

  • Online
    panic mode
    Reactions Received
    1,267
    Trophies
    11
    Posts
    13,037
    • April 13, 2023 at 3:27 AM
    • #2

    it will be a new frame representing combined transform of all used connected frames in order they are used. order does matter.

    if this is used to shift in base of tool frame depends on use - before or after point.

    when offset frame is inserted before point, its transform is applied to the base.

    when offset frame is inserted after point, its transform will be in tool coordinate system.

    you can do base shift using several frames like:

    Code
    xP100 = F[1]:F[2]:F[3]:F[4]:F[5]:xP1

    which is same as

    Code
    F[6]=F[1]:F[2]:F[3]:F[4]:F[5]
    xP100 = F[6]:xP1

    to shift in tool CS

    Code
    xP101=xP1:F[1]:F[2]:F[3]:F[4]:F[5]

    or

    Code
    F[6]=F[1]:F[2]:F[3]:F[4]:F[5]
    xP101=xP1:F[6]


    btw. for any frame

    F[I]:INV_POS(F[I])=$NULLFRAME

    and

    INV_POS[F[6])=INV_POS(F[1]:F[2]:F[3]:F[4]:F[5])=INV_POS(F[5]):INV_POS(F[4]):INV_POS(F[3]):INV_POS(F[2]):INV_POS(F[1])

    1) read pinned topic: READ FIRST...

    2) if you have an issue with robot, post question in the correct forum section... do NOT contact me directly

    3) read 1 and 2

  • MOM
    Reactions Received
    175
    Trophies
    7
    Posts
    1,419
    • April 13, 2023 at 10:47 AM
    • #3

    To do the calculations you do not need OL or robot.

    Quote from Hes

    But what becomes of F[1]:F[2]:F[3]:F[4]:F[5] ?

    The geometric operator doing two things and can be expressed:

    T[1]*T[2]T[3]*T[4]*T[5]

    ":" multiplication "*"

    Converting Frame to Transformationmatrix, doing the multiplication and reconvert result to frame

    Example:

    F[1]: $BASE

    F[2]: Frame relative to F[1]

    F: F[2] relative to $WORLD

    IN KRL:

    F = F1:F2

    or

    In Python:

    F = mat2frame(frame2mat(F1)*frame2mat(F2))

    It is always useful to make a little drawing:

    ----F[1]--->----F[2]--->

    -------------F------------>

  • Fubini
    Reactions Received
    272
    Trophies
    9
    Posts
    1,872
    • April 13, 2023 at 11:16 AM
    • #4

    And being it basically matrix multiplications using homogenous transformation matrices it does have Associative property - Wikipedia but not(!) Commutative property - Wikipedia. So F1:F2 is not equal to F2:F1 but (F1:F2):F3 is the same as F1:(F2:F3).

    Re: x_value of wrist root point

    Sorry the formatting of this post is no longer as it should be.

    Edit: Since the above link has been my first contribution to this forum I got sentimental :loudly_crying_face: and fixed formatting so it can be used again.

    Fubini

  • MOM
    Reactions Received
    175
    Trophies
    7
    Posts
    1,419
    • April 13, 2023 at 6:33 PM
    • #5

    Here a small example:

    IN order to do the inverse kinematics the FCS (Flange Coordinate System relative to $WORLD) is needed.

    To do the calculation I usually make a drawing first to identify the sequence of the multiplications

    In the first step the Tool Coordinate System relative to $WORLD will be calculated and gives:

    $BASE:FTCP (Triangle WCS-BCS-TCS)

    Now we have the Tool Coordinate System relative to $WORLD

    In the second step the Flange Coordinate System relative to $WORLB will be calculated.

    $TOOL goes from FCS to TCS. We need it the other way around (INV)

    The final result then will be $BASE:FTCP:INV($TOOL)

    (Triangle: WCS-TCS-FCS)

  • Hes
    Reactions Received
    40
    Trophies
    2
    Posts
    238
    • April 13, 2023 at 11:30 PM
    • #6

    kudos on the answers panic mode , MOM & Fubini , apparently as soon as someone mentions something matrix multiplication related the moderators gather around :grinning_face_with_smiling_eyes:

    The clue to understanding (to some extent) this puzzle was to not think of frames as just points in space with an orientation. When you think of them as vectors (that also carries an orientation as baggage) it makes a lot more sense how it actually works.

    If I am getting this right it is a relative point of view because, the point you are reaching to will align the used tools coordinate system perfectly with that point in space. Hence everything that follows : after that point is in line with the tool coordinate system and will make a shift in the tool coordinate system.

    so if you focus on F[3], blue is shift in tool and green in base

    F[1]:F[2]:F[3]:F[4]:F[5]

    ...if you focus on F[2], blue is shift in tool and green in base

    F[1]:F[2]:F[3]:F[4]:F[5]

    and this would be true for any other point in the sequence.

    I´ve been fiddling around with frames in python and found the robodk package on pypi which indeed is very helpful, what I haven´t found is a good way to visualize it, what do you use?

    as always a good answer will conjure even more questions, the linked topics and the discussion thus far has brought alot of "extra" knowledge that is still awaiting further digestion.

  • MOM
    Reactions Received
    175
    Trophies
    7
    Posts
    1,419
    • April 14, 2023 at 12:20 AM
    • #7

    A good tool in python is actually matplotlib.

    As mentioned earlier the best thing is to make a drawing to visualize. The drawing in post #5 was done with powerpoint.

    For KUKA robots THE initial coordinate system is the World coordinate system and all other coordinate systems are directly or indirectly depending on this coordinate system.

    I just wondering how your drawing would look like using F[1]:F[2]:F[3]:F[4]:F[5] (maybe FK?)

  • Online
    panic mode
    Reactions Received
    1,267
    Trophies
    11
    Posts
    13,037
    • April 14, 2023 at 1:06 AM
    • #8

    i also always do the drawing first. until i find better way to express it i draw arrows from and to different frames, then do the math. arrows in this case are not vectors but are simply used as means of keeping track...

    RoboDK is great at visualizing this. Just make a stack of frames one on top of another and adjust arrow size using keys+/-. To rename them use F2.

    By default RoboDK will add 1000mm to Y value so initially they look like this.

    if you reset them, they will all line up to a same place:

    and as you modify values they will move and turn.

    for example keeping initial arrangement and adding 250mm to F2.X give you this:

    So making only change to F2 causes rest of them to follow (F3,F4,F5 are moved as well)

    adding 30deg rotation about F3.Z then looks like this etc. you get the idea...

    1) read pinned topic: READ FIRST...

    2) if you have an issue with robot, post question in the correct forum section... do NOT contact me directly

    3) read 1 and 2

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
  • KRL
  • KUKA
  • motoman
  • Offset
  • PLC
  • PROFINET
  • Program
  • Programming
  • RAPID
  • robodk
  • 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
  • KRL
  • KUKA
  • motoman
  • Offset
  • PLC
  • PROFINET
  • Program
  • Programming
  • RAPID
  • robodk
  • roboguide
  • robot
  • robotstudio
  • RSI
  • safety
  • Siemens
  • simulation
  • SPEED
  • staubli
  • tcp
  • TCP/IP
  • teach pendant
  • vision
  • Welding
  • workvisual
  • yaskawa
  • YRC1000
  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