aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/kinematics/cartesian.py
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2018-10-08 21:49:56 -0400
committerKevin O'Connor <kevin@koconnor.net>2018-10-10 12:14:27 -0400
commitd4bf51231a6e23e200f5fed536afa338ad681af6 (patch)
tree2eec987cba25e374577a4ff3728d8c2b2324807c /klippy/kinematics/cartesian.py
parent3db483e2702771775b7ae099a7a2089cb60a0309 (diff)
downloadkutter-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.py38
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():