360° panoramic stitching camera: dual back-to-back 220° fisheye lenses cover 360° in a single unit. Raspberry Pi 5 + dual Sony IMX477 — no physical sync cable, all computation in GPU memory, 33 ms end-to-end latency, 28.05 FPS steady state.
Two lenses capture in sync, are stitched on-device, then output as one standard video stream for recording and streaming
Back-to-back lenses expose on the same frame moment, preventing misalignment and tearing — the basis for accurate stitching.
Stitching and dewarp run on the device, merging both views into one continuous panoramic frame locally.
The panorama is output as one standard video stream — record, stream, feed a platform or run analytics directly.
Anywhere you need one viewpoint to see everything is within its reach
28 FPS steady state and 33 ms latency feed the avoidance loop directly; the spherical view gives full spatial awareness
One device covers 360° with back-to-back lenses and no external trigger cable, tolerant of motion and vibration
Full 360° spherical view straight out, with Web streaming on port 8080 for browsers and headsets
2:1 equirectangular images embed directly into web UIs and algorithm frames; the V4L2 node feeds OBS and line systems
33 ms end-to-end latency with synchronized viewing on any PC, mobile or VR browser on the LAN
High-res native profile at 2028 × 1520 input, configurable to 4096 × 2048 output for static modelling and archiving
Platform capabilities and customization range — exact model parameters confirmed by sampling
| Item | Specification |
|---|---|
| Item | Specification |
| Compute platform | Raspberry Pi 5 (Broadcom BCM2712, VideoCore VII GPU, 8 GB RAM) |
| Operating system | Raspberry Pi OS Bookworm 64-bit (Linux 6.6 kernel), pure headless DRM/GBM EGL rendering |
| Image sensors | Dual Sony IMX477 HQ cameras, CSI-2 wired to both mainboard CAM ports |
| Optics | Dual M12-mount 220° fisheye lenses, 13 mm baseline back-to-back |
| Lens distortion model | Equidistant fisheye (r = f·θ) + Kannala-Brandt 4th-order radial polynomial |
| FOV & overlap | 220° ultra-wide, 40° spatial overlap |
| Input resolution | 1536 × 1536 (fast profile) / 2028 × 1520 (native profile) |
| Panorama output | 2048 × 1024 (standard 2:1 equirectangular), native mode configurable to 4096 × 2048 |
| Steady-state frame rate | 28.05 FPS (rated 30 FPS); high-res native profile 18 ~ 20 FPS |
| End-to-end latency | 33 ms (GPU single-frame render 27 ~ 29.5 ms) |
| Sync offset | < 100 μs (measured min -2 μs) via libcamera software master-slave PLL |
| Sync method | No physical sync cable and no external trigger chip; frame period trimmed dynamically |
| Seam handling | Distance-transform Gaussian feathering 55 px (fast) / 50 px (native), optimal midline auto-located |
| Spherical mesh | 180 × 360 lat-long slices, 65,341 vertices, 129,600 triangles |
| Capture format | NV12 (Y / UV dual plane), libcamera native DMABUF zero-copy mapping |
| Render output format | BGRA / BGR (channel order straight from the shader) |
| Streaming & access | Web HTTP MJPEG (port 8080), V4L2 virtual camera node, direct frame tap for algorithms / recording |
| Form factor | Prototype unit (final enclosure per project) |
How panoramic stitching works, why sync is the deciding factor, and where it fits
No sync cable and no external trigger chip between the two cameras — the master-slave pair dynamically trims the frame period through a libcamera software PLL so exposure centres coincide exactly, and dynamic scenes no longer tear at the seam. No cable means no loose connectors and no cable tug, which is what makes it usable on moving and vibrating platforms.
Raw NV12 frames bind directly to GPU texture units as Y / UV planes; colour conversion, Y flip and BGR channel ordering all happen in the shader, and frames never land in CPU memory for reprocessing. That frees the CPU from pixel shuttling entirely.
The whole GPU pipeline runs 27~29.5 ms per frame, 33 ms end to end, 28.05 FPS steady state. That lets the panorama feed avoidance and recognition loops directly instead of being recorded and reviewed later.
Fast real-time: 1536 × 1536 input, 1536-byte stride perfectly aligned, 28.05 FPS, 55 px feathering — for live streaming, low-latency video and robot avoidance. High-res native: 2028 × 1520 full frame, 18~20 FPS, configurable to 4096 × 2048 output — for high-resolution stills, offline recording and quality mapping.
A distance transform over the 40° overlap automatically locates the optimal stitching midline and feathers it; exposure and white-balance gain balancing removes brightness steps caused by lighting differences between the two lenses.
The Web MJPEG server on port 8080 opens in any modern PC, mobile or VR browser; the V4L2 virtual camera writes to /dev/videoX for OBS and live-streaming software; with no web client the 15~18ms per-frame JPEG compression sleeps and panorama frames feed algorithms or recording directly.
Available as full device or module — final parameters confirmed by sampling
Tell us the field of view, resolution and interface needs — you'll get a configuration and sampling plan within 1 business day
Request Quote