Skip to content

R1 Lite VR Teleoperation Usage Tutorial ROS2

1. Pre-startup Preparation

1.1 Hardware Preparation

Item Quantity Notes
Meta Quest 3 VR Device 1 Includes 1 headset, 2 hand controllers, and a Type-C cable.
R1 Lite Base 1 Robot body
R1 Lite Remote Controller 1 Controls the R1 Lite robot
R1 Lite Host Computer (Dual System, Non-virtual Machine) 1 System: Ubuntu 22.04
Local Area Network 1 Used to connect VR device and R1 Lite Base

1.2 Software Preparation

Check R1 Lite Software Version Update Log to get the latest SDK version. The complete machine ATC SDK version contains all product software resources.

Also, download the VR device configuration SDK:

  • Baidu Cloud: https://pan.baidu.com/s/1SCpvwFIjvAV7EtchW-cssA?pwd=vrvr

  • Meta Related Installation Package.zip: Used for new device activation.

  • platform-tools-latest-windows.zip: ADB file, used to install the data collection APP inside the VR headset.
  • vr_teleop-0.1.7-20250818.apk: Data collection APP for the VR headset.

2. VR Device Configuration

If your VR device is provided by Galaxea, you can skip Sections 2.1 to 2.5 and go directly to Section 2.6.

2.1 VR Device Developer Mode Activation

Please refer to Meta Quest 3 Developer Mode Instructions to complete activation.

2.2 VR Device SDK Installation (Requires Windows System Computer)

  1. Extract ADB file: Download and extract the platform-tools-latest-windows.zip file.
  2. Connect VR device: Connect the VR device to the computer using a Type-C data cable.
  3. If you have installed an older version of the apk, please uninstall it first. VR_2.2_3_uninstall_old_apk_cn
  4. Authorize USB connection: On the VR device, confirm and allow USB device connection (as shown in the figure). VR_2.2_4_USB_connection_cn
  5. Enter ADB extraction path: Open File Explorer and enter the extracted ADB tools folder path.
  6. Copy APK file: Copy the vr_teleop-0.1.7-20250818.apk file to this path.
  7. Install APK: Open Command Prompt (CMD) in this path and execute the following command to install the application:
    .\adb.exe install vr_teleop-0.1.7-20250818.apk
    
    If the command execution shows Success, the installation is successful. VR_2.2_7_install_apk_cn

2.3 VR Device Configuration

On the Meta Quest 3 initial interface, connect to the same WiFi network as the R1 Lite.

Note: It is normal to see a restricted network prompt because this network cannot access the Internet.

VR_2.3_wifi_cn

2.4 Disable Quest Boundary System

  1. Open Settings > Advanced > Developer.
  2. Turn off Real Space feature. VR_2.5_shut_quest_cn

Note: - After turning off, the system will no longer prompt to set boundaries. During data collection, even if you move or leave the spot, the process will not be interrupted. - The passthrough view will not be available on the main menu page. - After disabling boundaries, please ensure the operating environment is safe to avoid collision risks.

2.5 Prevent System Sleep

  1. Open Menu → Settings
  2. Click General > Power > Display Off
  3. Set screen timeout to 4 hours VR_2.6_turn_off_sleep_cn.png

Note: Disabling system sleep is to achieve the "removable wearing" solution. After use, please manually click to turn off the Meta Quest 3S power to avoid battery drain.

Note: Please try to maintain sufficient battery levels for both the VR headset device and controllers, as low battery will affect the frame rate of VR controller pose transmission, causing teleoperation lag.

2.6 Get VR Device IP Address

In the VR device, click on the connected WiFi, open the network page, scroll down to find and record the IP address, such as 192.168.5.24. Hereafter referred to as ${VR_IP}.

2.7 Data Collection Wearing Method

To avoid discomfort from prolonged headset wear, we provide a "removable wearing" solution.

Before use, please complete the "prevent system sleep" and "disable boundary system" settings (the latest retail machines are pre-configured; if not configured, please refer to the above instructions).

  1. Remove the connection between the top strap and the top of the headset, and remove the facial interface connector to facilitate hanging around the neck for flexible adjustment.
  2. Hang the headset around your neck and adjust it to face forward, with the display surface perpendicular to the ground (as shown in the figure). VR_2.7_wear_cn

This mounting method ensures that the controllers remain within the camera's viewing range of the headset (approximately 100° horizontal field of view), avoiding going out of tracking range during operation. This wearing method not only ensures stable controller tracking but also makes long-term data collection operations more comfortable and easy.

⚠️ Note: Please use in a safe, open environment to ensure no collisions occur during operation.

3. R1 Lite Configuration

