Quest 3 raw input and streaming helpers for RoboVR
Project description
RoboVR
Quest 3 teleoperation prototype for Ubuntu hosts.
Current milestone: bring up the wired development loop.
host_bridge/: Ubuntu C++ TCP bridge demo.proto/: shared packet header and packet type definitions.quest_client/: Android/Quest client skeleton.examples/quest_streaming.py: shared Python protocol and H.264 streaming helpers.tools/: ADB and local launch helpers.docs/: design notes and test procedures.
Host smoke test
Install the host compiler toolchain if needed:
sudo apt update
sudo apt install build-essential
cmake -S . -B build
cmake --build build
./build/host_bridge_demo 7777
The first Quest client build sends HELLO and HEARTBEAT packets over adb reverse tcp:7777 tcp:7777.
Quest prerequisites
adb devices
adb reverse tcp:7777 tcp:7777
adb devices must show the Quest as device, not unauthorized or no permissions.
Quest client build
This repo currently contains Gradle project files but not a checked-in Gradle wrapper. Build with Android Studio, or install Gradle/Android SDK and run:
cd quest_client
gradle assembleDebug
The initial APK is a transport bring-up client. It opens a regular Android Activity on Quest and sends HELLO/HEARTBEAT packets to the Ubuntu host. Native OpenXR rendering is the next milestone after this loop is verified.
ToolHang Quest teleop
Use the fixed launcher instead of hand-building the long command:
tools/run_tool_hang_quest.sh
The launcher configures adb reverse tcp:7777 tcp:7777 and starts ToolHang with H.264 stereo video, head tracking, and right-controller arm teleop.
Controls:
AorX: reset the headset neutral frame. Head camera motion and arm motion share this frame.- Right squeeze: hold to clutch and move the arm.
- Right trigger: press once to toggle gripper open/closed.
BorY: reset the arm clutch neutral while keeping the shared headset frame.
Quest 3 Raw Python API
RoboInfra should consume the raw Quest input API from robovr.quest3. This API only exposes headset/controller state and connection stats; it does not own robot teleop mapping.
from robovr.quest3 import Quest3Server, Quest3VideoStreamer
server = Quest3Server(port=7777, adb_reverse=True)
server.start()
streamer = Quest3VideoStreamer(server)
state = server.wait_for_state(timeout_s=5.0)
while True:
state = server.latest()
if state is not None and state.connected:
head = state.head
right_grip = state.right_grip
trigger = state.right_trigger
squeeze = state.right_squeeze
# left_rgb and right_rgb are uint8 RGB arrays with shape H x W x 3.
streamer.send(left_rgb, right_rgb)
Quest3VideoStreamer defaults to the validated Quest 3 stereo path: 800x450
per eye, H.264, 72 FPS target, and RoboVR's internal flip/SurfaceTexture packet
handling. If the Quest is not connected, send() returns False instead of
raising.
Manual monitor:
python -m robovr.quest3.monitor --port 7777 --adb-reverse
Python Package Publishing
The PyPI package is scoped to the robovr Python package only. Quest APK/native
client code and local build artifacts stay in the repository but are excluded
from the wheel.
See docs/publishing.md for build, twine check, TestPyPI,
and PyPI upload commands.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file robovr-0.1.0.tar.gz.
File metadata
- Download URL: robovr-0.1.0.tar.gz
- Upload date:
- Size: 12.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7758550d10d85baf9c6abb27f6626bae2ca0c9408b01efe7f7b3e2d047973126
|
|
| MD5 |
e342e8b7a79c14f419df0144a9fcdef6
|
|
| BLAKE2b-256 |
d1c891e6132db5decdd957679cbbc84e849de6e46a0ac3aa0e392a678c7b3220
|
File details
Details for the file robovr-0.1.0-py3-none-any.whl.
File metadata
- Download URL: robovr-0.1.0-py3-none-any.whl
- Upload date:
- Size: 13.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1c1b4967ffc3dc16e5fd9e5c366ed7ef0ad4799ea304c3db2e2dd2d38c4cdee5
|
|
| MD5 |
9229eca9894aee2a799e17f0975993fe
|
|
| BLAKE2b-256 |
560a1b6cf174e8073beb93bd2d8525a8fd7efcca50713c7675e68e141761373b
|