Skip to content

Quickstart

From power-on to your first recorded episode. Before you start, make sure the following five items are complete:

1. Power on and connect

  1. Plug in the gripper USB.
  2. Connect the headset to the collection PC by cable and turn off the collection PC's Wi-Fi.
  3. Turn on the headset and short-press the tracker power button until the LED is solid blue.
  4. Start the XenseVR PC Service: /opt/apps/roboticsservice/runService.sh
  5. Facing the same direction as the robot, open XTac UMI XR, choose "USB Network" as the connection and tap "Connect"; Status changes to "Connected".

Gripper connected to the collection PC over USB

The gripper connects to the collection PC over USB Type-C

XTac UMI XR console: USB Network selected, Connected

XTac UMI XR Status changes to "Connected"

Three common mistakes

  • Start the PC Service before opening the XR app, or it cannot connect.
  • With a wired headset the collection PC's Wi-Fi must be off, or tracking is unstable. See Network connection.
  • Do not restart the XR app during collection: it resets the world origin, so poses within one dataset stop lining up.

Power off in reverse: stop recording and let the current episode save, quit the XR app, stop the PC Service, then unplug, in the order given in Power and connection requirements.

2. Self-check

python -c "from xense.taccap import scan_grippers
for g in scan_grippers(): print(g.side.name, g.role.name, repr(g.firmware_sn))"

One line per gripper, role is Leader or Follower, and the serial is not empty. If not, see Troubleshooting.

3. Preview check

lerobot-teleoperate \
    --robot.type=bi_taccap_gripper \
    --robot.id=0 \
    --fps=30 \
    --display_data=true

Rerun live preview: four visuotactile streams, both wrist cameras, state and action curves

lerobot-teleoperate \
    --robot.type=xtac_umi_g1 \
    --robot.id=0 \
    --fps=30 \
    --display_data=true

Rerun live preview: four visuotactile streams, headset stereo, both wrist cameras and action curves

Move and open/close the grippers, check that every image, tactile stream and pose updates, then press Ctrl+C.

The tiers are chosen with --robot.type; record with the same tier you previewed:

Tier How Data included
① Grippers only --robot.type=bi_taccap_gripper
--robot.enable_tracker=false
Tactile, wrist cameras, gripper opening; no PC Service needed
② With wrist pose --robot.type=bi_taccap_gripper Adds the gripper pose tcp.*
③ Full setup --robot.type=xtac_umi_g1 Adds headset stereo images and head pose

Keep the trackers in the headset's view before starting; tracking is lost if they are occluded.

4. Full recording

lerobot-record \
    --robot.type=bi_taccap_gripper \
    --robot.id=0 \
    --dataset.repo_id=<your_org>/<dataset_name> \
    --dataset.single_task='Pick up the object' \
    --dataset.num_episodes=1 \
    --dataset.fps=30 \
    --dataset.episode_time_s=120 \
    --dataset.reset_time_s=60 \
    --dataset.push_to_hub=false

Each frame records 6 image streams (four visuotactile, both wrist cameras), plus gripper opening and gripper pose.

lerobot-record \
    --robot.type=xtac_umi_g1 \
    --robot.id=0 \
    --dataset.repo_id=<your_org>/<dataset_name> \
    --dataset.single_task='Pick up the object' \
    --dataset.num_episodes=1 \
    --dataset.fps=30 \
    --dataset.episode_time_s=120 \
    --dataset.reset_time_s=60 \
    --dataset.push_to_hub=false

Each frame records 8 image streams, adding the headset stereo pair, plus the head pose:

The eight streams and their dataset keys
The eight streams and their keys in the dataset

  • --robot.id is required: the station number as a plain number (0, 1, …), one per setup.
  • Keep --robot.type (and whether you add --robot.enable_tracker=false) the same as in the preview; for grippers only, add that switch to the ② command.
  • Single gripper: --robot.type=taccap_gripper; with both grippers plugged in, add --robot.side=left or right.

All parameters: Data collection · Parameters.

5. Check and upload

Check the dataset:

lerobot-check-dataset --repo-id <your_org>/<dataset_name>

Upload to the Hugging Face Hub when needed:

lerobot-push-dataset-to-hub \
    --repo-id <your_org>/<dataset_name> \
    --dataset-path ~/.cache/huggingface/lerobot/<your_org>/<dataset_name> \
    --upload-large-folder

Dataset layout and fields: Dataset.