Stuck on fiducials and missaligment

362 views
Skip to first unread message

Lisandro B

unread,
Oct 26, 2016, 1:14:11 PM10/26/16
to OpenPnP
Im stuck with this, surely a missconfiguration,  any help greatly apreciated.



I manually set the origin of the board

Just to check, I look that the first fiducial and component (both closest to 0,0) are ok, they are

Then I do a fiducial recognition, but the result is that it moves the origin lower and if I control again the fiducial and component, they also end below

All of this end with some components at the top correctly placed but it "degenerates" as it goes low.

Please see: https://youtu.be/q4b04BaKwWs

Jason von Nieda

unread,
Oct 26, 2016, 1:59:58 PM10/26/16
to OpenPnP
Lisandro,

A few things to check:

1. How old is your OpenPnP? There was a pretty major fiducial bug fix done on September 5th that could reflect this error.
2. How do you have your fiducial defined in the package footprint definition? Is it the right size?
3. Consider increasing your camera settle time. I notice that your head bounces a lot after moves, and if is still bouncing when the picture is taken this will throw things off.

Jason


--
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 post to this group, send email to ope...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/694b233b-013f-4919-8c1c-1cd1aad32b37%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Lisandro B

unread,
Oct 26, 2016, 2:38:23 PM10/26/16
to OpenPnP
1-Latest development
2-Yes, right size, it detects i every time and the "fiducial reticle"  fits perfectly
3-I noticed that so I measure the time it takes to stabilize which is approximately a second, its in 1500ms

txs!

Lisandro B

unread,
Oct 26, 2016, 3:03:02 PM10/26/16
to OpenPnP
<openpnp-machine>
   
<machine class="org.openpnp.machine.reference.ReferenceMachine" speed="5.0">
     
<heads>
         
<head class="org.openpnp.machine.reference.ReferenceHead" id="22964dce-252a-453e-8106-65db104a0763" name="H1">
           
<nozzles>
               
<nozzle class="org.openpnp.machine.reference.ReferenceNozzle" id="69edd567-df6c-495a-9b30-2fcbf5c9742f" name="N1" pick-dwell-milliseconds="0" place-dwell-milliseconds="0" current-nozzle-tip-id="e092921a-2eef-449b-b340-aa3f40d8d791" changer-enabled="false" limit-rotation="true">
                 
<nozzle-tips>
                     
<nozzle-tip class="org.openpnp.machine.reference.ReferenceNozzleTip" id="e092921a-2eef-449b-b340-aa3f40d8d791" name="NT1" allow-incompatible-packages="true">
                       
<compatible-package-ids class="java.util.HashSet"/>
                       
<changer-start-location units="Millimeters" x="0.0" y="0.0" z="0.0" rotation="0.0"/>
                       
<changer-mid-location units="Millimeters" x="0.0" y="0.0" z="0.0" rotation="0.0"/>
                       
<changer-end-location units="Millimeters" x="0.0" y="0.0" z="0.0" rotation="0.0"/>
                       
<calibration angle-increment="15.0" enabled="false">
                           
<pipeline>
                             
<stages>
                                 
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageCapture" name="9" enabled="true" settle-first="true"/>
                                 
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="1" enabled="true" conversion="Bgr2Gray"/>
                                 
<cv-stage class="org.openpnp.vision.pipeline.stages.BlurMedian" name="4" enabled="true" kernel-size="3"/>
                                 
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskCircle" name="3" enabled="true" diameter="200"/>
                                 
<cv-stage class="org.openpnp.vision.pipeline.stages.Threshold" name="2" enabled="true" threshold="190" auto="true" invert="false"/>
                                 
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskCircle" name="5" enabled="true" diameter="100"/>
                                 
<cv-stage class="org.openpnp.vision.pipeline.stages.SimpleBlobDetector" name="result" enabled="true"/>
                                 
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageRecall" name="0" enabled="true" image-stage-name="9"/>
                                 
<cv-stage class="org.openpnp.vision.pipeline.stages.DrawKeyPoints" name="7" enabled="true" key-points-stage-name="result">
                                   
<color r="255" g="0" b="204" a="255"/>
                                 
</cv-stage>
                             
</stages>
                           
</pipeline>
                       
</calibration>
                     
</nozzle-tip>
                 
</nozzle-tips>
                 
<head-offsets units="Millimeters" x="0.0" y="0.0" z="0.0" rotation="0.0"/>
                 
<safe-z value="0.0" units="Millimeters"/>
               
</nozzle>
           
</nozzles>
           
<actuators>
               
<actuator class="org.openpnp.machine.reference.ReferenceActuator" id="5b8a8cbd-d6c1-4324-af8b-eba5f0444622" name="A1" index="0">
                 
<head-offsets units="Millimeters" x="0.0" y="0.0" z="0.0" rotation="0.0"/>
                 
<safe-z value="0.0" units="Millimeters"/>
               
</actuator>
               
<actuator class="org.openpnp.machine.reference.ReferenceActuator" id="5b8a8cbd-d6c1-4324-af8b-eba5f0444622" name="A2" index="1">
                 
<head-offsets units="Millimeters" x="0.0" y="0.0" z="0.0" rotation="0.0"/>
                 
<safe-z value="0.0" units="Millimeters"/>
               
</actuator>
           
</actuators>
           
<cameras>
               
<camera class="org.openpnp.machine.reference.camera.OpenCvCamera" id="2e78436e-f335-46a3-b099-1e16420c99f6" name="Micro" looking="Down" settle-time-ms="1000" rotation="0.0" flip-x="false" flip-y="false" offset-x="0" offset-y="0" crop-width="0" crop-height="0" device-index="0" preferred-width="0" preferred-height="0" fps="24">
                 
<units-per-pixel units="Millimeters" x="0.032" y="0.032" z="0.0" rotation="0.0"/>
                 
<vision-provider class="org.openpnp.machine.reference.vision.OpenCvVisionProvider"/>
                 
<head-offsets units="Millimeters" x="-74.0" y="5.05" z="0.0" rotation="0.0"/>
                 
<safe-z value="0.0" units="Millimeters"/>
                 
<calibration enabled="false">
                     
<camera-matrix length="9">0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.49488167E-315, 2.494882027E-315, 9.486E-321</camera-matrix>
                     
<distortion-coefficients length="5">0.0, 0.0, 0.0, 0.0, 0.0</distortion-coefficients>
                 
</calibration>
               
</camera>
           
</cameras>
           
<paste-dispensers>
               
<paste-dispenser class="org.openpnp.machine.reference.ReferencePasteDispenser" id="53050ccf-59a0-4d9f-a8d3-6216f5412e4e" name="D1">
                 
<head-offsets units="Millimeters" x="0.0" y="0.0" z="0.0" rotation="0.0"/>
                 
<safe-z value="0.0" units="Millimeters"/>
               
</paste-dispenser>
           
</paste-dispensers>
           
<park-location units="Millimeters" x="625.0" y="490.0" z="0.0" rotation="0.0"/>
         
</head>
     
</heads>
     
<signalers/>
     
<feeders>
         
<feeder class="org.openpnp.machine.reference.feeder.ReferenceStripFeeder" id="923eedf1-6a1a-4bbc-b603-421066262adc" name="R0805" enabled="true" part-id="R0805-1K" retry-count="3" tape-type="WhitePaper" vision-enabled="true" feed-count="0">
           
<location units="Millimeters" x="0.0" y="0.0" z="0.0" rotation="0.0"/>
           
<reference-hole-location units="Millimeters" x="147.347" y="40.285" z="0.0" rotation="0.0"/>
           
<last-hole-location units="Millimeters" x="147.433" y="36.238" z="0.0" rotation="0.0"/>
           
<part-pitch value="4.0" units="Millimeters"/>
           
<tape-width value="8.0" units="Millimeters"/>
         
</feeder>
         
