Processing

Please wait...

Settings

Settings

Goto Application

1. WO2020205767 - METHODS AND APPARATUS FOR GESTURE DETECTION AND CLASSIFICATION

Note: Text based on automatic Optical Character Recognition processes. Please use the PDF version for legal matters

[ EN ]

METHODS AND APPARATUS FOR GESTURE DETECTION AND CLASSIFICATION

CROSS REFERENCE TO RELATED APPLICATION

[0001] This application claims priority to U.S. Application No. 62/826,478, filed March 29, 2019, and U.S. Application No. 16/833,307, filed March 27, 2020. The contents of U.S. Application No. 62/826,478 and U.S. Application No. 16/833,307 are incorporated by reference in their entirety herein for all purposes.

BRIEF DESCRIPTION OF THE DRAWINGS

[0002] The accompanying drawings illustrate a number of exemplary embodiments and are a part of the specification. Together with the following description, these drawings demonstrate and explain various principles of the present disclosure.

[0003] FIG. 1 shows an example of a first component extracted from the application of the PCA.

[0004] FIG. 2 shows example clusters produced from the detected events.

[0005] FIG. 3 shows an example plot of the first component from a PCA performed over the detected discrete events.

[0006] FIGS. 4A - 4B illustrate epochs corresponding to discrete events showing synchronization quality aspects.

[0007] FIGS. 5A - 5B show aligned epochs corresponding to detected discrete events.

[0008] FIGS. 6A - 6B show templates corresponding to a PCA analysis performed over the average of two different gestures.

[0009] FIG. 7 shows example detected events on the first PCA component and respective labels generated from two seconds of data.

[0010] FIG. 8 shows an example of detection of discrete events using a testing set.

[0011] FIG. 9 shows an example of discrete events detected in a testing dataset.

[0012] FIGS. 10A - 10B show examples of an index finger tap event model and a middle finger tap event model.

[0013] FIGS. 11A - 11F show examples of user-specific event models for two classes of events.

[0014] FIG. 12 shows example accuracy levels achieved by various single user event classification models.

[0015] FIG. 13A shows example accuracy levels achieved by two single user event classification models.

[0016] FIG. 13B shows example accuracy levels versus time for two single user event classification models (single stamp and cumulative window size).

[0017] FIG. 14 shows a generalization across time executed to determine the independence of time samples.

[0018] FIG. 15 shows example accuracy levels for generalized cross-user classification models.

[0019] FIG. 16 shows an example of transferability of user specific classifiers based on linear regression.

[0020] FIGS. 17A - 17Q show example distributions of two classes of gestures.

[0021] FIGS. 18A - 18B show examples of separated clusters using UMAP and PCA.

[0022] FIG. 19 shows an example of accuracy levels achieved using a self-supervised model.

[0023] FIG. 20 shows an example of accuracy levels achieved using a supervised user specific models and a self-supervised user specific model, versus the number of training events.

[0024] FIG. 21 shows an example of window size determination for user specific and self-supervised models.

[0025] FIGS. 22A - 22D show example models of each event class associated with a first user.

[0026] FIGS. 23A - 23B show an example of aligned models of each event class associated with a first user and a second user.

[0027] FIGS. 24A - 24B show example data before and after transformation, respectively.

[0028] FIG. 25A shows an example transfer matrix across users from all users in a group of users.

[0029] FIG. 25B shows determination of data size fora supervised domain adaptation based on a transfer function.

[0030] FIG. 26A illustrates a wearable system with EMG sensors arranged circumferentially around an elastic band configured to be worn around a user's lower arm or wrist, in accordance with some embodiments.

[0031] FIG. 26B is a cross-sectional view through one of the EMG sensors illustrated in FIG. 2A.

[0032] FIGS. 27A and 27B schematically illustrate components of a computer-based system on which some embodiments are implemented. FIG. 27A illustrates a schematic of a control device of the computer-based system and FIG. 27B illustrates an example dongle portion that may be connected to a computer, where the dongle portion is configured to communicate with the control device (and a similar configuration may be used within a head-mounted device in communication with the control device).

[0033] FIG 28 shows an example implementation wherein a wearable device interfaces with a head-mounted wearable display.

[0034] FIG. 29 and FIG. 30 illustrate example methods.

[0035] FIG. 31 is an illustration of exemplary augmented-reality glasses that may be used in connection with embodiments of this disclosure.

[0036] FIG. 32 is an illustration of an exemplary virtual-reality headset that may be used in connection with embodiments of this disclosure.

[0037] Throughout the drawings, identical reference characters and descriptions indicate similar, but not necessarily identical, elements. While the exemplary embodiments described herein are susceptible to various modifications and alternative forms, specific embodiments have been shown by way of example in the drawings and are described in detail herein. However, the exemplary embodiments described herein are not intended to be limited to the particular forms disclosed. Rather, the present disclosure covers all modifications, equivalents, and alternatives falling within the scope of the appended claims.

DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS

[0038] Examples of the present disclosure are directed to detection of signals from a user and control of an artificial reality device based on the detected signals. As is explained in greater detail below, embodiments of the present disclosure may include systems having a head-mounted device configured to present an artificial reality view to a user and a control device including a plurality of electromyography (EMG) sensors. One or more processors, that may be located in any system component, may be programmed to detect EMG signals corresponding to user gestures associated with the EMG data received from the sensors and to classify the EMG signals to identify gesture types. The control signal may trigger the head-mounted device to modify the artificial reality view, for example, based on the gesture type(s).

[0039] Accurate control of objects (real or virtual) within an artificial reality environment may be useful to maintain an immersive experience. Gestures may be a useful way of controlling objects and need not require interaction with any real physical object. For example, actions such as pressing the key of a keyboard, turning a dial, pressing a button, selecting an item from a menu (among many other actions) may be simulated by a user gesture. A tapping gesture may simulate a key press. Furthermore, identification of which body part (e.g., which finger) has been used to perform a gesture allows further control of an artificial reality environment.

[0040] Features from any of the embodiments described herein may be used in combination with one another in accordance with the general principles described herein. These and other embodiments, features, and advantages will be more fully understood upon reading the following detailed description in conjunction with the accompanying drawings and claims.

[0041] The following provides, with reference to FIGS. 1-30, detailed descriptions of gesture-identification models, including unsupervised and self-supervised models. FIGS. 1-13B illustrate event detection and classification, where the term "events" may include gestures such as finger taps. FIGS. 14 - 25B further illustrate time-dependence, clustering, training, and accuracy of various models. FIGS. 26A - 26B illustrate an example control device. FIG. 27A - 27B illustrate a schematic of a control device. FIG. 28 illustrates an example system including a head-mounted device. FIGS. 29 - 30 illustrate example computerized methods, and FIGS. 31 and 32 illustrate example AR/VR applications.

[0042] This disclosure is directed to event detector models that may be used to detect user gestures. Such detector models may involve recording a series of EMG signals (datasets) while one or more users perform different gestures. In some examples, example gestures may include finger taps (e.g., simulated keypresses), but other types of gestures may analogously be used to implement example event detector models.

[0043] Gestures may include discrete events that span a finite period of time and may be characterized, in some embodiments, by one or more electromyography signals (including electromyography wavelets) representing muscle activations. Configuring systems to detect and classify such gestures using machine learning techniques may involve a significant amount of labeled training samples. Hence, systems that may rapidly learn gestures from few samples and capture and interpret meaningful features from human gestures in an unsupervised or self-

supervised way are highly desirable. Examples described herein provide such unsupervised and/or self-supervised models.

[0044] FIG. 1 shows a first component that may be extracted from the application of a principal component analysis (PCA, vertical lines), and detected peaks (dots). Multiple events are shown, divided into two groups separated by a rest period. The illustrated events may be detected using a peak detection process, which may also detect peaks registered during the resting period, corresponding to local maxima during rest.

[0045] The dataset may include EMG signals corresponding to index and middle finger taps. The dataset may be divided into a training set including 50 consecutive finger taps for each finger, recorded at approximately 2 Hz, and a test set including 20 consecutive finger taps for each finger, recorded at approximately 2 Hz. The above datasets may represent less than 2 minutes of recorded data. Any other suitable data sets may also be used as a training set.

[0046] A covariance mapped to the tangent space may be selected as a feature. A short time window (30 ms) and a stride of 5 samples, corresponding to a data rate of 400Hz, may be used for the feature extraction. The dimensionality of the feature space may be reduced to find events in the dataset through the application of a Principal Component Analysis (PCA) on 5 components. Thereafter, the data may be centered (e.g., by removing the median) and finally, the local maximum (peak) may be identified on the first component.

[0047] FIG. 2 shows clusters that may be produced from the detected events (including detected events registered during the resting period). Three clusters are shown, one for each type of finger tap (data groups 100 and 102, corresponding to index and middle finger taps). An extra cluster may arise for those events registered during the resting period (that may not be considered to be useful events). This extra cluster 104 may be located in the lower left corner, indicating a cluster with low energy samples. This cluster may be removed by dropping all corresponding events below, for example, a predetermined energy level threshold.

[0048] Data around each event may be sliced in epochs in preparation for the cluster analysis. In one example, a window of 150ms may be centered around each event to slice the data, and any other suitable window size may be used in a similar manner. Thereafter, each of the epochs may be vectorized and subjected to a K-Means clustering process to extract the three clusters. For visualization purposes, a dimensionality reduction process based on Uniform Manifold Approximation and Projection (UMAP) may be applied to plot the clusters shown in FIG. 2, including approximately fifty events for each class of event.

[0049] FIG. 3 shows a plot of the first component from a Principal Component Analysis (PCA), which may be performed over the detected discrete events. The data may be plotted with respect to the first component resulting from a Principal Component Analysis. In this example, index finger events are shown first (on the left), followed by the resting period, and then the middle finger events on the right.

[0050] In some examples, timing adjustments may be performed on the registered events. The timing of each event may be associated with the local maxima on the first component identified using the execution of a PCA analysis. The ground truth may then be generated from the acquired samples to train an event detection model.

[0051] FIGS. 4A and 4B illustrate epochs corresponding to discrete events showing synchronization quality aspects. Some jitter and misalignment of the different epochs may be present.

