Having worked on a calibration routine for a delta printer, which involved a fair amount of studying the kinematics system, I can say this is mostly correct. Some further details: Because the axes don't map linearly to Cartesian coordinates, they're sometimes called ABC instead of XYZ. Z-only moves are very easy. All you have to do is move all three motors at the same speed, for the same amount of time. XY moves (and XYZ moves, as when moving in arcs) are somewhat less simple. In order to move from one position to another, unless the move is purely in Z, each carriage will have to move on a _curve,_ and _not_ a straight line. In other words, _while the effector is moving in a perfectly straight line,_ the carriages will have to accelerate and decelerate differently, and they will often change directions at some point. Because of this, the motors can't be instructed to move in a linear fashion. Instead, the controller generates many tiny segments (each of which is a small fraction of a millimeter long) and clocks them out to the stepper drivers at a high rate of speed. A rate of 100-200 segments per second is typical. For running the printer at extremely high speed (like with Klipper with input shaping), it may be beneficial to generate even more than 200 segs/sec, as the printer is moving quite fast. You didn't mention (or draw) the horizontal distance (offset) between the effector's ball joints and its center. This matters, but is factored out in the arithmetic before the machine ever starts moving by subtracting that offset from the delta radius (horizontal distance between center of effector and carraiges.) At runtime, the kinematic routines see a machine with zero distance between the joints and the center of the effector. You don't need to write logic to ignore the intersections with the bottom of the sphere. In fact, during normal operation, when the controller is converting Cartesian coordinates to axis positions (inverse kinematics), there is no notion of a sphere at all, just some basic trig: github.com/Smoothieware/Smoothieware/blob/edge/src/modules/robot/arm_solutions/LinearDeltaSolution.cpp#L62 What you are seeing there is just the Pythagorean theorem: a^2 + b^2 = c^2... that moves the XY position of the effector to the right place. At the end of each calculation, they add the Z, which is the same for all three towers. That's all there is to it: just calculating the elevations of the top vertices of three right triangles, and then adding whatever the Z is to that. Going the other way (forward kinematics, or axis positions to effector position), there _is_ a notion of a sphere. (Same link, but scroll down to LinearDeltaSolution::actuator_to_cartesian(), and you will see the comment mentioning "barycentric coordinates.") However, there is no need to write code to "ignore" the intersection at the bottom of the sphere. You only tell it how to find the top intersection. It doesn't know what trig is, or what a sphere is. It only knows that you're taking an exponent here, and a square root there, but never the fact that it has anything to do with a sphere. Deltas used to have a well-earned reputation for being very hard to calibrate. This is why I and a few others (especially dc42, who wrote the RepRapFirmware which runs on Duet boards) spent quite a lot of time writing heuristic (machine learning) calibration algorithms almost ten years ago. It's _extremely_ hard to figure out why a delta is not achieving perfect 1st layers without machine learning unless the frame is unbelievably, superhumanly well-aligned. (Not a huge issue when printing narrow objects, but without proper calibration it's progressively more difficult as the part gets wider.) The difficulty is because the math is non-linear (exponents and square roots); so the effects of miscalibration are not linear either, and really don't make sense to human intuition. Early calibration systems relied on probing at some points along a triangle. They sucked and were horrible. The systems written during the era when I was doing that would instead probe on a grid to measure the bed depths. On a perfectly-calibrated printer, all the depths would theoretically be identical. On a real printer, there's always some errors in Z. The ML algorithms would look at the depths on the grid and use heuristics to figure out the particular tweaks to printer geometry settings that would most accurately explain the observed data. My calibration system could take a printer with ~110 microns of average error, and (on my printer) get that down to around 42 microns. Other people had even better luck, and could get down around 20 microns. Today, this is a pretty standard feature, and I would never recommend a delta that didn't come with heuristic calibration. A few people still think deltas are hard to calibrate, but this is only true when the robot doesn't have that feature.
This is the best “well, actually” comment I’ve had in a long time, it should serve as an appendix to the video which is pretty superficial, but at least gets people thinking about it. If you do the math, you could start with the spherical intersection model and simplify it down into a simpler problem, the fact that z affects all axis the same and can just be added to all rails collectively is a very interesting notion. When solving for the transformation matrix I’m sure this would just plop out and be obvious but it’s a pretty big deal for simplifying the kinematics.
Simple and effective explanation. I already had a general idea on how Delta's work, but this really does demystify it. Something I feel is overlooked with Delta printers (I think at least? ) is that they would work really well for a DiY high-temp 3D printer. Just use ball screws instead of belts for z-motion, and other than the extruder parts, no electronics need to be inside the heated chamber.
If you use a long bowden. For direct extruder you still need a motor inside. On bigger Deltas (like Anycubic Predator) a feeder hanging on springs was used, to keep the bowden short; modern Deltas mostly use a direct extruder with Nema 14. However, you should be able to cool a nema 14 with a peltier element or water cooling if you have a very hot chamber... Ball screws are normaly a lot slower than belts, as they have a high rotating mass. However, there are alternatives to normal belts with higher temperature resistence.
@@oleurgast730 Not necessarily, you could also use a Flex Shaft. That way you get full benefits of direct-drive, without any motor weight. I used one on an old Ultimaker 2+, and recently I reused the same Flex3Ddrive on a DiY corexy, actually managed to make a cantilevered flying gantry that doesn't sag (that was my goal, I'm using it for education purpose, and this design makes everything clearly visible). Issue here is that my e-steps are quite high, so the extruder motor needs to spin A LOT, but that could be avoided with some more sense put into it.
@@astrumrocket6556 You are correct. I totally forgot about the good old Zasty Nimble I used a few years ago ;-) So yes, a Delta definitly is a nice design for high chamber temperature. There might be a reason Prusas new industrial printer is a Delta...
@@oleurgast730 Funny you should mention Prusa, turns out, they are selling a Flex Drive type extruder for their (or Trilab's) DeltiQ. Shame that flex drives aren't more popular, I understand why, but still, it would be nice if there were a few affordable ones on the market.
Back in the Mesozoic when I was in high school and even early college many engineers considered the kinematics you describe as high wizardry. Then someone invented pocket calculators with trig functions and it all became simple geometry.
I love your rambling, your method of explaining things is quite enjoyable. I imagine someone with not much of a technical background or interest being able to understand this
You lose speed not acceleration when the angle is really shallow. The delta arms are a cvt and shallow angle is the "ultra low gear" end of the cvt. Traditionally folks design deltas to limit the min angle so you don't lose too much speed, but the speed penalty only actually hurts moves opposite a column in the direction towards/away-from it (not perpendicular direction), so if your firmware can be smart about it, you can use extreme min angles without much penalty.
Intersections above and below is an interesting concept. You should make a delta printer with the bed in the middle and print heads on both sides of the bed. The top side and the bottom side could be completely independent or used to make copies. I guess that would complicate supports, but there is that cartesian printer that prints upside down.
I mean, it could have been 9999, so count your blessings! But really, it's for real professional use, so companies are willing to pay that. home users, not so much!
Yes. The literal overhead (in mm) is at a minimum the width of the build diameter, and in practice, usually about the golden ratio times the build diameter
The matrix transforms are the solution of the sphere intersection problem. I’m trying to give people a Dunning Krueger level of understanding so they feel invincible! But not so much that they feel hopelessly lost in the math
Are you sure that the code is using spheres? Mathematically, it would make more sense to use each linear rail as an axis and a circle to create a plane through each axis, as they are much easier/faster to calculate. The overall idea might be spheres, but I doubt that they would actually be used in the firmware. The more vertical the rods are, the greater the farce that is placed on them and the bearings, which can be very extreme. How often do the bearings and rods need to be replaced?
Rods never wear out. The joints/bearings can wear and develop slop, but there are lots of different choices where that can be more or less of a problem. Mine uses printed cups with spring preload that should not develop slop under wear.
IK (Cartesian to actuator) doesn't use sphere math at all, but just the Pythagorean theorem. FK uses sphere math, but that's only needed for calibration and similar auxiliary tasks. Modern Delta arms are made by encasing a ND magnet in Delrin plastic, which is then ball-milled to have a spherical profile. That then rides on chromed steel balls. These last for a very long time.