LinkerBot O6 Dexterous Hand — SDK Setup & Teleop Guide

Complete guide to connecting, streaming, and collecting data from the LinkerBot (Juqiao) O6 dexterous hand system using the RoboticsCenter SDK.

Device: LinkerBot O6 Device type: linker_o6 Agent: linker_agent Interface: USB Serial, 921600 baud
Dexterous Hand Teleoperation USB Serial Tactile Left + Right Hand

1. Overview

The LinkerBot O6 (also marketed as Linker or Juqiao) is a dexterous robotic hand system designed for contact-rich manipulation research and teleoperation data collection. It includes a glove controller that maps the operator's hand movements in real time to the robotic fingers, enabling high-fidelity demonstration capture for imitation learning pipelines.

Property Value
VendorLinkerBot / Linker / Juqiao
Device modelO6 Dexterous Hand System
Fingers5 per hand, individual bend sensors
Tactile regions16 per hand
Hand supportLeft and right, simultaneous
ControllerGlove-style teleoperation controller
InterfaceUSB Serial — /dev/ttyUSB0 (Linux) or COM* (Windows)
Baud rate921600
Protocol headerAA 55 03 99 (Juqiao framing)
Platform device IDlinker_hand
SDK device typelinker_o6
Agent modulelinker_agent

The O6 captures 16 tactile pressure regions per hand and 5-finger bend angle readings at high frequency, making it suitable for tactile-aware grasping research, compliant manipulation demonstrations, and contact-rich skill learning datasets.

2. Quick Start

Three commands from unboxing to a live browser teleop session:

  1. Plug in the O6 hand system via USB. Confirm the port appears: ls /dev/ttyUSB* on Linux or Device Manager on Windows.
  2. Install the SDK and connect.
    pip install roboticscenter
    rc connect
    The CLI auto-detects the O6 hand, opens a session on the platform, and prints a browser URL.
  3. Open the session URL in your browser. The teleop panel shows live finger positions, gesture presets, and the tactile heatmap. No additional configuration required.
No hardware available? Run rc connect --mock to start a simulated O6 session with synthesized sensor data. All SDK features and the full browser panel work in mock mode.

3. SDK Setup

Install

The roboticscenter package is available on PyPI and supports Python 3.9+:

pip install roboticscenter

Auto-detect

With no arguments, rc connect scans all serial ports for a Juqiao AA 55 03 99 frame and auto-selects the O6 if found. Use rc devices first to confirm the device is visible:

rc devices                    # scan all ports, print detected devices
rc connect                    # auto-detect LinkerBot O6 and start session

Manual port

If multiple serial devices are connected or auto-detect selects the wrong port, pass the port explicitly:

rc connect --port /dev/ttyUSB0        # Linux
rc connect --port COM3                # Windows

Mock mode

Simulate the full O6 data stream without hardware. Useful for CI pipelines, UI development, and testing data collection logic:

rc connect --mock             # synthetic data, full browser panel

Python SDK

Use LinkerO6 directly in Python for custom collection scripts or integration into existing pipelines:

from roboticscenter import LinkerO6

device = LinkerO6.connect()
print(f"Connected on: {device.port}")
print(f"Session: {device.session_url}")

for frame in device.stream():
    left = frame.data.get('left', {})
    print(f"Index: {left.get('index', 0):.3f}")

4. Protocol

The O6 communicates over USB Serial using the Juqiao framing protocol at 921600 baud. All packets begin with the 4-byte header AA 55 03 99 followed by a length byte, payload, and checksum.

Field Bytes Value / Notes
Magic header40xAA 0x55 0x03 0x99 — fixed preamble
Length1Payload byte count (excluding header and checksum)
PayloadvariableSensor readings: finger bend angles (5×2), tactile pressure (16×2), timestamps
Checksum1XOR of payload bytes

Payload layout within a full-hand frame:

  • Finger bend angles: 5 values per hand (thumb through pinky), each a uint8 mapped to 0–180°.
  • Tactile pressure regions: 16 values per hand, each a uint8 representing relative pressure (0 = no contact).
  • Timestamp: device-side microsecond counter for frame alignment.
Baud rate matters. Connecting at any baud rate other than 921600 will produce corrupted frames. Confirm your serial adapter supports this rate — some cheap USB-to-UART chips do not.

