From 92f81d51f4a88dd6f32a2507e8c3d754c62f4b03 Mon Sep 17 00:00:00 2001 From: Kevin O'Connor Date: Mon, 25 Jul 2016 23:47:30 -0400 Subject: homing: Move low-level coordinate manipulation to kinematic class Rework the code so that the kinematic class (currently just cartesian.py) has more control over the homing process. Signed-off-by: Kevin O'Connor --- klippy/cartesian.py | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) (limited to 'klippy/cartesian.py') diff --git a/klippy/cartesian.py b/klippy/cartesian.py index 67c68be5..f061f673 100644 --- a/klippy/cartesian.py +++ b/klippy/cartesian.py @@ -33,11 +33,34 @@ class CartKinematics: accel_factor = min([self.steppers[i].max_accel / abs(axes_d[i]) for i in StepList if axes_d[i]]) return velocity_factor * move_d, accel_factor * move_d - def home(self, toolhead, axis): + def home(self, toolhead, axes): # Each axis is homed independently and in order - homing_state = homing.Homing(toolhead, self.steppers) # XXX - for a in axis: - homing_state.plan_home(a) + homing_state = homing.Homing(toolhead, axes) + for axis in axes: + s = self.steppers[axis] + # Determine moves + if s.homing_positive_dir: + pos = s.position_endstop + 1.5*( + s.position_min - s.position_endstop) + rpos = s.position_endstop - s.homing_retract_dist + r2pos = rpos - s.homing_retract_dist + else: + pos = s.position_endstop + 1.5*( + s.position_max - s.position_endstop) + rpos = s.position_endstop + s.homing_retract_dist + r2pos = rpos + s.homing_retract_dist + # Initial homing + homepos = [None, None, None, None] + homepos[axis] = s.position_endstop + coord = [None, None, None, None] + coord[axis] = pos + homing_state.plan_home(list(coord), homepos, [s], s.homing_speed) + # Retract + coord[axis] = rpos + homing_state.plan_move(list(coord), s.homing_speed) + # Home again + coord[axis] = r2pos + homing_state.plan_home(list(coord), homepos, [s], s.homing_speed/2.0) return homing_state def motor_off(self, move_time): for stepper in self.steppers: -- cgit v1.2.3-70-g09d2