Skip to content

live camera

Alexandre Marcireau edited this page Jun 21, 2018 · 2 revisions

Most event-based cameras include the following components:

  • an array of independent pixels captures and processes the signal analogically
  • an arbiter sequentializes the data produced by the array
  • a clock timestamps the events, so that non-deterministic processes (USB transfer, non-realtime computer...) do no alter the timing precision
  • data is transferred to a computer through a widespread interface (USB, WiFi...)

The protocol used to communicate through the interface differs from camera to camera, and sometimes relies on non-free third-party libraries (such as Opal Kelly Front Panel).

The Sepia library is meant to be extended: a new repository must be created for each camera model, wrapping or reproducing the communication library implementing the model's protocol. This is meant to keep each library's dependencies to a minimum.

The Sepia library provides two structures to ease its extension:

  • sepia::parameter and its derived classes implement a JSON parser and validator. It can be used to read and validate a camera's configuration file (as an example, to set the biases).
  • sepia::specialized_camera implements a thread-safe FIFO. It is useful to isolate the reading thread, which polls the camera and retrieve events, and the event handling thread.

The following libraries extend Sepia:

Each library has a distinct install process. However, all provide a camera class which behaves like the sepia::observable class.

Clone this wiki locally