diff options
Diffstat (limited to 'klippy/kinematics/corexy.py')
-rw-r--r-- | klippy/kinematics/corexy.py | 41 |
1 files changed, 12 insertions, 29 deletions
diff --git a/klippy/kinematics/corexy.py b/klippy/kinematics/corexy.py index 4121c4b6..99f48fbf 100644 --- a/klippy/kinematics/corexy.py +++ b/klippy/kinematics/corexy.py @@ -48,42 +48,25 @@ class CoreXYKinematics: # Each axis is homed independently and in order for axis in homing_state.get_axes(): rail = self.rails[axis] - # 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) if axis == 2: # Support endstop phase detection on Z axis - 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 motor_off(self, print_time): self.limits = [(1.0, -1.0)] * 3 for rail in self.rails: |