Skip to content

R1 Lite Teleop Tutorial

In this tutorial, we provide detailed instructions to guide you step by step through unboxing, self-check, and connection. The guide will help you quickly get familiar with your new device and ensure everything is ready. Please follow the steps to successfully start your robot!

1. Unboxing

1.1 Preparation Before Unboxing

Item Quantity Remarks
Laptop (X86 & Ubuntu 22.04 ROS Humble) 1/unit Do not use R1 Lite Teleop inside a virtual machine, as it may fail to connect to the Bluetooth controller.
LAN/Ethernet Cable 1 Used for communication between R1 Lite and R1 Lite Teleop.
For a more stable connection, it is recommended to prepare an Ethernet cable.

1.2 Checklist of Items

Upon receiving the product, please check whether all items listed below are included in the package.

Item Quantity
R1 Lite Teleop 1/set
JoyCon Controller 1/pair
G-Clamp Holder 1/pair
Power Adapter and Cables 1/set
Type-C Controller Charging Cable 1/unit
Micro USB Data Cable 1/unit

2. Connecting R1 Lite Teleop

  1. Secure the device: Use the G-clamp to fix the device on the table. It is recommended to keep the distance between the left and right devices within 30 cm.
  2. Properly position the device: Place all linkages of the device correctly and secure them in the positioning slots.
  3. Connect the device to the host PC: Use a Micro USB cable to connect the device to the host PC.
  4. Connect the power supply: Plug one end of the power adapter into the device's DC port and the other end into the power outlet.

R1_Lite_Teleop_connection

Note:
Before each startup of R1 Lite Teleop, make sure to set the device to its initial pose to avoid potential safety risks.**

3. Software Preparation

Note:
1. It is not recommended to use the host PC as the upper computer, as Bluetooth connections may be unstable.
2. It is recommended to use a laptop running Ubuntu 22.04 with ROS Humble as the upper computer for R1 Lite Teleop.

3.1 Download and Extract the SDK

Visit Galaxea R1 Lite Software Version Changelog to check and download the latest SDK package and updates.

3.2 Install Software Dependencies

  1. Configure the required environment dependencies on the R1 Lite Teleop upper computer.
sudo apt install tmux tmuxp -y
sudo apt install python3-pip
sudo apt install ros-humble-dynamixel-sdk
pip install evdev
pip install pyserial
  1. Add the upper computer user to the dialout group. Replace username in the following command with the username of your upper computer.
    Note: This command grants the upper computer permission to access /dev/ttyUSB. You only need to run it once; it will persist after shutdown and restart.
sudo usermod -aG dialout <username>
  1. USB port remapping
    echo 'SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6014", SYMLINK+="r1litet_usb"' | sudo tee /etc/udev/rules.d/litet.rules > /dev/null
    sudo udevadm control --reload-rules
    sudo udevadm trigger
    

4. Data Acquisition Process

Please follow the steps below to understand and configure data acquisition.

4.1 Data Format Introduction

The data acquisition file format is ros2 bag, with the file extension *.mcap.

4.2 Data Retrieval

The default storage path is: /home/r1lite/GalaxeaDataset/{date}/
date refers to the current date, formatted as: 20250307

4.3 Configuration File Introduction

4.3.1 Default Storage Path of Configuration Files

The default configuration files used for data recording are located at:

/opt/galaxea/data_collection/data_task_config.json

4.3.2 Configuration File Description

The configuration file is used to describe the information of the current data acquisition task. You can modify it according to your needs.

{
   "project_info": {
        "project_name": "test"},
   "task_info": {
        "task_name": "test_data_collection",
        "task_owner": "galaxea" }
    "operation_info": {
        "teleoperation_type": "teleop",
        "location": "suzhou",
        "operator_name": "galaxea"}
}

4.4 Data Storage Files

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

 # The following two files represent one data package
 S2R12000P18245_20240213173320125_RAW.mcap
 S2R12000P18245_20240213173320125_RAW.json
 # Format: robot_serial_number + timestamp + RAW
 # robot_serial_number: the robot's serial number, located at /opt/galaxea/body/RSN
 # timestamp: the data acquisition timestamp, accurate to milliseconds
 # RAW: represents the raw data recorded from data acquisition
Example storage location: R1_Lite_data_collection

5. Teleoperation Procedure

Please follow the steps below to configure and start a teleoperation task.

5.1 Multi-Robot Communication Setup

5.1.1 Network Configuration

We provide wired and wireless connection options. We recommend using a wired connection to improve multi-robot communication stability.

The setup methods for the two connection types are as follows: 1. Wired Connection:
- Connect the R1 Lite NUC to the R1 Lite Teleop host, and set the wired network on the Teleop host to "Share with other computers";
- Connect the R1 Lite NUC to the R1 Lite Teleop host, and set the wired network on the Teleop host to "Share with other computers";

Note: The wired IP of the R1 Lite NUC is usually 10.42.0.xxx; the wired IP of the R1 Lite Teleop host is usually 10.42.0.1 2. Wireless Connection:
- Connect the R1 Lite NUC and the R1 Lite Teleop host to the same LAN, and check the wireless IPs of both devices using the ifconfig command.

