Skip to content

License requirement

The functionality described requires a Feature style license with both the SDK (integrated) feature and the feature for the session type you are using (for an SDK session that is SDK (remote)) enabled. When running on a Linux target the Linux feature is also required. If you do not have such a license, please contact support at support@manus-meta.com.

SDK Integrated

The SDK can be used in two ways: integrated and remote. This article delves into what the integrated mode is, how and when to use it.

Introduction

The integrated mode of the MANUS SDK is a mode where no MANUS Core connection is required to connect the MANUS glove devices. The SDK will directly communicate with the glove devices. The SDK API is identical to the remote mode.

When to use

The integrated mode is useful in the following scenarios:

Linux only

MANUS Core does not work on Linux and still requires a separate machine to have its gloves connected to. In this case, the integrated mode is the only way to connect the gloves to the Linux machine.

Deep integration

When the application wants to have full control over the glove devices, and wants to handle glove calibration, pairing/un-pairing, tracking data, etc. themselves.

How to use

To enable integrated mode, the SDK initialization call should be made with the CoreSdk_InitializeIntegrated() function instead of the CoreSDK_InitializeCore(). This will initialize the SDK in integrated mode. The SDK examples give users the choice to select between integrated and remote mode on startup.

const SDKReturnCode t_InitializeResult = CoreSdk_InitializeIntegrated();

On Windows platforms this is all that is needed to use the SDK in integrated mode. On Linux platforms, it's important to make sure the required packages are installed. Please refer to the installation instructions for more information.

Customizing the SDK Integrated

Settings and logs are stored in the MANUS Settings folder and log folder respectively. These locations can be customized using the following SDK calls.

Settings Location

Windows

The settings are stored in the MANUS Settings folder. This folder is located in the AppData folder of the user. The path to this folder is C:\Users\<username>\AppData\Local\Manus\Core 3. This location can be customized using the SDK call CoreSdk_SetSettingsLocation(). This call should be made right after the SDK is initialized.

Linux

The settings are stored in the MANUS Settings folder. The path to this folder is /home/root/.config/manus/. This location can be customized using the SDK call CoreSdk_SetSettingsLocation(). This call should be made right after the SDK is initialized.

Logs Location

When an app sets the log location, SDK Integrated will store these logs in the log folder at this specified location. This location can be set using the SDK call CoreSdk_SetLogLocation(). This call should be made right after the SDK is initialized.

Note

If subscribed to log events through the CoreSdk_RegisterCallbackForOnLog() function, the logs will be sent to the callback function and no longer be logged to console and file.

Glove calibration

It's highly advised to integrate the glove calibration process into your application to achieve the most accurate data quality. The SDK provides the necessary functions to calibrate the gloves. More information on how to integrate glove calibration using the SDK can be found within the SDKClient example.

Automatic glove assignment.

In MANUS Core, gloves and trackers must be assigned to a user before their data can be used. A User represents a single person wearing gloves, trackers, or both, and is used to track device ownership.

When using the SDK in remote mode, gloves, trackers and users are managed manually. Users are created, then gloves and/or trackers are assigned to them. This is generally done using the MANUS Dashboard but can also be handled through SDK calls.

When using the SDK in Integrated mode, glove-to-user assignment is handled automatically by default. Optionally, it can be handled manually instead. When the assignment is handled automatically, users are dynamically generated as gloves are connected. The automatic system works by the following logic:

Wireless connection

When gloves are connected wirelessly, they are assigned to users based on the dongle they are paired to. So for example:

  • A glove is connected wirelessly to a dongle -> A user will be generated and the glove will be automatically assigned to it.
  • Another glove is connected wirelessly to the same dongle -> It will be automatically assigned to the same user.
  • A glove is connected wirelessly to a different dongle -> A new user will be generated and the glove will be assigned to that user.

If the dongle that has been automatically assigned to a user is disconnected, that user will be automatically removed.

Wired connection

Whenever gloves are connected by wire, they will be assigned to users in order of connection. So for example:

  • A left glove is connected by wire -> A user will be generated and the glove will be automatically assigned to it.
  • A right glove is now connected by wire -> It will also be automatically assigned to the same user.

If all gloves assigned to a user are disconnected, that user will be automatically removed.

Please note that wireless and wired gloves will not be automatically assigned to the same users.

Calibrations

When automatic assignment is enabled, calibrations are stored per glove. This ensures that each glove retains its own calibration whenever it is reconnected.

When automatic assignment is disabled, calibrations are stored per user instead. In this case, the active calibration remains the same even if the user switches to a different pair of gloves.

Manual Assignment

If you want to handle glove assignment manually, you can disable automatic glove assignment. In this mode, glove assignment works the same way as in the SDK in remote mode. For more information on this, see the section on users in the SDKClient example.

Limitations

The integrated mode does not have the full feature set that can be found in MANUS Core.

License requirement

The integrated mode requires a Feature style license with the SDK feature enabled. This new style of licenses is introduced in MANUS Core 2.4.0. If you do not have such a license and would like to aquire one, please contact support at at support@manus-meta.com.

Lack of Dashboard

Integrated mode does not communicate outwards, so there is no way to configure the gloves through the MANUS Core Dashboard or use any other of the features that are available in the Dashboard.

Such as:

  • Glove calibration
  • Pairing / Unpairing
  • Recorder
  • Exporter
  • Firmware updating
  • Networked devices

No built-in tracking system integrations

MANUS Core has support for various tracking systems, such as SteamVR, ART, Vicon. These integrations are not available in integrated mode. Tracking data can be sent to the SDK manually. More information on how to do this can be found here.