If you don't need to upgrade the robot's software version, please skip this chapter.

  1. Download and copy the SDK file (e.g.: {r1lite_vr_teleop_sdk_name}.tar.gz), execute the following command to copy the SDK to R1 Lite.

    scp {r1lite_vr_teleop_sdk_name}.tar.gz r1lite@${R1_Lite_IP}:/home/r1lite/Downloads
    

  2. Login to R1 Lite

    ssh r1lite@${R1_Lite_IP}
    

  3. Extract SDK to R1 Lite

    mkdir /home/r1lite/galaxea
    tar -zxvf /home/r1lite/Downloads/{r1lite_vr_teleop_sdk_name}.tar.gz -C /home/r1lite/galaxea
    

  4. Install additional dependencies

    sudo apt install ros-humble-rosbag2-storage-mcap
    pip3 install websockets pyquaternion tos 
    

  5. Configure device serial number and device name

    # Get r1lite serial number (check shipping list, contact Galaxea customer service if not found)
    # Example: S2RL100P25110
    sudo mkdir -p /opt/galaxea
    sudo chown -R r1lite:r1lite /opt/galaxea
    mkdir -p /opt/galaxea/body
    echo "S2RL100P25110" | tee /opt/galaxea/body/RSN > /dev/null
    echo "S2RL100P25110" | tee /opt/galaxea/body/RSN_REAL > /dev/null
    echo "R1LITE" | tee /opt/galaxea/body/ROBOT_NAME > /dev/null
    # Verify successful write
    cat /opt/galaxea/body/RSN
    cat /opt/galaxea/body/RSN_REAL
    cat /opt/galaxea/body/ROBOT_NAME
    

  6. Configure data collection module

Data recording and visualization platform EDP platform free trial - please check the First Data - EDP Getting Started Manual after completion.

After the upgrade is complete, power off the R1 Lite and restart it. After restarting, the software package configuration is complete, and the VR teleoperation function can be used.

After the upgrade is complete, power off the robot and restart it. After restarting, the software package configuration is complete, and the VR teleoperation function can be used.

4. Teleoperation Startup

Note: All operations in this chapter must be completed and confirmed every time you start.

4.1 R1 Lite Body Program Startup

  1. Login to R1 Lite

    ssh r1lite@${R1_Lite_IP}
    

  2. Enter software package startup directory

    cd /home/r1lite/galaxea/install/startup_config/share/startup_config/script/
    

  3. Start program

    ./robot_startup.sh boot ../sessions.d/ATCStandard/R1LITEVRTeleop.d/
    

4.2 VR Device Program Startup

Note: Please wear the VR device and hold both controllers before starting the following operations.

4.2.1. Connect WiFi

Confirm that the VR device has successfully connected to the same WiFi network as the R1 Lite body.

4.2.2. Start GalaxeaVR APP

VR_5.2.2_IP_cn

  1. Open GalaxeaVR Application:

    Click the cube icon in the lower right corner to launch the GalaxeaVR application.

  2. Enter R1 Lite IP Address:

    After entering the GalaxeaVR application, point the ray emitted by the VR controller at the green IP input box.

    Wait for the green input box to slightly change color, then click the input box with the T key (index finger key) of the right controller (the cursor position needs to be slightly lower).

    After the keyboard pops up, enter the robot-side IP address (i.e., the R1 Lite IP address).

    After setting the IP: Click the Start button to begin (or long press the right controller B key). If you have enabled the volume on the VR headset device, you can hear the connecting prompt tone and the connection successful prompt tone. If you don't hear the connection successful prompt tone, please check if the previous steps were performed incorrectly.

  3. Control VR Device:

    At this point, the default operation mode of VR is reset mode. Please refer to Section 5.3 to switch to bimanual control mode, then short press the G keys on both controllers to unpause bimanual teleoperation.

    Note: The robot will synchronize your operations at this point, please be careful. Start with small movements to ensure there are no obstacles around.

Use the following steps to complete simple controller operations:

  • Stop Operation: Long press the right controller B key for more than 2 seconds to stop VR teleoperation. (Note: After stopping, to re-enter teleoperation, you need to exit the GalaxeaVR application and re-enter.)
  • Control Gripper: Hand movement controls robot arm movement. The T key on the left controller and the T key on the right controller control the closing of the left and right grippers respectively.
  • Pause Right Arm: Short press the right controller G key once, the right arm will stop at the current position; press the G key again to unpause.
  • Pause Left Arm: Short press the left controller G key once, the left arm will stop at the current position; press the G key again to unpause.

For detailed operation instructions, please refer to Section 6: Teleoperation Control Instructions.

5. Teleoperation Control Instructions

Please practice using this product in an open area while ensuring personnel and item safety.

It is recommended to become familiar with this product before starting formal data collection.

5.1 Controller Usage Instructions

5.1.1 R1 Lite Aviation Remote Controller

Remote controller usage instructions are as follows:

VR_5.1.1_controller_cn

Note: Before performing any operation, please confirm that all toggle switches (SWA/SWB/SWC/SWD) are toggled to the uppermost position, so that the R1 Lite is in a stopped state to prevent accidental operation.

The operation instructions for switching each toggle switch to different positions under different functions are as follows: r1pro_remote_controller_guide2_cn

  • Host computer controls chassis (down-down-up-up): In this mode, the host computer must first start the chassis motion control program before control can be initiated
  • Remote controller controls chassis (down-down-middle-up): After the robot is powered on, this mode can be used directly with the remote controller to control chassis movement, no host computer operation required
  • Enable emergency stop function (D down): In any mode, SWD can be toggled down to enable emergency stop; but after enabling emergency stop, the robot must be restarted.

