An example demonstrating real-time robot teleoperation over LiveKit. A camera-equipped pan/tilt robot publishes video, depth, gyroscope, and servo state as LiveKit tracks. Multiple users can access the web UI to view the live feeds, and a single operator can acquire control.
Edge / Robot (C++) — pan_tilt_demo/
A C++ application built with the LiveKit C++ SDK that runs on the robot (e.g. Jetson) and bridges the hardware to a LiveKit room.
-
PanTiltRobot — drives Feetech STS3215 servos, reads an L3G4200D gyroscope, and streams RGB + depth from an Intel RealSense D415. Publishes all sensor state as LiveKit data and video tracks and accepts velocity commands gated by an
acquire_controlRPC. -
TeleopController — an optional desktop client that subscribes to the robot's tracks, renders the video feed in an SDL3 window, and sends keyboard-driven pan/tilt commands.
Web UI (Next.js) — web/
A browser-based teleoperation interface built with Next.js, React, and the LiveKit JS SDK. Provides a full-screen video viewport with on-screen joystick and keyboard controls for pan/tilt movement, live degree scales, and operator-mode locking.
