Patent Publication Number: US-2020279205-A1

Title: Techniques for tailoring fabrication environments based on user, task, and expertise

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This application claims priority benefit of the United States Provisional Patent Application titled, “TECHNIQUES FOR INSTRUMENTING FABRICATION ACTIVITIES AND ANALYZING THOSE ACTIVITIES AND ASSOCIATED USERS”, filed on Feb. 28, 2019 and having Ser. No. 62/812,159. The subject matter of this related application is hereby incorporated by reference. 
    
    
     BACKGROUND 
     Field of the Disclosure 
     Embodiments of the present disclosure relate generally to computer science and machine learning and, more specifically, to techniques for tailoring fabrication environments based on users, tasks, and expertise. 
     Description of the Related Art 
     Fabrication and maker activities have increased in popularity and have become more accessible to a wider range of individuals with varying abilities, requirements, and skills. Currently, the tools and environments used in fabrication are not readily adaptable to different fabrication contexts. As such, the same tools that professionals use for certain tasks are oftentimes used by novices for quite different tasks. As used herein, a task refers to any piece of work or activity performed in a fabrication environment, and a fabrication environment refers to any environment in which fabrication and/or maker activities occur. Examples of fabrication environments include workshops, machine shops, job sites, factories, construction sites, and home and community maker spaces. 
     For tools or fabrication environments to be adapted to different use contexts, the use context, including the users that are performing tasks and the expertise or experience levels of those users, must be determined. However, there are currently few, if any, effective techniques for identifying the types of tasks being performed in fabrication environments, the users who are performing those tasks, and the skill levels of those users. 
     As the foregoing illustrates, what is needed in the art are more effective ways to tailor fabrication environments based on the tasks being performed in those environments as well as the users and skill levels of the users performing those tasks. 
     SUMMARY 
     One embodiment of the present disclosure sets forth a computer-implemented method for performing an action in a fabrication environment. The method includes receiving data from one or more sensors disposed in the fabrication environment, and extracting one or more features from the data. The method further includes processing the extracted features using a trained machine learning model to determine at least one of a user present in the fabrication environment, a task being performed by a user in the fabrication environment, and an expertise level of a user in performing a task in the fabrication environment. In addition, the method includes performing at least one action in the fabrication environment based on at least one of the user, the task, and the expertise level. 
     Another embodiment of the present disclosure sets forth a non-transitory computer-readable storage medium including instructions that, when executed by a processor, cause the processor to performing steps including receiving data from one or more sensors disposed in the fabrication environment. The steps further include extracting one or more features from the data, and processing the extracted features using a trained machine learning model to determine at least one of a user present in the fabrication environment, a task being performed by a user in the fabrication environment, and an expertise level of a user in performing a task in the fabrication environment. 
     Another embodiment of the present disclosure sets forth a system including a computing device and one or more sensors including at least one of a sensor worn on a user, a sensor instrumented in a tool, and a sensor placed in a fabrication environment. The computing device includes a memory storing a management application, and a processor that is coupled to the memory. When executing the management application, the processor is configured to receive data from the one or more sensors, extract one or more features from the data, and process the extracted features using a trained machine learning model to determine at least one of a user present in the fabrication environment, a task being performed by a user in the fabrication environment, and an expertise level of a user in performing a task in the fabrication environment. 
     One advantage of the disclosed techniques relative to the prior art is that the disclosed techniques provide environmental, tool, and user-worn sensor configurations, as well as machine learning techniques, that permit users, tasks, and expertise levels to be automatically recognized with relatively high accuracy. Use of multiple environmental, tool, and user-worn sensors in particular can improve the signal-to-noise ratio. Users, tasks, and expertise levels recognized based on sensor data may be used to adapt a fabrication environment to support user needs by, for example, enforcing safety measures, recommending tutorials, providing workflow suggestions to users, and generating visualizations. These technical advantages represent one or more technological advancements over prior art approaches. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       So that the manner in which the above recited features of the present disclosure can be understood in detail, a more particular description of the disclosure, briefly summarized above, may be had by reference to embodiments, some of which are illustrated in the appended drawings. It is to be noted, however, that the appended drawings illustrate only typical embodiments of this disclosure and are therefore not to be considered limiting of its scope, for the disclosure may admit to other equally effective embodiments. 
         FIG. 1  is a conceptual illustration of a system configured to implement one or more aspects of various embodiments; 
         FIG. 2  is a more detailed illustration of the sensors of  FIG. 1 , according to various embodiments; 
         FIG. 3  illustrates the operations of the model trainer of  FIG. 1 , according to various embodiments; 
         FIG. 4  illustrates the operations of the fabrication management application of  FIG. 1 , according to various embodiments; 
         FIG. 5  is a flow diagram of method steps for training one or more machine learning models for user, task, and expertise recognition, according to various embodiments; and 
         FIG. 6  is a flow diagram of method steps for determining one or more actions to perform in a fabrication environment, according to various embodiments. 
     
    
    
     DETAILED DESCRIPTION 
     In the following description, numerous specific details are set forth to provide a more thorough understanding of the present disclosure. However, it will be apparent to one of skilled in the art that the present disclosure may be practiced without one or more of these specific details. 
     System Overview 
       FIG. 1  illustrates a system  100  configured to implement one or more aspects of various embodiments. As shown, the system  100  includes one or more sensors  150 , a machine learning server  110 , a data store  120 , and a computing device  140  in communication over a network  130 . The network  130  may be a wide area network (WAN) such as the Internet, a local area network (LAN), or any other suitable network. Although shown as communicating over the network  130  for illustrative purposes, it should be understood that sensor data may be transmitted to the machine learning server  110  and/or the computing device  140  in any technically feasible manner. For example, some of the sensor(s)  150  could communicate via cables (e.g., USB cables) with the computing device  140  and/or the machine learning server  110 . As another example, sensors worn on a user, such as the sensors in a smart watch, could communicate via Bluetooth Low Energy with a mobile device, which then transmits the sensor data to the computing device  140  and/or the machine learning server  110  via Wi-Fi. 
     The sensor(s)  150  may include environmental sensors, tool sensors, and/or user-worn sensors. Environmental sensors, such as accelerometers and microphones, are sensors fixed at any suitable location(s) within a fabrication environment. As described, a fabrication environment includes any environment in which fabrication and/or maker activities occur, such as workshops, machine shops, job sites, factories, construction sites, and home and community maker spaces. For example, environmental sensors could be mounted on a work table of a drill press for a sanding task. As another example, environmental sensors could be mounted on a workbench where tasks other than sanding take place. It should be understood that in many fabrication contexts, the environments in which fabrication takes place may remain relatively fixed. Fixed environmental sensors may be placed within the space of such fabrication environments to recognize and record data indicating what is happening within the space, such as users who are in the space, tasks being performed by the users, and expertise levels of the users. Where sensors can be placed in the fabrication environment, as well as on tools and users, may generally depend on various factors such as safety, noise, dexterity, and the nature of fabrication tasks being performed. 
     Tool sensors are sensors fixed to tools and may include, e.g., inertial measurement units (IMUs) as well as ambient light, humidity, temperature, barometric pressure, and/or magnetic sensors. Nearly all fabrication tasks require tools, such as manual, power, or digital tools. Tools with sensors fixed to them are referred to herein as “instrumented” tools. Sensor data from instrumented tools may be used to understand how the tools are being operated, which tasks are being performed, and how well users are performing the tasks, as discussed in greater detail below. Instrumenting tools may be relatively unobtrusive, with small sensors and electronics typically having minimal impact on the operations of tools and user privacy. In some embodiments, tools may be instrumented with sensor tags that include IMUs as well as other sensors, such as the ambient light, humidity, temperature, barometric pressure, and/or magnetic sensors described above. An IMU may include an accelerator, a gyroscope, and a magnetometer, which can be used to detect the orientation, movement, and vibrations of an instrumented tool. Accelerometers in particular, sampled at high or even low frequencies, can capture the unique signatures of movement. 
     User-worn sensors are sensors worn by users in a fabrication environment. User-worn sensors may include biometric sensors, such as heart rate sensors and eye trackers, in some embodiments. For instrumenting users with sensors, considerations include safety and unobtrusiveness, i.e., having minimal effect on a user&#39;s ability to perform tasks. User-worn sensors permit data to be collected directly from users performing fabrication tasks. Such data can be a rich source of information, as the data is collected closest to users and may detect their focus, physiological measurements, and movements. In particular, data streams from user-worn sensors may capture a user&#39;s confidence, their familiarity with a task, or other data that may be difficult to detect with other sensors. In some embodiments, the user-worn sensors may include biometric sensors such as eye trackers, as well as sensors in mobile devices such as smart phones and/or wearable devices such as smart watches. For example, a user could wear an eye tracker that records eye positions at 120 Hz relative to a head-worn camera that captures a video of a scene the user looks at. In such a case, the number of times that the user moves his or her eyes may be used as a metric of focus, as a shifting focus may indicate that the user is a novice who is unsure of himself or herself. As another example, a user could wear a smart watch on each wrist that records movement of the user&#39;s hands via accelerometers and gyroscopes sampled at 100 Hz, as well as a heart rate that is sampled at 0.2 Hz. Some user-worn sensors may require users to perform additional steps prior to undertaking fabrication tasks, such as equipping a sensor array and calibration. For example, an eye tracker may be calibrated for a user by adjusting the eye tracker camera to capture an eye location and performing a routine to calibrate eye camera coordinates to coordinates of a head-worn video camera. 
       FIG. 2  is a more detailed illustration of the sensors  150  of  FIG. 1 , according to various embodiments.  FIG. 2  also shows elements in a fabrication environment other than the sensors  150 , such as a work bench  210 , a drill tool  240 , and a user  250 . As shown, a microphone and accelerometer module  220  is fixed to the work bench  210 . In this example, the microphone and accelerometer serve as environmental sensors. In some embodiments, environmental sensors (such as the microphone and accelerometer) may be soldered to a custom printed circuit board, such as the module  220 , and sampled by a microcontroller system that communicates sensor data to a computing device, such as the computing device  140 , via a cable or network. 
     Accelerometers and microphones are relatively small and inexpensive sensors that can be placed discreetly in a fabrication environment. Experience has shown that the sampling rates on accelerometers and microphones is sufficiently high that many tasks can be recognized using only these sensors. In a particular embodiment, an accelerometer may be sampled at 4 kHz, and an acoustic microphone may be sampled at 17 kHz. 
     As further shown in  FIG. 2 , a sensor tag  230  is fixed to the base of the drill tool  240 . The sensor tag  230  may include one or more sensors, such as a 9-axis IMU, ambient light, humidity, temperature, barometric pressure, and/or magnetic sensors. In some embodiments, an IMU and an ambient light sensor in particular may be used to track the orientation and vibration of a tool. In a particular embodiment, the IMU may be sampled at 80-100 Hz, while the ambient light sensor may be sampled at 10 Hz. The variable sampling rate for the IMU may be used to account for changes in battery voltage, and the samples may be interpolated during post-processing to achieve a constant sampling rate of, e.g., 100 Hz. 
     In some embodiments, sensors may be placed on tools at locations that do not interfere with the natural operation of those tools. Although the placement location may influence the signal produced by a sensor, experience has shown that there is generally little difference in readings across locations, likely as a result of the tools having rigid structures that transfer vibrations and movements without dampening. For example, a drill (e.g., the drill  240 ) could be used for drilling and screwing tasks, with a sensor tag fixed to the base of the drill; a handsaw could be used for sawing tasks, with a sensor tag fixed to a side of the blade near the handle; a soldering iron could be used for soldering tasks, with a sensor tag fixed to the iron near the cable; a swivel-head deburring tool could be used for deburring tasks, with a sensor tag attached to the top of the handle; a ball-peen hammer could be used for nailing tasks, with a sensor tag attached halfway up the shaft; and a delta drill press could be used for sanding tasks, with a sensor tag fixed to the front of the drill press. 
     Two smart watches  240  and  245 , as well as an eye tracker  270 , are worn by the user  250 . As shown, one of the smart watches  240  and  245  is worn on each wrist of the user  250 . The smart watches  240  and  245  may include accelerometers and gyroscopes that record the movement of each hand. The smart watches  240  and  245  may further include heart rate sensors that record the heart rate of the user  250 . The eye tracker  270  records the user&#39;s  250  eye position relative to a head-worn camera which captures video of a scene that the user  250  is looking at. In a particular embodiment, the accelerometers and gyroscopes in the smart watches  240  and  245  may be sampled at 100 Hz, the heart rate sensors in the smart watches  240  and  245  may be sampled at 0.2 Hz, and the eye tracker  270  may be sampled at 120 Hz. 
     Experience has shown that sensor data from magnetometers placed on tools, and to a lesser extent accelerometers and microphones placed in a fabrication environment, are particularly useful for user recognition. This may be due to the unique ways that users hold tools (i.e., the tool orientation), which the magnetometers are able to detect. Unlike user recognition, experience has shown that accelerometers and gyroscopes on tools, as well as accelerometers in the fabrication environment, are particularly useful for task recognition, likely due to inherent similarities in how tools are handled and the unique signatures that result during operation of the tools (e.g., drilling and sanding may produce unique frequency responses due to different rotation speeds). In addition, accelerometers and gyroscopes in smart watches worn on the dominant hand tend to be more useful for user recognition than the same sensors in smart watches worn on the non-dominant hand, as most tasks are performed primarily with the dominant hand and with the other hand being used for support or idle. Experience has also shown that, although accelerometers and microphones placed in the fabrication environment remain useful for recognizing levels of expertise, sensors worn on users, especially accelerometers on the dominant hands of users, are more useful in recognizing expertise compared to user and task recognition. This could be due to the fact that having stable hands is a strong indicator of expertise in some tasks. In addition, experience has shown that accelerometers and gyroscopes worn on the non-dominant hand may provide useful information for recognizing levels of expertise, as the motion of the non-dominant hand may indicate expertise based on how the non-dominant hand is used for support, stability, or guidance by experts, while novice users may have a less consistent approach to using their non-dominant hands. 
     In sum, experience has shown that accelerometers placed in a fabrication environment have significant usefulness in recognizing users, tasks, and experience levels, and while environmental and tool sensors can provide more information than only instrumenting users with user-worn sensors, user-worn sensors are particularly useful for expertise inference. Further, environmental and tool sensors tend to perform better than user-worn sensors in identifying users, which is likely due to the tool sensors capturing the resultant motion of the tools and the environmental sensors capturing the interactions of the tools with materials. 
     Adapting Fabrication Environments Based on Task, User, and Expertise 
     Returning to  FIG. 1 , data from the sensor(s)  150  are integrated together and recorded in a synchronous manner. Such integrated sensor data provides contextual information that may be used to train machine learning models, as well as to make predictions using trained machine learning models. As shown, a model training application  118  (“model trainer”), which executes on a processor  112  and is stored in a memory  114  of the machine learning server  110 , is configured to train machine learning models based on features extracted from sensor data and tagged with manual annotations. For example, the machine learning models may be trained to recognize, from such extracted features, the distinct signatures of particular tools and tasks. In some embodiments, machine learning models may be trained to recognize users, tasks, and/or levels of expertise based on such labeled features extracted from sensor data. Examples of machine learning models that may be trained include random forest classifiers for recognizing users and tasks, as well as a random forest regressor for recognizing expertise. The random forest regressor in particular is capable of outputting continuous evaluation scores of expertise. 
     To train a machine learning model to recognize users, the model trainer  118  may use as training data features extracted from sensor data and tagged with user identifiers (IDs), as discussed in greater detail below. The model trainer  118  may generally use any suitable training algorithm, depending on the type of machine learning model being trained. In some embodiments, the model trainer  118  may employ cross validation, such as a leave-one-block-out approach in which each machine learning model is trained on one block (e.g., half) of the training data and tested on another block (e.g., the other half), with the two sets of data then being swapped and the machine learning models trained again using the swapped sets of data. Doing so may help overcome the possible strong correlation in data samples due to high data frame rates of a sensor and the time series nature of the data. To train a machine learning model to recognize tasks being performed, the model trainer  118  may use as training data features extracted from sensor data and tagged with associated tasks. To train a machine learning model to recognize levels of expertise, the model trainer  118  may use as training data features extracted from sensor data and tagged with self-reported and/or expert evaluations of levels of expertise, in specific tasks and/or in general, associated with the feature data. In particular, the training data may include, or be derived from, sensor data collected for users with a range of expertise levels in different tasks, and in general. Further, collecting the sensor data may include instructing those users to perform predefined tasks with specific tools, such as using a hammer to nail a piece of wood at a marked location, using a cordless drill to screw a screw into a piece of wood, using a handsaw to make a straight and clean cut at a marked location on a piece of wood, using a cordless drill to drill a hole through a piece of acrylic at a marked location, soldering male headers on a general-purpose printed circuit board, and sanding a piece of wood to a marked contour with a spindle-sander and drill press. 
     Although discussed herein primarily with respect to machine learning models that recognize users, tasks, and/or levels of expertise, it should be understood that, in other embodiments, labeled features extracted from data collected by environmental, tool, and/or user-worn sensors may be used to train machine learning models that recognize any desired type of output. Further, in some embodiments, data from a subset of the environmental, tool, and user-worn sensors described above may be used if, e.g., certain sensors cannot be used for privacy or other reasons. 
     Although shown as a server for illustrative purposes, it should be understood that the machine learning server  110  is not required to be a server and may generally be any type of computing system. The processor  112  included in the machine learning server  110  receives user input from input devices, such as a keyboard or a mouse. In operation, the processor  112  is the master processor of the machine learning server  110 , controlling and coordinating operations of other system components. In particular, the processor  112  may issue commands that control the operation of a GPU that incorporates circuitry optimized for graphics and video processing, including, for example, video output circuitry. The GPU may deliver pixels to a display device that may be any conventional cathode ray tube, liquid crystal display, light-emitting diode display, or the like. 
     A system memory  114  of the machine learning server  110  stores content, such as software applications and data, for use by the CPU  112  and the GPU. The system memory  116  may be any type of memory capable of storing data and software applications, such as a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash ROM), or any suitable combination of the foregoing. In some embodiments, a storage (not shown) may supplement or replace the system memory  116 . The storage may include any number and type of external memories that are accessible to the CPU  112  and/or the GPU. For example, and without limitation, the storage may include a Secure Digital Card, an external Flash memory, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. 
     It will be appreciated that the machine learning server  110  shown herein is illustrative and that variations and modifications are possible. For example, the number of CPUs  112 , the number of GPUs, the number of system memories  114 , and the number of applications included in the system memory  114  may be modified as desired. Further, the connection topology between the various units in  FIG. 1  may be modified as desired. In some embodiments, any combination of the CPU  112 , the system memory  114 , and a GPU may be replaced with any type of virtual computing system, distributed computing system, or cloud computing environment, such as a public or a hybrid cloud. 
     Training data and/or trained machine learning models may be stored in the data store  120 . In some embodiments, the data store  120  may include any storage device or devices, such as fixed disc drive(s), flash drive(s), optical storage, network attached storage (NAS), and/or a storage area-network (SAN). Although shown as accessible over the network  130 , in some embodiments the machine learning server  110  may include the data store  120 . In embodiments, the data store  120  may include one or more databases. As such, system  100  may include a database management system (DBMS) for accessing and storing data in the data store  120 . 
     Trained machine learning models may be deployed to applications that utilize such models to generate output. Illustratively, a fabrication management application  146  is stored in a memory  144  and executes on a processor  142  of the computing device  140 . Components of the computing device  140 , including the memory  144  and processor  142 , may be similar to corresponding components of the machine learning server  110  and will not be described in detail herein for conciseness. As discussed in greater detail below, the fabrication management application  146  may receive sensor data, such as data from one or more environmental, tool, and/or user-worn sensors. The fabrication management application  146  is configured to extract features from the received sensor data and feed the extracted features to trained machine learning models in order to determine users, tasks, and/or levels of expertise associated with the sensor data. Further, the fabrication management application  146  may take various actions based on the determined users, tasks, and/or levels of expertise, as discussed in greater detail below. 
     The number of machine learning servers and application servers may be modified as desired. Further, the functionality included in any of the applications may be divided across any number of applications or other software that are stored and execute via any number of devices that are located in any number of physical locations. 
       FIG. 3  illustrates the operations of the model trainer  118  of  FIG. 1 , according to various embodiments. As shown, the model trainer  118  receives a set of training data  300 . In some embodiments, the training data may include features extracted from sensor data and (manually) labeled with appropriate annotations. As described, features extracted from sensor data and tagged with user IDs may be used to train a machine learning model  350  to recognize users, features extracted from sensor data and tagged with associated tasks may be used to train a machine learning model  360  to recognize tasks being performed, and features extracted from sensor data and tagged with self-reported and/or expert evaluations of levels of expertise associated with the feature data may be used to train a machine learning model  370  to recognize levels of expertise. In alternative embodiments, the model trainer  118  may itself include a feature extraction module that extracts, from received sensor data, features that are used to train the user identification model  350 , the task recognition model  360 , and/or the expertise inference model  370 . 
     In some embodiments, the features may include statistical features, spectral features, and/or saccades. Further, in some embodiments data from each of the different types of sensors (e.g., accelerometers, magnetometers, etc.) may be divided into a set of instances using an overlapping sliding window to train the user identification model  350  and the task recognition model  360 . For example, a sliding window of length 0.5 seconds and 10% overlap may be used in a particular embodiment. The feature data for different sensors of interest may be concatenated into a single feature vector prior to training machine learning models using the singe feature vector. 
     The statistical features discussed above may include mean, standard deviation, minimum, maximum, range, sum, and energy. The spectral features may include frequency information, on data from each of the different types of sensors, that is obtained by performing a fast Fourier transform. Such a fast Fourier transform converts sensor data from the time domain to a frequency domain. In a particular embodiment, 1024 fast Fourier transform points may be computed for high-sample-rate sensors, such as the environmental microphone and accelerometer sensors, while 32 fast Fourier transform points may be computed for low-sample-rate sensors, such as IMUs, sensor tags, and smart watch sensors. Experience has shown that, in the context of user identification, statistical features are more useful than spectral features in many sensors, except microphones, as the unique signatures that a user produces are the result of gross motor movements, posture, and positioning, as opposed to higher-frequency, cyclic signals. The saccade features may include the number of saccades operationalized as, e.g., changes in position at greater than 5° per second. The number of saccades may be computed for gaze position data received from an eye tracker worn by a user and indicates whether the user is looking at a fixed point while performing a task. In general, any combination of statistical features, spectral features, and/or saccades may be used during training and inference, depending on the available sensor data. For example, if a heart rate sensor is sampled at 0.2 Hz as described above, then the model trainer  118  could compute the mean of heart rate readings on two smart watches that are closest to a time window. As another example, if a light sensor is sampled at a low sampling rate, then the model trainer  118  could only compute statistical features for the light sensor data, while omitting spectral features. 
     In some embodiments, features extracted from sensor data using an overlapping sliding window may be collapsed into a single window that includes mean values of data points in each window of the sliding window, and such a single window may be used as part of the data for training the expertise inference model  370 . Experience has shown that a 0.5 second sliding window may be long enough for user and task recognition, but not expertise recognition. In particular, expertise is evident in how tools and materials are handled and manifested in different ways throughout a task (e.g., starting a saw cut with slow pull strokes before making more aggressive oscillating cuts). As a result, rather than using a sliding window with several data instances for each trial, a single feature vector may be used for each trial during training of the expertise inference model  370  and inference using the trained model  370 . 
     As shown, using the training data  300 , the model trainer  118  trains the user identification model  350 , the task recognition model  360 , and the expertise inference model  370 . Any technically feasible machine learning model, such as random forest classifiers for the user identification model  350  and the task recognition model  360 , and a random forest regressor for the expertise inference model  370 , may be trained. In particular, a random forest regressor may be used for the expertise inference model  370  to output a continuous evaluation scores of expertise. Other examples of machine models include deep neural networks and support vector machines. 
     As described, any suitable training algorithm may be employed, depending on the type of machine learning model being trained. In some embodiments, the model trainer  118  may also use cross validation during the training of the user identification model  350 , the task recognition model  360 , and/or the expertise inference model  370 . For example, a leave-one-block-out approach may be used in which each machine learning model is trained on one block (e.g., half) of the training data and tested on another block (e.g., the other half). In such a case, the two sets of data may also be swapped and the machine learning models trained again using the swapped sets of data. As another example, a leave-four-trials out approach may be used in some embodiments. 
       FIG. 4  illustrates the operations of the fabrication management application  146  of  FIG. 1 , according to various embodiments. As shown, the fabrication management application  146  receives sensor data  400  including environmental sensor data  410 , tool sensor data  420 , and user-worn sensor data  430 . The fabrication management application  146  includes a feature extraction module  442  that extracts, from the received sensor data  400 , features that then are fed into trained machine learning models  444 . In some embodiments, the trained machine learning models  444  may include the user identification model  350 , the task recognition model  360 , and the expertise inference model  370  described above with respect to  FIG. 3 . 
     Similar to the feature extraction module  342 , the feature extraction module  442  may compute statistical features, spectral features, and/or saccades for the received sensor data  400  in some embodiments. In such cases, data from different types of sensors (e.g., accelerometers, magnetometers, etc.) may be divided into a set of instances via an overlapping sliding window for user and task recognition, and/or collapsed into a single window that includes mean values of data points in each window of the sliding window, for expertise recognition. Once again, the statistical features may include mean, standard deviation, minimum, maximum, range, sum, and/or energy, the spectral features may include frequency information obtained by performing a fast Fourier transform on data from each of the different types of sensors, and the number of saccades may be computed as, e.g., changes in position at greater than approximately 5° per second. 
     Having extracted features from the sensor data  400 , the fabrication management application  146  may feed appropriate feature data into the trained models  444  during inference. For example, the fabrication management application  146  could feed the extracted features into the user identification model  350 , the task recognition model  360 , and/or the expertise inference model  370  to determine a user, a task, and/or a level of expertise, respectively, that is associated with the received sensor data  400 . 
     The fabrication management application  146  further includes an analysis module  446  configured to analyze output of the trained models  444  and take actions  450  in response to such output. Any technically feasible analysis may be performed by the analysis module  446  using the output of one or more of the trained models  444 , and the analysis module  446  may take any appropriate actions in response to the analysis. For example, the analysis module  446  could predict how quickly a fabrication task will be performed by a user based on an identification of the user by the user identification model  350 , a determination of the task performed by the user by the task recognition model  360 , and a determination of the user&#39;s expertise in performing the task by the expertise inference model  370 . How fast tasks will be performed, as well as other information such as the tasks currently being performed in the fabrication environment, the typical tasks that are performed, and the expertise level of users, may be included in a visualization, such as a dashboard, that the fabrication management application  146  generates. Such a dashboard may help managers observe the ongoing and historical tasks and the expertise levels and use such information for decision support and space planning, among other things. For example, the ongoing tasks and the expertise levels displayed via the dashboard could help managers to understand the effectiveness of training programs and which users can learn from each other&#39;s experiences. As another example, the fabrication management application  146  could generate, and cause to be displayed, visualizations that allow the fabrication space to respond intelligently to a user&#39;s needs, such as highlighting the locations of bolts, screws, or drill bits via projection when the user is detected to be drilling, projecting the drilling state in the environment, or rendering the drilling state on a public display to provide other users with awareness of the drilling task. As another example, the fabrication management application  146  could determine, with the expertise inference model  370 , a level of expertise of a user in using a given tool to perform a particular task, and the fabrication management application  146  could then cause a notification to be displayed via a display device (e.g., a wearable display device) indicating guidance or instructions for performing the task that is appropriate to the user&#39;s level of expertise. As another example, the fabrication management application  146  could lock an inexperienced user out of using certain tools or parts of a fabrication environment based on an identity of the user determined using the user identification module  350 , tasks that were previously performed by the user determined using the task recognition model  360 , and the user&#39;s expertise in performing those tasks determined using the expertise inference model  370 . 
       FIG. 5  is a flow diagram of method steps for training one or more machine learning models for user, task, and expertise recognition, according to various embodiments. Although the method steps are described with reference to the system of  FIG. 1 , persons skilled in the art will understand that any system configured to implement the method steps, in any order, falls within the scope of the present invention. 
     As shown, a method  500  begins at step  502 , where the model trainer  118  receives training data. In some embodiments, the training data may include labeled features extracted from sensor data received from environmental, tool, and/or user-worn sensors. As described above with respect to  FIG. 3 , the features may include statistical features, spectral features, and/or saccades from an overlapping sliding window for training user and task recognition machine learning models, and similar features in a single window with mean values of data points in each window of the sliding window for training an expertise inference model. 
     At step  504 , the model trainer  118  trains a machine learning model to recognize users using a portion of the training data. The portion of the training data that is used may include data in which user labels have been associated with extracted feature data. Any technically feasible machine learning model for recognizing users, such as a random forest classifier, may be trained, using any suitable training algorithm. In some embodiments, a cross validation approach may be used during the training of the machine learning model. 
     At step  506 , the model trainer  118  trains a machine learning model to recognize tasks being performed using another portion of the training data. The portion of the training data that is used may include data in which task labels have been associated with extracted feature data. Any technically feasible machine learning model for recognizing tasks, such as a random forest classifier, may be trained, using any suitable training algorithm, and a cross validation approach may be used during such training in some embodiments. In general, the machine learning model that is trained to recognize tasks may be the same or distinct from the machine learning model that is trained to recognize users. 
     At step  508 , the model trainer  118  trains a machine learning model to recognize levels of expertise using another portion of the training data. The portion of the training data that is used may include data in which expertise labels have been associated with extracted feature data. Any technically feasible machine learning model for recognizing tasks, such as a random forest classifier, may be trained, using any suitable training algorithm, and a cross validation approach may be used during such training in some embodiments. In general, the machine learning model that is trained to recognize levels of expertise may be the same or distinct from the machine learning model(s) trained to recognize tasks and to recognize users. 
       FIG. 6  is a flow diagram of method steps for determining one or more actions to perform in a fabrication environment, according to various embodiments. Although the method steps are described with reference to the system of  FIG. 1 , persons skilled in the art will understand that any system configured to implement the method steps, in any order, falls within the scope of the present invention. 
     As shown, a method  600  begins at step  602 , where the fabrication management application  146  receives sensor data. In some embodiments, the fabrication management application  146  may receive data from environmental sensors, tool sensors, and/or user-worn sensors, as discussed above. In addition, the fabrication management application  146  may record and synchronize data received from the disparate sensor sources. 
     At step  604 , the fabrication management application  146  extracts features from the received sensor data. The same features may be extracted as those used to train machine learning model(s). For example, the fabrication management application  146  may extract features in an overlapping sliding window for user and task recognition, and collapse such features into a single window with mean values of data points in each window of the sliding window for expertise inference. Further, the features that are extracted may include, e.g., the statistical features, spectral features, and/or saccades described above with respect to  FIG. 3 . 
     At step  606 , the fabrication management application  146  processes the extracted features using trained machine learning model(s) to determine a user, a task, and/or an expertise level. That is, the fabrication management application  146  feeds the extracted features into one or more of the machine learning models that have been trained to recognize users, tasks, and levels of expertise. 
     At step  608 , the fabrication management application  146  determines one or more actions to perform in response to the determined user, task, and/or expertise level. Any suitable action(s) may be identified by the fabrication management application  146 . Some action(s) may be predefined in the fabrication management application  146 . The actions may include, e.g., enforcing safety measures such as locking an inexperienced user out of using potentially dangerous tools, recommending tutorials based on the expertise level of a user, providing workflow suggestions to a user based on the workflows used by experts, and generating various visualizations. 
     At step  610 , the fabrication management application  146  causes the one or more actions determined at step  608  to be performed. For example, the fabrication management application  146  could enforce safety measures or cause a tutorial, workflow suggest, or visualization to be displayed to a user via a display device. 
     Although examples of environmental, tool, and user-worn sensors are disclosed herein, it should be understood that any suitable types of sensors may be employed in other embodiments. For instance, radar and electromagnetic sensors are other examples of environmental sensors that may also be used. As another example, temperature, humidity, pressure, and light sensors may be used as environmental sensors to monitor ambient environmental conditions. In particular, machinery may emit heat that is detectable. Likewise, a tool being held in a specific manner may change the ambient lighting conditions, which may be detectable. 
     Although discussed herein primarily with respect to fabrication environments, techniques disclosed herein are also applicable to other work environments, such as sports or office environments. For example, data collected by sensors worn on users and/or placed in the sports or office environment (e.g., fixed to chairs) may be used to recognize users, tasks being performed by the users, and/or levels of expertise in performing those tasks. 
     In sum, techniques are disclosed for determining users, tasks, and levels of expertise in work environments, and fabrication environments in particular. Sensors may be placed in a work environment, instrumented in tools, and/or worn on users. Given labeled features extracted from sensor data, machine learning techniques are used to train models to recognize users, tasks, and levels of expertise. The trained models may then be deployed to determine the users, tasks, and levels of expertise in a work environment based on features extracted from new sensor data. In turn, actions such as displaying guidance or instructional materials, or locking a user out of using certain tools or parts of the work environment, may be taken. 
     One advantage of the disclosed techniques relative to the prior art is that the disclosed techniques provide environmental, tool, and user-worn sensor configurations, as well as machine learning techniques, that permit users, tasks, and expertise levels to be automatically recognized with relatively high accuracy. Use of multiple environmental, tool, and user-worn sensors in particular can improve the signal-to-noise ratio. Users, tasks, and expertise levels recognized based on sensor data may be used to adapt a fabrication environment to support user needs by, for example, enforcing safety measures, recommending tutorials, providing workflow suggestions to users, and generating visualizations. These technical advantages represent one or more technological advancements over prior art approaches. 
     The descriptions of the various embodiments have been presented for purposes of illustration, but are not intended to be exhaustive or limited to the embodiments disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments. 
     Aspects of the present embodiments may be embodied as a system, method or computer program product. Accordingly, aspects of the present disclosure may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “module” or “system.” Furthermore, aspects of the present disclosure may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon. 
     Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device. 
     Aspects of the present disclosure are described above with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the disclosure. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine. The instructions, when executed via the processor of the computer or other programmable data processing apparatus, enable the implementation of the functions/acts specified in the flowchart and/or block diagram block or blocks. Such processors may be, without limitation, general purpose processors, special-purpose processors, application-specific processors, or field-programmable gate arrays. 
     The flowchart and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present disclosure. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions. 
     While the preceding is directed to embodiments of the present disclosure, other and further embodiments of the disclosure may be devised without departing from the basic scope thereof, and the scope thereof is determined by the claims that follow.