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

Robot World Frame

  • robocoder
  • February 25, 2024 at 5:50 PM
  • Thread is Unresolved
  • robocoder
    Reactions Received
    5
    Trophies
    3
    Posts
    51
    • February 25, 2024 at 5:50 PM
    • #1

    Hi!

    I am trying to understand the relation between the world frame and $ROBROOT. I currently use KUKA.Sim to experiment and have placed the robot on a 400mm high booster frame. To make the world coordinates more intuitive I have moved the Robot World Frame down by 400 mm (the height of the booster frame) so that the robot has positive Z values from the floor up. If I understand this correctly, $ROBROOT should then be moved up by 400mm (in Mada\machine.dat) so that it ends up in the robot base where it should be and not on the floor level where the World Frame is defined. Is this correct or do I misunderstand something? KUKA.Sim will not allow me to change $ROBROOT however, it will immediately change Z back to 0 when starting the simulation. Also, what will happen in practice if $ROBROOT is not moved back to the robot base?

    Thanks!

  • Hes
    Reactions Received
    38
    Trophies
    2
    Posts
    235
    • February 25, 2024 at 6:28 PM
    • #2

    $ROBROOT should always be held in place. $WORLD can be shifted if required. Especially if robot is mounted upside down or similar. Relationship is always $ROBROOT -> $WORLD -> Base..

    I see no reason to ever fiddle with robroot.

  • robocoder
    Reactions Received
    5
    Trophies
    3
    Posts
    51
    • February 25, 2024 at 10:18 PM
    • #3

    If the World-coordinates are shifted, both $WORLD and $ROBROOT will still be at {0 0 0 0 0 0} or $NULLFRAME which to me indicates $ROBROOT is moved along with $WORLD. Unless $WORLD and World-coordinates are not the same (World-coordinates are relative to $WORLD). $ROBROOT is the only one that is possible to change in machine.dat as $WORLD is write protected.

    Edited once, last by robocoder (February 25, 2024 at 10:45 PM).

  • MOM
    Reactions Received
    175
    Trophies
    7
    Posts
    1,418
    • February 25, 2024 at 10:21 PM
    • #4

    Actually the World Coordinate System is fixed by $WORLD = $NULLFRAME (both frames are write protected).

    $ROBROOT defines the frame going from Word Coordinate System to the Robot Coordinate System.

    Therefore the correct relationship would be

    Robot Coordinate System <== World Coordinate System ==> Base Coordinate System

    I do not know too much about KUKA.Sim, but I would guess by just changing the Z-Value from $ROBROOT would be a flying robot. Maybe you would need to set the robot on top of a platform

  • robocoder
    Reactions Received
    5
    Trophies
    3
    Posts
    51
    • February 26, 2024 at 12:27 AM
    • #5

    Yes, on top of a booster frame or pedestal as explained that is 400 mm high. Then moving the robot world frame down by 400 and by what you are saying I believe it would therefore be correct to set $ROBROOT to { 0 0 400 0 0 0 }?

  • panic mode
    Reactions Received
    1,262
    Trophies
    11
    Posts
    13,027
    • February 26, 2024 at 12:39 AM
    • #6

    correct...

    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

  • robocoder
    Reactions Received
    5
    Trophies
    3
    Posts
    51
    • February 26, 2024 at 1:30 AM
    • #7

    Thanks for clarifying! :smiling_face: I did not see any noticeable difference in KUKA.Sim when not moving $ROBROOT after setting the world-frame. Will there be any noticeable difference in practice?

  • panic mode
    Reactions Received
    1,262
    Trophies
    11
    Posts
    13,027
    • February 26, 2024 at 1:55 AM
    • #8

    just created new program, added P1 as motion with tool 0, base 0 (world) and touched it up when robot was at home.


    then run program and it just zips through since all points are same...


    then modified $ROBROOT by adding 900mm to Z (just for fun). the nice thing is one can do this change without reboot:

    then i run the same program again. this time P1 is not the same as home since P1 is tied to world that is sunk by 900mm.

    home position is the "cannon" since axis specific, but the added motion to P1 moved robot down, as if robot was on 900mm pedestal

    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

  • robocoder
    Reactions Received
    5
    Trophies
    3
    Posts
    51
    • February 26, 2024 at 2:07 AM
    • #9

    Thank you very much for the explanation! I believe I understand how this works now :grinning_squinting_face:

  • panic mode
    Reactions Received
    1,262
    Trophies
    11
    Posts
    13,027
    • April 7, 2025 at 11:28 PM
    • #10

    of course since you never select any base.

    your P1 motion refers to WORLD.

    try changing that to Base 1 for example and see how your program runs when Base 1 is changed to a different value.

    for example, test with values such as:

    {X 0, Y 0, Z 0, A 0, B 0, C 0} ; default (this is what you see now)

    {X 0, Y 0, Z 200, A 0, B 0, C 0} ; base lifted up by 200mm

    {X 300, Y 0, Z 0, A 0, B 0, C 0} ; base moved away by 300mm

    {X 0, Y 0, Z 0, A 20, B 0, C 0} ; base rotated about Z axis

    {X 0, Y 0, Z 0, A 0, B 10, C 0} ; base rotated about Y axis

    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

  • panic mode
    Reactions Received
    1,262
    Trophies
    11
    Posts
    13,027
    • April 7, 2025 at 11:30 PM
    • #11

    and not sure why you are trying to manipulate $ROBROOT. this should never change in program. the only time this is assigned value is when kinematics is mounted "elsewhere" (robot arm mounted on wall, or ceiling or on KL rail...)

    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

  • Online
    jaiiyer
    Reactions Received
    15
    Trophies
    2
    Posts
    90
    • April 8, 2025 at 1:45 AM
    • #12
    Quote from panic mode

    and not sure why you are trying to manipulate $ROBROOT. this should never change in program. the only time this is assigned value is when kinematics is mounted "elsewhere" (robot arm mounted on wall, or ceiling or on KL rail...)

    Thanks as always.... I was trying to understand what $ROBROOT does so I was just playing around in KUKA.SIM but yes as per what you said I cant change $ROBROOT like that. For changing robroot I had to change it using "Move Robot World Frame". We are doing that because at times we have our robot mounted on a 15 degree plane, and when we use WORLDFRAME to job in Z it jogs in 15 degree angle rather than up and down because of how its mounted so we were seeing how we could change this so that worldframe z is always perpendicular to the ground


  • funnyguyjake
    Posts
    3
    • April 8, 2025 at 4:36 PM
    • #13

    Did some testing with this yesterday on a physical KR10 R1100-2 HO robot and Jaiiyer was on the phone testing it in Kuka Sim. Just wanted to share some results.

    1. On the physical robot the easiest way we found to update "how the robot is positioned" is in WorkVisual under Machine data configuration there is a Cell parameters > Root point that sets the XYZ position, ABC rotation and how the base is mounted Floor Wall Ceiling.

    2. In Root point we offset the Z up 500mm and tipped it at an angle to of B:22deg to represent a project we are working on.

    3. After deploying this change, we got a safety configuration activation code error and a safety stop. To clear this we did a cold start (reload files), and then go into the pendant under Configuration> Safety Configuration and accepted the safety configuration change

    4. At this point the robot targets previously touched up were lower (as Panic Mode demonstrated earlier) and rotated from the base rotation.

    We went and looked at $ROBROOT and it has the same offsets that we set in the Cell parameters >Root point. We also checked $WORLD and it was all zeros as expected.

    Previously we tried putting values directly in $ROBROOT.Z from the pendant Variable > Single and it acted as though it was write protected. and gave the information/warning Z variable write -protected (Taskname: KFI). My guess is it has to recompile the motion planner when changing the base position of the robot and this requires a cold start.


    jaiiyer feel free to add to this, or correct me.
    In KukaSim we tried to overwrite the $ROBROOT as Jai showed in a previous post and it was wiped out each time we started the program.

    We got it to work by clicking on the MoveWorldframe button at the top of the main page, and we were able to move the worldframe down -500mm.

    When we ran the program and the points appeared to be lower, $World was at all zeros and $ROBROOT was at Z+500.


    Two quick takeaways on this topic:

    Why you’d want to do this:
    We’re doing this on a current project because our robot base is elevated and tilted at 22° to improve reach.

    1. Setting the robot base to match these parameters allows for intuitive jogging in World Coordinates—for example, +Z aligns with the physical floor.

    2. Physical floor is zero so that everything in the cell is in the +Z space.

    3. If your robot base is tilted or rotated in a way that doesn’t match the rest of your physical cell, adjusting the base settings lets your World Coordinates align with your actual workspace. This is especially helpful when setting up multiple base frames, as their positions will use intuitive, straightforward values instead of being skewed by the robot base’s orientation.

    I am of course open to correction and questions.

    Edited once, last by funnyguyjake (April 8, 2025 at 4:44 PM).

  • Online
    SkyeFire
    Reactions Received
    1,038
    Trophies
    12
    Posts
    9,371
    • April 8, 2025 at 5:08 PM
    • #14
    Quote from funnyguyjake

    Previously we tried putting values directly in $ROBROOT.Z from the pendant Variable > Single and it acted as though it was write protected.

    It is write-protected. $ROBROOT is always the bottom center of the robot arm.

    For a robot with no unusual kinematics, $WORLD and $ROBROOT are always the same by default. A wall-mounted robot should have a 90deg difference between them, and a ceiling-mount robot should have a 180deg difference. But this is part of the robot setup, not something changed programatically. In $WORLD, Z+ should always be antiparallel to gravity, as this is part of how the robot calculates the effects of $LOAD.

    For a robot with certain kinds of external kinematics (say, robot mounted on an external axis), $ROBROOT moves with the base of the robot, while $WORLD is located where $ROBROOT is when the external axis is at 0.

    $BASE is always an offset from $WORLD.

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

