Updating blending coefficients in real time for virtual output of sensor array
Through the method of dynamically generating blended outputs in real time, using bandpass filter and covariance matrix update technology, the noise and instability problems of MEMS sensor IMU in navigation systems are solved, and the navigation performance with low SWAP and high performance is achieved, and the navigation performance is extended. The lifespan of the sensor array.
Patent Information
- Application Number
- CN202410750611.1
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2023-07-14
- Filing Date
- 2024-06-12
- Publication Date
- 2025-01-14
AI Technical Summary
Existing MEMS sensor IMUs are unable to provide low size, weight and power (SWAP) and high performance navigation performance due to high measurement noise and unstable performance in global navigation satellite systems/inertial navigation systems.
Using dynamically generates blended output method of multiple sensors in real time, filters sensor errors through bandpass filters, updates covariance matrix, calculates and applies real-time coefficients, ignores the output of the faulty sensor, and dynamically adjusts the blended coefficients to improve the performance of the IMU .
IMUs with low SWAP provide high-performance navigation performance, extend the life of sensor arrays, and improve system reliability and stability.
Smart Images

Figure CN119312006A_ABST
Abstract
Description
Background Art
[0001] An inertial measurement unit (IMU) is an electronic device that uses a combination of gyroscopes, accelerometers, and sometimes magnetometers to measure and report data about, for example, the acceleration, angular velocity, and orientation of an associated subject. IMUs are used in a variety of applications such as inertial navigation systems to provide navigation and control functions for aircraft, missiles, ships, submarines, and satellites. Many conventional IMUs are large, expensive, and require high power for proper operation.
[0002] Lower-level IMUs have been developed using microelectromechanical systems (MEMS) gyroscopes and accelerometers. These MEMS-based IMUs are smaller, less expensive, and operate at lower power than conventional IMUs. Such IMUs with MEMS sensors are widely used in applications with lower accuracy requirements. For example, IMUs with MEMS sensors are used in most smartphones and tablets to track and report the orientation of the device. Fitness trackers and other wearable devices include IMUs with MEMS sensors to measure motion such as running or walking.
[0003] Due to the high measurement noise and unstable performance parameters of MEMS sensors, IMUs with MEMS sensors (gyroscopes and accelerometers) are generally limited in their role in global navigation satellite system / inertial navigation system (GNSS / INS) integrated navigation. As a result, conventional GNSS / INS integrated navigation systems have been unable to achieve the low size, weight and power (SWAP) typically associated with the use of MEMS sensors.
[0004] Therefore, there is a need in the art to develop an IMU that exploits the low SWAP associated with MEMS sensors while providing the high performance characteristics associated with conventional IMUs used in navigation systems. Summary of the invention
[0005] In some aspects, the technology described herein relates to a method for dynamically generating a blended output of multiple sensors in real time, the method comprising: periodically storing samples of the outputs of the multiple sensors as stored samples at a frame rate; filtering the stored samples of each of the multiple sensors using a bandpass filter based on the time scale characteristics of the type of errors of the multiple sensors to produce filtered samples; storing the filtered samples; iteratively updating a covariance matrix based on the filtered samples at a cumulative rate until a selected number of filtered samples have been processed, removing data from the covariance matrix for any sensor of the multiple sensors that has failed; and calculating changes to real-time coefficients to be applied to the output of each of the multiple sensors based on the covariance matrix; and applying the changes to the real-time coefficients at a frame rate; and calculating the blended output of the multiple sensors based on the real-time coefficients.
[0006] In some aspects, the technology described herein relates to an inertial measurement unit (IMU) comprising: a plurality of microelectromechanical system sensors (MEMS sensors), each of the plurality of MEMS sensors having an output terminal; a storage medium for storing calibration coefficients for each of the plurality of MEMS sensors, real-time coefficients for each of the plurality of MEMS sensors, and data blending instructions for blending the outputs of the plurality of MEMS sensors; and a processor coupled to the storage medium and the plurality of MEMS sensors and configured to execute program instructions to: filter samples output by the plurality of MEMS sensors at a frame rate with a bandpass filter for time-scale characteristics of types of errors of the plurality of MEMS sensors to produce filtered samples; iteratively update a covariance matrix based on the filtered samples at an accumulation rate until a selected number of filtered samples have been processed, calculate changes to the real-time coefficients to be applied to the output of each of the plurality of MEMS sensors based on the covariance matrix; apply the changes to the real-time coefficients at the frame rate; and calculate a blended output of the plurality of MEMS sensors based on the real-time coefficients.
[0007] In some aspects, the technology described herein relates to a program product comprising a non-transitory computer-readable medium having program instructions configured to be executed by at least one processor, wherein the program instructions, when executed by the at least one processor, cause the at least one processor to perform a method comprising: periodically storing samples of outputs of a plurality of sensors at a frame rate to produce stored samples; filtering the stored samples of each of the plurality of sensors separately according to time scale characteristics of the types of errors of the plurality of sensors using a bandpass filter to produce filtered samples; storing the filtered samples; iteratively updating a covariance matrix based on the filtered samples at a cumulative rate until a selected number of filtered samples have been processed, removing data of any sensor of the plurality of sensors that has failed from the covariance matrix; and calculating changes to real-time coefficients to be applied to the outputs of each of the plurality of sensors based on the covariance matrix; and applying the changes to the real-time coefficients at a frame rate; and calculating a blended output of the plurality of sensors based on the real-time coefficients. BRIEF DESCRIPTION OF THE DRAWINGS
[0008] Embodiments of the present invention may be more readily understood, and further advantages and uses thereof become more apparent, when consideration is given to the description of the preferred embodiments and the following drawings, in which:
[0009] Figure 1 is a block diagram of one embodiment of an inertial measurement unit (IMU) that includes an array of microelectromechanical systems (MEMS) sensors that blend the outputs of the MEMS sensors using blending coefficients that are updated in real time to produce a virtual output of the IMU.
[0010] Figure 2 is a flow chart illustrating one embodiment of a process for filtering the outputs of a plurality of MEMS sensors to produce filtered data for use in calculating real-time changes in blending coefficients and for applying the real-time updated blending coefficients to the outputs of the plurality of MEMS sensors to provide a blended output for an IMU.
[0011] Figure 3 is a flow chart illustrating one embodiment of a process for calculating updates of blending coefficients in real time.
[0012] According to common practice, the various features described are not necessarily drawn to scale, but rather are used to emphasize features relevant to the invention. Reference characters denote similar elements throughout the figures and text. DETAILED DESCRIPTION
[0013] In the following detailed description, reference is made to the accompanying drawings which form a part thereof and which illustrate specific illustrative embodiments in which the present invention may be practiced. These embodiments are described in sufficient detail to enable those skilled in the art to practice the invention, and it is understood that other embodiments may be used and logical, mechanical and electrical changes may be made without departing from the scope of the present invention. Therefore, the following detailed description should not be considered in a limiting sense.
[0014] Embodiments of the present invention provide an inertial measurement unit (IMU) with low size, weight, and power (SWAP) specifications by using an array of low-level (consumer) microelectromechanical systems (MEMS) sensors. It has been found that an array of N independent MEMS sensors (each with the same level of measurement error) can reduce the measurement error of the IMU by approximately the square root of N by appropriately combining or blending the outputs of the N independent MEMS sensors. However, low-level MEMS sensors have reliability issues (e.g., they tend to fail prematurely). When low-level MEMS sensors are used in an array, the statistical probability of a sensor failing prematurely during the expected life of the IMU array becomes greater as the number of sensors increases. In addition, there are some very significant performance benefits of using an optimal weighting strategy when blending the outputs of the sensors in the array. Embodiments of the present invention address these issues and thereby improve sensor technology by dynamically (1) adjusting the blending coefficients of the IMU array during operation to effectively eliminate the effects of failed sensors, and (2) adapting the coefficients to changes in the sensor array during operation in real time during operation of the IMU array. These coefficients are referred to herein as "real-time coefficients." This enables the output of a faulty sensor to be ignored while dynamically updating the real-time coefficients assigned to the operating sensors based on the current performance of each sensor in the array. In some embodiments, the real-time coefficients are dynamically used in conjunction with factory calibration coefficients (referred to as "calibration coefficients") to provide a blended output of the sensor array. In some embodiments, the calibration coefficients are also updated to effectively eliminate the effects of a faulty sensor on calculations that rely on the calibration coefficients, as discussed in more detail below.
[0015] Calculation and use basis of real-time coefficient
[0016] For the real-time coefficients, the optimal coefficient vector is defined as:
[0017]
[0018] Where P is the covariance matrix. This formula is problematic due to the restriction that the sum of the coefficients must be 1. In other words:
[0019] c T 1n =1 (2)
[0020] Therefore, by using the method of Lagrange multipliers (λ), constraints can be imposed on the coefficient vector to ensure this behavior:
[0021]
[0022] Setting the gradient to zero yields the following system of equations:
[0023]
[0024] Next, solve for λ as follows:
[0025] 2Pc=-λ1 n (5)
[0026]
[0027] And solve for c using another equation:
[0028] 2Pc+λ1 n =0 n (10)
[0029]
[0030] Therefore, equation (13) enables the calculation of coefficients that satisfy the above constraints.
[0031] This algorithm can be iterated in multiple contexts.
[0032] 1. During calibration, profile steps are randomized to prevent sequential dependencies.
[0033] 2. The measurements can be fed into the algorithm in an iterative manner by using a complementary filter:
[0034] c[t]=c[t-1]+α(c + -c - ) (14)
[0035] In a real-time context, simply updating the coefficients may introduce deviations and discontinuities in the data, which introduces the requirement of a “slow” evolution of the coefficients.
[0036] It is recommended to consider health checks and built-in tests in case of sensor failure or sensor exit. To enforce this condition, it is sufficient to modify the coefficients before estimation. For example, if sensor L reports a real-time failure, only the covariance matrix can be modified by setting the diagonal to very high values compared to the other values in the covariance matrix and setting all off-diagonal entries to zero:
[0037]
[0038] Implementation of a system for updating blending coefficients in real time
[0039] Figure 1 1 is a block diagram of one embodiment of an inertial measurement unit (IMU) 100 that implements the teachings set forth above. The IMU 100 includes an array 101 of micro-electromechanical systems (MEMS) sensors 102-1 to 102-N. In addition, the IMU 100 includes a processor 106, a storage medium 108, and an output 104. The processor 106 is coupled to the output 104, the storage medium 108, and the array 101 of MEMS sensors 102-1 to 102-N. The processor 106 may be implemented using one or more processors, field programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), controllers, or other circuits for executing instructions in electronic circuits. The storage medium 108 may include any available storage medium (or computer-readable medium) that can be accessed by a general or special purpose computer or processor or any programmable logic device. Suitable computer-readable media may include storage media or memory media, such as semiconductor, magnetic media, and / or optical media, and may be embodied as a program product including instructions stored in a non-transitory computer-readable medium, such as a random access memory (RAM), a read-only memory (ROM), a non-volatile RAM, an electrically erasable programmable ROM, a flash memory, or other storage medium. The processor 106 fuses or blends the outputs of the MEMS sensors 102-1 to 102-N using data and instructions from the storage medium 108 to provide a virtual output for the IMU 100 at the output terminal 104.
[0040] The IMU 100 generates a virtual output at an output 104 using, at least in part, one or more sets of coefficients that determine the contribution of each of the MEMS sensors 102-1 to 102-N to the virtual output. In at least one embodiment, the IMU 100 generates a virtual output using two sets of coefficients. A first set of coefficients is determined when the IMU 100 is calibrated. These coefficients are referred to herein as "calibration coefficients" 114 and are stored in the storage medium 108. In this embodiment, a second set of coefficients is also used. This second set of coefficients is updated in real time during use of the IMU 100 and is referred to herein as "real-time coefficients" 116. These real-time coefficients 116 take into account changing conditions, such as (1) sensor failures and (2) the relative performance of each sensor in the array 101. In other embodiments, the IMU 100 may use only the real-time coefficients 116.
[0041] In operation, processor 106 receives outputs from each of MEMS sensors 102-1 through 102-N. In addition, processor 106 applies calibration coefficients 114 and real-time coefficients 116 stored on storage medium 108 to the outputs of MEMS sensors 102-1 through 102-N to dynamically generate a virtual output or blended output at output 104.
[0042] In addition, the processor 106 executes program instructions in the frame rate function 110 and the accumulation / update function 112 (collectively referred to as "blending instructions") that cause the processor 106 to calculate real-time coefficients 116 to enable real-time adjustment of the blending of the outputs of the MEMS sensors 102-1 to 102-N during operation of the IMU 100. Embodiments of the frame rate function 110 and the accumulation / update function 112 are shown in Figure 2 and Figure 3 and described in more detail below.
[0043] During operation, the IMU 100 determines whether any sensor has failed as part of the accumulation / update function 112. For example, in some embodiments, the accumulation / update function 112 periodically runs a built-in test that determines whether each MEMS sensor 102-1 to 102-N is functioning properly. If any sensor in the array 101 of MEMS sensors 102-1 to 102-N is determined to be malfunctioning, the sensor is marked as "failed" and is effectively removed from the array 101 by adjusting the real-time coefficients of the failed sensor.
[0044] The IMU 100 also tracks the relative performance of the MEMS sensors in the array 101 that have not failed as part of the accumulation / update function 112. Based on this monitoring, the real-time coefficients of the MEMS sensors 102-1 to 102-N are also dynamically updated. In some embodiments, this monitoring uses a covariance matrix for the IMU 100, which is updated based on data sampled from the MEMS sensors 102-1 to 102-N during operation of the IMU 100. Based on the covariance matrix, the IMU 100 calculates adjustments to the real-time coefficients, which are used to calculate the virtual output of the IMU 100.
[0045] Implementation of the process of an IMU with real-time updated blending coefficients
[0046] Figure 2 and Figure 3 are flow charts illustrating embodiments of processes for dynamically generating and using real-time coefficients to produce virtual outputs for the IMU 100. These flow charts illustrate embodiments of two processes that run at different rates. The two processes are Figure 1An example of a frame rate function 110 and an accumulation / update function 112. The first process ( Figure 2 ) samples the data from the sensor and generates a virtual output of the IMU 100 at a first rate (e.g., a frame rate or a rate at which the sensor provides data). The second process ( Figure 3 ) uses samples from the first process to accumulate data at a second rate (accumulation rate) and calculate data at a third rate (update rate) to update the real-time coefficients. The IMU-based system and software architecture select specific rates for the first rate, the second rate, and the third rate. Each of these processes is described in turn below.
[0047] Before describing the details of the flow of these two processes, Figure 2 and Figure 3 The processes of and rely on a number of tunable parameters which are briefly discussed here. Specifically, the following hyperparameters used in both processes can be tuned to meet the needs of a specific application:
[0048] 1. α: fusion ratio (scalar) or the rate at which c_delta is incorporated into the real-time coefficients. (See Figure 3 322).
[0049] 2.b bandpass 、a bandpass : Bandpass filter coefficients (see Figure 2 204).
[0050] 3.b complementary 、a complementary : complementary filter coefficients (see box 216). It should be noted that Figure 2 In the embodiment of FIG. 5 , the complementary filter is implemented as a linear combination of a high pass filter and a low pass filter, which produces a gain of 1 for all frequencies. In addition, because of the crossover frequencies of the complementary filters, the high pass filter and the low pass filter do not require independent coefficients.
[0051] 4.N sample : The number of samples accumulated before coefficient update (referred to as max_sample[idx_channel] in block 302).
[0052] 5.f update : The frequency with which coefficient updates occur (see second branch 303).
[0053] 6.f accumulate : Update the frequency of P and μ (see the first branch 301).
[0054] There are many ways to tune this algorithm. In one embodiment, the hyperparameters are tuned as follows:
[0055] 1. Based on the understanding of process loading and architecture, choose f update and f accumulate The two frequencies can occur at the same rate or at different rates. The bandpass filter will take care of the framing differences and reduce the need to do these update and accumulation steps as often.
[0056] 2. Select b bandpass and a bandpass , to highlight the time scale associated with the system architecture. For example, the standard calculation for random walk (an error characteristic of MEMs sensors) places great emphasis on the 1 second time scale. It may be appropriate to choose a passband of about 1 second (or 1 Hz). In addition, at longer time scales, the data from the sensor tends to the calibrated coefficients. Therefore, the passband coefficients should be selected so that the passband is much larger than the cutoff frequency of the complementary filter (see box 216).
[0057] 3. Emphasizing the 1 second time scale leads to many design tradeoffs for the bandpass filter in terms of how steep the roll-off needs to be and how wide the passband needs to be. A good starting point for this is to generate the coefficients using the following MATLAB command:
[0058] [b,a]=cheby2(1,8,2 / data_rate.*[1 / 2,2],′bandpass′); (15)
[0059] 4. Select b based on two conditions complementary and a complementary :
[0060] a. The cut-off frequency should be significantly greater than the passband frequency of the bandpass filter in order not to interfere with the filter.
[0061] b. The cutoff frequency should be chosen so that the low-pass component contains important and stable long-term information.
[0062] The recommended starting point is to use a first-order complementary Butterworth filter design b complementary and a complementary , and the cutoff frequency is designed to For example, the MATLAB command used to generate these coefficients is:
[0063] [b,a]=butter(1,2 / data_rate / 100,'low'); (16)
[0064] 5. Select N sampleThe number of samples is such that a stable covariance matrix is produced. The unscented transform uses 2n+1 samples, where n is the number of diagonal entries (or sensors in the system). To obtain more stable results, this count is increased at the expense of delay when updating the coefficient estimates.
[0065] 6. Choose the scalar α so that the coefficients do not cause discontinuities in the solution. Choose α so that for long-term stability, is a good choice because it ensures that the coefficients are never fully updated before a new estimate is produced. It should be noted that if α=0, the coefficients will never be updated, but if α=1, the coefficients will be immediately replaced with the new values. Any value between 0 and 1 will cause the current coefficients to be updated by a percentage of the updated value.
[0066] A. Implementation of the Process Executed at Frame Rate
[0067] Figure 2 2 is a flow chart illustrating one embodiment of a process 200 for receiving outputs of a plurality of sensors at a frame rate. In one embodiment, the frame rate is approximately 4000 Hz. In other embodiments, the frame rate is selected to be another appropriate rate, for example, a rate selected based on the rate at which the sensor array generates data. In this embodiment, the process 200 generates filtered data for use in calculating, for example, Figure 1 The real-time change of the mixing coefficient of the IMU 100 and the like is detected, and the real-time updated mixing coefficient is applied to the outputs of multiple sensors such as the MEMS sensors 102-1 to 102-N of the IMU 100 to provide a mixed output for the IMU.
[0068] Process 200 begins at block 202, where data from a plurality of sensors, such as MEMS sensors 102-1 to 102-M, is sampled. It should be noted that, in one embodiment, each MEMS sensor includes at least three accelerometers and three gyroscopes, wherein one accelerometer and one gyroscope are oriented along one of three sensing axes. In one embodiment, each accelerometer and each gyroscope is referred to herein as a channel. In this embodiment, samples are stored in a vector x for each channel.
[0069] At block 204, process 200 applies a bandpass filter to the data in each vector x and stores the result in a corresponding vector y. In one embodiment, the bandpass filter function uses the coefficients a and b discussed above to apply an appropriate bandpass filter with a selected roll-off and passband. At block 206, process 200 saves the vector y for each channel and makes the vector available for use by process 300, as described below.
[0070] Process 200 also generates information for, e.g. Figure 1 The process 200 uses the real-time coefficients at least in part to calculate the virtual output of the IMU. The vector c contains the current value of the real-time coefficient of the channel. In addition, Figure 3 Process 300 provides a vector c_delta of the channel, which includes the changes to each real-time coefficient, to process 200. At block 208, process 200 applies these changes to vector c by adding the changes in vector c_delta to the corresponding current values of the real-time coefficients in vector c. At block 210, the values in vector c are renormalized (so that the sum of the values in c is equal to 1).
[0071] The process 200 calculates the number of outputs for the IMU at blocks 212, 214, and 216. At block 212, the process 200 calculates the "motion channel (m)" for the IMU. To do this, at block 212, the process 200 multiplies the current sample in the vector x of each sensor in the plurality of sensors of each channel by the corresponding real-time coefficient in the vector c of each channel. The products of the samples and their corresponding real-time coefficients are summed to produce the output of each channel referred to as the "motion channel". The use of the real-time coefficients in the motion channel is designed to produce good results with signals with lower noise in a sufficiently short period of time. At block 214, the process 200 calculates the "stable channel (s)" for the IMU. To do this, the process 200 multiplies the current sample in the vector x of each sensor in the plurality of sensors of each channel by the corresponding calibration coefficient in the vector c_cal. The products of the samples and their corresponding calibration coefficients are summed to produce a value referred to as the "stable channel". The use of the calibration coefficients in the stable channel is designed to maintain good performance over a longer period of time to maintain calibration performance. At block 216, a virtual output of the IMU is generated by combining the motion channel (m) processed by the high-pass filter and the stability channel (s) processed by the low-pass filter. It should be noted that the combination of the high-pass filter and the low-pass filter implements the complementary filter described above.
[0072] It is important to note that the motion channel is designed to optimize the random walk of the sensor (on a time scale of about 1 second for MEMS sensors), while the stability channel is optimized to achieve the best possible calibration performance (on a time scale of 500 seconds or longer). In this embodiment, the complementary filter time scale is around the 100 second mark because this is a good tradeoff between the 1 second mark of the motion channel and the 500 to 1000 second mark of the stability channel. Ultimately, the motion channel and the stability channel operate on the same sensor data, but each combination of them is optimized and viewed through a different lens.
[0073] At block 218 , process 200 publishes the motion channel (m), the stability channel (s), and the virtual output (v).
[0074] B. Implementation of a process that executes at an update / accumulation rate
[0075] Figure 3 300 is a flow chart showing one embodiment of a process 300 for calculating updates to real-time blending coefficients for an IMU that blends the outputs of a sensor array. The process 300 includes two branches: a first branch 301 and a second branch 303. In the first branch 301, the process 300 accumulates data in a covariance matrix based on processed samples (idx_sample[idx_channel]) from each channel in each sensor in the sensor array. The first branch 301 runs at an accumulation rate. In one embodiment, the accumulation rate is 10 Hz or other appropriate rate based on the criteria discussed above. In the second branch 303, the process 300 uses the accumulated data in the covariance matrix from the first branch 301 to generate data for updating the real-time blending coefficients. The second branch 303 runs at an update rate. In one embodiment, the update rate is a fraction of the accumulation rate based on the number of samples that are processed in the first branch 301 between updates generated in the second branch 303.
[0076] In one embodiment, the process 300 switches between the first branch 301 and the second branch 303 when the number of samples processed (accumulated) in the first branch exceeds the maximum (selected) number of samples for a channel (idx_sample[ids_channel]>max_sample[idx_channel]), as determined at block 302. The second (update) branch is executed, and the process 300 returns to processing data in the first (accumulation) branch.
[0077] In the first branch 301, the covariance matrix is updated in an iterative manner using data from each sensor in the sensor array of the IMU. This process begins at box 304 where the running mean of each channel of the IMU is calculated using the error vector E. Y is a vector including the current value of each sensor in the channel (e.g., see above with reference to Figure 2 204 of FIG. 1 ). μ is a vector representing the running mean of the channels of the sensors. The error value for each sensor is calculated according to the following equation:
[0078] E=(y–μ[idx_channel]) / (idx_sample+1)
[0079] At block 306 , the μ vector is updated by adding the vector E to the vector μ.
[0080] At block 308, the error vector E is used to update the covariance matrix according to the following equation:
[0081] P+=E*E^T*idx_sample / (idx_sample+1)
[0082] At block 310 , the process 300 increments a counter by the number of samples processed for the channel, idx_sample[idx_channel], to reflect that another data sample has been processed for the channel. At block 312 , the process 300 increments a counter that tracks the current channel being processed.
[0083] In the second branch 303, the process 300 uses the covariance matrix updated in the first branch 301 to calculate data for updating the real-time coefficients, which are used to blend the outputs of the sensors in the sensor array of the IMU. At box 314, the process 300 removes the entries corresponding to the sensors in the covariance matrix P that have been identified as having failed. In one embodiment, the faulty sensor is identified by applying a built-in test (BIT). In one embodiment, the process 300 removes the entries corresponding to the faulty sensor by setting the diagonal associated with the sensor to the maximum value and setting the non-diagonal associated with the sensor to 0 (see equation (15) above). At box 316, the inverse matrix of the covariance matrix is calculated and stored as matrix A. Because a valid inverse matrix may not be calculated, the process 300 determines whether the inverse matrix of the covariance matrix exists. If not, the process 300 bypasses the process of calculating the data for updating the real-time coefficients. However, if the inverse matrix exists, the process 300 calculates the data for updating the real-time coefficients at boxes 320 and 322. At block 320, process 300 implements equation (13) above to calculate a new value for the real-time coefficient. At block 322, process 300 calculates the delta (change) c_delta of the real-time coefficient based on equation 14 above. This value c_delta is fed to Figure 2 Process 200 is provided for calculating updated real-time coefficients for blending outputs of sensors in a sensor array of an IMU.
[0084] It should be noted that in some implementations, the calibration coefficient c_cal is also updated to eliminate the faulty sensor. Figure 2 and Figure 3In one embodiment, the calibration coefficients associated with any faulty sensors may be set to zero. In another embodiment, the calibration coefficients for any faulty sensors are updated in a manner similar to the updating of the real-time coefficients described above with reference to block 314. Specifically, the error covariance matrix from the calibration routine is saved in the system, for example, in Figure 1 The covariance matrix may then be modified using the techniques described above with reference to equation (15), and the calibration coefficients may be renormalized (as in block 210) to completely eliminate the effect of the missing sensor. This will ensure that a true optimal solution (in a least squares sense) is always calculated for the stable channels, even though their coefficients are not calculated in real time.
[0085] Exemplary embodiments
[0086] Although specific embodiments have been illustrated and described herein, one of ordinary skill in the art will recognize that any arrangement calculated to achieve the same purpose may be substituted for the specific embodiments shown. This application is intended to cover any modifications or variations of the present invention. Therefore, it is apparent that the present invention is limited only by the claims and their equivalents.
[0087] Embodiment 1 includes a method for dynamically generating a blended output of multiple sensors in real time, the method comprising: periodically storing samples of the outputs of the multiple sensors as stored samples at a frame rate; filtering the stored samples of each of the multiple sensors respectively according to the time scale characteristics of the type of errors of the multiple sensors using a bandpass filter to produce filtered samples; storing the filtered samples; iteratively updating a covariance matrix based on the filtered samples at a cumulative rate until a selected number of filtered samples have been processed, removing data of any sensor of the multiple sensors that has failed from the covariance matrix; and calculating a change in a real-time coefficient to be applied to the output of each of the multiple sensors based on the covariance matrix; and applying the change to the real-time coefficient at a frame rate; and calculating the blended output of the multiple sensors based on the real-time coefficient.
[0088] Embodiment 2 includes the method of embodiment 1, wherein filtering the stored samples comprises filtering the stored samples using a bandpass filter having a passband of approximately 1 Hz.
[0089] Embodiment 3 includes the method of embodiment 1, wherein filtering the stored samples comprises filtering the stored samples using a bandpass filter, a passband of the bandpass filter being selected based on a time scale further associated with characteristics of the plurality of sensors.
[0090] Embodiment 4 includes the method of embodiment 3, wherein the passband is selected based on a time scale associated with the random walk.
[0091] Embodiment 5 includes the method of any one of embodiments 1 to 4, wherein updating in an iterative manner includes updating in an iterative manner until 2n+1 filtered samples have been processed, wherein n is the number of sensors in the plurality of sensors.
[0092] Embodiment 6 includes the method of any one of embodiments 1 to 5, wherein removing the sensor includes periodically testing each sensor of the plurality of sensors.
[0093] Embodiment 7 includes the method of embodiment 6, wherein when the sensor has failed, the diagonal in the covariance matrix associated with the sensor is set to a higher value compared to other values in the covariance matrix and the off-diagonal entries are set to zero.
[0094] Embodiment 8 includes a method according to any one of embodiments 1 to 7, wherein calculating a blended output of multiple sensors includes: calculating a first output using real-time coefficients; calculating a second output using calibration coefficients; blending the first output with the second output to provide a blended output of multiple sensors.
[0095] Embodiment 9 includes a method according to embodiment 8, wherein blending the first output with the second output includes: applying a high pass filter to the first output; applying a low pass filter to the second output; and combining the output of the low pass filter and the output of the high pass filter to produce a blended output of multiple sensors.
[0096] Embodiment 10 includes the method of any one of embodiments 1 to 9, wherein after applying the changes to the real-time coefficients, the real-time coefficients are renormalized such that a sum of the real-time coefficients is equal to one.
[0097] Embodiment 11 includes a method according to any one of embodiments 1 to 10, wherein calculating the change of the real-time coefficients includes: calculating the difference between a new set of real-time coefficients and a previous set of real-time coefficients; and multiplying the difference by a scalar α to produce a set of changes in the real-time coefficients.
[0098] Embodiment 12 includes the method according to embodiment 11, wherein the scalar α is selected such that: α<<(update rate / frame rate).
[0099] Embodiment 13 includes an inertial measurement unit (IMU) comprising: a plurality of microelectromechanical system (MEMS) sensors, each of the plurality of MEMS sensors having an output terminal; a storage medium for storing calibration coefficients for each of the plurality of MEMS sensors, real-time coefficients for each of the plurality of MEMS sensors, and data blending instructions for blending the outputs of the plurality of MEMS sensors; and a processor coupled to the storage medium and the plurality of MEMS sensors, configured to execute program instructions to: filter samples output by the plurality of MEMS sensors at a frame rate using a bandpass filter with respect to time scale characteristics of types of errors of the plurality of MEMS sensors to produce filtered samples; iteratively update a covariance matrix based on the filtered samples at a cumulative rate until a selected number of filtered samples have been processed, calculate a change in the real-time coefficient to be applied to the output of each of the plurality of MEMS sensors based on the covariance matrix; apply the change to the real-time coefficient at a frame rate; and calculate a blended output of the plurality of MEMS sensors based on the real-time coefficient.
[0100] Embodiment 14 includes an IMU according to embodiment 13, which further includes: when one of the multiple MEMS sensors fails, setting the diagonal in the covariance matrix associated with the one of the multiple MEMS sensors to a higher value compared to other values in the covariance matrix, and setting the non-diagonal terms to zero.
[0101] Embodiment 15 includes an IMU according to any one of embodiments 13 and 14, wherein calculating a blended output of multiple MEMS sensors includes: calculating a first output using real-time coefficients; calculating a second output using calibration coefficients; blending the first output with the second output to provide a blended output of multiple MEMS sensors.
[0102] Embodiment 16 includes an IMU according to embodiment 15, wherein blending the first output with the second output includes: applying a high pass filter to the first output; applying a low pass filter to the second output; and combining the output of the low pass filter and the output of the high pass filter to produce a blended output of multiple MEMS sensors.
[0103] Embodiment 17 includes a program product, which includes a non-transitory computer-readable medium, which contains program instructions configured to be executed by at least one processor, wherein the program instructions, when executed by the at least one processor, cause the at least one processor to perform a method, the method comprising: periodically storing samples of the outputs of multiple sensors at a frame rate to produce stored samples; filtering the stored samples of each of the multiple sensors using a bandpass filter based on the time scale characteristics of the type of errors of the multiple sensors to produce filtered samples; storing the filtered samples; iteratively updating a covariance matrix based on the filtered samples at a cumulative rate until a selected number of filtered samples have been processed, removing data of any sensor of the multiple sensors that has failed from the covariance matrix; and calculating changes in real-time coefficients to be applied to the outputs of each of the multiple sensors based on the covariance matrix; and applying the changes to the real-time coefficients at a frame rate; and calculating a blended output of the multiple sensors based on the real-time coefficients.
[0104] Embodiment 18 includes a program product according to embodiment 17, wherein calculating the blended output of multiple sensors includes: calculating a first output using real-time coefficients; calculating a second output using calibration coefficients; blending the first output with the second output to provide the blended output of multiple sensors.
[0105] Embodiment 19 includes a program product according to embodiment 18, wherein blending the first output with the second output includes: applying a high pass filter to the first output; applying a low pass filter to the second output; and combining the output of the low pass filter and the output of the high pass filter to produce a blended output of multiple sensors.
[0106] Embodiment 20 includes a program product according to any one of embodiments 17 to 19, wherein calculating changes in real-time coefficients includes: calculating the difference between a new set of real-time coefficients and a previous set of real-time coefficients; and multiplying the difference by a scalar α to produce a set of changes in the real-time coefficients.
Claims
1. A method for dynamically generating a blended output of multiple sensors in real time, the method comprising: By frame rate, periodically storing samples of the outputs of the plurality of sensors as stored samples (202); filtering the stored samples of each of the plurality of sensors using a bandpass filter for a time scale characteristic of a type of error of the plurality of sensors to produce filtered samples (204); storing the filtered samples (206); At the cumulative rate, updating the covariance matrix in an iterative manner based on the filtered samples until a selected number of filtered samples have been processed (301), removing data from the covariance matrix for any sensor of the plurality of sensors that has failed (314); as well as calculating a change in real-time coefficients to be applied to the output of each of the plurality of sensors based on the covariance matrix (322); as well as At the stated frame rate, applying the changes to the real-time coefficients (208); as well as The blended outputs of the plurality of sensors are calculated based on the real-time coefficients (212, 216).
2. The method according to claim 1, wherein: Calculating the blended output of the plurality of sensors includes: Calculating a first output using the real-time coefficients (212); calculating a second output using the calibration coefficients (214); and The first output is blended with the second output to provide a blended output of the plurality of sensors (216).
3. An inertial measurement unit (IMU) (100), comprising: a plurality of micro-electromechanical system sensors (MEMS sensors) (102-1 to 102-N), each MEMS sensor of the plurality of MEMS sensors having an output terminal; a storage medium (108) for storing calibration coefficients (114) for each of the plurality of MEMS sensors, real-time coefficients (116) for each of the plurality of MEMS sensors, and data blending instructions (110, 112) for blending the outputs of the plurality of MEMS sensors; and A processor (106), coupled to the storage medium and the plurality of MEMS sensors, configured to execute program instructions to: filtering samples output by the plurality of MEMS sensors at a frame rate with a bandpass filter for time scale characteristics of types of errors of the plurality of MEMS sensors to produce filtered samples (204); iteratively updating a covariance matrix based on the filtered samples at an accumulation rate until a selected number of filtered samples have been processed (301), calculating changes to the real-time coefficients to be applied to the output of each of the plurality of MEMS sensors based on the covariance matrix (322); applying the changes to the real-time coefficients at the frame rate (208); as well as A blended output of the plurality of MEMS sensors is calculated based on the real-time coefficients (216).