New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[1.1.x] PROBE_SELECTED etc. #8325
[1.1.x] PROBE_SELECTED etc. #8325
Conversation
LVD-AC
commented
Nov 8, 2017
•
edited
edited
- also making G33 LCD independent from 3-point calibration menu
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix menu items and all is good!
Marlin/ultralcd.cpp
Outdated
@@ -2762,9 +2765,14 @@ void kill_screen(const char* lcd_msg) { | |||
MENU_ITEM_EDIT(float43, "Tx", &delta_tower_angle_trim[A_AXIS], -5.0, 5.0); | |||
MENU_ITEM_EDIT(float43, "Ty", &delta_tower_angle_trim[B_AXIS], -5.0, 5.0); | |||
MENU_ITEM_EDIT(float43, "Tz", &delta_tower_angle_trim[C_AXIS], -5.0, 5.0); | |||
recalc_delta_settings(delta_radius, delta_diagonal_rod, delta_tower_angle_trim); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The change pointed out in #8324 is also needed here.
Done |
So the last argument to probe_pt(any_other_x, any_other_y, stow_after_each, 1, false); And the same behavior change is seen when an XY move is needed, but not if the probe is to occur at the current position? Interesting… |
If the
const float nx = rx - (X_PROBE_OFFSET_FROM_EXTRUDER), ny = ry - (Y_PROBE_OFFSET_FROM_EXTRUDER);
if (printable
? !position_is_reachable(nx, ny)
: !position_is_reachable_by_probe(rx, ry)
) return NAN;
if (printable
? !position_is_reachable(rx, ry)
: !position_is_reachable_by_probe(rx, ry)
) return NAN;
const float nx = rx - (X_PROBE_OFFSET_FROM_EXTRUDER), ny = ry - (Y_PROBE_OFFSET_FROM_EXTRUDER); EDIT: Never mind the change. I see the intent is to only get a simpler bounds check.
|
So the
The value of
Do with that information what you will! If you want short moves from Since
|
5eb3ab1
to
2cfbb71
Compare
6addd40
to
15b5423
Compare
Additional changes:
|
The printable parameter was introduced because of the testing if the position is reachable for eccentric probes was to restrictive. G33 probes at nozzle position; all other probe moves in Marlin probe at bed positions. This is basically the difference between calibration where one wants to know the z-height for the delta mechanism of carriages, rods and effector to be at a specific spot; and bed levelling where one wants to know the z-height at certain bed coordinates.
is the only thing it should do
I didn't do that, and I can see no reason for it. CMIIW but do software endstops only limit moves of the nozzle, not the probe? In that case it is obsolete. And |
If this works, I could get rid of all the homing in between iterations for G33 which would speed up the procedure considerably. I'll give it a test... |
Ok, I comprehend the reasoning. It does the right test for the situation. So, this all seems to be pretty good now! I will await the results of your testing of the updated |
Simulated an eccentric probe and with the latest commit all seems to work fine in G33 and G29; need to do some more testing on the "homing" issue |
@@ -2412,7 +2412,7 @@ static void clean_up_after_endstop_or_probe_move() { | |||
|
|||
const float nx = rx - (X_PROBE_OFFSET_FROM_EXTRUDER), ny = ry - (Y_PROBE_OFFSET_FROM_EXTRUDER); | |||
|
|||
if (printable | |||
if (!printable |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Strange nobody with an eccentric probe noticed this before: with G33 probe (printable = false) check if nozzle is reachable : default use the more restrictive probe is reachable check !!!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Argh, yeah that was me. I must have been doing too much crack in August. 0938c62
Thanks for this correction!
@@ -5590,7 +5590,7 @@ void home_all_axes() { gcode_G28(true); } | |||
r = delta_calibration_radius * 0.1; | |||
z_at_pt[CEN] += | |||
#if HAS_BED_PROBE | |||
probe_pt(cos(a) * r + dx, sin(a) * r + dy, stow_after_each, 1) | |||
probe_pt(cos(a) * r + dx, sin(a) * r + dy, stow_after_each, 1, false) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
printable in G33 should always be false
center probe probe_pt(dx, dy, stow_after_each, 1, false) no longer behaves weird; so that one is solved.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is there any reason you can think of with this flag set to false why we wouldn't do the short_move
probe in run_z_probe
? That changes was introduced by my spirit animal @tcm0116 in f54e0fc#diff-1cb08de130a6ece2d1b5b9c37bcfef48R2384.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The flag just skips the test that the probe as well should stay within the printable area; it should do nothing else.
Homing is required if one of delta parameters is changed; the @thinkyhead approach does not set the new coordinates right to what they should be referenced to the home position. e.g. a height change or end-stop change does not seem to affect the new coordinates, and a delta radius change seems to introduce a false height offset. So rolling back on this one... |
Did some more tests and all seems well now ... (ready for merge) |
I did some archive checks: in Marlin 1.1.4 it was still the original
In 1.1.5 this was changed to (inverted logic):
The same happened to the (printable = false) argument in the G33 probe_pt calls : In 1.1.4 they were all still there, In 1.1.5 half of them disappeared. The All these inaccuracies are pretty recent (between 1.1.4 and 1.1.5) and are causing quit some issues now in things that were thoroughly tested. |
@@ -2424,12 +2424,6 @@ static void clean_up_after_endstop_or_probe_move() { | |||
do_blocking_move_to_z(delta_clip_start_height); | |||
#endif | |||
|
|||
#if HAS_SOFTWARE_ENDSTOPS |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Testing was done for printable = false that the nozzle stays within the printable radius; only the probe can move outside it (no testing on the probe with printable = false); so this is obsolete.
Interesting, anyway! I'll take a closer look at the kinematics conversions and see where the discrepancies are. If there are bugs to be fixed, maybe this could work in the future. |
dfdaa81
to
b0ff3a4
Compare
That changes was introduced by my spirit animal @tcm0116
<https://github.com/tcm0116>
I'm not sure if I'm honored or mortified...
|
Some spiritual animal made the probes crash-proof, but tried to preserve the long probe on the first G33 probe by redefining the meaning and purpose of the printable parameter. That answers issue #8298 from @tcm0116 ; the 'first probe to set the height' feature initially introduced to prevent damage from further probes apparently was no longer needed after 1.1.5 so I removed it, no big deal... damage control is now done on all probes in G33, G29 and elsewhere. Doing a first probe was a bit "prevent damage after the damage is done" since such damage will be caused by the 1st instance of probe_pt. It only protected against scraping the bed between probes. I had a good look at the differences between 1.1.4 and 1.1.5, I think we're back on track now with G33 and related issues. |