- Black dots are samples
- Orange dot: the “elbow point”. Likely first point of the collision dataset
- Blue and green lines: least squares best fits of the pre and post collision lines
- Red dot: the estimated time when the collision started which is reported to klipper
- Yellow dot is the point where the endstop on the board triggered to stop the move
- Magenta dot is when klipper said probing ended.
Taken me more than a year to get here but these PROBE_ACCURACY
results are just nuts
// PROBE_ACCURACY at X:200.000 Y:125.000 Z:6.573 (samples=10 retract=5.000 speed=5.0 lift_speed=5.0)
// ...
// probe accuracy results: maximum 1.573681, minimum 1.570139, range 0.003542, average 1.572205, median 1.572205, standard deviation 0.001245
(sampled at 1200 SPS)
That’s 1/2 the standard deviation of a switch probe at the same speed. It’s very close to a commercial CNC probe.
There is still room for improvement, especially on consistency between speeds and sample rates. I have at least 3 things left to try:
- alternate elbow finder from @D4SK
- 60Hz notch filter from SciPy to remove noise
- Using the
trapq
to find when the Z axis stopped so we can take advantage data points after probing ends. - And maybe a 4th idea…