Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 14 additions & 14 deletions klippy/kinematics/dualgantry_corexy.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# Code for handling the kinematics of corexy robots
# Code for handling the kinematics of dualgantry corexy robots
#
# Copyright (C) 2025 Thepapst <le70@gmx.de>
# Copyright (C) 2022 Zruncho3D <zruncho3d@gmail.com>
# Copyright (C) 2022 Fabrice Gallet <tircown@gmail.com>
#
Expand Down Expand Up @@ -28,16 +29,13 @@ def __init__(self, toolhead, config):
self.rails[4].setup_itersolve('corexy_stepper_alloc', b'-')
for s in self.get_steppers():
s.set_trapq(toolhead.get_trapq())
toolhead.register_step_generator(s.generate_steps)
config.get_printer().register_event_handler("stepper_enable:motor_off",
self._motor_off)
self.rails[3].set_trapq(None)
self.rails[4].set_trapq(None)
self.dualgantry_rails = ( (self.rails[0], self.rails[1]),
(self.rails[3], self.rails[4]) )
ranges = [r.get_range() for r in self.rails]
self.axes_min = toolhead.Coord(*[r[0] for r in ranges[:3]], e=0.)
self.axes_max = toolhead.Coord(*[r[1] for r in ranges[:3]], e=0.)
self.axes_min = toolhead.Coord([r[0] for r in ranges[:3]])
self.axes_max = toolhead.Coord([r[1] for r in ranges[:3]])
# Setup boundary checks
max_velocity, max_accel = toolhead.get_max_velocity()
self.max_z_velocity = config.getfloat(
Expand All @@ -59,8 +57,12 @@ def calc_position(self, stepper_positions):
def set_position(self, newpos, homing_axes):
for i, rail in enumerate(self.rails):
rail.set_position(newpos)
if i in homing_axes:
self.limits[i] = rail.get_range()
if "xyzuv"[i] in homing_axes: # uv are unused, but loop goes from 0 to 4
self.limits[i] = rail.get_range()
def clear_homing_state(self, clear_axes):
for axis, axis_name in enumerate("xyz"):
if axis_name in clear_axes:
self.limits[axis] = (1.0, -1.0)
def note_z_not_homed(self):
# Helper for Safe Z Home
self.limits[2] = (1.0, -1.0)
Expand All @@ -87,8 +89,6 @@ def home(self, homing_state):
self._activate_gantry(altc)
else:
self._home_axis(homing_state, axis, self.rails[axis])
def _motor_off(self, print_time):
self.limits = [(1.0, -1.0)] * 3
def _check_endstops(self, move):
end_pos = move.end_pos
for i in range(3):
Expand Down Expand Up @@ -138,10 +138,10 @@ def _activate_gantry(self, carriage):
# Activate carriage rails
rails = self.dualgantry_rails[carriage]
ranges = [r.get_range() for r in rails]
self.axes_min = toolhead.Coord(ranges[0][0], ranges[1][0],
self.axes_min[2], self.axes_min[3])
self.axes_max = toolhead.Coord(ranges[0][1], ranges[1][1],
self.axes_max[2], self.axes_max[3])
self.axes_min = toolhead.Coord((ranges[0][0], ranges[1][0],
self.axes_min[2], self.axes_min[3]))
self.axes_max = toolhead.Coord((ranges[0][1], ranges[1][1],
self.axes_max[2], self.axes_max[3]))
for i, r in enumerate(rails):
r.set_trapq(toolhead.get_trapq())
self.rails[i] = r
Expand Down