aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/extras
diff options
context:
space:
mode:
authorMatt Baker <baker.matt.j@gmail.com>2019-03-21 07:39:22 -0700
committerKevinOConnor <kevin@koconnor.net>2019-03-21 10:39:22 -0400
commitf2fbe984547c5291ee4cd9df40d4ee0f36ed1fbb (patch)
treed13dc7b8a20d99db29166dbfa318fe877d469394 /klippy/extras
parent6f91574cd9c6c84cd3dee3633cf9664d3f2026cf (diff)
downloadkutter-f2fbe984547c5291ee4cd9df40d4ee0f36ed1fbb.tar.gz
kutter-f2fbe984547c5291ee4cd9df40d4ee0f36ed1fbb.tar.xz
kutter-f2fbe984547c5291ee4cd9df40d4ee0f36ed1fbb.zip
bed_mesh: enable relative offset bed meshes (#1323)
Adds parameter for bed meshes to be adjusted relative to a probed point during calibration. This allows the probe z offset to be ignored for probes that are not stable over time (for example, the thermal drift of inductive probes). An endstop other than the probe is then necessary to determine the bed-nozzle offset. Signed-off-by: Matt Baker <baker.matt.j@gmail.com>
Diffstat (limited to 'klippy/extras')
-rw-r--r--klippy/extras/bed_mesh.py19
1 files changed, 17 insertions, 2 deletions
diff --git a/klippy/extras/bed_mesh.py b/klippy/extras/bed_mesh.py
index 506d5aa1..ec2b88ad 100644
--- a/klippy/extras/bed_mesh.py
+++ b/klippy/extras/bed_mesh.py
@@ -186,6 +186,7 @@ class BedMeshCalibrate:
self.printer = config.get_printer()
self.name = config.get_name()
self.radius = None
+ self.relative_reference_index = None
self.bedmesh = bedmesh
self.probed_z_table = None
self.build_map = False
@@ -267,8 +268,17 @@ class BedMeshCalibrate:
points.append((pos_x, pos_y))
pos_y += y_dist
logging.info('bed_mesh: generated points')
- for p in points:
- logging.info("(%.1f, %.1f)" % (p[0], p[1]))
+ for i, p in enumerate(points):
+ logging.info("%d: (%.1f, %.1f)" % (i, p[0], p[1]))
+ rref_index = config.get('relative_reference_index', None)
+ if rref_index is not None:
+ rref_index = int(rref_index)
+ if rref_index < 0 or rref_index >= len(points):
+ raise config.error("bed_mesh: relative reference index %d "
+ "is out of bounds" % (rref_index))
+ logging.info("bed_mesh: relative_reference_index %d is (%.2f, %.2f)"
+ % (rref_index, points[rref_index][0], points[rref_index][1]))
+ self.relative_reference_index = rref_index
return points
def _init_probe_params(self, config, points):
self.probe_params['min_x'] = min(points, key=lambda p: p[0])[0]
@@ -411,6 +421,11 @@ class BedMeshCalibrate:
x_cnt = self.probe_params['x_count']
y_cnt = self.probe_params['y_count']
+ if self.relative_reference_index is not None:
+ # zero out probe z offset and
+ # set offset relative to reference index
+ z_offset = positions[self.relative_reference_index][2]
+
self.probed_z_table = []
row = []
prev_pos = positions[0]