<feeder class="org.openpnp.machine.reference.feeder.ReferenceStripFeeder" id="f869fbd5-4e6f-4ba7-bfc7-476bd6cce845" name="R0603" enabled="true" part-id="R0603-1K" retry-count="3" tape-type="WhitePaper" vision-enabled="true" feed-count="0">
           
<location units="Millimeters" x="0.0" y="0.0" z="0.0" rotation="0.0"/>
           
<reference-hole-location units="Millimeters" x="157.385" y="40.199" z="0.0" rotation="0.0"/>
           
<last-hole-location units="Millimeters" x="157.328" y="36.267" z="0.0" rotation="0.0"/>
           
<part-pitch value="4.0" units="Millimeters"/>
           
<tape-width value="8.0" units="Millimeters"/>
         
</feeder>
         
<feeder class="org.openpnp.machine.reference.feeder.ReferenceStripFeeder" id="bcfa145d-0783-4681-a520-082c9ed65799" name="R0402" enabled="true" part-id="R0402-1K" retry-count="3" tape-type="WhitePaper" vision-enabled="true" feed-count="0">
           
<location units="Millimeters" x="0.0" y="0.0" z="0.0" rotation="0.0"/>
           
<reference-hole-location units="Millimeters" x="167.366" y="40.256" z="0.0" rotation="0.0"/>
           
<last-hole-location units="Millimeters" x="167.366" y="36.295" z="0.0" rotation="0.0"/>
           
<part-pitch value="2.0" units="Millimeters"/>
           
<tape-width value="8.0" units="Millimeters"/>
         
</feeder>
         
<feeder class="org.openpnp.machine.reference.feeder.ReferenceStripFeeder" id="fdd41763-bb15-4b45-9ffd-cbbc0c52f630" name="R0201" enabled="true" part-id="R0201-1K" retry-count="3" tape-type="WhitePaper" vision-enabled="true" feed-count="0">
           
<location units="Millimeters" x="0.0" y="0.0" z="0.0" rotation="0.0"/>
           
<reference-hole-location units="Millimeters" x="177.404" y="40.256" z="0.0" rotation="0.0"/>
           
<last-hole-location units="Millimeters" x="177.376" y="36.267" z="0.0" rotation="0.0"/>
           
<part-pitch value="2.0" units="Millimeters"/>
           
<tape-width value="8.0" units="Millimeters"/>
         
</feeder>
         
<feeder class="org.openpnp.machine.reference.feeder.ReferenceStripFeeder" id="93acbdf4-d715-4bf9-bc70-23016f06b8e4" name="R0805-2" enabled="true" part-id="R0805-1K" retry-count="3" tape-type="WhitePaper" vision-enabled="true" feed-count="0">
           
<location units="Millimeters" x="0.0" y="0.0" z="0.0" rotation="0.0"/>
           
<reference-hole-location units="Millimeters" x="138.715" y="88.244" z="0.0" rotation="0.0"/>
           
<last-hole-location units="Millimeters" x="139.057" y="84.226" z="0.0" rotation="0.0"/>
           
<part-pitch value="4.0" units="Millimeters"/>
           
<tape-width value="8.0" units="Millimeters"/>
         
</feeder>
         
<feeder class="org.openpnp.machine.reference.feeder.ReferenceStripFeeder" id="d50c9d17-75c5-45ee-b179-a93630f2070b" name="R0805-3" enabled="true" part-id="R0805-1K" retry-count="3" tape-type="WhitePaper" vision-enabled="true" feed-count="0">
           
<location units="Millimeters" x="0.0" y="0.0" z="0.0" rotation="0.0"/>
           
<reference-hole-location units="Millimeters" x="155.055" y="87.275" z="0.0" rotation="0.0"/>
           
<last-hole-location units="Millimeters" x="154.713" y="83.314" z="0.0" rotation="0.0"/>
           
<part-pitch value="4.0" units="Millimeters"/>
           
<tape-width value="8.0" units="Millimeters"/>
         
</feeder>
         
<feeder class="org.openpnp.machine.reference.feeder.ReferenceStripFeeder" id="0eafdd64-6a46-4230-9fd1-9cdac1dfc055" name="R0805-4" enabled="true" part-id="R0805-1K" retry-count="3" tape-type="WhitePaper" vision-enabled="true" feed-count="0">
           
<location units="Millimeters" x="0.0" y="0.0" z="0.0" rotation="0.0"/>
           
<reference-hole-location units="Millimeters" x="172.679" y="56.242" z="0.0" rotation="0.0"/>
           
<last-hole-location units="Millimeters" x="172.251" y="60.289" z="0.0" rotation="0.0"/>
           
<part-pitch value="4.0" units="Millimeters"/>
           
<tape-width value="8.0" units="Millimeters"/>
         
</feeder>
         
<feeder class="org.openpnp.machine.reference.feeder.ReferenceStripFeeder" id="2597a4ca-abe9-4c9d-8261-5591ca9dc6fe" name="R0805-5" enabled="true" part-id="R0805-1K" retry-count="3" tape-type="WhitePaper" vision-enabled="true" feed-count="0">
           
<location units="Millimeters" x="0.0" y="0.0" z="0.0" rotation="0.0"/>
           
<reference-hole-location units="Millimeters" x="184.199" y="55.074" z="0.0" rotation="0.0"/>
           
<last-hole-location units="Millimeters" x="184.456" y="59.035" z="0.0" rotation="0.0"/>
           
<part-pitch value="4.0" units="Millimeters"/>
           
<tape-width value="8.0" units="Millimeters"/>
         
</feeder>
         
<feeder class="org.openpnp.machine.reference.feeder.ReferenceTrayFeeder" id="43efe069-7a72-4d09-aaca-c70af4bbfe42" name="ReferenceTrayFeeder" enabled="false" part-id="LPC1768" retry-count="3" tray-count-x="1" tray-count-y="1" feed-count="0">
           
<location units="Millimeters" x="100.0" y="92.0" z="0.0" rotation="0.0"/>
           
<offsets units="Millimeters" x="0.0" y="0.0" z="0.0" rotation="0.0"/>
         
</feeder>
         
<feeder class="org.openpnp.machine.reference.feeder.ReferenceTrayFeeder" id="a13efbe6-a20b-4608-ab74-0d174b8ae4dc" name="LED_Osram_5630-comment" enabled="false" part-id="Dulux5-none" retry-count="3" tray-count-x="75" tray-count-y="2" feed-count="69">
           
<location units="Millimeters" x="0.854" y="280.575" z="14.0" rotation="90.0"/>
           
<offsets units="Millimeters" x="4.0" y="-21.5" z="0.0" rotation="0.0"/>
         
</feeder>
         
<feeder class="org.openpnp.machine.reference.feeder.ReferenceAutoFeeder" id="0408a07c-d732-4955-9399-a269a1460c7f" name="ReferenceAutoFeeder" enabled="true" part-id="Dulux5-none" retry-count="3" actuator-name="A2" actuator-value="0.0">
           
<location units="Millimeters" x="412.0" y="41.1" z="18.0" rotation="0.0"/>
         
</feeder>
     
</feeders>
     
<cameras/>
     
<actuators/>
     
<discard-location units="Millimeters" x="300.0" y="300.0" z="10.0" rotation="0.0"/>
     
<driver class="org.openpnp.machine.reference.driver.GcodeDriver" port-name="COM10" baud="115200" flow-control="XonXoff" data-bits="Eight" stop-bits="One" parity="None" set-dtr="true" set-rts="false" units="Millimeters" max-feed-rate="12000" timeout-milliseconds="5000" connect-wait-time-milliseconds="0">
         
<command type="COMMAND_CONFIRM_REGEX">
           
<text><![CDATA[.*ok.*]]></text>
         
</command>
         
<command type="CONNECT_COMMAND">
           
<text><![CDATA[G21 ; Set millimeters mode]]></text>
           
<text><![CDATA[            G90 ; Set absolute positioning mode]]></text>
           
<text><![CDATA[            M82 ; Set absolute mode for extruder]]></text>
         
</command>
         
<command type="ENABLE_COMMAND">
           
