Package Editor

88 views
Skip to first unread message

Chuck Hackett

unread,
May 8, 2026, 10:35:19 AM (4 days ago) May 8
to OpenPnP
Where can I find in-depth, up-to-date documentation or video on using the Package Editor and defining packages in general?

All I could find in the manual was "Packages are not currently used very much in OpenPnP, except for in fiducials. You can ignore them for the most part."

My parts are coming from slotautofeeders with a rotation of -90.  When I see the 18-pin dil in the camera, it's horizontal (already rotated by openpnp 90 degrees after picking from the feeder) but the pad array generated by the package editor is vertical.  As shown in the bottom camera after selecting visual test.

Thanks,
Chuck

Mike Menci

unread,
May 8, 2026, 12:32:07 PM (4 days ago) May 8
to OpenPnP

Chuck Hackett

unread,
May 8, 2026, 4:11:07 PM (4 days ago) May 8
to OpenPnP
Mike,
Yup, I saw that page.  It gives examples but no instructions to follow to make your own for ones not there.

For example: what determines what orientation a part arrives at the camera for alignment?  Does it have to match the footprint orientation (e.g.: dil pkg)?

These are just some of the questions.  I am stumbling my way through it very painfully.  I can get it to accept the part but did I describe it correctly? Is it accepting the part because I made things so big that it would accept anything?

I could ask a stream of questions about every option on every package definition tab but that would be a pain for me and those answering the questions.

Isn't there a writeup somewhere so that I can know how all the options interact so I can do it correctly?

I can't be the only new person that has run into this...

Chuck

tonyl...@gmail.com

unread,
May 8, 2026, 5:39:19 PM (4 days ago) May 8
to OpenPnP
First and foremost, you should match the orientation that your CAD package uses for its "zero" orientation. Most people, but not all, follow the standards outlined in https://www.surfacemountprocess.com/uploads/5/4/1/9/54196839/component_zero_orientations.pdf when defining footprints in their CAD packages.

Chuck Hackett

unread,
May 10, 2026, 3:14:46 PM (2 days ago) May 10
to OpenPnP
Tony,

That part I understand.  It's trying to understand the exact processing that OpenPnP does in doing the bottom camera visual inspection.

I'm looking for information on defining a package by hand so I can understand what the package generator generates and then how to setup and troubleshoot visual inspection which is very frustrating at the moment.  Even when I get it to work, sometimes I don't exactly know how I got it to work.  Hence it's a crapshoot defining the next part.

Chuck

Toby Dickenson

unread,
May 10, 2026, 4:32:19 PM (2 days ago) May 10
to ope...@googlegroups.com
Hi Chuck,

I think all the necessary information is there in the wiki. But obviously it is not presented in a way that has been sufficient for you to build a mental model of what is going on inside openpnp. Sometimes the wiki focuses on details at the expense of the bigger picture. Or maybe you are getting confused by some other features not related to package setup. So let me present an overview and maybe you can point out the concepts which need better coverage in the wiki.

My apologies if this is long and rambling.


Lets follow an example of creating a footprint for a soic package.

The "standard orientation" for a soic package is with pin 1 in the top left, and pin 2 just below it. Hopefully the cad agrees with this, but it does not matter too much if it does not and we get to check this later.
On the Package Footprint tab enter the body size (top left corner of the page). The generator section (top left) makes it easy to set up the pad dimensions for various configurations. A soic package is supported by the image.png button.

Select pin 1 and press the "Mark" button.

(I dont particularly like that this tab is called "footprint", and the detailed dimensions are for "pads". Those terms really apply to the geometry of the copper pads on the pcb, but here we are really specifying part dimensions not pcb feature dimensions)

Select which nozzle tips will be used with this part, on the "nozzle tips" tab.

Next check the Vision Compositing tab, which is useful because it gives a preview of the package. This shows the body (grey) and pins (white), and pin 1 has a marker. This preview is in the standard package orientation; with pin 1 in the top left.

Next create a part (on the parts tab), and link it to your new package.

There is a minor gui annoyance, but at this point you need to click on an old part, then click back onto your new part. This causes some package-specific details to get loaded into the camera reticule. This only happens on selecting a part now, not necessarily on other changes to a part row. 

In the camera reticule (both top and bottom) you will see:
* A blue line, which shows the nozzle orientation. This is the logical "top" of the nozzle frame of reference in the camera view.
* A grey circle on that blue line. This also indicates the logical "top"
* A yellow outline of the package pads. One of those will have the pin 1 marker. This shows the conventional location and orientation of the selected part, in the nozzle frame of reference.

You can rotate the nozzle by dragging the grey circle. The yellow package reticule will always rotate to match.


