implement the nova2 api updates and bump the senseglove libraries to v2.101.0-3e1693fb

This commit is contained in:
Mamadou Babaei
2024-03-22 20:54:09 +01:00
parent 695d4f01ba
commit d83251a57c
574 changed files with 22013 additions and 27569 deletions
@@ -48,26 +48,6 @@ enum class ESGBackendType : uint8
SharedMemory UMETA(DisplayName = "Shared Memory"),
};
/* Startup Stage used to indicate where of not a glove must be recalibrated. */
UENUM(BlueprintType)
enum class ESGCalibrationStage : uint8
{
/* The default none value. */
None UMETA(DisplayName = "None"),
/* We've only just started up. User needs to move their hands so we know if we're still in the same sensor range. */
MoveFingers UMETA(DisplayName = "Move Fingers"),
/* After moving, we've determined that a calibration must happen for proper hand tracking to happen. */
CalibrationNeeded UMETA(DisplayName = "Calibration Needed"),
/* After moving, we've determined that a calibration must happen for proper hand tracking to happen. */
Calibrating UMETA(DisplayName = "Calibrating"),
/* We've determined that this needs no (more) calibration to function as intended. */
Done UMETA(DisplayName = "Done"),
};
/* Connection type of this device, as detected by the SGConnect library. */
UENUM(BlueprintType)
enum class ESGConnectionType : uint8
@@ -88,28 +68,98 @@ enum class ESGConnectionType : uint8
BluetoothAndroid UMETA(DisplayName = "Bluetooth Android"),
};
/* Sense Glove C string Variables, enumerated for our convenience. */
/**
* Used to access specific positions from the CV output, which is an array of Vect3D positions.
* @remarks Declared in CVHandOutput.cs because these enums are used to index the jointPositions array in that class.
*/
UENUM(BlueprintType)
enum class ESGCVar : uint8
enum class ESGCVHandPoints : uint8
{
/* The default none value. */
None UMETA(DisplayName = "None"),
ID UMETA(DisplayName = "ID"),
GloveVersion UMETA(DisplayName = "Glove Version"),
FirmwareVersion UMETA(DisplayName = "Firmware Version"),
LeftRight UMETA(DisplayName = "Left Right"),
Functions UMETA(DisplayName = "Functions"),
GlovePos UMETA(DisplayName = "Glove Pos"),
/* The position of the Wrist as determined by the CV Model. */
Wrist UMETA(DisplayName = "Wrist"),
/* All gloves have functionality up to this point. */
GloveLengths UMETA(DisplayName = "Glove Lengths"),
/* The position of the Thumb CMC Joint as determined by the CV Model. */
ThumbCmc UMETA(DisplayName = "Thumb CMC"),
NumberOfSensors UMETA(DisplayName = "Number Of Sensors"),
ImuCorrection UMETA(DisplayName = "IMU Correction"),
/* The position of the Thumb MCP Joint as determined by the CV Model. */
ThumbMcp UMETA(DisplayName = "Thumb MCP"),
/* Utility value used in iteration / checking lengths. */
AllC UMETA(DisplayName = "All C"),
/* The position of the Thumb IP Joint as determined by the CV Model. */
ThumbIp UMETA(DisplayName = "Thumb IP"),
/* The position of the Thumb tip as determined by the CV Model. */
ThumbTip UMETA(DisplayName = "Thumb Tip"),
/* The position of the Index MCP Joint as determined by the CV Model. */
IndexMcp UMETA(DisplayName = "Indexx MCP"),
/* The position of the Index PIP Joint as determined by the CV Model. */
IndexPip UMETA(DisplayName = "Index PIP"),
/* The position of the Index DIP Joint as determined by the CV Model. */
IndexDip UMETA(DisplayName = "Index DIP"),
/* The position of the Index fingertip as determined by the CV Model. */
IndexTip UMETA(DisplayName = "Index Tip"),
/* The position of the Middle MCP Joint as determined by the CV Model. */
MiddleMcp UMETA(DisplayName = "Middle MCP"),
/* The position of the Middle PIP Joint as determined by the CV Model. */
MiddlePip UMETA(DisplayName = "Middle PIP"),
/* The position of the Middle DIP Joint as determined by the CV Model. */
MiddleDip UMETA(DisplayName = "Middle DIP"),
/* The position of the Middle fingertip as determined by the CV Model. */
MiddleTip UMETA(DisplayName = "Middle Tip"),
/* The position of the Ring MCP Joint as determined by the CV Model. */
RingMcp UMETA(DisplayName = "Ring MCP"),
/* The position of the Ring PIP Joint as determined by the CV Model. */
RingPip UMETA(DisplayName = "Ring PIP"),
/* The position of the Ring DIP Joint as determined by the CV Model. */
RingDip UMETA(DisplayName = "Ring DIP"),
/* The position of the Ring fingertip as determined by the CV Model. */
RingTip UMETA(DisplayName = "Rint Tip"),
/* The position of the Pinky MCP Joint as determined by the CV Model. */
PinkyMcp UMETA(DisplayName = "Pinky MCP"),
/* The position of the Pinky PIP Joint as determined by the CV Model. */
PinkyPip UMETA(DisplayName = "Pinky PIP"),
/* The position of the Pinky DIP Joint as determined by the CV Model. */
PinkyDip UMETA(DisplayName = "Pinky DIP"),
/* The position of the Pinky fingertip as determined by the CV Model. */
PinkyTip UMETA(DisplayName = "Pinky Tip"),
/* Utility enumerator to check if an array contains enough values. */
All UMETA(DisplayName = "All"),
};
/* How much of the CV tracking is being used. Used by other APIs. */
UENUM(BlueprintType)
enum class ESGCVTrackingDepth : uint8
{
/* The default none value. */
None UMETA(DisplayName = "None"),
/* No computer-vision is enabled. */
Disabled UMETA(DisplayName = "Disabled"),
/* Use CV only for the wrist position/rotation. */
WristOnly UMETA(DisplayName = "Wrist Only"),
/* Use CV for both the wrist location and Hand Position. */
WristAndHandPose UMETA(DisplayName = "Wrist and Hand Pose"),
};
/* Specific devices within the SGCore library. */
@@ -123,13 +173,16 @@ enum class ESGDeviceType : uint8
Unknown UMETA(DisplayName = "Unknown"),
/* A Device that is in development, with direct access to sensor data and commands. */
BetaDevice UMETA(DisplayName = "BetaDevice"),
BetaDevice UMETA(DisplayName = "Beta Device"),
/* An exoskeleton glove that provides force- and haptic feedback. */
SenseGlove UMETA(DisplayName = "SenseGlove"),
SenseGlove UMETA(DisplayName = "Sense Glove"),
/* A soft glove with basic tracking, as well as force- and Haptic Feedback. */
Nova UMETA(DisplayName = "Nova"),
/* A soft glove with basic tracking, as well as force- and Haptic Feedback. */
Nova2 UMETA(DisplayName = "Nova 2"),
};
/* One of the fingers on the hand. */
@@ -185,6 +238,78 @@ enum class ESGFingerSolver : uint8
Interpolation UMETA(DisplayName = "Interpolation"),
};
/* Different types of Haptic Channels - with different behaviours. */
UENUM(BlueprintType)
enum class ESGHapticChannelType : uint8
{
/* The default none value. */
None UMETA(DisplayName = "None"),
/**
* This type of haptic channel can be constantly overridden. SGConnect will only send a command if a change occurs.
* Ideal for Force-Feedback.
*/
StreamingChannel UMETA(DisplayName = "Streaming Channel"),
/* These commands must be sent once, after their queue is cleared. */
FireAndForgetChannel UMETA(DisplayName = "Fire and Forget Channel"),
};
/* The Calibration State of this Glove. */
UENUM(BlueprintType)
enum class ESGHapticGloveCalibrationState : uint8
{
/* The default none value. */
None UMETA(DisplayName = "None"),
/* No idea what the calibrationState of this glove is... */
Unknown UMETA(DisplayName = "Unknown"),
/* One or more sensors still need to move... */
MoveFingers UMETA(DisplayName = "Move Fingers"),
/* All sensors have moved. */
AllSensorsMoved UMETA(DisplayName = "All Sensors Moved"),
/* Calibration is locked in. Done collecting Data. */
CalibrationLocked UMETA(DisplayName = "Calibration Locked"),
};
/* All of the locations supported by the SenseGlove API. */
UENUM(BlueprintType)
enum class ESGHapticLocation : uint8
{
/* The default none value. */
None UMETA(DisplayName = "None"),
/* Unknown location. Calling haptic function(s) with this parameter will not play anything. */
Unknown UMETA(DisplayName = "Unknown"),
/* <summary> Fingertip of the Thumb. */
ThumbTip UMETA(DisplayName = "Thumb Tip"),
/* Fingertip of the Index Finger. */
IndexTip UMETA(DisplayName = "Index Tip"),
/* Fingertip of the Middle Finger. */
MiddleTip UMETA(DisplayName = "Middle Tip"),
/* Fingertip of the Ring Finger. */
RingTip UMETA(DisplayName = "Ring Tip"),
/* Fingertip of the Pinky Finger. */
PinkyTip UMETA(DisplayName = "Pinky Tip"),
/* Vibration on the hand palm, close to the index finger. */
PalmIndexSide UMETA(DisplayName = "Palm Index Side"),
/* Vibration on the hand palm close to the pinky finger. */
PalmPinkySide UMETA(DisplayName = "Palm Pinky Side"),
/* Play this Haptic Effect on the whole hand. For General Hand Feedback. */
WholeHand UMETA(DisplayName = "Whole Hand"),
};
/* Indices to access DeviceList data in Shared Memory. */
UENUM(BlueprintType)
enum class ESGListFormat : uint8
@@ -202,6 +327,84 @@ enum class ESGListFormat : uint8
All UMETA(DisplayName = "All"),
};
/* State of the Nova's sensor Normalization. */
UENUM(BlueprintType)
enum class ESGNormalizationState : uint8
{
/* The default none value. */
None UMETA(DisplayName = "None"),
/* Unable to retrieve the state out of our Sensor Data :( */
Unknown UMETA(DisplayName = "Unknown"),
/* Developer has asked the glove to send raw data. */
SendingRawData UMETA(DisplayName = "Sending Raw Data"),
/* The glove is currently normalizing, but the fingers haven't moved enough. */
Normalizing_MoveFingers UMETA(DisplayName = "Normalizing: Move Fingers"),
/* Fires when all fingers have moved enough and you _could_ stop normalization
/// collection. */
Normalizing_AwaitConfirm UMETA(DisplayName = "Normalizing: Await Confirm"),
/* Normalization is completed. */
NormalizationFinished UMETA(DisplayName = "Normalization Finished"),
};
/* Used to access a sensor Movement of the Nova_SensorData class. */
UENUM(BlueprintType)
enum class ESGNovaSensorLocation : uint8
{
/* The default none value. */
None UMETA(DisplayName = "None"),
/* Sideways motion; finger splay, moving the thumb away from the hand palm. */
Abduction UMETA(DisplayName = "Abduction"),
/* Flexion of any sensor. */
Flexion UMETA(DisplayName = "Flexion"),
};
/* Used to access a sensor Movement of the Nova_SensorData class. */
UENUM(BlueprintType)
enum class ESGNova2SensorLocation : uint8
{
/* The default none value. */
None UMETA(DisplayName = "None"),
/* Sideways motion; finger splay, moving the thumb away from the hand palm. */
Abduction UMETA(DisplayName = "Abduction"),
/* Flexion of any sensor close to the thumb. */
FlexionProximal UMETA(DisplayName = "Flexion Proximal"),
/* flexion of any sensor further from the hub. */
FlexionDistal UMETA(DisplayName = "Flexion Distal"),
};
/* Which vibration motors to send vibrations to. */
UENUM(BlueprintType)
enum class ESGNova2VibroMotor : uint8
{
/* The default none value. */
None UMETA(DisplayName = "None"),
/* Not sure which motor this is meant for. */
Unknown UMETA(DisplayName = "Unknown"),
/* LRA Vibration Motor that is located on the thumb fingertip. */
ThumbFingertip UMETA(DisplayName = "Thumb Fingertip"),
/* LRA Vibration Motor that is located on the index fingertip. */
IndexFingertip UMETA(DisplayName = "Index Fingertip"),
/* LRA Vibration Motor that is located on the hand palm, roughly at the Index MCP joint. */
PalmIndexSide UMETA(DisplayName = "Palm Index Side"),
/* LRA Vibration Motor that is located on the hand palm, roughly at the Pinky MCP joint. */
PalmPinkySide UMETA(DisplayName = "Palm Pinky Side"),
};
/* Order of values as they come in from the Nova. */
UENUM(BlueprintType)
enum class ESGNovaCVar : uint8
@@ -233,17 +436,24 @@ enum class ESGNovaData : uint8
All UMETA(DisplayName = "All"),
};
/* Enumerators for Nova Data position in the parseable string. */
/* Which vibration motors to send vibrations to. */
UENUM(BlueprintType)
enum class ESGNovaSensorData : uint8
enum class ESGNovaVibroMotor : uint8
{
/* The default none value. */
None UMETA(DisplayName = "None"),
Sensors UMETA(DisplayName = "Sensors"),
Imu UMETA(DisplayName = "IMU"),
Battery UMETA(DisplayName = "Battery"),
All UMETA(DisplayName = "All"),
/* Not sure which motor to send this to. */
Unknown UMETA(DisplayName = "Unknown"),
/* Vibration motor located at the back of the hand. A.k.a. "The Thumper". */
BackOfHand UMETA(DisplayName = "Back of Hand"),
/* Vibration motor located at the tip of the thumb. */
ThumbTip UMETA(DisplayName = "Thumb Tip"),
/* Vibration motor located at the tip of the index finger. */
IndexFingertip UMETA(DisplayName = "Index Fingertip"),
};
/* Tracking Hardware used for positional tracking. */
@@ -279,9 +489,33 @@ enum class ESGSensorFormat : uint8
Sensors UMETA(DisplayName = "Sensors"),
};
/* Sense Glove C string Variables, enumerated for our convenience. */
UENUM(BlueprintType)
enum class ESGSenseGloveCVar : uint8
{
/* The default none value. */
None UMETA(DisplayName = "None"),
ID UMETA(DisplayName = "ID"),
GloveVersion UMETA(DisplayName = "Glove Version"),
FirmwareVersion UMETA(DisplayName = "Firmware Version"),
LeftRight UMETA(DisplayName = "Left Right"),
Functions UMETA(DisplayName = "Functions"),
GlovePos UMETA(DisplayName = "Glove Pos"),
/* All gloves have functionality up to this point. */
GloveLengths UMETA(DisplayName = "Glove Lengths"),
NumberOfSensors UMETA(DisplayName = "Number Of Sensors"),
ImuCorrection UMETA(DisplayName = "IMU Correction"),
/* Utility value used in iteration / checking lengths. */
AllC UMETA(DisplayName = "All C"),
};
/* Sense Glove sensor string Variables, enumerated for our convenience. */
UENUM(BlueprintType)
enum class ESGSVar : uint8
enum class ESGSenseGloveSVar : uint8
{
/* The default none value. */
None UMETA(DisplayName = "None"),
@@ -303,40 +537,6 @@ enum class ESGSVar : uint8
AllS UMETA(DisplayName = "All S"),
};
/* Anatomical movements of the thumb joints. */
UENUM(BlueprintType)
enum class ESGThumbMovement : uint8
{
/* The default none value. */
None UMETA(DisplayName = "None"),
/* Pronation/Supination of the first finger joint. */
CmcTwist UMETA(DisplayName = "CMC Twist"),
/* Flexion of the first finger joint. */
CmcFlexion UMETA(DisplayName = "CMC Flexion"),
/* Abduction of the first finger joint. */
CmcAbduction UMETA(DisplayName = "CMC Abduction"),
/* Flexion of the second thumb joint. */
McpFlexion UMETA(DisplayName = "MCP Flexion"),
/* Flexion of the third thumb joint. */
IpFlexion UMETA(DisplayName = "IP Flexion"),
};
/* How this Sense Glove converts sensor data into a HandPose. */
UENUM(BlueprintType)
enum class ESGThumbSolver : uint8
{
/* The default none value. */
None UMETA(DisplayName = "None"),
/* Hand angles are interpolated based on the total flexion / abduction of the exoskeleton. */
Interpolation UMETA(DisplayName = "Interpolation"),
};
/* A command to activate the SenseGlove Thumper module, which is responsible for wrist feedback. */
UENUM(BlueprintType)
enum class ESGSenseGloveThumperCommand : uint8
@@ -373,4 +573,90 @@ enum class ESGSenseGloveThumperCommand : uint8
/* A light vibration to cue the user that an object it picked up. 30% intensity. */
ObjectGrasp30 UMETA(DisplayName = "Object Grasp 30"),
};
};
/* The way handPoses are smoothed in this class. */
UENUM(BlueprintType)
enum class ESGSmoothingMethod : uint8
{
/**
* None. You'll always get the latest pose received. No performance increase, but might result in a "stop-motion"
* effect on lower frame-rates.
*/
None UMETA(DisplayName = "None"),
/**
* Pretend you're one sample behind, and interpolate along the exact paths. More accurate, but we will lag 1 frame
* behind.
*/
InterpolateBehind UMETA(DisplayName = "Interpolated Behind"),
/**
* Take the last two handPoses and estimate the current values based on extrapolation. Is perceived as "faster",
* but is more likely to overshoot during sudden changes in direction.
*/
ExtrapolateAhead UMETA(DisplayName = "Extraplate Ahead"),
};
/* Anatomical movements of the thumb joints. */
UENUM(BlueprintType)
enum class ESGThumbMovement : uint8
{
/* The default none value. */
None UMETA(DisplayName = "None"),
/* Pronation/Supination of the first finger joint. */
CmcTwist UMETA(DisplayName = "CMC Twist"),
/* Flexion of the first finger joint. */
CmcFlexion UMETA(DisplayName = "CMC Flexion"),
/* Abduction of the first finger joint. */
CmcAbduction UMETA(DisplayName = "CMC Abduction"),
/* Flexion of the second thumb joint. */
McpFlexion UMETA(DisplayName = "MCP Flexion"),
/* Flexion of the third thumb joint. */
IpFlexion UMETA(DisplayName = "IP Flexion"),
};
/* How this Sense Glove converts sensor data into a HandPose. */
UENUM(BlueprintType)
enum class ESGThumbSolver : uint8
{
/* The default none value. */
None UMETA(DisplayName = "None"),
/* Hand angles are interpolated based on the total flexion / abduction of the exoskeleton. */
Interpolation UMETA(DisplayName = "Interpolation"),
};
/* Waveform type for an advanced Buzz Command. */
UENUM(BlueprintType)
enum class ESGWaveformType : uint8
{
/* The default none value. */
None UMETA(DisplayName = "None"),
/* We're not sure what type of Waveform to use. */
Unknown UMETA(DisplayName = "Unknown"),
/* Smooth sine wave. */
Sine UMETA(DisplayName = "Sine"),
/* Can shift duty Cycle. */
Square UMETA(DisplayName = "Square"),
/* Inverse of SawDown. */
SawUp UMETA(DisplayName = "Saw Up"),
/* Inverse of SawUp. */
SawDown UMETA(DisplayName = "Saw Down"),
/* Triangle waveform. */
Triangle UMETA(DisplayName = "Triangle"),
/* A random, noisy signal. */
Noise UMETA(DisplayName = "Noise"),
};