VAL3 = ! Cartesian

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

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

Advertising from our partners