Placement error

123 views
Skip to first unread message

David Griffiths

unread,
Oct 2, 2021, 3:16:21 AM10/2/21
to OpenPnP
I am trying the first placements with my machine and I am seeing positioning errors.
Image1.jpg

The camera is positioned exactly where the component should be placed. I have bottom vision enabled so any pick error should be compensated.
I have tried to determine where the error is coming in but the numbers I am seeing in the log don't make sense.  I thought the board location added to the component's X & Y position in the job should give the place position but when I put the camera at the place location the DRO is about 0.5mm out, which is pretty much the same offset I am seeing with the component.  There appears to be some other offset being added in ??

Cheers, DG

Michael Anton

unread,
Oct 2, 2021, 3:34:29 AM10/2/21
to OpenPnP
Is the focal plane of your bottom camera the same as the PCB plane?  If not, and your Z axis does not travel perfectly perpendicular to the PCB, this can be a source of error.

Mike Menci

unread,
Oct 2, 2021, 4:23:16 AM10/2/21
to ope...@googlegroups.com
Hi DG, 
1) Check jog 10 x 10mm in X and Y, does x and Y actually move 100mm in both directions? 
2) Check your relation camera to nozzle in calibrations
Mike 

On 2 Oct 2021, at 09.16, David Griffiths <digg...@gmail.com> wrote:


--
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/7ec64d8d-41e7-4275-a9b3-ca59e737db21n%40googlegroups.com.

David Griffiths

unread,
Oct 2, 2021, 6:39:57 PM10/2/21
to OpenPnP
Good suggestion Michael.
My UP camera is focusing about 10mm higher than the PCB. I will adjust it. Sadly I don't think that accounts for the error - I can see a slight variation in position as I jog the nozzle up and down, but not 0.5mm.
My movement size is checked (100mmx100mm) as is the nozzle offset.

Can someone explain these numbers to me please:

Board position after fiducial check.
Image1.jpg

Position of C12 in Job file (from P&P file).
Image5.jpg

The sum of the two X values above is 176.015 and yet when the camera is positioned over C12, the DRO shows this:
Image7.jpg  0.311mm difference.  This is not constant - I have seen up to 0.5mm. I am just using C12 as an example. It affects all components.
Image6.jpg

