Bionic Hand — USB & BLE Control
BrainCo Revo II Specifications
Complete technical specifications from the BrainCo Revo II developer documentation.
Physical & Kinematic
| Vendor | BrainCo |
| Model | Revo II (left hand configuration) |
| Total DOF | 6 (thumb 2 DOF + index/middle/ring/pinky 1 DOF each) |
| Thumb DOF | Flexion + rotation (rotation = flexion × 0.4) |
| Finger DOF | 1 DOF flexion each: index, middle, ring, pinky |
| Position Range | 0.0 = fully open · 1.0 = fully closed (normalized float) |
| Wire Protocol Range | 0–100 integer (percent closure) |
USB-CDC Interface
| USB Interface | USB-CDC (Virtual COM port) |
| Linux Device | /dev/ttyACM0 |
| Baud Rate | 115200 (exact — no other rate works) |
| Python Dependency | pyserial |
Bluetooth Low Energy (BLE) GATT
| BLE Service UUID | 0000ffe0-0000-1000-8000-00805f9b34fb |
| Write Characteristic | 0000ffe1-0000-1000-8000-00805f9b34fb |
| Notify Characteristic | 0000ffe2-0000-1000-8000-00805f9b34fb |
| Python Dependency | bleak |
Command Protocol
| Format | Newline-terminated JSON, UTF-8 encoded |
| set_finger | {"cmd":"set_finger","finger":N,"position":P} — N: 0–4, P: 0–100 |
| set_pose | {"cmd":"set_pose","positions":[p0,p1,p2,p3,p4]} — all five positions atomically |
| calibrate | {"cmd":"calibrate"} — lock in firmware travel limits |
Piano Mode Timing
| Phase 1 — Extend | 20 ms, finger to hover position (0.15 = 15% closure) |
| Phase 2 — Drive | 30 ms, drive to press depth (0.55–0.95 proportional to velocity) |
| Phase 3 — Hold | Configurable duration — key depressed |
| Phase 4 — Retract | 20 ms, lift back to hover position |
| Press Depth Range | 0.55 (velocity=0.0) to 0.95 (velocity=1.0) |
| Hover Position | 0.15 (15% closure — neutral ready-to-press) |
| Concurrent Presses | Yes — per-finger asyncio locks, no dropped notes |
Calibration
| Calibration Step | 120 ms per finger (wave sequence: thumb → pinky) |
| Wave Pattern | Open → close to 90% → open (per finger) |
| Post-Calibration Position | All fingers settle at hover (15% closure) |
| Settle Delay (start) | 300 ms before wave begins |
Telemetry & SDK
| Telemetry Rate | 10 Hz default (configurable) |
| Platform Agent | brainco_revo_agent.py |
| Python Dependencies | pyserial (USB) · bleak (BLE) · websockets (platform) |
| URDF | Available for ROS1 and ROS2 |
| Snapshot Fields | connected, mode, positions (float[5]), positions_dict, is_pressing, any_pressing, current_note, command_count |