<text><![CDATA[M810 ; Turn on LED lighting]]></text>
         
</command>
         
<command type="DISABLE_COMMAND">
           
<text><![CDATA[M84 ; Disable steppers]]></text>
           
<text><![CDATA[            M811 ; Turn off LED lighting]]></text>
         
</command>
         
<command type="HOME_COMMAND">
           
<text><![CDATA[;M84 ; Disable steppers, resetting the Z axis]]></text>
           
<text><![CDATA[            ;G4P500 ; Wait half a second for the Z axis to settle]]></text>
           
<text><![CDATA[            G28 X0 Y0 ; Home X and Y]]></text>
           
<text><![CDATA[            G0Z10    ;bajo un poco el Z para que sincronize correctamente ]]></text>
           
<text><![CDATA[            G28 Z0]]></text>
           
<text><![CDATA[            ;G92 X0 Y0 Z0 E0 ; Reset machine coordinates to zero.]]></text>
         
</command>
         
<command type="MOVE_TO_COMMAND">
           
<text><![CDATA[G0 {X:X%.4f} {Y:Y%.4f} {Z:Z%.4f} {Rotation:E%.4f} F{FeedRate:%.0f} ; Send standard Gcode move]]></text>
           
<text><![CDATA[            M400 ; Wait for moves to complete before returning]]></text>
         
</command>
         
<command type="PICK_COMMAND">
           
<text><![CDATA[M803]]></text>
           
<text><![CDATA[            M800]]></text>
         
</command>
         
<command type="PLACE_COMMAND">
           
<text><![CDATA[M801]]></text>
           
<text><![CDATA[            M802]]></text>
           
<text><![CDATA[            G4P350]]></text>
           
<text><![CDATA[            M803]]></text>
         
</command>
         
<sub-drivers class="java.util.ArrayList">
           
<reference-driver class="org.openpnp.machine.reference.driver.GcodeDriver" port-name="COM11" baud="9600" flow-control="Off" data-bits="Eight" stop-bits="One" parity="None" set-dtr="false" set-rts="false" units="Millimeters" max-feed-rate="50000" timeout-milliseconds="5000" connect-wait-time-milliseconds="750">
               
<command type="COMMAND_CONFIRM_REGEX">
                 
<text><![CDATA[^ok.*]]></text>
               
</command>
               
<command type="ACTUATE_DOUBLE_COMMAND">
                 
<text><![CDATA[{Index}]]></text>
               
</command>
               
<sub-drivers class="java.util.ArrayList"/>
               
<axes class="java.util.ArrayList">
                 
<axis name="x" type="X" home-coordinate="0.0">
                     
<head-mountable-ids class="java.util.HashSet">
                       
<string>*</string>
                     
</head-mountable-ids>
                 
</axis>
                 
<axis name="y" type="Y" home-coordinate="0.0">
                     
<head-mountable-ids class="java.util.HashSet">
                       
<string>*</string>
                     
</head-mountable-ids>
                 
</axis>
                 
<axis name="z" type="Z" home-coordinate="0.0">
                     
<head-mountable-ids class="java.util.HashSet">
                       
<string>69edd567-df6c-495a-9b30-2fcbf5c9742f</string>
                     
</head-mountable-ids>
                 
</axis>
                 
<axis name="rotation" type="Rotation" home-coordinate="0.0">
                     
<head-mountable-ids class="java.util.HashSet">
                       
<string>*</string>
                     
</head-mountable-ids>
                 
</axis>
               
</axes>
           
</reference-driver>
         
</sub-drivers>
         
<axes class="java.util.ArrayList">
           
<axis name="x" type="X" home-coordinate="625.0">
               
<head-mountable-ids class="java.util.HashSet">
                 
<string>*</string>
               
</head-mountable-ids>
           
</axis>
           
<axis name="y" type="Y" home-coordinate="490.0">
               
<head-mountable-ids class="java.util.HashSet">
                 
<string>*</string>
               
</head-mountable-ids>
           
</axis>
           
<axis name="z" type="Z" home-coordinate="0.0">
               
<head-mountable-ids class="java.util.HashSet">
                 
<string>69edd567-df6c-495a-9b30-2fcbf5c9742f</string>
               
</head-mountable-ids>
           
</axis>
           
<axis name="rotation" type="Rotation" home-coordinate="0.0">
               
<head-mountable-ids class="java.util.HashSet">
                 
<string>*</string>
               
</head-mountable-ids>
           
</axis>
         
</axes>
     
</driver>
     
<pnp-job-processor class="org.openpnp.machine.reference.ReferencePnpJobProcessor" park-when-complete="true"/>
     
<paste-dispense-job-processor class="org.openpnp.machine.reference.ReferencePasteDispenseJobProcessor" park-when-complete="false"/>
     
<glue-dispense-job-processor class="org.openpnp.machine.reference.ReferenceGlueDispenseJobProcessor" park-when-complete="false"/>
     
<part-alignment class="org.openpnp.machine.reference.vision.ReferenceBottomVision" enabled="true">
         
<pipeline>
           
<stages>
               
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageCapture" name="0" enabled="true" settle-first="true"/>
               
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageWriteDebug" name="13" enabled="true" prefix="bv_source_" suffix=".png"/>
               
<cv-stage class="org.openpnp.vision.pipeline.stages.BlurGaussian" name="10" enabled="true" kernel-size="9"/>
               
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskCircle" name="4" enabled="true" diameter="525"/>
               
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="1" enabled="true" conversion="Bgr2HsvFull"/>
               
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskHsv" name="2" enabled="true" hue-min="60" hue-max="130" saturation-min="0" saturation-max="255" value-min="0" value-max="255"/>
               
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="3" enabled="true" conversion="Hsv2BgrFull"/>
               
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="6" enabled="true" conversion="Bgr2Gray"/>
               
<cv-stage class="org.openpnp.vision.pipeline.stages.Threshold" name="12" enabled="true" threshold="210" auto="false" invert="false"/>
               
<cv-stage class="org.openpnp.vision.pipeline.stages.FindContours" name="5" enabled="true" retrieval-mode="List" approximation-method="None"/>
               
<cv-stage class="org.openpnp.vision.pipeline.stages.FilterContours" name="9" enabled="true" contours-stage-name="5" min-area="50.0" max-area="900000.0"/>
               
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskCircle" name="11" enabled="true" diameter="0"/>
               
<cv-stage class="org.openpnp.vision.pipeline.stages.DrawContours" name="7" enabled="true" contours-stage-name="9" thickness="2" index="-1">
                 
<color r="255" g="255" b="255" a="255"/>
               
</cv-stage>
               
<cv-stage class="org.openpnp.vision.pipeline.stages.MinAreaRect" name="result" enabled="true" threshold-min="100" threshold-max="255"/>
               
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageRecall" name="14" enabled="true" image-stage-name="0"/>
               
<cv-stage class="org.openpnp.vision.pipeline.stages.DrawRotatedRects" name="8" enabled="true" rotated-rects-stage-name="result" thickness="2"/>
               
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageWriteDebug" name="15" enabled="true" prefix="bv_result_" suffix=".png"/>
           
</stages>
         
</pipeline>
         
<part-settings-by-part-id class="java.util.HashMap">
           
<entry>
               
<string>Fid-None</string>
               
<part-settings enabled="true">
                 
<pipeline>
                     
<stages>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageCapture" name="0" enabled="true" settle-first="true"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageWriteDebug" name="13" enabled="true" prefix="bv_source_" suffix=".png"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.BlurGaussian" name="10" enabled="true" kernel-size="9"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskCircle" name="4" enabled="true" diameter="525"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="1" enabled="true" conversion="Bgr2HsvFull"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskHsv" name="2" enabled="true" hue-min="60" hue-max="130" saturation-min="0" saturation-max="255" value-min="0" value-max="255"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="3" enabled="true" conversion="Hsv2BgrFull"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="6" enabled="true" conversion="Bgr2Gray"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.Threshold" name="12" enabled="true" threshold="210" auto="false" invert="false"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.FindContours" name="5" enabled="true" retrieval-mode="List" approximation-method="None"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.FilterContours" name="9" enabled="true" contours-stage-name="5" min-area="50.0" max-area="900000.0"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskCircle" name="11" enabled="true" diameter="0"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.DrawContours" name="7" enabled="true" contours-stage-name="9" thickness="2" index="-1">
                           
<color r="255" g="255" b="255" a="255"/>
                       
</cv-stage>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MinAreaRect" name="result" enabled="true" threshold-min="100" threshold-max="255"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageRecall" name="14" enabled="true" image-stage-name="0"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.DrawRotatedRects" name="8" enabled="true" rotated-rects-stage-name="result" thickness="2"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageWriteDebug" name="15" enabled="true" prefix="bv_result_" suffix=".png"/>
                     
</stages>
                 
</pipeline>
               
</part-settings>
           
</entry>
           
<entry>
               
<string>Dulux-None</string>
               
<part-settings enabled="true">
                 
<pipeline>
                     
<stages>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageCapture" name="0" enabled="true" settle-first="true"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageWriteDebug" name="13" enabled="true" prefix="bv_source_" suffix=".png"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.BlurGaussian" name="10" enabled="true" kernel-size="9"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskCircle" name="4" enabled="true" diameter="525"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="1" enabled="true" conversion="Bgr2HsvFull"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskHsv" name="2" enabled="true" hue-min="60" hue-max="130" saturation-min="0" saturation-max="255" value-min="0" value-max="255"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="3" enabled="true" conversion="Hsv2BgrFull"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="6" enabled="true" conversion="Bgr2Gray"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.Threshold" name="12" enabled="true" threshold="210" auto="false" invert="false"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.FindContours" name="5" enabled="true" retrieval-mode="List" approximation-method="None"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.FilterContours" name="9" enabled="true" contours-stage-name="5" min-area="50.0" max-area="900000.0"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskCircle" name="11" enabled="true" diameter="0"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.DrawContours" name="7" enabled="true" contours-stage-name="9" thickness="2" index="-1">
                           
<color r="255" g="255" b="255" a="255"/>
                       
</cv-stage>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MinAreaRect" name="result" enabled="true" threshold-min="100" threshold-max="255"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageRecall" name="14" enabled="true" image-stage-name="0"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.DrawRotatedRects" name="8" enabled="true" rotated-rects-stage-name="result" thickness="2"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageWriteDebug" name="15" enabled="true" prefix="bv_result_" suffix=".png"/>
                     
</stages>
                 
</pipeline>
               
</part-settings>
           
</entry>
           
<entry>
               
<string>LPC1768</string>
               
<part-settings enabled="true">
                 
<pipeline>
                     
<stages>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageCapture" name="0" enabled="true" settle-first="true"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageWriteDebug" name="13" enabled="true" prefix="bv_source_" suffix=".png"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.BlurGaussian" name="10" enabled="true" kernel-size="9"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskCircle" name="4" enabled="true" diameter="525"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="1" enabled="true" conversion="Bgr2HsvFull"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskHsv" name="2" enabled="true" hue-min="60" hue-max="130" saturation-min="0" saturation-max="255" value-min="0" value-max="255"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="3" enabled="true" conversion="Hsv2BgrFull"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="6" enabled="true" conversion="Bgr2Gray"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.Threshold" name="12" enabled="true" threshold="100" auto="false" invert="false"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.FindContours" name="5" enabled="true" retrieval-mode="List" approximation-method="None"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.FilterContours" name="9" enabled="true" contours-stage-name="5" min-area="50.0" max-area="900000.0"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskCircle" name="11" enabled="true" diameter="0"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.DrawContours" name="7" enabled="true" contours-stage-name="9" thickness="2" index="-1">
                           
<color r="255" g="255" b="255" a="255"/>
                       
</cv-stage>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MinAreaRect" name="result" enabled="true" threshold-min="100" threshold-max="255"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageRecall" name="14" enabled="true" image-stage-name="0"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.DrawRotatedRects" name="8" enabled="true" rotated-rects-stage-name="result" thickness="2"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageWriteDebug" name="15" enabled="true" prefix="bv_result_" suffix=".png"/>
                     
</stages>
                 
</pipeline>
               
</part-settings>
           
</entry>
           
<entry>
               
<string>LED_Osram_5630-Comment</string>
               
<part-settings enabled="true">
                 
<pipeline>
                     
<stages>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageCapture" name="0" enabled="true" settle-first="true"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageWriteDebug" name="13" enabled="true" prefix="bv_source_" suffix=".png"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.BlurGaussian" name="10" enabled="true" kernel-size="9"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskCircle" name="4" enabled="true" diameter="525"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="1" enabled="true" conversion="Bgr2HsvFull"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskHsv" name="2" enabled="true" hue-min="60" hue-max="130" saturation-min="0" saturation-max="255" value-min="0" value-max="255"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="3" enabled="true" conversion="Hsv2BgrFull"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="6" enabled="true" conversion="Bgr2Gray"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.Threshold" name="12" enabled="true" threshold="100" auto="false" invert="false"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.FindContours" name="5" enabled="true" retrieval-mode="List" approximation-method="None"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.FilterContours" name="9" enabled="true" contours-stage-name="5" min-area="50.0" max-area="900000.0"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskCircle" name="11" enabled="true" diameter="0"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.DrawContours" name="7" enabled="true" contours-stage-name="9" thickness="2" index="-1">
                           
<color r="255" g="255" b="255" a="255"/>
                       
</cv-stage>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MinAreaRect" name="result" enabled="true" threshold-min="100" threshold-max="255"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageRecall" name="14" enabled="true" image-stage-name="0"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.DrawRotatedRects" name="8" enabled="true" rotated-rects-stage-name="result" thickness="2"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageWriteDebug" name="15" enabled="true" prefix="bv_result_" suffix=".png"/>
                     
</stages>
                 
</pipeline>
               
</part-settings>
           
</entry>
           
<entry>
               
<string>Fid20L Fino</string>
               
<part-settings enabled="true">
                 
<pipeline>
                     
<stages>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageCapture" name="0" enabled="true" settle-first="true"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageWriteDebug" name="13" enabled="true" prefix="bv_source_" suffix=".png"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.BlurGaussian" name="10" enabled="true" kernel-size="9"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskCircle" name="4" enabled="true" diameter="525"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="1" enabled="true" conversion="Bgr2HsvFull"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskHsv" name="2" enabled="true" hue-min="60" hue-max="130" saturation-min="0" saturation-max="255" value-min="0" value-max="255"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="3" enabled="true" conversion="Hsv2BgrFull"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="6" enabled="true" conversion="Bgr2Gray"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.Threshold" name="12" enabled="true" threshold="210" auto="false" invert="false"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.FindContours" name="5" enabled="true" retrieval-mode="List" approximation-method="None"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.FilterContours" name="9" enabled="true" contours-stage-name="5" min-area="50.0" max-area="900000.0"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskCircle" name="11" enabled="true" diameter="0"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.DrawContours" name="7" enabled="true" contours-stage-name="9" thickness="2" index="-1">
                           
<color r="255" g="255" b="255" a="255"/>
                       
</cv-stage>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MinAreaRect" name="result" enabled="true" threshold-min="100" threshold-max="255"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageRecall" name="14" enabled="true" image-stage-name="0"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.DrawRotatedRects" name="8" enabled="true" rotated-rects-stage-name="result" thickness="2"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageWriteDebug" name="15" enabled="true" prefix="bv_result_" suffix=".png"/>
                     
</stages>
                 
</pipeline>
               
</part-settings>
           
</entry>
           
<entry>
               
<string>R0201-1K</string>
               
<part-settings enabled="false">
                 
<pipeline>
                     
