Closed boelle closed 8 years ago
From @RalphSutherland on May 10, 2016 11:33
Basically I now take the measured z probe points, offset immediately to the nozzle height, and feed those nozzle points through the plane and rotation equation solvers, and in planner set and get I transform from nozzle coordinated to stepper coordinates, and back again including the rotation in the nozzle plane, and the plane equation coefficient[2] z offset, which is now in terms of the nozzle, not the z probe.
From @jbrazio on May 10, 2016 13:55
When probing the nozzle shifts the "center of attention" to the probe, so all measurements must be related to the probe. When sifting back *_PROBE_OFFSET_FROM_EXTRUDER
are applied to correct to the new "center of attention" which is the nozzle.
For instance, when you define probing points all of them are subject to the probe being the "center of attention", not the nozzle.
From @gddeen on May 10, 2016 17:5
A good thing would be to remove the Z-Probe from the Auto Bed Leveling and also make it part of Mesh Bed Leveling.
When I issue M401 M402 with Mesh Bed level, it is as if the Z-Probe isn't exist...
From @RalphSutherland on May 11, 2016 0:27
Yes I agree. Mesh Bed Leveling and Auto Bed leveling have a lot in common, and could be made 1) more uniformly treated, and 2) mutually compatible. I like how MBL can be temporarily disabled and then restored, and I like how ABL does the automatic measuring - each can take advantage of the other using a unified transform and inverse transform approach to mapping nozzle coordinates to stepper coordinates.
I also now realise that the earlier coders do indeed intend the z-probe odffset to be -ve (logical) but the current documentation and wiki give worked example where it tells you to use +ve offsets, which is crazy.
From @RalphSutherland on May 11, 2016 0:30
We need to make the target and source coordinates clear in the code. Stepper coordinate as defined by the homing. Probe-Bed coords defined by the probe. and Nozzle coordinates which is what the G-Code expects to use.
From @Roxy-3DPrintBoard on May 11, 2016 2:7
I like how MBL can be temporarily disabled and then restored, and I like how ABL does the automatic measuring - each can take advantage of the other using a unified transform and inverse transform approach to mapping nozzle coordinates to stepper coordinates.
I'm going the opposite approach. I'm going to do a high resolution mesh, and then allow either 3-Point or Grid Auto Leveling on the Mesh.
From @gddeen on May 11, 2016 2:23
@RalphSutherland, I think people just under comment and use nouns as verbs and such in short phrases which are parseable 3 to 4 different ways. If you play with it long enough you get a lot of 'Eureka' moments where you actually see what 'bed somewhere below but above 0' means... Is bed a verb or noun? Below what? above 0. Ahhhhh a positive value.
The average person will follow what someone else told them to do with the values...
From @Blue-Marlin on May 11, 2016 2:27
In every case, if 3-point-, grid-, delta- or mesh-leveling we have to probe a set of points. What we do with the measurements is an other thing. Sadly at the moment the format and order of the measurements is 'optimised' for the different uses. That has to be cleaned up.
From @Blue-Marlin on May 11, 2016 2:39
In almost all cases the trigger point of a probe is below the nozzle (z-zero). Only in a few cases, when the nozzle has to be pushed up (or the bed down), like with FSRs or the proposed TILT_PROBE, the trigger point is above z-zero.
From @Sniffle on May 11, 2016 2:58
Dont forget the metal sensing(name escapes me) and ir probes those are also positive
From @Blue-Marlin on May 11, 2016 9:26
@Sniffle No, they are not! The bottom of an inductive, capacitive, ir probe is above the nozzle, but their trigger points are below.
From @thinkyhead on May 12, 2016 1:47
To put it succinctly:
Z_PROBE_OFFSET_FROM_EXTRUDER
The documentation on these options is not ambiguous.
// nozzle Z to Z probe offset: probe is -below +above (the nozzle tip)
When you trigger a probe below the nozzle, the current Nozzle Z is larger than the current Probe Z, measuring from the bed upwards. So probe_z - nozzle_z == negative_value
. Let's say you are probing and when the probe triggers, the Z position (of the nozzle tip) is 2mm. The nozzle is 2mm above the bed. Where is the probe "tip" located? We now know it's at current_position[Z_AXIS] + (Z_PROBE_OFFSET_FROM_EXTRUDER)
. The Z_PROBE_OFFSET_FROM_EXTRUDER
in this case should be -2
.
Compare the documentation for Z_PROBE_OFFSET_FROM_EXTRUDER
to that for X:
// nozzle X to Z probe offset: probe is -left +right
When the probe is to the left of the nozzle, then the Nozzle X is larger than the Probe X. So probe_x - nozzle_x == negative_value
.
These offsets are applied to determine where to put the nozzle when you want a certain probe position. To put the probe at X=20, for example, with X_PROBE_OFFSET_FROM_EXTRUDER
set to -10
(left of the nozzle), you want to put the nozzle at X=30. Hence:
nozzle_x = desired_probe_x - (X_PROBE_OFFSET_FROM_EXTRUDER); // e.g., 30 = 20 - (-10)
Thank you for your interest making Marlin better and reporting this issue but this topic has been open for a long period of time without any further development. Marlin has been under heavy development for the past couple of months and moving to it's last mile to finish the RC cycle and release Marlin v1.1.0. We suggest you to try out the latest RCBugfix branch and reopening this issue if required.
This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
From @RalphSutherland on May 10, 2016 8:13
HI, I'm working on improving auto-bed leveling, and may add auto mesh bed leveling too. But I, like others apparently, have been confused by the probe offsets notation in the code, which isn't helped by what I think is an inconsistent documentation and resulting inconsistent code.
Two of the offsets look like nozzle-probe offsets and one like a probe-nozzle offset. I'd like to change that and the documentation.
Here are my notes form my codebase. I want to make use of the 'd' coefficient in the plane equation to make the rotation transform/inverse transform take into account the mean bed height as well. A composite z-probe+bedheight offeset could be used now as long as I reverse some of the signs, but I'd like to make the system consistent and work with systems where home is off bed and below and 'd' is not small. Any comments welcome, and if/when I get working code I'll pull request to the appropriate branch.
Copied from original issue: MarlinFirmware/MarlinDev#420