Sorting Factory

Role

AI & Robotics Engineer

Timeline

OpenAI Build Week · July 2026

Tools
Unity6Unity6
PythonPython
FastAPI
WebSocket
REST API
YOLO
Watch on YouTube
CHAPTER 01

Inspiration

NVIDIA-style physical simulation inspired me to build a Unity training environment for my SO-101 instead of recording every episode by hand.

Multiple digital twins run in parallel, collecting observations, actions, and outcomes faster than one physical arm.

CHAPTER 02

Vision & Robotics

A Python server receives JPEG frames and ROI data from each Unity camera through WebSocket.

YOLO detects objects and ByteTrack stabilizes Track IDs. Results return to the matching Unity arm.

Detection alone does not trigger a pick. A red Latest Pick Line marks the last safe start point.

Unity predicts the time to that line. If it is too short, the arm abandons the pick.

Unity sorting line showing YOLO detections and the red latest pick line
YOLO detection and the time-aware Latest Pick Line inside Unity
UNITY / C#PickWindowEvaluator.csTIME-AWARE PICK DECISION
float distanceToLine = Mathf.Max(0f, latestPickS - target.pathS);
float timeRemaining = distanceToLine / conveyorSpeed;
float timeRequired = estimatedPickSeconds + safetyMargin;

if (!target.confirmed || !arm.IsIdle)
    return;

if (timeRemaining < timeRequired)
{
    Record(target, "SKIPPED", "INSUFFICIENT_TIME", timeRemaining);
    return;
}

if (!target.TryClaim(arm.Id))
    return;

StartPick(target, result =>
{
    target.ReleaseClaim();
    Record(
        target,
        result.Success ? "SUCCESS" : "FAILED",
        result.FailureReason,
        timeRemaining
    );
});
01 Predict time to the red line02 Skip when time is insufficient03 Record success or failure

Every initiated action ends as a success, failure, or abandoned attempt. The outcome—together with its reason, Track ID, timing, and joint data—is written to that session's CSV file, creating structured episodes for future robotics training.

CHAPTER 03

Web Control Panel

The control room gives me a live view of all three robotic arms, including each arm's work state, successful picks, and failed picks.

Success and failure rates stay visible throughout the session, making it easier to monitor performance and preserve consistent statistics for later analysis.

Browser control room showing the live status and pick statistics of three robotic arms
Live arm status, success rate, and failure rate across all three workstations
CHAPTER 04

Tool Stack

01

Simulation & Robotics

Unity 6C#SO-101IK
02

Vision & Tracking

PythonYOLO26nByteTrack
03

Services & Communication

FastAPIWebSocketREST API
04

Data & Monitoring

CSVReal-time TelemetryBrowser Control Room
MORE WORK ↓

Explore more