diff options
Diffstat (limited to 'klippy/kinematics/cartesian.py')
-rw-r--r-- | klippy/kinematics/cartesian.py | 38 |
1 files changed, 12 insertions, 26 deletions
diff --git a/klippy/kinematics/cartesian.py b/klippy/kinematics/cartesian.py index e6882061..6e971fb5 100644 --- a/klippy/kinematics/cartesian.py +++ b/klippy/kinematics/cartesian.py @@ -55,38 +55,24 @@ class CartKinematics: if i in homing_axes: self.limits[i] = rail.get_range() def _home_axis(self, homing_state, axis, rail): - # Determine moves + # Determine movement position_min, position_max = rail.get_range() hi = rail.get_homing_info() + homepos = [None, None, None, None] + homepos[axis] = hi.position_endstop + forcepos = list(homepos) if hi.positive_dir: - pos = hi.position_endstop - 1.5*(hi.position_endstop - position_min) - rpos = hi.position_endstop - hi.retract_dist - r2pos = rpos - hi.retract_dist + forcepos[axis] -= 1.5 * (hi.position_endstop - position_min) else: - pos = hi.position_endstop + 1.5*(position_max - hi.position_endstop) - rpos = hi.position_endstop + hi.retract_dist - r2pos = rpos + hi.retract_dist - # Initial homing - homing_speed = hi.speed - second_homing_speed = hi.second_homing_speed + forcepos[axis] += 1.5 * (position_max - hi.position_endstop) + # Perform homing + limit_speed = None if axis == 2: - homing_speed = min(homing_speed, self.max_z_velocity) - second_homing_speed = min(second_homing_speed, self.max_z_velocity) - homepos = [None, None, None, None] - homepos[axis] = hi.position_endstop - coord = [None, None, None, None] - coord[axis] = pos - homing_state.home(coord, homepos, rail.get_endstops(), homing_speed) - # Retract - coord[axis] = rpos - homing_state.retract(coord, homing_speed) - # Home again - coord[axis] = r2pos - homing_state.home(coord, homepos, rail.get_endstops(), - second_homing_speed, second_home=True) + limit_speed = self.max_z_velocity + homing_state.home_rails([rail], forcepos, homepos, limit_speed) # Set final homed position - coord[axis] = hi.position_endstop + rail.get_homed_offset() - homing_state.set_homed_position(coord) + forcepos[axis] = hi.position_endstop + rail.get_homed_offset() + homing_state.set_homed_position(forcepos) def home(self, homing_state): # Each axis is homed independently and in order for axis in homing_state.get_axes(): |