diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2018-10-08 21:49:56 -0400 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2018-10-10 12:14:27 -0400 |
commit | d4bf51231a6e23e200f5fed536afa338ad681af6 (patch) | |
tree | 2eec987cba25e374577a4ff3728d8c2b2324807c /klippy/kinematics/cartesian.py | |
parent | 3db483e2702771775b7ae099a7a2089cb60a0309 (diff) | |
download | kutter-d4bf51231a6e23e200f5fed536afa338ad681af6.tar.gz kutter-d4bf51231a6e23e200f5fed536afa338ad681af6.tar.xz kutter-d4bf51231a6e23e200f5fed536afa338ad681af6.zip |
homing: Implement second home from homing.py
Move the logic for performing the second home from the kinematics
classes to the generic homing code.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
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(): |