Speed of movement system and method
Patent Information
- Authority / Receiving Office
- EP · EP
- Patent Type
- Applications
- Current Assignee / Owner
- ELI LILLY & CO
- Filing Date
- 2024-08-23
- Publication Date
- 2026-07-01
AI Technical Summary
Operators in aseptic environments face challenges in reducing air turbulence caused by rapid movements, which can lead to contamination. Existing motion detection technologies rely on offline data analysis and do not provide real-time feedback to operators.
A system comprising a wearable sensor device with an accelerometer and gyroscope, coupled with output devices for real-time alerts, processes motion data to detect unacceptable motion in real-time and provides immediate feedback to operators.
The system effectively reduces air turbulence by providing real-time feedback to operators, encouraging them to adjust their movements and minimize contamination risks in aseptic environments.
Smart Images

Figure US2024043553_27022025_PF_FP_ABST
Abstract
Description
SPEED OF MOVEMENT SYSTEM AND METHODFIELD
[0001] The present disclosure pertains to motion detection, and, in particular, to a real-time monitoring and alert system to reduce operator caused air turbulence in aseptic environments.BACKGROUND
[0002] Operators working in aseptic environments should move slowly and deliberately to reduce air turbulence created by rapid movements of the operator’s body. Such turbulence may cause contamination. While operator behavior training is helpful in reducing turbulence inducing motion, some operators may still walk too quickly and / or move parts of their bodies too quickly. It is possible to track the operator’s motion using wearable devices, cameras or other motion detection technology, and then analyze the motion data off-line to identify unacceptable motion. However, such motion data collection and analysis does not reduce unacceptable motion as it is occurring.
[0003] It would be desirable to provide an operator motion monitoring system with improved features, such as on-line, real-time monitoring of operator motion and immediate feedback when unacceptable motion is detected.SUMMARY
[0004] According to one embodiment of the present disclosure, a system is disclosed for providing real-time feedback to an operator upon detecting unacceptable motion of the operator, the system comprising: a wearable sensor device configured to be worn by the operator, the wearable sensor device comprising an accelerometer and a gyroscope; one or more output devices configured to output operator alerts; one or more memory devices storing a plurality of executable instructions; and one or more processors communicatively coupled to the one or more memory devices and configured to execute the plurality ofexecutable instructions to: receive a plurality of accelerometer signals from the accelerometer and a plurality of gyroscope signals from the gyroscope, determine a three-dimensional orientation of the wearable sensor device based on the gyroscope signals, filter the accelerometer signals to remove gravitational acceleration based on the determined three-dimensional orientation, detect unacceptable motion of the operator based on the filtered accelerometer signals, and output, via the one or more output devices, the operator alerts when unacceptable motion of the operator is detected.
[0005] According to another embodiment of the present disclosure, a method is disclosed for providing real-time feedback to an operator upon detecting unacceptable motion of the operator, the method comprising: providing to the operator: a wearable sensor device comprising an accelerometer and a gyroscope, and an output device configured to output operator alerts; receiving a plurality of accelerometer signals from the accelerometer and a plurality of gyroscope signals from the gyroscope; determine a three-dimensional orientation of the wearable sensor device based on the gyroscope signals; filter the accelerometer signals to remove gravitational acceleration based on the determined three-dimensional orientation; detect unacceptable motion of the operator based on the filtered accelerometer signals; and output, via the one or more output devices, the operator alerts when unacceptable motion is detected.
[0006] According to yet another embodiment of the present disclosure, a system is disclosed for providing real-time feedback to an operator upon detecting unacceptable motion of the operator, the system comprising a wearable device having a housing configured to be worn by the operator. One or more memory devices are communicatively coupled to the housing and store a plurality of executable instructions. One or more sensors are also communicatively coupled to the housing and are configured to output motion signals corresponding to motion of the operator. One or more output devices communicatively coupled to the housing are configured to output operator alerts in response to a determination of unacceptable motion of the operator. One or more processors communicativelycoupled to the housing are configured to execute the plurality of executable instructions which causes the one or more processors to receive a plurality of output motion signals from the one or more sensors at a sampling rate, convert the plurality of output motion signals into a plurality of data points, analyze the plurality of data points to identify steps taken by the operator, compute a step rate of the operator based upon the identified steps, and cause the one or more output devices to output an operator alert in response to the step rate exceeding a predetermined rate threshold corresponding to unacceptable motion of the operator.
[0007] According to yet another embodiment of the present disclosure, a method is disclosed for providing real-time feedback to an operator upon detecting unacceptable motion of the operator, the method including causing the operator to wear a wearable device having a housing that is communicatively coupled to a memory device, a sensor, an output device and a processor, receiving, by the processor, a plurality of output motion signals from the sensor at a sampling rate, converting, by the processor, the plurality of output motion signals into a plurality of data points, analyzing, by the processor, the plurality of data points to identify steps taken by the operator, computing, by the processor, a step rate of the operator based upon the identified steps, and causing, by the processor, the output device to output an operator alert in response to the step rate exceeding a predetermined rate threshold corresponding to unacceptable motion of the operator.
[0008] According to yet another embodiment of the present disclosure, a non- transitory computer-readable storage medium having computer-executable instructions stored thereon is provided. The computer-executable instructions, when executed by at least one processor, cause the at least one processor to receive, at a sampling rate, a plurality of output motion signals from one or more sensors coupled to a housing of a wearable device worn by an operator, convert the plurality of output motion signals into a plurality of data points, analyze the plurality of data points to identify steps taken by the operator, compute a step rate of the operator based upon the identified steps, and cause one or more output devices coupled to the housing tooutput an operator alert in response to the step rate exceeding a predetermined rate threshold corresponding to unacceptable motion of the operator.
[0009] According to still another embodiment of the present disclosure, a method for providing real-time feedback to an operator wearing a wearable device in an aseptic environment upon detecting an unacceptable step rate of the operator to cause a change in behavior of the operator and reduce a risk of contamination, comprises converting, by the at least one processor, a plurality of output motion signals from at least one sensor on the wearable device into a plurality of data points of a moving time window including a context subset of data points and a current subset of data points, analyzing, by the at least one processor, the plurality of data points by adjusting parameters of a plurality of filters using at least the current subset of data points to identify data points in the current subset of data points and the context subset of data points representing steps taken by the operator, computing, by the at least one processor, a step rate of the operator based upon the steps taken by the operator within the current subset of data points, and causing, by the at least one processor, an output device to output an operator alert in response to the step rate exceeding a predetermined rate threshold corresponding to an unacceptable step rate of the operator.BRIEF DESCRIPTION OF THE DRAWINGS
[0010] The above-mentioned and other advantages and objects of this disclosure, and the manner of attaining them, will become more apparent, and the disclosure itself will be better understood, by reference to the following description of embodiments of the invention taken in conjunction with the accompanying drawings, wherein:
[0011] FIG. 1A is a conceptual diagram of components that may be included in a system according to the present disclosure;
[0012] FIG. 1 B is a conceptual diagram of components that may be included in an alternate embodiment of the system according to the present disclosure;
[0013] FIG. 2 is a block diagram of a method of providing real-time motion monitoring and feedback according to embodiments of the present disclosure;
[0014] FIG. 3 is a block diagram of the detect steps block of FIG. 2;
[0015] FIGS. 4 through 6 are flow charts of steps in a method for providing real-time feedback to an operator upon detecting unacceptable motion of the operator;
[0016] FIG. 7 is a graphic depiction of data corresponding to a first ten second time period during which an operator is walking at a normal rate, which may be an unacceptable walking rate in an aseptic environment;
[0017] FIG. 8 is a graphic depiction of data corresponding to a second ten second time period including the last 9 seconds of data depicted in FIG. 7 and 1 second of additional data during which the operator is walking at a normal rate; and
[0018] FIG. 9 is a graphic depiction of data corresponding to a third ten second time period including the last 9 seconds of data depicted in FIG. 8 and 1 second of additional data during which the operator is walking at a slow rate.
[0019] FIG. 10-11 are flow charts of steps in an alternate method for providing real-time feedback to an operator upon detecting unacceptable motion of the operator.
[0020] FIG. 12 contains graphic depictions of data output from various steps within the methods shown in FIGs. 10-11.
[0021] FIGS. 13A and 13B are flow charts of steps depicting in greater detail the functions generally described in FIGS. 10-11.
[0022] FIG. 14 shows exemplary accelerometer data recorded when the operator is walking at a fast pace, a moderate pace, and a slow pace.
[0023] FIG. 15 shows exemplary tri-axial accelerometer data recorded during a stationary moment.
[0024] Corresponding reference characters indicate corresponding parts throughout the several views. Although the drawings represent embodiments of the present disclosure, the drawings are not necessarily to scale, and certain featuresmay be exaggerated or omitted in some of the drawings in order to better illustrate and explain the present disclosure.DETAILED DESCRIPTION
[0025] Referring now to FIG. 1A, one example of system according to the present disclosure for detecting unacceptable motion of an operator is shown as generally including a wearable device 10, a mobile device 12 and a computing device 14. The wearable device 10 may be any suitable device that may be worn on the body of an operator such as a smart watch, a smart ring, a device integrated into clothing, an ankle bracelet, smart glasses, and / or a sensor that may be pinned or clipped to an article of clothing, etc. The wearable device 10 generally includes a housing 11 , one or more processors 16 (e.g., a microprocessor, ASIC, central processing unit, etc.) communicatively coupled to the housing 11 , one or more memory devices 18 (e.g., a random-access memory (RAM), read-only memory (ROM), a flash memory, etc.) communicatively coupled to the housing 11 , one or more sensors 20 communicatively coupled to the housing 11 and one or more interface devices 22 communicatively coupled to the housing 11. It should be understood that the wearable device 10 includes a variety of other components which are omitted to simplify this description. Additionally, hereinafter the one or more processors 16, the one or more memory devices 18, the one or more sensors 20 and the one or more interface devices 22 are referred to in the singular for purposes of brevity.
[0026] In certain embodiments, the processor 16 is in communication with the memory device 18, the sensor(s) 20 and the interface device 22, and executes software stored in the memory device 18. In certain embodiments, the processor 16 executes a plurality of executable instructions stored in the memory device 18 as a software program or an app 24 to carry out the functions described herein. The memory device 18 may store data in the form of measurements, data points and / or other information obtained and / or generated during execution of the app 24 as is further described below.
[0027] In certain embodiments the sensor(s) 20 may include an accelerometer such as a triaxial accelerometer which measures acceleration in three orthogonal directions and contains three sensing elements oriented perpendicular to one another. As such, the accelerometer outputs motion signals representing forces on the sensor(s) 20 along the x, y and z axes, including the force of gravity. In certain embodiments the sensor(s) 20 may include a gyroscope such as a triaxial gyroscope which measures rotation and orientation of the sensor(s) 20 along three orthogonal directions. As such, the gyroscope outputs rotation signals representing the orientation or the change in orientation of the sensor(s) 20 in three-dimensional space. In certain embodiments, the sensor(s) 20 may further include a magnetometer configured to detect Earth’s magnetic field and to determine the direction of magnetic north. As should be apparent to those skilled in the art, when the operator walks while wearing the wearable device 10, the forces on the accelerometer of sensor(s) 20 change as the operator’s feet engage the floor. Furthermore, when the operator moves his / her body, thus changing the orientation of the wearable device 10 in three-dimensional space, the triaxial gyroscope and / or the magnetometer of sensor(s) 20 outputs signals indicative of the device 10’s changing orientation. It should be understood that the sensor(s) 20 may alternatively or additionally include a GPS device or any of a variety of other suitable sensors for detecting movement of the operator.
[0028] The interface device 22 may include an input device 26 such as a touch pad, a touch screen, a keyboard, button(s), a microphone, etc., and an output device 28 such as a haptic feedback device, a display, an indicator, an audio output device such as a speaker or any combination thereof. In certain embodiments, the output device 28 is a haptic feedback device which generates a vibration of the housing 11 that may be felt by the operator when an operator alert is generated as described herein. In other embodiments, the output device 28 alternatively or additionally includes an audio output device (e.g., a speaker) which generates a tone or other sound that may be heard by the operator when an operator alert is generated as feedback to the operator.
[0029] In certain embodiments, the wearable device 10 performs at least the functions of (1 ) generating data representing movement of the operator, (2) processing the data to determine the intensity of the operator’s movement and the step rate of the operator and (3) generating and outputting operator alerts when high intensity movement and / or high step rates are detected. In the examples described herein, the sensor(s) 20 is described as generating the raw data representing the movement of the operator, the processor 16 is described as processing the data to determine the intensity of the operator’s movement and the step rate of the operator, and the output device 28 is described as generating and outputting the operator alerts when high intensity movement and / or high step rates are detected. While the sensor(s) 20, the processor 16 and the output device 28 are primarily described as being integrated components of the wearable device 10, it should be understood that in other embodiments these components may not be housed within the wearable device 10. For example, the processor 16 may be part of a remote processing device such as the computing device 14 or part of mobile device such as the mobile device 12 described below. The output device 28 may also be separate from the wearable device 10, such as a vibration device situated adjacent another part of the operator’s body (e.g., the leg, waist, etc.) but in wired or wireless communication with the processor 16. Other non-integrated examples are possible and anticipated by the present disclosure.
[0030] In certain embodiments, the wearable device 10 is not paired with the mobile device 12 during operation of the app 24 as the operator is working in an aseptic environment where mobile devices 12 such as smart phones, tablets, laptops and other devices may be prohibited. In such embodiments, all of the functions described herein may be performed by the wearable device 10 during the operator’s shift and then the wearable device may be paired with the mobile device 12 after the operator leaves the aseptic environment and, for example, places the wearable device 10 on a charging device (not shown) positioned adjacent the mobile device 12 (i.e. , within range for communication using BLUETOOTH® or other communication protocols). After the devices are paired, the wearable device 10 maytransfer the data collected during the shift via wired or wireless connection to the mobile device 12 for data visualization, analysis, reporting or other purposes.
[0031] In other embodiments, the wearable device 10 is paired with the mobile device 12 during operation of the app 24 and the functions described herein may be distributed between the two devices. For example, the wearable device 10 may simply generate the motion data using the sensor(s) 20 and immediately transfer the data to the mobile device 12 for processing and analysis and respond to commands from the mobile device 12 when high intensity motion and / or high step rates are detected by generating operator alerts via the output device 28.
[0032] In still further embodiments, the computing device 14 may perform some of the functions described herein. In such embodiments, the functions may be distributed among the wearable device 10, the mobile device 12 and the computing device 14. For example, the wearable device 10 may generate motion data and output operator alerts, the mobile device 12 may perform some aspects of data analysis, visualization and reporting and the computing device 14 may perform other aspects of those functions. For example, the computing device 14 may be connected to a printer or other output device (not shown) for report generation or connected to a network for communicating data and / or reports to other computing devices. Alternatively, or additionally, the wearable device 10 may be in direct communication with the computing device 14 via wired or wireless connections to a network 30. In this manner, the wearable device 10 may perform some of the functions described herein and the computing device 14 may perform other functions, without the use of the mobile device 12. In some embodiments, the mobile device 12 may be in communication with the computing device 14 via network 30.
[0033] FIG. 1 B provides an alternative example of the system depicted and described in FIG. 1A, in which sensor(s) 20 are not housed within wearable device 10 but are separate component(s). For instance, sensor(s) 20 may be integrated into a separate package approximately the size of a coin, credit card, or wallet and placed in the operator’s pocket, worn around the operator’s neck, strapped to the operator’s torso, attached to the operator’s belt, clipped or pinned to the operator’sshoes or clothes, or affixed in some other way to the operator’s body. The one or more sensors 20 may be placed on a separate part or parts of the operator’s body than wearable device 10. For instance, in embodiments where wearable device 10 is configured to be worn on the operator’s wrist, the sensor(s) 20 may be placed somewhere other than the operator’s hands, wrist or arms. Sensor(s) 20 may be configured to detect, measure, and / or generate motion data but may be housed within a separate housing and configured to be in wired or wireless communication with wearable device 10 to communicate said motion data to the wearable device 10. Alternatively or in addition, and although not expressly depicted in FIG. 1 B for simplicity, sensor(s) 20 may be in wireless communication with mobile device 12 and / or computing device 14, either directly or via network 30. In such embodiments, wearable device 10 may be configured to provide operator alerts via output device 28 (e.g., via a haptic alert delivered to the operator’s wrist or via an audible alert), but the sensor(s) 20 configured to generate motion data may be positioned somewhere other than the operator’s hands, wrist, or arms. Placing sensor(s) 20 somewhere else (e.g., on the operator’s torso, waist, neck, or feet) means that any measured motion will be more indicative of the speed at which the operator is walking, and mitigates noise from movement of the operator’s hands, wrist, or arms as the operator works on his / her tasks.
[0034] FIG. 2 provides a generalized block diagram of certain functions performed by the devices of the system shown in FIGS. 1 A and 1 B. In the following description the wearable device 10 is described as performing the various functions, although as set forth herein multiple other implementation approaches are possible and anticipated by this disclosure. In general, input data is provided by the sensor(s) 20 in the form of motion signals at block 32. In one example, the motion signals are collected from the sensor(s) 20 by the processor 16 at a sample rate of 20 Hertz. In other embodiments, the sample rate is lower or higher than 20 Hertz (e.g., between 0.1 and 100 Hertz). In still other embodiments, the sample rate may be as low as 0.01 Hertz and as high as 800 Hertz or higher.
[0035] As is further described below, in one exemplary non-limiting example the motion signals are sampled during operation of the app 24, converted into data points and added in one second intervals to a moving time window of ten seconds of data in time ascending order for analysis. Put another way, after the first ten seconds of data collection during which 200 samples are obtained, each time the app 24 is called, which is once per second, the sensor(s) 20 provides 20 new samples which are converted to 20 new data points added to the moving time window and the oldest 20 data points in the moving time window are no longer used in the analysis described herein.
[0036] It should be understood that the frequency at which the app 24 is called, the number of data points provided to the app 24 every time it is called, and the size of the moving time window are all configurable parameters that may be varied in different embodiments. For example, in other embodiments, the app 24 may be called more or less frequently than once per second, the sensor(s) 20 may provide more or fewer than 20 new samples every time the app 24 is called, and the moving time window may include more or fewer than 200 data points.
[0037] As is further described below, an exemplary goal in terms of monitoring walking is to accurately identify step rates reflected in the most recent 1.5 seconds of data that exceed a predetermined rate threshold of 1 .2 steps per second. The once per second call rate of the app 24 may be determined in view of the specific application and the corresponding hardware limitations. Using a sample rate of 20 Hertz, 20 new data points are processed every one second, which may not be sufficient data to determine whether a peak corresponds to an actual step of the operator. That determination generally requires more context. For example, as shown in FIG. 7, the sensor data generated by the walking movement of the operator results in a repetitive pattern of data points, but not every apparent peak corresponds to an actual step (e.g., the middle spike between data point 722 and data point 724). In the example described herein with a sample rate of 20 Hertz and a predetermined rate threshold of 1.2 steps per second, any consecutive peaks that are less than or equal to 16 data points apart will represent an unacceptably highstep rate and trigger an operator alert. As the illustrative algorithm described herein operates on 20 new data points each second, it requires a larger buffer of data points for the described analysis. In the example embodiment described herein, that buffer is 10 seconds of data or 200 data points in the moving time window.
[0038] One example of a moving time window containing 200 samples is depicted in FIG. 9. The moving time window 25 includes a context subset of data points corresponding to a first time period 27 and a current subset of data points corresponding to a second time period or region 728 that immediately follows the first time period 27. In this example and the remainder of this description, the first time period 27 includes 8.5 seconds of data points or 170 data points and the second time period 728 includes 1 .5 seconds of data points or 30 data points. As a result of the 20 Hertz sample rate, the data points in the moving time window 25 are evenly spaced at indices that are 0.05 seconds apart.
[0039] In the example described herein, the once per second call rate of the app 24 results in a slight delay between the occurrence of operator motion and its analysis. It is likely in a practical application of the systems and methods described herein that an alert worthy activity (e.g., a change from a slow walking rate to a normal walking rate which, in certain applications, may be an unacceptably fast walking rate in an aseptic environment) will occur t seconds after the previous call of the app 24 and before the next call. As in the present example the app 24 is called once every second, there will be a delay of (1 - 1) seconds before the activity can be detected by the algorithm. As t is uniformly distributed between 0 and 1 , it is expected that there will be, on average, a 0.5 second delay between the onset of an alert worthy event and the next call of the app 24. This delay is the basis for using a current subset of data points as described herein of 1.5 seconds of data, or 30 data points. For example, where an operator starts walking from a stationary position at exactly 0.5 seconds after a first call of the app 24, the first peak corresponding to this operator motion would appear in the moving time window 25 provided to the app 24 at the next, second call of the app 24 at index 190. Using the sampling rate of 20 Hertz and the predetermined rate threshold of 1 .2 steps per second describedherein, if the next peak is fewer than 16 indices after the first peak, then an operator alert will be generated. If the index gap between the first peak and the next peak is equal to or greater than 16, this information will not be available in the moving time window 25 until the next (third) time the app 24 is called (i.e. , 1 .5 seconds after the unacceptable motion first began). Therefore, since it takes at least 1 .5 seconds to detect the onset of alert worthy activity, some embodiments use a current subset of data points corresponding to 1.5 seconds of data, or 30 data points. It should be noted, however, that the time ranges and widths of the current subset discussed herein are merely exemplary, and other time ranges and / or widths may be used in different embodiments that are longer or shorter than 1 .5 seconds. For example, the time ranges and widths of the current subset may be adjusted if the threshold for unacceptable motion is adjusted.
[0040] Referring back to FIG. 2, at block 34 each sample or set of 3-axis signals from the sensor(s) 20 is converted by the processor 16 from raw 3-axis accelerometer output motion signals into a data point, az, representing the Euclidean norm of the values of the signals corresponding to each axis. Thus, the data point, az, for each sample is equal to x? + y? + z? where xzrepresents the acceleration force magnitude along the x-axis, yzrepresents the acceleration force magnitude along the y-axis and zzrepresents the acceleration force magnitude along the z-axis. In one example, after 200 data samples are collected and converted as described above (i.e., ten seconds of data collected at 20 Hertz), the processor 16 performs an intensity check as described below.
[0041] At block 36, the processor 16 analyzes the current subset of data points (i.e., the last 30 data points (region 728) of the 200 data points in the moving time window 25) to identify activity representing unacceptable high intensity movement of the operator. In other words, the magnitudes of the last 1 .5 seconds of data points (i.e., am, am, . . . a2oo) are compared to a predetermined intensity threshold to identify any high intensity data representing rapid movement of the operator such as a rapid arm movement, etc. In one example, the predeterminedintensity threshold is three times the gravitational force equivalent or three times the gravitational acceleration on Earth of about 9.8 m / s2. Of course, other thresholds may be used depending upon the application, such as between two and four times the gravitational force equivalent. If any of the last 30 data points has a magnitude that exceeds 3g, then at block 46 the processor 16 causes the output device 28 to provide an operator alert such as by vibrating, flashing an indicator and / or providing an audio alarm. The operator may be trained to recognize the operator alert as feedback about the operator’s motion and may thus change his or her behavior immediately upon receiving the alert. After the operator alert is provided at block 46, the processor 16 causes the decision to generate the alert to be stored in the memory device 18 at block 47 and returns to block 32 to receive additional input data. If no data point exceeds the predetermined intensity threshold at block 36, then the process continues at block 40.
[0042] At block 40, the processor 16 performs a variety of functions to identify data points representing steps taken by the operator when moving in the aseptic environment as is described in detail below with reference to FIG. 3. Steps are detected using all data points in the moving time window 25 (FIG. 9). After detecting the operator’s steps at block 40 for the entire moving time window 25, the processor 16 calculates the step rate at block 42 for those steps detected within the current subset of data points (i.e. , the last 30 data points (region 728 of FIG. 9) of the 200 data points, representing the most recent 1 .5 seconds of data). More specifically, the step rate for steps falling within the current subset of data points is computed as one over the time difference between consecutive steps. For example, if a first step is indicated at a time ti and a second step is indicated at a later time t2, then the step rate is equal to 1 / (t2 -ti). As should be apparent from the foregoing, the data points representing operator steps need not be timestamped. The elapsed time between consecutive steps may be determined by the index separation (i.e., every 0.05 seconds due to the 20 Hertz sample rate) in the moving time window 25.
[0043] At block 44 the processor 16 compares the computed step rate to the predetermined rate threshold. As explained above, in one example thepredetermined rate threshold is 1.2 steps per second. It should be understood that other higher or lower rate thresholds may be used in this or different applications. If any step rate corresponding to the last 30 data points in the moving time window 25 exceeds the predetermined rate threshold, then the processor 16 causes the output device 28 to provide an operator alert at block 46 such as by vibrating, flashing an indicator and / or providing an audio alarm, stores the decision to provide the operator alert in the memory device 18 at block 47, and returns to block 32 to obtain additional input data. If no step rate exceeds the predetermined threshold at block 44, then the processor 16 causes the decision not to provide an operator alert to be stored in the memory device 18 at block 47 and returns to block 32.
[0044] Referring now to FIG. 3, a block diagram is provided depicting the various functions involved in detecting steps of the operator (i.e. , block 40 of FIG. 2). At block 48, the processor 16 determines the walking state of the operator. More specifically, the processor 16 determines from the last 1 .5 seconds of converted motion data (i.e., the current subset of data points am, am, . . . a2oo) whether the operator’s walking state is currently slow, normal or fast. To determine the current walking state, the processor first calculates the 95% quantile magnitude of the current subset of data points am, am, ■ ■ ■ a2oo. In other words, the processor 16 sorts the 30 data points by magnitude and averages the values of the 28th largest magnitude and the 29th largest magnitude (i.e., the 95% quantile of 30 samples is 30 * 0.95 = 28.5). The processor 16 compares the average of these values to walking state threshold values to determine the walking state corresponding to the last 1.5 seconds of operation. In one embodiment, the walking state threshold values are 1.3 and 1.7 as reflected in Table 1 below.Table 1In other embodiments the walking state threshold values may be greater than or less than the values listed above. Additionally, it should be understood that the desired walking state may depend upon the application or environment. In the examples described herein where the application is an aseptic environment, the desired walking state is slow. In other applications, the desired walking state may be normal or even fast.
[0045] After the processor 16 determines the current walking state as described above, the processor 16 applies a peak distance filter at block 50 to all 200 data points in the moving time window 25 to identify peaks in the data which potentially represent steps taken by the operator. A data point, ay, is considered a peak if its value is greater than or equal to a predetermined number, d, of data points that precede the data point ayand that follow the data point ay. The parameter d, which may be referred to as the minimal peak distance, depends upon the current walking state determined at block 48. In one example, for the slow walking state, d = 6, for the normal walking state, d = 5, and for the fast walking state d = 4. It should be understood that other minimal peak distances may be used in this or other applications. For data points aynear the boundaries of the data set (i.e. , near the left end and the right end of the moving time window 25), the values of preceding or following data points that are out of the moving time window 25 to which the data point ayis compared are set to zero. After the processor 16 identifies all the peaks in the 200 data points, the processor 16 applies a vibration elimination filter to the identified peaks at block 52 as described below.
[0046] The vibration elimination filter depicted at block 52 imposes a minimal value on the peaks identified at block 50 by comparing the magnitude of the peaks to minimum peak threshold values which depend upon the current walking state. In other words, all identified peaks that are less than or equal to the appropriate minimum peak threshold value are discarded. In one embodiment, the minimum peak threshold value for the slow walking state is 1 .08, the minimum peak threshold value for the normal walking state is 1 .1 , and the minimum peak threshold value forthe fast walking state is 1 .15. In other embodiments other larger or smaller minimum peak threshold values may be used.
[0047] At block 54, the processor 16 applies a dynamic window filter corresponding to the current walking state to the identified peaks that pass the vibration elimination filter as determined at block 52. In this process all 200 data points in the moving time window 25 are divided into windows having widths in terms of data points that depend upon the current walking state. In one embodiment, the window widths are 19 for the slow walking state, 12 for the normal walking state, and 8 for the fast walking state. For example, for the fast walking state the first 8 data points of the 200 data points are the first leftmost window, and the next 8 data points are the second leftmost window. It should be understood that other larger or smaller width values may be used in this or other applications. For each peak that passes through the vibration elimination filter in block 52, the processor 16 determines which window the peak is in and identifies the data point in that window having the minimum value and the data point in that window having the maximum value. With those data point values identified, the processor 16 computes a dynamic difference value according to the following equation: dynamicDifferencei = peak, - 0.5 * (dynamicMirii + dynamicMaxi) where peak, is the value of the peak identified in block 52, dynamicMirii is the value of the data point in the window including peak, having the minimum value of all the data points in the window and dynamicMaxi is the value of the data point in the window having the maximum value of all the data points in the window. If the dynamic difference value corresponding to an identified peak is less than or equal to a dynamic difference threshold, such as 0.15, then the peak is discarded. Other larger or smaller dynamic difference threshold values may be used in this or other applications. The processor 16 next evaluates the prominence of the peaks having dynamic difference values greater than 0.15 at block 56 as described below.
[0048] The peak prominence filter of block 56 concerns the height of each peak relative to the other peaks. For each peak remaining after processing at block 54, the processor 16 computes the graphical equivalent of a horizontal line thatpasses through the peak and extends to the left and to the right of the peak. The processor 16 terminates the line when it crosses a higher peak or reaches the end of the moving time window 25. The locations of termination of the horizontal line for each peak are identified as the left termination point, lefti and the right termination point, righti. The processor 16 then identifies the data point between the identified peak and / e that has the smallest magnitude (hereinafter, left Min,) and the data point between the identified peak and right that has the smallest magnitude (hereinafter, right Min / ). Next, the processor 16 computes a prominence value of the peak according to the following equation: prominence / - peak / - max (leftMin / , rightMin,). The processor 16 compares each prominence value to a minimum peak prominence threshold corresponding to the current walking state. In one embodiment, the minimum peak prominence threshold is 0.2 for the slow walking state, 0.25 for the normal walking state, and 0.35 for the fast walking state. Other larger or smaller minimum peak prominence threshold values may be used in other applications. If the prominence value of a peak is less than or equal to the applicable minimum peak prominence threshold, then the peak is discarded.
[0049] The processor 16 next determines at block 58 if more than one identified peak satisfied the prominence filter of block 56. If not, then the processor 16 returns to block 32 of FIG. 2 to collect more input data. If more than one identified peak satisfied the prominence filter, then the processor 16 applies a periodicity filter to the identified peaks at block 60. In this context, periodicity is the difference in indices or locations in the moving time window 25 between two consecutive peaks. For example, where two consecutive peaks are located at data point index aioo and data point index ai25 in the moving time window 25, the periodicity for the second peak is 25. After computing the periodicity for each peak, the processor 16 compares the periodicity values to predetermined minimum and maximum periodicity limits that depend upon the current walking state. In one embodiment, the predetermined minimum and maximum periodicity limits are as shown in Table 2 below.Table 2Other larger or smaller periodicity values may be used in this or other applications. Any identified peak having a periodicity value that falls outside the applicable minimum and maximum periodicity limits is discarded.
[0050] If more than three peaks pass through the periodicity filter as determined at block 62, then the processor 16 applies a similarity filter to the peaks at block 64. If not, then the processor 16 computes the step rate at block 42 of FIG.2 as described herein. The similarity filter checks whether a similarity parameter for each identified peak is greater than a similarity threshold. The similarity parameter of a peak is computed according to the following equation: similarity = -abs (peak, - peaki-2). It should be understood that peak, and peaki-2 correspond to the same foot of the operator while walking. In one embodiment, the similarity threshold is -0.5 for all walking states. Other larger or smaller similarity thresholds may be used in this or other applications. Any identified peaks having a similarity parameter that is less than or equal to the similarity threshold are discarded. The remaining peaks are identified as steps and used by the processor 16 in the step rate calculation as described above with reference to block 42 of FIG. 2.
[0051] FIGS. 4-6 provide flow charts showing additional detail for the aforementioned methods of providing real-time feedback to an operator upon detecting unacceptable motion of the operator. The method begins at step 100 in FIG. 4 where the processor 16 receives the output motion signals from the sensor(s) 20 as described above. At step 102, the processor 16 converts the output motion signals into data points by calculating the Euclidean norm of the vector represented by each set of x-axis, y-axis and z-axis signals from the sensor(s) 20. At step 104 the processor 16 compares the magnitude of each data point in the current subset ofdata points corresponding to the second time period 728 of the moving time window 25 to the predetermined intensity threshold as described above with reference to block 36 of FIG. 2. If the magnitude of a data point exceeds the predetermined intensity threshold, which indicates unacceptable motion of the operator, as determined at block 106, then the processor 16 causes the output device 28 to generate an operator alert at step 148. This determination is then stored in the memory device 18 at block 110 and the processor 16 returns to step 100 to obtain additional output motion signals. Otherwise, the processor 16 proceeds to step 112.
[0052] Steps 112, 114 and 116 represent the process for determining the current walking state of the operator. At step 112 the processor 16 calculates the 95% quantile magnitude of the current subset of data points. At step 114 the processor compares the calculated 95% quantile magnitude to the walking state threshold values in the manner described above to determine whether the current walking state is slow, normal or fast as represented by step 116. The current walking state is then used to configure the plurality of filters described above for identifying data points that correspond to steps taken by the operator.
[0053] The process for detecting steps depicted in FIG. 3 is shown in more detail in FIGS. 5 and 6. After the current walking state is determined at step 116 of FIG. 4, the processor 16 applies the peak magnitude filter to the data points to identify data points as peaks if the magnitude of the data point is greater than or equal to the magnitudes of d preceding data points in the moving time window and greater than or equal to the magnitudes of d following data points where d is the number corresponding to the current walking state as described above.
[0054] At step 120 the processor 16 applies the vibration elimination filter to peaks identified in step 118 and discards any identified peaks that have a magnitude that is less than or equal to the minimum peak threshold value as described above.
[0055] Steps 122, 124, 126 and 128 represent the dynamic window filter depicted at block 54 of FIG. 3. At step 122 the processor 16 divides the data points in the moving time window 25 into windows having widths (in terms of data points) that depend upon the current walking state as described above. At step 124 theprocessor 16 determines which of the windows corresponds to each of the identified peaks. At step 126 the processor 16 computes the dynamic difference value for each identified peak. As indicated above, the dynamic difference value is the magnitude of the identified peak minus 0.5 times the sum of the magnitude of the data point having the minimum magnitude in the window and the magnitude of the data point having the maximum magnitude in the window. At step 128 the processor 16 discards any identified peaks having a dynamic difference value that is less than or equal to the dynamic difference threshold.
[0056] Steps 130-140 of FIG. 5 represent the peak prominence filter depicted at block 56 of FIG. 3. At step 130, for each remaining identified peak, the processor 16 computes a horizontal line that passes through the identified peak. At step 132 the processor 16 terminates the horizontal line when it crosses another identified peak with a higher magnitude or reaches an end of the moving time window 25. These termination points are identified as the left termination point and the right termination point at step 134. At step 136 the processor 16 identifies a first data point as the smallest magnitude data point between the identified peak and the left termination point and a second data point as the smallest magnitude data point between the identified peak and the right termination point. Then, at step 138 the processor 16 computes, for each identified peak, a prominence value which is equal to the peak magnitude minus the greater of the magnitude of the first data point and the magnitude of the second data point. Finally, at step 140 the processor 16 discards any identified peaks having a prominence value which is less than or equal to a minimum peak prominence threshold corresponding to the current walking state.
[0057] After the prominence filter is applied, the processor 16 determines whether there is more than one identified peak remaining at step 142 of FIG. 6. If not, the processor 16 returns to step 100 of FIG. 4 to receive more output motion signals from the sensor(s) 20. If more than one identified peak remains at step 142, then the processor 16 applies the above-described periodicity filter at steps 150, 152 and 154. Specifically, the processor 16 determines at step 150 the location (in terms of data point indices in the moving time window 25) of each identified peak. At step152 the processor 16 assigns a periodicity value to each identified peak which corresponds to the number of data point indices between the identified peak and the immediately preceding identified peak. Then, at step 154, the processor 16 discards any identified peaks with a periodicity value that is less than a minimum periodicity limit or greater than a maximum periodicity limit as described above.
[0058] At step 156 the processor 16 determines whether there are more than three identified peaks remaining. If not, then the processor 16 returns to step 144 of FIG. 4 and computes the step rate as described above. If more than three identified peaks remain at step 156, then the processor 16 applies the similarity filter at steps 158, 160 and 162. Specifically, at step 158 the processor 16 determines the similarity parameter for each identified peak as the negative of the absolute value of the difference between the magnitude of the identified peak and an identified peak that precedes an identified peak immediately preceding the identified peak. At step 160 the processor 16 discards any identified peaks having a similarity parameter that is less than or equal to the similarity threshold as described above. At step 162 the processor 16 identifies the remaining identified peaks as steps and returns to step 144 of FIG. 4 to compute the step rate as described above.
[0059] Referring back to FIG. 4, as indicated above the processor 16 computes the step rate at step 144 between consecutive identified steps in the current subset of data points (e.g., in the most recent 1 .5 seconds, or 30 data points of the moving time window 25). Then, the processor 16 compares the computed step rate to the predetermined rate threshold at step 146. If the step rate exceeds the predetermined rate threshold, then the processor 16 causes the output device 28 to generate an operator alert at step 148. This decision is stored in the memory device 18 at step 110. If no step rate exceeds the predetermined rate threshold, then the processor 16 stores the decision not to generate an operator alert in the memory device 18 at step 110. After storing a decision at block 110, the processor 16 returns to step 100 to receive additional output motion signals from the sensor(s) 20 and the process repeats.
[0060] It should be understood that the various filters described above following the peak distance filter may be considered optional or occur in a different order than that described depending upon the application. In other words, in certain embodiments one or more of the vibration elimination filter, the dynamic window filter, the peak prominence filter, the periodicity filter and the similarity filter may be omitted, rearranged relative to other filters or supplemented by additional filters.
[0061] Referring now to FIG. 7, a graphic example is provided of the magnitude of 200 data points as a function of time and representing the first ten seconds of operation of the app 24. The depicted data points are converted from raw 3-axis accelerometer output motion signals as described above with reference to block 34 of FIG. 2. The depicted data points provide an example of data points corresponding to a normal walking state. In this example, the process described above identified 13 peaks as follows: peak 700 at index 48, peak 702 at index 61 , peak 704 at index 73, peak 706 at index 87, peak 708 at index 97, peak 710 at index 111 , peak 712 at index 120, peak 714 at index 132, peak 716 at index 144, peak 718 at index 156, peak 720 at index 168, peak 722 at index 181 , and peak 724 at index 196.
[0062] FIG. 8 is similar to FIG. 7 but includes an additional 20 data points obtained during a subsequent call of the app 24 (i.e. , the rightmost 20 data points) and excludes the oldest or leftmost 20 data points depicted in FIG. 7. As shown, the index locations of the 13 peaks identified in FIG. 7 as peaks 700, 702, 704, 706, 708, 710, 712, 714, 716, 718, 720, 722 and 724 are shifted to the left by 20. For example, peak 700 is at index 28 in FIG. 8, which is shifted to the left by 20 from its index of 48 in FIG. 7. As is also shown, another peak 726 at index 188 is identified during the subsequent call of the app 24. The data points in FIG. 8 continue to depict a normal walking state.
[0063] FIG. 9 depicts the set of 200 data points in the moving time window 25 after another subsequent call of the app 24. Again, the data points are shifted by 20 to the left and another 20 new data points are added between indices 180 and 200. This example depicts the results of the operator beginning to walk at a slow rate. Asdescribed above with reference to block 48 of FIG. 3, for each call of the app 24 the processor 16 determines the current walking state of the operator by calculating the 95% quantile magnitude of the most recent 30 data points (i.e. , the data points in the region 728 between and including indices 171 and 200) and comparing the result to the walking state threshold values provided in Table 1 above. In this example, the average of the 28thlargest magnitude data point (labeled 730) and the 29thlargest magnitude data point (labeled 731 ) is clearly less than the walking state threshold value of 1 .3. As such, the current walking state for this call of the app 24 is slow.
[0064] The change from the normal walking state depicted in FIGS. 7 and 8 to the slow walking state depicted in FIG. 9 affects several of the filters described above with reference to FIG. 3. More specifically, the current slow walking state affects the peak distance filter described above with reference to block 50 of FIG. 3 (i.e., changes the parameter d from 5 corresponding to the normal walking state to 6 corresponding to the slow walking state). The vibration elimination filter described above with reference to block 52 of FIG. 3 is also affected (i.e., changes the minimum peak threshold value from 1.1 corresponding to the normal walking state to 1 .08 corresponding to the slow walking state). As is the dynamic filter window described above with reference to block 54 of FIG. 3 (i.e., changes the window width from 12 corresponding to the normal walking state to 19 corresponding to the slow walking state). The change also affects the peak prominence filter described above with reference to block 56 of FIG. 3 (i.e., changes the minimum peak prominence threshold from 0.25 corresponding to the normal walking state to 0.2 corresponding to the slow walking state). Finally, the periodicity filter described above with reference to block 60 of FIG. 3 is also affected (i.e., changes the minimum and maximum periodicity limits from 9 and 16, respectively, corresponding to the normal walking state to 16 and 25, respectively, corresponding to the slow walking state).
[0065] As a result of the changes to the filters resulting from the current slow walking state, the number of identified peaks and the corresponding step rates are reduced. As shown in FIG. 9, only four peaks are now identified (i.e., peak 700 at index 8, peak 704 at index 33, peak 708 at index 57 and peak 712 at index 80). Asshould be apparent from the foregoing, the number of actual steps taken by the operator is clearly undercounted, but counting actual steps is not the goal of the system as is further described below.
[0066] An objective of the present systems and methods is to provide accurate, real-time feedback to the operator (i.e. , operator alerts) in response to recent unacceptable motion of the operator. As such, the feedback is based on the latest information about the operator’s motion (i.e., the most recent 30 data points). In this manner, the operator is not provided additional alerts for past alerted unacceptable motion after the behavior of the operator has changed to eliminate the unacceptable motion. In other words, once an operator is alerted of unacceptable motion, the operator will not receive another alert for that same unacceptable motion.
[0067] To further explain, consider an alternative approach which generates an accurate step rate calculation for all the data in the moving time window 25. This approach could partition the input data into segments, where each segment corresponds to a unique motion state, the filter parameters such as those described above could be adjusted within each segment to identify steps, and the step rate between successive steps could be computed. While this approach would yield an accurate step rate for all the data received within the moving time window 25, a large portion of the result would be immediately discarded or would not be acted upon because the operator should not be alerted for past alerted unacceptable motion.
[0068] Moreover, achieving an accurate step rate calculation over the entire moving time window 25, which is unnecessary for the operation of the systems and methods of the present disclosure, would be costly in terms of processing and memory resources. Properly partitioning the data according to different motion states would require detecting the change points of the motion states, a process that is costly or impractical from a computational power perspective using certain hardware such as the wearable device 10. Alternatively, one may cache and pass previous execution states that cover the entire input buffer as additional input to thealgorithm. However, this would also be costly or impractical given the memory capacity of certain hardware.
[0069] As an objective of the present disclosure is to provide accurate, realtime feedback in response to detecting unacceptable motion, not to compute an accurate step rate uniformly across all data in the moving time window 25, the context subset of data points serves only as context to accurately detect steps within the current subset of data points (i.e. , region 728 of the moving time window 25). Using the periodicity filter as an example and with respect to FIG. 9 which depicts the transition from a normal walking state to a slow walking state, the periodicity value increases. Consequently, in the actual normal walking region, only a subset of steps will remain. As shown in FIG. 9, only peaks 700, 704, 708 and 712 at indices 8, 33, 57 and 80, respectively, remain as identified steps, which correspond to peaks 700, 704, 708 and 712 at indices 28, 53, 77 and 100 of the previous call depicted in FIG. 8. Previously identified steps 702, 706, 710, 714, 716, 718, 720, 722, 724 and 726 have not been re-identified as steps because they were discarded as a result of not passing one of the various filters described above, which are adjusted to reflect the current slow walking state. As the remaining steps 700, 704, 708 and 712 are “artificially” spread out (due to the omission of the above-mentioned previously- identified steps), even if they were used to calculate a step rate, they would not result in an operator alert as if they were current normal walking state data. This outcome is not a defect but an intentional feature of some embodiments: since the previously-identified peaks in the first time period 27 represent past activity that would have already generated any required operator alerts, mis-counting of steps is acceptable in that first time period 27 provided that steps in the current subset of data (i.e., region 728 of the moving time window 25) is accurately detected.
[0070] On the other hand, the periodicity value decreases when there is a transition from slow walking to normal walking. Consequently, in the actual slow walking region, peaks representing steps will be mostly filtered out because their periodicity values would exceed the maximum periodicity limit. As a result, no steps will be detected in this region and no operator alert is generated. In the latestnormal walking region, the correct filter values ensure steps are identified more accurately as a result of using the context subset of data points. As such, the systems and methods of the present disclosure exploit the fact that the step rate need not be uniformly accurate to provide an approach that is more efficient and practical from the perspective of computational resources used and memory capacity required.
[0071] FIGS. 10-13 provide additional block diagrams of exemplary functions performed by the devices of the system shown in FIGS. 1 A and 1 B, according to some embodiments. Unlike the functions discussed in FIGS. 2-6, the methods or functions described in FIGS. 10-13 do not count steps or compute a step rate, nor do they compare steps or step rate to a threshold to determine whether or not to alert the operator. Instead, the functions discussed in FIGS. 10-13 use motion signals from the sensor(s) 20 to determine a speed at which the operator is walking and compares the determined speed to a threshold. If the determined speed is greater than the threshold, the functions issue an alert to the operator.
[0072] In the following description the processor 16 of wearable device 10 is described as performing the various functions, although as set forth above multiple other implementation approaches are possible and anticipated by this disclosure. For example, the functions described in FIGS. 10-13 may be performed by another one of mobile device 12, computing device 14, or even wearable sensor device 20, or the functions may be distributed across any two or more of the aforementioned devices. In general, input data is provided by the sensor(s) 20 in the form of motion signals at block 1002. As discussed previously, the sensor(s) 20 may be integrated with wearable device 10 (as shown in FIG. 1A) or may be disposed apart from device 10 (as shown in FIG. 1 B). For the functions described in FIGS. 10-13, it may be preferable to use sensor(s) 20 that are disposed apart from device 10 (as shown in FIG. 1 B), and in particular use sensor(s) 20 that are not attached to the operator’s hands, wrists, or arms, so as to mitigate interference from movement of the operator’s hands, wrists, or arms as he / she works and that are separate from the speed at which the operator is walking. In some embodiments, for instance, thesensor(s) 20 may be attached to one or both of the operator’s feet (e.g., clipped to one or both of the operator’s shoes). The input data received at block 1002 may comprise a plurality of accelerometer signals from an accelerometer (e.g., a triaxial accelerometer) and a plurality of gyroscope signals from a gyroscope (e.g., a triaxial gyroscope) housed within a wearable sensor device, such as sensor(s) 20 discussed above in relation to FIG. 1 B. In some embodiments, the input data received at block 1002 may further comprise a plurality of magnetometer signals from a magnetometer also housed within the wearable sensor device. Such signals may be sampled at a sampling rate of 100 Hz, although lower or higher sampling rates (e.g., between 0.1 and 200 Hz) may also be used.
[0073] At block 1004, the processor 16 may determine a three-dimensional orientation of the wearable sensor device based on the received gyroscope signals. This allows the processor 16 to determine how the wearable sensor device is oriented relative to the “up” or “down” direction relative to the earth. In some embodiments, the wearable device 10 may also use the plurality of magnetometer signals from the magnetometer to determine which way is “north”, and thereby further refine the determined three-dimensional orientation of the wearable sensor device. At block 1006, the processor 16 may filter the received accelerometer signals to remove gravitational acceleration based on the three-dimensional orientation determined at block 1004. This may be done by adding a vector having magnitude equal to gravitational acceleration (i.e. , 9.8 m / s2) in the “up” direction to the three-dimensional accelerometer data received at step 1002. Or, alternatively, this may be done by subtracting a vector having magnitude equal to gravitational acceleration in the “down” direction from the three-dimensional accelerometer data. In yet further embodiments, this may be done by removing and / or disregarding all components of the three-dimensional accelerometer data along the vertical axis (e.g., along the Z-axis) so as to convert the three-dimensional accelerometer data into two-dimensional data (e.g., solely in the X-Y plane). At block 1008, the processor 16 may detect unacceptable motion of the operator based on the filtered accelerometer signals. For instance, the processor 16 may detect when the filteredaccelerometer signals exceed a predetermined acceleration threshold. In some embodiments, the accelerometer signals may first be filtered and / or processed further before comparison with an acceleration threshold. For instance, the accelerometer signals may be downsampled, aggregated, filtered to reduce noise using a low pass, bandpass, or high pass filter, or other filtering or processing techniques. Other techniques for detecting unacceptable motion are discussed below in relation to FIGS. 11-13. At block 1010, the processor 16 may generate an operator alert when unacceptable motion is detected. As discussed previously, such an alert may be issued using output device 28 of wearable device 10. For instance, the alert may be issued as a haptic alert provided by a wrist-worn wearable device 10.
[0074] In some embodiments, upon completing block 1010, the processor 16 may branch back to block 1002 so as to continually receive and process accelerometer and gyroscope signals for unacceptable motion. This loop may continue indefinitely until processor 16 is instructed to stop or is turned off by an operator, e.g., when the operator leaves the aseptic manufacturing area.
[0075] This approach of filtering accelerometer signals to remove gravitational acceleration based on an up / down orientation determined by gyroscope signals represents a technical improvement to the functioning of the systems for detecting operator walking speed described herein. Although prior systems may attempt to remove the influence of gravity in detected operator acceleration signals through more simplistic methods, these methods generally result in a less accurate determined velocity. For instance, prior systems may attempt to remove the influence of gravity by passing the accelerometer signals through a high-pass filter that removes low frequency signals, since the influence of gravity can be modeled as a constant signal of low frequency. However, filtering the accelerometer signals through a high-pass filter in this fashion reduces the fidelity of the measured accelerometer data. This reduction in fidelity and / or resolution may be acceptable for systems in which the filtered accelerometer signals are merely being used to calculate an acceleration magnitude, e.g., to detect whether the operatorexperiences a sudden sharp shock (such as a fall or rapid, jerking movement from a crash). However, this reduction in fidelity and / or resolution is less desirable when the measured accelerometer data is being integrated to derive a change in velocity, and the derived change in velocity is being used to calculate an instantaneous walking velocity (as is the case here). The accelerometer signals should preferably retain sufficient fidelity and / or resolution to allow accurate determination of the change in velocity, which requires preserving not just the magnitude of the accelerometer signals but also their direction in three- or two-dimensional space. Merely passing the accelerometer signals through a high-pass filter undesirably affects the direction of the accelerometer signals in three-dimensional space, which leads to undesirable errors in the determined velocity. Instead, by first using a gyroscope to determine an up / down orientation, and then using the determined up / down orientation to remove gravity, the influence of gravity can be more precisely filtered out without affecting the direction of the measured accelerometer signals, thus allowing for a more accurate determination of the operator’s velocity and / or speed.
[0076] Other prior systems may also simply attempt to align the axes of the accelerometer on the operator’s body such that the z-axis is set perpendicular to the ground, and then ignore all accelerometer signals along the z-axis. However, such prior systems either require the z-axis of the accelerometer on the sensor(s) 20 to be constantly aligned with up / down direction (which may be difficult to achieve on a sensor pinned to a moving part of the operator’s body) or that the operator accept unavoidable alignment errors as the accelerometer shifts and turns during the operator’s movement. The currently disclosed technique of using a gyroscope to determine the up / down direction, and then using that determined direction to filter out the influence of gravity, allows for precise removal of gravity without requiring that the sensor(s) 20 be oriented in a certain direction.
[0077] FIG. 11 is a block diagram depicting in further detail one possible method for implementing block 1008, i.e. , a method for detecting unacceptable motion of the operator based on the filtered accelerometer signals. At block 1102, an acceleration norm may be calculated from the filtered accelerometer signals. Forinstance, this norm may be a scalar norm calculated by the expression / x2+ y2+ z2, where x, y, and z are the three axes of the three-dimensional filtered accelerometer data (or in embodiments where the filtered accelerometer signal is a purely two-dimensional signal, this may be calculated using the expression / x2+ y2. This may be done for multiple time points during a monitored time period to construct a time-series signal comprising a plurality of data points, wherein each datapoint represents a separately measured acceleration norm. An exemplary output of block 1102 is illustrated at 1202 in FIG. 12.
[0078] At block 1104, periods of time within the time-series acceleration norm signal may be analyzed to determine periods of time in which the acceleration norm is less than an acceleration threshold (e.g., X m / s2, where X is a configurable parameter). Such determined periods of time may be designated “stationary moments” where the wearable sensor device is considered to be at rest. While it is theoretically possible for the accelerometer to record little to no acceleration while moving at a constant velocity, in practice it is typically quite unlikely and / or difficult for an operator to move a wearable accelerometer at such a constant velocity that the accelerometer records little to no acceleration. Therefore, when the acceleration norm is below the acceleration threshold during a certain period of time, it is assumed that the wearable sensor is at rest and that period of time is designated a stationary moment. An exemplary output of block 1104 is illustrated at 1204 of FIG. 12, in which stationary moments are set to a value of 0 and non-stationary moments are set to a value of 1 .
[0079] At block 1106, the operator’s velocity of movement is set equal to zero during the stationary moments designated in block 1104. And at block 1108, the filtered accelerometer signals are integrated to determine a change in velocity at all time points outside of said stationary moments. By assuming that velocity is zero during stationary moments, velocities during nonstationary moments may be calculated based on the determined change in velocity by calculating the cumulative determined change in velocity since the most recent stationary moment. Anexemplary output of block 1108 is illustrated at 1206 of FIG. 12. Since the determined velocity is calculated as the cumulative determined change in velocity since the most recent stationary moment (where velocity is set equal to zero), the determined velocity may become more and more affected by error introduced by sensor inaccuracies and / or mathematical rounding error as more time passes from the most recent stationary moment. Accordingly, it is important to accurately identify stationary moments and ensure that they are preferably not spaced too far apart in time. For this reason, embodiments where the sensor(s) 20 are placed on one or both of the operator’s feet (e.g., clipped to one or both of the operator’s shoes) may be advantageous because a stationary moment may be detected and declared every time the operator’s foot touches the ground, and before said foot lifts off the ground again for the next step. This ensures that stationary moments are periodically detected and declared in order to clear any accumulated error introduced by sensor inaccuracies and / or mathematical rounding.
[0080] At block 1110, the determined operator velocity is filtered to reduce and / or mitigate noise. For example, the determined operator velocity may be sampled at a frequency of 100 Hz. To reduce and / or mitigate noise, the operator velocity may be downsampled to a lower time resolution. This downsampling may be done by aggregating the determined velocity into discrete velocity aggregation windows having a pre-determined duration, for example, 1.5s. All velocity datapoints within a velocity aggregation window may be aggregated according to any known technique, such as summing, and / or computing a mean or median average. In some embodiments, this filtering may be done using a Kalman filter. Kalman filters are especially useful in embodiments where the sensor(s) 20 are attached to one or both of the operator’s feet, as a correctly configured Kalman filter was experimentally determined by the inventors to be especially helpful in filtering out periodic peaks / valleys in the determined velocity that are indicative of the speed at which the operator is swinging his / her foot with each step, but not necessarily indicative of the speed at which the operator’s center of mass is moving laterally as he / she walks. An exemplary output of block 1108 is illustrated at 1208 of FIG. 12. As can be seen bycomparing 1206 with 1208, the filtering and / or aggregation operation of block 1108 reduces the prominence of sharp velocity peaks. In some embodiments, mitigation of these sharp velocity peaks reduces the frequency of false positives, in which the processor 16 mistakenly alerts the operator even though the operator has not moved too fast or in an otherwise unacceptable manner.
[0081] At block 1112, the determined operator velocity is compared against a predetermined velocity threshold. For example, the United States Food and Drug Administration (FDA) has issued guidance that operators in an aseptic manufacturing environment should not walk any faster than 1 .2 miles per hour, or approximately 0.6 meters per second. The velocity threshold may therefore be set at 0.6 meters per second (though higher or lower velocity thresholds, such as 0.5, 1.0, or 1.5 meters per second may also be used). This velocity threshold is illustrated by line 1210 in chart 1208. If the operator’s determined velocity is greater than or equal to the velocity threshold (e.g., above or at line 1210), the processor 16 determines that unacceptable motion of the operator has been detected at block 1114. If the operator’s determined velocity is less than the velocity threshold (i.e. , below line 1210), the processor 16 determines that no unacceptable motion of the operator has been detected. Either way, the processor 16 proceeds to block 1010 in FIG. 10 after determining whether unacceptable motion has been detected.
[0082] Each of the prior described functions may be deleted, re-arranged, modified, or added to according to various embodiments. For example, step 1110 may be omitted entirely, and the output of block 1108 may be compared directly against the threshold at block 1112 without any filtering.
[0083] FIGS. 13A and 13B are block diagrams depicting in yet greater detail the functions generally described in FIGS. 10-12. In some exemplary non-limiting examples, three-dimensional accelerometer signals may be sampled at a sampling rate (e.g., 100 Hz) during operation of the app 24, converted into data points, and added to a growing time-series signal in time ascending order for analysis. The three-dimensional gyroscope signals as well as magnetometer signals (if a magnetometer is present in the wearable sensor device) may also similar besampled at a sampling rate, converted into data points, and added to a growing time-series signal in time ascending order for analysis. At the exemplary sampling rate of 100 Hz, a new accelerometer signal, gyroscope signal, and magnetometer signal may be added to their respective growing time-series signal once every 0.01s.
[0084] As previously described, the gyroscope signals may be used to determine the wearable sensor device’s orientation. The magnetometer signals may also be used to refine and update the wearable sensor device’s determined orientation in real time. The determined orientation may then be used to determine which way is “up” and “down” for the wearable sensor device and used to filter the received accelerometer signals to remove the influence of gravity. All of this may be done in real time, e.g., within a few seconds of detection and / or receipt of the most recent accelerometer, gyroscope, and / or magnetometer signals. The filtered accelerometer signals may also be added to a growing time-series signal in time ascending order for analysis.
[0085] The functions described in FIG. 13A and 13B include technical improvements that improve the accuracy of the detected speed of the operator. First, the functions described in FIG. 13A and 13B include enhanced methods for accurately detecting and declaring “stationary moments”, which as previously explained, are important for periodically resetting the measured velocity to zero in order to clear accumulated measurement or calculation error. Stationary moments may be detected and / or declared if all accelerometer signals within a testing window (e.g., having duration equal to a duration threshold Tmin) are found to be smaller than or equal to an acceleration threshold (Amin). The inventors have appreciated that employing a single duration threshold Tmin for the testing window and a single acceleration threshold Amin regardless of how fast the operator is walking may result in inaccurate detection of stationary moments. Instead, using different duration thresholds Tmin and acceleration thresholds Amin depending on whether the operator is walking at a fast pace, a moderate pace, and / or a slow pace may help processor 16 accurately detect and declare stationary moments.
[0086] FIG. 14 depicts the filtered accelerometer signals (e.g., with gravity removed as discussed in step 1006 of FIG. 10) recorded at a first time period 1402 in which the operator is walking fast, at a second time period 1404 in which the operator is walking at a moderate pace, and at a third time period 1406 in which the operator is walking at a slow pace. When an operator is walking fast (1402), the peaks in the filtered accelerometer signals are generally larger in magnitude and closer together in time. Similarly, when an operator is walking at a moderate pace (1404), the peaks in the filtered accelerometer signals are generally moderate in magnitude and are spread further apart together in time. And when an operator is walking at a slow pace (1406), the peaks in the filtered accelerometer signals are generally small in magnitude and are spread even further apart in time.
[0087] Accordingly, if the average of all filtered accelerometer signals within a walking state reassessment window (having duration Tstate, e.g., 2 seconds) are found to exceed a first threshold (e.g., 15 m / s2), the operator is determined to be walking at a fast pace and a first duration threshold Tmin and a first accelerometer threshold Amin are used to detect and declare stationary moments. If the average of all filtered accelerometer signals within said walking state reassessment window is between the first threshold (e.g., 15 m / s2) and a second (smaller) threshold (e.g., 6 m / s2), the operator is determined to be walking at a moderate pace and a second duration threshold Tmin and a second accelerometer threshold Amin may be used to detect and declare stationary moments. And finally, if the average of all filtered accelerometer signals within said walking state reassessment window is smaller than or equal to the second (smaller) threshold (e.g., 6 m / s2), the operator is determined to be walking at a slow pace and a third duration threshold Tmin and third accelerometer threshold Amin may be used to detect and declare stationary moments. Table 3 below summarizes an exemplary set of duration and accelerometer thresholds to be used in each walking state:Table 3
[0088] Although the foregoing description describes employing three distinct walking states (“fast”, “moderate” and “slow”), any number of walking states greater than or equal to two may be used. For example, in some embodiments, just two states (e.g., “fast” and “slow”) may be used. And in other embodiments, three, four, five, or six different states may be used. The methods described herein may be readily extended to accommodate different numbers of walking states, each employing different duration thresholds Tmin and accelerometer thresholds Amin for detecting stationary moments.
[0089] Second, the functions described in FIG. 13A and 13B include enhanced methods for mitigating residual gravitational influence that were not fully removed even after the filtering operation described above in step 1006 of FIG. 10. The inventors have appreciated that even after the filtering step 1006 of FIG. 10, some residual influence from gravity may still be present in the filtered accelerometer signals. This residual influence may be due to inaccuracies in alignment between the gyroscopes and accelerometers used in the employed sensor devices. For instance, if the gyroscopes are slightly mis-aligned from the accelerometers, the “up” and “down” direction derived from the gyroscope data may not be fully aligned with the axes of the accelerometer. Therefore, even after adding a vector equal to gravitational acceleration in the “up” direction as determined fromgyroscope data (or subtracting a vector equal to gravitational acceleration in the “down” direction) from tri-axial accelerometer data derived from the accelerometer, the resulting filtered accelerometer signals may still include some residual detected gravitational acceleration. Such inaccuracies cannot be completely eliminated without requiring repeated, expensive, and / or time-consuming calibration of the gyroscopes and accelerometers used herein.
[0090] The inventors have further appreciated that such residual influence may be detected and / or measured during stationary moments. The sensor(s) 20 are assumed to be completely stationary during stationary moments. Accordingly, any accelerometer signals during the stationary moment should average out to zero. If, however, the average of all acceleration in any direction (e.g., x, y, or z) during the stationary moment averages out to some small but detectable non-zero number, the functions described in FIG. 13A and 13B assume that average acceleration is due to the residual influence of gravity and will subtract that average acceleration from the filtered accelerometer signals output by step 1006 before using those signals to calculate the operator’s velocity and / or speed of movement. In some embodiments, this residual acceleration may be calculated in all three dimensions x, y, and z. In other words, the functions described in FIGS. 13A and 13B will calculate a residual acceleration Ax in the x direction, a residual acceleration Ay in the y direction, and a residual acceleration Az in the z direction, and will subtract each component (Ax, Ay, and Az) from the filtered accelerometer signals output by step 1006. In other embodiments, this residual acceleration may be calculated only in the x and y directions (i.e. , only Ax and Ay, which are parallel to the ground), while disregarding all acceleration in the z direction (i.e., not calculating, or disregarding, Az, which is perpendicular to the ground). In such embodiments, the filtered accelerometer signals may be used to calculate the operator’s motion strictly in the x-y plane.
[0091] FIG. 15 shows exemplary accelerometer signals during a “stationary moment” after being processed through the operations described above in step 1006. Signal 1502 shows acceleration along the x-axis, signal 1504 shows acceleration along the y-axis, and signal 1506 shows acceleration along the z-axis,where the x and y axes are parallel to the ground and the z-axis is parallel to the direction of gravity (i.e. , perpendicular to the ground). As can be seen, signal 1504 shows the acceleration along the y-axis (Ay) averages to around 0g, as expected during a stationary moment. However, signal 1506 shows the z-axis acceleration averages to the small but detectable value (Az) of around -0.35g, and signal 1502 shows the acceleration along the x-axis averages to the small but detectable value (Ax) of around +0.1 g. Since signals 1502, 1504, and 1506 were taken during a stationary moment, these non-zero average accelerations Ax and Az are assumed to be due to the residual effects of gravity that were not completely removed by the filtering operations described above in step 1006 (e.g., due to misalignment between the axes of the gyroscope and accelerometer). Accordingly, Ax (+0.1 g) and Az (- 0.35g) may be subtracted from the output of step 1006 before the filtered accelerometer signals are used to calculate the operator’s speed of movement. In some embodiments, Az may not be calculated and / or disregarded, and only Ax (and Ay, if it were found to be non-zero) are subtracted from the filtered accelerometer signals before calculating the operator’s speed of movement.
[0092] The functions described in FIG. 13A start at block 1302, where the current walking state (e.g., “fast”, “moderate”, and “slow”) is initialized. The initial walking state may be set to any of these walking states. Setting the current walking state also sets the acceleration threshold Amin and duration thresholds Tmin to use for detecting stationary moments, as previously described. At block 1302, the velocity aggregation window Tvei (e.g., having duration 1 ,5s) for aggregating velocity and the walking state reassessment window Tstate (e.g., having duration 2s) for reassessing the operator’s walking state, are both reset to begin at the current time.
[0093] At block 1304, a batch of filtered accelerometer signals within the next, or the most recent, testing window is obtained. The filtered accelerometer signals may be filtered according to the filtering operation described previously at step 1006 of FIG. 10. In some embodiments, the accelerometer signals output by step 1006 may be further modified by subtracting Ax, Ay, and / or Az as calculated from the most recent stationary moment. Calculation of Ax, Ay, and / or Az during a stationarymoment are described in further detail below in step 1310. If there is no previous stationary moment, Ax, Ay, and / or Az may be initialized to 0. Furthermore, in some embodiments that are configured to calculate the operator’s motion strictly in the x-y plane, Az may not be calculated and / or may be calculated but disregarded.
[0094] The duration of the testing window is the duration threshold Tmin which, as previously discussed, is set by the current walking state. For instance, if the current walking state is initialized to “slow”, the testing window will have duration Tmin = 0.1 s (e.g., according to the exemplary embodiment shown in Table 3).
[0095] At block 1306, the accelerometer signals in the batch obtained at block 1304 are compared against an accelerometer threshold (Amin). The accelerometer threshold is determined by the current walking state. For instance, if the current walking state is set to “slow”, then the acceleration threshold Amin may be set to1 .Om / s2, according to Table 3. In some embodiments, the norm of the accelerometer signals within the testing window is first computed, and it is the norm that is compared against the accelerometer threshold. In other embodiments, the accelerometer signals in each axis is compared against the accelerometer threshold. If the accelerometer signals is below the threshold at all time points within the most recently obtained testing window, then the processor 16 branches to block 1310 where a “stationary moment” is declared.
[0096] As discussed herein, when a “stationary moment” is declared, the velocity is set to zero for the current testing window. Furthermore, an adjustment for potential sensor misalignment is calculated. This can be done by averaging all accelerometer signals in the x-direction, y-direction, and (optionally) the z-direction within the testing window, to derive Ax, Ay, and (optionally) Az as previously discussed.
[0097] If, however, one or more accelerometer signals within the testing window is above the accelerometer threshold Amin, the processor branches to block 1308. At block 1308, the integral of all accelerometer signals within the testing window is calculated to obtain a directional vector indicative of the detected change in velocity since the last testing window. After the integral is calculated in block 1308,the velocity for the current testing window is set equal to the ending velocity from the prior testing window plus the integral of the accelerometer signals from the current testing window in block 1312.
[0098] Upon completion of block 1310 or 1312, processor 16 proceeds to block 1314 in FIG. 13B, where it is determined whether a velocity aggregation window has been reached. A velocity aggregation window is a time window of predetermined duration Tvei (e.g., 1 ,5s) that is greater than the testing window’s duration. Accordingly, the number of testing windows within a single velocity aggregation window is equal to Tvei I Tmin (since each testing window has duration Tmin). If less than Tvei / Tmin testing windows have been previously processed through block 1314, then processor 16 branches back to block 1304 to obtain additional accelerometer signals from the next testing window. If, however, the number of testing windows that have been processed is equal to or greater than Tvei / Tmin, processor 16 determines that the velocity aggregation window has been reached and branches to block 1316. It should be understood that the duration of the velocity aggregation window Tvei is a configurable parameter that may be varied according to different embodiments.
[0099] At block 1316, processor 16 aggregates the velocity over all testing windows within the current velocity aggregation window. This aggregation may be done in different ways. In some embodiments, the velocity of all testing windows within the velocity aggregation window may be summed together. In other embodiments, the velocity of all testing windows within the velocity aggregation window may be averaged (e.g., mean or median). However the aggregation is done, the output of block 1316 represents an aggregation of the velocity of all testing windows within the velocity aggregation window.
[0100] At block 1318, the operator’s aggregated speed may be determined based on the aggregated velocity output by block 1316. For example, the norm of the aggregated velocity may be calculated according to the formula x? + y? + z? where x represents the aggregated velocity magnitude along the x-axis, / represents the aggregated velocity magnitude along the y-axis and z / represents the aggregated velocity magnitude along the z-axis. In some embodiments, any acceleration in the z-direction (i.e. , perpendicular to the ground) may be disregarded, and the norm of the aggregated velocity may be calculated simply as x2+ y?.
[0101] At block 1318, the operator’s aggregated speed is compared to a speed threshold, such as (but not limited to) 0.6 m / s. If the operator’s speed is below or equal the threshold the processor 16 determines that no unacceptable motion has been detected and branches back to block 1322. If, however, the operator’s speed is greater than the threshold the processor 16 determines that unacceptable motion has been detected and alerts the operator at block 1320 via output device 28 as previously described. In some embodiments, the operator may be alerted in real time upon occurrence of unacceptable motion. The aforementioned data sampling rate, testing window, and velocity aggregation windows may be configured to allow processor 16 to detect within a few seconds when the operator starts moving in an unacceptable manner, and to alert the operator in time for the operator to correct his / her movement. For example, the functions described in FIGS. 10-13 may be configured to alert the operator within 0.5 seconds, one second, two seconds, or three seconds of occurrence of unacceptable operator motion. After alerting the operator, block 1320 branches to block 1322.
[0102] At block 1322, processor 16 determines whether a walking state reassessment window has been reached. A walking state reassessment window is a time window of predetermined duration Tstate that is greater than the testing window’s duration. Accordingly, the number of testing windows within a single walking state reassessment window is equal to Tstate I Tmin (again, since each testing window has duration Tmin). If less than Tvei I Tmin testing windows have been previously processed through block 1322, then processor 16 concludes it is not yet time to reassess the operator’s walking state and branches back to block 1304 to obtain additional accelerometer signals from the next testing window. If, however, the number of testing windows that have been processed is equal to or greater than Tstate / Tmin,processor 16 determines that the walking state reassessment window has been reached and branches to block 1324.
[0103] At block 1324, processor 16 calculates the average acceleration over all acceleration signals within the most recently-completed walking state reassessment window. This can be done by calculating the scalar norm of all multi- axial accelerometer signals in the window and then calculating the average of all the calculated scalar norms, or by averaging all multi-axial accelerometer signals to derive one aggregate multi-dimensional vector, and then calculating the scalar norm of the aggregated vector. The output of this averaging operation is a scalar value representative of the average acceleration magnitude over all acceleration signals within the most recently-completed walking state reassessment window. The average acceleration magnitude is then compared to a set of thresholds, e.g., a first threshold and a second (smaller) threshold. If the average acceleration magnitude is greater than the first threshold, the current walking state is set to “fast” and the acceleration threshold Amin and duration threshold Tmin are updated accordingly (e.g., according to Table 3, or a similar lookup table). If the average acceleration magnitude is in-between the first threshold and the second threshold, the current walking state is set to “moderate” and the acceleration threshold Amin and duration thresholds Tmin are updated accordingly. And finally, if the average acceleration magnitude is less than or equal to the second threshold, the current walking state is set to “slow” and the acceleration threshold Amin and duration threshold Tmin are again updated accordingly. Once again, if more or less than three walking states are used, the aforementioned description may be simplified and / or extended as appropriate to accommodate a different number of walking states. Upon completion of this walking state reassessment process at block 1324, the processor 16 branches back to 1304 in FIG. 13A to collect the next batch of accelerometer signals.
[0104] As should be apparent from the foregoing, the data collected during operation of the app 24 may be stored on the wearable device 10 throughout the course of an operator’s shift (e.g., three to five hours). As indicated above, the datamay be transferred to the mobile device 12 and / or the computing device 14 after the shift and later analyzed to, for example, evaluate operators’ performance and / or to identify operators who could benefit from additional training (i.e. , operators who received one or more operator alerts during their shift). The data, in turn, may be further analyzed to determine the effectiveness of various types of operator training.
[0105] As should also be apparent from the foregoing, the systems and methods described herein represent an improvement in the technical field of motion detection and more specifically an improved solution to the technical problem of monitoring movement of operators in an aseptic environment to reduce air turbulence and the corresponding contamination risks. Other approaches to this problem do not provide, among other things, the technical solution of real-time analysis of motion data corresponding to movement of the operator in a manner that accurately and reliably identifies the current speed of movement of the operator, both in terms of intensity and step rate. These other approaches are not capable of providing real-time feedback to the operator when unacceptable motion is detected to permit the operator change his or her behavior immediately.
[0106] Any directional references used with respect to any of the figures, such as right or left, up or down, or top or bottom, are intended for convenience of description, and do not limit the present disclosure or any of its components to any particular positional or spatial orientation. Additionally, any reference to rotation in a clockwise direction or a counterclockwise direction is simply illustrative. Any such rotation may be implemented in the reverse direction as that described herein.
[0107] Although the foregoing text sets forth a detailed description of embodiments of the disclosure, it should be understood that the legal scope of the invention is defined by the words of the claims set forth at the end of this patent and equivalents. The detailed description is to be construed as exemplary only and does not describe every possible embodiment. Numerous alternative embodiments may be implemented, using either current technology or technology developed after the filing date of this patent, which would still fall within the scope of the claims.
[0108] The following additional considerations apply to the foregoing description. Throughout this specification, plural instances may implement components, operations, or structures described as a single instance. Although individual operations of one or more methods are illustrated and described as separate operations, one or more of the individual operations may be performed concurrently, and nothing requires that the operations be performed in the order illustrated. Structures and functionality presented as separate components in example configurations may be implemented as a combined structure or component. Similarly, structures and functionality presented as a single component may be implemented as separate components. These and other variations, modifications, additions, and improvements fall within the scope of the subject matter herein.
[0109] Additionally, certain embodiments are described herein as including logic or a number of routines, subroutines, applications, or instructions. These may constitute either software (e.g., code embodied on a machine-readable medium or in a transmission signal) or hardware. In hardware, the routines, etc., are tangible units capable of performing certain operations and may be configured or arranged in a certain manner. In example embodiments, one or more computer systems (e.g., a standalone, client or server computer system) or one or more hardware modules of a computer system (e.g., a processor or a group of processors) may be configured by software (e.g., an application or application portion) as a hardware module that operates to perform certain operations as described herein.
[0110] In various embodiments, a hardware module may be implemented mechanically or electronically. For example, a hardware module may comprise dedicated circuitry or logic that is permanently configured (e.g., as a special-purpose processor, such as a field programmable gate array (FPGA) or an applicationspecific integrated circuit (ASIC)) to perform certain operations. A hardware module may also comprise programmable logic or circuitry (e.g., as encompassed within a general-purpose processor or other programmable processor) that is temporarily configured by software to perform certain operations. It will be appreciated that the decision to implement a hardware module mechanically, in dedicated andpermanently configured circuitry, or in temporarily configured circuitry (e.g., configured by software) may be driven by cost and time considerations.
[0111] Accordingly, the term “hardware module” should be understood to encompass a tangible entity, be that an entity that is physically constructed, permanently configured (e.g., hardwired), or temporarily configured (e.g., programmed) to operate in a certain manner or to perform certain operations described herein. Considering embodiments in which hardware modules are temporarily configured (e.g., programmed), each of the hardware modules need not be configured or instantiated at any one instance in time. For example, where the hardware modules comprise a general-purpose processor configured using software, the general-purpose processor may be configured as respective different hardware modules at different times. Software may accordingly configure a processor, for example, to constitute a particular hardware module at one instance of time and to constitute a different hardware module at a different instance of time.
[0112] Hardware modules may provide information to, and receive information from, other hardware modules. Accordingly, the described hardware modules may be regarded as being communicatively coupled. Where multiple of such hardware modules exist contemporaneously, communications may be achieved through signal transmission (e.g., over appropriate circuits and buses) that connect the hardware modules. In embodiments in which multiple hardware modules are configured or instantiated at various times, communications between such hardware modules may be achieved, for example, through the storage and retrieval of information in memory structures to which the multiple hardware modules have access. For example, one hardware module may perform an operation and store the output of that operation in a memory device to which it is communicatively coupled. A further hardware module may then, at a later time, access the memory device to retrieve and process the stored output. Hardware modules may also initiate communications with input or output devices, and may operate on a resource (e.g., a collection of information).
[0113] The various operations of example methods described herein may be performed, at least partially, by one or more processors that are temporarilyconfigured (e.g., by software) or permanently configured to perform the relevant operations. Whether temporarily or permanently configured, such processors may constitute processor-implemented modules that operate to perform one or more operations or functions. The modules referred to herein may, in some example embodiments, comprise processor-implemented modules.
[0114] Similarly, the methods or routines described herein may be at least partially processor-implemented. For example, at least some of the operations of a method may be performed by one or more processors or processor-implemented hardware modules. The performance of certain of the operations may be distributed among the one or more processors, not only residing within a single machine, but deployed across a number of machines. In some example embodiments, the processor or processors may be located in a single location (e.g., within a home environment, an office environment or as a server farm), while in other embodiments the processors may be distributed across a number of locations.
[0115] The performance of certain of the operations may be distributed among the one or more processors, not only residing within a single machine, but deployed across a number of machines. In some example embodiments, the one or more processors or processor-implemented modules may be located in a single device or geographic location (e.g., within a home environment, an office environment, or a server farm). In other example embodiments, the one or more processors or processor-implemented modules may be distributed across a number of devices or geographic locations.
[0116] Unless specifically stated otherwise, use herein of words such as “processing,” “computing,” “calculating,” “determining,” “presenting,” “displaying,” or the like may refer to actions or processes of a machine (e.g., a computer) that manipulates or transforms data represented as physical (e.g., electronic, magnetic, or optical) quantities within one or more memories (e.g., volatile memory, nonvolatile memory, or a combination thereof), registers, or other machine components that receive, store, transmit, or display information.
[0117] As used herein any reference to “one embodiment” or “an embodiment” means that a particular element, feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment.
[0118] Some embodiments may be described using the expression “coupled” and “connected” along with their derivatives. For example, some embodiments may be described using the term “coupled” to indicate that two or more elements are in direct physical or electrical contact. The term “coupled,” however, may also mean that two or more elements are not in direct contact with each other, but yet still cooperate or interact with each other. The embodiments are not limited in this context.
[0119] Additionally, some embodiments may be described using the expression “communicatively coupled," which may mean (a) integrated into a single housing, (b) coupled using wires, or (c) coupled wirelessly (i.e. , passing data I commands back and forth wirelessly) in various embodiments.
[0120] As used herein, the terms “comprises,” “comprising,” “includes,” “including,” “has,” “having” or any other variation thereof, are intended to cover a non-exclusive inclusion. For example, a process, method, article, or apparatus that comprises a list of elements is not necessarily limited to only those elements but may include other elements not expressly listed or inherent to such process, method, article, or apparatus.
[0121] In addition, use of the “a” or “an” are employed to describe elements and components of the embodiments herein. This is done merely for convenience and to give a general sense of the description. This description, and the claims that follow, should be read to include one or at least one and the singular also includes the plural unless it is obvious that it is meant otherwise.
[0122] The patent claims at the end of this patent application are not intended to be construed under 35 U.S.C. § 112(f) unless traditional means-plus-function language is expressly recited, such as “means for” or “step for” language being explicitly recited in the claim(s).
[0123] Various aspects are described in this disclosure, which include, but are not limited to, the following aspects:1 . A system for providing real-time feedback to an operator upon detecting unacceptable motion of the operator, comprising: a wearable device having a housing configured to be worn by the operator; one or more memory devices communicatively coupled to the housing and storing a plurality of executable instructions; one or more sensors communicatively coupled to the housing and configured to output motion signals corresponding to motion of the operator; one or more output devices communicatively coupled to the housing and configured to output operator alerts in response to a determination of unacceptable motion of the operator; and one or more processors communicatively coupled to the housing and configured to execute the plurality of executable instructions which thereby causes the one or more processors to: receive a plurality of output motion signals from the one or more sensors at a sampling rate; convert the plurality of output motion signals into a plurality of data points; analyze the plurality of data points to identify steps taken by the operator; compute a step rate of the operator based upon the identified steps; and cause the one or more output devices to output an operator alert in response to the step rate exceeding a predetermined rate threshold corresponding to unacceptable motion of the operator.
[0124] 2. The system of aspect 1 , wherein the one or more processors cause the one or more output devices to output the operator alert in response to determining that a magnitude of a data point of the plurality of data points exceeds a predetermined intensity threshold corresponding to unacceptable motion of the operator.
[0125] 3. The system of aspect 2, wherein the predetermined intensity threshold is between two and four times a gravitational force equivalent.
[0126] 4. The system of any one of aspects 1 -3, wherein the one or more output devices includes a haptic feedback device, and the operator alert is a period of vibration of the housing caused by the haptic feedback device.
[0127] 5. The system of any one of aspects 1 -4, wherein the one or more sensors includes a triaxial accelerometer and the plurality of output motion signals are output as sets of output signals including an x-axis signal representing an acceleration force on the triaxial accelerometer along an x-axis, a y-axis signal representing an acceleration force on the triaxial accelerometer along a y-axis, and a z-axis signal representing an acceleration force on the triaxial accelerometer along a z-axis.
[0128] 6. The system of aspect 5, wherein the one or more processors converts the plurality of output motion signals into the plurality of data points by computing a Euclidean norm for the x-axis signal, the y-axis signal and the z-axis signal of each set of output signals.
[0129] 7. The system of any one of aspects 1 -6, wherein the plurality of data points are stored on the one or more memory devices, the one or more processors being configured to analyze a subset of the data points corresponding to a moving time window to identify steps taken by the operator, the subset of the data points including a context subset of data points corresponding to a first period of time in the moving time window and a current subset of data points corresponding to a second period of time in the moving time window immediately following the first period of time.
[0130] 8. The system of aspect 7, wherein the one or more processors is configured to compute the step rate of the operator based upon the identified steps corresponding to the current subset of data points, the step rate being one over a time difference between consecutive identified steps.
[0131] 9. The system of aspect 7, wherein the one or more processors analyzes the plurality of data points to identify steps taken by the operator by determining a current walking state of the operator based upon the current subset of data points.
[0132] 10. The system of aspect 9, wherein the one or more processors determines the current walking state of the operator based upon the current subset of data points by calculating a quantile magnitude of the current subset of datapoints and comparing the quantile magnitude to a plurality of walking state threshold values, the plurality of walking state threshold values includes a first value and a second value, the current walking state being slow if the quantile magnitude is less than the first value, the current walking state being normal if the quantile magnitude is greater than or equal to the first value and less than or equal to the second value, and the current walking state being fast if the quantile magnitude is greater than the second value.
[0133] 11 . The system of aspect 9, wherein the one or more processors analyzes the plurality of data points to identify steps taken by the operator by applying a peak distance filter, wherein the one or more processors identifies a data point as a peak if a magnitude of the data point is greater than or equal to magnitudes of a predetermined number of data points in the subset of the data points that precedes the data point and greater than or equal to magnitudes of the predetermined number of data points that follow the data point, the predetermined number being based upon the current walking state.
[0134] 12. The system of aspect 11 , wherein the predetermined number is one of a first number, a second number or a third number depending upon the current walking state, the first number corresponding to a slow current walking state, the second number corresponding to a normal current walking state, and the third number corresponding to a fast current walking state, the first number being greater than the second number and the second number being greater than the third number.
[0135] 13. The system of any one of aspects 11-12, wherein the one or more processors analyzes the plurality of data points to identify steps taken by the operator by applying a vibration elimination filter to the identified peaks, wherein the one or more processors discards any of the identified peaks having a magnitude that is less than or equal to a minimum peak threshold value which is based upon the current walking state.
[0136] 14. The system of aspect 13, wherein the minimum peak threshold value is one of a first minimum peak threshold value, a second minimum peakthreshold value or a third minimum peak threshold value depending upon the current walking state, the first minimum peak threshold value corresponding to a slow current walking state, the second minimum peak threshold value corresponding to a normal current walking state, and the third minimum peak threshold value corresponding to a fast current walking state, the first minimum peak threshold value being less than the second minimum peak threshold value and the second minimum peak threshold value being less than the third minimum peak threshold value.
[0137] 15. The system of any one of aspects 11-14, wherein the one or more processors analyzes the plurality of data points to identify steps taken by the operator by applying a dynamic window filter to the identified peaks, wherein the one or more processors: divides the plurality of data points into windows having data point window widths that correspond to the current walking state; determines a window corresponding to each of the identified peaks; computes a dynamic difference value for each of the identified peaks based upon a magnitude of the identified peak, a magnitude of a data point in the window corresponding to the identified peak having a minimum value within the window, and a magnitude of a data point in the window corresponding to the identified peak having a maximum value within the window; and discards identified peaks having a dynamic difference value that is less than or equal to a dynamic difference threshold value.
[0138] 16. The system of aspect 15, wherein the data point window width corresponding to a slow current walking state is greater than the data point window width corresponding to a normal current walking state, and the data point window width corresponding to the normal current walking state is greater than the data point window width corresponding to a fast current walking state.
[0139] 17. The system of aspect 15, wherein the dynamic difference value for the identified peak is the magnitude of the identified peak minus 0.5 times a sum of the magnitudes of the data point in the window having the minimum value and the data point in the window having the maximum value.
[0140] 18. The system of any one of aspects 11-17, wherein the one or more processors analyzes the plurality of data points to identify steps taken by theoperator by applying a peak prominence filter to the identified peaks, wherein the one or more processors, for each identified peak: computes a graphical equivalent of a horizontal line that passes through the identified peak; terminates the horizontal line when it crosses a higher identified peak or reaches an end of the moving time window; identifies a left termination point and a right termination point of the horizontal line; identifies a first data point with a smallest magnitude between the identified peak and the left termination point and a second data point with a smallest magnitude between the identified peak and the right termination point; computes a prominence value of the identified peak based upon a magnitude of the identified peak, the magnitude of the first data point, and the magnitude of the second data point; and e
[0141] 19. The system of aspect 18, wherein the prominence value of the identified peak is the magnitude of the identified peak minus the greater of the magnitude of the first data point and the magnitude of the second data point.
[0142] 20. The system of aspect 18, wherein the minimum peak prominence threshold corresponding to a slow current walking state is less than the minimum peak prominence threshold corresponding to a normal current walking state, which is less than the minimum peak prominence threshold corresponding to a fast current walking state.
[0143] 21 . The system of any one of aspects 11-20, wherein the one or more processors analyzes the plurality of data points to identify steps taken by the operator by applying a periodicity filter to the identified peaks if there is more than one identified peak, wherein the one or more processors: determines a location in the moving time window for each of the identified peaks; assigns a periodicity value to each of the identified peaks corresponding to a number of data points in the moving time window between the identified peak and an immediately preceding identified peak; compares the periodicity value of each of the identified peaks to a minimum periodicity limit corresponding to the current walking state and a maximum periodicity limit corresponding to the current walking state; and discards identifiedpeaks having a periodicity value that is less than the minimum periodicity limit or greater than the maximum periodicity limit.
[0144] 22. The system of aspect 21 , wherein the minimum periodicity limit and the maximum periodicity limit corresponding to a slow current walking state are greater than the minimum periodicity limit and the maximum periodicity limit corresponding to a normal current walking state, respectively, and the minimum periodicity limit and the maximum periodicity limit corresponding to the normal current walking state are greater than the minimum periodicity limit and the maximum periodicity limit corresponding to a fast walking state, respectively.
[0145] 23. The system of any one of aspects 11-22, wherein the one or more processors analyzes the plurality of data points to identify steps taken by the operator by applying a similarity filter to the identified peaks if there are more than three identified peaks, wherein the processor: determines a similarity parameter for each of the identified peaks; discards identified peaks having a similarity parameter that is less than or equal to a similarity threshold; identifies any remaining identified peaks as corresponding to steps taken by the operator.
[0146] 24. The system of aspect 23, wherein the similarity parameter is equal to a negative of an absolute value of a difference between a magnitude of one identified peak and a magnitude of another identified peak that precedes an identified peak that immediately precedes the one identified peak.
[0147] 25. A method for providing real-time feedback to an operator upon detecting unacceptable motion of the operator, comprising: causing the operator to wear a wearable device having a housing that is communicatively coupled to a memory device, a sensor, an output device and a processor; receiving, by the processor, a plurality of output motion signals from the sensor at a sampling rate; converting, by the processor, the plurality of output motion signals into a plurality of data points; analyzing, by the processor, the plurality of data points to identify steps taken by the operator; computing, by the processor, a step rate of the operator based upon the identified steps; and causing, by the processor, the output device tooutput an operator alert in response to the step rate exceeding a predetermined rate threshold corresponding to unacceptable motion of the operator.
[0148] 26. The method of aspect 25, wherein causing the output device to output the operator alert includes causing the output device to output the operator alert in response to determining, by the processor, that a magnitude of a data point of the plurality of data points exceeds a predetermined intensity threshold corresponding to unacceptable motion of the operator.
[0149] 27. The method of aspect 26, wherein the predetermined intensity threshold is between two and four times a gravitational force equivalent.
[0150] 28. The method of any one of aspects 25-27, wherein the one or more output devices includes a haptic feedback device, and the operator alert is a period of vibration of the housing caused by the haptic feedback device.
[0151] 29. The method of any one of aspects 25-28, wherein the sensor includes a triaxial accelerometer and the plurality of output motion signals are output as sets of output signals including an x-axis signal representing an acceleration force on the triaxial accelerometer along an x-axis, a y-axis signal representing an acceleration force on the triaxial accelerometer along a y-axis, and a z-axis signal representing an acceleration force on the triaxial accelerometer along a z-axis.
[0152] 30. The method of aspect 29, wherein converting the plurality of output motion signals into the plurality of data points includes computing, by the processor, a Euclidean norm for the x-axis signal, the y-axis signal and the z-axis signal of each set of output signals.
[0153] 31 . The method of any one of aspects 25-30, further comprising storing the plurality of data points on the memory device, wherein analyzing the plurality of data points includes analyzing, by the processor, a subset of the data points corresponding to a moving time window, the subset of the data points including a context subset of data points corresponding to a first period of time in the moving time window and a current subset of data points corresponding to a second period of time in the moving time window immediately following the first period of time.
[0154] 32. The method of aspect 31 , wherein computing the step rate includes computing the step rate based upon the identified steps corresponding to the current subset of data points, the step rate being one over a time difference between consecutive identified steps.
[0155] 33. The method of aspect 31 , wherein analyzing the plurality of data points includes determining a current walking state of the operator based upon the current subset of data points.
[0156] 34. The method of aspect 33, wherein determining a current walking state of the operator based upon the current subset of data points comprises calculating a quantile magnitude of the current subset of data points and comparing the quantile magnitude to a plurality of walking state threshold values, wherein the plurality of walking state threshold values includes a first value and a second value, the current walking state being slow if the quantile magnitude is less than the first value, the current walking state being normal if the quantile magnitude is greater than or equal to the first value and less than or equal to the second value, and the current walking state being fast if the quantile magnitude is greater than the second value.
[0157] 35. The method of aspect 33, wherein analyzing the plurality of data points includes applying a peak distance filter by identifying a data point as a peak if a magnitude of the data point is greater than or equal to magnitudes of a predetermined number of data points in the subset of the data points that precedes the data point and greater than or equal to magnitudes of the predetermined number of data points that follow the data point, the predetermined number being based upon the current walking state.
[0158] 36. The method of aspect 35, wherein the predetermined number is one of a first number, a second number or a third number depending upon the current walking state, the first number corresponding to a slow current walking state, the second number corresponding to a normal current walking state, and the third number corresponding to fast current walking state, the first number being greaterthan the second number and the second number being greater than the third number.
[0159] 37. The method of any one of aspects 35-36, wherein analyzing the plurality of data points includes applying a vibration elimination filter to the identified peaks, wherein applying the vibration elimination filter includes discarding identified peaks having a magnitude that is less than or equal to a minimum peak threshold value which is based upon the current walking state.
[0160] 38. The method of aspect 37, wherein the minimum peak threshold value is one of a first minimum peak threshold value, a second minimum peak threshold value or a third minimum peak threshold value depending upon the current walking state, the first minimum peak threshold value corresponding to a slow current walking state, the second minimum peak threshold value corresponding to a normal current walking state, and the third minimum peak threshold value corresponding to a fast current walking state, the first minimum peak threshold value being less than the second minimum peak threshold value and the second minimum peak threshold value being less than the third minimum peak threshold value.
[0161] 39. The method of any one of aspects 35-38, wherein analyzing the plurality of data points includes applying a dynamic window filter to the identified peaks, wherein applying the dynamic window filter includes: dividing the plurality of data points into windows having data point window widths that correspond to the current walking state; determining a window corresponding to each of the identified peaks; computing a dynamic difference value for each of the identified peaks based upon a magnitude of the identified peak, a magnitude of a data point in the window corresponding to the identified peak having a minimum value within the window, and a magnitude of a data point in the window corresponding to the identified peak having a maximum value within the window; and discarding identified peaks having a dynamic difference value that is less than or equal to a dynamic difference threshold value.
[0162] 40. The method of aspect 39, wherein the data point window width corresponding to a slow current walking state is greater than the data point windowwidth corresponding to a normal current walking state, and the data point window width corresponding to the normal current walking state is greater than the data point window width corresponding to a fast current walking state.
[0163] 41 . The method of aspect 39, wherein computing a dynamic difference value for each the identified peak includes subtracting from the magnitude of the identified peak 0.5 times the sum of the magnitudes of the data point in the window having the minimum value and the data point in the window having the maximum value.
[0164] 42. The method of any one of aspects 35-41 , wherein analyzing the plurality of data points includes applying a peak prominence filter to the identified peaks, wherein applying the peak prominence filter includes, for each identified peak: computing a graphical equivalent of a horizontal line that passes through the identified peak; terminating the horizontal line when it crosses a higher identified peak or reaches an end of the moving time window; identifying a left termination point and a right termination point of the horizontal line; identifying a first data point with a smallest magnitude between the identified peak and the left termination point and a second data point with a smallest magnitude between the identified peak and the right termination point; computing a prominence value of the identified peak based upon a magnitude of the identified peak, the magnitude of the first data point, and the magnitude of the second data point; and discarding identified peaks having a prominence value that is less than or equal to a minimum peak prominence threshold corresponding to the current walking state.
[0165] 43. The method of aspect 42, wherein computing a prominence value includes subtracting from the magnitude of the identified peak the greater of the magnitude of the first data point and the magnitude of the second data point.
[0166] 44. The method of aspect 42, wherein the minimum peak prominence threshold corresponding to a slow current walking state is less than the minimum peak prominence threshold corresponding to a normal current walking state, which is less than the minimum peak prominence threshold corresponding to a fast current walking state.
[0167] 45. The method of any one of aspects 35-44, wherein analyzing the plurality of data points includes applying a periodicity filter to the identified peaks if there is more than one identified peak, wherein applying the periodicity filter includes: determining a location in the moving time window for each of the identified peaks; assigning a periodicity value to each of the identified peaks corresponding to a number of data points in the moving time window between the identified peak and an immediately preceding identified peak; comparing the periodicity value of each of the identified peaks to a minimum periodicity limit corresponding to the current walking state and a maximum periodicity limit corresponding to the current walking state; and discarding identified peaks having a periodicity value that is less than the minimum periodicity limit or greater than the maximum periodicity limit.
[0168] 46. The method of aspect 45, wherein the minimum periodicity limit and the maximum periodicity limit corresponding to a slow current walking state are greater than the minimum periodicity limit and the maximum periodicity limit corresponding to a normal current walking state, respectively, and the minimum periodicity limit and the maximum periodicity limit corresponding to the normal current walking state are greater than the minimum periodicity limit and the maximum periodicity limit corresponding to a fast walking state, respectively.
[0169] 47. The method of any one of aspects 35-46, wherein analyzing the plurality of data points includes applying a similarity filter to the identified peaks if there are more than three identified peaks, wherein applying the similarity filter includes: determining a similarity parameter for each of the identified peaks; discarding identified peaks having a similarity parameter that is less than or equal to a similarity threshold; identifying any remaining identified peaks as corresponding to steps taken by the operator.
[0170] 48. The method of aspect 47, wherein determining a similarity parameter includes determining a negative of an absolute value of a difference between a magnitude of one identified peak and a magnitude of another identified peak that precedes an identified peak that immediately precedes the one identified peak.
[0171] 49. The method of aspect 25, further comprising transferring, via a wired or wireless connection, at least one of the plurality of output motion signals or the plurality of data points to one of a mobile device or a computing device for additional analysis.
[0172] 50. A non-transitory computer-readable storage medium having computer-executable instructions stored thereon, the computer-executable instructions, when executed by at least one processor, cause the at least one processor to: receive, at a sampling rate, a plurality of output motion signals from one or more sensors coupled to a housing of a wearable device worn by an operator; convert the plurality of output motion signals into a plurality of data points; analyze the plurality of data points to identify steps taken by the operator; compute a step rate of the operator based upon the identified steps; and cause one or more output devices coupled to the housing to output an operator alert in response to the step rate exceeding a predetermined rate threshold corresponding to unacceptable motion of the operator.
[0173] 51 . A method for providing real-time feedback to an operator wearing a wearable device in an aseptic environment upon detecting an unacceptable step rate of the operator to cause a change in behavior of the operator and reduce a risk of contamination, comprising: converting, by the at least one processor, a plurality of output motion signals from at least one sensor on the wearable device into a plurality of data points of a moving time window including a context subset of data points and a current subset of data points; analyzing, by the at least one processor, the plurality of data points by adjusting parameters of one or more filters using at least the current subset of data points to identify data points in the current subset of data points and the context subset of data points representing steps taken by the operator; computing, by the at least one processor, a step rate of the operator based upon the steps taken by the operator within the current subset of data points; and causing, by the at least one processor, an output device to output an operator alert in response to the step rate exceeding a predetermined rate threshold corresponding to an unacceptable step rate of the operator.
[0174] 52. The method of aspect 51 , wherein the step rate of the operator is computed by the at least one processor based solely upon the steps taken by the operator within the current subset of data points.
[0175] 53. A system for providing real-time feedback to an operator upon detecting unacceptable motion of the operator, comprising: a wearable sensor device configured to be worn by the operator, the wearable sensor device comprising an accelerometer and a gyroscope; one or more output devices configured to output operator alerts; one or more memory devices storing a plurality of executable instructions; and one or more processors communicatively coupled to the one or more memory devices and configured to execute the plurality of executable instructions to: receive a plurality of accelerometer signals from the accelerometer and a plurality of gyroscope signals from the gyroscope, determine a three-dimensional orientation of the wearable sensor device based on the gyroscope signals, filter the accelerometer signals to remove gravitational acceleration based on the determined three-dimensional orientation, detect unacceptable motion of the operator based on the filtered accelerometer signals, and output, via the one or more output devices, the operator alerts when unacceptable motion of the operator is detected.
[0176] 54. The system of aspect 53, wherein detecting unacceptable motion of the operator based on the filtered accelerometer signals comprises: integrating the filtered accelerometer signal to derive a velocity signal; detecting unacceptable motion when the derived velocity signal is greater than a predetermined velocity threshold.
[0177] 55. The system of aspect 54, wherein the one or more processors are configured to execute the plurality of executable instructions to: determine one or more periods of time each having a duration Tmin within the accelerometer signal in which the accelerometer signal is below a pre-determined acceleration threshold Amin; designating said determined one or more periods of time as stationary moments; and setting the derived velocity signal to zero during said designated stationary moments.
[0178] 56. The system of aspect 55, wherein the one or more processors are further configured to detect and mitigate residual gravitational influence not removed by said filtering based on the determined three-dimensional orientation by: calculating an average acceleration Ax in the x direction and an average acceleration Ay in the y direction of the accelerometer signal during at least one of said designated stationary moments; and subtracting Ax and Ay from the filtered accelerometer before said filtered accelerometer signals are used to detect unacceptable motion of the operator.
[0179] 57. The system of aspect 55, wherein the one or more processors are further configured to periodically update the duration Tmin and the acceleration threshold Amin based on a detected walking state of the operator.
[0180] 58. The system of aspect 57, wherein the one or more processors are configured to update the duration Tmin and the acceleration threshold Amin based on an average magnitude of the plurality of accelerometer signals.
[0181] 59. The system of any one of aspects 55-58, wherein integrating the filtered accelerometer signal to derive the velocity signal comprises integrating the filtered accelerometer signal to determine a change in velocity since the most recent stationary moment and setting the velocity signal equal to the determined change in velocity.
[0182] 60. The system of aspect 53, wherein detecting unacceptable motion of the operator based on the filtered accelerometer signals comprises: integrating the filtered accelerometer signal to derive a velocity signal; filtering the velocity signal to remove noise; determining when the filtered velocity signal is greater than a pre-determined velocity threshold; and detecting unacceptable motion when the filtered velocity signal is greater than the pre-determined velocity threshold.
[0183] 61 . The system of aspect 60, wherein filtering the velocity signal comprises aggregating the velocity signal to a lower time resolution compared to the velocity signal.
[0184] 62. The system of any one of aspects 53-61 , the system further comprising a magnetometer configured to measure the Earth’s magnetic field, wherein the one or more processors are further configured to execute the plurality of executable instructions to: receive a magnetometer signal from the magnetometer; and determine the three-dimensional orientation of the wearable sensor device based on the gyroscope signal and the magnetometer signal.
[0185] 63. The system of any one of aspects 53-62, wherein the wearable sensor device is configured to be worn on a foot of the operator.
[0186] 64. The system of any one of aspects 53-62, wherein the wearable sensor device is configured to be worn on a part of the operator’s body other than the operator’s hands, wrists, or arms.
[0187] 65. The system of any one of aspects 53-64, wherein the one or more output devices comprises a wrist-worn device configured to output at least one of an audible operator alert and a haptic operator alert.
[0188] 66. The system of any one of aspects 53-65, further comprising a communication interface configured to send the operator alerts to a remote device.
[0189] 67. The system of any one of aspects 53-66, wherein the one or more output devices, the one or more memory devices, and the one or more processors are disposed in a separate housing from the wearable sensor device, and the one or more processors are configured to receive the accelerometer signal and the gyroscope signal wirelessly from the wearable sensor device.
[0190] 68. The system of any one of aspects 53-67, wherein the one or more processors are configured to output the operator alerts within three seconds of occurrence of unacceptable motion of the operator.
[0191] 69. A method for providing real-time feedback to an operator upon detecting unacceptable motion of the operator, the method comprising: providing to the operator: a wearable sensor device comprising an accelerometer and a gyroscope, and an output device configured to output operator alerts; receiving a plurality of accelerometer signals from the accelerometer and a plurality of gyroscope signals from the gyroscope; determining a three-dimensional orientationof the wearable sensor device based on the gyroscope signals; filtering the accelerometer signals to remove gravitational acceleration based on the determined three-dimensional orientation; detecting unacceptable motion of the operator based on the filtered accelerometer signals; and outputting, via the one or more output devices, the operator alerts when unacceptable motion is detected.
[0192] 70. The method of aspect 69, wherein detecting unacceptable motion of the operator based on the filtered accelerometer signals comprises: integrating the filtered accelerometer signal to derive a velocity signal; detecting unacceptable motion when the derived velocity signal is greater than a predetermined velocity threshold.
[0193] 71 . The method of aspect 70, further comprising: determining one or more periods of time each having a duration Tmin within the accelerometer signal in which the accelerometer signal is below a pre-determined acceleration threshold Amin; designating said determined one or more periods of time as stationary moments; and setting the derived velocity signal to zero during said designated stationary moments.
[0194] 72. The method of aspect 71 , further comprising: detecting and mitigating residual gravitational influence not removed by said filtering based on the determined three-dimensional orientation by: calculating an average acceleration Ax in the x direction and an average acceleration Ay in the y direction of the accelerometer signal during at least one of said designated stationary moments; and subtracting Ax and Ay from the filtered accelerometer before said filtered accelerometer signals are used to detect unacceptable motion of the operator.
[0195] 73. The method of aspect 71 , further comprising periodically update the duration Tmin and the acceleration threshold Amin based on a detected walking state of the operator.
[0196] 74. The method of aspect 73, further comprising updating the duration Tmin and the acceleration threshold Amin based on an average magnitude of the plurality of accelerometer signals.
[0197] 75. The method of aspect 71 -74, wherein integrating the filtered accelerometer signal to derive the velocity signal comprises integrating the filtered accelerometer signal to determine a change in velocity since the most recent stationary moment and setting the velocity signal equal to the determined change in velocity.
[0198] 76. The method of aspect 69, wherein detecting unacceptable motion of the operator based on the filtered accelerometer signals comprises: integrating the filtered accelerometer signal to derive a velocity signal; filtering the velocity signal to remove noise; determining when the filtered velocity signal is greater than a pre-determined velocity threshold; and detecting unacceptable motion when the filtered velocity signal is greater than the pre-determined velocity threshold.
[0199] 77. The method of aspect 76, wherein filtering the velocity signal comprises aggregating the velocity signal to a lower time resolution compared to the velocity signal.
[0200] 78. The method of any one of aspects 69-77, further comprising receiving a magnetometer signal from a magnetometer, and determining the three- dimensional orientation of the wearable sensor device based on the gyroscope signal and the magnetometer signal.
[0201] 79. The method of any one of aspects 69-78, wherein the wearable sensor device is configured to be worn on a foot of the operator.
[0202] 80. The method of any one of aspects 69-78, wherein the wearable sensor device is configured to be worn on a part of the operator’s body other than the operator’s hands, wrists, or arms.
[0203] 81 . The method of any one of aspects 69-80, wherein the one or more output devices comprises a wrist-worn device configured to output at least one of an audible operator alert and a haptic operator alert.
[0204] 82. The method of any one of aspects 69-81 , further comprising sending operator alerts to a remote device via a communication interface.
[0205] 83. The method of any one of aspects 69-82, wherein the operator alerts are output within three seconds of occurrence of unacceptable motion of the operator.
Claims
CLAIMSWe claim:1 . A system for providing real-time feedback to an operator upon detecting unacceptable motion of the operator, comprising: a wearable sensor device configured to be worn by the operator, the wearable sensor device comprising an accelerometer and a gyroscope; one or more output devices configured to output operator alerts; one or more memory devices storing a plurality of executable instructions; and one or more processors communicatively coupled to the one or more memory devices and configured to execute the plurality of executable instructions to: receive a plurality of accelerometer signals from the accelerometer and a plurality of gyroscope signals from the gyroscope, determine a three-dimensional orientation of the wearable sensor device based on the gyroscope signals, filter the accelerometer signals to remove gravitational acceleration based on the determined three-dimensional orientation, detect unacceptable motion of the operator based on the filtered accelerometer signals, and output, via the one or more output devices, the operator alerts when unacceptable motion of the operator is detected.
2. The system of claim 1 , wherein detecting unacceptable motion of the operator based on the filtered accelerometer signals comprises: integrating the filtered accelerometer signal to derive a velocity signal;detecting unacceptable motion when the derived velocity signal is greater than a pre-determined velocity threshold.
3. The system of claim 2, wherein the one or more processors are configured to execute the plurality of executable instructions to: determine one or more periods of time each having a duration Tmin within the accelerometer signal in which the accelerometer signal is below a predetermined acceleration threshold Amin; designating said determined one or more periods of time as stationary moments; and setting the derived velocity signal to zero during said designated stationary moments.
4. The system of claim 3, wherein the one or more processors are further configured to detect and mitigate residual gravitational influence not removed by said filtering based on the determined three-dimensional orientation by: calculating an average acceleration Ax in the x direction and an average acceleration Ay in the y direction of the accelerometer signal during at least one of said designated stationary moments; and subtracting Ax and Ay from the filtered accelerometer before said filtered accelerometer signals are used to detect unacceptable motion of the operator.
5. The system of claim 3, wherein the one or more processors are further configured to periodically update the duration Tmin and the acceleration threshold Amin based on a detected walking state of the operator.
6. The system of claim 5, wherein the one or more processors are configured to update the duration Tmin and the acceleration threshold Amin based on an average magnitude of the plurality of accelerometer signals.
7. The system of any one of claims 3-6, wherein integrating the filtered accelerometer signal to derive the velocity signal comprises integrating the filtered accelerometer signal to determine a change in velocity since the most recent stationary moment and setting the velocity signal equal to the determined change in velocity.
8. The system of claim 1 , wherein detecting unacceptable motion of the operator based on the filtered accelerometer signals comprises: integrating the filtered accelerometer signal to derive a velocity signal; filtering the velocity signal to remove noise; determining when the filtered velocity signal is greater than a pre-determined velocity threshold; and detecting unacceptable motion when the filtered velocity signal is greater than the pre-determined velocity threshold.
9. The system of claim 8, wherein filtering the velocity signal comprises aggregating the velocity signal to a lower time resolution compared to the velocity signal.
10. The system of any one of claims 1-9, the system further comprising a magnetometer configured to measure the Earth’s magnetic field, wherein the one or more processors are further configured to execute the plurality of executable instructions to: receive a magnetometer signal from the magnetometer; anddetermine the three-dimensional orientation of the wearable sensor device based on the gyroscope signal and the magnetometer signal.11 . The system of any one of claims 1 -10, wherein the wearable sensor device is configured to be worn on a foot of the operator.
12. The system of any one of claims 1 -10, wherein the wearable sensor device is configured to be worn on a part of the operator’s body other than the operator’s hands, wrists, or arms.
13. The system of any one of claims 1 -12, wherein the one or more output devices comprises a wrist-worn device configured to output at least one of an audible operator alert and a haptic operator alert.
14. The system of any one of claims 1 -13, further comprising a communication interface configured to send the operator alerts to a remote device.
15. The system of any one of claims 1 -14, wherein the one or more output devices, the one or more memory devices, and the one or more processors are disposed in a separate housing from the wearable sensor device, and the one or more processors are configured to receive the accelerometer signal and the gyroscope signal wirelessly from the wearable sensor device.
16. The system of any one of claims 1 -15, wherein the one or more processors are configured to output the operator alerts within three seconds of occurrence of unacceptable motion of the operator.
17. A method for providing real-time feedback to an operator upon detecting unacceptable motion of the operator, the method comprising: providing to the operator: a wearable sensor device comprising an accelerometer and a gyroscope, andan output device configured to output operator alerts; receiving a plurality of accelerometer signals from the accelerometer and a plurality of gyroscope signals from the gyroscope; determining a three-dimensional orientation of the wearable sensor device based on the gyroscope signals; filtering the accelerometer signals to remove gravitational acceleration based on the determined three-dimensional orientation; detecting unacceptable motion of the operator based on the filtered accelerometer signals; and outputting, via the one or more output devices, the operator alerts when unacceptable motion is detected.