Skip to content
Desmond Zee

VCP6

A six-axis desktop arm learning to play mahjong

2026-08 — 2026-09

Built VCP6, a six-axis desktop arm derived from the open-source PAROL6, with the controller rewritten from scratch on a Teensy 4.1 and six TMC2209 drivers. Replaced every belt with GT2 and wrote an iPhone app that streams ARKit pose over USB to teleoperate the arm and record demonstrations.

Trained a diffusion policy on those demonstrations to pick up and rotate mahjong tiles, running at 15 Hz from wrist, overhead and side cameras.

  1. 1Controller — Teensy 4.1, six TMC2209
  2. 2J1, base rotation — GT2 128T/20T
  3. 3J2, shoulder — 20:1 planetary
  4. 4J3, elbow — GT2 63T/57T
  5. 5J4 and J5, wrist — GT2 72T/18T
  6. 6Tool flange — gripper and wrist camera
Front elevation — height in the pose drawn
Diffusion policy — picking up and rotating a tile
Gripper
Controller
Teensy 4.1
Drivers
Six TMC2209, SpreadCycle
Step generation
200 kHz step generation; trapezoidal planner at 1 kHz
Transmission
GT2 belts; 20:1 and 10:1 planetary gearboxes at J2 and J6
Gripper
Printed OV/UMI gripper on an SG90 servo
Cameras
Wrist, overhead and side, 640 × 360 at 30 Hz
Teleoperation
iPhone ARKit pose over USB at 60 Hz
Policy
Diffusion policy; ResNet18 per camera, conditional UNet1D, action horizon 16