Input Tech (Muscle Motion Sensor and Accel Gyro)

In games, especially those when we are housed within an avatar, we are often granted a set of hands to work with.
With them, we connect with a multitude of other virtual objects to accomplish our goals.

Situating an actual hand into the virtual world would require an emulation of its complex mechanisms.
This can be done by obtaining both the position of one's arm and the movements of its hands.
UnlimitedHand allows you to do so by means of it's Input Technology
consisting of an array of Muscle Motion Sensors and an Accelerometer-Gyro sensor.

In this tutorial, we will gain understanding of UnlimitedHand's Input Technology.

1.0 Detecting Hand and Finger Movements with Muscle Motion Sensors

An array of Muscle Motion Sensors are arranged on a V-shaped resin sheet to match with the position of key forearm muscles (Figure 1).
This enables the UnlimitedHand to optically read in the motion of your forearm muscles to deduce the movement of both hand and fingers.
channel_arrangement.png

Figure 1. Arrangement of Muscle Motion Sensors (When used on the Right Hand).

By monitoring serial values see (Figure 2) coming from specific Muscle Motion Sensor combinations,
one may track 3 main types of movements performed by the hand, see (Table 1).
Check Step 4. from this tutorial to make sure you are collecting Serial values from the device.
correspondence3.png

Figure 2. Correspondence between Serial Values and Muscle Motion Sensor Location (When used on the Right Hand).

The three movement types: Finger motion, Ulnar/Radial deviations and Wrist motions.
can monitored by addressing different combinations of Muscle Motion Sensor values.
Note: The information listed in the following table applies only when worn on the RIGHT HAND.
Points(channels) of Muscle Motion Sensors Hand Movements
Channel 0, 1, 2, and 3 Finger Motions
(it is changed by right or left hand)
Channel 4 and 7 Radial and Ulnar Deviation
(it is changed by right or left hand)
Channel 5 and 6 Open Hand and Wrist Motion(Extension)

Table 1. Muscle Motion Sensor Combinations to track specific Movement Type (When used on the Right Hand)

1.1 How to Use

Hackers of the UnlimitedHand may call the following functions to collect data from specific points(channels) on the device.

For Arduino Functions: initPR/ readPR/ readPR_array

For Unity Functions: updatePhotoSensors/ readPhotoSensors

For Processing Functions: readPhotoSensors/ updatePhotoSensors/ updatePhotoSensorsString

2.0 Tracking movement with the Accelerometer-Gyro sensor

As long as the UnlimitedHand is firmly strapped to your forearm, an Accelerometer-Gyro sensor embedded inside the main case of the device is able to track maneuvers and the position of your arm. Motions tracked can then be transferred into games to achieve real time interactions.

2.1 How to Use

Hackers of the UnlimitedHand may call the following functions to read in 3 dimensional Acceleration values representing maneuvers, as well as 3 separate angle values representing the orientation of your arm.

For Arduino Functions: setupAccelGyro/ initAccelGyroKalman/ readAccelGyro_XYZ_Kalman/
readRawAccelValues/ readRawGyroValues

For Unity Functions: readUHJointAngles/ updateAngle/
readUH3DAccel/ readGyro/ updateUH3DGyroAccel




Output Tech (EMS and Vibration Motor)

When your pair of hands reaches out to interact with objects or characters inside a virtual environment,
you may feel familiar and in control. However, the moment your virtual hand penetrates through your surroundings
without any regard to physical properties, that fragile immersion is instantly shattered.

The UnlimitedHand allows you to render Haptics into your interactive systems.
It is essentially a play of kinesthetic force where you decide how objects in a virtual environment
compute and actuate forces that budge against the presence of your hand.
In this tutorial, we will gain understanding of UnlimitedHand's Output Technology.

1.0 Electrode Arrangements

8 electrodes are embedded onto a V-shaped resin sheet to match with the position of key forearm muscles (Figure 1).
This enables the UnlimitedHand to pass currents into specific muscles on the wearer's forearm to trigger involuntary hand and finger movements.
Imagine the computer having a say over your the activity of your hand.
electrode_arrangement.png
Figure 1. Diagram of the arrangement of Electrodes on the back side of the UnlimitedHand (when used on the Right Hand)

The diagram below lists the 8 types of movement that is capable of being generated by the respective electrodes
Note that the information listed below applies only when worn on the RIGHT HAND.
electrode_correspondence.png
Figure 2. Electrode - Muscle Correspondence (When used on your right hand)

1.1 How to Use

Hackers of the UnlimitedHand may call the following functions to pass current into one or several electrodes at once.

For Arduino Functions:
initEMS / connectMUX / keepVoltage / updateEMS / updateEMS_HighVoltage / setEMS_LOW / setStimulationTime / setStimulationChannel / setStimulationVoltage

For Unity Functions:
stimulate(int padNum)/setLevelUp/setLevelDown

1.2 Fine Tuning Stimulations

The qualities of electrical stimulus can be tweaked to give off different sensations for the wearer. Intensity, duration and location of the stimulus are the three parameters that can be changed by the developer. With the following piece of code, you can experiment with the configurations.

2.0 Vibration Motor

A vibration motor is embedded into the main case of the device.
It comes in handy when you are not trying to generate hand movements,
but still wish to notify the wearer og a particular event. Depending on the nature of your interactive systems,
multiple vibration patterns can be configured to distinguish one event from another.

2.1 How to Use

Hackers of the UnlimitedHand may call the following functions to configure and/or trigger the vibrating motor.

For Arduino Functions:
SetupVibrationMotor / MoveVibrationMotor / onVibrationMotor / offVibrationMotor /