5.1.2 VR Handheld Controllers

VR_5.1.2_vr_controller_cn

5.2 VR Device APP Display Buttons

VR_5.2_vrapp_button_cn

5.3 Mode Switching

After teleoperation startup, the default mode is reset mode. Users can switch between different operation modes using the VR device controllers.

Note: If you find that the teleoperation posture of the robotic arms is slightly abnormal after using the controller G key multiple times for pausing and unpausing, don't worry. This is caused by the incremental control mechanism of teleoperation. You can reset the robotic arms through the reset mode to better control the robot.

Mode Switching Method Notes
Reset Mode
(Reset)
Long press left joystick down for 1 second Default mode
Bimanual Control Mode
(BIMANUAL)
Long press both joysticks down simultaneously for 1 second To control the chassis, you need to turn on the R1 Lite remote controller and toggle SWA, SWB, SWC, SWD all upward.
Torso Mode
(Torso)
Long press right joystick down for 1 second

5.3.1 Reset Mode

Function Description Notes
Reset Both Arms to Initial Position VR left controller T + G keys
VR right controller T + G keys
Press all four buttons together to reset the robot's arm positions to the initial startup position
-

5.3.2 Bimanual Control Mode

Function Description Notes
Hand Following The R1 Lite manipulator end positions will follow the movement of the VR handheld controllers. -
Gripper Control T key on VR right controller controls right gripper opening/closing
T key on VR left controller controls left gripper opening/closing
-
Arm Pause G key on VR right controller controls right arm pause
G key on VR left controller controls left arm pause
Press once to pause, press again to unpause
-
Chassis Forward/Backward VR left controller joystick forward/backward -
Chassis Translation VR left controller joystick left/right -
Chassis Rotation VR right controller joystick left/right -

5.3.3 Torso Mode

Function Description Notes
Waist Pitch Forward/Backward (Joint 2) VR left controller joystick forward/backward
Torso Vertical Movement (Joint 3) VR right controller joystick forward/backward
Torso Pitch Forward/Backward (Joint 4) VR right controller T/G keys
# Modify the following to change the gripper range, please modify the joint position in the launch file
vim /home/r1lite/galaxea/install/teleoperation_ros2/share/teleoperation_ros2/launch/vr_teleoperation.launch.py
'gripper_openning_threshold', default value='80.0' #Maximum value: 100.0
'gripper_closing_threshold', default value='0.0'  #Minimum value: 0.0

6. Data Collection Process

Data recording and visualization platform EDP platform free trial - please check the First Data - EDP Getting Started Manual after completion.

6.1 Data Format Introduction

The data collection file format is mcap, with file extension *.mcap.

6.2 Data Acquisition

Default storage path: /home/r1lite/GalaxeaDataset/{data}/

date is the current date, formatted as: 20250307

6.3 Data Recording Configuration File Introduction

The default data recording configuration file is located at:

/opt/galaxea/data_collection/data_task_config.json

Configuration File Description: The configuration file is used to describe information about this collection task, and users can modify it according to their needs.

{
    "project_info": {
        "project_name": "sop_test"
    },
    "task_info": {
        "task_name": "sop_test_data_collection",
        "task_owner": "hengyi.fei"  
    },
    "operation_info": {
        "teleoperation_type": "VR",
        "location": "suzhou",
        "operator_name": "jiahao.wu"
    }
}

6.4 Data Storage File Introduction

Data is saved in folder + json format, with files corresponding one-to-one. For example:

 # For example, the following folder and json file represent a data packet
 # The folder contains .mcap data files and meta information
 S2R12000P18245_20240213173320125_RAW
 S2R12000P18245_20240213173320125_RAW.json
 # Format is robot_serial_number+timestamp+RAW
 # robot_serial_number: Robot serial number, located at /opt/galaxea/body/RSN
 # timestamp: Data collection timestamp accurate to milliseconds.
 # RAW: Represents raw data stored from data collection

6.5 Start Recording

Perform data recording operations using the VR left controller:

Function Operation Description
Start Recording Click left controller X key once Start data recording
Stop Recording Click left controller Y key once Stop data recording
Delete Current Recording Click left controller X key once If a recording is already in progress, clicking the X key again will end and delete the current recording without saving to disk.

6.6 Recording Prompt Tones

You can enable the function of playing data recording start and end status prompt tones on the VR headset device by configuring ${VR_IP} in the ~/.bashrc file.

# Open ~/.bashrc
vim ~/.bashrc
# Add the following content to ~/.bashrc, replacing ${VR_IP} with your VR device's address on the LAN (Section 2.6)
export VR_IP=${VR_IP}
# Restart the program
tmux kill-server

If you have any problems during installation and startup, please contact us at support@galaxea-dynamics.com or call 4008-780-980 for technical support!