~/projects/quest2skill

Quest2Skill

Cross-embodiment retargeting and synthetic data generation.

Capture human manipulation trajectories, retarget the end-effector motion to different robot arms, and generate synthetic demonstrations in simulation.

  • xr-teleop
  • robot-retargeting
  • dataset-gen
  • isaac-sim
Isaac Sim digital twin with a Franka arm, a red cube and a mug on a tiled floor

README.md

What it is, why it’s hard, and how it’s wired.

## overview

Quest2Skill is a cross-embodiment teleoperation and data-generation pipeline. It captures human manipulation trajectories using a Meta Quest headset and controllers.

The recorded motion is retargeted to simulated robot manipulators, and the system generates synchronized demonstrations for robot-learning workflows.

## problem

  • Human demonstrations are difficult to transfer directly across different robot embodiments.
  • Controller motion must be converted into valid robot end-effector and joint trajectories.
  • Gripper commands, robot states, and camera observations must remain synchronized.
  • Collecting large robotic datasets in the real world is expensive and time-consuming.

## implementation notes

  • Quest headset, controller, and trigger data streamed over TCP.
  • TCP packets converted into ROS 2 topics.
  • Controller pose retargeted into robot end-effector targets.
  • Lula IK and RMPflow generate Franka joint commands.
  • Trigger input mapped to the gripper state.
  • Multi-view observations, joint states, actions, and gripper signals recorded as synchronized demonstrations.

## stack & source

NVIDIA Isaac SimMeta Quest 3ROS 2Lula IKRMPflowFranka Panda
nishanthrajkumarr/QuestTcpOnly nishanthrajkumarr/quest2skill

From headset to dataset

A custom toolkit that can be added to any environment to manipulate objects, with Isaac Sim as the digital twin.

Operator wearing a Meta Quest headset holding both controllers
tcp stream: headset + controller pose, trigger
digital twin: isaac sim
Isaac Sim scene with the Franka arm and objects
log end-effector trajectory at every timestep of an episode
Lula IK + RMPflow

↓ retargeted human end-effector positions over time → robot joint states via the IK solver

recorded episode · front, wrist and top cameras with the Franka Panda joint actions and states, retargeted using Lula IK and RMPflow motion generation
Step plot of the gripper signal switching from 0 to 1
gripper · signal retargeted from the Quest controller trigger

Implementation architecture

Five stages, each with a single job, joined by timestamped messages.

01 · client

Quest App

Headset pose, controller pose, trigger input

tcp stream
02 · bridge

ROS 2 Bridge

Packet parsing; synchronized, timestamped topics and services exposed through ROS

pose targets
03 · sim

Isaac Sim

Controller proxy, frame transforms and scene interaction

ik + motion gen
04 · robot

Franka Panda

Lula IK → RMPflow → joint commands

synced packets
05 · output

Dataset Recorder

Synchronized camera views, joint states, actions and gripper states