-
Notifications
You must be signed in to change notification settings - Fork 5
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.