aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--klippy/extras/bed_mesh.py8
-rw-r--r--klippy/extras/delta_calibrate.py2
-rw-r--r--klippy/extras/probe.py11
-rw-r--r--klippy/extras/quad_gantry_level.py15
4 files changed, 10 insertions, 26 deletions
diff --git a/klippy/extras/bed_mesh.py b/klippy/extras/bed_mesh.py
index 6ac3d098..d31c2609 100644
--- a/klippy/extras/bed_mesh.py
+++ b/klippy/extras/bed_mesh.py
@@ -246,11 +246,10 @@ class BedMeshCalibrate:
[0. for i in range(x_cnt)] for j in range(y_cnt)]
# Check for multi-sampled points
z_table_len = x_cnt * y_cnt
- if len(positions) % z_table_len:
+ if len(positions) != z_table_len:
raise self.gcode.error(
("bed_mesh: Invalid probe table length:\n"
"Sampled table length: %d") % len(positions))
- samples = len(positions) / z_table_len
# Populate the organized probed table
for i in range(z_table_len):
y_position = i / x_cnt
@@ -261,11 +260,8 @@ class BedMeshCalibrate:
else:
# Odd y count, x probed in the negative directon
x_position = (x_cnt - 1) - (i % x_cnt)
- idx = i * samples
- end = idx + samples
- avg_z = sum(p[2] for p in positions[idx:end]) / samples
self.probed_z_table[y_position][x_position] = \
- avg_z - z_offset
+ positions[i][2] - z_offset
if self.build_map:
outdict = {'z_probe_offsets:': self.probed_z_table}
self.gcode.respond(json.dumps(outdict))
diff --git a/klippy/extras/delta_calibrate.py b/klippy/extras/delta_calibrate.py
index c97f15ab..78a46586 100644
--- a/klippy/extras/delta_calibrate.py
+++ b/klippy/extras/delta_calibrate.py
@@ -184,7 +184,7 @@ class DeltaCalibrate:
for i, (z_offset, spos) in enumerate(probe_positions):
configfile.set(section, "height%d" % (i,), z_offset)
configfile.set(section, "height%d_pos" % (i,),
- "%d,%d,%d" % tuple(spos))
+ "%.3f,%.3f,%.3f" % tuple(spos))
# Save distance measurements
for i, (dist, spos1, spos2) in enumerate(distances):
configfile.set(section, "distance%d" % (i,), dist)
diff --git a/klippy/extras/probe.py b/klippy/extras/probe.py
index 34966623..3b96a9a3 100644
--- a/klippy/extras/probe.py
+++ b/klippy/extras/probe.py
@@ -201,13 +201,12 @@ class ProbePointsHelper:
# Lift toolhead
self._lift_z(self.horizontal_move_z)
# Check if done probing
- point_num = len(self.results) // self.samples
- if point_num >= len(self.probe_points):
+ if len(self.results) >= len(self.probe_points):
self.toolhead.get_last_move_time()
self._finalize(True)
return
# Move to next XY probe point
- x, y = self.probe_points[point_num]
+ x, y = self.probe_points[len(self.results)]
curpos = self.toolhead.get_position()
curpos[0] = x
curpos[1] = y
@@ -219,16 +218,20 @@ class ProbePointsHelper:
raise self.gcode.error(str(e))
self.gcode.reset_last_position()
def _automatic_probe_point(self):
+ positions = []
for i in range(self.samples):
try:
self.gcode.run_script_from_command("PROBE")
except self.gcode.error as e:
self._finalize(False)
raise
- self.results.append(self.toolhead.get_position()[:3])
+ positions.append(self.toolhead.get_position())
if i < self.samples - 1:
# retract
self._lift_z(self.sample_retract_dist, add=True)
+ avg_pos = [sum([pos[i] for pos in positions]) / self.samples
+ for i in range(3)]
+ self.results.append(avg_pos)
def start_probe(self):
# Begin probing
self.toolhead = self.printer.lookup_object('toolhead')
diff --git a/klippy/extras/quad_gantry_level.py b/klippy/extras/quad_gantry_level.py
index 166ecdbf..9eb1810c 100644
--- a/klippy/extras/quad_gantry_level.py
+++ b/klippy/extras/quad_gantry_level.py
@@ -39,22 +39,7 @@ class QuadGantryLevel:
cmd_QUAD_GANTRY_LEVEL_help = "Conform a moving, twistable gantry to the shape of a stationary bed"
def cmd_QUAD_GANTRY_LEVEL(self, params):
self.probe_helper.start_probe()
- def squash_positions(self,positions):
- # Group multi-probe data and average out the Z readings
- # Assumes samples come in sequentially
- grouped_pos = []
- for position in positions:
- if len(grouped_pos) > 0 and round(grouped_pos[-1][0],3) == round(position[0],3) and round(grouped_pos[-1][1],3) == round(position[1],3):
- grouped_pos[-1][2].append(position[2])
- else:
- grouped_pos.append(position)
- grouped_pos[-1][2] = [grouped_pos[-1][2]]
- for id,pos in enumerate(grouped_pos):
- grouped_pos[id][2] = sum(grouped_pos[id][2]) / len(grouped_pos[id][2])
- return grouped_pos
def probe_finalize(self, offsets, positions):
- if len(positions) > 4:
- positions = self.squash_positions(positions)
logging.info("quad_gantry_level Calculating gantry geometry with: %s", positions)
p1 = [positions[0][0] + offsets[0],positions[0][2]]
p2 = [positions[1][0] + offsets[0],positions[1][2]]