- Starting the function
- Move / rotate
- Align orientation to a point
- Mirror (same robot, left / right robot)
- Assumptions of the mirror
- Preview, check and write
- Undo
- API
- Limits and licence
Select the points in the point table (one or more, Ctrl / Shift + click) and choose Transform points... in the context menu. The window shows the selected points; all settings act on exactly these points. Only points that are used in a motion of the program can be transformed, because the TOOL and BASE (Fanuc: UT and UF) of the motion define the frame of the point. The menu also has Undo last points transform (see Undo).
VKRC and Fanuc programs are supported. For KRC, ABB and Yaskawa programs the function answers that it is not available yet.
▲ Move / rotate
Operation: Move / rotate shifts the points by X, Y, Z (mm) and rotates them by the angles Rz, Ry, Rx (degrees; the rotation is Rz · Ry · Rx). The Frame defines the axes of the shift and the rotation:
- BASE of the point (Fanuc: UF) - the base of the motion of each point,
- WORLD - the world frame of the cell,
- TOOL of the point (Fanuc: UT) - the tool of each point, i.e. the shift is made in the direction of the tool axes,
- Custom frame - given as values (X Y Z and rotations in WORLD) or by three points: origin, a point on the +X axis and a point in the XY plane.
▲ Align orientation to a point
Operation: Align orientation to a point gives all selected points the orientation of a reference point. The positions stay unchanged. Useful when a group of points should be approached with the same tool attitude.
▲ Mirror
Operation: Mirror mirrors the points about a plane (XZ, YZ or XY of the frame) at the distance Plane offset. The plane can be given in the BASE of the point, in WORLD or in a custom frame (not in TOOL).
Mode
- Same robot - the pose of the TCP is mirrored about the plane and written back in the frame of the point (R' = Rm · R · M). The offset is measured from the origin of the frame.
- Left / right robot (mirrored twin) - the points are calculated for the twin robot that stands mirrored in the cell: the pose is taken through the cell world, mirrored (matrix N of the plane) and written in the BASE of the twin: T' = BASE'-1 · N · (ROB · BASE · T) · M, which is N · T · M for an exact mirror. The offset is the position of the plane in the cell world (e.g. the mean value of Y of the two robots for an XZ plane). Optionally you enter the position of this robot and of the twin robot in the cell (X Y Z and A B C like $ROBROOT); they matter only for BASE 0 and for twins that are not an exact mirror (a rotation difference of a few degrees between the two robots is typical). Without them the twin stands exactly mirrored.
Configuration after the mirror:
- Mirrored (default) - KUKA: S unchanged, the bits of A1, A4 and A6 in T are inverted (T xor 41, e.g. T59 becomes T18); Fanuc: the configuration is derived from the axes J1, J4, J6 with the sign changed. Joint points (Fanuc J[]) get J1, J4 and J6 negated and are written as axes.
- Keep the configuration of the point - S/T (CONFIG) is left as it is; the axes are then not checked for the left / right robot (status not checked).
▲ Assumptions of the mirror
The mirror of the twin robot is a calculation with these assumptions:
- The BASE of the twin is the mirrored base: BASE' = N · BASE · N in the world (points with BASE_NO <> 0), or the root of the twin robot (ROBROOT) for BASE 0.
- The TOOL of the twin is the mirrored tool: TOOL' = N · TOOL · M.
- The mirror plane is given in the world of the cell (e.g. the XZ plane at the mean Y of the two robots).
▲ Preview, check and write
The table shows for every point: the frame (TOOL / BASE), the values before and after (X Y Z and the angles - KUKA C B A, Fanuc W P R - in the frame of the point), the shift in mm, the configuration before / after, the axes after the transformation and the status:
| Status | Meaning |
|---|---|
| OK | reachable by inverse kinematics within the software limits. |
| over axis limit | an axis would be outside the software limits (red; the axes over the limit are listed). |
| not reachable | no inverse kinematics solution (red). |
| not checked | the reach is not checked (e.g. configuration kept at the left / right mirror). |
| error | the point cannot be calculated (message in the row, e.g. unsupported mounting or missing kinematics). |
▲ Undo
Undo last points transform (context menu of the point table) restores the saved values of the points that the last transformation changed. One transformation is remembered per program; a new transformation replaces it.
▲ API
Every setting of the window is a parameter of the editor command
points_transform and vice versa
(see VeRa / editor API):
{"cmd":"points_transform","file":"D:/x/UP42.src","mode":"preview","points":["P12","P13"],
"op":"move","frame":"base","pivot":"tcp","dx":0,"dy":5,"dz":0,"rx":0,"ry":0,"rz":0}
{"cmd":"points_transform","mode":"preview","points":"all","op":"mirror","plane":"xz","offset":191008,
"mirror":"lr","config":"mirrored","mflip":"z"}
{"cmd":"points_transform","file":"D:/x/UP42.src","mode":"apply","points":["P12"],"op":"align","ref":"P5"}
{"cmd":"points_transform","file":"D:/x/UP42.src","mode":"undo"}
| Parameter | Meaning |
|---|---|
| mode | preview (default, writes nothing; the program may be open or on the disk), apply, undo (the program must be open in the editor; the change stays unsaved - use save). |
| file, points | program; point names ("P12") or "all". |
| op | move, align, mirror. |
| frame, pivot | base, world, tool, custom; tcp or frame. |
| dx dy dz rx ry rz | shift (mm) and rotation (deg). |
| custom / customPoints | {"x","y","z","rx","ry","rz"} in WORLD, or three points ["P1","P2","P3"]. |
| ref | reference point of align. |
| plane, offset | xz, yz, xy; position of the plane (mm). |
| mirror, config, mflip | same or lr; mirrored or keep; z, y, x. |
| srcRobot, dstRobot | {"x","y","z","a","b","c"} positions of this and the twin robot in the cell. |
| allowWarnings | apply also the points with status limit / unreachable / not_checked (default false). |
| maxRows | maximum number of answer rows (default 500). |
point, status (ok, limit,
unreachable, not_checked, error), frame,
before / after (x y z rx ry rz in the frame of the point; KUKA C B A, Fanuc W P R),
worldBefore / worldAfter (BASE 0 = robot coordinates), shiftMM,
configBefore / configAfter, axes. The agent interface
editor_read allows only mode: preview; apply and undo go through editor_command.
Recommended order for an agent: preview, read the status of every row, apply (allowWarnings only on
purpose), save, undo if needed.
▲ Limits and licence
- VKRC and Fanuc programs only; KRC, ABB and Yaskawa: not available yet.
- The function needs the kinematics of the robot. With an unsupported mounting or without kinematics it answers with an explicit error and does not calculate (no silent result).
- The reach check uses inverse kinematics and the software limits of the robot; it does not replace the check of collisions and of the program in the simulation.
- Licence: the basic licence of the robot editor (VKRC or VFanuc).