I integrated the code from the Jupyter notebook and I thought I would be stuck in integration hell for a week. But no, it worked on like the 10th re-compile :
// PROBE_ACCURACY (samples=50 retract=2.000 speed=5.0 lift_speed=10.0)
// 9 point bed sweep, 50 samples, 5mm/s
probe accuracy results: maximum 0.022973, minimum 0.018063,
range 0.004910, average 0.021614,
median 0.021707, standard deviation 0.000854
probe accuracy results: maximum 0.055126, minimum 0.052617,
range 0.002509, average 0.053295,
median 0.053291, standard deviation 0.000366
probe accuracy results: maximum -0.017186, minimum -0.019178,
range 0.001992, average -0.018102,
median -0.018080, standard deviation 0.000481
probe accuracy results: maximum -0.023697, minimum -0.025266,
range 0.001569, average -0.024345,
median -0.024314, standard deviation 0.000357
probe accuracy results: maximum 0.006352, minimum 0.004198,
range 0.002155, average 0.005163,
median 0.005244, standard deviation 0.000550
probe accuracy results: maximum -0.039901, minimum -0.040901,
range 0.001000, average -0.040235,
median -0.040200, standard deviation 0.000217
probe accuracy results: maximum -0.013751, minimum -0.016480,
range 0.002728, average -0.014947,
median -0.014835, standard deviation 0.000547
probe accuracy results: maximum 0.047511, minimum 0.046222,
range 0.001289, average 0.046718,
median 0.046701, standard deviation 0.000238
probe accuracy results: maximum -0.005060, minimum -0.007647,
range 0.002587, average -0.006149,
median -0.006065, standard deviation 0.000578
All but one of those is under 3 microns. It super consistent.
I set the number of probe samples to 1 in the config and pushed the gantry out of alignment. QGL solved it on 2 retries:
Retries: 2/5 Probed points range: 0.004072 tolerance: 0.007500
With my switch probe it would have take 3 probes on each corner and probably 4 retries.
I have some debugging to do and I need to restore the code that emits the probe info over the websocket. But this should get pushed this weekend.