Skip to content

Atracsys Camera Operators#

Authors: Wayland Technologies Inc. (Wayland Technologies Inc.)
Supported platforms: x86_64, aarch64
Language: C++
Last modified: August 11, 2026
Latest version: 0.1.0
Minimum Holoscan SDK version: 4.0.0
Tested Holoscan SDK versions: 4.0.0
Contribution metric: Level 4 - Experimental

This package contains the optional live-camera path for the Atracsys visualizer. It is not required for the default replay build.

Architecture#

graph LR
    HW[Physical Camera] --> Master(AtracsysMasterSourceOp)
    Master -- Disparity --> Filter[PointCloudFilterOp]
    Filter -- 3D Points --> Out((Output))
    Master -- Tracking/Video --> Out

The package provides:

  • AtracsysMasterSourceOp for visible, infrared, marker-pose, and disparity output
  • PointCloudFilterOp for converting disparity plus Q-matrix data into structured-light points asynchronously via the GPU.

Proprietary SDK Dependency#

SDK status and usage notice: This integration uses engineering AArch64 versions of the spryTrack SDK and S3DK for evaluation and development purposes only. The proprietary SDK/S3DK libraries and headers are not included in HoloHub. When approved for this specific integration, the required components must be supplied separately by Wayland. Any extraction, reuse, redistribution, or separate use of those components outside this specific integration requires prior written approval. These engineering components are not certified or officially supported Atracsys releases. For a full-featured or production-ready integration, please contact the Wayland team.

The live camera operator requires these separately supplied proprietary components. Access is reviewed case by case and is subject to prior written approval. Contact contact@wayland.io to discuss access for this specific integration.

For an approved integration package:

  1. Install the Atracsys SDK so that its CMake package is discoverable (e.g., at /opt/atracsys-4.9.0).
  2. Install the S3DK such that it is discoverable through S3DK_ROOT (e.g., at /opt/s3dk).

Build requirements:

  • Atracsys SDK with CMake package discovery
  • S3DK installation discoverable through S3DK_ROOT
  • OpenCV with CUDA support plus the stereo-processing modules used by S3DK
  • TBB and OpenMP support available to the OpenCV/S3DK stack

Runtime requirements:

  • supported Atracsys hardware
  • installed vendor SDKs
  • any required USB/container privileges for device access

This operator package is intended to be enabled explicitly as an optional dependency for atracsys_visualizer live-camera mode.

API Reference#

C++#

AtracsysDevice#

Methods#
Method Description
AtracsysDevice & instance()
void init()
void shutdown()
ftkLibrary lib() const
uint64_t serial() const
ftkBuffer & buffer()
const std::map<std::string, uint32_t> & options() const

atracsys::IS3DKInterface#

Methods#
Method Description
StereoParameters * createStereoParameters()=0
void destroyStereoParameters(StereoParameters *ptr)=0
bool initializeDeviceHelper(uint64_t *device_sn, ftkLibrary lib, ImageType3D *image_type)=0
stereo_matching_engine * createDefaultEngine()=0
void destroyDefaultEngine(stereo_matching_engine *ptr)=0
GpuFrame3D * createGpu3DFrame(ImageType3D image_type)=0
void destroyGpu3DFrame(GpuFrame3D *ptr)=0
bool computeDispMap(const ftkFrameQuery *frame, const stereo_matching_engine *engine, GpuFrame3D *frame3d, StereoParameters *stereo)=0

atracsys::ISDKInterface#

Methods#
Method Description
ftkError setInt32(ftkLibrary lib, uint64_t sn, uint32_t optID, int32_t val)=0
ftkError setData(ftkLibrary lib, uint64_t sn, uint32_t optID, ftkBuffer *buffer)=0
ftkError getLastFrame(ftkLibrary lib, uint64_t sn, ftkFrameQuery *frame, uint32_t timeout)=0
ftkFrameQuery * createFrame()=0
void destroyFrame(ftkFrameQuery *frame)=0
ftkError setFrameOptions(bool pixels, uint32_t eventsSize, uint32_t leftRawDataSize, uint32_t rightRawDataSize, uint32_t threeDFiducialsSize, uint32_t markersSize, ftkFrameQuery *frame)=0
ftkError setRigidBody(ftkLibrary lib, uint64_t sn, ftkRigidBody *rigidBody)=0
ftkError enumerateOptions(ftkLibrary lib, uint64_t sn, ftkOptionsEnumCallback cb, void *user)=0
ftkError initExt(const char *config, ftkBuffer *buffer)=0
void close(ftkLibrary *lib)=0
ftkError getData(ftkLibrary lib, uint64_t sn, uint32_t optID, ftkBuffer *buffer)=0
ftkError getInt32(ftkLibrary lib, uint64_t sn, uint32_t optID, int32_t *val)=0
ftkError getLastErrorString(ftkLibrary lib, uint32_t size, char *buffer)=0
ftkError loadBody(ftkLibrary lib, const std::string &fileName, ftkRigidBody &geometry)=0

RealS3DKWrapper#

Inherits from: atracsys::IS3DKInterface

Methods#
Method Description
StereoParameters * createStereoParameters() override
void destroyStereoParameters(StereoParameters *ptr) override
bool initializeDeviceHelper(uint64_t *device_sn, ftkLibrary lib, ImageType3D *image_type) override
stereo_matching_engine * createDefaultEngine() override
void destroyDefaultEngine(stereo_matching_engine *ptr) override
GpuFrame3D * createGpu3DFrame(ImageType3D image_type) override
void destroyGpu3DFrame(GpuFrame3D *ptr) override
bool computeDispMap(const ftkFrameQuery *frame, const stereo_matching_engine *engine, GpuFrame3D *frame3d, StereoParameters *stereo) override

RealSDKWrapper#

Inherits from: atracsys::ISDKInterface

Methods#
Method Description
ftkError setInt32(ftkLibrary lib, uint64_t sn, uint32_t optID, int32_t val) override
ftkError setData(ftkLibrary lib, uint64_t sn, uint32_t optID, ftkBuffer *buffer) override
ftkError getLastFrame(ftkLibrary lib, uint64_t sn, ftkFrameQuery *frame, uint32_t timeout) override
ftkFrameQuery * createFrame() override
void destroyFrame(ftkFrameQuery *frame) override
ftkError setFrameOptions(bool pixels, uint32_t eventsSize, uint32_t leftRawDataSize, uint32_t rightRawDataSize, uint32_t threeDFiducialsSize, uint32_t markersSize, ftkFrameQuery *frame) override
ftkError setRigidBody(ftkLibrary lib, uint64_t sn, ftkRigidBody *rigidBody) override
ftkError enumerateOptions(ftkLibrary lib, uint64_t sn, ftkOptionsEnumCallback cb, void *user) override
ftkError initExt(const char *config, ftkBuffer *buffer) override
void close(ftkLibrary *lib) override
ftkError getData(ftkLibrary lib, uint64_t sn, uint32_t optID, ftkBuffer *buffer) override
ftkError getInt32(ftkLibrary lib, uint64_t sn, uint32_t optID, int32_t *val) override
ftkError getLastErrorString(ftkLibrary lib, uint32_t size, char *buffer) override
ftkError loadBody(ftkLibrary lib, const std::string &fileName, ftkRigidBody &geometry) override