Skip to content

Voxel Libraries

Prasad H L Bhat edited this page Sep 14, 2015 · 8 revisions

Voxel SDK has an extensible multi-library architecture with two core libraries and several support libraries. The two core libraries are as follows:

  1. Voxel library (voxel.dll on Windows, libvoxel.so on Linux)
  2. TI3DToF library (ti3dtof.dll on Windows, libti3dtof.so on Linux)

Typically, these two libraries are expected to be available in some path which is part of 'PATH' environment variable on Windows, and 'LD_LIBRARY_PATH' or standard path of /usr/lib on Linux. Voxel support libraries on the other hand are expected to be in some path which is part of 'VOXEL_LIB_PATH' environment variable on all platforms. In Linux, a standard of /usr/lib/voxel is also implicitly supported for Voxel support libraries.

The diagram below illustrates these two core libraries and one example support library for Voxel-A board. It also shows primary classes in each of these libraries. The C++ namespace for each of the library is shown at top right corner for each library. Please click on the diagram below to get an expanded image where you can click on any of the classes to get their documentation.

Voxel Library Architecture

Voxel Library

Voxel library is the main library to which an application program links to. All the remaining libraries are internally loaded by this library and used based on requirement. So, to an application developer, only the API of Voxel library is exposed.

Voxel library is not specific to depth camera chipsets of Texas Instruments, Inc (TI). It has been designed with extensibility in mind, to accommodate different varieties of depth camera chipsets that are coming up.

The primary components in Voxel library as follows:

  1. Voxel::CameraSystem
  2. Voxel::DepthCamera base class
  3. Voxel::DepthCameraFactory base class
  4. Voxel::DepthCameraLibrary class
  5. Voxel::Device classes
  6. Voxel::Filter classes
  7. Voxel::ConfigurationFile and associated classes
  8. Voxel::DeviceScanner classes
  9. Voxel::Downloader classes
  10. Voxel::Streamer classes
  11. Voxel::RegisterProgrammer classes
  12. Voxel::Frame classes
  13. Voxel::FrameStreamReader and Voxel::FrameStreamWriter classes
  14. Voxel Utility classes

TI3DToF Library

TI3DToF library is specific to chipsets of TI. This is not exposed to application developer, but it is used by developers who wish to create board-specific libraries supporting their hardware boards with chipsets of TI. This library does not contain any board-specific classes or structures, but rather it contains logic for handling different chipsets of TI.

This library consists of a hierarchy of classes which inherit from Voxel::DepthCamera and incorporate TI chipset specific logic for Haddock, Tintin and Calculus chipsets. Here Voxel::TI::ToFCameraBase is specific to ToF technology, but not specific to TI's ToF chipsets.

Also, this library consists of an abstract class, Voxel::TI::ToFCameraFactoryBase which inherits from Voxel::DepthCameraFactory and creates specific logic for instantiating depth cameras which use TI's ToF chipsets.

Voxel Support Libraries

Voxel support libraries are usually board specific. They expose one or more APIs which provide factory class instances to create board-specific depth cameras and/or filters and/or downloaders/programmers.

In the diagram above, we show an example support library for Voxel-A board, which consists of Voxel::TI::Voxel14CameraFactory which can instantiate Voxel::TI::Voxel14Camera.

An explanation of the steps involved in creating a support library is given [here](Voxel Camera Developer Guide) taking Tintin CDK as an example.