aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/kinematics/delta.py
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2018-07-15 22:05:13 -0400
committerKevin O'Connor <kevin@koconnor.net>2018-07-15 22:05:13 -0400
commit28fa954487443e48fff04dd412e11e877d50f143 (patch)
tree540b92443fab8ab46a739d0daaac26fca85fd3bb /klippy/kinematics/delta.py
parent94dc8167c9de120744d54403d60f4baf88de3926 (diff)
downloadkutter-28fa954487443e48fff04dd412e11e877d50f143.tar.gz
kutter-28fa954487443e48fff04dd412e11e877d50f143.tar.xz
kutter-28fa954487443e48fff04dd412e11e877d50f143.zip
delta: Store stable positions as integers
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy/kinematics/delta.py')
-rw-r--r--klippy/kinematics/delta.py24
1 files changed, 13 insertions, 11 deletions
diff --git a/klippy/kinematics/delta.py b/klippy/kinematics/delta.py
index 0c66c791..4cf2408d 100644
--- a/klippy/kinematics/delta.py
+++ b/klippy/kinematics/delta.py
@@ -163,17 +163,16 @@ class DeltaKinematics:
def get_stable_position(self):
steppers = [rail.get_steppers()[0] for rail in self.rails]
return [int((ep - s.get_commanded_position()) / s.get_step_dist() + .5)
- * s.get_step_dist()
for ep, s in zip(self.endstops, steppers)]
def get_calibrate_params(self):
- return {
- 'endstop_a': self.rails[0].get_homing_info().position_endstop,
- 'endstop_b': self.rails[1].get_homing_info().position_endstop,
- 'endstop_c': self.rails[2].get_homing_info().position_endstop,
- 'angle_a': self.angles[0], 'angle_b': self.angles[1],
- 'angle_c': self.angles[2], 'radius': self.radius,
- 'arm_a': self.arm_lengths[0], 'arm_b': self.arm_lengths[1],
- 'arm_c': self.arm_lengths[2] }
+ out = { 'radius': self.radius }
+ for i, axis in enumerate('abc'):
+ rail = self.rails[i]
+ out['endstop_'+axis] = rail.get_homing_info().position_endstop
+ out['stepdist_'+axis] = rail.get_steppers()[0].get_step_dist()
+ out['angle_'+axis] = self.angles[i]
+ out['arm_'+axis] = self.arm_lengths[i]
+ return out
def get_positions_from_stable(self, stable_positions, params):
angle_names = ['angle_a', 'angle_b', 'angle_c']
angles = [math.radians(params[an]) for an in angle_names]
@@ -181,13 +180,16 @@ class DeltaKinematics:
radius2 = radius**2
towers = [(math.cos(a) * radius, math.sin(a) * radius) for a in angles]
arm2 = [params[an]**2 for an in ['arm_a', 'arm_b', 'arm_c']]
+ stepdist_names = ['stepdist_a', 'stepdist_b', 'stepdist_c']
+ stepdists = [params[sn] for sn in stepdist_names]
endstop_names = ['endstop_a', 'endstop_b', 'endstop_c']
endstops = [params[en] + math.sqrt(a2 - radius2)
for en, a2 in zip(endstop_names, arm2)]
out = []
for spos in stable_positions:
- sphere_coords = [(t[0], t[1], es - sp)
- for t, es, sp in zip(towers, endstops, spos)]
+ sphere_coords = [
+ (t[0], t[1], es - sp * sd)
+ for t, es, sd, sp in zip(towers, endstops, stepdists, spos) ]
out.append(mathutil.trilateration(sphere_coords, arm2))
return out