-
Notifications
You must be signed in to change notification settings - Fork 0
Delta kinematics
Delta kinematics uses triangulation to control the nozzle position. Three coordinated carriages with rigid arms connect to a single effector where the nozzle is mounted. Delta triangulation has been documented extensively, perhaps nowhere better than in the PDF document Delta Robot Kinematics by Steve Graves. Marlin performs delta kinematics in real-time during printing, and this can add significant processing overhead. The DELTA_SEGMENTS_PER_SECOND
configuration option can be reduced to tune performance when movement is choppy. Combining delta kinematics with a Full Graphic Smart Controller will test the limits of a Mega2560.
The math for inverse kinematics can seem pretty daunting, but it comes down to these basic facts:
- Three Carriages are mounted on three Towers and together move a single Effector.
- Each carriage moves in coordination with the other two (but "doesn't care" about the other two).
- The only numbers that really matter are the distances in the XY plane from each carriage to the effector perimeter.
- Once you know the distance, you can easily get the carriage Z position:
H = DELTA_DIAGONAL_ROD // The hypotenuse of all delta triangles is an arm's length Dx = Tx - Ex // X difference between carriage and effector center Dy = Ty - Ey // Y difference between carriage and effector center Dte = sqrt(Dx^2 + Dy^2) // Distance from carriage XY to effector center (A) Dte -= EFFECTOR_RADIUS // length to the edge, not the center // H*sin(acos(A/H)) Ø = acos(Dte/H) // Get the angle Ø from A/H O = H * sin(Ø) // Opposite side is solved, O=H*(O/H) Zt = O + z // Add the carriage Z position Zt += effector_thickness/2 // Now the effector will touch the bed when z=0. Zt += nozzle_length // Now the nozzle touches the bed at z=0. Done!
Welcome to Marlin
Setting Up Marlin
Features
Configuring Marlin
Reference
GCode in Marlin
Join the Marlin Project
Contributing to Marlin
Coding Standards
Marlin or MarlinDev?
Marlin Branches
Marlin 1.2 Development
Compiling-MarlinDEV-master