SCARA robot
Language: | English • 中文(简体) |
---|
Contents
SCARA robot
The softMC has two kinematic models of the SCARA robot. The default model is of type XYZR, and the second model is of type XYZ, i.e. without the fourth rotational axis. The robots are configured using:
- common shared <robot> as group Axnm = A1 Axnm = A2 Axnm = A3 Axnm = A4 model = 4 of xyzr
- common shared <robot> as group Axnm = A1 Axnm = A2 Axnm = A3 model = 4 of xyz
For detailed instruction on configuring a SCARA robot using the softMC Configurator, see the 4 Axis Scara robot Setup page.
Kinematics setup
The kinematics parameters of SCARA robot are defined by:
- L1 – length of the first link (See Link[1][1]).
- L2 – length of the second link (See Link[2][1]).
World coordinates are defined according to the following picture:
Z coordinate
The Z coordinate starts from the upper z-shaft position and increases downwards by default. This means it is an up-side-down XYZ system. To change the direction of Z, set Axis[3][3]=-1.
Tool, configuration
- The SCARA configuration (LEFTY/RIGHTY) is defined as a group’s property (See: ACMD) and it is outside the point data structure.
- The roll axis is defined as the rotation angle (around Z-axis) of the end-effector frame (Xee, Yee, Zee) relative to the base frame.
So there is a difference between world-frame roll axis and the joint-frame roll axis. This feature actually enables keeping constant orientation angles during straight-line motions.
- Zero values of joints J1 and J2 give the place of X axis. (e.g. X Y Cartesian coordinates of the tool-tip will be #{L1 + L2, 0})
Axis setup
The SCARA robot is modeled as a group of four axes: a1- first rotary axis, a2 – second rotary axis, a3 – third linear motor axis (the Z axis), a4 – fourth rotary motor axis (the roll axis).
Axis coupling
In some kinematic models of the SCARA robot, the third and fourth axes are coupled together by a coupling factor p. This means that a movement of the fourth motor axis results in a movement of the physical Z axis according to the following relation: positive rotation = Z moves UP, negative rotation = Z moves DOWN, assuming p is positive. This coupling relation is configured using the coupling matrix:
cplg[1][1] = 1
cplg[2][2] = 1
cplg[3][3] = 1
cplg[3][4] = p
cplg[4][4] = 1
which relates the robot joints to the robot axes according to [J1,J2,J3,J4]T = cplg*[a1,a2,a3,a4]T. Note that the <robot>.coupled flag must be set to TRUE after setting the coupling matrix. Note too that the joint limits <robot>.J[i].pmin and <robot>.J[i].pmax for i=1,...,4 should take the axis limits into account.
Motion commands
There are three motion commands incorporating SCARA kinematics:
All of them implement trajectories in world space coordinates (XYZR). The roll axis is proportionally interpolated with the XYZ motion, this means the roll motion starts and ends at the same time as XYZ motion.
There are two sets of properties one for translation and one for rotation. Command kinematics parameters as velocity, jerk, acceleration can be defined separately for rotation and translation. These specify the kinematics parameters of the generated motion. Also there is a maximum property of each value. Maximums limit the possible excessive motion definitions and are determined by the user or automatically using the axis limits of each motor. The command values define the motion property of each movement and can be given nodal or modal. To summarize we have the following table of properties:
Maximum(Modal) | Command (Modal/Nodal) | |||
---|---|---|---|---|
Rotary | VelocityMaxRot, AccelerationMaxRot, JerkMaxRot |
Units: deg/sec deg/sec2deg/sec3 |
VelocityRot, VelocityFinalRot, AccelerationRot, DecelerationRot, JerkRot |
Units: mm/sec mm/sec2 mm/sec3 |
Translation | VelocityMaxTrans, AccelerationMaxTrans, JerkMaxTrans |
Units: deg/sec deg/sec2deg/sec3 |
VelocityTrans, VelocityFinalTrans, AccelerationTans, DecelerationTrans, JerkTrans |
Units: mm/sec mm/sec2 mm/sec3 |
Initially (using the ConfigGroup command) maximum motion parameters are set to theoretically maximum values:
- For translation component (VelocityMaxRot, AccelerationMaxRot, JerkMaxRot):
- For rotational component (VelocityMaxTrans, AccelerationMaxTrans, JerkMaxTrans):