[0052] In some examples, jitter and misalignments may be reduced or eliminated by finding an optimal offset for each epoch by analyzing the autocorrelation between the epoch and the average across all the event. Accordingly, different offsets (-10 to 10 samples) may be tested, and the timing that maximizes the correlation may then be selected. The testing process may be executed iteratively until all epochs are properly aligned.

[0053] FIG. 5A and 5B show aligned epochs corresponding to detected discrete events.

[0054] FIGS. 6A and 6B show plots of two templates corresponding to a PCA analysis which may be performed over the average of two different gestures. FIG. 6A corresponds to index finger tap data, and FIG. 6B corresponds to middle finger tap data. The templates may be based on the average energy of each event's epoch obtained after synchronization. The first PCA component (from five components of a PCA) may significantly differ in amplitude between the two finger taps (index vs. middle), and the other components may have different signal forms.

[0055] A binary time series may be labeled with a value of one when an event is detected (the event occurred) and a zero when the event is not detected (e.g., the event may not have occurred). A model to predict such a time series may be trained based on the labeled samples. The output of the model then may be compared against a predetermined energy threshold and debounced to configure the event detector.

[0056] Exemplary parameters may be configured for the model's ground truth. After re-synchronization, the events may be centered around the peak of the first PCA component. The model may rely on the full event time course, and the model may predict the event once a user finished its execution. Accordingly, the labels may be shifted or offset based on the event timing. This parameter may be referred to as "offset."

[0057] In some examples, the model may not perfectly predict the right single time sample corresponding to an event. Accordingly, the model may be configured to predict a value, such as 1, on several consecutive time samples surrounding the center of the event. This parameter may be referred to as a "pulse width."

