Data produced by the SmartEye module
SmartEye’s UDP interface carries several packet types; this module recognizes only its gaze packet (type 4) and silently ignores everything else, with nothing logged for a packet it discards. See Troubleshooting if nothing ever arrives.
Entity
A single entity per session, name SmartEye_Data, with a randomly generated id assigned once
when the module starts (not derived from anything SmartEye reports, and not stable across
restarts).
Gaze and pupillometry
Populated on GazeComponent: gaze_origin,
left_gaze_origin, right_gaze_origin, gaze_direction (+ quality), left_gaze_direction (+
quality), right_gaze_direction (+ quality), combined_eye_position, left_eye_position,
right_eye_position, left_eye_occluded, right_eye_occluded, has_glasses, blink. Gaze
origin and direction prefer SmartEye’s filtered values when present, falling back to the raw
values only when a filtered one is missing - not averaged or blended, one or the other per
field.
Populated on PupillometryDataComponent: combined, left and
right eyelid openness (+ quality), and combined, left and right pupil diameter (+ quality) - also
preferring SmartEye’s filtered values over raw when both are present.
Head pose
Populated on SpatialComponent.pose, from SmartEye’s head position plus orientation. Orientation
prefers SmartEye’s own quaternion output; if that field is absent but the Rodrigues rotation
vector is present, this module converts that vector to a quaternion itself. With neither
available, the pose still publishes with an identity (no rotation) orientation rather than being
omitted - a stationary-looking head orientation in the data is not necessarily a real one if
SmartEye stopped sending head rotation.
Drowsiness, emotion and speaking activity
Published as plain BiometricReading entries on
BiometricSensorComponent, named directly after SmartEye’s own field names - not translated into
descriptive names:
| Reading name(s) | What it is |
|---|---|
Drowsiness9Level, Drowsiness9LevelQ, Drowsiness9LevelStatus | SmartEye’s own 9-level drowsiness estimate and its quality/status codes |
Anger, Disgust, Happiness, Neutral, Sadness, Surprise, Valence, Mood (each with a matching ...Q quality reading) | SmartEye’s facial-emotion estimates |
DominantEmotion, DominantEmotionQ | An enumerated code for SmartEye’s own classification of the dominant emotion. This module does not decode which number means which emotion - that mapping is defined by SmartEye’s own documentation, not reproduced here |
Speaking, SpeakingQ | Whether SmartEye’s software detected the wearer speaking, published as 1.0/0.0 |
Every one of these is published whenever SmartEye sends it - there is no setting to publish gaze without also publishing the emotion or drowsiness readings. See Overview for the privacy implication.
What SmartEye provides but this module never publishes
SmartEye’s packet also carries head Euler angles (heading, pitch, roll) and nose/up/left-ear direction vectors, saccade and fixation event flags, a face-mask detection flag, a numeric tracking-state code, glasses-detection quality, eye-occlusion quality scores, frame rate, and a profile id. All of these are either parsed and then discarded, or not read from the packet at all - none reach any published component or reading in this version.