<stages>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageCapture" name="0" enabled="true" settle-first="true"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageWriteDebug" name="13" enabled="true" prefix="bv_source_" suffix=".png"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.BlurGaussian" name="10" enabled="true" kernel-size="9"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskCircle" name="4" enabled="true" diameter="525"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="1" enabled="true" conversion="Bgr2HsvFull"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskHsv" name="2" enabled="true" hue-min="60" hue-max="130" saturation-min="0" saturation-max="255" value-min="0" value-max="255"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="3" enabled="true" conversion="Hsv2BgrFull"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="6" enabled="true" conversion="Bgr2Gray"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.Threshold" name="12" enabled="true" threshold="100" auto="false" invert="false"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.FindContours" name="5" enabled="true" retrieval-mode="List" approximation-method="None"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.FilterContours" name="9" enabled="true" contours-stage-name="5" min-area="50.0" max-area="900000.0"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskCircle" name="11" enabled="true" diameter="0"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.DrawContours" name="7" enabled="true" contours-stage-name="9" thickness="2" index="-1">
                           
<color r="255" g="255" b="255" a="255"/>
                       
</cv-stage>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MinAreaRect" name="result" enabled="true" threshold-min="100" threshold-max="255"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageRecall" name="14" enabled="true" image-stage-name="0"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.DrawRotatedRects" name="8" enabled="true" rotated-rects-stage-name="result" thickness="2"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageWriteDebug" name="15" enabled="true" prefix="bv_result_" suffix=".png"/>
                     
</stages>
                 
</pipeline>
               
</part-settings>
           
</entry>
           
<entry>
               
<string>Dulux5-none</string>
               
<part-settings enabled="false">
                 
<pipeline>
                     
<stages>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageCapture" name="0" enabled="true" settle-first="true"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageWriteDebug" name="13" enabled="true" prefix="bv_source_" suffix=".png"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.BlurGaussian" name="10" enabled="true" kernel-size="9"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskCircle" name="4" enabled="true" diameter="525"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="1" enabled="true" conversion="Bgr2HsvFull"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskHsv" name="2" enabled="true" hue-min="60" hue-max="130" saturation-min="0" saturation-max="255" value-min="0" value-max="255"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="3" enabled="true" conversion="Hsv2BgrFull"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="6" enabled="true" conversion="Bgr2Gray"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.Threshold" name="12" enabled="true" threshold="210" auto="false" invert="false"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.FindContours" name="5" enabled="true" retrieval-mode="List" approximation-method="Tc89L1"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.FilterContours" name="9" enabled="true" contours-stage-name="5" min-area="60.0" max-area="900000.0"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskCircle" name="11" enabled="true" diameter="0"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.DrawContours" name="7" enabled="true" contours-stage-name="9" thickness="2" index="-1">
                           
<color r="255" g="255" b="255" a="255"/>
                       
</cv-stage>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MinAreaRect" name="result" enabled="true" threshold-min="100" threshold-max="255"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageRecall" name="14" enabled="true" image-stage-name="0"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.DrawRotatedRects" name="8" enabled="true" rotated-rects-stage-name="result" thickness="2"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageWriteDebug" name="15" enabled="true" prefix="bv_result_" suffix=".png"/>
                     
</stages>
                 
</pipeline>
               
</part-settings>
           
</entry>
           
<entry>
               
<string>FIDUCIAL-1X2-FIDUCIAL1X2</string>
               
<part-settings enabled="true">
                 
<pipeline>
                     
<stages>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageCapture" name="0" enabled="true" settle-first="true"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageWriteDebug" name="13" enabled="true" prefix="bv_source_" suffix=".png"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.BlurGaussian" name="10" enabled="true" kernel-size="9"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskCircle" name="4" enabled="true" diameter="525"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="1" enabled="true" conversion="Bgr2HsvFull"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskHsv" name="2" enabled="true" hue-min="60" hue-max="130" saturation-min="0" saturation-max="255" value-min="0" value-max="255"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="3" enabled="true" conversion="Hsv2BgrFull"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="6" enabled="true" conversion="Bgr2Gray"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.Threshold" name="12" enabled="true" threshold="100" auto="false" invert="false"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.FindContours" name="5" enabled="true" retrieval-mode="List" approximation-method="None"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.FilterContours" name="9" enabled="true" contours-stage-name="5" min-area="50.0" max-area="900000.0"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskCircle" name="11" enabled="true" diameter="0"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.DrawContours" name="7" enabled="true" contours-stage-name="9" thickness="2" index="-1">
                           
<color r="255" g="255" b="255" a="255"/>
                       
</cv-stage>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MinAreaRect" name="result" enabled="true" threshold-min="100" threshold-max="255"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageRecall" name="14" enabled="true" image-stage-name="0"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.DrawRotatedRects" name="8" enabled="true" rotated-rects-stage-name="result" thickness="2"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageWriteDebug" name="15" enabled="true" prefix="bv_result_" suffix=".png"/>
                     
</stages>
                 
</pipeline>
               
</part-settings>
           
</entry>
           
<entry>
               
<string>IntFiducial-Comment</string>
               
<part-settings enabled="false">
                 
<pipeline>
                     
<stages>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageCapture" name="0" enabled="true" settle-first="true"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageWriteDebug" name="13" enabled="true" prefix="bv_source_" suffix=".png"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.BlurGaussian" name="10" enabled="true" kernel-size="9"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskCircle" name="4" enabled="true" diameter="525"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="1" enabled="true" conversion="Bgr2HsvFull"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskHsv" name="2" enabled="true" hue-min="60" hue-max="130" saturation-min="0" saturation-max="255" value-min="0" value-max="255"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="3" enabled="true" conversion="Hsv2BgrFull"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="6" enabled="true" conversion="Bgr2Gray"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.Threshold" name="12" enabled="true" threshold="100" auto="false" invert="false"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.FindContours" name="5" enabled="true" retrieval-mode="List" approximation-method="None"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.FilterContours" name="9" enabled="true" contours-stage-name="5" min-area="50.0" max-area="900000.0"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskCircle" name="11" enabled="true" diameter="0"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.DrawContours" name="7" enabled="true" contours-stage-name="9" thickness="2" index="-1">
                           
<color r="255" g="255" b="255" a="255"/>
                       
</cv-stage>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MinAreaRect" name="result" enabled="true" threshold-min="100" threshold-max="255"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageRecall" name="14" enabled="true" image-stage-name="0"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.DrawRotatedRects" name="8" enabled="true" rotated-rects-stage-name="result" thickness="2"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageWriteDebug" name="15" enabled="true" prefix="bv_result_" suffix=".png"/>
                     
</stages>
                 
</pipeline>
               
</part-settings>
           
</entry>
           
<entry>
               
<string>Fidu2-none</string>
               
<part-settings enabled="true">
                 
<pipeline>
                     
<stages>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageCapture" name="0" enabled="true" settle-first="true"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageWriteDebug" name="13" enabled="true" prefix="bv_source_" suffix=".png"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.BlurGaussian" name="10" enabled="true" kernel-size="9"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskCircle" name="4" enabled="true" diameter="525"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="1" enabled="true" conversion="Bgr2HsvFull"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskHsv" name="2" enabled="true" hue-min="60" hue-max="130" saturation-min="0" saturation-max="255" value-min="0" value-max="255"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="3" enabled="true" conversion="Hsv2BgrFull"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="6" enabled="true" conversion="Bgr2Gray"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.Threshold" name="12" enabled="true" threshold="210" auto="false" invert="false"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.FindContours" name="5" enabled="true" retrieval-mode="List" approximation-method="None"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.FilterContours" name="9" enabled="true" contours-stage-name="5" min-area="50.0" max-area="900000.0"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskCircle" name="11" enabled="true" diameter="0"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.DrawContours" name="7" enabled="true" contours-stage-name="9" thickness="2" index="-1">
                           
<color r="255" g="255" b="255" a="255"/>
                       