[0058] In some examples, the offset may be set at 75 ms after the event peak (approximately 30 samples after the event's peak) and the pulse width may be set as 25 ms. These examples, and other examples, are non-limiting, and other parameter values may be used depending of particularities of the signals used during the training of the event detector model.

[0059] FIG. 7 illustrates events that may be detected using the first PCA component, with respective labels, that may be generated for 2 seconds of data. The event detector model may be implemented as a multilayer perceptron (MLP) model or other suitable machine learning model. Features may be collected from a 150 ms (approximately 60 samples) sliding window over the PCA features (e.g., for each time sample a vector with a vectorization of the previous 60 time samples of the five PCA components (i.e., 300 dimensions) may be generated).

[0060] The model may be trained to predict the labels used. The model may be applied on a test set, and the inferenced outputs may be compared to a predetermined threshold and debounced to elicit the identification of discrete events.

[0061] FIG. 8 illustrates detection of discrete events on a test set, including two outputs from the model (solid lines), as well as discrete events (dashed lines) that may be produced from the test set.

[0062] FIG. 9 illustrates that discrete events may be detected in a test dataset, including, for example, five components produced using a PCA analysis conducted over the test set, and events that may be detected in the same set. All possible events may be detected by the model, and there may be clear disambiguation between the two types of discrete events.

[0063] In some examples, events may be classified from snapshots taken from the EMG signals. Snapshots taken around the time events may be detected or registered by the event detector. The event classifier model may be trained to distinguish between different types or classes of events. Such a classification is possible in part because each event is associated with a class or type of event corresponding to a characteristic or stereotypical signal associated with specific muscle activations synchronized with the occurrence of the event. Eighteen datasets may be used, and each dataset may be gathered from a different user. The datasets include recordings of EMG signals capture from key down, key up, and tap events. The total number of events used per user may be approximately 160 (80 for each finger index and middle).

[0064] The covariance may be estimated using a 40ms time window and a stride of

2.5 ms, resulting from a feature sampling frequency of 400Hz. The covariances may be then

projected in the tangent space, and the dimension may be reduced by selecting the diagonal and two adjacent channels (represented in the matrix by the values located above and below the diagonal). A feature space of a dimension size of 48 is produced by the application of the above operations.

[0065] A window of signal ranging from -100ms to +125ms around each key press event may be extracted (e.g., sliced and buffered). Such windows may include approximately 90 EMG sample values. At the end of the aforementioned operations, a dataset of size 160 x 90 x 48 (N_events x N_time_samples x N_features) may be obtained for each user.

[0066] FIGS. 10A and 10B show examples of an index finger tap event model and a middle finger tap event model, respectively. Models of each event may be produced by averaging the EMG values of each event class (e.g., index tap and middle tap) for all occurrences of such events. Examples of the tap events are shown in FIGS. 10A and 10B.

[0067] In the event models shown in FIGS. 10A and 10B, two signals may be identified, one corresponding to the key press and one for the key release. The same features may appear to be active in both the index finger key press class and the middle finger key press class, but their respective amplitudes vary appreciably and provide a good basis for discrimination.

[0068] FIGS. 11A - 11F illustrate examples of user-specific event models for two classes of events. FIGS. 11A, 11C, and HE correspond to index keypresses, and FIGS. 11B, 11D, and 11F correspond to middle finger keypresses. Each user may show different patterns for each event class. While the timing is generally the same, great differences in amplitude may be observed among signals.

[0069] Several classification models may be used to implement single user event classification models. In some examples, each trial may be vectorized into a large vector (with dimensions corresponding to number of times points x features). Once such large vectors are generated, a classifier may be produced based on logistic regression, random forest, or multilayer perceptron, and may be implemented in a gesture classification model.

[0070] In some examples, the dimensionality of the data (on the feature dimension) may be reduced by applying a spatial filter then, vectorizing the result and using a classifier. Examples of spatial filters may be based, for example, on extraction of Common Spatial Patterns (CSP), or xDawn enhancement of evoked potentials in ensemble with a Linear Discriminant Analysis (LDA). Through the application of CSP, a subspace that maximizes the difference in variance of the sources may be determined. In an xDawn approach, spatial filters may be estimated from class averages rather than raw data (which may increase the signal-to-noise ratio (SNR)).

[0071] In some examples, a model may be developed by a method including one or more of the following approaches: concatenating an event model of each class (e.g., middle finger keypress and index finger key press) to each trial; estimating the covariance matrix; tangent space mapping, and applying LDA. Such approaches may produce a compact representation of the signal, and may be effective with low SNR.

[0072] A stratified random split with 90% training and 10% test may be used in part to conserve class balance. A random split may also be used. A 99% accuracy in average across users may be achieved using the linear regression classifier, with 95% for the worst user.

[0073] FIG. 12 shows accuracy levels achieved by each of the tested models for single user event classification. Each dot in the plot represents a single user. The classifiers may generally perform at analogous accuracy levels to those shown in FIG. 12.

[0074] Training set size may be modified. The size of the training set may be changed in the split, from 5% to 90%. The amount of test data may remain fixed at 10%. Two classifiers may be used, LR and XDCov + LDA. Ten stratified random splits with 10% test and variable train size may be used for cross validation.

[0075] A plateau of accuracy may be reached at around 80 events. Twenty events may be used to achieve an accuracy of 95% with a classifier based on logistic regression. The classifier based on XDCov + LDA may take a greater number of events to converge.

[0076] FIG. 13A shows example accuracy levels that may be achieved by two different implementations of single user event classification models, as a function of the number of training events. Results are shown for LR (solid line) and XDCov+LDA (dashed line) approaches. The remaining dashed and dotted lines give a qualitative indication of possible uncertainties for the LR results (upper dotted line and generally lower middle dashed line) and XDCov+LDA results (remaining dashed line and lower dotted line).

[0077] Window size may also be adjusted. The size of the window used to classify the event may impact the latency of the event detection. Accordingly, the model's performance may vary depending on the window size parameter, which may be adjusted accordingly.

[0078] In some implementations, a single time point for the classification may be used to uncover which time point contains information. Alternatively, an increasing window size

(containing all past time points), from, for example, -100ms to +125ms after the keypress event may be used. For each time point or window size, a user specific model may be trained, and the performance of the resulting classifier(s) or mode(s) may then be evaluated. A logistic regression model or other suitable model, as discussed above, may be used to implement a classifier. Cross validation may be achieved using 10 stratified random splits with 10% reserved for testing purposes and 90% used for of training purposes. These numerical values, and other values discussed herein, are exemplary and not limiting.

[0079] FIG. IBB shows example accuracy levels that may be achieved by a single time stamp and a cumulative window size. The results indicate that most time points in the window may contain information that allow the model to classify them above the chance level (with, e.g., approx. 50% accuracy). Maximum accuracy may be reached at -25 ms for a key press, and around +70 ms for key release. Using a cumulative window including all past time samples, a maximum accuracy level may be reached at the end of the window. An average accuracy level of 95% may be reached using all timestamps before the key press event. Waiting for the release wave may boost the accuracy by providing complementary information. The remaining dashed and dotted lines represent a qualitative indication of possible uncertainties.

[0080] A generalization across time may be used to determine how independent time samples. As part of the generalization across time, a classifier may be trained at a single time point, and then the classifier may be tested at another time point. This approach may determine if the different processes involved in the event are stationary. If the same combination of source is similarly active across two different time points, then it may be implied that the single user model may be transferred or used to classify events produced by other users.

[0081] A classifier based on logistic regression may be trained for each user and each time point. The accuracy of each classifier may then be evaluated for every other time point (for the same user). The accuracy across all users may then be averaged, as well as the structure of the accuracy matrix.

[0082] FIG. 14 shows a generalization across time that may be executed to determine the independence of time samples. Two clusters may be observed in the accuracy matrix, one corresponding to the key press and another corresponding to the key release. From the observed transfer within each of the clusters, it may be implied that each time sample does not carry much complementary information, and that using a carefully selected subset of samples may be sufficient to achieve an optimal accuracy (or alternatively, compressing the feature space with Singular Value Decomposition SVD may be useful).

[0083] In some examples, generalized cross-user classification models may be used. A classifier may be trained with the data collected from several users, and the trained classifier obtained may be tested for its performance on a test user. As discussed above, several types of classifiers may be implemented to determine an optimal type of classifier. Data extracted from one user may be left out for cross validation purposes. On average, the accuracy achieved across the implemented models may be around 82%. A large variance across users may also be observed.

[0084] FIG. 15 illustrates accuracy levels of generalized cross-user classification models, and shows that some classifiers may reach 100% accuracy, while others may only reach an accuracy below 60%. FIG. 16 also indicates that reasonable accuracy levels may be achieved using classifiers based on linear regression.

[0085] In some examples, model transfer across pairs of users may be used. A classifier model may be trained based on data extracted from one user, and then the accuracy of the model may then be evaluated in relation to the data for every other user. The classifier model may be based on logistic regression.

[0086] FIG. 16 illustrates transferability of user specific classifiers based on linear regression, showing that a large variability of transfer accuracy may be observed. Some user specific models may adequately be transferred to some other users. Some user specific models appear to be good recipients (e.g., the user model for "Alex" shown in FIG. 16) with good transfer to most other users, while other user specific models (e.g., the user model for "Rob") do not appear to have a good match with other users.

[0087] In some examples, user adaptation may also be used. Based on the investigation of single user event classification models, even classes derived from a single user may be separated, and a relatively small amount of labeled training data may be used to obtain a reasonably accurate single user event classification model.

[0088] From the generalized cross-user classification model results, it may be inferred that some user specific classification models transfer adequately to other users. Based on these initial results, the following examples follow. In some examples, models from other (different) users may be used get a good estimate of labels for a present user. Also, using this estimation of labels, a user specific model may be trained to obtain a performance close to that of a single user model trained with labeled data.

[0089] User embedding may also be used. An embedding space where the two event classes may be clustered may be generated. The user transfer matrix suggests that, for each test user, there are generally some (e.g., two) single user models that may adequately transfer. A user embedding space including the outputs of a collection of single user models may be constructed. Specifically, a simple nearest-centroid classifier over a covariance feature (XDCov + MDM) may be built. The advantage of the XDCov + MDM approach with respect to linear regression or other alternative probabilistic models is that an event may still contribute to cluster separability even if the model may be calibrated inappropriately.

[0090] The output of the XDCov + MDM model may be a function of the softmax applied over the distance to the centroid of each event class. In some examples (e.g., binary classifications), one dimension may be used for each user specific mode. The number of dimensions, however, may be extended depending on the classification type, such as a classification that may be made from a pool of more than two possible classes, for example, greater than a binary classification.

[0091] The embedding associated with a user may be trained with samples derived from all the users, minus one user, from a group of users. Thereafter, the samples associated with the user not used in the training of the embedding may be projected into the trained

embedding. Thus, a space of X-l dimensions may be produced, where X is the number of users from the group of users.

[0092] FIGS. 17A - 17Q show example distributions of the two classes of gestures (index finger taps and middle finger taps), for each dimension. A separation of the two classes may be distinguished in some models, while other models show approximately identical distributions. In some examples, when the models are not optimally calibrated, (i.e. the optimal separation between the class may not be at 0.5), the model may still effectively separate the two classes.

[0093] After producing the embedding as discuss above, a clustering process may be executed to separate the clusters corresponding to the different types of event classes (such as index finger tap and middle finger tap or pinches or snaps or other gesture types to be separated). For example, a K-means process may be run on the set of data points produced using the embedding.

[0094] FIGS. 18A and 18B illustrate examples of separated clusters using UMAP and PCA, showing that such clusters may be plotted using either Uniform Manifold Approximation and Projection (UMAP), as in FIG. 18A, or Principal Component Analysis (PCA), as shown in FIG. 18B. A number of clusters (e.g., two clusters) may be seen, which may each correspond to a different event class (such as a gesture type) and a different label. As the embedding space conveys a meaning (which may be termed "proba"), each cluster may be associated with their corresponding class.

[0095] A self-supervised user model may also be developed. After a set of labels may be produced using, for example, the clustering technique, such labels may be used to train a user specific model from the original dataset. An XDCov and a linear displacement analysis, or other suitable classification model may be implemented, for example, if it is known that the chosen classification model does not overfit the model substantially and may be insensitive to noise included in the labeled data.

[0096] FIG. 19 illustrates example accuracy levels achieved using a self-supervised model, showing that an approximately 99% accuracy on the estimation of labels or classification may be achieved after training the self-supervised model. In this example, two training iterations may be sufficient.

[0097] An accuracy of 98% may be achieved using the full training set, which may include the data points of all the users from the group of users.

[0098] FIG. 20 illustrates accuracy levels achieved using a supervised user specific model and a self-supervised user specific model, showing that the self-supervised model performs better than a user specific model trained with labeled data. The remaining dashed and dotted lines give a qualitative indication of possible uncertainties.

[0099] The window size may be adjusted to improve the performance of the self-supervised model. Observing the accuracy of the self-supervised model as the window size increases may be used to determine an optimal window size. Data from one user may be omitted for cross validation of the model. For the clustering and user specific model, a 10 fold random split with 10% of test data and 90% training data may be used. In this case, it may be determined that the self-supervised model performed better with a full window size. This may be explained by the observation that, in this instance, a small window size did not produce a separable cluster. Accordingly, a large window size may be used to obtain labeled data, then a user specific model may be trained using a relatively small window size, for example, using the labels.

[0100] FIG. 21 illustrates window size determination for a user specific (solid line) and a self-supervised model (lower dashed line). The remaining dashed and dotted lines give a qualitative indication of possible uncertainties.

[0101] A similar approach may be used to study data size effects. An ensemble of single user models may be used to evaluate performance. Cross validation may include leaving one user out for the alignment, then using the same 10 fold random split with 10% of test data and an increasing training size from 5 to 90%. The ensemble approach may reach an accuracy of 96% after 30 events, and then the accuracy may plateau after that for larger numbers of events.

[0102] Supervised domain adaptation may use a Canonical Partial Least Square (CPLS) model. In some examples, a method based on domain adaptation may be used instead of building a user specific model, for example, by determining a data transformation that may result in adequate transfer across users. A CPLS model may be used to perform the domain adaptation. A transformation function may be determined to align models of each event class (e.g., different gesture types such as index finger tap, middle finger tap, index finger to thumb pinch, middle finger to thumb pinch, finger snap, etc.) for one user with models for each event class of another user.

[0103] FIG. 22A - 22B illustrate models of each event class associated with a first user. [0104] FIGS. 22C - 22D illustrate models of each event class associated with a second user.

[0105] FIGS. 2SA - 2SB show the alignment of models for event classes associated with the first user and the second user, showing that models of event classes for one user may be aligned with corresponding models of event classes for another user. The vertical dashed lines correspond to the key press. The alignment may be efficient, in part because the original models of each event classes of the two users may be substantially different, yet they may become nearly identical after alignment.

[0106] Data distribution after alignment may be studied by considering the UMAP embedding of the data before and after transformation.

[0107] FIGS. 24A - 24B show example data before and after transformation. FIG. 24A shows that the original data may be unambiguously separated, and the largest variation may be seen across the two users. After transformation, the two event classes of events may match at a high degree of accuracy, for example, as shown in FIG. 24B.

[0108] The transformation process for each pair of users from the group of users may be studied. The user-to-user transfer matrix may be reproduced after performing the alignment. A single user model may be trained, and then for each test user, the data may be aligned, and the accuracy of the model may be tested on the transformed data. Cross validation may include, for a test user, estimating the event class model on the first 40 events (or other number of events), then performing domain adaptation, and finally testing the accuracy of the model on the remaining events (e.g., 120 events). Numerical values used in these (and other) examples are exemplary and not limiting.

[0109] FIG. 25A illustrates the transfer across users, from all users in a group of users, showing that the process may enhance the transfer of a single user model to any other users.

[0110] The amount of data needed to reach optimal adaptation may be determined. Performance evaluation may be made using an ensemble of a single user model, in part because it may be possible to adapt data between pairs of users. Cross validation may include leaving one user out of the alignment, and thereafter using a 10 fold random split with 10% of test data and increasing the training size from 5 to 90%. Numerical values are exemplary and not limiting.

[0111] FIG. 25B illustrates determination of data size for a supervised domain adaptation based on a transfer function, showing accuracy versus the number of training events. The results show that the ensemble may reach an accuracy of 96% after 30 events, and may plateau after that. The remaining dashed and dotted lines give a qualitative indication of possible uncertainties.

[0112] FIGS. 26A - 26B illustrate an example device, that may include one or more of the following: a human-machine interface, an interface device, a control device, and/or a control interface. In some examples, the device may include a control device 2600, which in this example (as shown in FIG. 26A) may include a number of (e.g., 16) neuromuscular sensors 2610 (e.g., EMG sensors) arranged circumferentially around an elastic band 2620 configured to be worn around a user's lower arm or wrist. In some examples, EMG sensors 2610 may be arranged circumferentially around elastic band 2620. The band may include a flexible electronic

connection 2640 (shown in FIG. 26B), which may interconnect separate sensors and electronic circuitry that may, in some examples, be enclosed in one or more sensor housings 2660. Each sensor 2610 may have a skin contacting portion 2650, which may include one or more electrodes. Any suitable number of neuromuscular sensors 2610 may be used. The number and arrangement of neuromuscular sensors may depend on the particular application for which the control device is used. For example, a wearable control device configured as an armband, wristband, or chest-band may be used to generate control information for controlling an augmented reality system, controlling a robot, controlling a vehicle, scrolling through text, controlling a virtual avatar, or any other suitable control task. As shown, the sensors may be coupled together using flexible electronics incorporated into the wireless device.

[0113] FIG. 26B illustrates a cross-sectional view through one of the sensors 2610 of the control device 2600 shown in FIG. 26A. The sensor 2610 may include a plurality of electrodes located within a skin-contacting surface 2650. The elastic band 2620 may include an outer flexible layer 2622 and an inner flexible layer 2630, that may at least in part enclose a flexible electrical connector 2640.

[0114] In some embodiments, the output of one or more of the sensing components may be optionally processed using a hardware-based signal processing circuit (e.g., to perform amplification, filtering, rectification, and/or another suitable signal processing function). In some embodiments, at least some signal processing of the output of the sensing components may be performed in software. Thus, signal processing of signals sampled by the sensors may be performed in hardware, software, or by any suitable combination of hardware and software, as

aspects of the technology described herein are not limited in this respect. A non-limiting example of an analog circuit used to process signal data from sensors 2610 is discussed in more detail below, with reference to FIGS. 27A and 27B.

[0115] FIGS. 27A and 27B illustrate a schematic diagram with internal components of an apparatus that may include one or more EMG sensors, such as, for example, 16 EMG sensors. The apparatus may include a wearable device, such as control device 2710 (shown schematically in FIG. 27A), and a dongle portion 2750 (shown schematically in FIG. 27B) that may be in communication with the control device 2710 (e.g., using BLUETOOTH or another suitable short range wireless communication technology). In some examples, the function of the dongle portion (e.g., a similar circuit as that shown in FIG. 27B) may be included within a head-mounted device, allowing the control device to communicate with the head-mounted device.

[0116] FIG. 27A shows that the control device 2710 may include one or more sensors 2712, for example, the sensors 2610 described above in connection with FIGS. 26A and 26B. The sensors may each include one or more electrodes. The sensor signals from the sensors 2712 may be provided to analog front end 2714, that may be configured to perform analog processing (e.g., noise reduction, filtering, etc.) of the sensor signals. The processed analog signals may then be provided to analog-to-digital converter (ADC) 2716, which may convert the processed analog signals to digital signals, that may then be further processed by one or more computer processors. An example computer processor, that may be used in accordance with some embodiments, may include a microcontroller (MCU), 2722. The MCU 2722 may also receive signals from other sensors (e.g., an inertial sensor such as inertial measurement unit (IMU) sensor 2718, or other suitable sensors). The control device 2710 may also include, or receive power from, a power supply 2720, that may include a battery module or other power source. The output of the processing performed by MCU 2722 may be provided to antenna 2730 for transmission to the dongle portion 2750 shown in FIG. 27B.

[0117] FIG. 27B shows that dongle portion 2750 may include an antenna 2752, that may be configured to communicate with antenna 2730 associated with control device 2710. Communication between antennas 2730 and 2752 may occur using any suitable wireless technology and protocol, non-limiting examples of which include radiofrequency signaling and BLUETOOTH. As shown, the signals received by antenna 2752 of dongle portion 2750 may be received by a BLUETOOTH radio (or other receiver circuit), and provided to a host computer through output 2756 (e.g., a USB output) for further processing, display, and/or for effecting control of a particular physical or virtual object or objects.

[0118] In some examples, the dongle may be inserted into a separate computer device, that may be located within the same environment as the user, but not carried by the user. This separate computer may receive control signals from the control device and further process these signals to provide a further control signal to the head-mounted device. The control signals may trigger the head-mounted device to modify the artificial reality view. In some examples, the dongle (or equivalent circuit in a head-mounted device or other device) may be network enabled, allowing communication with a remote computer through the network, and the remote computer may provide control signals to the head-mounted device, to trigger the head-mounted device to modify the artificial reality view. In some examples, a dongle may be inserted into a head-mounted device to provide improved communications functionality, and the head-mounted device may perform further processing (e.g., modification of the AR image) based on the control signal received from the control device 2710.

[0119] In some examples, the configuration of the dongle portion may be included in a head-mounted device, such as an artificial reality headset. In some examples, the circuit described above in FIG. 27B may be provided by (i.e., integrated within) components of the head-mounted device. In some examples, the control device may communicate with the head-mounted device using the described wireless communications, and/or a similar schematic circuit, or a circuit having similar functionality.

[0120] A head-mounted device may include an antenna similar to antenna 2752 described above in relation to FIG. 27B. The antenna of a head-mounted device may be configured to communicate with the antenna associated with the control device. Communication between antennas of the control device and the head-mounted device may occur using any suitable wireless technology and protocol, non-limiting examples of which include radiofrequency signaling and BLUETOOTH. Signals, such as control signals, received by an antenna of a head-mounted device may be received by a BLUETOOTH radio (or other receiver circuit) and provided to a processor within the head-mounted device, that may be programmed to modify an artificial reality view for the user in response to the control signals. The control signal may trigger the head-mounted device to modify the artificial reality view presented to the user, for example, in response to a detected gesture type.

[0121] An example device may include a control device and one or more devices (such as one or more dongle portions, headsets, remote computer devices, and the like) in communication with the control device (e.g., via BLUETOOTH or another suitable short-range wireless communication technology). The control device may include one or more sensors, which may include electrical sensors including one or more electrodes. The electrical outputs from the electrodes, which may be referred to as sensor signals, may be provided to an analog circuit configured to perform analog processing (e.g., filtering, etc.) of the sensor signals. The processed sensor signals may then be provided to an analog-to-digital converter (ADC), which may be configured to convert analog signals to digital signals that may be processed by one or more computer processors. Example computer processors may include one or more microcontrollers (MCU), such as the nRF52840 (manufactured by NORDIC SEMICONDUCOTR). The MCU may also receive inputs from one or more other sensors. The device may include one or more other sensors, such as an orientation sensor, which may be an absolute orientation sensor and may include an inertial measurement unit. An example orientation sensor may include a BNO055 inertial measurement unit (manufactured by BOSCH SENSORTEC). The device may also include a dedicated power supply, such as a power and battery module. The output of the processing performed by MCU may be provided to an antenna for transmission to the dongle portion or another device. Other sensors may include mechanomyography (MMG) sensors, sonomyography (SMG) sensors, electrical impedance tomography (EIT) sensors, and other suitable type of sensors.

[0122] A dongle portion, or other device such as a head-mounted device, may include one or more antennas configured to communicate with the control device and/or other devices. Communication between system components may use any suitable wireless protocol, such as radio-frequency signaling and BLUETOOTH. Signals received by the antenna of the dongle portion (or other device) may be provided to a computer through an output, such as a USB output, for further processing, display, and/or for effecting control of a particular physical or virtual object or objects.

[0123] Although the examples provided with reference to FIGS. 26A, 26B and FIGS. 27A, 27B are discussed in the context of interfaces with EMG sensors, examples may also be implemented in control devices, such as wearable interfaces, used with other types of sensors including, but not limited to, mechanomyography (MMG) sensors, sonomyography (SMG) sensors, and electrical impedance tomography (EIT) sensors. The approaches described herein may also be implemented in wearable interfaces that communicate with computer hosts through wires and cables (e.g., USB cables, optical fiber cables).

[0124] FIG. 28 illustrates an example system 2800 that may include a headset 2810 and a control device 2820 (that may represent a wearable control device). In some examples, the system 2800 may include a magnetic tracker. In these examples, the transmitter for the magnetic tracker may be mounted on the control device 2820, and the receiver for the magnetic tracker may be mounted on the headset 2810. In other examples, the transmitter for the magnetic tracker may be mounted on the headset or otherwise located within the environment. In some embodiments, the system 2800 may also include one or more optional control gloves 2830. In

some examples, many or all functions of a control glove may be provided by the control device

2820. In some examples, the system may be an augmented reality and/or virtual reality system. In some examples, the control glove 2830 may include a plurality of magnetic tracker receivers, using which the orientation and/or location of various parts of the hand of a user may be determined. In some examples, the control device 2820 may be similar to that shown in FIGS. 26A and 26B. In some examples, the control device may include an electronic circuit similar to that shown in FIG. 27A (and/or FIG. 27B).

[0125] In some examples, the control glove 2830 (that may be more simply referred to as a glove) may include one or more magnetic tracker receivers. For example, a finger of the glove may include at least one receiver coil, and detection of a tracker signal from the at least one receiver coil induced by a magnetic tracker transmitter may be used to determine the position and/or orientation of at least portion of the finger. One or more receiver coils may be associated with each portion of a hand, such as a finger (such as the thumb), palm, and the like. The glove may also include other sensors providing sensor signals indicative of the position and/or configuration of the hand, such as electroactive sensors. Sensor signals, such as magnetic tracker receiver signals, may be transmitted to a control device, such as a wearable control device. In some examples, a control device (such as a wrist-mounted control device) may be in communication with a control glove, and receive sensor data from the control glove using wired and/or wireless communication. For example, a flexible electrical connector may extend between a control device (e.g., a wrist-mounted control device) and the glove. In some examples, the control device may include a glove, and/or may include a wrist-strap.

[0126] In some examples, the control device 2820 may include an EMG control interface similar to the device illustrated in FIGS. 26A and 26B. Locating the magnetic tracker transmitter on or near the control device 2820 may result in the introduction of noise into the signals recorded by the control device 2820 due to induced currents and/or voltages. In some embodiments, electromagnetic interference caused by the magnetic tracker transmitter may be reduced by locating the transmitter at a distance further away from the control device 2820. For example, the transmitter may be mounted on the headset 2810, and the magnetic tracker receiver may be mounted on the control device 2820. This configuration works well, for example, when the user keeps their arms away from their head, but may not work as well if the user moves their arms in close proximity to the headset. However, many applications do not require extensive proximity between the head and the hands of the user.

[0127] The control device, such as wearable control device 2820, may include an analog circuit including at least one amplifier configured to amplify analog electrical signals originating from a body of the user (e.g., from electrodes in contact with the skin, and/or one or more other sensors), and an analog-to-digital converter configured to convert the amplified analog electrical signals to digital signals that may be used to control the system, such as a virtual reality (VR) and/or augmented reality (AR) system.

[0128] In some examples, an augmented reality system may include a magnetic tracker. The magnetic tracker may include a transmitter positioned in the headset, or other location, and one or more receivers, that may be associated with tracked objects or body parts of a user (such as hands, or other limbs or portions thereof, or joints) of a user.

[0129] FIG. 29 shows an example method of classifying an event (2900), including obtaining electromyography (EMG) data from a user (2910), the EMG data including an EMG signal corresponding to an event, detecting the EMG signal corresponding the event (2920), classifying the EMG signal as being from an event type (2930), and generating a control signal based on the event type (2940). An example method may further include triggering the head-mounted device to modify the artificial reality view controlling an artificial reality environment based on the control signal.

[0130] FIG. 30 shows an example method of classifying an event (3000), including detecting an EMG signal corresponding to an event (3010), classifying the EMG signal as corresponding to an event type using a trained model (3020), and generating a control signal for an artificial reality environment based on the event type (3030). The control signal may trigger the head-mounted device to modify the artificial reality view.

[0131] In some examples, FIGS. 29 and 30 may represent flow diagram of exemplary computer-implemented methods for detecting at least one gesture, and using the at least one detected gesture type to control an artificial reality system, such as an augmented reality system or virtual reality system. One or more steps shown in the figures may be performed by any suitable computer-executable code and/or computer device, such as a control device, a head-mounted device, other computer device in communication with the control device, or a computer device in communication with a device providing sensor signals. In some examples, one or more of the steps shown in FIGS. 29 and/or 30 may represent an algorithm whose structure includes and/or is represented by multiple sub-steps, using approaches such as those described herein. In some examples, steps of a particular example method may be performed by different components of a system including, for example, a control device and a head-mounted device.

[0132] In some examples, event detection and classification may be performed by unsupervised or self-supervised models, and these approaches may be used to detect user gestures. Models may be trained for a particular user, or in some examples a model may be trained on a different user, and the training data for the different user adapted for use with a present user. In example training approaches, EMG data may be detected, and optionally recorded for analysis. A model may be trained using EMG data that may be obtained as one or more users perform one or more gestures. Example gestures include finger taps (e.g., simulated keypresses), other finger movements (such as finger curls, swipes, pointing gestures, and the like), or other types of gestures and/or sensor data may be analogously used to train example event detector models.

[0133] In some embodiments, by building an embedding space including a single user model, clearly separable clusters of events may be obtained. Clustering techniques may be implemented to determine labels for each event, and a user specific model may be then trained using the labeled data. By using at least one of these techniques, a very high accuracy rate (e.g., 98% accuracy rate) may be reached in a purely unsupervised fashion. For instance, using a relatively small number of samples (e.g., less than 40 event samples), a relatively high (e.g., 95% accuracy) may be achieved.

[0134] Further, in some embodiments, single-user event templates may be adapted to other users, reducing further the amount of additional data that may be needed for use of the models with the adapted users. For instance, domains may be adapted using PLS by aligning datasets across pairs of users. For instance, a PLS may be trained to align event templates across users. An ensemble of aligned user templates may lead to a high accuracy (e.g., 96% accuracy), requiring very few event data to be collected (e.g., less than 10 events).

[0135] Poses may be defined as body positions that are static over time and in theory may be maintained indefinitely. In contrast, in some examples, gestures may be defined as including dynamic body positions, that may have a start time and an end time, per occurrence. Accordingly, gestures may be defined as discrete events of a particular gesture type. Representative examples of gesture types include snaps, finger taps, finger curls or bends, pointing, swiping, turning, grasping, or other finger motions. In some examples, gestures may include movements of at least a portion of the arm, wrist, or hand, or other muscle activation. In some examples, visually perceptible movement of the user may not be required, and a gesture may be defined by a muscle activation pattern, independent of any visually perceptible movement of a portion of the user's body.

[0136] A generic event detector may generate an output signal when a gesture event is detected, for example, in a continuous stream of electromyography (EMG) data. A control signal for a computer device, such as an artificial reality system, may be based on the output signal of the generic event detector. The generic event detector may produce an output signal each time a user performs a gesture. In some examples, the output signal may be produced

independently of the type of performed gesture. In some examples, an event classifier may execute when the event detector detects an event, such as a gesture. The event classifier may determine information related to the gesture, such as a gesture type, performed by the user. The gesture type may include one or more of the following: a physical action performed, the body part (such as a finger or other body part) used to perform the physical action, an intended action of the user, other physical action(s) performed the same or an approximately same time. A control signal may also be based on a combination of sensor data from one or more sensor types. A corresponding control signal may be sent to an augmented reality (AR) system, and the control signal may be based, at least in part, on the gesture type. The control signal may modify the artificial reality display by one or more of the following: selection of an item, performance of a task, movement of an object by a degree and/or direction that may be, at least in part, determined by the gesture type, interaction with a user interface of an object (e.g., a real or virtual object), or other action. In some embodiments, gestures may be classified as a particular gesture type based on one or more electromyography signals, such as electromyography wavelets.

[0137] In some examples, a method of detecting events, such as gestures, may include obtaining first set of electromyography (EMG) data including EMG signals corresponding to a gesture of a first user, training a first classifier by clustering event data determined from the obtained first set of EMG signals, labeling a second set of obtained EMG data using the first classifier, and training an event detector using the labeled second set of EMG data.

[0138] In some examples, a method for classifying events, such as gestures, may include one or more of the following steps; generating a plurality of single user event classifiers, generating a multi-user event classifier using the plurality of single user classifiers, labeling electromyography (EMG) data using the generated multi-user classifier, generating data transformations corresponding to a plurality of users, generating a single user classifier correlated with a first user of the plurality of users, labeling received EMG data for a second user of the plurality of users using the data transformation for the second user and the single user classifier for the first user, and training the event detector using the labeled EMG data.

[0139] In some examples, a method for training an event detector, such as a gesture detector, is provided. The method may include one or more of the following steps; obtaining electromyography (EMG) data including EMG signals corresponding to the gesture, generating feature data from the EMG data, detecting events in the feature data, generating epochs using the feature data, where each epoch may be centered around one of the detected events, clustering the epochs into types, where at least one the types may correspond to the gesture, aligning the epochs by type to generate aligned epochs, training a labeling model using the aligned epochs, labeling the feature data using the labeling model to generate labeled feature data, and training an event detector using the labeled feature data.

[0140] In some examples, a method for training an event classifier may include one or more of the following steps; obtaining electromyography (EMG) data including EMG signals corresponding to a plurality of gestures, generating feature data from the EMG data, detecting events in the feature data using an event detector, generating epochs using the feature data,

each epoch centered around one of the detected events, generating a single-user event classification model using the epochs, labeling the EMG data using the single-user event classification model, and training an event classifier using the labeled EMG data.

[0141] In some examples, a method of generating a single-user event classification model using epochs may include one or more of the following steps; generating vectorized epochs using the epochs, and generating the single-user event classification model by training one or more of a logistic regression, random forest, or multilayer perceptron classifier using the vectorized epochs. In some examples, wherein generating a single-user event classification model using the epochs includes generating spatially-filtered, reduced-dimension epochs using the epochs, generating vectorized epochs using the spatially-filtered, reduced-dimension epochs, and generating the single-user event classification model by training one or more of a logistic regression, random forest, or multilayer perceptron classifier using the vectorized epochs. In some examples, wherein generating a single-user event classification model using the epochs includes generating one or more event models using the epochs, each event model corresponding to a gestures, generating combined epochs by combining each of the epochs with the one or more event models, and generating the single-user event classification model by training one or more of a logistic regression, random forest, or multilayer perceptron classifier using the combined epochs.

[0142] In some examples, a method for training an event classifier is provided. The method may include one or more of the following steps; obtaining electromyography (EMG) data including EMG signals corresponding to a plurality of gestures for a plurality of users, generating feature data from the EMG data, detecting events in the feature data using an event detector, generating epochs using the feature data, each epoch centered around one of the detected events, generating a cross-user event classification model using the epochs, labeling the EMG data using the cross-user event classification model, and training an event classifier using the labeled EMG data.

[0143] In some examples, a method for training an event classifier is provided. The method may include one or more of the following steps; generating an embedding model using a plurality of single user event classification models, generating embedded events using the embedding model and electromyography (EMG) data including EMG signals corresponding to a plurality of gestures for a user, clustering the embedded events into clusters corresponding to the plurality of gestures, associating labels with the EMG data based on the clustered embedded events, and training an event classifier for the user using the EMG data and associated labels.

[0144] In some examples, a method for training an event classifier is provided. The method may include one or more of the following steps; generating, for each of a plurality of users, an event template for each of a plurality of events, determining alignment transformations between the event templates for each of the plurality of events across the plurality of users, transforming EMG data for a first user using ones of the determined alignment transformations for a second user, associating labels with the EMG data using the transform EMG data and a single user event classification model of the second user, and training an event classifier for the user using the EMG data and associated labels.

[0145] In some examples, a system for gesture detection is provided. The system may include at least one processor, and at least one non-transitory memory including instructions that, when executed by the at least one processor, cause the system for gesture detection to perform operations including associating, using an event detector, an event label with a portion of electromyography data, in response to associating the event label with the portion of electromyography data associating, using an event classifier, a gesture label with the portion of electromyography data, and outputting an indication of at least one of the event label or the gesture label.

[0146] Examples described herein may include various suitable combinations of example aspects, provided such aspects are not incompatible.

[0147] Example systems and methods may include user-based models for detecting gestures in an accurate and unsupervised manner. Event detector models are provided that may be trained on a limited set of user data for a particular user, and using labels and clustering methods, the accuracy of the event detector may be increased while limiting the number of event data instances.

[0148] By building an embedding space including a single user model, clearly separable cluster of events may be obtained. Clustering techniques may be implemented to determine labels of each event and a user specific model may be then trained using the labeled data. In some examples, 98% accuracy may be reached by applying this process, in a purely unsupervised fashion. Also, 95% accuracy may be reached using a limited number (e.g., 40) of event samples.

[0149] Domain adaptation with PLS may include the one or more of the following.

Dataset across pairs of users may be aligned by training a PLS to align the event templates. An ensemble of aligned single user may lead to 96% accuracy. The alignment requires very little data to be performed (such as less than 10 events).

[0150] A generic event detector may emit an output signal when a gesture event is detected in a continuous stream of electromyography (EMG) data. An example generic event detector may produce an output signal each time a user performs a gesture, and the output signal may be produced independently of the type of performed gesture.

[0151] An event classifier may execute when the event detector identifies a gesture event. The event classifier may then determine the gesture type performed by a user.

[0152] In some examples, a method for detecting events may include one or more of the following: obtaining first set of electromyography (EMG) data including EMG signals corresponding to a gesture of a first user; training a first classifier by clustering event data determined from the obtained first set of EMG signals; and labeling a second set of obtained EMG data using the first classifier; and training an event detector using the labeled second set of EMG data. Example approaches may include providing a general event detector.

[0153] In some examples, a method for classifying events may include one or more of the following: generating a plurality of single user event classifiers; generating a multi-user event classifier using the plurality of single user classifiers; labeling electromyography (EMG) data using the generated multi-user classifier; generating data transformations corresponding to a plurality of users; generating a single user classifier correlated with a first user of the plurality of users; labeling received EMG data for a second user of the plurality of users using the data transformation for the second user and the single user classifier for the first user; and training the event detector using the labeled EMG data. Example approaches may include providing a general event classifier.

[0154] In some examples, a method for training an event detector may include one or more of the following: obtaining electromyography (EMG) data including EMG signals corresponding to a gesture; generating feature data from the EMG data; detecting events in the feature data; generating epochs using the feature data, each epoch centered around one of the detected events; clustering the epochs into types, at least one the types corresponding to the gesture; aligning the epochs by type to generate aligned epochs; training a labeling model using the aligned epochs; labeling the feature data using the labeling model to generate labeled feature data; and training an event detector using the labeled feature data. Example approaches may include generating a classifier to label unlabeled data, and then generating an event detector using the labeled data.

[0155] In some examples, a method for training an event classifier may include one or more of the following: obtaining electromyography (EMG) data including EMG signals corresponding to a plurality of gestures; generating feature data from the EMG data; detecting events in the feature data using an event detector; generating epochs using the feature data, each epoch centered around one of the detected events; generating a single-user event classification model using the epochs; labeling the EMG data using the single-user event classification model; and training an event classifier using the labeled EMG data. Example

approaches may include generating a single-user event classification model to label unlabeled data, then generating an event classifier using the labeled data.

[0156] In some examples, generating a single-user event classification model using the epochs may include one or more of the following: generating vectorized epochs using the epochs; and generating the single-user event classification model by training one or more of a logistic regression, random forest, or multilayer perceptron classifier using the vectorized epochs. Example approaches may include generating a single-user event classification model from vectorized trials.

[0157] In some examples, generating a single-user event classification model using the epochs may include one or more of the following: generating spatially-filtered, reduced-dimension epochs using the epochs; generating vectorized epochs using the spatially-filtered, reduced-dimension epochs; and generating the single-user event classification model by training one or more of a logistic regression, random forest, or multilayer perceptron classifier using the vectorized epochs. This approach may be used to generate a single-user event classification model from reduced dimension data generated by spatially filtering the trials.

[0158] In some examples, generating a single-user event classification model using the epochs may include one or more of the following: generating one or more event models using the epochs, each event model corresponding to a gesture; generating combined epochs by combining each of the epochs with the one or more event models; and generating the single-user event classification model by training one or more of a logistic regression, random forest, or multilayer perceptron classifier using the combined epochs. Example approaches may include

generating a single-user event classification model by generating event templates and concatenating the event templates with the trials.

[0159] In some examples, a method for training an event classifier includes one or more of the following: obtaining electromyography (EMG) data including EMG signals corresponding to a plurality of gestures for a plurality of users; generating feature data from the EMG data; detecting events in the feature data using an event detector; generating epochs using the feature data, each epoch centered around one of the detected events; generating a cross user event classification model using the epochs; and labeling the EMG data using the cross-user event classification model; and training an event classifier using the labeled EMG data. Example approaches may include generating a cross-user event classification model to label unlabeled data, and then generating an event classifier using the labeled data.

[0160] In some examples, a method for training an event classifier may include one or more of the following: generating an embedding model using a plurality of single user event classification models; generating embedded events using the embedding model and electromyography (EMG) data including EMG signals corresponding to a plurality of gestures for a user; clustering the embedded events into clusters corresponding to the plurality of gestures; associating labels with the EMG data based on the clustered embedded events; and training an event classifier for the user using the EMG data and associated labels. Example approaches may include generating a user independent event classification model to label unlabeled data from an ensemble of single-user event classification models, and then generating an event classifier using the labeled data.

[0161] In some examples, a method for training an event classifier may include one or more of the following: generating, for each of a plurality of users, an event template for each of a plurality of events; determining alignment transformations between the event templates for each of the plurality of events across the plurality of users; transforming EMG data for a first user using at least one of the determined alignment transformations for a second user; associating labels with the EMG data using the transform EMG data and a single user event classification model of the second user; and training an event classifier for the user using the EMG data and associated labels. Example approaches may include using alignment transformations between users to transform data for labeling by a single user- specific event classification model, then generating an event classifier using the labeled data.

[0162] In some examples, a system for gesture detection may be configured to use an event detector to identify gestures and an event classifier to classify gestures, where the event detector may be trained using a training method (such as a training method described herein). In some examples, a system for gesture detection may include: at least one processor; and at least one non-transitory memory including instructions that, when executed by the at least one processor, cause the system for gesture detection to perform operations including: associating, using an event detector, an event label with a portion of electromyography data; in response to associating the event label with the portion of electromyography data associating, using an event classifier, a gesture label with the portion of electromyography data; and outputting an indication of at least one of the event label or the gesture lab.

[0163] Exemplary computer-implemented methods may be performed by any suitable computer-executable code and/or computing system, where one or more steps of the method may represent an algorithm whose structure may include and/or may be represented by multiple sub-steps.

[0164] In some examples, a system includes at least one physical processor, and physical memory including computer-executable instructions that, when executed by the physical processor, cause the physical processor to perform one or more methods or method steps as described herein. In some examples, a computer-implemented method may include the detection and classification of gestures, and control of an artificial reality system using detected gesture types.

[0165] In some examples, a non-transitory computer-readable medium includes one or more computer-executable instructions that, when executed by at least one processor of a computing device, cause the computing device to perform one or more method steps as described herein. In some examples, a computer-implemented method may include the detection and classification of gestures, and control of an artificial reality system using detected gesture types.

[0166] Examples include a control device including a plurality of electromyography (EMG) sensors, and/or other sensors, and at least one physical processor programmed to receive sensor data, detect sensor signals corresponding to user gestures within the sensor data, classify the sensor signals to identify gesture types, and provide control signals based on the gesture types. The control signals may trigger the head-mounted device to modify the artificial reality view.

[0167] Example Embodiments

[0168] Example 1. An example system includes: a head-mounted device configured to present an artificial reality view to a user; a control device including a plurality of electromyography (EMG) sensors including electrodes that contact the skin of the user when the control device is worn by the user; at least one physical processor; and physical memory including computer-executable instructions that, when executed by the physical processor, cause the physical processor to: process one or more EMG signals as detected by the EMG sensors; classify the processed one or more EMG signals into one or more gesture types; provide control signals based on the gesture types, where the control signals trigger the head-mounted device to modify at least one aspect of the artificial reality view.

[0169] 2. The system of example 1, wherein the at least one physical processor is located within the control device.

[0170] Example 3. The system of any of examples 1-2, wherein the at least one physical processor is located within the head mounted device, or within an external computer device in communication with the control device.

[0171] Example 4. The system of any of examples 1-3, wherein the computer-executable instructions when executed by the physical processor, cause the physical processor to classify the processed EMG signals into one or more gesture types using a classifier model. [0172] Example 5. The system of any of examples 1-4, wherein the classifier model is trained using training data including a plurality of EMG training signals for the gesture type.

[0173] Example 6. The system of any of examples 1-5, wherein the training data is obtained from a plurality of users.

[0174] Example 7. The system of any of examples 1-6, wherein the head mounted device includes a virtual reality headset or an augmented reality device.

[0175] Example 8. An example method includes obtaining one or more electromyography (EMG) signals from a user; processing the one or more EMG signals to generate associated feature data; classifying the associated feature data into one or more gesture types using a classifier model; and providing a control signal to an artificial reality (AR) device, based on the one or more gesture types, wherein the classifier model is trained using training data including a plurality of EMG training signals for the one or more gesture types.

[0176] Example 9. The method of example 8, wherein the classifier model is trained by clustering feature data determined from EMG training signals.

[0177] Example 10. The method of any of examples 8-9, wherein the classifier model is trained using EMG training signals obtained from a plurality of users.

[0178] Example 11. The method of any of examples 8-10, wherein the plurality of users does not include the user.

[0179] Example 12. The method of any of examples 8-11, further including training the classifier model by: obtaining EMG training signals corresponding to a gesture type; training the classifier model by clustering EMG training data obtained from the EMG training signals.

[0180] Example IB. The method of any of examples 8-12, where in the classifier model is further trained by: determining the time dependence of EMG training signals relative to a time of a respective EMG training signal maximum; aligning the time dependence of a plurality of EMG training signals by adding a time offset to at least one EMG training signal of the plurality of EMG training signals; obtaining a signal characteristic from the aligned plurality of EMG training signals; and training the classifier model to detect EMG signals having the signal characteristic.

[0181] Example 14. The method of any of exam pies 8-13, wherein the classified model is further trained by: obtaining training data including EMG training signals corresponding to a gesture type; and averaging the EMG training signals corresponding to each occurrence of the gesture type to obtain a gesture model for the gesture type, wherein the classifier model uses the gesture model to classify EMG signals.

[0182] Example 15. The method of any of examples 8-14, wherein the gesture model is a user-specific gesture model for the gesture type.

[0183] Example 16. The method of any of examples 8-14, wherein the gesture model is a multiple user gesture model based on EMG training data obtained from a plurality of users, the multiple user gesture model being a combination of a plurality of user-specific gesture models.

[0184] Example 17. The method of any of examples 8-16, wherein the artificial reality device includes a head-mounted device configured to present an artificial reality image to a user, the method further including modifying the artificial reality image based on the control signal. [0185] Example 18. The method of any of examples 8-17, wherein modifying the artificial reality image includes selection or control of an object in the artificial reality image based on the gesture type.

[0186] Example 19. An non-transitory computer-readable medium includes one or more computer-executable instructions that, when executed by at least one processor of a computing device, cause the computing device to: receive one or more electromyography (EMG) signals as detected by EMG sensors; process the one or more EMG signals to identify one or more features corresponding to a user gesture types; use the one or more features to classify the one or more EMG signals into the gesture type; provide a control signal based on the gesture type; and transmit the control signals to a head-mounted device to trigger the modification of an artificial reality view in response to the control signals.

[0187] Example 20. The non-transitory computer-readable medium of example 19, wherein the computer device is configured to classify the EMG signals to the identify gesture type based on a gesture model determined from training data obtained from a plurality of users.

[0188] Embodiments of the present disclosure may include or be implemented in conjunction with various types of artificial reality systems. Artificial reality is a form of reality that has been adjusted in some manner before presentation to a user, that may include, for example, a virtual reality, an augmented reality, a mixed reality, a hybrid reality, or some combination and/or derivative thereof. Artificial-reality content may include completely computer-generated content or computer-generated content combined with captured (e.g., real-world) content. The artificial-reality content may include video, audio, haptic feedback, or some combination thereof,

any of that may be presented in a single channel or in multiple channels (such as stereo video that produces a three-dimensional (3D) effect to the viewer). Additionally, in some embodiments, artificial reality may also be associated with applications, products, accessories, services, or some combination thereof, that are used to, for example, create content in an artificial reality and/or are otherwise used in (e.g., to perform activities in) an artificial reality.

[0189] Artificial-reality systems may be implemented in a variety of different form factors and configurations. Some artificial reality systems may be designed to work without near eye displays (NEDs). Other artificial reality systems may include an NED that also provides visibility into the real world (e.g., augmented-reality system S100 in FIG. SI) or that visually immerses a user in an artificial reality (e.g., virtual-reality system 3200 in FIG. 32). While some artificial-reality devices may be self-contained systems, other artificial-reality devices may communicate and/or coordinate with external devices to provide an artificial-reality experience to a user. Examples of such external devices include handheld controllers, mobile devices, desktop computers, devices worn by a user, devices worn by one or more other users, and/or any other suitable external system.

[0190] Turning to FIG. 31, augmented-reality system 3100 may include an eyewear device 3102 with a frame 3110 configured to hold a left display device 3115(A) and a right display device 3115(B) in front of a user's eyes. Display devices 3115(A) and 3115(B) may act together or independently to present an image or series of images to a user. While augmented-reality system 3100 includes two displays, embodiments of this disclosure may be implemented in augmented-reality systems with a single NED or more than two NEDs.

[0191] In some embodiments, augmented-reality system 3100 may include one or more sensors, such as sensor 3140. Sensor 3140 may generate measurement signals in response to motion of augmented-reality system 3100 and may be located on substantially any portion of frame 3110. Sensor 3140 may represent a position sensor, an inertial measurement unit (IMU), a depth camera assembly, a structured light emitter and/or detector, or any combination thereof. In some embodiments, augmented-reality system 3100 may or may not include sensor 3140 or may include more than one sensor. In embodiments in which sensor 3140 includes an IMU, the IMU may generate calibration data based on measurement signals from sensor 3140. Examples of sensor 3140 may include, without limitation, accelerometers, gyroscopes, magnetometers, other suitable types of sensors that detect motion, sensors used for error correction of the IMU, or some combination thereof.

[0192] Augmented-reality system 3100 may also include a microphone array with a plurality of acoustic transducers 3120(A)-1320(J), referred to collectively as acoustic transducers 3120. Acoustic transducers 3120 may be transducers that detect air pressure variations induced by sound waves. Each acoustic transducer 3120 may be configured to detect sound and convert the detected sound into an electronic format (e.g., an analog or digital format). The microphone array in FIG. 2 may include, for example, ten acoustic transducers: 3120(A) and 3120(B), that may be designed to be placed inside a corresponding ear of the user, acoustic transducers 3120(C), 3120(D), 3120(E), 3120(F), 3120(G), and 3120(H), that may be positioned at various locations on frame 3110, and/or acoustic transducers 3120(1) and 3120(J), that may be positioned on a corresponding neckband 3105.

[0193] In some embodiments, one or more of acoustic transducers 3120(A)-(F) may be used as output transducers (e.g., speakers). For example, acoustic transducers 3120(A) and/or 3120(B) may be earbuds or any other suitable type of headphone or speaker.

[0194] The configuration of acoustic transducers 3120 of the microphone array may vary. While augmented-reality system 3100 is shown in FIG. 31 as having ten acoustic transducers 3120, the number of acoustic transducers 3120 may be greater or less than ten. In some embodiments, using higher numbers of acoustic transducers 3120 may increase the amount of audio information collected and/or the sensitivity and accuracy of the audio information. In contrast, using a lower number of acoustic transducers 3120 may decrease the computing power required by an associated controller 3150 to process the collected audio information. In addition, the position of each acoustic transducer 3120 of the microphone array may vary. For example, the position of an acoustic transducer 3120 may include a defined position on the user, a defined coordinate on frame 3110, an orientation associated with each acoustic transducer 3120, or some combination thereof.

[0195] Acoustic transducers 3120(A) and 3120(B) may be positioned on different parts of the user's ear, such as behind the pinna, behind the tragus, and/or within the auricle or fossa. Or, there may be additional acoustic transducers 3120 on or surrounding the ear in addition to acoustic transducers 3120 inside the ear canal. Having an acoustic transducer 3120 positioned next to an ear canal of a user may enable the microphone array to collect information on how sounds arrive at the ear canal. By positioning at least two of acoustic transducers 3120 on either side of a user's head (e.g., as binaural microphones), augmented-reality system 3100 may

simulate binaural hearing and capture a 3D stereo sound field around about a user's head. In some embodiments, acoustic transducers 3120(A) and 3120(B) may be connected to augmented-reality system 3100 using a wired connection 3130, and in other embodiments acoustic transducers 3120(A) and 3120(B) may be connected to augmented-reality system 3100 using a wireless connection (e.g., a Bluetooth connection). In still other embodiments, acoustic transducers 3120(A) and 3120(B) may not be used at all in conjunction with augmented-reality system 3100.

[0196] Acoustic transducers 3120 on frame 3110 may be positioned along the length of the temples, across the bridge, above or below display devices 3115(A) and 3115(B), or some combination thereof. Acoustic transducers 3120 may be oriented such that the microphone array is able to detect sounds in a wide range of directions surrounding the user wearing the augmented-reality system 3100. In some embodiments, an optimization process may be performed during manufacturing of augmented-reality system 3100 to determine relative positioning of each acoustic transducer 3120 in the microphone array.

[0197] In some examples, augmented-reality system 3100 may include or be connected to an external device (e.g., a paired device), such as neckband 3105. Neckband 3105 generally represents any type or form of paired device. Thus, the following discussion of neckband 3105 may also apply to various other paired devices, such as charging cases, smart watches, smart phones, wrist bands, other wearable devices, hand-held controllers, tablet computers, laptop computers, other external compute devices, etc.

[0198] As shown, neckband 3105 may be coupled to eyewear device 3102 using one or more connectors. The connectors may be wired or wireless and may include electrical and/or non-electrical (e.g., structural) components. In some cases, eyewear device 3102 and neckband 3105 may operate independently without any wired or wireless connection between them. While FIG. 31 illustrates the components of eyewear device 3102 and neckband 3105 in example locations on eyewear device 3102 and neckband 3105, the components may be located elsewhere and/or distributed differently on eyewear device 3102 and/or neckband 3105. In some embodiments, the components of eyewear device 3102 and neckband 3105 may be located on one or more additional peripheral devices paired with eyewear device 3102, neckband 3105, or some combination thereof.

[0199] Pairing external devices, such as neckband 3105, with augmented-reality eyewear devices may enable the eyewear devices to achieve the form factor of a pair of glasses while still providing sufficient battery and computation power for expanded capabilities. Some or all of the battery power, computational resources, and/or additional features of augmented-reality system 3100 may be provided by a paired device or shared between a paired device and an eyewear device, thus reducing the weight, heat profile, and form factor of the eyewear device overall while still retaining desired functionality. For example, neckband 3105 may allow components that would otherwise be included on an eyewear device to be included in neckband 3105 since users may tolerate a heavier weight load on their shoulders than they would tolerate on their heads. Neckband 3105 may also have a larger surface area over which to diffuse and disperse heat to the ambient environment. Thus, neckband 3105 may allow for greater battery and computation capacity than might otherwise have been possible on a stand-alone eyewear device. Since weight carried in neckband S105 may be less invasive to a user than weight carried in eyewear device S102, a user may tolerate wearing a lighter eyewear device and carrying or wearing the paired device for greater lengths of time than a user would tolerate wearing a heavy standalone eyewear device, thereby enabling users to more fully incorporate artificial reality environments into their day-to-day activities.

[0200] Neckband S105 may be communicatively coupled with eyewear device S102 and/or to other devices. These other devices may provide certain functions (e.g., tracking, localizing, depth mapping, processing, storage, etc.) to augmented-reality system S100. In the embodiment of FIG. 31, neckband 3105 may include two acoustic transducers (e.g., 3120(1) and 3120(J)) that are part of the microphone array (or potentially form their own microphone subarray). Neckband 3105 may also include a controller 3125 and a power source 3135.

[0201] Acoustic transducers 3120(1) and 3120(J) of neckband 3105 may be configured to detect sound and convert the detected sound into an electronic format (analog or digital). In the embodiment of FIG. 31, acoustic transducers 3120(1) and 3120(J) may be positioned on neckband 3105, thereby increasing the distance between the neckband acoustic transducers 3120(1) and 3120(J) and other acoustic transducers 3120 positioned on eyewear device 3102. In some cases, increasing the distance between acoustic transducers 3120 of the microphone array may improve the accuracy of beamforming performed using the microphone array. For example, if a sound is detected by acoustic transducers 3120(C) and 3120(D) and the distance between acoustic transducers 3120(C) and 3120(D) is greater than, for example, the distance between acoustic transducers 3120(D) and 3120(E), the determined source location of the detected sound may be more accurate than if the sound had been detected by acoustic transducers 3120(D) and 3120(E).

[0202] Controller 3125 of neckband 3105 may process information generated by the sensors on neckband 3105 and/or augmented-reality system 3100. For example, controller 3125 may process information from the microphone array that describes sounds detected by the microphone array. For each detected sound, controller 3125 may perform a direction-of-arrival (DOA) estimation to estimate a direction from which the detected sound arrived at the microphone array. As the microphone array detects sounds, controller 3125 may populate an audio data set with the information. In embodiments in which augmented-reality system 3100 includes an inertial measurement unit, controller 3125 may compute all inertial and spatial calculations from the IMU located on eyewear device 3102. A connector may convey information between augmented-reality system 3100 and neckband 3105 and between augmented-reality system 3100 and controller 3125. The information may be in the form of optical data, electrical data, wireless data, or any other transmittable data form. Moving the processing of information generated by augmented-reality system 3100 to neckband 3105 may reduce weight and heat in eyewear device 3102, making it more comfortable to the user.

[0203] Power source 3135 in neckband 3105 may provide power to eyewear device 3102 and/or to neckband 3105. Power source 3135 may include, without limitation, lithium ion batteries, lithium-polymer batteries, primary lithium batteries, alkaline batteries, or any other form of power storage. In some cases, power source 3135 may be a wired power source.

Including power source 3135 on neckband 3105 instead of on eyewear device 3102 may help better distribute the weight and heat generated by power source 3135.

[0204] As noted, some artificial reality systems may, instead of blending an artificial reality with actual reality, substantially replace one or more of a user's sensory perceptions of the real world with a virtual experience. One example of this type of system is a head-worn display system, such as virtual-reality system 3200 in FIG. 32, that mostly or completely covers a user's field of view. Virtual-reality system 3200 may include a front rigid body 3202 and a band 3204 shaped to fit around a user's head. Virtual-reality system 3200 may also include output audio transducers 3206(A) and 3206(B). Furthermore, while not shown in FIG. 32, front rigid body 3202 may include one or more electronic elements, including one or more electronic displays, one or more inertial measurement units (IMUs), one or more tracking emitters or detectors, and/or any other suitable device or system for creating an artificial reality experience.

[0205] Artificial reality systems may include a variety of types of visual feedback mechanisms. For example, display devices in augmented-reality system 3100 and/or virtual-reality system 3200 may include one or more liquid crystal displays (LCDs), light emitting diode (LED) displays, organic LED (OLED) displays digital light project (DLP) micro-displays, liquid crystal on silicon (LCoS) micro-displays, and/or any other suitable type of display screen. Artificial reality systems may include a single display screen for both eyes or may provide a display screen for each eye, that may allow for additional flexibility for varifocal adjustments or for correcting a user's refractive error. Some artificial reality systems may also include optical subsystems having one or more lenses (e.g., conventional concave or convex lenses, Fresnel lenses, adjustable liquid lenses, etc.) through which a user may view a display screen. These optical subsystems may serve a variety of purposes, including to collimate (e.g., make an object appear at a greater distance than its physical distance), to magnify (e.g., make an object appear larger than its actual size), and/or to relay light (to, e.g., the viewer's eyes). These optical subsystems may be used in a non-pupil-forming architecture (such as a single lens configuration that directly collimates light but may result in so-called pincushion distortion) and/or a pupil-forming architecture (such as a multi-lens configuration that may produce barrel distortion to nullify pincushion distortion).

