ABB Motion point / point editor




▲ Point table

All robtarget and jointtarget variables declared in the current module are listed in two tables below the program text. Next to the coordinates the table shows the namespace (the fold or routine the declaration belongs to) and whether the variable is LOCAL, CONST or PERS.


The table follows the cursor: placing the cursor on a point name in the program selects that point in the table. Double-click on a point name in the table jumps to its declaration.
Quaternions as RPY angles switches the orientation columns between the quaternion (q1..q4) and roll/pitch/yaw angles.
Numbers are shown with the precision set in the ABB settings, without trailing zeros; an external axis that is not connected is shown as 9E+09.

▲ Editing values in the table

Coordinates, orientation and external axes can be changed by double-clicking a cell. The configuration columns (cf1, cf4, cf6, cfx) are read-only - they are recalculated. ▲ IK / FK row and the list of IK solutions

If the robot configuration of the project is available (system.xml, MOC.cfg and the robot kinematics), the row above the table shows the axis values of the selected robtarget (inverse kinematics) or the cartesian position of the selected jointtarget (forward kinematics), together with the tool and work object used by the motion instruction of that point.

The drop-down list under this row contains all IK solutions within the axis limits. The solution with the confdata of the point is marked with * and selected. Axes 4 and 6 may need a full turn (±360°) to reach the quadrant stored in the confdata - such a solution is added to the list as well, so the marked solution always matches the row above it.
Copy joints values in the context menu copies the axis values in degrees.


▲ Unused points

A point that nothing in the module uses is shown in grey italics with a warning icon; the tooltip explains why. A point counts as used wherever its name appears outside its own declaration, comments and strings - in a motion instruction, in Offs() or RelTool(), in an assignment or as a procedure argument.
Only LOCAL points are marked: a point without LOCAL can be used from another module of the task, so missing references in this module say nothing about it.

▲ Context menu of the point table


The tool and work object data (tooldata, wobjdata) are read from all modules of the task - system modules (*.sys) and program modules (*.mod). They are needed for the kinematics and for the tool/work object comparisons described above.

▲ Point editor

The point editor is opened by: On a motion instruction the editor edits the point that the cursor is on - a named target or a target written directly in the instruction. On a declaration line it edits the declared point; the motion instruction using the point is searched to get its tool and work object.
Previous and Next move to the neighbouring points without closing the window.


The Cartesian tab shows the position and orientation (quaternion and RPY angles) and the confdata, the Joint tab the axis values with sliders limited to the axis limits of the robot. A change on one tab recalculates the other one. The 3D preview shows the robot in the calculated pose.

▲ What Apply writes

▲ Inserting a new motion point

Insert motion point (robot toolbar, ABB menu or context menu of the program text) opens the editor for a new point. Nothing is inserted into the program before Apply - closing the window without it leaves the program unchanged. Where the new lines go:

▲ Linear unit (E1)

For a robot on a linear unit (track) the E1 fields and the slider are limited to the track limits read from MOC.cfg (section ARM of the track axis), in mm. The same limits are used to draw the track in the 3D preview.

The value 9E+09 means axis not connected. It is shown in the E1 field as 9E+09 (not connected) and written back as 9E+09.

▲ Tool and work object data

The kinematics needs the tool and work object data of the motion. If they cannot be found in the task, the other form of the point cannot be calculated and the 3D preview is not updated, but Apply is not blocked - what goes into the program does not depend on them: The message in the editor names the missing data and says which values are written.
The editor also calculates IK and FK for points with an external TCP, but only if the tool and base configuration used in the motion is valid - tool data is NOT held by the robot and base data IS held by the robot.

▲ Targets written directly in the motion instruction

Some motion instructions carry the coordinates directly, e.g. MoveJ [[3496.33,-491.6,570.9],[...],[-1,0,0,0],[9E+09,...]],v1000,z50,tool1\WObj:=wobj1;