This plug-in provides support for the CyberGlove Systems family of devices for capturing tracking data from data gloves. These devices measure finger flexion, abduction between fingers, thumb crossover, palm arch, wrist flexion, and wrist abduction. These devices use standard wireless or USB connectivity.
In order to use the plug-in you must first install the CyberGlove Systems driver and configure the device using the Device Configuration Utility (DCU) that comes with the CyberGlove Systems installer. Once the device is connected and working properly within the DCU, you can connect to it within Vizard.
There are two version of the CyberGlove plug-in, depending on the version of the glove you have. If you have a glove from CyberGlove Systems, then you will use the CyberGlove.dle plug-in. If you are using the legacy CyberGlove sold by Immersion, then you will need to use the immersion.dle plug-in. Once created, both plug-ins provide the same interface.
The CyberGlove extension object has the following methods/constants:
Method |
Description |
<CyberGlove>.addCyberGlove(port=0, baudRate=115200) |
Returns a CyberGlove sensor object on the specified port. If port is 0, the plug-in will automatically detect an attached glove. The baudRate parameter specifies the baud rate the glove is communicating on when connecting to a serial device. |
<CyberGlove>.addCyberTouch(port=0, baudRate=115200) |
Returns a CyberTouch sensor object. The parameters are the same as the addCyberGlove method above. |
<CyberGlove>.TOUCH_THUMB <CyberGlove>.TOUCH_INDEX <CyberGlove>.TOUCH_MIDDLE <CyberGlove>.TOUCH_RING <CyberGlove>.TOUCH_PINKY <CyberGlove>.TOUCH_PALM <CyberGlove>.TOUCH_ALL |
These constants represent the vibration sensors on the CyberTouch device. The values are bit flags, so they can be combined using the bitwise OR operator. |
The CyberGlove sensor object provides raw data through the sensor.getData() method. The data returned is a list containing the following values:
Note: All the joint values are in degrees
Index |
Description |
0 |
Thumb roll |
1 |
Thumb inner joint |
2 |
Thumb outer joint |
3 |
Index finger inner joint |
4 |
Index finger middle joint |
5 |
Index finger outer joint |
6 |
Middle finger inner joint |
7 |
Middle finger middle joint |
8 |
Middle finger outer joint |
9 |
Ring finger inner joint |
10 |
Ring finger middle joint |
11 |
Ring finger outer joint |
12 |
Pinky finger inner joint |
13 |
Pinky finger middle joint |
14 |
Pinky finger outer joint |
15 |
Thumb-Index abduction |
16 |
Index-Middle abduction |
17 |
Middle-Ring abduction |
18 |
Ring-Pinky abduction |
19 |
Palm arch |
20 |
Wrist flexion |
21 |
Wrist abduction |
22 |
Switch state |
23 |
Gesture number |
The CyberTouch sensor object is the same as the CyberGlove sensor, but contains the following additional methods for controlling the vibration sensors of the glove:
Method |
Description |
<cybertouch>.setVibration(sensor, value) |
Set the vibration level of a CyberTouch sensor. sensor is a combination of the above vibration sensor constants. Combining multiple constants allows you to set the vibration level of multiple sensors simultaneously. value is a number between 0 and 1, that controls the vibration level. 0 is no vibration and 1 is maximum vibration. |
<cybertouch>.getVibration(sensor) |
Returns the vibration level of the specified vibration sensor. sensor must be one of the vibration sensor constants. |
<cybertouch>.clearVibration() |
Clear the vibration level of all vibration sensors. |
This example shows how to add a CyberGlove sensor in your script. Add a sensor for each glove you want to use.
The following examples shows how to add a CyberTouch sensor and set the vibration amplitude of the index and pinky finger to 75%:
Tutorial: 5DT data gloves - Tutorial in the Hardware section on how to use a 5DT data glove.