![]() |
Low-Level C++ SDK
v1.1
|
Welcome to the Weart Low-Level C++ SDK documentation.
The SDK allows to connect to the Weart middleware and perform various actions with the TouchDIVER devices:
The minimum setup to use the weart SDK consists of:
The SDK can be downloaded as a zip file containing all the necessary files. To use it in your C++ project, unzip it and move the files in a folder inside your project. Then, add the folder with the sdk files to the project's include path, and the .cpp files to your project's sources. In Visual Studio, this can be done by including the sdk directory into the project (Right Click on Solution -> Add -> Existing Directory).
To start using the SDK in your project, start the Middleware application and connect a TouchDIVER device to it. Then, create a header file and Include the following headers:
Finally, create the WeArtClient and start the communication with the middleware:
Run
method will stop once the connection is closed. To keep the connection open, call the method again upon disconnection or error (they can be notified with WeArtClient::AddConnectionStatusCallback and WeArtClient::AddErrorCallback).Once connected to the middleware, it's still not possible to receive tracking data and send haptic commands to the devices. In order to do so, it's important to start the middleware with the proper command.
To start the middleware operations, call the Start() method.
To stop the middleware, call the Stop() method.
After starting the communication with the middleware, it's now possible to calibrate the TouchDIVER devices. The calibration allows to set the initial offsets of each thimble relative to the control unit position, in order to improve the finger tracking output.
First, create the calibration tracking object and add it to the client. The WeArtTrackingCalibration object allows to listen for calibration messages from the middleware, and get notified when the calibration process ends.
Then, start the calibration procedure. This will allow the middleware to calibrate the hand sensor offsets based on the current setup (thimbles and control device position, hand inclination, personal differences in the fingers etc..).
It’s possible to get the calibration status and result from the tracker object itself, or through callbacks (in the form of std::function).
The TouchDIVER allows to perform haptic feedback on the user's finger through its thimbles. Every thimble can apply a certain amount of pressure, temperature and vibration based on the processed object and texture.
A WeArtHapticObject is the basic object used to apply haptic feedback. To create one, use the following code:
The values handSideFlag and actuationPointFlag accept multiple values. The next example presents a single haptic object that, when applied a WeArtEffect, will affect both hands and all fingers.
The SDK contains a basic TouchEffect class to apply effects to the haptic device. The TouchEffect class contains the effects without any processing. For different use cases (e.g. values not directly set, but computed from other parameters), create a different effect class by implementing the WeArtEffect interface.
Create the object on which the temperature, force and texture values will be applied:
It's possible to add a new effect to an haptic object, or to update an existing one.
In the example below, the effect created in the previous section is updated with a new temperature, force and texture. It is then added to the haptic object if not already present, otherwise the haptic object is updated in order to send the new effect parameters to the middleware and then to the device.
If an effect is not needed anymore, it can be removed from the haptic object with the WeArtHapticObject::RemoveEffect method.
After starting the middleware and performing the device calibration, it's possible to receive tracking data related to the TouchDIVER thimbles.
To read these values, create and set a thimble tracker object for monitoring the closure/abduction value of a given finger:
Once this object is added to the client, it will start receiving the tracking values. To access the closure and abduction values, simply use the getters provided by the thimble tracking object.
The closure value ranges from 0 (opened) to 1 (closed).
The abduction value ranges from 0 (finger near the hand's central axis) to 1 (finger far from the hand central axis).