PICO Remote Vision#
Stream the context and wrist cameras into a PICO headset independently of the selected robot. This optional process does not import a robot backend, enable CAN, or replace the normal real-teleoperation command.
Protocol and preparation#
HandUMI uses the XRoboToolkit Remote Vision protocol: commands travel through
port 13579 and length-prefixed H.264 video through port 12345. Over USB the
directions are intentionally different:
PICO command client -> adb reverse 13579 -> HandUMI bridge
HandUMI H.264 sender -> adb forward 12345 -> PICO decoder
The bridge uses the existing ZEDMINI source in the XRoboToolkit app and does
not install or replace video_source.yml. Close XRoboToolkit before creating
the tunnels because the running app normally owns device port 13579. Also
close OBS or any viewer that owns a selected camera.
Test one camera#
Test video without enabling a robot:
uv run handumi-pico-camera \
--camera /dev/video2 \
--input-format mjpeg \
--input-size 1280x720 \
--fps 30 \
--eye-y-offset 48
The default --eye-y-offset 48 moves the complete image slightly downward in
both eyes. Use 0 for a centered image, a larger positive value to lower it
further, or a negative value to raise it.
When the terminal reports that Remote Vision is ready, open XRoboToolkit and use:
Remote Vision source: ZEDMINI
Camera source IP: 127.0.0.1
Listen: enabled
Stream three cameras#
One camera is fitted into each eye without stretching its aspect ratio. The three-camera layout places the context camera in the center and the wrist cameras at the sides:
uv run handumi-pico-camera \
--camera /dev/video2 \
--left-camera /dev/video4 \
--right-camera /dev/video6
The process reads one frame from every configured camera before opening the stream, so a missing, busy, or incompatible camera fails without involving the robot. After validating video, leave this process running and start the normal real-teleoperation command for the selected robot in another terminal.
If the video stream stops, teleoperation continues. The operator must decide whether remote operation remains safe.
Troubleshooting#
If Remote Vision connects but stays blank, restart the bridge with the current
code and press Listen again. Check adb logcat for decoder errors.
XRoboToolkit requires 3-byte H.264 NALs to remain grouped inside the 4-byte
Annex-B decoder unit.