Khoi Phan, Nyasha Gwaza, Quang Nguyen, Saumili Chakravarty, Sufi Hossain,
Advisors: Prof. Jack G. Mottley, Prof. Irving Barron Martinez, and Prof. Daniel Phinney
Department: Electrical and Computer Engineering class of 2026
About the Project

The Challenge: There is a growing need for versatile, remote-controllable robotic systems for exploration, inspection, and telepresence in environments that may be hazardous or difficult to access. Traditional control methods often suffer from high latency, limited range, complex network configurations, or lack real-time sensory feedback.
Our Goal: To design and build a robust telepresence rover that can be easily piloted in real-time using an intuitive mobile application. The system must seamlessly integrate ultra-low-latency video feedback with precise, reliable motor control over a secure network, regardless of physical location.
Objectives
- Mobile Robotic Platform: Develop a functioning, multi-wheel rover utilizing a dual-motor driver for responsive locomotion.
- On-Board Processing: Integrate a Raspberry Pi as the central compute unit to handle media broadcasting, network signaling, and GPIO hardware control.
- Custom Control Interface: Create a dedicated, user-friendly Android application serving as the primary interface for live video viewing and directional control.
- Robust Networking: Establish a low-latency, reliable, and secure peer-to-peer connection capable of traversing NATs and firewalls without complex user setup.
- Fail-Safe Operations: Implement strict timing and safety mechanisms to ensure the robot halts safely in the event of a network drop or application failure feedback, GPS, or a camera for enhanced user experience.
System Architecture

Our system architecture relies on a strict separation of high-bandwidth media streams and low-bandwidth control signals to ensure maximum responsiveness and reliability.
- App Layer (Android Client): A dual-channel Android application. It utilizes an embedded WebView to handle complex WebRTC video/audio streams natively, alongside a Native Socket.IO connection for transmitting lightweight motor control commands.
- Network Layer (Tailscale VPN): A WireGuard-based VPN overlay creates a secure, shared virtual network. This bypasses traditional NAT/firewall restrictions, allowing the app and the rover to communicate via direct IP addresses as if they were on the same local subnet.
- Rover Layer (Raspberry Pi): A Node.js server manages connection handshakes and forwards control commands. A WebRTC Broadcaster captures and streams the Pi Camera feed directly to the client.
- Physical Layer: A background Python script listens for commands from the Node.js server, parsing JSON data into physical PWM and direction signals sent via GPIO pins to the motor drivers.
Our Results
Key Features

Ultra-Low Latency Video via WebRTC Instead of routing video through a central server, our system establishes a direct peer-to-peer connection between the Raspberry Pi and the Android device. This allows for real-time video and audio streaming with minimal delay, crucial for remote piloting.
Parallel Communication Channels By separating the WebRTC media stream (high bandwidth) from the Socket.IO control signaling (low bandwidth), motor commands never have to compete with video frames for network resources. This guarantees that steering remains highly responsive even under fluctuating network conditions.
“Heartbeat” Safety System & Hardware Watchdog To prevent runaway scenarios, the system uses a synchronous safety loop:
- The App: When a user holds a directional button, the app uses Kotlin coroutines to fire a “heartbeat” command every 200 milliseconds.
- The Rover: The Python motor script features a hardware watchdog timer. If it does not receive a new command within 350 milliseconds, it instantly kills power to the motors.
Custom Android Touch Processing Standard Android UI buttons do not natively distinguish between “touch down” and “touch up” events cleanly. We engineered custom Jetpack Compose pointerInput modifiers to track exact finger placement, ensuring the heartbeat starts the millisecond a user presses the screen and stops the moment they lift their finger.

Components
- Microcontroller: Raspberry Pi (handles Node.js, Python scripts, and WebRTC streaming)
- Sensors/Media: Raspberry Pi Camera Module (CSI/USB)
- Motors & Driver: DC Gear Motors paired with a Dual Motor Driver Module
- Networking: On-board WiFi module communicating over a Tailscale Subnet
- Mobile App: Custom Android application utilizing Kotlin, Jetpack Compose, and Coroutines.
- Video Delivery: WebRTC (getUserMedia API, RTCPeerConnection) rendered via an embedded Android WebView with automated SSL-override and permission granting.
- Signaling & Control: Socket.IO over HTTPS.
- Hardware Interfacing: Python-based motor control script reading standard input and translating it to GPIO pin states.
- Network Traversal: Tailscale VPN.
Overall Success?
“YES“
The final integration successfully merged the browser-native requirements of WebRTC with the hardware-level control of Android and the Raspberry Pi.
- Reliable Connectivity: The implementation of Tailscale successfully eliminated the need for external STUN/TURN servers. Devices instantly recognize each other across different Wi-Fi networks.
- Graceful Degradation: Testing confirmed that the parallel communication design allows the robot to remain controllable even if the video feed drops resolution due to network strain.
- Safety Confirmed: The 350ms watchdog timer effectively stops the rover during forced app crashes or simulated network disconnects, preventing hardware damage or loss of the rover.
This project successfully demonstrated a fully integrated, app-controlled robotics platform. By innovatively combining WebRTC for peer-to-peer video with Socket.IO for precise signaling, all unified under a Tailscale VPN, we solved traditional latency and network traversal issues. We met our primary design goals and provided a highly stable foundation for real-time remote robotic telepresence.
Our codes in Github: https://github.com/onerkebab/telerover
Our app in Github: https://github.com/onerkebab/telerover/tree/main/android

Connect with the Team:
- Saumili Chakravarty
- https://www.linkedin.com/in/saumili-chakravarty/
- Quang Nguyen
- https://www.linkedin.com/in/qnguyen13/
- Khoi Phan
- https://www.linkedin.com/in/phantruonganhkhoi/
- Sufi Hossain
- https://www.linkedin.com/in/sufihossain/
- Nyasha Gwaza
- https://www.linkedin.com/in/nyasha-gwaza-9a8098181/