Klipper3d / klipper

Klipper is a 3d-printer firmware
GNU General Public License v3.0
8.98k stars 5.17k forks source link

Internal rework of PrinterProbe class #6605

Closed KevinOConnor closed 2 weeks ago

KevinOConnor commented 1 month ago

This is an internal refactoring of the probe.py PrinterProbe class. Basically the goal is to split up the functionality in that class into a series of more manageable classes (ProbeCommandHelper, ProbeSessionHelper, HomingViaProbeHelper, and ProbeOffsetsHelper). The goal is to separate functionality so that it is easier to add features in the future. There should be no user visible changes as part of this PR.

@Arksine - fyi.

-Kevin

KevinOConnor commented 1 month ago

On a closer look, one change in behavior is that previously the PROBE_ACCURACY command did not apply an axis_twist_compensation adjustment, while after this PR, it would. I suspect that minor difference is not an issue.

EDIT: Actually axis_twist_compensation was called both before and after, so no change in behavior.

-Kevin

KevinOConnor commented 3 weeks ago

I have made some notable changes to this branch. The goal is still to split up the PrinterProbe() implementation into helper classes. This branch now also reworks the probe implementations (bltouch, probe_eddy_current, smart_effector, probe) to be the main interface point for probing. That is, the users of the probe (eg, bed_calibrate) will now see a probe implementation class (eg, BLTouchProbe) as the class registered as the printer.probe object. This allows the probe implementations more control over probing actions, and allows for an improved interface between probe users and probe implementations.

I don't have a good test setup for bltouch, smart_effector, nor axis_twist_compensation. Tests from others would be helpful.

The main goal of this PR is in preparation for improved probe_eddy_current support - which I'll place in a separate PR.

-Kevin