Overview
Teleoperation lets an operator see and control a robot from another location. Use LiveKit server and client SDKs to build low-latency teleoperation apps using video tracks and data tracks.
A typical teleoperation app built with LiveKit has two participants:
- Robot: Captures video from its cameras, publishes video, receives commands, and applies them to the local control system.
- Operator: Renders the robot's video, reads input from a gamepad or control interface, and publishes commands.
Loading diagram…
LiveKit transports video and data between the participants. Your app remains responsible for camera capture, the command format, actuator integration, and safety behavior.
Build your teleoperation app
The following guides walk you through building example teleoperation apps for robot and operator participants with LiveKit.
Build the operator participant
Define a control schema, render the robot's tracks, capture operator input, and publish commands.
Build the robot participant
Publish camera and sensor tracks, receive control data, and connect LiveKit to the local control system.
Next steps
Use the end-to-end teleoperation demos to explore the complete media and control path. For smaller, reusable components, see the C++ example collection for native apps.
Rover teleop
Run an end-to-end Raspberry Pi rover with a published camera feed and a Flutter gamepad controller.
Pan-tilt teleop
Use the LiveKit C++ SDK to publish RealSense video, send motor commands over a control data track, and acquire exclusive control with RPC.
C++ video example
See how a native app captures, publishes, subscribes to, and renders video tracks.
C++ data track example
See two native participants publish and subscribe to named data tracks.