Concepts/Cameras
Cameras
Four sources, bound by the bridge
ROS2 image topics, RTSP, MJPEG and V4L2 — the bridge binds all four. Per camera, the developer configures resolution, FPS and bitrate, which is also how you control the robot’s own bandwidth use.
One stream per camera, fanned out by the cloud
There is always exactly one connection between the bridge and the cloud per camera, no matter how many clients are watching. Fleetless does the fan-out to multiple viewers (SFU), so the robot’s uplink cost is independent of audience size.
Two modes, running independently
- Snapshot (default, always on). The bridge sends one image to the cloud at a developer-configured interval; the cloud caches it and serves every client from that single cached image. Snapshots run independent of live state — whether anyone is watching live or not doesn’t change the snapshot cadence, and each client independently chooses snapshot or live.
- Live (on demand). The first live viewer starts the stream; when
the last one leaves, it stops (refcounted by the cloud). Transport is
WebRTC via LiveKit on
media.fleetless.dev— low latency, token-based, with client SDKs. Non-WebRTC sources (RTSP/MJPEG/V4L2/image topics) are transcoded by the bridge into that one outgoing stream.
No recording
Camera footage is not recorded by the platform. If your app needs a persistent record, that’s something you build on top — snapshot storage, a recording pipeline against the live stream, etc. — not something the platform does for you.
Practical notes for a client app
- Read the snapshot’s own reported age, not just when your request returned — a cached snapshot can be older than your poll interval.
- Live sessions are refcounted server-side: releasing your session cleanly matters if you want the stream to actually stop for everyone once you’re the last viewer (see Disconnect Behaviour for how addressing a specific session works).
- If you’re rendering a robot in 3D and want camera imagery alongside pose data, see URDF & Meshes — the two are unrelated mechanisms that commonly show up in the same app.