Unwind to verified release endpoints and check low residual tension before reporting rest. A physical disconnect remains necessary.
Live demo: hand → servo mirroring
19 Oct 2026 · the camera tracks one hand in the browser and four servos on the ESP32 follow the index, middle, ring and little fingers over Wi-Fi.
What the video shows
Top: the Hand → Servo dashboard. MediaPipe estimates each finger's bend (0–100%) and maps it to a servo angle. Bottom: the same moment on the bench, recorded on a phone. The two recordings are time-aligned on their shared room audio.
How it works
- Browser page runs the MediaPipe hand model offline (bundled WASM + model)
- Sends
GET /api/pose?angles=…at 20 Hz with a 1° deadband - ESP32 joins Wi-Fi (
bg4122-hand.local) or hosts theBG4122-Handaccess point - Servos ramp at 120°/s; Stop, Escape or closing the page sends
/api/zero
Bench test with servos on the LAFVIN shield; the servos are not yet attached to the glove. Angles are uncalibrated defaults, and the camera estimates movement only. It does not measure force. File hashes
How it moves
Each finger has a flexion puller and an extension puller. The opposing channel releases before the active tendon pulls.
32-second seekable 3D explanation. The scene is schematic; downloadable STLs contain the print geometry. Browser, layout and contrast checks pass. Open walkthrough →
Take up slack to a low measured tension. Missing or uncalibrated sensors prevent normal arming.
Hold a physical switch or app control. Coordinate the opposing tendons and enforce limits locally.
Explore the actual assembly
Orbit the real printable geometry and scrub the four-finger motion. Eight motor proxies show the forearm placement.
Printable attachments
Generic sizes now; adjust dimensions after the first fit test. No single clamp is assumed to fit every finger.

| Part | Material | Print quantity | Fit / assembly |
|---|---|---|---|
| Split fingertip cap | TPU 95A | 4 total | S 16×13, M 19×16, L 22×19 mm openings; strap-adjusted retention. |
| Clip-on guide | TPU 95A | Up to 8 total | On phalanx shafts, clear of joint creases; dorsal and palmar guide holes. |
| Eight-motor tray | PETG | 1 | 166×84 mm carrier; 24×14 mm servo openings. Add padded forearm support. |
| Base cover + posts | PETG | 1 cover + 4 posts | 32 mm enclosure gap keeps 24 mm motor cases clear of the lower guard; add padding. |
| Sheath reaction anchor | PETG | 2 | Eight stepped 4.5 / 2.5 mm channels; secure to padded support and retain outer sheaths. |
| Servo ear clamp | PETG | 16 | Two per servo, four M3 fasteners per servo; keep clamps clear of the central case and horn. |
| Horn-mounted spool | PETG | 8 | 8 mm core radius; attach to supplied horn. Verify screw spacing. |
| Fit coupon | TPU 95A | 1 first | Try light sliding fit before printing all attachments. |
Mesh checks cover closed edges, winding, connectedness and enclosed volume. They do not verify printed strength or skin comfort. Geometry has 0.5 mm steps in small parts; smooth all contact/guide surfaces. Full printing and assembly guide →
Control without the phone
LOCAL switches remain independent of the iPhone camera and Wi-Fi connection.
ESP32 and switches
- Arm / acknowledge fault
- Hold Open or Curl; release returns to low preload
- Rest unwinds all channels
- Cycle All → Index → Middle → Ring → Little
- LOCAL / REMOTE selector prevents silent ownership changes
- Normally closed stop interlock, separate power cut-off and tendon release
iPhone companion
- Local Wi-Fi connection to ESP32
- Individual finger selection and open/curl controls
- MediaPipe open/curled visual calibration
- Tendon-tension feedback from load sensors
- Optional bounded assistance target from camera movement error
- App background / lost tracking stops adaptive operation
Simulator and physical-iPhone targets compile successfully. Apple signing and an installed-device test are still required. This web board is not a hardware controller.
Camera landmarks estimate movement; they cannot measure tendon force or determine a safe patient range. Default tension mode needs eight amplified load-cell channels through two ADS1115 modules. These sensors are additional hardware beyond the spider kit. An explicitly unloaded firmware mode is provided for disconnected motor/spool tests.
| Finger | Flex signal | Extension signal |
|---|---|---|
| Index | GPIO13 | GPIO14 |
| Middle | GPIO16 | GPIO17 |
| Ring | GPIO18 | GPIO19 |
| Little | GPIO23 | GPIO27 |
Target: ESP32 DevKit / WROOM-32, not the pictured ESP8266. Servo power needs a separate regulated supply and common ground. Switch pins, sensing, flashing and iPhone setup →
What the simulation proves
The host simulator executes the production C++ control core against an illustrative spring/slack finger plant.

Passed checks
Arming gates, opposing-tendon release, per-finger selection, pulse slew, force faults, local operation, remote timeout, fault acknowledgement and rest. App/protocol tests cover stale messages and delayed responses after Stop.
The plotted tension is synthetic, not patient data. The simulator does not emulate radio timing, the real ADC, servo dynamics, skin pressure or stroke spasticity. Both ESP32 targets and the production web app build successfully. Real-device verification is pending.
Prior art
Ten references, separated by mechanism, population and evidence level.
| Reference | What it informs | Limit |
|---|---|---|
| Loading source index… | ||
MGlove-TS 2024 and Robotica 2025 are separate publications. Device output force is not a universal patient-safe force. Four full-text PDFs are saved in the repository research folder with hashes. Three linked PDF downloads were rejected by publishers; their links and failure report remain in the source register.
Build files
Printable files, two compiled ESP32 firmware modes, and the iPhone project with bundled camera assets. iPhone installation still requires Apple signing. Signing/build guide · Passed native builds.
Using both packages: extract the software ZIP into a project folder, then extract the printable ZIP into its cad/ subfolder.