Similar Threads

  • Frame mismatch not functioning when point in world

    • Nation
    • February 14, 2024 at 10:06 PM
    • Fanuc Robot Forum
  • 3rd party software

    • AlejandroOrtiz
    • June 29, 2023 at 4:47 AM
    • General Discussion of Industrial Robots Only
  • Can't Program in an active user Frame

    • REC TECH
    • February 23, 2021 at 8:25 PM
    • Fanuc Robot Forum
  • How to do RTCP jog rotation around an axis in a TP program?

    • hoitzing
    • May 4, 2023 at 4:31 PM
    • Fanuc Robot Forum
  • iRVision - Create User Frame based on Part Detection

    • AlexMac
    • March 23, 2023 at 12:25 AM
    • Fanuc Robot Forum
  • KUKA base transformation not accurate enough

    • PauBot
    • November 7, 2022 at 5:59 PM
    • KUKA Robot Forum
  • Nullframe base rotation

    • Mr Marcus
    • May 16, 2022 at 1:33 PM
    • KUKA Robot Forum
  • Make tool frame same as world frame

    • jsd5
    • March 4, 2021 at 8:25 PM
    • Fanuc Robot Forum
  • Reverse-Engineering KRC2 multi-axis config

    • SkyeFire
    • June 1, 2020 at 5:32 PM
    • KUKA Robot Forum

Tags

  • BASE
  • frame
  • world frame
  • #KUKA
  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