I’m having a hard time understanding how all 6 calibration points could be correct, but the center point of those 6 points would be wrong. This would imply that the machine is somehow becoming un-calibrated in the midst of the stock, yet the edges are fine.
Said differently: mathematically, shouldn’t the error distance for any point within a given rectangle be smaller than any point on the edge? This would imply that the center point could be wrong by no more than the maximum error distance during calibration.
If people are seeing errors of 6mm on the center point, but they only calibrated to 10mm accuracy, this would make sense to me.
I think I understand your point, but (and I haven’t given it a whole lot of thought) if we had a perfect model (100% representative of Maslow’s universe) and perfect measurements then one iteration should be enough. But I don’t think we do and I believe its likely that some of the calibrated parameters are compensating for the imperfect model and imperfect measurements… this necessarily would reduce overall error (because that’s what optimization routines do), but might lead to things like an offset 0,0. Does the optimization routine use a measurement at 0,0?
I didn’t readily see how far off people’s 0,0 are… its a mighty long thread
No. I’m not sure how much it would really help. At best, calibration would converge faster (one more measurement per round means more improvement each round). However, I don’t really trust 0,0 measurements which is why I wanted to avoid homing on this location to begin with. I have never been able to be 100% confident I have my bit placed within 2mm of 0,0. It’s simply too hard to measure on such a big piece of stock with the tools I have.
How do people find the center? Do they snap chalk lines across the corners? Could you install a vbit in the router to zero in on a particular spot?
Regardless, I’d be interested in seeing if people’s 0,0 error improves by doing a second (and maybe third) calibration using the method I mentioned. I tend to think the error would have to reduce if the model is fairly accurate and good measurements are being taken… but with everything in life, I could be wrong.
I don’t think there’s been a good process described. All of these options require additional hardware, too (I don’t have chalk lines, T-squares, V-bits, etc.)
The problem is that you cannot perform the “set chain lengths” again, like you described. We ran into this bug yesterday. Here’s what happens:
After the first calibration round, left/right chain tolerance may often differ
When you say “the sled is at 0,0,” Makerverse would need to re-compute the “extended chain lengths”
However, using the calibrated settings to find chain lengths for 0,0 will result in different lengths for each chain, since chain tolerances are not even.
If you try to set the “extended chain lengths” with an average of these two values, it ends up messing up calibration because now the chain tolerances are incorrect.
… that said, you might be able to reset the chain tolerances to zero and start calibration again at this point. The extended chain lengths should now be more accurate, and the tolerances should become more even / smaller with this approach.
Yes, though this would require a firmware update for both Mega and Due.
I do worry about that, to some extent, as well. If the chain lengths differ for the 0,0 coordinate, it implies the sled is not centered between the motors when centered on the X axis. This means that the chain tolerances are doing a LOT of work to compensate for an off-center workspace. IME, when I’ve started with an off-center measurement, I end up with chain tolerances up into the 0.5 range! It’s still possible to achieve good calibration, but the tolerances are really compensating hard…
I’m tempted to go back to using measured-out chain lengths. This removes a variable from the equation. It also gives an opportunity to show the user “here is the centered X position.” That way, they can be told to align the stock with a well known X center point.
edit for the record, the reason I didn’t want to do this was that I found the measuring out of chains to be a frustrating step when I first built my Maslow.
I am a proponent of the measured-out chain technique, but know that it won’t measure out to 0,0 unless you can figure out beforehand precisely the amount of chain needed. Typically, if the chain tolerances aren’t really bad, you will be centered (x = 0 or close to it), but the y will be off depending upon however many links you extended. With triangular or holey calibration, there was no need to be concerned about where 0,0 actually was because the way it worked.
But it is important for the edge-to-edge calibration to know physically where that spot is. So if the user installs the chains (2031 mm or 1651 mm), have the user mark that location and then measure where it is on the board. Use those measurements as the reference point for the edge-to-edge… something like that.
Wrap both chains around the sprocket and pull them taut. They should just barely touch each other, and meet at the exact middle point of your top-beam.
When you press “Start”,"the machine executes a $H in order to set both chain lengths (internally) to the same length to begin.
You press the “Y -20mm” button until the chains are long enough to attach to the sled.
You attach the chains to the sled.
You press the “Y +/- 1mm” button until the top of the bit is exactly touching the stock.
It is suggested that you mark this location as the center point for mounting your stock.
When you press “Set Chains,” the machine knows that the chain lengths are equal. So when it converts the position (0, 24") into chain lengths, any error will be due to motor measurement error (which should be calibrated out).
Bonus: re-setting chains is easier. The marked point on the top edge of the stock, where the middle of the bit is touching the middle of the edge, will serve as a reset chain point.
Also, the DUE has a known problem where a fresh firmware install (un-homed) can “go crazy.” Adding the homing step in (2) before shuttling should fix that.
Haven’t thought about the rest of the steps, but how do you accomplish the first one? There’s always going to be sag in the chain… and then do you use some kind of ‘set sprocket’ routine to rotate the sprockets so you can make them just touch precisely in the middle? Seems all pretty difficult (not to be a negative nancy or anything)
Not at all. This is just a brainstorm. I guess it seemed to me that two chains, draped over the sprockets, could be grabbed easily by someone in the middle of the frame. I assumed that they would be able to pull the chains quite taut, using reasonable but not excessive force to make them meet in the middle. Keep in mind, the goal of this step is to ensure the chains are a same length, not to be 100% certain of the length.
edit but I see your point, they would need a device in-hand to adjust the motors. I always have my phone for this, but others may not.
Yeah, I guess I’m slowly coming to that conclusion, too. It’s a lot harder to accomplish with the Due stepper firmware. That’s why I want to use Y-axis movement to achieve the extension.
Maybe just start with chains on top of sprocket, like with extend chains, but otherwise follow the step 2 and beyond from above. Except now we know the exact chain length at the end.
I think I understand the dilemma. You have to have the equivalent of singleAxisMove() that bypasses any kinematics to make that work. I’d give the iterative method I mentioned a shot and see if the zero point improves
Yeah, forgot about that part. What if you only used one value for chain tolerance when calibrating? That way they are always equal. Maybe it wouldn’t be that big of a negative impact if it provides positive impacts elsewhere?
Do you need to pull them taut if all you are trying to do is to set equal lengths? If you had a line down the center of your board, you just need to make sure the cotter pin lines up with it. But, how do you get them to line up in the middle since the sprockets will not likely be identically oriented? Just using x+ and x- jog commands (would seem to work if you use small enough jogs)?
I’m thinking this gives us a pretty darn good chain measurement, if they’re taut, and we trust the distBetweenMotors. Which I think is generally relatively safe. 10’ and 12’ beams are the most regular (factory cut) part of the frame.
I think you should just start by centering on the top beam (2nd picture). As long as the chains are equally extended (y-move only) from that point forward, it will remain centered (edit assuming you’ve previously checked that there’s no chain tolerance setting already applied while running this step). So you could use this extension process to create that line, or at least, find the center top of the workspace (when you attach the sled and position it on the top of the stock).