aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/kinematics
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2019-11-13 17:59:40 -0500
committerKevin O'Connor <kevin@koconnor.net>2019-11-13 19:00:17 -0500
commit224574da4a623e3f37ebfe8082a546a9df697638 (patch)
tree81c65dca1a785d7a18708a81ad674866f58a9d22 /klippy/kinematics
parente0e2f154986aa05666f3e0eea44a8c4074fa7cf7 (diff)
downloadkutter-224574da4a623e3f37ebfe8082a546a9df697638.tar.gz
kutter-224574da4a623e3f37ebfe8082a546a9df697638.tar.xz
kutter-224574da4a623e3f37ebfe8082a546a9df697638.zip
stepper: Add get/set_tag_position() and convert calc_position()
Rename calc_position() to calc_tag_position() and have it calculate the value of the position from the last stepper set_tag_position() call. This enables the calc_tag_position() code to be more flexible as it can be run with arbitrary positions. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy/kinematics')
-rw-r--r--klippy/kinematics/cartesian.py9
-rw-r--r--klippy/kinematics/corexy.py4
-rw-r--r--klippy/kinematics/delta.py4
-rw-r--r--klippy/kinematics/none.py2
-rw-r--r--klippy/kinematics/polar.py8
-rw-r--r--klippy/kinematics/winch.py4
6 files changed, 16 insertions, 15 deletions
diff --git a/klippy/kinematics/cartesian.py b/klippy/kinematics/cartesian.py
index f8c50bb9..671914d5 100644
--- a/klippy/kinematics/cartesian.py
+++ b/klippy/kinematics/cartesian.py
@@ -53,8 +53,8 @@ class CartKinematics:
if flags == "Z":
return self.rails[2].get_steppers()
return [s for rail in self.rails for s in rail.get_steppers()]
- def calc_position(self):
- return [rail.get_commanded_position() for rail in self.rails]
+ def calc_tag_position(self):
+ return [rail.get_tag_position() for rail in self.rails]
def set_position(self, newpos, homing_axes):
for i, rail in enumerate(self.rails):
rail.set_position(newpos)
@@ -125,8 +125,9 @@ class CartKinematics:
self.rails[dc_axis].set_trapq(None)
dc_rail.set_trapq(toolhead.get_trapq())
self.rails[dc_axis] = dc_rail
- extruder_pos = toolhead.get_position()[3]
- toolhead.set_position(self.calc_position() + [extruder_pos])
+ pos = toolhead.get_position()
+ pos[dc_axis] = dc_rail.get_commanded_position()
+ toolhead.set_position(pos)
if self.limits[dc_axis][0] <= self.limits[dc_axis][1]:
self.limits[dc_axis] = dc_rail.get_range()
cmd_SET_DUAL_CARRIAGE_help = "Set which carriage is active"
diff --git a/klippy/kinematics/corexy.py b/klippy/kinematics/corexy.py
index 21901720..aa88406d 100644
--- a/klippy/kinematics/corexy.py
+++ b/klippy/kinematics/corexy.py
@@ -43,8 +43,8 @@ class CoreXYKinematics:
if flags == "Z":
return self.rails[2].get_steppers()
return [s for rail in self.rails for s in rail.get_steppers()]
- def calc_position(self):
- pos = [rail.get_commanded_position() for rail in self.rails]
+ def calc_tag_position(self):
+ pos = [rail.get_tag_position() for rail in self.rails]
return [0.5 * (pos[0] + pos[1]), 0.5 * (pos[0] - pos[1]), pos[2]]
def set_position(self, newpos, homing_axes):
for i, rail in enumerate(self.rails):
diff --git a/klippy/kinematics/delta.py b/klippy/kinematics/delta.py
index af3aa092..ee01be56 100644
--- a/klippy/kinematics/delta.py
+++ b/klippy/kinematics/delta.py
@@ -92,8 +92,8 @@ class DeltaKinematics:
def _actuator_to_cartesian(self, spos):
sphere_coords = [(t[0], t[1], sp) for t, sp in zip(self.towers, spos)]
return mathutil.trilateration(sphere_coords, self.arm2)
- def calc_position(self):
- spos = [rail.get_commanded_position() for rail in self.rails]
+ def calc_tag_position(self):
+ spos = [rail.get_tag_position() for rail in self.rails]
return self._actuator_to_cartesian(spos)
def set_position(self, newpos, homing_axes):
for rail in self.rails:
diff --git a/klippy/kinematics/none.py b/klippy/kinematics/none.py
index 2250f884..6fe9884f 100644
--- a/klippy/kinematics/none.py
+++ b/klippy/kinematics/none.py
@@ -9,7 +9,7 @@ class NoneKinematics:
pass
def get_steppers(self, flags=""):
return []
- def calc_position(self):
+ def calc_tag_position(self):
return [0, 0, 0]
def set_position(self, newpos, homing_axes):
pass
diff --git a/klippy/kinematics/polar.py b/klippy/kinematics/polar.py
index ca2e55c7..3a043ab3 100644
--- a/klippy/kinematics/polar.py
+++ b/klippy/kinematics/polar.py
@@ -40,10 +40,10 @@ class PolarKinematics:
if flags == "Z":
return self.rails[1].get_steppers()
return list(self.steppers)
- def calc_position(self):
- bed_angle = self.steppers[0].get_commanded_position()
- arm_pos = self.rails[0].get_commanded_position()
- z_pos = self.rails[1].get_commanded_position()
+ def calc_tag_position(self):
+ bed_angle = self.steppers[0].get_tag_position()
+ arm_pos = self.rails[0].get_tag_position()
+ z_pos = self.rails[1].get_tag_position()
return [math.cos(bed_angle) * arm_pos, math.sin(bed_angle) * arm_pos,
z_pos]
def set_position(self, newpos, homing_axes):
diff --git a/klippy/kinematics/winch.py b/klippy/kinematics/winch.py
index 32d388ad..6792dbd7 100644
--- a/klippy/kinematics/winch.py
+++ b/klippy/kinematics/winch.py
@@ -31,9 +31,9 @@ class WinchKinematics:
self.set_position([0., 0., 0.], ())
def get_steppers(self, flags=""):
return list(self.steppers)
- def calc_position(self):
+ def calc_tag_position(self):
# Use only first three steppers to calculate cartesian position
- spos = [s.get_commanded_position() for s in self.steppers[:3]]
+ spos = [s.get_tag_position() for s in self.steppers[:3]]
return mathutil.trilateration(self.anchors[:3], [sp*sp for sp in spos])
def set_position(self, newpos, homing_axes):
for s in self.steppers: