A round part gives the camera nothing to hold an angle on. O-rings, caps, spacers and covers look identical at every rotation, so the angle a vision job reports is noise — yet the robot obeys it, and the wrist swings through tens of degrees on every pick. That costs cycle time, wears cables and connector blocks, and grows a collision envelope you never drew. The fix is one decision and one line of code: copy only the position out of the vision result and hold the wrist at a single taught angle. This how-to shows both places to make the change, in the robot job or in the vision job, with a worked example and the checks that prove the wrist stays still.
Why the wrist spins on a round part
A located pose carries two things: a position and an orientation. On a printed or keyed part the orientation is real information, and the wrist is right to follow it. On a plain round part the matcher still outputs an angle, but that number comes from image noise, a flipped match or a wrapped solution rather than from the part. The symptoms are easy to recognise: the wrist turns 90° or a full 180° between identical parts, and the pick point drifts a little whenever the reported angle changes. Full turns between pick and place have their own diagnosis in gripper rotation between pick and place: find the full turn, and drift tied to rotation is covered in vision pick error under rotation: diagnose position drift.
The fix is not a better matcher. A round part has no angle to find.
The decision: position only, one fixed angle
For a fully round part, update the pick position every cycle and never the orientation:
The constant serves the cell, not the part: choose the wrist angle that clears the hoses, the fixture edge and the approach path, teach the pick target once at that angle, and treat anything inside ±0.5° of it as zero. Because the wrist never rotates between cycles, that budget never gets spent.
You only need one of two places to make the change:
- Robot side — copy just the position field from the vision frame into the work object. The robot job keeps its taught orientation and ignores the angle that came with the part.
- Vision side — the vision job overwrites the rotation in its output pose with the constant angle before sending anything. The robot program does not change at all.
Pick method 2 when the robot program is locked, shared between cells, or simply not yours to edit.
What you need
- A taught pick target in the camera's work object, wrist at the fixed angle.
- A vision job that reports the part centre in robot coordinates, on a calibrated camera-to-robot plane. If the camera hangs over the cell, hanging robot vision calibration: teach the work plane covers teaching that plane.
- The constant angle written down, with the reason for it.
- Edit access to the robot job or the vision job.
One vision sensor per station handles the whole locate: find the centre, apply the fixed angle, hand the pose to the robot. The vision sensors and smart cameras range holds the current options; three that fit a single-station pick:
- Interface
- Fast Ethernet
- Resolution
- 5 MP
- Interface
- Fast Ethernet
- Resolution
- Up to 3 MP
- Interface
- Fast Ethernet
- Resolution
- Up to 3 MP
The MV-SC3050XC-16M-ATN-H is the 5 MP colour option, the MV-SCB007EC-12S-WBN runs a fixed 12 mm lens with manual focus, and the HK-TD032-12-WBN is the mono pick for bare metal and dark surfaces.
Method 1: keep only the position on the robot side
- Teach the pick target once at the nest centre, wrist at the fixed angle, in the camera's work object.
- Find the line that copies the whole vision frame into the work object; in this kind of set-up it reads
wCam.oframe:=camTarget.cframe;. - Narrow the copy to position only — the
transcomponent is the position, and the orientation component stays untouched:wCam.oframe.trans:=camTarget.cframe.trans;. Use the field name your vision output actually carries; here the record iscframe, notoframe. - Leave the move instruction exactly as it is:
MoveL pPickObject,vFast,fine,tGripper\WObj:=wCam;. The target keeps its own orientation, and because the object frame never rotates, that orientation survives every update — the wrist arrives at the same angle each cycle. - Keep the pick height out of the copy. A 2D match cannot see height, so the plane shift rides on a nest or a measured axis — the same reason plate picking handles Z outside the image.
An equivalent, if your program offsets a taught point instead of moving a work object, is MoveL Offs(pPickObject,dx,dy,0),vFast,fine,tGripper\WObj:=wCam; with dx and dy the millimetre offsets the vision job reports against the taught point — same result, orientation untouched.
Position-only copying is the frame-level version of a wider trick: move parallel to a vision-found object without rotating the tool holds the tool angle constant along the whole approach path, not just at the pick point.
Method 2: send a constant angle from the vision job
- In the vision job, after the match, write the found position into the output pose and overwrite its rotation with the constant — 0° is a perfectly good value.
- Leave the robot side untouched.
wCam.oframe:=camTarget.cframe;followed by the original move line now receives a pose whose angle never changes. - If the gripper approaches better at another angle, output that angle as the constant: 180° for a flipped wrist, for example, still fixed.
- Confirm over 20 cycles that the wrist reads the same angle at every pick.
The same hand-off works whether the job runs in the sensor itself or in a controller serving several cameras. For multi-camera cells, start in the vision controllers category; two that fit:
- LAN ports
- 3-4 LAN ports
- USB 3 ports
- 2 USB 3 ports
- LAN ports
- 5+ LAN ports
- USB 3 ports
- 3-4 USB 3 ports
The MV-VC2140-128G40-1T carries 8 GB of memory and four built-in light channels; the MV-VC3301H-128G66 pairs an Intel Core i3 processor with 5+ LAN ports and a VM6200Pro license included.
If the robot controller must talk to a camera it does not list natively, integrated vision with a third-party camera: your options lays out the ways to bridge the two.
Worked example: round covers on a feeder tray, ±10 mm of wander
Take an illustrative station, with numbers typical of a bowl-fed cover line:
- Part: plain round cover, no features, any in-plane orientation picks cleanly.
- Taught pick target: (350.0, 120.0, 30.0) mm in
wCam, wrist at 0.0°. - This cycle the vision job reports: centre at (356.8, 114.2) mm, matched angle 214.7°.
- Cell budget: ±0.5° about the taught wrist angle.
Rule, from the decision section: add the in-plane offsets to the taught target, keep the height and the orientation.
Result: the arm slides 8.9 mm across the tray and the wrist does not move at all. The reported 214.7° is discarded.
Decision: discard the angle on every cycle of a plain round part — 214.7°, 3.1° and −180.0° are all equivalent, so the ±0.5° budget is never spent. The same report from a part carrying a printed mark would be a real half-turn demand, and that case needs the symmetry-period rule below.
Partly round parts: cut the angle down by the symmetry period
A hex has six equivalent orientations per turn, a square has four, a marked part has one. Reduce the reported angle before deciding whether to use it:
A hex with p = 60° reporting 214.7° behaves like 214.7 − 3×60 = 34.7°: if the gripper clears 34.7°, rotate; otherwise reject or re-nest the part. The symmetric part orientation matching guide works the tolerance logic in full. A plain round part is the limit case where every angle is equivalent — discard it, always.
When a fixed angle is the wrong answer
- The part carries a feature that matters — print, keyway, pin. The angle is real information; apply the reduced-angle rule above instead of a constant.
- The nest pins the part's angle, as a slot or rack does. Orientation then comes from the rack design, not the camera, and configuring rack picking orientation is the set-up to read.
- Parts arrive loose in a bin at unknown poses. A frame edit cannot recover a tilt or a stack; start from 3D bin picking for flat parts: choosing a vision approach, and for metal parts in bulk see 3D bin picking systems for metallic parts.
Prove it before the first production run
- Log the wrist angle at the pick for 20 or more cycles: one identical reading, every time.
- Log the found X/Y too. The scatter must sit well inside the gripper's clearance; if position scatter widens whenever the discarded angle swings, the matcher is losing and regaining its label — worth knowing even though you ignore its angle.
- Run the first cycles at reduced speed and watch the hose set at the fixed angle through the whole approach.
- After any camera or bracket knock, recalibrate before trusting the copy. The offsets are only as good as the camera plane, and robot cell vision recalibration with one reference target shows the quick re-check.
Common mistakes
- Copying the whole frame when you meant the position:
wCam.oframe:=camTarget.cframe;brings the camera's angle along, and that is the spinning wrist you started with. - Guessing the output field name: copy from a record that does not have it and the controller stops with
Reference to unknown component oframe. Open the vision job's output data and use its real field name — herecframe, notoframe. - Leaving place points in the moving work object, as the warning in Method 1 describes.
- Trusting offsets from a tilted or moved camera: the numbers are valid only in the calibrated plane, so that fault needs recalibration, not a code fix.
The next step
Decide the constant angle, choose the edit point — robot job or vision job — apply the one-line change, then run the 20-cycle check. If you are planning the whole cell rather than one fix, 2D vision pick and place: selecting a planar guidance system compares the guidance options, and the systems topic page gathers the picking guides. To size the hardware, start at the camera finder and then configure a vision system around your parts; if a question survives that, the /contact/ page reaches the applications team.
Questions
Why did the wrist start flipping 180° when the cell had run fine for months?
Something upstream changed the image, not the code: a lamp dimming, label wear, a new batch with a different sheen. The matcher then finds an equally good solution a half turn away and alternates between the two, and the wrist follows. Fixing the orientation makes the flip invisible to the robot, and the image problem becomes a position-drift warning you can catch in the log instead.
How do I add a second pick with the wrist 180° away for a faster place?
Teach a second pick target at the same position with the wrist rotated a half turn, keeping the orientation-constant logic on both. The place move then starts closer to its final wrist angle. Alternatively run a second vision output configured to send the constant 180° instead of 0°. Pick whichever target finishes nearest the place pose and the reorientation move disappears.
The part has a small flat or an alignment pin — can I still fix the tool angle?
Only if that feature's direction is controlled upstream, by the moulding or the nest, so every part arrives with the flat in the same place. Otherwise the angle is genuine information: reduce it by the symmetry period, compare against the taught angle, and rotate only when the reduced difference exceeds the grip clearance. Position-only updating stays the safe default whenever the feature is absent or harmless.
Does fixing the orientation change how the vision system is calibrated or tuned?
No. The camera still finds the part centre exactly as before; only the rotation field of the output pose is overwritten with a constant. Exposure, matching models, hand-eye calibration and the coordinate hand-off all stay untouched, and the same job can serve a rotation-using cell and a fixed-angle cell by changing one output field.
What happens if the part height varies between cycles?
A trans-only copy shifts the work object's plane, so a height change tilts the approach slightly and loads the gripper unevenly. Keep height on a measured axis, a hard stop or a gauge instead. If height genuinely varies and matters to the grip, add a profile sensor or a second angled view — a single 2D match cannot report it.



