M669
Back to the Gcode Dictionary
M669: Set kinematics type and kinematics parameters
Parameters
- Knnn Kinematics type: 0 = Cartesian, 1 = CoreXY, 2 = CoreXZ, 3 = linear delta, 4 = serial SCARA, 5 = CoreXYU, 6 = Hangprinter, 7 = polar, 8 = CoreXYUV, 9 = five-bar parallel SCARA (in RRF 3.01, experimental), 10 = rotary delta, 11 = Mark Forged, 12 = reserved for Collinear Tripteron, 13 = reserved for 5-axis robot arm
Note: RepRapFirmware 2.03 and later can support any kinematics for which the movement of each axis is a linear combination of the movement of the motors. The relationship between axis movement and motor movement is defined by a matrix. So K0, K1, K2, K5, K8 and K11 all select the same kinematics, but with different default matrices.
Order dependency
- M669 must come earlier in config.g than any M671 command.
Selects the specified kinematics, then uses the other parameters to configure it. If the K parameter is missing then the other parameters are used to update the configuration data for the current kinematics. If no parameters are given then the current kinematics and configuration parameters will be reported.
Parameters for Cartesian/CoreXY/CoreXZ/CoreXYU/CoreXYUV/MarkForged kinematics (RRF 2.03 and later only)
- Xnn:nn:nn... Motor movement coefficients required to move X axis (first row of matrix)
- Ynn:nn:nn... Motor movement coefficients required to move Y axis (second row of matrix)
- Znn:nn:nn... Motor movement coefficients required to move Z axis (third row of matrix)
- Unn:nn:nn..., Vnn:nn:nn... etc. Motor movement coefficients required to move U, V... axes (fourth and subsequent rows of matrix)
- Snnn Segments per second (RRF 3.3 and later)
- Tnnn Minimum segment length (mm) (RRF 3.3 and later)
All these parameters are optional. The movement coefficient matrices are initialised to suitable value for the kinematics type you selected in the M667 or M669 command, but you can modify them using these parameters. If you send M669 with no parameters, the existing matrix will be reported.
Note: when CoreXZ kinematics is selected, the default matrix assumes there is a 3:1 reduction on the Z axis, as in the original CoreXZ design described at https://reprap.org/forum/read.php?2,3778.... If your CoreXZ printer has a different reduction or no reduction then you will need to use the Z parameter to change the Z line of the matrix. For example, if there is no Z reduction then use Z1:0:-1.
In RRF 3, segmentation is not used unless the S and/or T parameter is given. Segmenting moves is useful when faster pause response is wanted.
Examples
M669 Kinematics is Cartesian, matrix: 1.00 0 0 0 1.00 0 0 0 1.00
CoreXY with extra Markforge U axis (see https://forum.duet3d.com/post/136554 )
M669 K1 X1:1:0:0 Y1:-1:0:-1 Z0:0:1:0 U0:0:0:1
Note U motor values in X, Y, Z and U parameters come after the Z motor values. M669 reports:
M669 Kinematics is modified CoreXY, matrix: 1.00 1.00 0 0 1.00 -1.00 0 -1.00 0 0 1.00 0 0 0 0 1.00
Parameters for Linear Delta kinematics (RRF 2.03 and later only)
- Xnn:nn:nn... Extruder offset from nozzle in X
- Ynn:nn:nn... Extruder offset from nozzle in X
- Snnn Segments per second (RRF 3.3 and later)
- Tnnn Minimum segment length (mm) (RRF 3.3 and later)
This is used when a 4th axis is added to a linear Delta, to carry the extruder and follow in Z. It specifies the XY offsets of the extruder outputs on additional towers, relative to machine centre in the M669 command. See Configuring RepRapFirmware for a Linear Delta printer
In RRF 3, segmentation is not used unless the S and/or T parameter is given. Segmenting moves is useful when faster pause response is wanted.
Parameters for serial SCARA kinematics
- Pnnn Proximal arm length (mm)
- Dnnn Distal arm length (mm)
- Annn:nnn Proximal arm joint movement minimum and maximum angles, in degrees anticlockwise seen from above relative to the X axis
- Bnnn:nnn Proximal-to-distal arm joint movement minimum and maximum angles, in degrees anticlockwise seen from above relative to both arms in line
- Cnnn:nnn:nnn Crosstalk factors. The first component is the proximal motor steps to equivalent distal steps factor, the second is the proximal motor steps to equivalent Z motor steps factor, and the third component is the distal motor steps to equivalent Z motor steps factor.
- Rnnn (optional, RRF 2.03 and later only) Minimum permitted printing radius from the proximal axis. If not specified, it will be calculated to be slightly larger than the distance between nozzle and proximal axis when the distal axis is homed.
- Snnn Segments per second (because smooth XY motion is approximated by means of segmentation)
- Tnnn Minimum segment length (mm) (because smooth XY motion is approximated by means of segmentation)
- Xnnn X offset of bed origin from proximal joint
- Ynnn Y offset of bed origin from proximal joint
Examples
M669 K4 P300 D250 A-90:90 B-135:135 C0:0:0 S100 X300 Y0
The minimum and maximum arm angles are also the arm angles assumed by the firmware when the homing switches are triggered. The P, D, A and B parameters are mandatory. The C, X and Y parameters default to zero, and the segmentation parameters default to firmware-dependent values.
Parameters for Polar kinematics
- Annn Maximum turntable acceleration in degrees per second^2 1
- Fnnn Maximum turntable speed in degrees per second 1
- Hnnn Radius of the nozzle from the centre of the turntable when the radius arm homing switch is triggered
- Raaa:bbb Minimum (aaa) and maximum (bbb) radius on the turntable reachable by the nozzle.
- Snnn Segments per second (because smooth XY motion is approximated by means of segmentation)
- Tnnn Minimum segment length (mm) (because smooth XY motion is approximated by means of segmentation)
- Xnnn X offset of bed origin from turntable centre (not yet implemented)
- Ynnn Y offset of bed origin from proximal joint (not yet implemented)
Note 1 : The A and F parameters only apply to normal moves not to G1 H2 (individual motor) moves. The intention is that when printing well away from the centre, the normal X and Y limits set by M201 and M203 are sufficient. When printing at a small radius, movement may need to be slowed down to limit the turntable speed and acceleration.
There is currently no facility for offsetting the radius arm sideways from the centre of rotation of the turntable, or for moving the origin.
0 Comments