Hi Jim,
That's the expected behavior. DirectionalCompensation is
the "gold standard" of the compensation, i.e. your machine seems
to exhibit a very consistent behavior over different speeds and
distances, which suggests the mechanics are nicely stiff.
(From the Wikipedia page about Backlash in Engineering).
https://github.com/openpnp/openpnp/wiki/Backlash-Compensation
If you look in the camera, i.e. by how much the machine physically moves, does it not appear as expected?
_Mark
--
You received this message because you are subscribed to the Google Groups "OpenPnP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/c45335c6-79ca-4bb8-a0d0-f296f171af7bn%40googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/bfe4c626-4d80-29f1-5f09-469477ab71ef%40makr.zone.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/CABRkqyDHg%2Bq-FZ_FEg9OyWcZtURsz65hgpiWw5Dax-p30C1sxQ%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/bfe4c626-4d80-29f1-5f09-469477ab71ef%40makr.zone.
I can only assume that the backlash calibration vision had a
problem. Because in essence it does exactly what you do, to
determine the backlash.
Checklist:
_Mark
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/CABRkqyDM_73exAwe04VOTzFADQsYEmQdbmvBXuXTsTXbKcsCxA%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/b11cdee2-9d94-51ec-2a84-9e0cbc544ae0%40makr.zone.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/CABRkqyBQ%3DqyRfR4GL-Sxd3MteM2V09AX2-jureVX8RkAkf2YtA%40mail.gmail.com.
Hi Jim,
It seems that vision is to blame.
You see the red line "Absolute Error" raising all the time?
This is indicating that Units per Pixels are not right.
Unfortunately, it seems just to be within the tolerance
of 0.03mm, so the calibration does not catch this. If you take
that ~0.3mm error two-sided, it could be that it results in the
"imagined" 0.065mm backlash you're seeing.
I'm not sure. It could also be a combination of reduced camera
quality/resolution and this.
Check these points:
If any of these are not a "Yes", please redo the Preliminary
camera calibration using Issues & Solutions. Enable
the "Include Solved?" checkbox to revisit the required solutions:
https://github.com/openpnp/openpnp/wiki/Issues-and-Solutions
Reopen and then revisit everything in uninterrupted sequence,
mostly as shown in this video:
Other comments:
> The lighting seems strong enough but I don't have the "test" option you showed in your Wiki link, as I have the device set as an OpenCV camera. (I wish I could change it but I recall that requires major editing to the machine.xml file.)
I strongly recommend going to the new OpenPnpCaptureCamera:
_Mark
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/CA%2BKNHNznnEt8pC4Me25Rkktmw1hxpi2BZ0j4k%2BjsLRNGHidPAw%40mail.gmail.com.
Thanks, Mark. I will attempt to do this today and let you know. By the way what field of view to you find best? I picked 20mm for no really good reason. That does limit the number of pixels per mm. Is there a better choice?
Best, Jim
Sent from Mail for Windows
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/45fea9f4-e1de-0cd7-59bd-e266c91cf794%40makr.zone.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/45fea9f4-e1de-0cd7-59bd-e266c91cf794%40makr.zone.
The absolute error is now quite OK.
But look at the faint blue line in the second graph. That is the
reversing backlash. You see how it is practically zero at the
smallest reverse move distances. That is exactly what you observe
with manual 0.01mm moves. It must be some kind of "reluctant
backlash" that only unfolds over larger distances. Like a belt
that is stiff, so it will not exhibit backlash on small move
reversals, but that is not completely taut, so it will exhibit
backlash over larger distances, once it has become taut again,
i.e. only reluctantly stretching against its stiffness... that's
just one possible explanation.
Please try the following: Instead of moving 0.01mm in one direction, then in the other, move 10mm, then in the other direction. Now you should see the predicted backlash.
I don't understand why Issues & Solutions proposes DirectionalCompensation. It should probably propose a hefty OneSided of about 0.75mm. Maybe there is a bug in the heuristics. Please send a log of the backlash calibration at TRACE level.
OneSided is the worst fallback. Maybe you can do something about
it, mechanically. It could be a belt that was overstretched and
now reacts partly elastically. Belts need to be surprisingly
lose. When plucked on the free side, they should sound very
low-note and low-key, nothing like a guitar. But once they have
been overstretched, they may be damaged 🙁.
_Mark
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/CABRkqyARbSQwz29NbdJ4Q3GNHujEnH4MVyD7EcT7koP_MbSVyQ%40mail.gmail.com.
Thanks for the insight! I will investigate.
Sent from Mail for Windows
From: mark maker
Sent: Tuesday, May 17, 2022 1:32 PM
To: ope...@googlegroups.com
Subject: Re: [OpenPnP] question about directional backlash compensation
The absolute error is now quite OK.
But look at the faint blue line in the second graph. That is the reversing backlash. You see how it is practically zero at the smallest reverse move distances. That is exactly what you observe with manual 0.01mm moves. It must be some kind of "reluctant backlash" that only unfolds over larger distances. Like a belt that is stiff, so it will not exhibit backlash on small move reversals, but that is not completely taut, so it will exhibit backlash over larger distances, once it has become taut again, i.e. only reluctantly stretching against its stiffness.. that's just one possible explanation.
Please try the following: Instead of moving 0.01mm in one direction, then in the other, move 10mm, then in the other direction. Now you should see the predicted backlash.
I don't understand why Issues & Solutions proposes DirectionalCompensation. It should probably propose a hefty OneSided of about 0.75mm. Maybe there is a bug in the heuristics. Please send a log of the backlash calibration at TRACE level.
OneSided is the worst fallback. Maybe you can do something about it, mechanically. It could be a belt that was overstretched and now reacts partly elastically. Belts need to be surprisingly lose. When plucked on the free side, they should sound very low-note and low-key, nothing like a guitar. But once they have been overstretched, they may be damaged 🙁.
_Mark
On 17.05.22 19:21, Jim Freeman wrote:
I turned off advanced calibration, then redid the top camera first and second fiducial calibrations, and immediately did the x-non-square backlash compensation. I basically got the same as yesterday, with the red curve drifting up. I redid advanced top camera calibration, then redid x-non-square backlash and got the following report: The calculated backlash is still about 0.068. This causes jumps when I do small (0.01) steps,, and the best backlash for this axis is 0, no backlash.
I also note that my top camera has substantial barrel distortion even after the advanced calibration. The black boundaries on the side of this image are in fact straight.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/ee1143fb-3239-bbf3-5dba-9539a05453fd%40makr.zone.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/ee1143fb-3239-bbf3-5dba-9539a05453fd%40makr.zone.
You received this message because you are subscribed to a topic in the Google Groups "OpenPnP" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/openpnp/62B-K-IPm-A/unsubscribe.
To unsubscribe from this group and all its topics, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/30aadf1f-44f2-4d52-aae3-72e61a085637n%40googlegroups.com.
@Tony, roger that.
Will you also include an @Commit handler (or similar) that fixes configs that went through the faulty version?
_Mark
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/1ce8daec-ee3f-44ab-b6d7-edca30b5a98bn%40googlegroups.com.
disregard, I saw the PR.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/8ad74516-6f91-576c-8d9f-2a8407bb7112%40makr.zone.
This is now in the testing version, thanks, @Tony.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/0bfaaf06-85ce-c871-3837-af9c2c2dc734%40makr.zone.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/1ce8daec-ee3f-44ab-b6d7-edca30b5a98bn%40googlegroups.com.
Hi Jim,
could you please redo the screenshot with the following:
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/CABRkqyA23Uo-6-WfCNgTeadCwpiwy5Lmo6b6fO7cPsqe9%2Bjtbg%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/afd4bde9-16b1-3fd9-dfbd-9746c4e729d3%40makr.zone.
Thanks.
Could you please post the same image but with first moving the
slider all the way to Show All Valid Pixels on the
Advanced Calibration tab? (screenshot)
And setting the grid to just Millimeters? (screenshot)
_Mark
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/CABRkqyBgA-%3DFowOcTWN16SFXqV-81kOzk4E1ojM50pAe6Pju3w%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/c0e457c2-acad-1702-d539-4365e70985b0%40makr.zone.
Hi Marc,
I'm not saying there isn't something off. 😇 But just from your description, it is not obvious.
The default tolerance is ±0.025mm, which is often rounded to ±0.03mm
(rounded up according to axis resolution/steps per mm, or if not
configured, to the next 0.01mm).
This is ± "plus-minus", i.e. for a full direction reversal we
allow up to 0.06mm difference.
It should be noted, that this is IMHO still
sufficient precision for 0402 / 0.4mm pitch parts or even
smaller.
The calibration heuristic will fully exploit the allowed
tolerance, i.e. it will propose the least intrusive compensation
method that still complies with the tolerance. Usually this is
governed by the inconsistency between the
smallest/slowest versus the largest/fastest moves and direction
reversal.
Long story short: you can reduce the allowed tolerance to
make it more conservative, if you like.
For instance, if you set ±0.01mm, what happens?
_Mark
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/927d03a7-1be9-4b69-9f79-099863d6fdc8n%40googlegroups.com.
Hi Marc,
That sounds as it should be.
> Could I set it to ~0.117 mm and get "perfect" results? Does it even work like that :P ?
If you want even more precision, just enter a tolerance of
0.005mm and redo the calibration.
But I will start to doubt, your machine can really deliver it, i.e. be that consistent between fast/slow and long/short and reversing/not reversing moves. It would be illustrative, if you made a screenshot of your Backlash Compensation tab on the Axis (the graphs).
> When placing a part, I suppose backlash, up-looking camera position, PCB fiducial location and nozzle<->down-looking camera offset errors all add-up.
Errors rarely just add up, in PnP, surprisingly often they cancel
each other out. That's often the beauty of using vision (it
is inherently "self-calibrating"). I might add, that both
fiducial, and nozzle tip detection was improved recently. It is
now delivering extremely robust sub-pixel precision. We
can get extremely precise (far below one pixel) positional
information from even low quality/low resolution camera images.
https://github.com/openpnp/openpnp/wiki/DetectCircularSymmetry
I do agree that striving for optimal backlash
compensation is certainly a valid goal. 😁 However, the
calibration heuristic switches between different method. If the
tolerance cannot be achieved with one method it will use a more
conservative method. The machine will become slower, as a cost for
extra precision. It is explained here:
https://github.com/openpnp/openpnp/wiki/Calibration-Solutions#backlash-compensation-method-selection
> Add to that the summer heat and humidity deforming everything.
Most of this is either irrelevant for PnP needs (effects too
small, it has been discussed many times in this group), or can
easily be compensated by OpenPnP, simply by re-homing the machine
from time to time, e.g. after the temperature/humidity has changed
a lot.
Many facilities in OpenPnP can be configured so they will re-calibrate using computer vision after the machine was homed, either immediately or on first use.
Pick and place machines (unlike CNC mills for instance) do not
need continuous and absolute geometric precision over the whole
machine table. That is only needed within the small area of the
PCB, which is first pinned down using fiducials and an Affine
Transformation, i.e. including any positional, rotational, scaling
and even shear errors. OpenPnP fully compensates all that, and
during the short time of populating one PCB, there is
hardly significant thermal expansions happening, right?
Other than that, a PnP only needs to re-find its assets. Because
we first calibrate these assets using vision (with huge allowable
tolerances of typically ±2mm), this is a no-brainer. When you
re-home the machine from time to time, the same thermal
expansion etc. will be present both when using
vision to calibrate, and when actually doing
the stuff we want. Any error cancels itself out.
Yes, exactly. But 0.1mm is not 0.01mm, and still almost double
the 0.06mm we were discussing initially 😎, i.e. there's still
0.04mm in the "budget" for other errors.
> Anyway, I'm glad to understand a bit more...
If you want to know more, look here:
https://github.com/openpnp/openpnp/wiki/Calibration-Solutions#calibrating-backlash-compensation
_Mark
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/a33c766c-2a64-42c5-8644-cf3cf2985efan%40googlegroups.com.