This page is part of multiple pages about robot configuration and usage. Please choose the robot tag to see an overview.
This robot type is built from the XYZ axes and the AC/BC axes:
The following robot type are therefore supported:
The current tool is added to the position with its G10 offset values, so toolchangers are supported.
RTCP mode is supported in all cases, i. e. the XYZ change due to AC/BC changes are considered and corrected by small XYZ changes.
The configuration are the following steps:
Specify robot kinematics and the subtype:
Specifiy angles:
Specifiy Screw values axis properties:
Specify Screw values endpoint position and orientation:
Specify Screw value reference for endpoint properties:
Specify Screw tool length and direction:
Screw theory works because only the relative changes of angles and positions in respect to the reference are used to calculate how much the endpoint changes in position/orientation in respect to the reference position/orientation (Mnoap).
(noap means nick - orthogonal? - approach - position, i. e. the three rotation directions and position. M stands for matrix, as it is often presented as 4x4 matrix. An alternative to noa is RPY roll pitch yaw from aviation).
A move is segmented into small straight lines. The segmentation is calculated and planned in the main process of RRF and is not part of the kinematics. The kinematics calculates forward and inverse information for the true XYZ positions, so this is equal to which is named RTCP mode.
RTCP means, that when rotating AB/AC/BC without XYZ correction, the movement would be wrong (because rotary angle changes change the XYZ position). XYZ actuators must be changed also, which is achieved by recalculation of the inverse kinematics for every segment's correct position. The smaller the segments, the better the approach to the true line. But at a cost, more processing time needed.
A CAD, CAM program, slicer or postprocessor will create G-Code which can be executed and is used to control the 5 axis CNC axes. There are two common addressing modes:
With AC and BC, one should be aware of the gimbal lock at A = 0 degrees and B = 0 degrees position. At this position, the C axis is parallel to the Z axis, which means lost rank. For some movements, the C axis wants to rotate 180 degree with infinite speed, which is not possible.
The configuration of the DH parameters, which are specified by the Dn parameters, depends on where the axes are located, their direction and where the angle 0 degree is located. The DWC plugin RobotViewer shall help configuring (this tool is in development).
A good approach is:
From this descriptions it becomes clear that a rotary A axis located near the hotend (head mode) must be handled differently than if it is located near C and workpiece (table mode). The first is in the base-...-tool chain, the second is located in the inverted base-...-workpiece chain. It is also a difference where the Z axis is located: at the hotend like CNC gantry systems are constructed or at the print bed like a CoreXY.
This printer shares properties with the other 5 axis types by using 3 actuators for XYZ and 2 actuators for AC/BC. But it differes in:
Each AC/BC inverse kinematics has two solutions, so each endpoint has up to 8 inverse solutions.
This robot type has 3 linear axes which control X, Y, Z positions, and two rotary axes which are assembled at head or table. Gantry type constructions have two connected Y guides and can be driven by 2 motors. They have one common drive number and are handled together by the core RRF.
The general starting point is
M669 K13 B"robotType=5AxisAC" or 5AxisBC
This defines a starting point of configuration. The configuration can be seen by calling M669 without parameters. Default are axes PPPRR (X, Y, Z are prismatic, A/B and C are rotary).
Then find out the chain. Open5x e.g. has the forward part base-Z-X-hotend and the to be inverted part base-Y-A-C-workpiece. After inverting the second part, they can be joined. In this example, D0 is workpiece, D1 the C rotary axis, D2 the A, D3 the Y, D4 is base, D5 the Z, D6 the X and D7 the tool.
B means the B axis is parallel to the Y axis and is master, C is parallel to the Z axis and is slave, i. e. it is assembled on top of the B axis.
The following settings were deduced from the article "Transformation of CAM Data for 5-Axis CNC Machine Spinner U5-620" by My, Cong, Hong and Bohez.
After describing how to get from the base to the workpiece by DH transformations which can be described by D0, D1 and D2, the view must be changed to workpiece view, because the tool orientation is measured against the workpiece surface. D0, D1 and D2 transformations must be inverted, order is important. Starting from D2 back to D0, the chain is from base to tool through D3, D4, D5 being movements of X, Y, Z axes, and D6 being tool offsets and length.
The Dn parts between workpiece, i. e. the chain workpiece - C axis - B axis - base must be inverted with Dn! commands.
The D0 to D6 parameters describe physical setup and coordinate systems of base, joints and tool. The G10 offsets are added to D6, so after a tool change the calculation will still be correct.
From this transformation, the forward kinematics can be calculated: starting from G-Code XYZBC (XYZ are in mm, BC in degrees) can be calculated XYZ cartesian and IJK tool vector.
The inverse kinematics is calculated by the jacobian, generalized inverse method and gets from XYZ position and IJK orientation the XYZ machine position of the linear axes and the BC angles.
The calculations allow correct positions and orientations for every segment of a move, like RTCP. It is however important to have a good path planner on the CAM side.
A new configuration option allows to set most configuration settings fast:
M669 K13 B"robotType=CoreXYAC"
M669 K13 B"robotType=CoreXYBC"
AC if the rotary axis A is parallel to the X axis
or BC if the rotary axis B is parallel to the Y axis.
The rotary axis C is parallel to the Z axis.
The C rotary table is mounted on top of the A/B axis, this one is mounted on the Z axis. Z is connected to the base, as are XY axes, which are CoreXY connected. The base is a fixpoint (0,0,0), which doesn't change position and orientation and is a reference.
The firmware decides by the used letter where the connected steppers are located. The assignement between driver and Dn is done by the P"mapDriveLetterDn=..." parameter.
sets some parameters already:
What should be added:
CNC 5 axis has a spindle with only one orientation in Z direction (orientationType=zaxis). Two rotational axes are used to change the angle of the spindle in respect to the workpiece surface. Letters AB, AC or BC are used: A is a rotational axis in the same direction like the X axis, B like Y, C like Z axis. The angle of the spindle in respect to the workpiece surface is described as tool vector values. In the documentation about firmware is a detailed description about orientation types.