Skip to main content
LeRobot supports using smartphones as 6-DOF (position + orientation) teleoperation devices for controlling robots. This is powered by ARKit on iOS and WebXR on Android, providing precise pose tracking without external sensors.

Overview

Phone teleoperation leverages the built-in sensors and camera systems in modern smartphones to track 6-DOF pose (3D position + 3D orientation). This provides an affordable and accessible way to teleoperate robots without investing in expensive VR controllers or motion capture systems. Supported Platforms:
  • iOS: Uses ARKit via the HEBI Mobile I/O app
  • Android: Uses WebXR via the teleop Python package

Setup

iOS Setup (HEBI Mobile I/O)

  1. Install the HEBI Mobile I/O app from the App Store
  2. Install Python dependencies:
  3. Configure your phone in the app:
    • Open HEBI Mobile I/O
    • Set Family to “HEBI” and Name to “mobileIO”
    • Ensure your phone and computer are on the same network

Android Setup (WebXR)

  1. Install Python dependencies:
  2. Start the WebXR server (this will be handled automatically by LeRobot)
  3. Open the WebXR page on your Android phone’s browser

Configuration

Create a phone teleoperation configuration:

Camera Offset

The camera_offset parameter compensates for the physical offset between the phone’s camera (which tracks pose) and the center of the phone. For example, iPhone 14 Pro has the camera offset by 2cm horizontally and 4cm vertically from the center.

Usage

Basic Usage

Calibration

Calibration captures a reference pose that zeros out the phone’s position and orientation: iOS Calibration:
  1. Hold the phone so the top edge points forward (same direction as robot +x)
  2. Screen points up (robot +z)
  3. Press and hold B1 in the HEBI Mobile I/O app to capture the pose
Android Calibration:
  1. Hold the phone in the same orientation as above
  2. Touch and move on the WebXR page to capture the pose

Enabling Teleoperation

  • iOS: Press and hold B1 button in the HEBI Mobile I/O app
  • Android: Touch and move on the WebXR page
When enabled, the first press captures a new reference position (allowing you to recenter without full recalibration).

Action Features

The phone teleoperator provides the following action features (from /home/daytona/workspace/source/src/lerobot/teleoperators/phone/teleop_phone.py:50):

Raw Inputs

iOS (HEBI Mobile I/O):
  • a1-a8: Analog inputs (floats, 0.0 to 1.0)
  • b1-b8: Digital/button inputs (integers, 0 or 1)
Android (WebXR):
  • move: Boolean indicating touch/move gesture
  • scale: Float for pinch-to-zoom scale
  • reservedButtonA: Boolean
  • reservedButtonB: Boolean

Advanced Usage

Converting Rotation to Other Formats

Using Analog Inputs (iOS Only)

Integration with Robot Control

Here’s an example of using phone teleoperation to control a robot arm:

Technical Details

Pose Tracking

  • iOS ARKit: Provides high-quality 6-DOF tracking using visual-inertial odometry
  • Android WebXR: Uses the device’s motion sensors and camera for pose estimation

Communication

  • iOS: UDP communication via HEBI protocol over local network
  • Android: WebSocket communication via the teleop Python package

Reference Frame

The phone’s reference frame is defined during calibration:
  • +X: Forward (top edge of phone)
  • +Y: Left
  • +Z: Up (screen facing up)
The calibration rotation transforms the phone’s tracked pose into this robot-centric frame.

Troubleshooting

iOS Issues

“Mobile I/O not found” error:
  • Check that Family = “HEBI” and Name = “mobileIO” in the app
  • Ensure phone and computer are on the same Wi-Fi network
  • Try restarting the app
Tracking is unstable:
  • Ensure good lighting conditions
  • Avoid reflective or featureless surfaces
  • Keep phone camera unobstructed

Android Issues

No response during calibration:
  • Ensure WebXR is supported in your browser (try Chrome)
  • Check that the teleop server is running
  • Verify phone and computer are on the same network
Pose jumps or drifts:
  • Recalibrate by pressing the enable button again
  • Ensure stable lighting conditions

References