← Selected work02 / PERCEPTION → ACTION

Inspection & Sorting Cell.

A decision becomes a physical action.

ROLE
Workflow direction & simulation validation
TOOLS
Isaac Sim · OpenUSD · Replicator · Python
DISCIPLINES
Synthetic data · RGB inspection · Robot sorting
YEAR
2026
Inspection conveyor beside a UR3e with Robotiq gripper and separate green GOOD and red REJECT bins.
FIG. 01The complete workcell: inspection zone, conveyor handoff, robot and two destination bins.
01 / THE OBJECTIVE

Inspect a part.
Act on the result.

Connect a synthetic-data workflow to an actual sorting task in Isaac Sim. The cell inspects a part, moves it along a conveyor and uses the predicted verdict to choose the robot’s drop path.

The final evidence contains one GOOD block cycle and one REJECT block cycle. Each keeps the same dynamic part through transport, contact grasp, carry and release into the correct bin.

VERIFIED AT SEPARATE PIPELINE & TASK MILESTONES

Dataset checks
400/400

24 seeded frames · M4 validation

Held-out decisions
48/48

24 GOOD · 24 REJECT · M6

Conveyor speed
0.15m/s

Physical surface-velocity transport

Final lift
110.1mm

Measured in both M8 block cycles

Sources: M4_validation.json, M6_INSPECTION_RESULTS.json and M8 GOOD / REJECT run records. These are controlled simulation checks, not a production inspection benchmark.

02 / DATA & ANNOTATIONS

One scene.
Several forms of evidence.

Three procedural shapes—block, cylinder and wedge—each have GOOD and REJECT variants. A near-black geometric patch represents the defect.

01

Build the workcell

A 1.20 × 0.36 m conveyor, a fixed inspection camera and two passive bins form the cell. The UR3e and integrated official Robotiq 2F-85 are referenced from the validated robot workflow.

02

Capture controlled variation

Replicator BasicWriter exports RGB, depth, semantic and instance segmentation, tight 2D boxes and camera parameters. Seed 4242 controls position, yaw, object mix, part appearance and lighting; the camera stays fixed.

03

Resolve annotations per frame

UsdSemantics.LabelsAPI carries class and quality labels. Segmentation colours, instance ids and box indices have separate mappings and can change between runs. Validation resolves those mappings instead of assuming stable ids.

Data capture places parts at planned poses without stepping physics. Conveyor transport and robot sorting are validated separately in the physical task.

Synthetic-data example showing RGB, colour-coded semantic segmentation and labelled tight bounding boxes.
FIG. 02Replicator outputs from the same workcell: RGB, semantic labels and 2D bounding boxes.

Open annotation detail ↗

03 / THE INSPECTION STEP

RGB in.
Verdict out.

The rule-based inspector measures dark pixels inside an eroded rendered part mask. A pixel is dark below 0.25 × the object’s median luminance; a dark fraction of at least 0.062 produces REJECT.

One threshold was calibrated on 22 objects, then checked on 48 held-out objects: 24 GOOD and 24 REJECT, with no false positives or false negatives in that dataset. The quality label is read for scoring after prediction, never to select the route.

Scope: a near-black patch and ground-truth mask localisation. No learned detector or real-camera defect benchmark is claimed.

Fixed inspection-camera view of a yellow block with a visible dark defect patch inside the inspection zone.
FIG. 03The fixed 1280 × 720 camera observes the defect before conveyor motion begins.
04 / SYSTEM FLOW

The verdict selects the destination.

Inspection happens before physics and belt motion start. The conveyor then carries the block to PICK at 0.15 m/s, stops ahead of the target and allows a 1.5-second settling interval before the robot approaches.

Joint drives execute the planned poses. The Robotiq fingers close through physical contact; friction supports the carry. Opening the gripper releases the part. No attachment, kinematic hold or direct part-pose update carries it after Play.

Project architecture: conveyor, fixed RGB camera and part mask, dark-fraction inspector, GOOD or REJECT verdict, UR3e and Robotiq, destination bin. Replicator supplies the development and scoring data.
FIG. 04Supplied system diagram. The sequence is inspect → transport → stop → grasp → verdict-selected drop → release.

Open readable architecture diagram ↗

05 / DEBUGGING & VALIDATION

Validate the behaviour.
Then connect the stages.

Geometry changed the belt speed

A non-uniform scale on the conveyor cube changed the effective surface speed from 0.15 to 0.18 m/s. Replacing it with an unscaled box mesh of the same dimensions restored the intended transport behaviour.

Visible RGB did not prove valid labels

Hiding labelled parts between captures produced correct RGB with empty segmentation and box outputs. Keeping labelled prims active and parking unused parts outside the camera view repaired the annotation pipeline.

Separate grasp tests passed three trials per shape—9/9 for block, cylinder and wedge. The final integrated conveyor-to-bin cycles below are block-only.

06 / FINAL VALIDATED CYCLES

Two verdicts.
Two physical outcomes.

The M8 captures repeat the verified task with a rendering-only recorder. Each video is one continuous block cycle.

GOOD block travels along the conveyor, is physically grasped by the UR3e and released into the green GOOD bin.
GOOD / FINAL CAPTURERGB verdict GOOD · Correct green bin · PASS
GOOD sequence description

The unmarked yellow block is classified GOOD, transported to PICK and allowed to settle. The robot grasps it, lifts it and releases it into the green bin. The block rests inside the bin as the arm retreats. No audio.

Defect-marked block travels along the conveyor, is physically grasped and released into the red REJECT bin.
REJECT / FINAL CAPTURERGB verdict REJECT · Correct red bin · PASS
REJECT sequence description

The dark patch produces a REJECT verdict. After the same conveyor handoff and physical grasp, the robot follows the REJECT drop path. The block is released and rests inside the red bin. No audio.

M8 final block-cycle measurements
MeasurementGOODREJECT
Dark-pixel fraction0.00000.1737
Handoff XY error2.58 mm2.58 mm
Slip during carry0.002 mm0.002 mm
Final bin-centre offset (X, Y)+2.8, −0.2 mm+2.0, +0.7 mm
Correct bin / robot-cell contactYes / noneYes / none

Source: media/m8/good_run.json and reject_run.json. Both record PASS over 33.0 seconds of simulation.

Yellow block resting in the green GOOD bin after release.
FINAL RESULT

GOOD

The block has settled inside the prediction-selected bin.

Yellow block resting in the red REJECT bin after release.
FINAL RESULT

REJECT

The block has settled inside the prediction-selected bin.

07 / RESULT & CREDITS

The pipeline connects.
The scope stays explicit.

The project connects labelled synthetic data, a testable RGB decision rule, physical conveyor transport and robot sorting. Both final block runs reach the correct bin without robot-cell contact.

Integrated cylinder and wedge sorting, moving-part inspection, repeated-cycle reliability and a continuous multi-part stream remain outside the validated scope. The small datasets verify the pipeline; they are not production training sets.

Project direction
Marko Bokan — workflow definition, technical judgement, QA and acceptance.
Robot & gripper
Referenced UR3e simulation asset with the official third-party Robotiq 2F-85. The Robotiq model was integrated, not authored by Marko.
Evidence
Dataset Card, Milestone Manifest, M6 inspection results, staged grasp / handoff reports and final M8 GOOD / REJECT run records.