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. Stäubli & Bosch 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

VAL3 = ! Cartesian

  • Martinator5000
  • May 15, 2019 at 1:36 PM
  • Thread is Resolved
  • Martinator5000
    Trophies
    3
    Posts
    1
    • May 15, 2019 at 1:36 PM
    • #1

    Hello,

    I have found some VAL3 code which calculates a TCP from 4 points. Previously of acquiring this code already had figured out how I could calculate the center of a sphere. I am wondering how to calculate the TCP using this center and the 4 points. Attached is the code from Staubli where the TCP is calculated. Below is the piece of code that I don't understand.

    //Inverse sphere * center
    for l_nI=0 to 3
    trTempTool[l_nI]=!trSphere[l_nI]*trCenter

    In my understanding, trSphere is a Cartesian value which is equal to one of the 4 points. The ! inverts this value. My question is: Is this correct? If so, how do you invert a Cartesian?

    I hope someone can help me with this problem.

    Files

    calcTool4p7En.zip 21.9 kB – 24 Downloads
  • TygerDawg
    Reactions Received
    6
    Trophies
    3
    Posts
    187
    • May 17, 2019 at 5:13 PM
    • #2

    I'm not at a place where I can draw a picture. But I'll attempt to explain.

    First: trSphere is not a "cartesian value", it is a coordinate transform. There's a difference. Fundamental definition: in a 3D space you will have a coordinate system. Commonly is a Cartesian coordinate system, but can be resolved into other types of coordinate systems. The base frame coordinate system consists of three translation values (X, Y, Z) and three rotation values (RX, RY, RZ). These define the location of the base frame and its orientation. Any point in that 3D space is defined by essentially duplicating the base frame coordinate system and transforming it to another location and another orientation. Fundamental.

    For this situation you must visualize the following:


      • a robot base frame coordinate system (all points are defined in, and relative to, this BASE frame)

      • a reference pointer has been mounted in the work cell for teaching a static and temporary reference point that will be used in the calculation for the EOAT transform. It may not be a physical reference pointer, but a consistent and repeatable work piece location that is touchable with a pointer or the new EOAT tool center point

      • A teaching pointer is attached to the robot, usually with only a tool-Z value. This is used to teach the cell reference location, sort of like using the robot as a CMM. In this case, trCenter.

      • Mount the new EOAT and invoke the NULL tool.

      • touch the new EOAT working point (torch tip, cutter tip, and whatever) to the trCenter reference pointer or work cell location

      • Around the trCenter transformation location, visualize the surface of a spherical volume. The radius of the sphere is the straight line distance from the new EOAT TCP at trCenter to the robot tool flange while the new unknown EOAT is mounted. Using the sphere method, one can touch multiple times and record temporary transform values on the surface of the sphere

      • Visualize the cell reference pointer, the tool flange face, and the robot base each with a coordinate system. I usually draw each coordinate system in arbitrary orientations to emphasize how the transform math works.

      • Draw a curved line with arrowhead from BASE coord sys to trCenter coord sys. This represents the coordinate transform (NOT a vector!) of the cell reference location trCenter relative to BASE

      • Draw also trSphere transform from BASE to tool flange coord sys (trSphere). This represents the current location of the tool flange (not the EOAT tool transform because this is not known yet)

      • Draw also trTempTool transfrom arrow from tool flange coord sys (trSphere) to reference point (trCenter). This represents the new EOAT tool transform that is desired but not yet known.

      • The transform value of trTempTool is calculated (as explained in the other post I made) by trTempTool = !(trSphere)*trCenter or trTempTool is the inverse of the tool flange location transform relative to the reference pointer transform

      • One way I visualize this (which purists will probably freak out over) is when you calculate the inverse of trTempTool relative to (*) trCenter, you are "moving" the BASE coordinate system to the tool flange. This might not be the mathematically-rigorous explanation, but it works for me.

    Doing this four times and performing the calculations behind the scenes is a method to teach arbitrary tool transforms without this knowledge.

    TygerDawg

    Blue Technik

    http://www.bluetechnik.com

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
  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