aboutsummaryrefslogtreecommitdiffstats
path: root/klippy
diff options
context:
space:
mode:
authorDmitry Butyugin <dmbutyugin@google.com>2025-05-17 17:28:58 +0200
committerKevinOConnor <kevin@koconnor.net>2025-05-22 14:44:09 -0400
commitb1011e3fb14df7470d9b74e59042383012b199c6 (patch)
tree94e2bbd83ca206a6279b6b143d66c6deac711246 /klippy
parent17b8ce4c6be16d77d647b6d12356dc69830ec1e7 (diff)
downloadkutter-b1011e3fb14df7470d9b74e59042383012b199c6.tar.gz
kutter-b1011e3fb14df7470d9b74e59042383012b199c6.tar.xz
kutter-b1011e3fb14df7470d9b74e59042383012b199c6.zip
dual_carriage: Fixed input shaper stepper kinematics initialization
Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
Diffstat (limited to 'klippy')
-rw-r--r--klippy/extras/input_shaper.py4
-rw-r--r--klippy/kinematics/idex_modes.py12
2 files changed, 13 insertions, 3 deletions
diff --git a/klippy/extras/input_shaper.py b/klippy/extras/input_shaper.py
index a628289e..82d63572 100644
--- a/klippy/extras/input_shaper.py
+++ b/klippy/extras/input_shaper.py
@@ -101,6 +101,10 @@ class InputShaper:
desc=self.cmd_SET_INPUT_SHAPER_help)
def get_shapers(self):
return self.shapers
+ def init_for_steppers(self, steppers):
+ ffi_main, ffi_lib = chelper.get_ffi()
+ for s in steppers:
+ self._get_input_shaper_stepper_kinematics(s)
def connect(self):
self.toolhead = self.printer.lookup_object("toolhead")
# Configure initial values
diff --git a/klippy/kinematics/idex_modes.py b/klippy/kinematics/idex_modes.py
index ee9ee31d..c7c2305c 100644
--- a/klippy/kinematics/idex_modes.py
+++ b/klippy/kinematics/idex_modes.py
@@ -18,7 +18,7 @@ class DualCarriages:
safe_dist={}):
self.printer = printer
self.axes = axes
- self._init_steppers(primary_rails + dual_rails)
+ steppers = self._init_steppers(primary_rails + dual_rails)
self.primary_rails = [
DualCarriagesRail(c, dual_rails[i], axes[i], active=True)
for i, c in enumerate(primary_rails)]
@@ -28,6 +28,7 @@ class DualCarriages:
self.dc_rails = collections.OrderedDict(
[(c.rail.get_name(short=True), c)
for c in self.primary_rails + self.dual_rails])
+ self._init_shapers(steppers)
self.saved_states = {}
self.safe_dist = {}
for i, dc in enumerate(dual_rails):
@@ -75,6 +76,13 @@ class DualCarriages:
self.dc_stepper_kinematics.append(sk)
self.orig_stepper_kinematics.append(orig_sk)
s.set_stepper_kinematics(sk)
+ return steppers
+ def _init_shapers(self, steppers):
+ input_shaper = self.printer.lookup_object("input_shaper", None)
+ if input_shaper is not None:
+ # Make sure to initialize input shaper stepper kinematics
+ # before modifying IDEX stepper kinematics.
+ input_shaper.init_for_steppers(steppers)
def get_axes(self):
return self.axes
def get_primary_rail(self, axis):
@@ -213,8 +221,6 @@ class DualCarriages:
dc.activate(mode, toolhead.get_position())
kin.update_limits(axis, self.get_kin_range(toolhead, mode, axis))
def _handle_ready(self):
- # Apply the transform later during Klipper initialization to make sure
- # that input shaping can pick up the correct stepper kinematic flags.
for dc_rail in self.dc_rails.values():
dc_rail.apply_transform()
cmd_SET_DUAL_CARRIAGE_help = "Configure the dual carriages mode"