The SDK handles all framing, checksum validation, and packet reassembly internally. You never need to parse raw bytes unless implementing a custom agent outside the SDK.

5. Teleop

After running rc connect, the CLI opens the session URL in your default browser automatically (pass --no-browser to suppress). The teleop panel includes:

  • Finger position display: Real-time bend angle bars for all 10 fingers (5 per hand), updated at the sensor frame rate.
  • Gesture presets: One-click gestures — Rock, Paper, Scissors, Pinch, Spread — sent as motor position targets to the hand.
  • Real-time tactile heatmap: 16-region pressure overlay rendered on a hand outline. Color intensity maps to contact pressure.
  • Hand selector: Toggle between left hand, right hand, or both simultaneously.
  • Session recorder: Start/stop episode recording directly from the panel. Each episode is timestamped and uploaded to the platform on stop.
Glove controller. When the O6 glove controller is worn by the teleoperator, the browser panel reflects both the operator's hand pose (incoming from the glove) and the robot hand's executed position, enabling you to monitor tracking error in real time.

6. Data Collection

Every frame streamed from the O6 during an active recording session is captured and structured for downstream training use. The SDK records the following per frame:

Signal Shape Description
Finger bend angles[5] × 2 handsNormalized bend per finger, 0.0 (open) to 1.0 (fully closed)
Tactile pressure[16] × 2 handsPer-region relative pressure, 0.0–1.0
Timestampfloat64Unix timestamp with microsecond resolution
Device IDstrlinker_hand
Session IDstrPlatform-assigned session identifier
Raw bytesbytesOriginal wire packet, archived for re-parsing

Episodes are stored as JSONL files (one frame per line) with a companion manifest containing task metadata, episode boundaries, operator notes, and hardware serial. Data is upload-ready for the Fearless Platform episode browser immediately after recording stops.

7. Platform Integration

The SDK integrates with the Fearless Platform automatically when rc connect is run. The connection sequence is:

  1. SDK calls POST /api/teleop/sessions/create-sdk with device_type: "linker_o6".
  2. Platform returns a session ID, WebSocket relay URL, and browser deep link.
  3. SDK opens the WebSocket and begins forwarding sensor frames in real time.
  4. Browser panel connects to the same session via the deep link.

The session URL printed by the CLI has the form:

https://platform.roboticscenter.ai/session/RC-XXXX-XXXX

Share this URL with teammates or embed it in your data collection tooling. Sessions expire after inactivity but all recorded episodes remain accessible in the episode browser.

Episode browser

After recording, navigate to Episodes in the platform sidebar. Each recorded episode is listed with timestamp, duration, hand(s) used, and a tactile heatmap preview. Episodes can be downloaded as JSONL, viewed in the built-in playback timeline, or fed directly into a training pipeline via the platform API.

Data upload (manual)

If you collected data offline or with a custom script, upload JSONL episode files via the platform Upload page or the CLI:

rc session RC-XXXX-XXXX          # show session info and upload URL

8. Debugging

Symptom Likely cause Fix
Port not found USB driver not installed or cable not connected Run rc devices to list visible ports. On Linux, add user to dialout group: sudo usermod -aG dialout $USER
No frames received Wrong baud rate or wrong port selected Confirm baud is 921600. Use --port to select manually. Check that the O6 power LED is on.
Corrupted / malformed frames USB adapter does not support 921600, or cable too long Replace with a quality FTDI or CH340 adapter. Use a cable under 1 m.
Calibration drift Glove not calibrated to operator's hand size Run the calibration flow in the browser teleop panel (Settings → Calibrate Glove) with the glove flat and relaxed, then in a closed fist.
Browser panel not updating WebSocket relay disconnected Reload the browser tab. If the CLI is still running, the session will reconnect automatically within a few seconds.
Tactile heatmap shows all zeros No contact or tactile sensor not powered Confirm the tactile module cable is seated. Apply light pressure to a fingertip to verify signal.
Still stuck? Contact SVRC support with the output of rc devices and the SDK version (python -c "import roboticscenter; print(roboticscenter.__version__)").
New to robotics? Learn fundamentals — arms, teleop, sim, ROS 2 — at the SVRC Robotics Academy before integrating hardware.
Have a question? Ask the community or contact support with the output of rc devices.

Ready to collect dexterous hand data?

Register on the platform, connect your O6 hand, and start your first episode in minutes.