2021-10-03 09:32:57.052 ReferenceHead DEBUG: H1.moveToSafeZ(1.0)
2021-10-03 09:32:57.052 AbstractHeadMountable DEBUG: NR.moveToSafeZ(1.0)
2021-10-03 09:32:57.052 ReferenceNozzle TRACE: NR.toHeadLocation((210.480520, 12.534695, -2.000000, 0.000000 mm), ...) runout compensation (-0.474974, 0.081671, 0.000000, 0.000000 mm)
2021-10-03 09:32:57.052 ReferenceNozzle TRACE: NR.toHeadLocation((210.480520, 12.534695, -2.000000, 0.000000 mm), ...) runout compensation (-0.474974, 0.081671, 0.000000, 0.000000 mm)
2021-10-03 09:32:57.052 AbstractHeadMountable DEBUG: NL.moveToSafeZ(1.0)
2021-10-03 09:32:57.052 ReferenceNozzle TRACE: NL.toHeadLocation((175.972228, 12.451328, -1.900000, 90.951200 mm), ...) runout compensation (0.002433, 0.099826, 0.000000, 0.000000 mm)
2021-10-03 09:32:57.052 ReferenceNozzle TRACE: NL.toHeadLocation((175.972228, 12.451328, 2.100000, 90.951200 mm), ...) runout compensation (0.002433, 0.099826, 0.000000, 0.000000 mm)
2021-10-03 09:32:57.053 AbstractHeadMountable DEBUG: DOWN.moveToSafeZ(1.0)
2021-10-03 09:32:57.053 AbstractHeadMountable DEBUG: DOWN.moveTo((175.704228, 64.328637, 0.000000, -89.501749 mm), 1.0)
2021-10-03 09:32:57.055 AbstractHeadMountable DEBUG: DOWN.moveTo((175.704228, 64.328637, -20.200000, -89.501749 mm), 1.0)
2021-10-03 09:32:57.056 Scripting TRACE: Scripting.on Camera.AfterPosition
2021-10-03 09:32:57.056 GcodeAsyncDriver DEBUG: serial://COM3 commandQueue.offer(M204 S3747.78 G1 X175.7042     F16855.07 ; move to target, 30000)...
2021-10-03 09:32:57.057 GcodeAsyncDriver$WriterThread TRACE: [serial://COM3] >> M204 S3747.78 G1 X175.7042     F16855.07 ; move to target
2021-10-03 09:32:57.057 GcodeDriver$ReaderThread TRACE: [serial://COM3] << ok

(DOWN is of course the DOWN Camera)

TIA, DG

tonyl...@gmail.com

unread,
Oct 2, 2021, 10:34:05 PM10/2/21
to OpenPnP
There is an affine transform that compensates for scaling, rotation, and shear (non-squareness) differences between your machine and your PCB (assuming you are using three or more fiducials or placements to align your board) so you shouldn't expect a simple relation between the board location, the placement location in the job file, and the camera's DRO at the placement location.  Are you confident in your nozzle tip calibration?  If you run nozzle tip calibration multiple times do you get near the same answer each time (runout and phase)?  Have you tried any placements that are different angles than those you've shown?  If so, is the offset always in the same direction?

Also would help us help you if you could set your logging level to trace and post the (complete) resulting log file as well as your machine.xml.

David Griffiths

unread,
Oct 3, 2021, 2:16:48 AM10/3/21
to OpenPnP
Thanks Tony.  I am very happy with my nozzle tip calibration - very repeatable. I am using 4 fiducials on the board. 
I thought it might be something to do with the affine transformation for board correction but the adjustment seemed too large.
I am trying a couple of other things, like getting the blinds feeder to be reliable and I will send some logs etc if I am still stuck.

Cheers, DG

ma...@makr.zone

unread,
Oct 3, 2021, 3:53:48 AM10/3/21
to ope...@googlegroups.com

The placement error could come from a faulty bottom camera position and/or from faulty nozzle head offsets.

Like Tony said: post the whole log at TRACE level.

_Mark

ma...@makr.zone

unread,
Oct 3, 2021, 5:13:07 AM10/3/21
to ope...@googlegroups.com

Hi David,

I'll answer your private email here on the list, the answer might be useful for others to know or discuss.

> you have done anything in the test version (2021-09-25) that might be causing a component placement offset problem?

The testing version is all about camera calibration, nozzle head offsets, backlash calibration etc. tat all play into placement accuracy, so yes, there could be a bug (that's why it is in testing). But I don't think it would be specifically in that version (that was more about the backlash calibration graphics etc.). If there is a bug, it would most probably be in one of the earlier versions.

> Have you written anything about the new Vision Centre Offset boxes in Parts?

No, but why do you ask? You should never use these with simple passives. 

> BTW would it be possible to get the openpnp.org download page to show the timestamp of each file so you know whether you need to do a new download?

There is a link at the end of the downloads page. Click it and then enter the test/ subdirectory, you'll see all the versions, including the newest one:

https://openpnp.org/test-downloads/

https://openpnp.s3-us-west-2.amazonaws.com/index.html?prefix=test/

> I have been doing test placements and I am getting repeatable offset errors of about 0.4mm in X and 0.15mm in Y.

Again, please send log (at TRACE level) and machine.xml

_Mark


Am 03.10.2021 um 08:24 schrieb David Griffiths:
Hi Mark,

I was just wondering if you have done anything in the test version (2021-09-25) that might be causing a component placement offset problem?

I have been doing test placements and I am getting repeatable offset errors of about 0.4mm in X and 0.15mm in Y.

Have you written anything about the new Vision Centre Offset boxes in Parts?

BTW would it be possible to get the openpnp.org download page to show the timestamp of each file so you know whether you need to do a new download?

Cheers,
DG

David Griffiths

unread,
Oct 4, 2021, 10:43:46 PM10/4/21
to OpenPnP
Thanks Mark.

I have solved my problem. I tuned the nozzle runout pipeline and the component check pipeline which helped a little but the main issue was that my left nozzle offset was out by 0.15mm. Not sure how this happened  because I thought I checked it carefully using the Solutions calib.

I asked about the Vision Centre Offset because I wasn't sure what it was or how to use it. I guess it is for when the centroid position on a component is not in the centre of where the vision sees the component.

Have you written anything or done a video showing feeder OCR?  On the blinds feeder I see various items for OCR but nothing that tells the machine where to look for the text.

Cheers,
DG

ma...@makr.zone

unread,
Oct 5, 2021, 4:28:05 AM10/5/21
to ope...@googlegroups.com

> Have you written anything or done a video showing feeder OCR?  On the blinds feeder I see various items for OCR but nothing that tells the machine where to look for the text.

Yes.

NOTE: this is only in the Testing Version, i.e. the test branch for now. It is now documented in the Wiki:

https://github.com/openpnp/openpnp/wiki/BlindsFeeder#building-up-the-feeder-array

and here:

https://github.com/openpnp/openpnp/wiki/BlindsFeeder#ocr--qr-code

See also here:

https://github.com/openpnp/openpnp/pull/1220

_Mark

Reply all
Reply to author
Forward
0 new messages