Skip to content

Configurable served/IPC camera framerate to reduce CPU for on-device vision (Reachy Mini Lite locked to 1080p@60) #1241

Description

@rafaheringer

Summary

On the Reachy Mini Lite, the camera only supports 1920x1080@60fps (plus higher 4K modes) — there is no lower-resolution or lower-framerate mode. For apps that need the video stream but not at 60fps (e.g. on-device face/hand tracking with MediaPipe), the daemon serving 1080p@60 over the IPC branch saturates the Raspberry Pi: the daemon (~180% CPU) plus the local client receiving/converting the stream (~130% CPU) starve the tracking loop, so head/hand tracking becomes too laggy to be usable.

It would help a lot to be able to decouple the served/IPC framerate from the camera capture rate, so a local vision app can request e.g. ~10 fps and keep CPU low while still getting frames.

Environment

  • Hardware: Reachy Mini Lite (camera VID 0x38FB, PID 0x1002, reported name: lite)
  • Daemon reachy_mini tested on both 1.7.0 and 1.8.x
  • Raspberry Pi 4 (4 cores), daemon running natively, backend LOCAL (GStreamer IPC camera)

What I observed

Proposed solutions (any one would help)

  1. A configurable framerate for the IPC/served branch (e.g. media.set_served_framerate(fps) or a daemon env var), implemented so it respects the unixfdsink FD-buffer requirements (a plain videorate before the tee breaks it).
  2. Expose lower camera capture modes on the Lite if the sensor supports them (e.g. 1280x720), so set_resolution can actually reduce the load.
  3. Document the recommended pattern for low-CPU on-device vision/tracking on the Lite.

Why it matters

The Lite is the entry-level / most CPU-constrained variant, and on-device head/hand tracking is a flagship use case. Today it is effectively unusable on a Pi 4 because the only camera mode is 1080p@60.

Related: #680, #1234, #964, #133. Happy to test patches.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status
    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions