Paper · 2023-07-10 · cs.RO, cs.CV, cs.LG
AnyTeleop: A General Vision-Based Dexterous Robot Arm-Hand Teleoperation System
Vision-based teleoperation for dexterous arm-hand robots. MediaPipe hand detection, optional depth, multi-camera fusion, optimization-based retargeting to robot hand joints, and CuRobo arm motion. Author-reported: higher real-robot success than Telekinesis on 8 of 10 tasks; better imitation learning than a simulator-specific baseline on 5 of 6 SAPIEN settings.
TeleoperationMotion retargetingImitation learningLearning from demonstrationteleoperationdexterous-manipulationretargetingimitation-learning
arXivPDFCodeMarkdown13 min read
AI-compiled by claude-haiku-5-5 on 2026-10-18, not yet reviewed by a human. Every claim cites its source; check it when a detail matters.
In plain words
Teaching a robot a skill often means showing it the skill many times. A common way to show it is to move a robot yourself while it copies you. Most camera-based versions of this only work with one robot model, in one place, with one camera setup, so each new robot means a new system.
AnyTeleop is one general system for this. A camera watches your hand. Software reads the finger and wrist positions, works out where the robot's fingers and wrist should go, and sends those commands to a robot arm and hand. The same pipeline works for different arms and hands, in a simulator or on a real robot, and with one or several cameras. A browser view lets an operator follow the scene from anywhere, and two operators can share one scene to hand an object between two robots.
The point is to make it cheap and easy to collect demonstrations across many robots and settings, and the authors report that policies trained on these demonstrations do better than ones trained on data from an earlier, specialised system in simulation.
TL;DR
- A vision-based teleoperation stack for dexterous arm-hand robots: hand pose detection, optional multi-camera fusion, optimization-based hand retargeting, and GPU motion generation for the arm §3.2 §4.
- Modular, with fixed input and output interfaces per module, so it can run in simulation or on hardware and with RGB or RGB-D cameras §3.1 §3.2.
- Author-reported: higher real-robot success than Telekinesis on 8 of 10 replicated tasks, and higher imitation-learning success than the baseline on 5 of 6 simulated settings tab. 4 tab. 3.
- The released code covers only the retargeting library. The server, fusion, motion generation and experiments have no public code in the linked repositories.
Problem
Vision-based teleoperation is a cheap way to collect demonstrations for dexterous hands §1. Earlier systems are tied to one robot model or one deployment environment. Some need hand-tracking models trained in the studio where they are deployed, or retargeting and collision models trained for one robot. Those systems scale poorly as robots and environments multiply §1.
Each earlier system also targets one "reality": the real world, or one chosen simulator. Most are built for one operator and one robot §1. The paper counts these gaps as the reasons existing systems do not scale data collection §1.
Method
Overview. AnyTeleop has four server modules with defined inputs and outputs: hand pose detection, detection fusion, hand pose retargeting and motion generation §4. The architecture also has a camera driver, the robot in simulation or on hardware, and a web visualizer §3.2 fig. 3. The authors state that the system needs no extrinsic calibration between cameras as input §3.1. A calibration step does run inside the fusion module (step 2 below) §4.2.
1. Hand pose detection §4.1.
- A lightweight RGB hand detector (MediaPipe) gives 21 hand keypoints in the wrist frame in 3D and 2D image keypoints. It runs in real time on a CPU §4.1.
- With an RGB-D camera, keypoint depths are read from the depth image and back-projected with the camera intrinsics. The wrist 6D pose then comes from the Perspective-n-Point (PnP) algorithm §4.1.
- With RGB only, hand orientation is computed from the local keypoints. The wrist position comes from an extra network that predicts the hand's weak-perspective scale, adopted from FrankMocap §4.1. The authors say this position is less accurate than depth but still usable. They report no number §4.1.
- The detector also outputs SMPL-X hand shape parameters, which the fusion step uses as a confidence signal §4.2.
2. Detection fusion §4.2.
- Each camera estimates the hand pose in its own frame. Single-camera detection is unreliable when the hand is perpendicular to the image plane (self-occlusion) §4.2.
- Calibration uses the hand as the marker. For the first N frames the operator spreads the fingers. The relative rotation between cameras is estimated in SO(3) from relative motion between consecutive frames, which the authors find more robust than absolute positions in RGB-only mode §4.2.
- Confidence per camera: take the mean of the SMPL-X shape parameters over the first N frames as a reference. The error between each frame's prediction and this reference is the confidence signal. A larger error means less confidence. The norm used for the error is not stated §4.2.
- At run time the fusion passes on the relative motion from the most confident camera §4.2.
3. Hand pose retargeting §4.3 eq. 1.
- The retargeting maps the detected human finger keypoints to the robot hand joints by an optimization at each time step t §4.3.
- Eq. 1 minimizes, over the joint vector q_t, the sum over keypoints i of the squared difference between the scaled human keypoint vector and the robot's keypoint vector, plus a penalty on the change from the previous step. It is subject to joint bounds q_l ≤ q_t ≤ q_u eq. 1.
- Symbols: v_t^i is the i-th human keypoint vector, f_i the i-th forward kinematics of the robot hand, α a hand-size scaling factor, and β the smoothing weight eq. 1. The paper gives no values for α or β §4.3.
- For a different morphology the keypoint correspondence between human and robot fingers is set by hand §4.3.
- This module handles the hand only, not the arm §4.3.
# Hand pose retargeting at time step t [§4.3] [eq. 1]
# Input: human keypoint vectors (v), previous joints (prev), scale alpha,
# smoothing weight beta
# Output: robot hand joint positions
def retarget_step(v, prev, alpha, beta):
# Minimize over q the sum, over keypoints i, of
# || alpha * v[i] - f_i(q) ||^2 + beta * || q - prev ||^2 [eq. 1]
# subject to q_lower <= q <= q_upper [eq. 1]
q = minimize_bounded_least_squares(
residuals(v, alpha, beta, prev),
lower=q_lower,
upper=q_upper,
start=prev,
)
return q4. Motion generation §4.4.
- The arm moves with CuRobo, a GPU-parallelized collision-free motion generator. The authors chose it over the acceleration-based RMP approach of DexPilot, which does not guarantee natural trajectories §4.4.
- Input: the end-effector Cartesian pose at 25 Hz from detection and retargeting. Output: collision-free joint trajectories within joint limits at 120 Hz §4.4.
- These trajectories go to impedance controllers on the simulated or real robot §4.4. CuRobo's internal settings are not stated in the paper.
5. Software interface and deployment §3.1 §3.2. Each module has defined input and output interfaces, so it can be swapped. The control modules can run on a separate machine from detection §6.1. The whole stack is packaged as a Docker image §3.1.
6. Web-based viewer §5 app., Web-based Teleoperation Viewer.
- Built on meshcat, with Three.js for rendering. After each simulation iteration the server sends the state to browsers. Operators see the scene and move their hand to control the robot §5.
- Multi-view: open more browser windows app., Web-based Teleoperation Viewer fig. 9.
- Rendering is lightweight. Simulation states can be saved for later rendering with a stronger engine app., Web-based Teleoperation Viewer fig. 8.
7. Collaborative teleoperation §7.2 fig. 6.
- Each teleoperation unit is a computer with at least one camera and one operator. The operator watches a browser view and moves the hand §7.2.
- A central server runs the physics simulation and the web visualizer. It takes detections from all units, converts them to robot commands, and keeps the visualization synchronized §7.2.
- The paper's example is a human-to-robot handover fig. 5 §7.2.
Setups used in the experiments.
- Real robot: XArm6 arm with an Allegro hand, one Intel RealSense camera, one trained operator §6.2.
- Simulation imitation learning: SAPIEN environments with floating-hand and arm-hand variants of three tasks §7.1 tab. 3.
- Camera configuration study: Play Piano task in IsaacGym [app., System Evaluation on Camera Configurations].
Hyperparameters
| Name | Value | Where | Notes |
|---|---|---|---|
| Frames for camera calibration and confidence reference (N) | 50 | §4.2 | Operator spreads fingers during these frames |
| Hand pose detection rate | 25 Hz (designed maximum) | §6.1 | Retargeting and fusion run at the same rate §6.1 |
| Motion generation input rate | 25 Hz | §4.4 | End-effector pose from detection and retargeting |
| Motion generation output rate | 120 Hz | §4.4 §6.1 | Joint-space trajectories |
| Retargeting scaling factor α (Allegro) | 1.6 | allegro_hand_right.yml | Paper: not stated. Code comment: Allegro is about 1.6 times a human hand retargeting_config.py |
| Retargeting smoothing weight β | Not stated in paper | eq. 1 | Code default normal_delta 4e-3 retargeting_config.py |
| Huber transition δ | 2e-2 (code default) | retargeting_config.py | Paper uses squared error, see Paper vs code |
| Low-pass filter α (teleop configs) | 0.2 | allegro_hand_right.yml | Paper: not mentioned. Code default 0.1 retargeting_config.py |
| Joint-limit slack | 1e-3 | optimizer.py | Added to each joint bound |
| Solver tolerance (vector optimizer) | 1e-6 absolute | optimizer.py | Solver is NLopt LD_SLSQP optimizer.py |
| Demonstrations per task (imitation learning) | 50 | §7.1 | Same count for baseline and AnyTeleop |
| Policy seeds | 3 | §7.1 tab. 3 | Mean ± standard deviation over seeds |
| Evaluation trials per policy | 100 | §7.1 tab. 3 | |
| Real-robot tasks | 10 | §6.2 tab. 4 | Replicated from Telekinesis |
| Real-robot trials per task | 10 | §6.2 | One camera |
| Camera-configuration trials | 10 per configuration | app., System Evaluation on Camera Configurations | Play Piano task |
| Imitation learner | DAPG | §7.1 | Same algorithm for both demonstration sources |
| Reward for RL baseline | Same dense reward as prior work | §7.1 | Prior work: [qin:ral2022] |
Results
Author-reported. The setups are listed under Method.
Real robot vs Telekinesis tab. 4. XArm6 with Allegro, one RealSense camera, ten runs per task. The Telekinesis numbers are copied from its paper, not re-run tab. 4 caption.
| Task | AnyTeleop | Telekinesis [sivakumar2022robotic] |
|---|---|---|
| Pickup Box Object | 1.0 | 0.9 |
| Pickup Fabric Toy | 1.0 | 0.9 |
| Box Rotation | 0.6 | 0.6 |
| Scissor Pickup | 0.8 | 0.7 |
| Cup Stack | 0.9 | 0.6 |
| Two Cup Stacking | 0.7 | 0.3 |
| Pouring Cubes onto Plate | 0.7 | 0.7 |
| Cup Into Plate | 1.0 | 0.8 |
| Open Drawer | 1.0 | 0.9 |
| Open Drawer and Pickup Object | 0.9 | 0.6 |
Higher on 8 tasks, equal on 2 §6.2 tab. 4.
Imitation learning in SAPIEN tab. 3. Success rate over 100 trials, mean ± standard deviation over three seeds. The table gives no unit, but the rate is per 100 trials. Baseline is the demonstrations of the prior system [qin:ral2022] and RL is pure reinforcement learning without demonstrations §7.1.
| Setting | Task | RL | Baseline [qin:ral2022] | AnyTeleop |
|---|---|---|---|---|
| Floating-hand | Relocate | 36.3 ± 15.3 | 49.7 ± 18.3 | 53.7 ± 12.2 |
| Floating-hand | Flip Mug | 33.7 ± 15.0 | 51.3 ± 34.7 | 47.3 ± 28.3 |
| Floating-hand | Open Door | 69.3 ± 38.0 | 64.7 ± 14.7 | 73.3 ± 9.0 |
| Arm-hand | Relocate | 33.7 ± 29.3 | 40.3 ± 36.7 | 70.0 ± 9.8 |
| Arm-hand | Flip Mug | 31.0 ± 28.7 | 36.0 ± 32.4 | 53.7 ± 24.0 |
| Arm-hand | Open Door | 34.7 ± 31.7 | 51.3 ± 30.7 | 79.7 ± 15.5 |
AnyTeleop is higher than the baseline on 5 of 6 rows, the exception being floating-hand Flip Mug tab. 3 §7.1. It is higher than RL on all 6 tab. 3.
Profiling tab. 2. Time per module in milliseconds, all modules running on one computer. The table does not say whether ± is a standard deviation.
| Module | Desktop (RTX 3090, i9-10980XE) | Laptop (RTX 2070, i7-8750) |
|---|---|---|
| Hand pose (RGB) | 26 ± 5 | 34 ± 5 |
| Hand pose (RGB-D) | 27 ± 5 | 35 ± 5 |
| Fusion | 1 ± 0 | 1 ± 0 |
| Retargeting | 9 ± 7 | 10 ± 9 |
| Motion | 8 ± 3 | 11 ± 5 |
The authors report that 120 Hz motion generation was hard to reach with all modules on one computer, so they move the control modules to a separate machine §6.1.
Comparison with related systems tab. 1. Qualitative capabilities, as stated by the authors. "Free" columns mean the system does not need the listed input or requirement.
| System | Calibration Free | Contact Free | Depth Free | Multiple Arms | Multiple Hands | Reality | Collision Free | Remote Teleop | Collaborative Teleop |
|---|---|---|---|---|---|---|---|---|---|
| DexPilot [handa2020dexpilot] | no | yes | no | no | no | Real | yes | no | no |
| Holo-Dex [holodex] | yes | yes | yes | No Arm | no | Real | no | yes | no |
| DIME [arunachalam:arxiv2022] | no | yes | yes | No Arm | no | Real | no | yes | no |
| TeachNet [li2019vision] | yes | yes | no | No Arm | no | Sim&Real | no | no | no |
| Telekinesis [sivakumar2022robotic] | yes | no | yes | no | no | Real | yes | yes | no |
| Qin et al. [qin:ral2022] | yes | yes | no | No Arm | yes | Sim | no | yes | no |
| MVP-Real [mvpreal] | no | no | yes | No Arm | no | Real | no | yes | no |
| Transteleop [li2022dexterous] | no | no | no | no | no | Real | yes | yes | no |
| Mosbach et al. [mosbach:humanoids2022] | no | no | yes | no | no | Sim | no | yes | no |
| AnyTeleop | yes | yes | yes | yes | yes | Sim&Real | yes | yes | yes |
Camera configurations tab. 5 (Play Piano in IsaacGym, ten runs each, one trained operator). Completion time and error rate on incorrect key presses:
| Camera configuration | Completion time | Error (%) |
|---|---|---|
| Single RGB | 109 s | 28.1 |
| Single RGB-D | 87 s | 21.8 |
| Two RGB-D | 74 s | 12.5 |
The paper reads these as a trade-off: more information (depth) and more cameras mean faster and more accurate teleoperation [app., System Evaluation on Camera Configurations].
Paper vs code
Repository used. The project page linked in the abstract points to three
repositories. Only one is cited here: https://github.com/dexsuite/dex-retargeting
(MIT, cloned at commit 3f56141bc8bd2760d5e452e382937269554ebb21). Its
CITATION.cff lists the eight AnyTeleop authors. It holds the retargeting library
used for §4.3: the vector optimizer, a DexPilot optimizer, a low-pass filter and
robot configs. It has no hand detector, no fusion, no CuRobo motion module, no
teleoperation server and no experiment code.
The project page also links https://github.com/NVlabs/sim-web-visualizer for the
web viewer §5. It was not cloned or license-checked, so nothing from it is used.
I searched GitHub for an official repository of the full system (AnyTeleop
name search and the authors' organisations) and found none. The
dexsuite/dex-retargeting repo is the only one linked from the project page.
Objective differs from eq. 1.
- Eq. 1 uses squared differences per keypoint eq. 1. The vector optimizer takes the Euclidean norm of each scaled vector error, then applies a Huber (smooth L1) loss with transition δ = 0.02 to the norms [code: src/dex_retargeting/optimizer.py#L272-L273]. Huber is not in eq. 1.
- The smoothing term is
normal_deltatimes the squared step size, withnormal_delta= 4e-3 by default optimizer.py retargeting_config.py. The paper's β is unstated. - The solver is NLopt SLSQP with joint bounds widened by 1e-3 [code: src/dex_retargeting/optimizer.py#L41] [code: src/dex_retargeting/optimizer.py#L54-L60].
Low-pass filtering is not in the paper. SeqRetargeting applies an
exponential filter to the output joints after each optimization [code:
src/dex_retargeting/seq_retarget.py#L132-L133]. The update is
y ← y + α(x − y) optimizer_utils.py. The teleop
configs set α = 0.2 allegro_hand_right.yml.
The paper describes the hand commands as smooth §4 but never mentions
a filter.
Retargeting type. The paper describes a vector-style optimization eq. 1. The code also ships a DexPilot optimizer optimizer.py. The paper does not say which optimizer the evaluated system used. The configs exist for both.
Failure fallback not in the paper. If the optimizer raises a runtime error, the code prints it and returns the previous joints [code: src/dex_retargeting/optimizer.py#L100-L102].
Not checked against code. Detection, fusion, CuRobo settings, the web viewer, the imitation-learning pipeline and the real-robot results have no code in the linked repositories. Those claims rest on the paper alone.
Pitfalls
- Eq. 1 is not the implemented loss. Implement the released form (Huber on vector norms plus a squared step penalty) only if you want to match the code. Use eq. 1 only if you want to match the text. The paper's α and β are both unstated.
- The low-pass filter changes latency. The code's teleop configs filter every output with α = 0.2. A smaller α is smoother but adds lag [code: src/dex_retargeting/configs/teleop/allegro_hand_right.yml#L14-L15]. The paper does not mention this cost.
- Configuration key names. The YAML key
normal_deltasets the code'snorm_deltaretargeting_config.py. The namenormal_deltaappears in the config, andnorm_deltain the optimizer. - Keypoint correspondence is manual. Each robot needs its own mapping from human keypoint indices to robot links §4.3. The Allegro mapping is in the config allegro_hand_right.yml. The paper gives no default for other hands.
- Fusion confidence norm is unstated. Only the reference (mean over the first N frames) and the direction (larger error means less confidence) are given §4.2.
- N = 50 requires a calibration gesture. The operator must spread the fingers during the first N frames §4.2. The authors ask for it so that the reference shape is accurate §4.2.
- RGB-only wrist position error is not quantified. The paper says it is larger than with depth but "sufficient" §4.1. Budget for this if you run without depth.
- Collision freedom is claimed, not measured. The paper says the arm-hand setting "guarantees no self-collision" §7.1 and CuRobo is collision-free §4.4. It gives no collision-check numbers.
- Demonstration conversion is not described. For the arm-hand setting, the AnyTeleop demonstrations are converted to floating-hand format so both variants can use them §7.1. The conversion method is not stated. The baseline's own floating-to-arm translation pipeline is only referenced §7.1.
- Roles in the collaborative example are inconsistent. The text says operator #2 controls a human hand §7.2. The caption of fig. 5 says operator #2 acts as the Kuka-Shadow robot.
- Small trial counts. Real-robot results use ten runs per task §6.2. Differences such as 0.6 vs 0.7 are one or two runs. The baseline numbers come from another paper, not a re-run tab. 4 caption.
- Imitation-learning variance is large. Several gaps in tab. 3 are smaller than the standard deviations, for example floating Relocate 53.7 ± 12.2 vs the baseline's 49.7 ± 18.3. Three seeds give little statistical power.
- Motion generation needs its own machine. Running all modules on one computer missed 120 Hz §6.1. Plan for a separate control host.
- Appendix numbering. The appendix subsections have no letter in the source,
so they are cited by title. The camera-configuration section is the first
section after
\appendixin the source, and it is also cited by title. - Table and figure numbers are counted from the source. They follow the order of
\inputand float environments in the LaTeX. The paper's compiled numbering, including IEEE Roman numerals for tables, may print differently.
Lineage
- Builds on: DexPilot (Handa et al., ICRA 2020) for the retargeting formulation and the morphology-specific mapping §4.3. The code's docstring links arXiv:1910.03135 optimizer.py. No card exists yet.
- Builds on: CuRobo (Sundaralingam et al., ICRA 2023) for motion generation §4.4. No arXiv id is given in the paper. No card exists yet.
- Builds on: the vision-based hand pose detector MediaPipe §4.1 and the weak perspective approach of FrankMocap §4.1. Neither has a card.
- Compared against: Telekinesis (Sivakumar et al.), arXiv:2202.10448 per the paper's bibliography tab. 4 tab. 1. No card exists yet.
- Compared against: Qin et al., RA-L 2022, "From One Hand to Multiple Hands", for simulated teleoperation and imitation learning §7.1 tab. 3. No card exists yet.
- Imitation learner: DAPG, Rajeswaran et al., RSS 2018 §7.1. No card exists yet.
- Superseded by: not known from the content of this wiki.
Source and license
Adapted from “AnyTeleop: A General Vision-Based Dexterous Robot Arm-Hand Teleoperation System” by Yuzhe Qin, Wei Yang, Binghao Huang, Karl Van Wyk, Hao Su, Xiaolong Wang, Yu-Wei Chao, Dieter Fox (arXiv:2307.04577), used under CC BY 4.0. Changes: condensed and restructured for implementation, with tables, equations and algorithms taken from the paper and its code, each cited to its source. Not affiliated with or endorsed by the authors. Code citations refer to https://github.com/dexsuite/dex-retargeting at commit 3f56141bc8bd (MIT). Any quoted code is shown under that license.