Downloads · 30 days
0
realhandinc/realhand-teleop
realhand-teleop is a robotics model from realhandinc. Use it for the robotics task on the model card, and read the license before you ship it in a product. The card lists the license as other.
RealHand Teleop is an Isaac Sim, Isaac Lab, and Isaac Teleop integration for teleoperating a RealHand P7 bimanual robot equipped with RealHand L6, O6, or L20 dexterous hands from a PICO 4 Ultra headset.
Downloads · 30 days
0
Access
Public
Updated Oct 14, 2026
Repo size
180 MB
Likes
3
Public
Click a slice to open those files.
.stl177 MB · 73%
From the Hugging Face model README
RealHand Teleop is an Isaac Sim, Isaac Lab, and Isaac Teleop integration for teleoperating a RealHand P7 bimanual robot equipped with RealHand L6, O6, or L20 dexterous hands from a PICO 4 Ultra headset.
This repository is a robotics software and asset bundle. It does not contain pretrained model weights, NVIDIA runtimes, or the external FFG SDK.
The package contains:

Versioned USD packages for the P7 robot with dual L6, O6, or L20 hands are
available under assets/isaaclab. They contain
the complete robot and verified wrist flange assemblies and can be resolved
directly by the corresponding isaaclab_assets configurations.
Select the hand with P7_REALHAND_HAND_MODEL=l6|o6|l20 and the input mode with
P7_REALHAND_INPUT_MODE=controller|handtracking|controller_ffg.
| Input mode | Arm pose | Hand joints |
|---|---|---|
controller | Left/right PICO controllers | Matching controller trigger |
handtracking | Left/right OpenXR wrists | OpenXR 26-joint hand skeleton |
controller_ffg | Left/right PICO controllers | Left/right FFG gloves |
All three hands support all three modes. Gravity and hand self-collision are enabled by default for the inspection scene.
On startup and reset, both P7 arms are straight down beside the body, with open hands, fingers down, and hand backs facing the left/right outer sides of the body (palms inward). All 14 arm joints start at zero; mirrored fixed hand mounts set this orientation. This rest pose is separate from the XR coordinate mapping: controller, hand-tracking, and FFG wrist tracking retain their reference frames. The torso uses convex-decomposition collision geometry so that empty space beside the body remains free for the lowered arms. Initial collision cooking can take longer on the first launch; finger collision settings are independent.
| Component | Tested version |
|---|---|
| Operating system | Ubuntu 24.04.4 LTS |
| Python | 3.12.3 |
| Isaac Sim | 6.0.0.1 |
| Isaac Lab source | release/3.0.0-beta2 |
| Isaac Lab commit | 1a88953ca1cd246feebb9e33b8d381c2c0b4736d |
| Isaac Lab package metadata | 6.1.5 |
| Isaac Teleop | 1.3.105rc1 |
| XR device | PICO 4 Ultra |
| XR interface | OpenXR |
See COMPATIBILITY.md for the tested environment.
Install the workstation, XR, and glove runtimes separately before using this bundle. This repository only contains RealHand-owned integration code, robot assets, hand assets, scene assets, and launch/calibration scripts.
| Component | Required for | Source / notes |
|---|---|---|
| NVIDIA GPU driver | All modes | Install a recent NVIDIA Linux driver supported by Isaac Sim. Validate with nvidia-smi. |
| Isaac Sim | All modes | Install the tested NVIDIA Isaac Sim version listed above. |
| Isaac Lab | All modes | Use an Isaac Lab checkout at the tested branch/commit listed above. Set ISAACLAB_ROOT and ISAACLAB_ENV when they are not in the default locations. |
| Isaac Teleop | All modes | Install NVIDIA Isaac Teleop at the tested version. The launcher uses Isaac Teleop's OpenXR and CloudXR entry points. |
| PICO 4 Ultra OpenXR tracking | controller, handtracking, controller_ffg | Use the PICO 4 Ultra headset/controllers with the OpenXR path exposed through Isaac Teleop. |
| CloudXR runtime | Current wireless XR path | Required for the current PICO streaming workflow. Accept the NVIDIA CloudXR EULA once before first use. |
| FFG / RealForce pure Python SDK | controller_ffg only | Clone and install FFG_realhand_pure_python. It provides the realhand_pure_python package used for RealForce glove serial reading, calibration loading, and retarget input. |
CloudXR, Isaac Sim, Isaac Lab, Isaac Teleop, the PICO runtime/client, NVIDIA drivers, and the FFG SDK are not redistributed in this repository. Their upstream license terms apply independently.
The commands below use a configurable workspace instead of a machine-specific
path. Replace $HOME/realhand with any local directory you prefer:
export REALHAND_WORKSPACE="$HOME/realhand"
export REALHAND_TELEOP_ROOT="$REALHAND_WORKSPACE/realhand-teleop"
export ISAACLAB_ROOT="$REALHAND_WORKSPACE/IsaacLab"
export ISAACLAB_ENV="$REALHAND_WORKSPACE/env_isaaclab"
controller and handtracking modes do not need the FFG SDK. Install it only
when using P7_REALHAND_INPUT_MODE=controller_ffg.
The launcher looks for the SDK at P7_REALHAND_FFG_SDK_PATH. The recommended
layout places the FFG SDK as a sibling of the downloaded RealHand Teleop repo:
$REALHAND_WORKSPACE/FFG_realhand_pure_python-main
Recommended install after creating the Isaac Lab Python environment:
mkdir -p "$REALHAND_WORKSPACE"
cd "$REALHAND_WORKSPACE"
git clone https://github.com/RealHand-Robotics/FFG_realhand_pure_python.git \
FFG_realhand_pure_python-main
source "$ISAACLAB_ENV/bin/activate"
python -m pip install -e "$REALHAND_WORKSPACE/FFG_realhand_pure_python-main"
export P7_REALHAND_FFG_SDK_PATH="$REALHAND_WORKSPACE/FFG_realhand_pure_python-main"
The upstream FFG SDK also documents a standalone Conda environment. For this
Isaac Teleop bundle, install the SDK into the Isaac Lab Python environment or
make it visible through P7_REALHAND_FFG_SDK_PATH/PYTHONPATH.
After downloading this repository, verify that the package is importable and that the gloves are visible from the repository root:
python -c "import realhand_pure_python; print('realhand_pure_python ok')"
python scripts/teleop/scan_ffg_gloves.py
If Linux reports permission denied for /dev/ttyUSB*, add the user to
dialout, then log out and back in:
sudo usermod -aG dialout "$USER"
Set the workspace variables above, install or invoke the Hugging Face CLI, then download the package:
mkdir -p "$REALHAND_WORKSPACE"
cd "$REALHAND_WORKSPACE"
uvx hf download realhandinc/realhand-teleop \
--revision v0.2.0 \
--local-dir realhand-teleop
cd "$REALHAND_TELEOP_ROOT"
Point the launcher to the Isaac Lab checkout and Python environment when they are not in the default locations:
export ISAACLAB_ROOT="$REALHAND_WORKSPACE/IsaacLab"
export ISAACLAB_ENV="$REALHAND_WORKSPACE/env_isaaclab"
source "$ISAACLAB_ENV/bin/activate"
python -m pip install -e \
examples/isaac_lab/p7_realhand_bimanual/source
python scripts/teleop/check_install.py
python scripts/teleop/test_retargeters.py
The editable install is convenient but not required by the launcher because it
also adds the extension and shared retargeter paths to PYTHONPATH.
Accept the NVIDIA CloudXR EULA once before the first XR session:
source "$ISAACLAB_ENV/bin/activate"
python -m isaacteleop.cloudxr --accept-eula
After the runtime reports that it is running, press Ctrl+C. The regular
launcher starts CloudXR automatically, so a separate CloudXR terminal is not
required for normal use.
Activate the environment and enter the downloaded repository:
source "$ISAACLAB_ENV/bin/activate"
cd "$REALHAND_TELEOP_ROOT"
L6 controller mode:
P7_REALHAND_HAND_MODEL=l6 \
P7_REALHAND_INPUT_MODE=controller \
PICO4U_DEVICE=cpu \
bash scripts/teleop/run_pico4u_teleop.sh
O6 hand-tracking mode:
P7_REALHAND_HAND_MODEL=o6 \
P7_REALHAND_INPUT_MODE=handtracking \
PICO4U_DEVICE=cpu \
bash scripts/teleop/run_pico4u_teleop.sh
L20 controller arms plus FFG hands:
P7_REALHAND_HAND_MODEL=l20 \
P7_REALHAND_INPUT_MODE=controller_ffg \
P7_REALHAND_FFG_SDK_PATH="$REALHAND_WORKSPACE/FFG_realhand_pure_python-main" \
PICO4U_DEVICE=cpu \
bash scripts/teleop/run_pico4u_teleop.sh
Use P7_REALHAND_HAND_MODEL=l6, o6, or l20 with any of the three supported
input modes.
The FFG reader auto-discovers USB serial devices and uses the glove-reported
side byte (left/right) from the RealForce version query. Set
P7_REALHAND_FFG_LEFT_PORT and P7_REALHAND_FFG_RIGHT_PORT only when explicit
assignment is needed. Leaving them unset, empty, or set to auto uses
discovery.
Check USB access before launching Isaac:
python scripts/teleop/scan_ffg_gloves.py
If Linux reports permission denied for /dev/ttyUSB*, add the user to
dialout and log out and back in:
sudo usermod -aG dialout "$USER"
For the current terminal only, use sg dialout -c '<command>' after group
membership is updated.
The package includes a 3D-printable PICO controller holder for FFG glove use:
hardware/ffg_pico_controller_mount/finalpico2.3mf
Print two copies for each hand. Assemble the two printed parts symmetrically
around the PICO controller, then mount the assembled holder on the back of the
FFG glove. With the controller fixed on the glove back, controller_ffg mode
can use the PICO controller pose for the P7 arm while the FFG glove controls
the RealHand joints.
You can calibrate FFG gloves from the Isaac desktop UI in controller_ffg mode
or from the offline script:
P7_REALHAND_HAND_MODEL=l20 \
python scripts/teleop/calibrate_ffg_gloves.py --model l20 --force
The output is written to:
calibration/ffg_calibration_<model>_dual.yml
The launcher automatically uses this file when it exists. To override it:
export P7_REALHAND_FFG_RAW_CALIBRATION_PATH=/path/to/ffg_calibration_l20_dual.yml
L6 and O6 use a short five-pose calibration because their thumbs do not need the full L20 opposition workspace.
Open palm:
Full fist:
Thumb-only full curl:
Thumb to index fingertip:
Thumb to middle fingertip:
L20 uses a richer seven-pose calibration because its thumb has a larger lateral workspace.
Open palm:
Full fist:
Thumb-only full curl:
Thumb to index fingertip:
Thumb to middle fingertip:
Thumb to ring fingertip:
Thumb to pinky fingertip:
For every pose, hold still during the sampling countdown. If a pose feels ambiguous, prefer a relaxed, repeatable posture over an extreme one.
The bundled inspection_kitting scene contains:
The scene is self-contained and does not require external robot assets or an NVIDIA Nucleus asset server.
src/plugins/realforce_glove/
FFG / RealForce glove input plugin.
src/retargeters/realhand/
Shared RealHand L6/O6/L20 retargeting code.
examples/teleop/python/config/realhand/
Retargeting URDF and DexPilot configuration files.
examples/isaac_lab/p7_realhand_bimanual/
P7 + RealHand assets, Isaac Lab task, scene, scripts, and documentation.
hardware/ffg_pico_controller_mount/
3D-printable PICO controller holder for FFG glove mounting.
scripts/teleop/
Stable root launch, FFG calibration, USB scan, and validation entry points.
P7_REALHAND_HAND_MODEL=o6
P7_REALHAND_INPUT_MODE=controller_ffg
P7_REALHAND_SCENE_MODE=inspection_kitting
P7_REALHAND_SELF_COLLISION=1
P7_REALHAND_L20_SELF_COLLISION_FILTERS=1
P7_REALHAND_ROBOT_YAW_DEG=90
P7_REALHAND_WORKSPACE_CENTER_Z=0.82
P7_REALHAND_CONTROLLER_POSITION_SMOOTHING_ALPHA=1.0
P7_REALHAND_CONTROLLER_ORIENTATION_SMOOTHING_ALPHA=0.85
P7_REALHAND_CONTROLLER_MAX_ORIENTATION_STEP_DEG=90.0
P7_REALHAND_HAND_CURL_SMOOTHING_ALPHA=0.65
P7_REALHAND_HAND_THUMB_FLEX_SCALE=1.15
P7_REALHAND_HAND_THUMB_CLOSE_GAIN=1.80
P7_REALHAND_HAND_THUMB_OPPOSITION_GAIN=1.80
P7_REALHAND_IK_POSITION_COST=42.0
P7_REALHAND_IK_ORIENTATION_COST=2.0
P7_REALHAND_IK_LM_DAMPING=3.0
P7_REALHAND_IK_GAIN=0.85
P7_REALHAND_FFG_SDK_PATH=$REALHAND_WORKSPACE/FFG_realhand_pure_python-main
P7_REALHAND_FFG_LEFT_PORT=auto
P7_REALHAND_FFG_RIGHT_PORT=auto
P7_REALHAND_FFG_BAUDRATE=0
P7_REALHAND_FFG_RAW_CALIBRATION_PATH=calibration/ffg_calibration_o6_dual.yml
Legacy P7L6_* spellings remain accepted for existing scripts.
More PICO and OpenXR notes are available in
examples/isaac_lab/p7_realhand_bimanual/docs/OPENXR_PICO4U.md.
This package controls the simulated P7 and RealHand system. It is not a certified real-robot safety controller. Validate workspace limits, collision behavior, emergency stops, and command transport before adapting it to physical hardware.
RealHand-owned code, P7/L6/O6/L20 assets, and the inspection scene are released
under Apache-2.0. Files derived from Isaac Lab retain their BSD-3-Clause
headers and terms. See LICENSE, NOTICE, and
LICENSES/ for details.