</cv-stage>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MinAreaRect" name="result" enabled="true" threshold-min="100" threshold-max="255"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageRecall" name="14" enabled="true" image-stage-name="0"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.DrawRotatedRects" name="8" enabled="true" rotated-rects-stage-name="result" thickness="2"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageWriteDebug" name="15" enabled="true" prefix="bv_result_" suffix=".png"/>
                     
</stages>
                 
</pipeline>
               
</part-settings>
           
</entry>
           
<entry>
               
<string>Fidu-None</string>
               
<part-settings enabled="true">
                 
<pipeline>
                     
<stages>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageCapture" name="0" enabled="true" settle-first="true"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageWriteDebug" name="13" enabled="true" prefix="bv_source_" suffix=".png"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.BlurGaussian" name="10" enabled="true" kernel-size="9"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskCircle" name="4" enabled="true" diameter="525"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="1" enabled="true" conversion="Bgr2HsvFull"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskHsv" name="2" enabled="true" hue-min="60" hue-max="130" saturation-min="0" saturation-max="255" value-min="0" value-max="255"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="3" enabled="true" conversion="Hsv2BgrFull"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="6" enabled="true" conversion="Bgr2Gray"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.Threshold" name="12" enabled="true" threshold="210" auto="false" invert="false"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.FindContours" name="5" enabled="true" retrieval-mode="List" approximation-method="None"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.FilterContours" name="9" enabled="true" contours-stage-name="5" min-area="50.0" max-area="900000.0"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskCircle" name="11" enabled="true" diameter="0"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.DrawContours" name="7" enabled="true" contours-stage-name="9" thickness="2" index="-1">
                           
<color r="255" g="255" b="255" a="255"/>
                       
</cv-stage>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MinAreaRect" name="result" enabled="true" threshold-min="100" threshold-max="255"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageRecall" name="14" enabled="true" image-stage-name="0"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.DrawRotatedRects" name="8" enabled="true" rotated-rects-stage-name="result" thickness="2"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageWriteDebug" name="15" enabled="true" prefix="bv_result_" suffix=".png"/>
                     
</stages>
                 
</pipeline>
               
</part-settings>
           
</entry>
           
<entry>
               
<string>FidCuadrado</string>
               
<part-settings enabled="true">
                 
<pipeline>
                     
<stages>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageCapture" name="0" enabled="true" settle-first="true"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageWriteDebug" name="13" enabled="true" prefix="bv_source_" suffix=".png"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.BlurGaussian" name="10" enabled="true" kernel-size="9"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskCircle" name="4" enabled="true" diameter="525"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="1" enabled="true" conversion="Bgr2HsvFull"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskHsv" name="2" enabled="true" hue-min="60" hue-max="130" saturation-min="0" saturation-max="255" value-min="0" value-max="255"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="3" enabled="true" conversion="Hsv2BgrFull"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="6" enabled="true" conversion="Bgr2Gray"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.Threshold" name="12" enabled="true" threshold="200" auto="false" invert="false"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.FindContours" name="5" enabled="true" retrieval-mode="List" approximation-method="None"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.FilterContours" name="9" enabled="true" contours-stage-name="5" min-area="50.0" max-area="900000.0"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskCircle" name="11" enabled="true" diameter="0"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.DrawContours" name="7" enabled="true" contours-stage-name="9" thickness="2" index="-1">
                           
<color r="255" g="255" b="255" a="255"/>
                       
</cv-stage>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MinAreaRect" name="result" enabled="true" threshold-min="100" threshold-max="255"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageRecall" name="14" enabled="true" image-stage-name="0"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.DrawRotatedRects" name="8" enabled="true" rotated-rects-stage-name="result" thickness="2"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageWriteDebug" name="15" enabled="true" prefix="bv_result_" suffix=".png"/>
                     
</stages>
                 
</pipeline>
               
</part-settings>
           
</entry>
           
<entry>
               
<string>Fiducial-none</string>
               
<part-settings enabled="true">
                 
<pipeline>
                     
<stages>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageCapture" name="0" enabled="true" settle-first="true"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageWriteDebug" name="13" enabled="true" prefix="bv_source_" suffix=".png"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.BlurGaussian" name="10" enabled="true" kernel-size="9"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskCircle" name="4" enabled="true" diameter="525"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="1" enabled="true" conversion="Bgr2HsvFull"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskHsv" name="2" enabled="true" hue-min="60" hue-max="130" saturation-min="0" saturation-max="255" value-min="0" value-max="255"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="3" enabled="true" conversion="Hsv2BgrFull"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="6" enabled="true" conversion="Bgr2Gray"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.Threshold" name="12" enabled="true" threshold="210" auto="false" invert="false"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.FindContours" name="5" enabled="true" retrieval-mode="List" approximation-method="None"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.FilterContours" name="9" enabled="true" contours-stage-name="5" min-area="50.0" max-area="900000.0"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskCircle" name="11" enabled="true" diameter="0"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.DrawContours" name="7" enabled="true" contours-stage-name="9" thickness="2" index="-1">
                           
<color r="255" g="255" b="255" a="255"/>
                       
</cv-stage>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MinAreaRect" name="result" enabled="true" threshold-min="100" threshold-max="255"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageRecall" name="14" enabled="true" image-stage-name="0"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.DrawRotatedRects" name="8" enabled="true" rotated-rects-stage-name="result" thickness="2"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageWriteDebug" name="15" enabled="true" prefix="bv_result_" suffix=".png"/>
                     
</stages>
                 
</pipeline>
               
</part-settings>
           
</entry>
           
<entry>
               
<string>Fidu80LFracc-None</string>
               
<part-settings enabled="true">
                 
<pipeline>
                     
<stages>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageCapture" name="0" enabled="true" settle-first="true"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageWriteDebug" name="13" enabled="true" prefix="bv_source_" suffix=".png"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.BlurGaussian" name="10" enabled="true" kernel-size="9"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskCircle" name="4" enabled="true" diameter="525"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="1" enabled="true" conversion="Bgr2HsvFull"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskHsv" name="2" enabled="true" hue-min="60" hue-max="130" saturation-min="0" saturation-max="255" value-min="0" value-max="255"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="3" enabled="true" conversion="Hsv2BgrFull"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="6" enabled="true" conversion="Bgr2Gray"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.Threshold" name="12" enabled="true" threshold="210" auto="false" invert="false"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.FindContours" name="5" enabled="true" retrieval-mode="List" approximation-method="None"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.FilterContours" name="9" enabled="true" contours-stage-name="5" min-area="50.0" max-area="900000.0"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MaskCircle" name="11" enabled="true" diameter="0"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.DrawContours" name="7" enabled="true" contours-stage-name="9" thickness="2" index="-1">
                           
<color r="255" g="255" b="255" a="255"/>
                       
</cv-stage>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.MinAreaRect" name="result" enabled="true" threshold-min="100" threshold-max="255"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageRecall" name="14" enabled="true" image-stage-name="0"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.DrawRotatedRects" name="8" enabled="true" rotated-rects-stage-name="result" thickness="2"/>
                       
<cv-stage class="org.openpnp.vision.pipeline.stages.ImageWriteDebug" name="15" enabled="true" prefix="bv_result_" suffix=".png"/>
                     
</stages>
                 
</pipeline>
               
</part-settings>
           
</entry>
         
</part-settings-by-part-id>
     
</part-alignment>
     
<fiducial-locator class="org.openpnp.machine.reference.vision.ReferenceFiducialLocator"/>
   
</machine>
</openpnp-machine>


Jason von Nieda

unread,
Oct 26, 2016, 3:15:10 PM10/26/16
to OpenPnP
Hi Lisandro,

That's all the comes to mind immediately. I will have more time tonight or tomorrow night to take a closer look and see if I can figure something out. 

Have you, by chance, tried any other boards? It would be interesting to know if this behavior happens on every board or just that one. And by board I mean board design, not just a different copy of the same board.

Jason

Lisandro B

unread,
Oct 26, 2016, 5:00:40 PM10/26/16
to OpenPnP
Jason, thank you very much as allways.
Yes, im making several of that design and also another with a lot more leds in it, same behavior.
Tried to measure the board with the DRO and joging the camera to check if the size of the board is the same of the machine and it is, so I can discard that "steps per mm" are the same