[0206] In addition to or instead of using display screens, some artificial reality systems may include one or more projection systems. For example, display devices in augmented-reality system 3100 and/or virtual-reality system 3200 may include micro-LED projectors that project light (using, e.g., a waveguide) into display devices, such as clear combiner lenses that allow ambient light to pass through. The display devices may refract the projected light toward a user's pupil and may enable a user to simultaneously view both artificial reality content and the real world. The display devices may accomplish this using any of a variety of different optical components, including waveguides components (e.g., holographic, planar, diffractive, polarized, and/or reflective waveguide elements), light-manipulation surfaces and elements (such as diffractive, reflective, and refractive elements and gratings), coupling elements, etc. Artificial reality systems may also be configured with any other suitable type or form of image projection system, such as retinal projectors used in virtual retina displays.

[0207] Artificial reality systems may also include various types of computer vision components and subsystems. For example, augmented-reality system 3100 and/or virtual-reality

system 3200 may include one or more optical sensors, such as two-dimensional (2D) or 3D cameras, structured light transmitters and detectors, time-of-flight depth sensors, single-beam or sweeping laser rangefinders, 3D LiDAR sensors, and/or any other suitable type or form of optical sensor. An artificial reality system may process data from one or more of these sensors to identify a location of a user, to map the real world, to provide a user with context about real-world surroundings, and/or to perform a variety of other functions.

