Appendix B
06/2005
Danaher Motion
172 Rev
E
M-SS-005-03
The concept of joint coordinates is an
n
-tupple number. Each number represents the
coordinate of the specific joint. The world coordinates are supported by different built-in
types (XY, XYZ, XYZR) that describe each of the different world space representations.
Theoretically, there can be different world space descriptions for the same (or same
dimensional) world coordinates. Each robot has its default world-space type. Different robots
could have same world space types, as long as they have same number of degrees of
freedom (
NDOF
). For example, xy-table world space has XY world space descriptors. A
SCARA robot having a Z axis for vertical motion and a roll axis for orientation uses world
frame coordinates consisting of: X, Y, Z and roll or an XYZR descriptor.
The different coordinate systems are implemented as variables of different data types.
Generally, a point in a coordinate system is defined as a point data type. Depending on if it is
a joint space or world space, the sub-type of the point differs. There is a point data type with
two subtypes: JOINT and LOCATION. Both have a world space descriptor that additionally
differentiates between the same subtypes. A world space coordinate is stored in a variable
and is defined as:
DIM A AS LOCATION OF XYZR
The joint space is:
DIM A AS JOINT OF XYZR
The new point data type with its two subtypes (LOCATION and JOINT) and the world-space
descriptor (XY, XYZ, XYZR, etc.) covers all the possible robot space variations. These
variables are independent of the robot and can be used without having a robot defined in the
system. When they are used in a connection with the robot or a group, the world-subtypes
must be equal.
Internally, points are stored as 10-dimensional vectors with a flag describing the subtype and
a size defining the dimension size of a point. The point can be manipulated as a numeric
data type using all the arithmetic operations available (+-*/). The operations are defined as
coordinate-by-coordinate operations. Only points of the same subtype and same world-
space can be combined.
Special syntax is used for point constants: a list of values separated by commands inside
squared brackets ({}) denote points. If it is preceded by pound sign (#), it is a location:
DIM C AS LOCATION OF XYZR
C = #{0,0,0,0}
DIM I AS JOINT OF XYZR
I = {0,0,0,0}
U
SER
U
NITS
The MC gives you the freedom to change and choose different units. Robot models have
less flexibility. Due to a tight relation between joint and world-space, you must define joint
position units in millimeters or degrees and all time units in seconds so both world space and
joint space are compatible units. The units of world space are automatically set to
millimeters-degrees-seconds.
Each axis has four scaling factors:
PFAC
,
VFAC
,
AFAC
, and
JFAC
. These translate
encoder/resolver counts into user position units (inches, millimeters or revolutions). They
also specify what time units are used in position derivations (
VEL
,
ACC
,
JERK
). As the
position factor defines the ratio between counts and user position units, the rest of the
factors define the ratio between milliseconds and user time units. Typically you have:
<
axis
>.pfac = <
number of counts per user position units
>
<
axis
>.vfac = pfac/1000 (if in seconds)
<
axis
>.afac = vfac/1000 (if in seconds)
<
axis
>.jfac = afac/1000 (if in seconds)