mojalovaa1

unread,
Oct 26, 2016, 5:49:23 PM10/26/16
to OpenPnP
If I m see correct when you are press with mouse that go to  pcb zero position   you are bee with cross  under  real pcb zero position , that look me like  that you are not calibrate  camera correct or  you have big lens distortion .

Jason von Nieda

unread,
Oct 27, 2016, 8:42:11 PM10/27/16
to OpenPnP
Hi Lisando,

After having a closer look, I think you have a steps per mm problem on, at least, your X axis. Probably Y too. It looks like your steps per mm setting (in your motion controller) is set slightly too high. 

I suggest you get a ruler of at least 100mm and check to make sure that when you tell your machine to move 100mm, it moves 100mm. You can do this by laying a ruler on the bed, moving the camera above one line and then jogging left or right by 100mm. I think you will find it's actually jogging more like 101 or 102mm. You can adjust your steps per mm to fix this.

Jason


--
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 post to this group, send email to ope...@googlegroups.com.

Jason von Nieda

unread,
Oct 27, 2016, 8:56:26 PM10/27/16
to OpenPnP
I have added a new Wiki page for configuring steps per mm: https://github.com/openpnp/openpnp/wiki/Setup-and-Calibration%3A-Steps-Per-Mm

Jason

Lisandro B

unread,
Oct 28, 2016, 6:33:32 PM10/28/16
to OpenPnP
I remember to have done that measurement with a metal ruler, but to be honest, that was on the first machine: This one uses the same parts from the older one, except that the rods are longer and so the belt.
Will do it again and let you know the results

as allways, I REALLY APRECIATE YOUR HELP!!!!!

Jason von Nieda

unread,
Oct 28, 2016, 6:57:43 PM10/28/16
to OpenPnP
Sounds good, hope it helps!

Jason


--
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 post to this group, send email to ope...@googlegroups.com.

mojalovaa1

unread,
Nov 3, 2016, 6:14:09 PM11/3/16
to OpenPnP
Lisandro , you are solve problems?

On my old machine all so sometimes have same problems  , after run  auto fiducial detection  sometimes  position is not ok , I m think that is step/mm but is not I m make calibration , all so camera is calibrated .
For me is strange because  after fiducial detection all time change pcb rotation position , but pcb is not moved .

Jason von Nieda

unread,
Nov 3, 2016, 7:48:52 PM11/3/16
to OpenPnP
Moja,

There was a big bug in fiducial detection that was solved on September 5th. This might have been the cause for the problems you saw. More info here: https://github.com/openpnp/openpnp/commit/f64bde6c9bce37b43a89fde2c21315657885e372

Jason


--
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 post to this group, send email to ope...@googlegroups.com.

mojalovaa1

unread,
Nov 5, 2016, 6:28:51 AM11/5/16
to OpenPnP
Jason , I m run yours official version and all so  have same problems , have you idea what can fake me ?
I  m set step/mm  and measure with micrometer .
All so set px/mm (use paper with cube 5x5 mm )

Have same problems like Lisandro but  on right down side for x 0.2 mm and for y 0.4 mm .

Cri S

unread,
Nov 5, 2016, 9:07:09 AM11/5/16
to OpenPnP
Tray put the board a bit angled and offset inside machine. Record board zero and angle( should be zero) . on every attempt resets the board zero values before testing it.
Check board if auto fiducials work.
Test that you have max offset and at least 1 or 2 degree of angle.
Fiducial code into auto placement and on GUI button works slightly different.
If problem sussist publish board coordinates before and after fiducial recognition, coordinates of fiducial on placement and real coordinates of fiducial center captured with find circle script. I attach a copy of the script, you must remove .txt and actually its configured for 1-2mm fiducials. If different you must change it. Include two components, corrected and placements coordinates near fiducials in the report.
To get the corrected coordinate out, capture camera pos.
I hope both have deactivated nozzle offset correction as this actually depredicate camera for taking out any measurement.

Cri S

unread,
Nov 5, 2016, 9:17:17 AM11/5/16
to ope...@googlegroups.com
find circle.bsh.txt

Jason von Nieda

unread,
Nov 5, 2016, 11:02:55 AM11/5/16
to ope...@googlegroups.com
Moja,

Using a micrometer for setting steps per mm is not recommended. You need to be able to measure the error across a longer rage. I recommend using at least a 100mm ruler. See this: https://github.com/openpnp/openpnp/wiki/Setup-and-Calibration:-Steps-Per-Mm

In every case where people have had errors like this it has been due to steps per mm, so I would focus on that first.

Jason


--
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 post to this group, send email to ope...@googlegroups.com.

mojalovaa1

unread,
Nov 5, 2016, 2:26:12 PM11/5/16
to OpenPnP
I m measure  distance on pcb  , calculate  distance on coordinate and measure  distance  with camera and result is confused .

First need say that I m   check step/mm and that is ok .

distance between  LED 13 and LED 16  on  real  on pcb is 120 mm
distance on  coordinate calculation is 119.970 mm
distance  measured with camera and  machine  move manual is 119.570 mm

That is for X axis .

distance  between LED 9 and LED 12  is 120 mm on real pcb .
distance  on coordinate  calculation is  120.02 mm
distance measured with camera and machine move manual is 120.220 mm 

That is for Y axis 

I m test all so move with ruler and look OK .

Have you idea what can be  ?
solbi-RGB.board2.xml.board.xml
solbi-RGB.job2.xml.job.xml

mojalovaa1

unread,
Nov 5, 2016, 2:28:52 PM11/5/16
to OpenPnP
This is image for  paper with cube and  px/mm  .
2016-11-05-192724_1920x1080_scrot.png

mojalovaa1

unread,
Nov 5, 2016, 2:29:42 PM11/5/16
to OpenPnP

Jason von Nieda

unread,
Nov 5, 2016, 2:57:39 PM11/5/16
to ope...@googlegroups.com
Moja,

You said you checked step/mm, can you describe how you checked it? If you aren't checking it over 100-200mm you aren't going to get good results. The biggest source of these types of error is incorrect steps/mm. 

This part of the software is extremely simple, and there is very little that can go wrong. It's just sending simple Gcode to your controller that says "Go to X,Y". It's up to your controller to go to that position. OpenPnP really doesn't have much to do with it.

There are three things that can account for the problem you are seeing:

1. Something wrong with OpenPnP.
2. Something wrong with controller setup.
3. Something wrong with hardware.

To rule out #1, try sending the same commands from Pronterface. Line up the fid and then send a G0 to Pronterface. If you see the same error it's not a problem with OpenPnP.

#2, as I said, is almost always steps/mm. If you can't reliably move 100mm in each axis then nothing is going to work right. I actually tune my machine at 300mm and across 300mm I am less than .1mm off. 

Another thing to check is your acceleration settings. If you are accelerating too fast you might be losing steps.

#3 could be belt tension, backlash, slipping pulleys, not enough current on motors, etc.

Whenever I am trying to diagnose a problem like this I always work to remove as many variables as I can. Remove OpenPnP from the equation. Try with Pronterface or just a serial terminal. Then you know that OpenPnP is not the problem. Then you can move on to the next step.

Jason


--
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 post to this group, send email to ope...@googlegroups.com.

mojalovaa1

unread,
Nov 5, 2016, 4:59:32 PM11/5/16
to OpenPnP
Thanks Jason

