API reference¶
C++¶
-
class eyeware::TrackerClient¶
Class for connecting to the tracker server and retrieving its resulting tracking data.
It establishes communication to the tracker server (Eyeware Beam application) and provides synchronous access to the data. Those synchronous calls will return the last tracking data results received from the server.
A
network_error_handler
callback can be provided. Ifnullptr
is used (default), the network errors are ignored and the network connection is reestablished automatically when possible by the TrackerClient class instance. If a network handler is given, it will be called in case of errors (e.g., timeout). In such case, the TrackerClient instance becomes invalid and needs to be recreated to reestablish connection.Public Functions
-
TrackerClient(std::function<void(const NetworkError&)> network_error_handler = nullptr, int network_connection_timeout_ms = DEFAULT_NETWORK_TIMEOUTS_IN_MS, int tracking_info_network_timeout_ms = DEFAULT_NETWORK_TIMEOUTS_IN_MS, int base_communication_port = DEFAULT_BASE_COMMUNICATION_PORT, const char *hostname = "127.0.0.1")¶
- Parameters
network_error_handler – An optional callback function for managing connection to the server errors.
network_connection_timeout_ms – The time period (in ms) for an attempt to connect to the server, after which the network connection is treated as broken.
tracking_info_network_timeout_ms – The time period (in ms) for an attempt to obtain tracking info from the server, after which the network connection is treated as broken.
base_communication_port – Base connection port to the server. The instance may use base_communication_port+1 as well.
hostname – The hostname of the server to obtain tracking results from. Typically the same PC, thus “127.0.0.1”.
-
ScreenGazeInfo get_screen_gaze_info() const¶
Retrieves the most recent screen gaze tracking result.
-
HeadPoseInfo get_head_pose_info() const¶
Retrieves the most recent head pose tracking result.
-
bool connected() const¶
Whether this client is currently connected to the tracker server or not.
- Since
1.1.0
-
TrackerClient(std::function<void(const NetworkError&)> network_error_handler = nullptr, int network_connection_timeout_ms = DEFAULT_NETWORK_TIMEOUTS_IN_MS, int tracking_info_network_timeout_ms = DEFAULT_NETWORK_TIMEOUTS_IN_MS, int base_communication_port = DEFAULT_BASE_COMMUNICATION_PORT, const char *hostname = "127.0.0.1")¶
-
struct eyeware::HeadPoseInfo¶
Represents information of the head pose, for a given time instant.
Public Members
-
AffineTransform3D transform¶
Head pose, defined at the nose tip, with respect to the World Coordinate System (WCS).
-
bool is_lost = true¶
Indicates if tracking of the head is lost, i.e., if false, the user is not being tracked.
-
uint64_t track_session_uid = 0¶
Indicates the ID of the session of uninterrupted consecutive tracking.
-
AffineTransform3D transform¶
-
struct eyeware::ScreenGazeInfo¶
Represents information of a person gaze intersection with a single screen, for a given time instant. Screen gaze coordinates are expressed in pixels with respect to the top-left corner of the screen.
Public Members
-
uint32_t screen_id = 0¶
ID of the screen, to differentiate in case of a multiscreen setup.
-
uint32_t x = 0¶
The horizontal screen coordinate for the gaze intersection.
-
uint32_t y = 0¶
The vertical screen coordinate for the gaze intersection.
-
TrackingConfidence confidence = TrackingConfidence::UNRELIABLE¶
The confidence of the tracking result.
-
bool is_lost = true¶
Tracking status that tells if the other values are dependable.
-
uint32_t screen_id = 0¶
-
enum eyeware::TrackingConfidence¶
Realibility measure for obtained tracking results.
Values:
-
enumerator UNRELIABLE¶
-
enumerator LOW¶
-
enumerator MEDIUM¶
-
enumerator HIGH¶
-
enumerator UNRELIABLE¶
-
struct eyeware::AffineTransform3D¶
Representation of a 3D affine transform, composed by a rotation matrix and a translation vector as A = [R | t], where
R = [c_00, c_01, c_02 c_10, c_11, c_12 c_20, c_21, c_22],
t = [c_03, c_13, c_23].
-
using eyeware::Matrix3x3 = float[3][3]¶
Matrix of 3x3, implemented as an array of arrays (row-major).
Matrix3x3 my_matrix; // Assume a Matrix3x3 instance is available int row = 1; int col = 2; float coefficient = my_matrix[row][col];
-
struct eyeware::Vector3D¶
Representation of a 3D vector or 3D point.
Python¶
- class eyeware.client.TrackerClient¶
Class for connecting to the tracker server and retrieving its resulting tracking data.
It establishes communication to the tracker server (Eyeware Beam application) and provides synchronous access to the data. Those synchronous calls will return the last tracking data results received from the server.
A
network_error_handler
callback can be provided. IfNone
is used (default), the network errors are ignored and the network connection is reestablished automatically when possible by theTrackerClient
class instance. If a network handler is given, it will be called in case of errors (e.g., timeout). In such case, theTrackerClient
instance becomes invalid and needs to be recreated to reestablish connection.- Parameters
network_error_handler (Callable) – An optional callback function for managing connection to the server errors.
network_connection_timeout_ms (int) – The time period (in ms) for an attempt to connect to the server, after which the network connection is treated as broken.
tracking_info_network_timeout_ms (int) – The time period (in ms) for an attempt to obtain tracking info from the server, after which the network connection is treated as broken.
base_communication_port (int) – Base connection port to the server. The instance may use base_communication_port+1 as well.
hostname (str) – The hostname of the server to obtain tracking results from. Typically the same PC, thus “127.0.0.1”.
- property connected¶
Whether this client is currently connected to the tracker server or not.
New in version 1.1.0.
- get_head_pose_info(self: eyeware.client.TrackerClient) eyeware::HeadPoseInfo ¶
Retrieves the most recent head pose tracking result.
- get_screen_gaze_info(self: eyeware.client.TrackerClient) eyeware::ScreenGazeInfo ¶
Retrieves the most recent screen gaze tracking result.
- class eyeware.client.HeadPoseInfo¶
Represents information of the head pose, for a given time instant.
- property is_lost¶
Indicates if tracking of the head is lost, i.e., if
False
, the user is not being tracked.
- property track_session_uid¶
Indicates the ID of the session of uninterrupted consecutive tracking.
- property transform¶
Head pose, defined at the nose tip, with respect to the World Coordinate System (WCS).
- class eyeware.client.ScreenGazeInfo¶
Represents information of a person gaze intersection with a single screen, for a given time instant. Screen gaze coordinates are expressed in pixels with respect to the top-left corner of the screen.
- property confidence¶
The confidence of the tracking result.
- property is_lost¶
Tracking status that tells if the other values are dependable.
- property screen_id¶
ID of the screen, to differentiate in case of a multiscreen setup.
- property x¶
The horizontal screen coordinate for the gaze intersection.
- property y¶
The vertical screen coordinate for the gaze intersection.
- class eyeware.client.TrackingConfidence¶
Realibility measure for obtained tracking results.
Members:
UNRELIABLE
LOW
MEDIUM
HIGH
- class eyeware.client.AffineTransform3D¶
Representation of a 3D affine transform, composed by a rotation matrix and a translation vector as A = [R | t], where
R = [c_00, c_01, c_02 c_10, c_11, c_12 c_20, c_21, c_22],
t = [c_03, c_13, c_23].
- property rotation¶
Rotation matrix component.
- property translation¶
Translation vector component.
- class eyeware.client.Vector3D¶
Representation of a 3D vector or 3D point.
- property x¶
x coordinate.
- property y¶
y coordinate.
- property z¶
z coordinate.
Note
Matrix and vector types, such as the rotation and translation properties of AffineTransform3D
, can be transformed to NumPy arrays efficiently.
This is useful for using tracking data and coordinates in your application.
Example:
# Receive an AffineTransform3D instance
head_pose = tracker.get_head_pose_info()
# Transform the tracking information to standard NumPy arrays
import numpy as np
rotation_numpy = np.array(head_pose.rotation, copy=False)
translation_numpy = np.array(head_pose.translation, copy=False)
# Now we can manipulate tracking information to do several things:
# draw tracking coordinates on the screen, save them for statistics/heatmaps,
# perform arithmetic operations on them, trigger interactive behaviors based on thresholds, etc.