
Checks that every part is fitted and the key sizes are right.
Missing-part and dimension inspection on the edge device. One fixed camera per station checks the expected items and the measured sizes, and merges them into a single OK/NG verdict that reaches the PLC and the MES at the same time. Runs on a reComputer J30 / J40 (Orin) or on a reComputer R2000 Series with the Hailo-8 option (R2035-12).
Stations where the mount is fixed, the whole part stays in frame, and the verdict must land within the takt.

Visual benches after insertion, the end of an assembly line. It answers whether anything is missing.

Goods-in areas, outbound recheck benches. Sizes are checked against the drawing, not by eye.

Automotive parts and electronics contract plants. One record per part, and the PLC still drives the reject.
Not a fit: certified metrology, and cameras that move. The dimension check needs a calibration reference in frame, otherwise it reports not calibrated.
A fixed camera at the station captures the frame, an inspection host makes the call (reComputer J30 / J40 Series, or reComputer R2000 Series with the Hailo-8 option), and the result goes to the PLC and MES you already run.

Three things per station: a fixed camera that produces the picture, one host that runs detection and both business modules, and whatever consumes the verdict. Detection, the missing-part comparison, the dimension measurement, the MQTT broker and the Modbus server all sit on that one host — no video and no frame data leaves the station.
Any RTSP or ONVIF camera pointed at the station works, as does a USB camera or a recorded file. What the design constrains is the framing, not the camera model.
One host per station runs detection, the missing-part comparison, the dimension measurement and both outputs. The logic is identical on both hosts; the accelerator and how the model arrives differ.
| Inspection host | Accelerator | Model delivery | Measured on hardware |
|---|---|---|---|
| reComputer J30 / J40 (Orin Nano 8GB / Orin NX 16GB) | Orin GPU | Built on the device at first deploy, about 5 minutes | Accuracy and latency on J3011 and J4012; multi-stream capacity on J3011 |
| reComputer R2000 Series with the Hailo-8 option (R2035-12) | Hailo-8 | Compiled off-device, downloaded at deploy time | Accuracy, throughput and end-to-end latency |
The R2000 path needs matching Python and HailoRT versions and one kernel setting; the deployment guide walks through all three.
The verdict reaches the PLC, the MES and a local web page at the same time: the PLC reads it over Modbus TCP, the MES subscribes over MQTT, and a browser opens the page, all connecting to the inspection host directly. The data interface is listed under “What you get out of it” below.
What shows up on the screen beside the line once it is running.
An engineering benchmark on a public dataset, not a certified metrology or safety result.
| What the line gets | Typical | Device |
|---|---|---|
| Frame captured to the verdict on the Modbus coil | 10.9 ms P50 (11.2 ms P99) | reComputer J30 Series (J3011, Orin Nano 8GB) |
| Defect detection accuracy (mAP50) | 0.9876 | reComputer J30 Series |
| Streams one host carries at a 10 fps line rate | 8 | reComputer J30 Series |
| Missing-part closed loop | 6 / 6 matched, 6 / 6 flagged after swapping boards | reComputer J30 Series |
| Dimension error against a calibration reference | 0.65% worst case, budget 1% | reComputer J30 Series |
The reComputer R2000 Series with the Hailo-8 option runs the same chain at 11.89 ms P50 and 0.9858 mAP50.
Stream count was measured with the Modbus and MQTT outputs off, so a deployment with both on carries fewer. Treat 8 as the starting point for your own load test.
Accuracy is measured on DeepPCB bare-board defects, not on missing parts. Measure the shipped model on your own assemblies before relying on it. For per-device latency, multi-stream throughput and benchmark matrices, see Engineering Wiki · Assembly Inspection.
Once deployed, these three interfaces are the whole contract.
| Type | Where | Content |
|---|---|---|
| MQTT | port 1883, <device-name>/inspection/<stream-id>/results | One JSON event per frame: verdict, reasons, defect count, the missing-part section (expected, matched, missing, extra) and the dimension section (calibrated, out-of-tolerance count, each measurement) |
| Modbus TCP | port 502, unit 1, Coil 0/1 + HR 0–11 | Coil 0 = NG, Coil 1 = OK. HR 0–7 match the surface-inspection register map; HR 8 missing count, HR 9 extra count, HR 10 measured mm ×100, HR 11 tolerance code |
| HTTP | port 8080, /healthz /events /preview.mjpg | Local web panel: frame rate, inference time, failure counters, recent events and a preview with boxes and part regions |
A PLC program that already reads HR 0–7 keeps working; HR 8–11 are added after them. Registers are written before the coil flips, so a PLC that triggers on the coil reads one consistent verdict; with several stations on one host, Modbus carries the latest verdict only and per-station results come from MQTT. A missing-part event names each empty slot, and each measurement carries its own status rather than a bare number.
The reusable unit is not "missing parts on a PCBA" — it is the chain detector → template comparison → measurement against a calibration reference → rule merge → Modbus + MQTT. Only the detector classes and the expected-part template are bound to a product; everything downstream carries over.
| Layer | What porting costs you |
|---|---|
| Camera framing rules and the fixed-view requirement | reuse as-is |
| Both runtimes (TensorRT on Orin, INT8 on Hailo-8) and model delivery | reuse as-is |
| Dimension measurement and the calibration-reference workflow | reuse as-is |
| Rule merge and the four independently switchable NG reasons | reuse as-is |
| Modbus register map, MQTT topics and the message format | reuse as-is |
| Detector classes and weights | retrain on your own images |
| Expected-part template and its regions | rebuild for your product, from your own fixed view |
Fits: connectors, screws, labels or shields present on a fixture; a size or gap inside a drawing tolerance; a pass/fail the PLC acts on within the takt.
Tell us about your site — we work out the hardware, then you connect the data and follow the steps.
Do you need missing-part or dimension checks, or just an OK/NG verdict? Assembly comparison and dimension measurement need a separate inspection host. A camera that decides on its own silicon skips both.
| Setup | Role | Device | Qty |
|---|---|---|---|
| Camera + reComputer J30 / J40 (Orin) | Inspection Host | reComputer J30 Series (Jetson Orin Nano) / reComputer J40 Series (Jetson Orin NX)(either one) | 1 |
| Camera | IP Camera | 1 | |
| Camera + reComputer R2000 (Hailo-8) | Inspection Host | reComputer Industrial R20 Series | 1 |
| Camera | IP Camera | 1 | |
| reCamera Pro | Camera and Inspection Node | reCamera Pro | 1 |
| Preset | Video source | Inspection host | Model delivery | Badge |
|---|---|---|---|---|
| Camera + reComputer J30 / J40 (Orin) | Your own RTSP / ONVIF camera | reComputer J30 (Orin Nano 8GB) or J40 (Orin NX 16GB) | Built on the device at first deploy, about 5 minutes | Beta |
| Camera + reComputer R2000 Series (R2035-12, Hailo-8) | Your own RTSP / ONVIF camera | reComputer R2000 Series with the Hailo-8 accelerator option (R2035-12) | Compiled off-device and downloaded at deploy time | Beta |
| reCamera Pro | The camera's own sensor | reCamera Pro — camera and inspection node in one enclosure | Runs on the camera's own NPU, no separate host | Beta |
Yes. Detection, both checks, the Modbus server and the MQTT broker all run on the inspection host. No part of the verdict path needs an outside service.
Over Modbus TCP on port 502, unit 1. Coil 0 = NG and Coil 1 = OK; HR 0–7 match the surface-inspection map, and HR 8–11 add missing count, extra count, measured size and tolerance code. Registers are written before the coil flips, so treat the coil as the trigger.
The detector scores mAP50 0.9876 on Orin and 0.9858 on reComputer R2000 Series (R2035-12, Hailo-8), on the DeepPCB validation set. DeepPCB is bare-board copper defects, not assembly missing parts. A real deployment needs your own images.
The worst relative error was 0.65% against a 1% budget, on a synthetic calibration scene. On a real station it depends on your optics, lighting and fixture. It is not a certified gauge.
8 streams stable at 640² and 10 fps each, measured on reComputer J30 Series (J3011) with MQTT and Modbus off. With both outputs on it carries fewer. Treat 8 as the starting point for your own load test.
The expected-part list stops being valid, because its regions are picture positions. Re-aiming, remounting or refocusing means rebuilding the template for that station.
You still draw each box with two clicks. An optional offline annotation tool in the upstream repository turns the boxes into part regions; it never runs on the edge device.