[0208] Artificial reality systems may also include one or more input and/or output audio transducers. For example, elements 3206(A), and 3206(B) may include voice coil speakers, ribbon speakers, electrostatic speakers, piezoelectric speakers, bone conduction transducers, cartilage conduction transducers, tragus-vibration transducers, and/or any other suitable type or form of audio transducer. Similarly, input audio transducers may include condenser microphones, dynamic microphones, ribbon microphones, and/or any other type or form of input transducer. In some embodiments, a single transducer may be used for both audio input and audio output.

[0209] In some examples, artificial reality systems may include tactile (i.e., haptic) feedback systems, that may be incorporated into headwear, gloves, body suits, handheld controllers, environmental devices (e.g., chairs, floormats, etc.), and/or any other type of device or system. Haptic feedback systems may provide various types of cutaneous feedback, including vibration, force, traction, texture, and/or temperature. Haptic feedback systems may also provide various types of kinesthetic feedback, such as motion and compliance. Haptic feedback may be implemented using motors, piezoelectric actuators, fluidic systems, and/or a variety of other types of feedback mechanisms. Haptic feedback systems may be implemented independent of other artificial reality devices, within other artificial reality devices, and/or in conjunction with other artificial reality devices.

[0210] By providing haptic sensations, audible content, and/or visual content, artificial reality systems may create an entire virtual experience or enhance a user's real-world experience in a variety of contexts and environments. For instance, artificial reality systems may assist or extend a user's perception, memory, or cognition within a particular environment. Some systems may enhance a user's interactions with other people in the real world or may enable more immersive interactions with other people in a virtual world. Artificial reality systems may also be used for educational purposes (e.g., for teaching or training in schools, hospitals, government organizations, military organizations, business enterprises, etc.), entertainment purposes (e.g., for playing video games, listening to music, watching video content, etc.), and/or for accessibility purposes (e.g., as hearing aids, visuals aids, etc.). The embodiments disclosed herein may enable or enhance a user's artificial reality experience in one or more of these contexts and environments and/or in other contexts and environments.