Next we set up a feeder. With a part exposed, press the button to move the top camera over the pick location. The yellow package details reticule is drawn as an overlay on the top camera image. Hopefully the yellow reticule lines up with the parts pins, and the yellow pin 1 marker lines up with a physical pin 1 marker on the part. If this is misaligned then you need to fix your feeder definition! Either a feeder orientation parameter, or an "orientation in tape" parameter. Note that "orientation in tape" is relative to the "standard orientation" we defined above.


Next mount an unpasted pcb on the machine, load a pcb file, and set up the job x/y position. This can be complicated in itself, particularly if your board are rotated in the panel or you are setting up a double-sided board, but I am assuming this is done. Press the "position camera at placement location" button. This will show the yellow reticule as an overlay on the top camera image. Hopefully the yellow reticule lines up with the copper pads, and the yellow pin1 marker lines up with a silkscreen pin 1 marker on the board. If this is misaligned then your cad has a disagreement about part orientation or center point. This would be unlikely for a soic package, but in my experience it is relatively common for other parts. It is no big deal; just correct the details in the openpnp board file.


Next select the part in the "parts" tab, press "feed and pick" button, and press "Test Alignment". The yellow reticule is an overlay on the bottom camera image, and it should match exactly with the part. The yellow reticule pin 1 marker should match any pin 1 distinguishing features visible on the bottom of the part.

The "Test Alignment" button has a "placement angle" field. If this was zero, then the blue line is vertical at the top of the screen and the part is shown in its conventional orientation. To be precise: the part was presented at approximately zero degrees orientation (maybe that involved rotating the nozzle after it was picked from the feeder), the vision measured the angular and position error, then the nozzle had a tiny movement to correct.

If you change the placement angle and press the "test alignment" button again, then the nozzle rotates, vision is processed at the new rotation, and the blue line moves to show the top of the part's frame of reference. Everything has rotated. During a job there are various factors that affect the angle at which vision is performed, but that doesnt have any consequences during this setup stage. The key detail is that bottom vision might be performed at any angle.

At this point I would advise turning on part size checking, using PadExtent method. This is an automatic check that the pins found by bottom vision match the size of the yellow reticule. This is off by default for backwards compatibility reasons.




--
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 visit https://groups.google.com/d/msgid/openpnp/52a8c2cd-a4c6-453a-b542-62a5a018b1a7n%40googlegroups.com.

Chuck Hackett

unread,
May 10, 2026, 5:29:09 PM (2 days ago) May 10
to OpenPnP
Toby,

Thank you very much for taking the time for this.  It fills in several gaps in my knowledge and gives several useful click-tools I was unaware of.

I have been able to get most of the parts working (0805's and other stuff).  The parts I'm hung up on at the moment are two ICs that require Composite imaging.  

I have to get ready to take the wife out to dinner for Mother's day so I don't have time to post all the details but ...

It boils down to when I do the test alignment (TQFP-44) it results in "No result found".  When I look at the pipeline steps the image goes totally black at step "6, MaskHsv".  This, I believe, is the same pipeline used for all the other, working, parts. 

Also, with Camera Roaming Radius set to 30, Package Vision Compositing set to "Restricted", extra shots 0. pick tol 2, leverage .2, inside corner unchecked.  When I press "Compute" i get  "Error: Invalid | No solution found. Cannot isolate corners with compositable X and Y symmetries. Check footprint. " and the red circle is solid (not dotted as shown in the wiki and does not appear to reflect the Roaming Radius), and a red diagonal line from top-right to lower-left.

BTW: When I select "Body" method and "Compute" it does arrive at a solution (square, min shots 2, max 4) and the "Roaming" circle appears to be correct.  "Automatic" and "Single Corners" does not Compute successfully. 

The other IC (SOIC-18) Compositing seems to work (Solution: Box | Min. shots: 3 | Max. shots: 4 | Computation: 0.00ms) but I still have the same vision issue as the TQFP-44.

Thank you again for the write-up, I'll study it in depth later ...

Chuck

Chuck Hackett

unread,
May 11, 2026, 7:09:23 PM (21 hours ago) May 11
to OpenPnP
Toby,

I have made a lot of progress.

The "Error: Invalid | No solution found. Cannot isolate corners with compositable X and Y symmetries. Check footprint." was due to the "Max Pick Tolerance" being too high.

The other issue with the SOIC-18 and TQFP-44 "Test Alignment" failures was, apparently, due to step  "6, MaskHsv" .  I created a Specialized pipeline and un-checked  "6, MaskHsv" to disable it and everything now working.  Is there some setting I can make to correct step 6 so that I can re-enable it?

Chuck       

Reply all
Reply to author
Forward
0 new messages