A robot arm carrying a camera is a tidy way to verify braze presence on a triangular tube: the wrist reaches each joint, holds one fixed pose, and the vision system answers pass or fail while the arm moves on. The failure mode is drift — a pose that creeps, a glare stripe that wanders, a threshold set from one golden part. This plan turns your three stops into fixed teach poses with saved references, sizes the optics with a worked example, picks lighting that separates bead from bare pipe, and ends with the checks that let you release the cell. The example assumes a 5 MP class sensor and a 25 mm field on a 15 × 8 mm bead fillet; the method scales to whatever your joints measure.
Teach three fixed poses, not one moving search
Judge braze presence in image space. Teach the wrist pose at each joint, save a reference crop from a known-good part, and compare every cycle against it. No pipe search, no camera-to-robot transform, no CAD models. Choosing robot positions that hold matters more here than calibration math: the pose you pick decides the lighting angle you are stuck with for the life of the cell.
Hand-guide the arm to each joint, tune the light while you are there, and record three things per stop: an approach point above the inspection pose, the inspection pose itself, and the camera's exposure settings. The approach point makes the arm arrive along the same path every cycle, which protects both the pose and the cable drag. Mount the camera and its bar light on one shroud so the lighting geometry is rigid with the lens — if the light can shift relative to the camera, scores drift with it. For the bracket side, carrying a camera on a robot arm covers the mounting and crash-loading questions. Run each new pose at reduced speed with the cell guarded first: a camera pod on the wrist swings wider than the tool it replaces.
Keep the handshake simple: the robot raises a digital output at the stop, the camera captures and judges, and it answers with a pass/fail bit the robot waits on. Only when the vision result must drive motion — rework offsets, pick positions — do you need the camera-to-robot calibration step.
Choose the camera that rides the arm
A presence check is the easiest job in machine vision: global shutter, modest resolution, fixed focus, one crop per pose. Any of these three does the job:
- Interface
- GigE
- Resolution
- Up to 3 MP
- Interface
- Fast Ethernet
- Resolution
- 5 MP
- Interface
- Fast Ethernet
- Resolution
- Up to 3 MP
The MV-SCB007EC-12S-WBN ships with a 12 mm manual-focus M12 lens and judges on-device over Fast Ethernet. The LS-SMC-0063 pairs a 16 mm lens with polarized white light at 60 fps, so glare control is built in. The MV-SC3050XC-16M-ATN-H is a 5 MP color sensor on an M12 mount. That last one fits when your three joints differ in size, because the field becomes a lens choice rather than a compromise.
At the minimal end, the MV-SCA002M-03S-WBN-SR pairs a 0.3 MP mono sensor with a 3 mm lens focused at 240 mm. Presence survives that little resolution — the floor, worked out below, is 20 pixels across the bead. If you would rather reuse hardware, any mono area scan camera you already run can ride the arm over GigE; the camera finder filters by resolution, shutter and mount. For most presence work the integrated smart cameras win on wiring: power, I/O and image path live in fewer cables than a camera-plus-PC stack.
Worked example: a 25 mm field on one bead from 100 mm standoff
Inputs, with where each comes from:
- Bead fillet 15 mm long × 8 mm wide — example sizes for a small tube joint; measure yours.
- Field of view 25 × 21 mm — bead plus 5 mm margin on every side; the height follows the sensor's 2448 × 2048 pixel grid.
- Sensor: 2448 × 2048 px, 1/1.45-inch class, the 5 MP sensor in the cards above. Format diagonal: 16 mm / 1.45 = 11.03 mm.
- Lens: 25 mm focal length, M12.
- Aperture and time: f/8 and 5 ms — chosen below from depth of field and blur.
- Mechanics: arm repeatability ±0.05 mm (typical six-axis spec class), fixture location ±0.5 mm, residual creep at the stop 1 mm/s worst case.
Arithmetic:
- Pixel pitch: sqrt(2448² + 2048²) = 3192 px on the diagonal, so 11.03 mm / 3192 px = 3.45 µm/px.
- Magnification: m = 8.45 mm / 25 mm = 0.338.
- Standoff: WD = 25 mm × (1 + 0.338) / 0.338 = 98.96 mm, call it 99 mm.
- Scale on the part: 25 mm / 2448 px = 10.2 µm/px. The 8 mm bead spans 8 / 0.0102 ≈ 780 px; the 15 mm fillet runs about 1470 px.
- Depth of field at f/8 with an acceptable blur circle of c = 2 px = 6.9 µm: DOF ≈ 2 × 8 × 0.0069 mm × (1.338 / 0.338²) = 0.1104 mm × 11.7 = 1.3 mm total, so ±0.65 mm.
- Blur: 1 mm/s creep × 5 ms = 5 µm = 0.5 px — invisible.
Result: a 25 mm M12 lens at 99 mm standoff, f/8, 5 ms, covering 25 × 21 mm at 10.2 µm/px.
Decision. The floor for presence is about 20 px across the smallest bead dimension; this layout gives 780, so spend the surplus as depth of field and light. At f/8 the ±0.65 mm depth covers the ±0.55 mm worst-case mechanical error (0.5 mm fixture + 0.05 mm arm). If your fixture holds ±0.2 mm, open to f/4: depth falls to ±0.32 mm but the sensor gets four times the light, so exposure drops toward 1 ms. The crop margin is the real tolerance — the 15 mm bead sits in a 25 mm field, so placement error up to ±5 mm still keeps the bead inside every reference crop.
Run your own joint through the same steps, or check the lens side in the calculator:
Light the bead so it reads bright against the pipe
Braze filler and bare tube are both reflective, so frontal light gives you two shiny surfaces and a marginal gray difference. Light the joint from a low angle instead: flat faces mirror the light away from the lens and stay dark, while the bead's curved meniscus scatters light back and reads bright. It is the standard fix for glare on reflective parts:
Grazing along the joint is the usual arrangement — start about 20-30° off the pipe face and tune on the bench, with the camera near the surface normal. A 24 V bar running continuous has ample output for 1-5 ms exposures at this standoff; confirm from the histogram rather than trusting it. Where a flat face still throws a bright stripe across the crop, a polarizer on the lens trims it: the cross-polarization method explains the filter angles, and glare control on shiny pipe shows the same fight from inside a tube. Start with white; if your filler and pipe separate better in one band on bench trials, bar lights come in white, red, blue, green and infrared.
One bar sized for this job:
- Size
- 200-400 mm
- Type
- Standard
- Voltage
- 24 V
Position budget: repeatability, settle and the handshake
The arm is never the limit. A six-axis arm repeats within a few hundredths of a millimetre against 1.3 mm of depth of field; the tolerances that bite are fixture location, which must stay inside the ±5 mm crop margin, and settle. Give the arm 200-300 ms of dwell after the in-position signal, then trigger. Budget 0.3-0.5 s of move, 0.2-0.3 s of dwell and 0.05-0.1 s of capture-and-judge per stop — about 0.7 s each, under 3 s for all three joints; time your own arm for real figures. If the check ever freezes at one frame, it is almost always the acquisition mode rather than the wiring; the one-frame trigger fault is the usual suspect. Exposure belongs to the light and shutter to the motion: the exposure versus shutter-speed trade sets out which one moves when the part or the camera moves.
The pass/fail rule: reference score and threshold
Score each pose on two conditions and require both:
- Contrast. Mean gray level of the bead region minus the mean of a bare-face region in the same frame. Example bench set: ten good parts score 55 ± 12 gray levels, ten never-brazed parts score 8 ± 6. Put the threshold at 30 — the midpoint is 31.5, pulled slightly toward the missing side — which leaves about 25 gray levels of margin to good parts and 22 to missing ones.
- Geometry. The pixels above threshold must form one connected blob of at least 500 px whose bounding box runs at least 1000 px along the joint, about 10 mm at the 10.2 µm/px scale from the example. A corner stripe passes the contrast check but fails the box; a half-width bead fails the blob.
Set the threshold on trials, not on one golden image: shoot ten good and ten never-brazed parts per pose and place the cut midway between the clusters. If the clusters separate by fewer than 20 gray levels, stop tuning — no threshold survives lamp aging and temperature swings on that margin; re-light instead. This lighting-then-blob order is the same logic as dark contaminant checks, and the live binary preview lets you watch the threshold bite while you set it. Save one reference crop per pose and re-shoot all three after any lens swap, bar replacement or bracket change.
Checks before you release the cell
- Run ten good and ten never-brazed parts through all three poses and log both scores per pose; thresholds sit midway between the clusters.
- Run 50 cycles of good parts; each pose's score spread should stay under 10 gray levels. If it wanders, lengthen the dwell first.
- A half-brazed joint must fail — confirm the blob rule catches it, and confirm that failing is what your process wants.
- Toggle the factory lights: the check must pass with them on and off. If ambient leaks in, shroud the crop or shorten the exposure rather than moving the threshold.
- Set the fixture to its worst-case tolerance and confirm the bead stays inside every crop and the scores hold.
- After any crash or bracket swap, re-shoot the three reference crops; the one-target recalibration routine is for the day the poses themselves must move.
When the usual answer is wrong
- If bench trials separate good from missing by fewer than 20 gray levels at every angle, presence-by-contrast is the wrong tool: re-light with a different geometry or measure bead geometry — a width profile across the fillet — instead. Lowering the threshold just moves the false calls around.
- If a joint sits in an inside corner, the 99 mm standoff will not fit: fold the light in with a mirror or relay, or move that joint's check to a fixed station. Compact lighting for tight spaces covers the short-throw options.
- If the process owner wants bead quality — voids, wetting, gaps — a presence crop cannot grade it. Plan a dedicated station sized to the defect, not a tighter threshold.
- If the pipe arrives loose in a cradle rather than a fixture, teach poses per part family or add a hard stop. Once placement error approaches the ±5 mm crop margin, fixturing costs less than a locate-and-search vision step.
Set-up checklist
- Robot: three inspection poses plus approach points, collision-checked at reduced speed with the cell guarded.
- Optics: field = bead + 5 mm margin per side; at least 20 px across the smallest bead; focus set mid-depth at the working aperture.
- Lighting: bar rigid with the lens, grazing along the joint; the negative proven on a never-brazed part; polarizer only if trials demand it.
- Scoring: per-pose references; contrast plus blob conditions; threshold midway between the ten-good and ten-missing trial clusters.
- Release: 50-cycle spread under 10 gray levels per pose; ambient-light test passed; worst-case fixture test passed.
That is the whole cell: three taught poses, one darkfield bar on the shroud, one threshold rule per pose. Pick the sensor and lens pair in the camera configurator, match the bar in the light finder, or send the joint drawings through the quote request and we will size the field and light with you. More applications like this sit on the applications topic page.
Questions
How accurate do the three robot stops have to be?
Far less accurate than people expect. The worked example gives 1.3 mm of depth of field at f/8, and a typical six-axis arm repeats within ±0.05 mm, so position consumes a fraction of the depth budget. The limits that matter are fixture location against the ±5 mm crop margin and the lighting angle. Re-teach the poses after any crash or bracket change, and the arm side takes care of itself.
Can one camera position inspect all three joints instead of three stops?
Sometimes. Presence survives coarse pixels: an 8 mm bead needs only about 20 px across, so even a 350 mm wide field on a 2448 px sensor gives 143 µm/px and about 56 px across the bead. If all three joints face the camera and fit one field, one fixed station works. On a triangular pipe the faces usually point different directions, which is what forces the three stops.
What lighting shows a braze bead on shiny pipe best?
A low-angle bar grazing along the joint, darkfield style: bare faces stay dark and the bead meniscus scatters light back to the lens. Add a polarizer on the lens when a flat face still throws a bright stripe into the crop. Start with white light, then trial red, blue or infrared bars on your own filler — alloy and tube reflect differently by wavelength, and swapping a bar costs less than re-engineering the geometry.
Do I need hand-eye calibration for a presence-only check?
No. The decision is made in image space against reference crops tied to fixed poses, so no camera-to-robot transform is needed. You add that calibration step only when the vision result drives robot motion, such as rework offsets or a pick point, or when poses must be re-derived after mechanical changes rather than re-taught by hand.
How long should the robot wait at each stop before the camera fires?
Start at 200-300 ms after the in-position signal and confirm from score data: run 50 cycles and require each pose's score spread to stay under about 10 gray levels. A creeping spread means residual vibration, so lengthen the dwell. Averaging several images hides the symptom but adds cycle time without removing the cause.