[0211] As detailed above, the computing devices and systems described and/or illustrated herein broadly represent any type or form of computing device or system capable of executing computer-readable instructions, such as those contained within the modules described herein. In their most basic configuration, these computing device(s) may each include at least one memory device and at least one physical processor.

[0212] In some examples, the term "memory device" generally refers to any type or form of volatile or non-volatile storage device or medium capable of storing data and/or computer-readable instructions. In one example, a memory device may store, load, and/or maintain one or more of the modules described herein. Examples of memory devices include, without limitation, Random Access Memory (RAM), Read Only Memory (ROM), flash memory, Hard Disk Drives (HDDs), Solid-State Drives (SSDs), optical disk drives, caches, variations or combinations of one or more of the same, or any other suitable storage memory.

[0213] In some examples, the term "physical processor" generally refers to any type or form of hardware-implemented processing unit capable of interpreting and/or executing computer-readable instructions. In one example, a physical processor may access and/or modify one or more modules stored in the above-described memory device. Examples of physical processors include, without limitation, microprocessors, microcontrollers, Central Processing Units (CPUs), Field-Programmable Gate Arrays (FPGAs) that implement softcore processors, Application-Specific Integrated Circuits (ASICs), portions of one or more of the same, variations or combinations of one or more of the same, or any other suitable physical processor.

