diff options
author | Dmitry Butyugin <dmbutyugin@google.com> | 2025-05-07 00:06:36 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-05-06 18:06:36 -0400 |
commit | cc6736c3e35cb6f6e660d973be67ab4cef78ffb9 (patch) | |
tree | ac402e87f007dec73e7dd551088600252cb1437f /klippy/extras/homing.py | |
parent | 1cc63980747b80516f8fc4f022eedf18ae739086 (diff) | |
download | kutter-cc6736c3e35cb6f6e660d973be67ab4cef78ffb9.tar.gz kutter-cc6736c3e35cb6f6e660d973be67ab4cef78ffb9.tar.xz kutter-cc6736c3e35cb6f6e660d973be67ab4cef78ffb9.zip |
kinematics: Generic Cartesian kinematics implementation (#6815)
* tests: Added a regression test for generic_cartesian kinematics
* kinematics: An intial implementation of generic_cartesian kinematics
* generic_cartesian: Refactored kinematics configuration API
* generic_cartesian: Use stepper instead of kinematic_stepper in configs
* generic_cartesian: Added SET_STEPPER_KINEMATICS command
* generic_cartesian: Fixed parsing of section names
* docs: Generic Caretsian kinematics documentation and config samples
* generic_cartesian: Implemented multi-mcu homing validation
* generic_cartesian: Fixed typos in docs, minor fixes
* generic_cartesian: Renamed `kinematics` option to `carriages`
* generic_cartesian: Moved kinematic_stepper.py file
* idex_modes: Internal refactoring of handling dual carriages
* stepper: Refactored the code to not store a reference to config object
* config: Updated example-generic-cartesian config
* generic_cartesian: Restricted SET_STEPPER_CARRIAGES and exported status
* idex_modes: Fixed handling stepper kinematics with input shaper enabled
* config: Updated configs and tests for SET_DUAL_CARRIAGE new params
* generic_cartesian: Avoid inheritance in the added classes
Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
Diffstat (limited to 'klippy/extras/homing.py')
-rw-r--r-- | klippy/extras/homing.py | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/klippy/extras/homing.py b/klippy/extras/homing.py index add209ec..723648c1 100644 --- a/klippy/extras/homing.py +++ b/klippy/extras/homing.py @@ -45,7 +45,7 @@ class StepperPosition: class HomingMove: def __init__(self, printer, endstops, toolhead=None): self.printer = printer - self.endstops = endstops + self.endstops = [es for es in endstops if es[0].get_steppers()] if toolhead is None: toolhead = printer.lookup_object('toolhead') self.toolhead = toolhead @@ -71,7 +71,9 @@ class HomingMove: sname = stepper.get_name() kin_spos[sname] += offsets.get(sname, 0) * stepper.get_step_dist() thpos = self.toolhead.get_position() - return list(kin.calc_position(kin_spos))[:3] + thpos[3:] + cpos = kin.calc_position(kin_spos) + return [cp if cp is not None else tp + for cp, tp in zip(cpos, thpos[:3])] + thpos[3:] def homing_move(self, movepos, speed, probe_pos=False, triggered=True, check_triggered=True): # Notify start of homing/probing move @@ -233,6 +235,10 @@ class Homing: for s in kin.get_steppers()} newpos = kin.calc_position(kin_spos) for axis in force_axes: + if newpos[axis] is None: + raise self.printer.command_error( + "Cannot determine position of toolhead on " + "axis %s after homing" % "xyz"[axis]) homepos[axis] = newpos[axis] self.toolhead.set_position(homepos) |