Dynamic gravity vector estimation for memory constrained devices
12436624 ยท 2025-10-07
Assignee
Inventors
Cpc classification
G06F3/0346
PHYSICS
International classification
G01B7/30
PHYSICS
Abstract
A device includes a memory and processing circuitry coupled to the memory. The processing circuitry, in operation: estimates an angular rate of change and determines a rotational versor based on the rotational data; and estimates a gravity vector based on the angular rate of change and the rotational versor. The processing circuitry generates a dynamic gravity vector based on the estimated gravity vector, a correction factor and an estimated error in estimated gravity vector. The processing circuitry estimates a linear acceleration and determines an acceleration versor based on the acceleration data, and determines the correction factor based on the linear acceleration. The processing circuitry estimates the error in the estimated gravity vector based on the acceleration versor.
Claims
1. A non-transitory computer-readable medium having contents which configure a processing device to perform a method, the method comprising: estimating an angular rate of change based on rotational data; determining a rotational versor based on the rotational data; estimating a gravity vector based on the angular rate of change and the rotational versor; estimating a linear acceleration based on acceleration data; determining an acceleration versor based on the acceleration data; determining a correction factor based on the linear acceleration; estimating an error in the estimated gravity vector based on the acceleration versor; generating a dynamic gravity vector based on the estimated gravity vector, the correction factor and the estimated error in the estimated gravity vector; and using the dynamic gravity vector to perform an operation of a software application, wherein the gravity vector is estimated according to:
2. The non-transitory computer-readable medium according to claim 1, wherein the method comprises: generating the rotational data as a rotational velocity measurements vector indicating a rotational velocity with respect to three axes of movement; and generating the acceleration data as an acceleration measurements vector indicating acceleration along the three axes of movement.
3. The non-transitory computer-readable medium according to claim 2, wherein the method comprises: estimating the angular rate of change according to:
4. The non-transitory computer-readable medium according to claim 1, wherein the contents comprising instructions executable by the processing device.
5. A method, comprising: generating, using a gyroscope, rotational data; estimating an angular rate of change based on the rotational data; determining a rotational versor based on the rotational data; estimating a gravity vector based on the angular rate of change and the rotational versor; generating, using an accelerometer, an acceleration measurements vector indicating acceleration along a three axes of movement; estimating a linear acceleration based on acceleration measurements vector; determining an acceleration versor based on the acceleration measurements vector; determining a correction factor based on the linear acceleration; estimating an error in the estimated gravity vector based on the acceleration versor; and generating a dynamic gravity vector based on the estimated gravity vector, the correction factor and the estimated error in the estimated gravity vector, wherein the acceleration versor is determined according to:
6. The method according to claim 5, comprising: generating, using the gyroscope, a rotational velocity measurements vector indicating a rotational velocity with respect to the three axes of movement.
7. The method according to claim 5, wherein the correction factor is a value between 0 and 1, and the method comprises determining the correction factor based on a comparison of the estimated linear acceleration to one or more thresholds.
8. The method according to claim 7, comprising: in response to the comparison indicating the estimated linear acceleration exceeds a first threshold, setting the correction factor to a first correction value; and in response to the comparison indicating the estimated linear acceleration is less than a second threshold, setting the correction factor to a second correction value, wherein the first threshold is higher than the second threshold and the first correction value is lower than the second correction value.
9. The method according to claim 8, comprising: in response to the comparison indicating the estimated linear acceleration is between the first threshold and the second threshold, setting the correction factor to a third correction value between the first correction value and the second correction value.
10. The method of claim 5, comprising: estimating the error in the estimated gravity vector according to:
11. The method according to claim 5, comprising: estimating the gravity vector according to:
12. A system, comprising: one or more sensors, which, in operation, generate rotational data and acceleration data; and processing circuitry coupled to the one or more sensors, wherein the processing circuitry, in operation: estimates an angular rate of change based on rotational data generated by the one or more sensors; determines a rotational versor based on the rotational data; estimates a gravity vector based on the angular rate of change and the rotational versor; estimates a linear acceleration based on acceleration data generated by the one or more sensors, the acceleration data including an acceleration measurements vector indicating acceleration along three axes of movement; determines an acceleration versor based on the acceleration data; determines a correction factor based on the linear acceleration; estimates an error in the estimated gravity vector based on the acceleration versor; and generates a dynamic gravity vector based on the estimated gravity vector, the correction factor and the estimated error in the estimated gravity vector, wherein the processing circuitry, in operation, determines the acceleration versor according to:
13. The system according to claim 12, wherein the processing circuitry, in operation, estimates the gravity vector according to:
14. The system according to claim 12, wherein the one or more sensors comprise: a gyroscope, which, in operation, generates the rotational data as a rotational velocity measurements vector indicating a rotational velocity with respect to the three axes of movement; and an accelerometer, which, in operation, generates the acceleration data as an acceleration measurements vector indicating acceleration along the three axes of movement.
15. The system according to claim 12, wherein the processing circuitry, in operation, estimates the angular rate of change according to:
16. The system according to claim 12, wherein the processing circuitry, in operation, determines the rotational versor according to:
Description
BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS
(1) One or more embodiments are described hereinafter with reference to the accompanying drawings.
(2)
(3)
(4)
(5)
(6)
(7)
DETAILED DESCRIPTION
(8) The following description, along with the accompanying drawings, sets forth certain specific details in order to provide a thorough understanding of various disclosed embodiments. However, one skilled in the relevant art will recognize that the disclosed embodiments may be practiced in various combinations, with or without one or more of these specific details, or with other methods, components, devices, materials, etc. In other instances, well-known structures or components that are associated with the environment of the present disclosure, including but not limited to interfaces, power supplies, accelerometers, gyroscopes, physical component layout, processing circuitry, etc., have not been shown or described in order to avoid unnecessarily obscuring descriptions of the embodiments. Additionally, the various embodiments may be methods, systems, devices, computer program products, etc.
(9) Throughout the specification, claims, and drawings, the following terms take the meaning associated herein, unless the context indicates otherwise. The term herein refers to the specification, claims, and drawings associated with the current application. The phrases in one embodiment, in another embodiment, in various embodiments, in some embodiments, in other embodiments, and other variations thereof refer to one or more features, structures, functions, limitations, or characteristics of the present disclosure, and are not limited to the same or different embodiments unless the context indicates otherwise. As used herein, the term or is an inclusive or operator, and is equivalent to the phrases A or B, or both or A or B or C, or any combination thereof, and lists with additional elements are similarly treated. The term based on is not exclusive and allows for being based on additional features, functions, aspects, or limitations not described, unless the context indicates otherwise. In addition, throughout the specification, the meaning of a, an, and the include singular and plural references.
(10)
(11) The system 100 includes one or more memories 104, such as one or more volatile and/or non-volatile memories which may store, for example, all or part of instructions and data related to control of the system 100, applications and operations performed by the system 100, etc. One or more of the memories 104 may include a memory array, which, in operation, may be shared by one or more processes executed by the system 100.
(12) The system 100 may include one or more sensors 160, as illustrated, one or more gyroscopes 162, one or more accelerometers 164, one or more image sensors 166, one or more audio sensors 168, one or more pressure sensors 170, one or more temperature sensors 172, etc., one or more interfaces 175 (e.g., wireless communication interfaces, wired communication interfaces, etc.), and other functional circuits 180, which may include antennas, power supplies, one or more built-in self-test (BIST) circuits, etc., and a main bus system 190. The main bus system 190 may include one or more data, address, power and/or control buses coupled to the various components of the system 100.
(13) The one or more gyroscopes 162, in operation, generate rotational data, and may typically provide an output in the form of a rotational velocity measurements vector indicating a rotational velocity with respect to, for example, three axes of movement. The one or more gyroscopes 162 may typically comprise a micro-electro-mechanical system (MEMS) device that measures the rate of rotation of an object around one or more axis.
(14) The one or more accelerometers 164, in operation, generate acceleration data, and may typically provide an output in the form of an acceleration measurements vector indicating acceleration along, for example, three axes of movement. The one or more accelerometers 164 may typically comprise a MEMS device that measures the acceleration of an object along one or more axis.
(15) The one or more image sensors 166, in operation, generate digital or analog signals based on optical images. The image sensors 166 may typically include a photosensitive element which generates a signal in response to light waves, and may typically provide digital signal in the form of pixel values.
(16) The one or more audio sensors 168, in operation, generate digital or analog signals based on sound waves. The audio sensors 168 may typically comprise a MEMS device which converts sound waves into electrical signals.
(17) The one or more pressure sensors 170, in operation, generate digital or analog signals based on an ambient pressure. The pressure sensors 170 may typically comprise a MEMS device, such as a capacitive sensor, a piezoresistive sensor, etc., which converts an indication of pressure or a pressure change into electrical signals.
(18) The one or more temperature sensors 172, in operation, generate digital or analog signals based on an ambient temperature, temperature differences, etc. The temperature sensors 172 may typically comprise a resistance temperature detector, a semiconductor detector, a junction detector, etc., which converts an indication of a temperature or a temperature change into electrical signals.
(19) The system 100 also includes dynamic gravity vector estimation circuitry 110 which, in operation, estimates a dynamic gravity vector associated with the device based on sensor data, such as sensor data generated by a gyroscope 162 and an accelerometer 164 of the one or more sensors 160, for example, as discussed in more detail below with reference to
(20)
(21) A dynamic gravity vector may conventionally be estimated using attitude filter algorithms based on quaternion algebra. For example, based on filtered sensor data, a state of a three-dimensional (3D) orientation may be represented as a Quaternion, a yaw, pitch and roll (e.g., Euler's angles), or a rotation matrix. A gravity vector may then be estimated by rotating an ideal gravity vector (e.g., [0,0,1]) based on the current 3D orientation estimation.
(22) The inventors have realized that in many instances, only an estimation of the gravity vector is needed by an application, and that first generating a representation of a 3D orientation in order to estimate the gravity vector uses substantial memory and computational resources. The inventors also have realized that a dynamic gravity vector may instead be directly estimated based on gyroscope sensor data (e.g., data from a gyroscope 162 of
(23) Embodiments of the system 100 of
(24)
(25) As illustrated, the gravity vector estimator 300 includes an angular rate of change block or circuit 312, an angular rate normalization block or circuit 314, a gravity vector propagation block or circuit 316, a dynamic gravity vector correction block or circuit 318, a linear acceleration block or circuit 320, an acceleration normalization block or circuit 322, a correction factor block or circuit 324, and an error determination block or circuit 326.
(26) The angular rate of change block 312, in operation, receives rotational data w, which may typically be a rotational velocity measurements vector indicating a rotational velocity with respect to three axes of movement, generated by, for example, a gyroscope (see gyroscope 162 of
(27)
(28) The rotational data w also is provided to an angular rate normalization block or circuit 314, which, in operation, generates a rotational versor , for example, according to:
(29)
(30) The gravity vector propagation block or circuit 316, in operation, generates a current estimated gravity vector g.sub.prop based on the estimated angular rate of change , the rotational versor , and a previously determined dynamic gravity vector g.sub.t-1, for example, according to:
(31)
(32)
(33)
(34) As mentioned above, a dynamic gravity vector may be estimated using gyroscope data, and then corrected based on accelerometer data. The gravity vector correction block 318, in operation, generates a current dynamic gravity vector g.sub.t based on a correction factor (which may be generated based on acceleration data as discussed below), an error vector e (which may be generated based on normalized acceleration data and g.sub.prop, as discussed below), and the current estimated gravity vector g.sub.prop. This may be done, for example, according to:
(35)
(36) The correction factor may be viewed as a coefficient of a complementary filter used to generate the current dynamic gravity vector g.sub.t. As an alternative, the correction can be applied using spherical linear interpolation.
(37) The linear acceleration block or circuit 320, in operation, receives accelerometer data a, which may typically be an acceleration measurements vector indicating acceleration along three axes of movement, generated by, for example, an accelerometer (see accelerometer 164 of
(38)
(39) The accelerometer data a also is provided to the acceleration normalization block or circuit 322, which, in operation, generates an acceleration versor , for example, according to:
(40)
(41) The correction factor block or circuit 324, in operation, determines a correction factor based on the estimated linear acceleration a.sub.l generated by the linear acceleration block 320. The correction factor may typically be a positive scalar value between zero and one, and may typically be a small value, e.g., 0.02. The correction factor may be determined, for example, by comparing the estimated linear acceleration a.sub.l to one or more thresholds. For example, if the estimated linear acceleration a.sub.l exceeds a high threshold a.sub.high, the correction factor may be set to a value .sub.low (indicating a low level of trust in the accelerometer data in estimating the dynamic gravity vector, for example zero in case the accelerometer data is not trusted at all); if the estimated linear acceleration a.sub.l is less than a low threshold a.sub.low, the correction factor may be set to a value .sub.high (indicating a high level of trust in the accelerometer data in estimating the dynamic gravity vector); if the estimated linear acceleration a.sub.l is between the high threshold a.sub.high and the low threshold a.sub.low, the correction factor may be set to a value .sub.mid (indicating a normal level of trust in the accelerometer data in estimating the dynamic gravity vector), or may have a variable value set as a function of a.sub.l within a normal range. Setting the correction factor to a high value when the estimated linear acceleration is low facilitates a fast convergence of the estimated gravity vector.
(42) The error determination block or circuit 326, in operation, estimates an error vector e in the current estimated gravity vector g.sub.prop based on the acceleration versor , for example, according to:
(43)
(44) As mentioned above, the gravity vector correction block 318, in operation, generates a current dynamic gravity vector g.sub.t based on the correction factor , the error vector e, and the current estimated gravity vector g.sub.prop. This may be done, for example, according to:
(45)
(46) Embodiments of the dynamic gravity vector estimator 300 of
(47)
(48) The method 500 starts at 502, for example, in response to a request from an application executing on the processor 102 to provide a dynamic gravity vector. The method 500 proceeds from 502 to 504. Although the method 500 is illustrated as a sequential process, the process 500 would typically be executed in a loop processing sample by sample the sensor data, generating a continuous dynamic gravity vector output g.sub.t.
(49) At 504, the method 500 estimates an angular rate of change . This may be done, for example, according to
(50)
(51) At 506, the method 500 generates a rotational versor . This may be done, for example, according to
(52)
(53) At 508, the method 500 generates a current estimated gravity vector g.sub.prop based on the estimated angular rate of change determined at 504, the rotational versor determined at 506, and a previously determined dynamic gravity vector g.sub.t-1, for example, according to:
(54)
(55) At 510, the method 500 estimates a linear acceleration a.sub.l based on accelerometer data a, which may typically be an acceleration measurements vector generated by an accelerometer, such as the accelerometer 164. The estimated linear acceleration a.sub.l, may typically be a scalar value, for example equal to or based on a magnitude of the acceleration measurements data, |a|, or based on a variance of the accelerometer data a, for example, as discussed above with reference to the linear acceleration block 320 of
(56) At 512, the method 500 determines an acceleration versor , for example, according to:
(57)
(58) At 514, the method 500 determines a correction factor based on the estimated linear acceleration a.sub.l determined at 510. This may be done, for example, using thresholds, as discussed above with reference to the linear acceleration block 320 of
(59) At 516, the method 500 estimates an error vector e in the current estimated gravity vector g.sub.prop determined at 508 based on the acceleration versor determined at 512, for example, according to:
(60)
(61) See the discussion of the error determination block 326 of
(62) At block 518, the method 500 generates a dynamic gravity vector g.sub.t based on the correction factor determined at 514, the error vector e determined at 516, and the current estimated gravity vector g.sub.prop determined at 508. This may be done, for example, according to:
(63)
(64) Embodiments of the foregoing processes and methods may contain additional acts not shown in
(65)
(66) The gyroscope 662, in operation, generates rotational data, and may typically provide an output in the form of a rotational velocity measurements vector indicating a rotational velocity with respect to, for example, three axes of movement. The gyroscope 662 may typically comprise a micro-electro-mechanical system (MEMS) device that measures the rate of rotation of an object around one or more axis. The accelerometer 664, in operation, generates acceleration data, and may typically provide an output in the form of an acceleration measurements vector indicating acceleration along, for example, three axes of movement. The accelerometer 664 may typically comprise a MEMS device that measures the acceleration of an object along one or more axis.
(67) The embedded processing circuitry 610, in operation, estimates a dynamic gravity vector associated with the device 600 based on sensor data, such as sensor data generated by the gyroscope 662 and the accelerometer 664, for example, as discussed in more detail above with reference to
(68) Embodiments of the device 600 of
(69) Simulations and tests indicate embodiments of the methods, devices and systems disclosed herein may provide a 46% improvement in execution time while reducing the amount of ROM needed by a factor of 6.4 and the amount of RAM needed by a factor of 8.9, as compared to conventional low-power implementations using attitude filter algorithms based on quaternion algebra to generate a dynamic gravity vector.
(70) In an embodiment, a device comprises: a memory; and processing circuitry coupled to the memory. The processing circuitry, in operation: estimates an angular rate of change based on rotational data; determines a rotational versor based on the rotational data; estimates a gravity vector based on the angular rate of change and the rotational versor; estimates a linear acceleration based on acceleration data; determines an acceleration versor based on the acceleration data; determines a correction factor based on the linear acceleration; estimates an error in the estimated gravity vector based on the acceleration versor; and generates a dynamic gravity vector based on the estimated gravity vector, the correction factor and the estimated error in the estimated gravity vector. In an embodiment, the device comprises: a gyroscope, which, in operation, generates the rotational data; and an accelerometer, which, in operation, generates the acceleration data. In an embodiment, the gyroscope, in operation, generates a rotational velocity measurements vector indicating a rotational velocity with respect to three axes of movement; and the accelerometer, in operation, generates an acceleration measurements vector indicating acceleration along the three axes of movement. In an embodiment, the processing circuitry, in operation, estimates the angular rate of change according to:
(71)
(72)
(73)
(74)
(75)
(76)
(77) In an embodiment, a system comprises: one or more sensors, which, in operation, generate rotational data and acceleration data; and processing circuitry coupled to the one or more sensors. The processing circuitry, in operation: estimates an angular rate of change based on the rotational data; determines a rotational versor based on the rotational data; estimates a gravity vector based on the angular rate of change and the rotational versor; estimates a linear acceleration based on the acceleration data; determines an acceleration versor based on the acceleration data; determines a correction factor based on the linear acceleration; estimates an error in the estimated gravity vector based on the acceleration versor; and generates a dynamic gravity vector based on the estimated gravity vector, the correction factor and the estimated error in the estimated gravity vector. In an embodiment, the one or more sensors comprise: a gyroscope, which, in operation, generates the rotational data as a rotational velocity measurements vector indicating a rotational velocity with respect to three axes of movement; and an accelerometer, which, in operation, generates the acceleration data as an acceleration measurements vector indicating acceleration along the three axes of movement. In an embodiment, the processing circuitry, in operation, estimates the angular rate of change according to:
(78)
(79)
(80)
(81)
(82)
(83)
(84) In an embodiment, a method comprises: estimating an angular rate of change based on rotational data; determining a rotational versor based on the rotational data; estimating a gravity vector based on the angular rate of change and the rotational versor; estimating a linear acceleration based on acceleration data; determining an acceleration versor based on the acceleration data; determining a correction factor based on the linear acceleration; estimating an error in the estimated gravity vector based on the acceleration versor; generating a dynamic gravity vector based on the estimated gravity vector, the correction factor and the estimated error in the estimated gravity vector; and using the dynamic gravity vector to perform an operation of a software application. In an embodiment, the method comprises: generating the rotational data as a rotational velocity measurements vector indicating a rotational velocity with respect to three axes of movement; and generating the acceleration data as an acceleration measurements vector indicating acceleration along the three axes of movement. In an embodiment, the method comprises: estimating the angular rate of change according to:
(85)
(86)
(87)
(88)
(89)
(90)
(91) In an embodiment, a non-transitory computer-readable medium's contents configure processing circuitry to perform a method, the method comprising: estimating an angular rate of change based on rotational data; determining a rotational versor based on the rotational data; estimating a gravity vector based on the angular rate of change and the rotational versor; estimating a linear acceleration based on acceleration data; determining an acceleration versor based on the acceleration data; determining a correction factor based on the linear acceleration; estimating an error in the estimated gravity vector based on the acceleration versor; generating a dynamic gravity vector based on the estimated gravity vector, the correction factor and the estimated error in the estimated gravity vector; and using the dynamic gravity vector to perform an operation of a software application. In an embodiment, the method comprises: generating the rotational data as a rotational velocity measurements vector indicating a rotational velocity with respect to three axes of movement; and generating the acceleration data as an acceleration measurements vector indicating acceleration along the three axes of movement. In an embodiment, the method comprises: estimating the angular rate of change according to:
(92)
(93)
(94)
(95)
(96)
(97)
(98) Some embodiments may take the form of or comprise computer program products. For example, according to one embodiment there is provided a computer readable medium comprising a computer program adapted to perform one or more of the methods or functions described above. The medium may be a physical storage medium, such as for example a Read Only Memory (ROM) chip, or a disk such as a Digital Versatile Disk (DVD-ROM), Compact Disk (CD-ROM), a hard disk, a memory, a network, or a portable media article to be read by an appropriate drive or via an appropriate connection, including as encoded in one or more barcodes or other related codes stored on one or more such computer-readable mediums and being readable by an appropriate reader device.
(99) Furthermore, in some embodiments, some or all of the methods and/or functionality may be implemented or provided in other manners, such as at least partially in firmware and/or hardware, including, but not limited to, one or more application-specific integrated circuits (ASICs), digital signal processors, discrete circuitry, logic gates, standard integrated circuits, controllers (e.g., by executing appropriate instructions, and including microcontrollers and/or embedded controllers), field-programmable gate arrays (FPGAs), complex programmable logic devices (CPLDs), etc., as well as devices that employ RFID technology, and various combinations thereof.
(100) The various embodiments described above can be combined to provide further embodiments. These and other changes can be made to the embodiments in light of the above-detailed description. In general, in the following claims, the terms used should not be construed to limit the claims to the specific embodiments disclosed in the specification and the claims, but should be construed to include all possible embodiments along with the full scope of equivalents to which such claims are entitled. Accordingly, the claims are not limited by the disclosure.