[0214] Although illustrated as separate elements, the modules described and/or illustrated herein may represent portions of a single module or application. In addition, in certain embodiments one or more of these modules may represent one or more software applications or programs that, when executed by a computing device, may cause the computing device to perform one or more tasks. For example, one or more of the modules described and/or illustrated herein may represent modules stored and configured to run on one or more of the

computing devices or systems described and/or illustrated herein. One or more of these modules may also represent all or portions of one or more special-purpose computers configured to perform one or more tasks.

[0215] In addition, one or more of the modules described herein may transform data, physical devices, and/or representations of physical devices from one form to another. For example, one or more of the modules recited herein may receive data to be transformed (such as data based on detected signals from a user, such as EMG data), transform the data, output a result of the transformation to perform a function (e.g., outputting control data, controlling an AR system, or other function), or otherwise use the result of the transformation to perform a function, and store the result of the transformation to perform a function. Additionally or alternatively, one or more of the modules recited herein may transform a processor, volatile memory, non-volatile memory, and/or any other portion of a physical computing device from one form to another by executing on the computing device, storing data on the computing device, and/or otherwise interacting with the computing device.

[0216] In some embodiments, the term "computer-readable medium" generally refers to any form of device, carrier, or medium capable of storing or carrying computer-readable instructions. Examples of computer-readable media include, without limitation, transmission-type media, such as carrier waves, and non-transitory-type media, such as magnetic-storage media (e.g., hard disk drives, tape drives, and floppy disks), optical-storage media (e.g., Compact Disks (CDs), Digital Video Disks (DVDs), and BLU-RAY disks), electronic-storage media (e.g., solid-state drives and flash media), and other distribution systems.

