Your robot finishes a place, swings back to the snapshot pose, and then sits for 5 to 7 seconds before the approach to the next part even starts. Almost none of that wait is mechanics: the arm stands still while images, matching and messages make their way through the vision step. This page splits a wrist-camera pick cycle into its seven stages, ranks the five causes of a long locate by how often each turns up, and gives a test and a fix for each. A worked four-part tray shows the per-pick span dropping from 6.8 to 3.5 seconds, with the arithmetic in the open.
Split the cycle before you tune anything
Timestamp six boundaries once and the slow stage names itself: trigger sent, robot at snapshot pose, image ready, result received, approach start, gripper at the part. Every vision platform can print a timestamp at each of those points, either in its own log or in the robot program around the vision call.
| Stage | What it covers | Planning span |
|---|---|---|
| Trigger and travel | request to the camera, motion to the snapshot pose | 1 to 4 s |
| Settle | vibration decay after the stop | 0.1 to 0.5 s |
| Snapshot | exposure plus any auto probing and retries | 0.2 to 3 s |
| Transfer | frame from camera to processor | 0.05 to 0.8 s |
| Locate | matching for all parts | 0.05 to 3 s |
| Handshake | result list back, plus fixed waits | 0.1 to 2 s |
| Approach | motion from snapshot pose to part | 0.5 to 2 s |
The spans assume a desktop-class processor, an Ethernet camera link and a small-parts tray; each section below says what moves its stage. A cell that waits 5 to 7 seconds before every approach almost always has two or three of these stacked: an auto snapshot, a per-pick re-locate, and a couple of waits added while the demo code was written.
Cause 1, most likely: the cell re-locates parts it already found
The symptom is an almost identical wait before every pick, including parts that were in the first image. The test takes one log line per cycle: count locate runs across a four-part tray. Four locates for four parts is this cause, and it is the default behavior of a lot of demo code: pick one, ask the camera again.
The fix is to locate once per snapshot and store the whole pose list. The robot walks the list and only re-images when the scene actually changed: a failed pick, a gripper that shaded the field, new parts placed. The pose-per-part workflow is the same one behind picking a full tray from one snapshot, and its limits on occlusion and stacked parts are in when one wrist camera snapshot is enough.
The saving is arithmetic. At 1.0 s per locate, four runs per tray cost 4.0 s; one pass costs 1.0 s, so picks 2 to 4 run on stored poses and the tray saves (4 - 1) x 1.0 = 3.0 s of locate. The opposite failure, reusing a result after the scene changed, is its own problem: triggering a fresh measurement per pick shows where that line sits.
Cause 2: auto exposure and focus search inflate the snapshot
Here the long wait shows up before the first pick, or it moves as room light changes through the day. Auto exposure usually captures extra frames to probe brightness, and focus search adds a move-capture-evaluate loop; together they turn a 0.3 s snapshot into a 1.5 to 3 s one on a typical camera.
Test: lock exposure, lock focus, set retries to one, and time image-ready again. Then fix the lighting variation that made auto modes tempting in the first place, because a shroud or hood beats an adaptive camera. The drift mechanism, and which auto modes to turn off, are in why image brightness drifts over time; the snapshot stage has a few more known time sinks, worked through in this wrist camera scan-time troubleshooting guide, and the short version lives in reducing wrist camera snapshot time.
Cause 3: the frame spends longer on the wire than on the processor
A 5 MP mono frame is about 5 MB. On Fast Ethernet that is 5 / 11 ≈ 0.45 s of pure transfer; on GigE, 5 / 110 ≈ 0.05 s. A 1.6 MP sensor cuts the Fast Ethernet case to 1.6 / 11 ≈ 0.15 s, which is why small smart cameras and vision sensors tolerate the slower link.
Check the negotiated speed, not the label: a GigE camera plugged into a 100 Mbit switch port runs at Fast Ethernet. Read the link speed on the switch or network card, and log exposure-end to image-ready. Color triples the bytes unless the camera converts on sensor, and compression changes the arithmetic entirely.
For new cells and camera swaps, GigE end to end is the default. A current example is the MV-SC5060XM-08M-WBN, a 6 MP mono GigE smart camera with an 8 mm M12-mount lens; the shop finder lists cameras by interface and resolution.
- Interface
- GigE
- Resolution
- 6-10 MP
- Sensor format
- 1/2.4"
- Shutter
- Rolling
If the transfer stage logs above 0.3 s per frame, fix the link or drop resolution before tuning anything else.
Cause 4: locate is searching more scene than the task needs
Match time scales roughly with search area and model count. A full-frame geometric search at 5 MP commonly runs around 1 s; the same model inside an ROI the size of the tray footprint, a quarter of the frame, drops to roughly 1 x 0.25 = 0.25 to 0.3 s. A tuned single-model locate on a desktop-class processor sits between 50 and 300 ms. When locate time swings wildly from cycle to cycle, fix reliability before speed, because an intermittent match failure usually traces back to scene content such as glare, low contrast or clutter, as explained in why a wrist-camera locate fails inside the matching call.
Three changes cover most of it: set the ROI to the tray footprint, keep one trained model per part type, and leave coarse-to-fine search on. If the camera's own processor is saturated, so locate time grows as parts enter the frame, run matching on a vision controller instead and let the robot path see only the result; cutting processing load lists the levers in order.
The MV-VC2140-128G40-1T is the Intel N-series entry with 4 built-in light channels; the MV-VC3301H-128G66 steps up to an Intel Core i3 with 8 GB of memory, 5+ LAN ports and the VM6200Pro runtime license included.
| Specification | MV-VC2140-128G40-1T | MV-VC3301H-128G66 |
|---|---|---|
| CPU | Intel® Processor N97 | Intel® Core i3-8100 |
| Storage | 128 GB SSD + 1 TB HDD | 128G SSD |
| GPU | Intel® UHD Graphics | Intel® HD Graphics 630 |
| Operating system | Unactivated 64-bit Windows 10 LTSC 21H2 | Windows 10 64-bit, Not activated |
| Encryption method | Not support | VM6200Pro license key |
| Video output | HDMI interface × 1, VGA interface × 1; Supports independent display outputs at the same time; Max. resolution 1920 × 1080 @ 60 Hz | HDMI interface × 1, VGA interface × 1; Supports independent display output at the same time; Max. resolution 1920 × 1080 @ 60 Hz |
| Digital I/O | Opto-isolated input × 8; Opto-isolated output × 8 | 8 digital isolated inputs supported; 16 opto-isolated outputs supported (NPN/PNP switchable) |
| Light interface | Light interface with 24 VDC constant voltage × 4; (Brightness is adjustable. Max. current 3 A for single light interface, and total max. power consumption 80 W. Supports light mode switching between strobe and solid via external control) | 4-channel 24 V constant-voltage light drive, Max. power per channel: 72 W, Max. power (4 channels): 150 W |
| Network interface | GigE interface × 4 | 6× Gigabit Ethernet ports |
| USB Interface | USB 2.0 × 2; USB 3.0 × 2 | USB 2.0 × 4; USB 3.0 × 4; Built-in USB 2.0 × 1 |
| Serial Port | RS-232 × 1, supports switching to RS-485 or RS-422 | 2× full-function RS-232, RS-485/RS-422 switchable |
| Power consumption | Typ. 51 W (without light source) | 95 W |
| Price | $1,679.00 | $2,419.00 |
All 2 share: Memory 8 GB; Power supply 24 VDC; Certification CE, KC. Values as printed in each product's data sheet; open a part for its drawing and full specifications.
Cause 5: handshakes and fixed waits stacked on the cycle
A vision request is a conversation: trigger, acknowledge, result, verify. Each round trip on plain Ethernet costs 10 to 50 ms, so even a dozen costs well under a second. The seconds live elsewhere: fixed wait instructions of 0.5 to 1 s added to be safe while the demo was written, and poll loops that check for a result on a timer instead of on an event.
Test: log request-sent and result-received, then read the pick routine for wait instructions. Fix: trigger once per snapshot, receive the whole result list at once, and replace every assumed wait with the measured settle time, because 0.3 s measured beats 1 s assumed. Overlapping the vision call with robot motion hides most of the remainder; the pattern is in overlapping vision and motion in the pick request. And if the cell ran fast during teach but not at runtime, the capture path itself differs: stream versus snapshot is usually why.
Worked example: four parts, before and after
The cell: four parts on an open tray, snapshot pose 300 mm from each pick pose, process speed giving an effective 250 mm/s, so each 300 mm move takes 300 / 250 = 1.2 s. Settle measured at 0.3 s.
Before, with every cause active:
| Stage | Time |
|---|---|
| Travel to snapshot pose | 1.2 s |
| Settle | 0.3 s |
| Snapshot with auto probing | 2.0 s |
| Transfer, 5 MB on Fast Ethernet | 0.45 s |
| Locate, once per pick | 1.0 s |
| Handshakes and fixed waits | 0.6 s |
| Approach to part | 1.2 s |
| Total | 6.75 s |
After, with one locate per snapshot, locked exposure, GigE and event-based handshakes:
| Stage | Time |
|---|---|
| Travel to snapshot pose | 1.2 s |
| Settle | 0.3 s |
| Snapshot, fixed exposure | 0.35 s |
| Transfer, 5 MB on GigE | 0.05 s |
| Locate, once per tray: 1.0 / 4 | 0.25 s |
| Handshakes, event-based | 0.15 s |
| Approach to part | 1.2 s |
| Total | 3.50 s |
Per tray of four: 4 x 6.75 = 27.0 s becomes 4 x 3.50 = 14.0 s, so 13.0 s saved on every tray. The amortized locate assumes every part stayed visible and undisturbed; when a pick shades the field, re-image before that one pick, which is still far cheaper than re-locating everything. Cutting the search ROI takes the 1.0 s locate to about 0.3 s as extra headroom.
Match the fix to your timestamps
| What the log shows | Fix first | Typical cut |
|---|---|---|
| Same wait before every pick | one locate per snapshot | about 0.75 s per pick in the example |
| Long wait before the first pick only | locked exposure and focus | 1.5 to 2.5 s per snapshot |
| Slow since a camera or switch change | GigE end to end | about 0.4 s per 5 MP frame |
| Locate grows as parts appear | ROI, then offload to a controller | up to 4x on the search |
| The seconds sit in travel stages | closer snapshot pose or layout speed | motion, not vision |
Read the table top down. The first two rows cover most demo cells, and they are also the two changes that cost nothing but configuration.
When the camera is not the problem
If the timestamps put the seconds in travel, the fixes are mechanical: move the snapshot pose closer to the workspace, since a wrist camera needs little room; raise process speed where the cell allows; or cover a tray wider than one field with several snapshot positions, re-imaging between them. If parts overlap or stack, no amount of 2D tuning tells you which part is graspable, because that is a geometry question: feed parts singly or move to stereo and structured-light 3D sensors, with the choice laid out in choosing a vision approach for flat parts. A cobot running at safety-limited speed is a layout decision, and no camera setting changes it.
Habits that keep locate time fast
- Timestamp every stage boundary from day one. "It feels slow" never points at a stage; a log does.
- Run a locked production profile: auto exposure, auto gain and auto focus off, saved as the run configuration.
- Keep one trained model per part type, and the ROI at the tray footprint.
- Re-image on a scene change, not on a schedule: new parts, a failed pick, an occluded field.
- Re-check stage times after any hardware or firmware swap; a driver update can renegotiate a link or add latency.
- Keep the snapshot pose as close to the workspace as the field of view allows; travel is the one stage no vision setting can shorten.
If you are speccing the camera and controller side of a new cell, the build-a-system configurator pairs them with lights and triggering in one pass, and the vision systems topic page collects the rest of the timing guides. For a second opinion on an existing cell, send your stage timestamps through the contact page with the question; they turn a day of guessing into an afternoon of fixes.
Questions
How fast should the vision step be once the cell is tuned?
With fixed exposure, a bounded ROI and one trained model, plan on 50 to 300 ms for the locate call itself, under 0.5 s for the snapshot, and about 0.05 s to move a 5 MP frame on GigE. The whole vision step inside the cycle should land near 0.5 to 1 s; anything measured in seconds means one of the causes above is still active.
Does a higher resolution camera slow every cycle down?
Roughly, yes: doubling pixel count doubles the transfer bytes and usually doubles a full-frame search. A 12 MP frame on GigE is about 12 MB, roughly 0.11 s of transfer, against 0.05 s at 5 MP. Resolution only pays when your smallest feature needs those pixels; otherwise it taxes every cycle.
Can one snapshot really cover a whole tray of parts?
Yes, while every remaining part stays fully in view, unblocked by the arm or gripper, and undisturbed by previous picks. Scattered parts on open trays qualify; deep bins and stacks do not. When a pick will shade the field, re-image once before that pick, and the stored poses for the other parts stay valid.
Why does the same cell run slower at the end of a shift?
Usually light, not code: auto exposure chasing changing ambient light adds probe frames and shifts thresholds, and images drift with it. Lock exposure and gain, shade the scene, and compare stage timestamps from the start and end of a shift; the snapshot and locate spans show where the extra time went.
Is the approach motion itself part of locate time?
No. Approach travel is robot motion set by distance and speed: 300 mm at an effective 250 mm/s is 1.2 s no matter what the camera settings are. Measure it as its own stage in your timestamps, so camera tuning does not get blamed for, or credited with, motion time.
