Basic Information:
Printer Model: Custom Tevo Black Widow
MCU / Printerboard: BTT SKR3
Frontend : Mainsail
Describe your issue:
I’m experiencing a weird behavior with bed mesh leveling. I get a substituted point that should not be substituted.
I issue this command :
BED_MESH_CALIBRATE mesh_min=140,95 mesh_max=185,129
and in my config.cfg :
[bed_mesh]
faulty_region_1_min: -50, 0
faulty_region_1_max: 30, 45
(it’s a clamp at the border of the bed near which I cannot probe. Useful when I have objects placed near the border of the bed, which is not the case most of the time)
I expect no faulty point with this particular mesh leveling request, but I get :
11:26 PM : 0 (140.00, 95.00), substituted points: [(0.0, 0.0), (0.0, 45.0), (30.0, 0.0)]
11:26 PM bed_mesh: faulty region points
I’ve track down the algorithm in extras/bed_mesh.py
, but I didn’t managed to reproduce the error extracting the _generate_points
method. (klipper/bed_mesh.py at 645a1b8364c3110f706db0f976ac5fa20b968c36 · Klipper3d/klipper · GitHub)
I don’t know if this might be related to my bl_touch config :
[bltouch]
x_offset : 30
y_offset : -16
I’m not familiar with kipper internals, and I’m unsure how the probe offset is integrated in the above.
I don’t know how to debug it further. I’ve check that I do have the latest version of klipper, reboot the raspi, etc… I don’t understand why the _generate_points
method, run separately with the same parameters doesn’t yield any substituted points, while in the “real situation” I get this one weird substitution.
Any help would be greatly appreciated.
for the sake of completeness, what I mean by “run separately with the same parameters” is a python file like this :
def _generate_points(self, error):
# This is copied from source code
class Obj:
pass
self = Obj()
self.mesh_min = 140, 95
self.mesh_max = 185, 129
self.radius = None
self.faulty_regions = [((-50, 0), (30, 45))]
self.substituted_indices = collections.OrderedDict()
self.mesh_config = {
"mesh_min": (0, 0),
"mesh_max": (325, 225),
"x_count": 3,
"y_count": 3,
}
_generate_points(self, RuntimeError)
print(self.points)
print()
print(self.substituted_indices)