5.2 Modifying Files

  1. Modify the NUC's ~/.bashrc file on R1 Lite:
    #R1Lite NUC ROS IP设置
    export ROS_DOMAIN_ID={0-101} #The value should be between 0 and 101; it is recommended to set it as the last two digits of the R1Lite IP address.
    export ROS_IP={R1_Lite_IP}
    export ROS_LOCALHOST_ONLY=0
    
  2. Modify the ~/.bashrc file on the R1 Lite Teleop host computer:
    #R1Lite Teleoperation: Host PC ROS IP settings
    export ROS_DOMAIN_ID={0-101} #Ensure that this value matches the ROS_DOMAIN_ID setting in R1Lite.
    export ROS_IP={R1_Lite-T_IP}
    export ROS_LOCALHOST_ONLY=0
    
    After modifying the two files above, restart both systems to ensure the changes take effect.
  3. Example The R1 Lite and R1 Lite Teleop host computers are on the same network (10.200.3.0). Modify the ~/.bashrc file on both the R1 Lite and R1 Lite Teleop host computers. R1_Lite_bashrc_cn

5.2 Starting Remote Control

5.2.1 Starting R1 Lite

Use the following command to start all R1 Lite nodes:

# After navigating to the directory containing the script, execute the script.
cd ~{your_download_path}/install/startup_config/share/startup_config/script/
./robot_startup.sh boot ../sessions.d/ATCStandard/R1LITEBody.d/

5.2.2 Start R1 Lite Teleop

Note: Please make sure that the linkages of R1 Lite Teleop are set to the zero position.
1. Connect the Bluetooth controllers.
a. Long press the power button on the inner side of the Bluetooth controller. Once powered on successfully, you will see a blue running light.
b. Open the Bluetooth settings on the host computer, search for the JoyCon(L) and JoyCon(R) devices, and connect them.
c. After successful connection, Bluetooth will indicate "Two Bluetooth devices connected", and the blue running light inside the controller will stop, changing to a steady blue light.
d. If the steady blue light represents the remaining battery level, it means the Bluetooth controllers are successfully connected.
R1_Lite_Teleop_bluetooth_controllers_cn

  1. One-Click Startup.
    a. Use the following command to start all nodes of R1 Lite Teleop:

    # After navigating to the directory containing the script, execute the script.
    cd ${R1Lite-T_SDK_path}/install/startup_config/share/startup_config/script/
    ./robot_startup.sh boot ../sessions.d/ATCHostStandard/R1LITET.d/
    
    b. After startup, you can enter tmux a in the terminal to access the tmux session.
    c. Press Ctrl+B first and release, then press W to view all sessions in the tmux backend.
    d. At this point, you can switch between sessions using the keyboard's up and down arrows.
    e. Press Enter to enter a session and check for any error messages.
    f. After completing the above steps, if no errors are found, you can start full-body teleoperation of R1 Lite.

5.2.3 Controller Button Description

R1_Lite_Teleop_bluetooth_controllers_configuration_cn

Joystick/Button Left Controller Right Controller
Joystick X Positive Chassis moves forward (Vx positive) Torso moves up (Vz positive)
Joystick X Negative Chassis moves backward (Vx negative) Torso moves down (Vz negative)
Joystick Y Positive Chassis moves left (Vy positive) Chassis rotates counterclockwise (Vw positive)
Joystick Y Negative Chassis moves right (Vy negative) Chassis rotates clockwise (Vw negative)
Button ↑ Torso Pitch angle positive rotation -
Button ↓ Torso Pitch angle negative rotation -
Button A - Torso moves forward (Vx positive)
Button B - Torso moves backward (Vx negative)
Button X - Start recording: press once to begin recording
Delete data: press again after 5 seconds to delete data
Button Y - Stop recording data
Button ZL Left gripper close -
Button L Left gripper open -
Button ZR Right gripper close -
Button R Right gripper open -

The raw messages from the Bluetooth controller are published to rostopic. The source code path is {R1Lite-T_SDK_path}/install/joycon_evdev_publisher/lib/python3.10/site-packages/joycon_evdev_publisher/joy_evdev_exe_node.py.
You can adjust the order of msg elements to remap the controller buttons, as shown in the figure below. R1_Lite_Teleop_ros2_remap_bluetooth_controller_buttons_cn

5.3 Gripper Control Mode Switching

You can switch the gripper control mode by modifying the launch file. After modification, restart the program to apply the changes.

5.3.1 Toggle Control Mode

  1. Run the following command to open the corresponding launch file:
    cd ${R1Lite-T_SDK_path}/install/mobiman/share/mobiman/launch/simpleExample/
    vim tabletop_gello_tele_a1x_launch.py
    
  2. Change gripper_mode to mode1. In this mode, the gripper control logic is toggle control mode. R1_Lite_Teleop_gripper_mode1_cn

5.3.2 Incremental Control Mode

  1. Run the following command to open the corresponding launch file:
    cd ${R1Lite-T_SDK_path}/install/mobiman/share/mobiman/launch/simpleExample/
    vim tabletop_gello_tele_a1x_launch.py
    
  2. Change the gripper_mode to mode2; in this mode, the gripper control logic uses an incremental control method. R1_Lite_Teleop_ros2_gripper_mode1_cn

5.4 Chassis Linear Speed ​​Settings

When using homogeneous teleoperation, the default linear speed of the chassis (in the Vx and Vy directions) is 0.2 m/s, and the default angular speed (Vw) is 0.6 rad/s. The chassis linear speed can be adjusted as follows.
Note: To prevent collisions due to excessive speed, please adjust the chassis linear speed carefully according to your needs.

5.4.1 Setting Parameters in the Launch File

  1. Enter the following command to open the corresponding launch file.
    cd ${R1Lite-T_SDK_path}/install/mobiman/share/mobiman/launch/simpleExample/
    vim tabletop_gello_tele_a1x_launch.py
    
  2. Modify the default_chassis_value parameter. This parameter sets the default linear speed of the chassis when the program starts. R1_Lite_Teleop_ros2_chassis_value_cn