Problem is be step/mm , I m use  plastic  school ruler and that is problems  , then I m use master meter tape ( if that name is correct on english like this http://all-free-download.com/free-vector/download/tape-measure_312620.html )  , now is more better  but is not 100% perfect , I can say maybe 98% , for  calibration need use  calibrated ruler but I not have it  , all so can help if you measure long distance , for X axis I m use now 300 mm and  for Y  200 mm .


Cri S

unread,
Nov 5, 2016, 5:18:22 PM11/5/16
to ope...@googlegroups.com

A4 or letter size paper is pretty accurate.
If after checking lower and left size edge for x and y and upper right angle is wrong, there is  probably mechanic angle accuracy problem.

Mechanical caliper are really good for accuracy checking with camera.

Il 05/nov/2016 21:59 "mojalovaa1" <moja...@gmail.com> ha scritto:
Thanks Jason

Problem is be step/mm , I m use  plastic  school ruler and that is problems  , then I m use master meter tape ( if that name is correct on english like this http://all-free-download.com/free-vector/download/tape-measure_312620.html )  , now is more better  but is not 100% perfect , I can say maybe 98% , for  calibration need use  calibrated ruler but I not have it  , all so can help if you measure long distance , for X axis I m use now 300 mm and  for Y  200 mm .


--
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/-NHKL8O1K2o/unsubscribe.
To unsubscribe from this group and all its topics, send an email to openpnp+unsubscribe@googlegroups.com.

To post to this group, send email to ope...@googlegroups.com.

Jason von Nieda

unread,
Nov 5, 2016, 5:19:16 PM11/5/16
to OpenPnP
Hi Moja, glad to hear you worked it out! Good luck with your calibration. Sounds like you are getting very close.

Jason

On Sat, Nov 5, 2016 at 3:59 PM mojalovaa1 <moja...@gmail.com> wrote:
Thanks Jason

Problem is be step/mm , I m use  plastic  school ruler and that is problems  , then I m use master meter tape ( if that name is correct on english like this http://all-free-download.com/free-vector/download/tape-measure_312620.html )  , now is more better  but is not 100% perfect , I can say maybe 98% , for  calibration need use  calibrated ruler but I not have it  , all so can help if you measure long distance , for X axis I m use now 300 mm and  for Y  200 mm .


--
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 post to this group, send email to ope...@googlegroups.com.

mojalovaa1

unread,
Nov 5, 2016, 6:40:56 PM11/5/16
to OpenPnP
I m test  all so boot vision in work , and work solid with TQFP32 package    , but on  my version openpnp ( because have set all actuators and other staff that Cri.s is make to my machine ) , and when will have  more free time  all so will  try finish machine file  for official version OpenPnP .

My suggestion is  that think  add my GRBL driver  on official  version  , only need  make some change that will be supported  , but you  know what is possible  and what is not  .


Jason von Nieda

unread,
Nov 5, 2016, 7:27:19 PM11/5/16
to OpenPnP
Hi Moja,

If you want to add this driver to the official code it needs to meet the coding standards in https://github.com/openpnp/openpnp/wiki/Developers-Guide#contributing. It also needs to be documented and updated to make all of the hardcoded and "magic" numbers configurable. This is the case for any code that gets merged into the codebase.

The GcodeDriver does nearly everything this driver does and it does it in a configurable, flexible and documented fashion. I would prefer to spend my time improving the GcodeDriver, which benefits everyone, than updating the GrblDriver which is no longer in wide use.

Jason


On Sat, Nov 5, 2016 at 5:40 PM mojalovaa1 <moja...@gmail.com> wrote:
I m test  all so boot vision in work , and work solid with TQFP32 package    , but on  my version openpnp ( because have set all actuators and other staff that Cri.s is make to my machine ) , and when will have  more free time  all so will  try finish machine file  for official version OpenPnP .

My suggestion is  that think  add my GRBL driver  on official  version  , only need  make some change that will be supported  , but you  know what is possible  and what is not  .


--
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 post to this group, send email to ope...@googlegroups.com.

mojalovaa1

unread,
Nov 12, 2016, 9:49:42 AM11/12/16
to OpenPnP
Jason , can you please look this my video and say what can be problems , like I m say before this is the best what I can set with step/mm  , all so I m try change camera angle and have some  difference but  the best is this  on video ?



evilwulfie

unread,
Nov 12, 2016, 10:06:50 AM11/12/16
to ope...@googlegroups.com
I am curious, have you greased up your rails really well ?
I have noticed that they work much smoother when greased.


On 11/12/2016 7:49 AM, mojalovaa1 wrote:
Jason , can you please look this my video and say what can be problems , like I m say before this is the best what I can set with step/mm  , all so I m try change camera angle and have some  difference but  the best is this  on video ?



--
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 post to this group, send email to ope...@googlegroups.com.

mojalovaa1

unread,
Nov 12, 2016, 10:10:25 AM11/12/16
to OpenPnP
Work very well  , only problem can be if pulley is not bore in center   , I m buy it on ebay before  but can not say that is something  high quality produced ?


Jason von Nieda

unread,
Nov 12, 2016, 10:15:01 AM11/12/16
to ope...@googlegroups.com
Moja,

Sorry to say, but this still looks like a steps/mm issue. Two things to try:

1. Manually align to the board corner and then try going to the two fids using the buttons in the placement panel. Does it work better?
2. Record a video showing your steps/mm tests. 100mm or greater ruler and move 100mm at a time. Does it land on the lines well?

Unfortunately, if you don't have steps/mm dialed in there is nothing that can be done. That is the fundamental requirement for any CNC machine to do useful work.

Jason


On Sat, Nov 12, 2016 at 8:49 AM mojalovaa1 <moja...@gmail.com> wrote:
Jason , can you please look this my video and say what can be problems , like I m say before this is the best what I can set with step/mm  , all so I m try change camera angle and have some  difference but  the best is this  on video ?



--
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 post to this group, send email to ope...@googlegroups.com.

mojalovaa1

unread,
Nov 12, 2016, 1:20:39 PM11/12/16
to OpenPnP
Hi Jason

I m try  all but same all time , fist I m again set stepp/mm  , difference is be 0.003 step per mm that is not something disaster , then I m change acceleration  but same , then I m change max speed  from 20 000 mm/min to 2000 mm / min and same again .

Think that need be some mechanical problems but can not found what is  , have you idea what can be  , belt is  ok with tension only if some one tooth is not  damaged  , pulley  look ok  , maybe hole is not on  perfect center but look ok ?

Rails is cleaned and oiled  and angularity is ok .






Jason von Nieda

unread,
Nov 12, 2016, 1:34:45 PM11/12/16
to OpenPnP
Moja,

Pick a spot and move camera to it. Then jog 100mm away in X-, X+, Y-, Y+ each time going back by the same amount. Does it return to the same spot every time? If not, you may have backlash or belt tension problems.

Maybe someone wants to write up a "Troubleshooting Mechanical Problems" wiki? I don't have time today, but if someone wants to do that it would be very helpful. It could cover belt tensioning, backlash, acceleration and speed, etc.

Jason



--
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 post to this group, send email to ope...@googlegroups.com.

Trampas Stern

unread,
Nov 12, 2016, 5:01:28 PM11/12/16
to OpenPnP
I had a shapeoko mill and to calibrate and test mechanical accuracy I made a PCB fiducials and then used OpenCV and a python script to find the points. This allowed me to check for missed steps, back lash, calibration, etc. 

I found that the backlash in the machine was really bad and caused me great pains as it was not consistent. For my PNP I using hiwin rails in hopes it works better.  

I do have a few more of these PCBs if anyone is interested in them. 

Trampas
Alignment_pcb_mm.JPG

Trampas Stern

unread,
Nov 12, 2016, 5:06:25 PM11/12/16
to OpenPnP

I should mention that other side of PCB is in inches.  

Also there are holes of known diameter for calibrating the head camera, that is by using the known hole diameters you can calibrate the camera's pixels/inch. 
alignment_pcb_inch.JPG

mojalovaa1

unread,
Nov 12, 2016, 5:11:06 PM11/12/16
to OpenPnP
I m repair one part , belt on Y axis is be  damaged , fibers in belt is damaged , now I m change that belt and  on Y axis is ok , only on X axis have  little  deviation ( 0.1 mm max , min is 0.03 mm )  , belt torsion is ok , belt look fine , stepper not lose step , tomorrow will try found problems .


Reply all
Reply to author
Forward
0 new messages