Skip to content
← OpenFigure

Project files

4 KB

Machine-translated by Robotheca from the original in Chinese (opens in a new tab). License: BSD-3-Clause (opens in a new tab).

VR Remote Operation Instructions

Overview

This module provides UDP reception of VR pose data, EMA smoothing, and key-event detection for MuJoCo robot IK control. It supports real-time teleoperation, motion recording, and playback.

Preparation Before Startup

1. Network Connection

Quest and the host computer must be connected to the same local network (same WiFi or wired network).

2. Querying the Host Computer's IP Address

SystemCommand/Method
LinuxRun ifconfig in the terminal and check the inet address of the corresponding network interface
WindowsRun ipconfig in Command Prompt and check the "IPv4 Address"
macOSSystem Settings → Wi-Fi → Details, then check the IP address

3. Running the Host Computer Program

python example/demo_ik_vr.py

After the program starts, it listens on a UDP port, waiting for data sent from the Quest.

Meta Quest 3 VR Quick Start Guide

IP Settings and Connection

  • Double-tap the left joystick: Show/hide the IP settings interface.
  • Use the ray to click the +/− buttons of the IP segment to adjust the value; click “Connect/Connect” to execute the connection and save the IP.

Basic Operations

  • Double-tap the right joystick: Enable/disable tracking control (head/hand follows after enabling; returns to Home position after disabling).
  • Grab/Hold key (handle trigger): Hold to enable the corresponding arm to follow the handle; release to stop control.
  • Trigger (Index Trigger): Gripper opening/closing force (0–100). Pressing increases closure; releasing opens it.

Reset and Calibration

  • Reset: Double-press A (right hand) to reset the current target to its initial posture.
  • Calibration: Long-press the B button on the right hand for about 2 seconds to complete base height/orientation calibration and receive a vibration feedback.

Feature Overview

  • Tracking switch and auto protection: Double-click the right joystick to toggle; if both controllers are removed for longer than the set timeout, the system automatically turns off and returns to Home.
  • Arm enable and speed ramp-up: Hold the Grab button to enable the arm to follow; the follow speed smoothly ramps up from low to the upper limit while held; release to stop.
  • Head follow and return to Home: When tracking is on, the head continuously follows; when off, it smoothly returns to the Home pose.
  • Gripper control: Trigger value is mapped to a 0–100% gripper open/close percentage.
  • IP settings interface: Double-click the left joystick to toggle display; use raycast selection with +/− to modify each segment; “Connect” saves and syncs to the network module.
  • Target reset: Double-tap A (right hand) to reset the target object to its initial position/rotation/scale.
  • Base calibration: Long-press the right-hand B button for about 2 seconds; calibrate the base height and orientation based on the current head/offset configuration, and vibrate to indicate completion.
  • Double-tap button events and vibration: Double-tap events for left-hand X/Y and right-hand A/B are recognized and sent, while triggering a short vibration feedback.
  • Position stability and anti-jump: Before starting control, the system requires a stable position duration and a maximum displacement threshold to avoid jumps after tracking loss.
  • Torque adjustment: Moving the right joystick up/down adjusts the target torque value; the system smoothly approaches the target.
  • Tracking status network sync: Changes to the tracking switch are synced to the network and repeatedly sent across multiple frames to ensure delivery.
  • Controller-in-hand detection: Control is maintained only when the controller is tracked by the system (held in hand), enhancing safety in combination with the timeout protection.

Usage Process (Important)

Complete Operation Steps

1. Double-click left joystick → Open IP settings interface
2. Adjust IP segment with the ray and click Connect → Connect and save IP
3. Double-click right joystick → Enable tracking (head/hand follow)
4. Hold grip button → Enable corresponding arm follow, release to stop
5. Trigger controls gripper → 0–100% open/close
6. Long-press right B for ~2 seconds → Calibrate base height/orientation and provide haptic feedback
7. Double-click A (right) → Reset current target to initial posture
8. Double-click right joystick → Disable tracking and return to Home

Operation Instructions

OperationVR ControllerKeyboardFunction
Set IPDouble-click left stick-Show/hide IP settings interface
Adjust IP segmentRay point +/−-Modify each segment value
ConnectConnect button-Execute connection and save IP
Tracking switchDouble-click right stick-Enable/disable head/hand follow and return to Home
Arm enableHold grip button-Corresponding arm follows, speed gradually increases, release to stop
GripperTrigger-Gripper opening/closing force 0–100
Base calibrationLong-press right B for ~2 seconds-Calibrate base height/orientation and vibrate to indicate
ResetDouble-click A (right)BackspaceReset target position/rotation/scale

Files by @rexchen80, at commit 0e8671c, read from GitHub in your browser. Hardware license: BSD-3-Clause; software license: BSD-3-Clause. Robotheca doesn't review code: read it before running it.