The first thing I wanted to see about here was repeatability on tool cycling, i.e. when we drop a tool, do some other stuff, then grab it again, how well the tool is re-positioned. The whole point of a kinematic mount is to make this part work well: having perfect constraint means that there’s no over-determined DOF when we pick a tool up; it should go back in the exact same spot every time.
The first half of the video above shows how I carried this test out. The results are great, indeed I am surprised at how well the toolchanger performs. We can assume tool pickups will only introduce ~ 5 microns in any axis, and that errors will be well centered.
|axis||standard deviation after pickup, mm (inch)||average from center, mm (inch)|
|x||0.0047 (0.0002)||5.921e-16 (2.331e-17)|
|y||0.0033 (0.0001)||-2.220e-16 (-8.742e-18)|
|z||0.0047 (0.0002)||-1.480e-16 (-5.828e-18)|
These tests were from the second half of the video above.
Hysteresis on the motion system, aka backlash, which is impossible to completely eliminate from physical systems, is not as killer, but also not egregious, coming in around ~ 50 microns-ish, worse on the Z axis, which I would attribute to the printed pulley having some poorly manufactured geometry.
|axis||hysteresis mm (inch)|
I’ve made a few plots to show these a little better. On the left of each are readings at the “high” point of each test, in the middle the “returns” and on the right the “low” side of each test. The idea is to test how close to center the machine returns, after having “gone off” in some direction. You can imagine how this would quantify backlash / hysteresis, which is best understood with this tiny drawing:
Here’s the plots, I’ve been careful to scale each axis in the same span (0.2mm in Y on each).
The z drift here is concerning, you’re right. It seems unlikely that this is related to the stage mechanics: more likely the friction-heavy axis is missing steps. We all long for closed loop control, and I’m totally working on it. I’ll return here with updated numbers once I track it down.
Also missing is a real dynamic characterization of the machine. I am working towards a set of motor controllers that will discover a given machine’s dynamic model: friction, sticktion, masses, and stiffnesses… hopefully resonances as well. This would aid & relate directly to finding ideal values for a feedforward controller: permissible accels across speed ranges, etc. I’m working on that in this git repo, which might become public soon.