-
-
Notifications
You must be signed in to change notification settings - Fork 19.2k
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
Divide Z and XY moves in do_blocking_move_to for Delta #4363
Conversation
An excellent move - if you want to engrave the bed with the nozzle. |
I saw it at G29. Video clip: |
Please explain. I am not fully attending to this today! |
If you move from [i,j,k] to [l,m,0] you'll get a scratch from [i,j,0] to [l,m,0]. |
Context? I'm not fully attending to this, so please don't make me think. How did the nozzle get to [0,0,n]? Is this a G29 move down to the probe height or a move at the end of G28? Why is there a move to [l,m,0]? Is it trying to move to the first probe point? I don't understand the context in which a move to Z=0 would occur. Is that the bug? Or is that a probe of the bed with the nozzle as the probe? The Z is wrong? It isn't raising to the before-probe height when moving to the first point? |
The actual 'probe'-moves go far below zero. That works only if they are straight down. We do everything in the upper functions (probe_pt(), G29) to make them straight down - but for a moment this morning it looked like there are diagonal moves - and indeed they were there, but not because we prepared them wrong, but because the coordinate system shifted in a wrongly prepared |
What are the implications for this particular PR? I'm having a hard time figuring out what's good, what's bad, based on comments across these connected issues. |
9fd1f9c
to
b6a2b94
Compare
I've tested the updated this PR (a5cadff + b6a2b94) just now. |
@esenapaj Yeah, I didn't expect any improvement in this PR yet. The various comments from @Blue-Marlin are obviously very detailed and helpful. But I've been too scatter-brained the last two days to collate all the things pointed out and make the needed changes. Obviously I don't want to revert back to old code (and that would be very hard at this point) and I think we are very close to solving all the quirks. With the proposed changes, almost all moves will now update So first thing is, un-scatter my brain! Later today I will try to incorporate everything that we have discussed and solved. |
Is that good straight down magic, or bad straight down magic? 😕 |
When probing, with a delta and the z-difference method, a straight down move is absolutely required. If moving in x or y the result will be wrong. See calculate_delta() (https://github.com/MarlinFirmware/Marlin/blob/RC/Marlin/Marlin_main.cpp#L7128) |
So… Is it safe to merge this PR, or should we use the code that deals a little differently with the Z moves (as in this comment), or the code as you originally wrote it before I started messing with it? |
I hope we agree this (#4363) is the worst. I'll pimp up my #4361 tomorrow - or - if you are in a hurry - you know what and how to do. EDITED |
Well I hadn't really decided. If we only use the blocking move functions for probing and homing moves, the caller should already be using these functions in a reasonable way. In other words, using these functions with the understanding that Deltas will always do the Z move first (assuming this PR). So let's say you start a Also, on Delta perhaps it should always move to X=0, Y=0 at the same time. (Moves towards the center on a Delta are always safe because none of the carriages go above the currently-highest one.) The next move before probing could (or should) be to Z at the "between" height (if the deploy height is very high up), and then to the first probe XY position. (This could be a combined diagonal move also. See below.) To sum up, the following Delta probing:
It should also be fine to do diagonal moves between probe points. In fact, whenever moving up, XYZ can be combined to save time. Probe-down moves should always be Z-only, but not all downward moves need to be. A downward move that starts above the safe zone could move in Z to the top of the safe zone first, then move diagonally below that. |
Go for it. Consider the ideas from my previous post. It would be nice if the procedure did diagonal moves where possible. I guess with the |
Thinking about a special DELTA-probing sequence is an error. We need a sequence to fit all systems!
Considering this means a complete rethinking and rewrite - again. No! |
Says you.
Because the center is the safest point.
I refer to G29. Assume it's a reasonable value. The machine has been homed.
Simply noting the point in the sequence…
Inductive probes require this height to ensure they are no longer triggered.
Assume I know that and am simply not being exhaustive here.
If the deploy height is at the very top then this is safe.
One size fits all, until you consider how Delta could be slightly better.
Not necessarily. But I understand your trepidation. |
No. between needs to be much higher. High enough to not trigger above the highest possible obstacle. While bump_high is exactly what you describe. I fear we will never agree about that. |
This ( |
To make the way short for the potentially very slow slow probe move. |
Why would |
…nu_shown Fix Calibration menu shown during resuming
Background: XYZ Delta moves with
do_blocking_move_to
are combined. Moves like this don't work on a homed delta because there's limited XY movement at the top.Solution: For homing and leveling moves (
do_blocking_move_to
) this change makes sure the Z movement is always done before XY movement.Caveats: What about printing? When starting a print, if the first move is XYZ and the delta is homed to the top, will the XYZ end up off? It depends on how the delta ABC position is currently constrained.
References: #4361, #4356