[0217] The process parameters and sequence of the steps described and/or illustrated herein are given by way of example only and may be varied as desired. For example, while the steps illustrated and/or described herein may be shown or discussed in a particular order, these steps do not necessarily need to be performed in the order illustrated or discussed. The various exemplary methods described and/or illustrated herein may also omit one or more of the steps described or illustrated herein or include additional steps in addition to those disclosed.

[0218] Use of ordinal terms such as "first," "second," "third" does not, by itself, connote any priority, precedence, or order of one claim element over another or the temporal order in which acts of a method are performed. Such terms may be used merely as labels to distinguish one element from another element having an otherwise similar name.

[0219] The preceding description has been provided to enable others skilled in the art to best utilize various aspects of the exemplary embodiments disclosed herein. This exemplary description is not intended to be exhaustive or to be limited to any precise form disclosed. Many modifications and variations are possible without departing from the spirit and scope of the present disclosure. The embodiments disclosed herein should be considered in all respects illustrative and not restrictive. Reference should be made to the appended claims and their equivalents in determining the scope of the present disclosure.

[0220] Unless otherwise noted, the terms "connected to" and "coupled to" (and their derivatives), as used in the specification and claims, are to be construed as permitting both direct and indirect (i.e., using other elements or components) connection. In addition, the terms "a" or "an," as used in the specification and claims, are to be construed as meaning "at least one of."

Finally, for ease of use, the terms "including" and "having" (and their derivatives), as used in the specification and claims, are interchangeable with and have the same meaning as the word

"including."