SDK Driver Architecture

SDK Driver

Design

SDK Driver is a module built on top of Metavision HAL (see its dependencies below) designed around a Camera class that offers:

  • an easier access to events (no need to interact with the Metavision::I_EventsStream or Metavision::I_EventsStreamDecoder and the threading issues related to it, in most cases where fine grain control is not needed)

  • a file I/O API that supports other type of events than RAW encoded data (such as DAT, HDF5 etc.)

  • a way to serialize/deserialize camera configuration in a robust way (see save() and load() functions)

Main functions

More specifically, the Camera class provides access to:

  • static functions to transparently construct instances:

  • direct access to the underlying Device instance via get_device() if needed and supported

  • event callbacks that can be set using functionality accessors, such as cd(), ext_trigger() etc. in a similar but simpler and more universal way than what is done in HAL (for example, the same code settings callbacks with cd() will work transparently with any event based cameras supported by HAL but also any event based recordings such as RAW but also DAT, HDF5 and any future formats that will be incrementally added).

  • (de)serialization of camera hardware settings via save() and load() from files and operator<< and operator>> for generic stream operations

  • some facilities are wrapped in classes that provides additional functions to their underlying HAL facilities: e.g biases() provides a way to save/load biases to file

Dependencies

SDK driver is a module that depends on:

  • SDK HAL for the Camera implementation for live cameras and RAW event files

  • SDK Core for some algorithms and utility classes

  • other libraries to provide file input/output support for other formats (such as protobuf, HDF5, etc.).

Next Steps

From here, depending on your interest, you can: