[go: up one dir, main page]

US20170254832A1 - Calibrating Inertial Sensors Using an Image - Google Patents

Calibrating Inertial Sensors Using an Image Download PDF

Info

Publication number
US20170254832A1
US20170254832A1 US15/598,127 US201715598127A US2017254832A1 US 20170254832 A1 US20170254832 A1 US 20170254832A1 US 201715598127 A US201715598127 A US 201715598127A US 2017254832 A1 US2017254832 A1 US 2017254832A1
Authority
US
United States
Prior art keywords
inertial
data
sensing unit
computing device
determining
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US15/598,127
Inventor
Harvey Ho
Charles Campbell Rhodes
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Priority to US15/598,127 priority Critical patent/US20170254832A1/en
Assigned to GOOGLE INC. reassignment GOOGLE INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: HO, HARVEY, RHODES, CHARLES C.
Publication of US20170254832A1 publication Critical patent/US20170254832A1/en
Assigned to GOOGLE LLC reassignment GOOGLE LLC CHANGE OF NAME Assignors: GOOGLE INC.
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01PMEASURING LINEAR OR ANGULAR SPEED, ACCELERATION, DECELERATION, OR SHOCK; INDICATING PRESENCE, ABSENCE, OR DIRECTION, OF MOVEMENT
    • G01P21/00Testing or calibrating of apparatus or devices covered by the preceding groups
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/10Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 by using measurements of speed or acceleration
    • G01C21/12Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 by using measurements of speed or acceleration executed aboard the object being navigated; Dead reckoning
    • G01C21/16Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 by using measurements of speed or acceleration executed aboard the object being navigated; Dead reckoning by integrating acceleration or speed, i.e. inertial navigation
    • G01C21/165Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 by using measurements of speed or acceleration executed aboard the object being navigated; Dead reckoning by integrating acceleration or speed, i.e. inertial navigation combined with non-inertial navigation instruments
    • G01C21/1656Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 by using measurements of speed or acceleration executed aboard the object being navigated; Dead reckoning by integrating acceleration or speed, i.e. inertial navigation combined with non-inertial navigation instruments with passive imaging devices, e.g. cameras
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C25/00Manufacturing, calibrating, cleaning, or repairing instruments or devices referred to in the other groups of this subclass
    • G01C25/005Manufacturing, calibrating, cleaning, or repairing instruments or devices referred to in the other groups of this subclass initial alignment, calibration or starting-up of inertial devices

Definitions

  • An inertial measurement unit is an electronic device that measures and reports on a velocity and orientation of an apparatus or a vehicle using a combination of accelerometers, gyroscopes, and magnetometers.
  • IMU inertial navigation systems
  • INSs inertial navigation systems
  • An important element of most INSs is an IMU configured to measure linear accelerations and rotational velocities, which enable the INS to track the position and velocity of the corresponding vehicle.
  • IMUs an important element of most INSs is an IMU configured to measure linear accelerations and rotational velocities, which enable the INS to track the position and velocity of the corresponding vehicle.
  • a major disadvantage of using IMUs for navigation or tracking purposes is that they typically suffer from accumulated error. This error accumulation leads to a drift in the inertial measurements provided by the IMU, which translates into an ever-increasing gap between the estimated location of the vehicle and its actual location.
  • IMUs typically accumulate measurement errors, which may lead to a drift in the inertial measurements provided to a computing system.
  • the computing system is provided with a measurement source, which serves to calibrate the inertial sensor, thereby helping to mitigate the measurement drift.
  • the computing system which includes an inertial sensor, is provided with a vision sensor, as the additional measurement source.
  • the computing system is configured to receive inertial sensing input data from the inertial sensor, and vision sensing input data from the vision sensor.
  • the computing system implements a method, which monitors an input state of the vision sensor to determine when the received vision sensing input data represents a predetermined input state of the vision sensor. Upon that determination, an error value is estimated in the inertial sensing input data based on the received vision sensing input data. The method further includes adjusting subsequent received inertial sensing input data from the inertial sensor based on the estimated error value, thereby calibrating the inertial sensor.
  • an inertial sensor is inactive, and the act of invoking the process of using input data from a vision sensor as the basis to calibrate the inertial sensor includes the function of activating the inertial sensor. While the inertial sensor is inactive, the system determines when the received vision sensing input data represents a predetermined input state of the vision sensor. Upon that determination, the system initiates a state switch of the inertial sensor from the inactive state to an active state. Once active, the inertial sensor provides inertial sensing input data to the computing system, which then proceeds to estimate an error value in the provided inertial sensing input data. Based on the estimated error value, the system adjusts subsequent received inertial sensing input data, thereby calibrating the inertial sensor.
  • a non-transitory computer readable storage medium contains instructions that cause the computing system to perform the above-discussed processes for calibrating inertial sensors utilizing a vision sensor.
  • the device which includes the above discussed computing system, is a head-wearable display device, which in turn includes a display element for displaying graphical images, an image presenting unit for presenting the graphical images on the display element, an inertial sensor operable to sense inertial movements of the head-wearable display device, and a vision sensor operable to provide vision sensing input data.
  • the head-wearable device further includes a memory unit storing program instructions executable to perform a method for calibrating the inertial sensor utilizing the vision sensor, and a processor operatively coupled to the memory, the image presenting unit, the inertial sensor, and the vision sensor, and configured to execute the method.
  • FIG. 1 is a block diagram illustrating an embodiment of a device including a plurality of inertial sensors and a vision sensor;
  • FIG. 2 illustrates exemplary embodiments of mobile devices suitable for use with aspects of the instant disclosure
  • FIG. 3 is a data flow diagram depicting one embodiment of the flow of data between the elements of the device of FIG. 1 ;
  • FIG. 4 is a flow diagram illustrating an exemplary method for calibrating an inertial sensor utilizing a vision sensor
  • FIG. 5 is a flow diagram illustrating another exemplary method for calibrating an inertial sensor utilizing a vision sensor
  • FIG. 6 illustrates an embodiment of a head-wearable display device with integrated inertial and vision sensors
  • FIG. 7 illustrates a schematic diagram illustrating a conceptual partial view of an example computer program associated with the methods of FIGS. 4 and 5 .
  • an apparatus or system includes a plurality of inertial sensors (e.g., an accelerometer, a gyroscope, and a magnetometer), a vision sensor (e.g., a video camera), and a processing unit programmed with application logic that makes use of the vision measurements or data provided by the vision sensor to improve the inertial measurements or data provided by the inertial sensors, thereby improving accuracy of useful output provided by the system.
  • inertial sensors e.g., an accelerometer, a gyroscope, and a magnetometer
  • a vision sensor e.g., a video camera
  • processing unit programmed with application logic that makes use of the vision measurements or data provided by the vision sensor to improve the inertial measurements or data provided by the inertial sensors, thereby improving accuracy of useful output provided by the system.
  • some or all of the inertial sensors in such a system may have bias values (perhaps one bias value per axis) that vary over time, due to aging/wear, electrical noise, local magnetic effects,
  • the application may apply a filtering algorithm that works over time to statistically evaluate and refine the received inertial measurements based on vision measurements from the vision sensor.
  • a filtering algorithm may internally generate estimates of inertial sensor bias values, covariance values, and other variables, and may improve those estimates over time as the filtering algorithm receives and operates on more and more inertial and vision sensor measurements.
  • the filtering algorithm continues to run, the accuracy of the measurements of the inertial sensors may continue to improve.
  • an application that makes use of multiple inertial sensors could invoke a vision sensor for purposes of estimating and minimizing measurement bias errors affecting at least one of the multiple inertial sensors.
  • an application that normally makes use of just a gyroscope and not a camera could be arranged to automatically invoke a camera so that angular movement (panning) in video signals received by the camera can be compared with gyroscope readings to help estimate and minimize one or more bias error values for the gyroscope.
  • the application implements a filtering algorithm, which by receiving more and more measurement data over time from both the gyroscope and the camera improves the estimation and minimization of the gyroscope bias error values.
  • a block diagram 100 illustrates an exemplary end user device 102 , which includes a computing system 104 used for implementing a method for calibrating inertial sensors.
  • Computing system 104 includes a plurality of inertial sensors or sensing units, such as an accelerometer 106 , a gyroscope 108 , and a magnetometer 110 .
  • Computing system 104 also includes an image or vision sensor 112 .
  • accelerometers and gyroscopes can be implemented using piezo systems, micro-electro-mechanical systems, and laser sensing mechanisms, for example.
  • Magnetometers can be implemented using hall effect sensors, and magnetoresistive elements.
  • Sensors 106 - 112 are operatively connected to a processing unit 114 , which is in turn coupled to or integral with a memory unit 116 , an input unit 118 , and an image presenting system 120 .
  • image presenting system 120 may include a projecting unit and a display unit (both not shown).
  • inertial sensors 106 - 110 can be implemented as micro or miniature piezoelectric sensors. In another embodiment, inertial sensors 106 - 110 can be implemented as micro-electrical-mechanical system (MEMS) sensors. In still another embodiment, some of the inertial sensors 106 - 110 can be implemented as other sensor types, such as laser gyroscopes, for example.
  • vision sensor 110 is a video camera, such as a charge coupled device (CCD) camera or a complementary metal oxide semiconductor (CMOS) camera, for example. As known to one of ordinary skill in the art, some CCD and CMOS cameras typically use the same kind of vision element, namely a photo diode.
  • Processor unit 112 is configured to execute instructions and to carry out operations associated with computing system 104 .
  • the processor unit may control the reception and manipulation of input and output data between components of computing system 104 .
  • the processing unit may include an integrated circuit that can be configured by the user, such as a field-programmable gate array (FPGA).
  • FPGA field-programmable gate array
  • the FPGA configuration is generally specified using a hardware description language (HDL).
  • HDL hardware description language
  • the processor unit can be implemented on a single-chip, multiple chips or multiple electrical components.
  • various architectures can be used for processor unit 112 , including dedicated or embedded processor or microprocessor ( ⁇ P), single purpose processor, controller or a microcontroller ( ⁇ C), application-specific integrated circuit (ASIC), any combination thereof, and so forth.
  • ⁇ P dedicated or embedded processor or microprocessor
  • ⁇ C single purpose processor
  • ASIC application-specific integrated circuit
  • Memory unit 116 generally provides a place to store computer code and data that are used by computing system 104 .
  • the memory unit may include but not limited to non-volatile memory, such as read-only memory (ROM, flash memory, etc.), volatile memory, such as random-access memory (RAM), a hard disk drive and/or the like.
  • Memory unit 116 includes an inertial motion sensing application 122 , and a vision sensing data application 124 , a data filtering application 126 , and program data 128 .
  • Inertial motion sensing application is configured to activate and deactivate inertial sensors 106 - 110 as dictated by particular applications, and to convert analog or digital inertial signals, generated by sensors 106 - 110 , into inertial motion input data that are communicated to processing unit 114 .
  • Vision sensing data application 124 is configured to activate and deactivate vision sensor 112 as dictated by particular applications, and to convert generated digital vision signals into vision input data that are communicated to processing unit 114 .
  • Data filtering application 126 is configured to filter inertial motion sensing data in order to minimize inertial sensor bias values based on vision sensing data, in accordance with the present disclosure.
  • applications 122 - 126 can be configured to operate with program data 128 on a suitable operating system (not shown).
  • suitable operating system may correspond to Windows 7, Mac OS, Google Chrome OS, Palm OS Cobalt (6.0), Android, Symbian Belle, BlackBerry OS, and the like.
  • the suitable operating system can also be a special purpose operating system, such as may be used for limited purpose appliance-type computing devices.
  • Image presenting unit 120 operatively coupled to processor unit 112 , may be a liquid crystal display (LCD) (e.g., active matrix, passive matrix and the like), a light-emitting diode (LED) display, a plasma display, a display implemented with electronic inks, or any other desirable display. Additionally, the image presenting unit may include data input configurations, which may include a GUI (not shown) that can provide an easy to use interface between a user of computing system 104 and the operating system or an application running thereon.
  • LCD liquid crystal display
  • LED light-emitting diode
  • plasma display e.g., a plasma display
  • the image presenting unit may include data input configurations, which may include a GUI (not shown) that can provide an easy to use interface between a user of computing system 104 and the operating system or an application running thereon.
  • Input unit 118 may be used to make selections with respect to the GUI on image presenting unit 120 , for example.
  • the input unit may also be used to issue commands to processor unit 114 .
  • the input unit may include a touch sensing element, which is configured to receive input from a user's touch and to send this input to processor unit 114 .
  • the input unit may include a proximity sensing element, which is configured to receive input when the user's finger is within a predetermined distance from a surface of the proximity sensing element and to send this input to processor unit 114 .
  • the touch sensing element may be a touchpad or a touch screen, each of which may be configured to recognize touch points, in terms of coordinates of their positions as well as their magnitudes on a corresponding touch sensitive surface.
  • the input unit is configured to report data corresponding to the touch points to processor unit 114 , which interprets them in accordance with a corresponding programming. For example, the processor unit may initiate a task in accordance with a particular touch.
  • the touch sensing element may be based on sensing technologies including but not limited to capacitive sensing, resistive sensing, surface acoustic wave sensing, pressure sensing, optical sensing, and/or the like. Additionally, the touch sensing element may be configured to detect a single touch point or a plurality of simultaneous touch points.
  • user device 102 may be a small-form factor portable (or mobile) electronic device such as a cell phone 202 , a personal data assistant (PDA) 204 , a tablet or notebook 206 , a personal media player device (not shown), a personal headset device (not shown), a video game player (not shown), a video game controller (not shown), a personal navigation device (not shown), a mobile internet device (MID) (not shown), or a hybrid device that includes any of the above functions.
  • PDA personal data assistant
  • tablet or notebook 206 a personal media player device
  • a personal headset device not shown
  • video game player not shown
  • video game controller not shown
  • MID mobile internet device
  • hybrid device that includes any of the above functions.
  • user device 102 may be a head wearable display device 208 .
  • computing system 104 may correspond to a portion of the above-listed different user device embodiments.
  • User device 102 may be capable of communicating via a wireless connection (e.g., electromagnetic radiation, infrared radiation or other wireless technology) using any type of wireless-based communication protocol, a wired connection using any type of wire-based communication protocol, or a combination of one or more wireless connections and one or more wired connections.
  • a wireless connection e.g., electromagnetic radiation, infrared radiation or other wireless technology
  • inertial sensor bias refers to a measure of an inertial sensor's deviation from an ideal or perfect inertial sensor, and is typically determined by the inertial sensor reading at zero inertial rate, such as a zero angular rate for a perfect gyroscope or a zero acceleration rate for a perfect accelerometer, for example.
  • bias drift refers to the tendency of a sensor bias to change over time in response to environmental changes. As stated above, the bias drift may be affected by factors including temperature changes, electric noise, local magnetic effects, and hours of usage.
  • a data flow diagram 300 depicts one embodiment of the flow of data between the elements of the device of FIG. 1 .
  • Activated sensors 306 - 312 output corresponding sensor measurements or data to processing unit 314 when user device 102 is in operation.
  • processing unit 314 is configured to utilize the received sensor data from sensors 306 - 312 to determine motion of the user device.
  • processing unit 314 is configured to estimate error values in the received inertial sensor data utilizing vision data received from vision sensor 312 in order to adjust subsequent received inertial sensor data, thereby minimizing bias drift that may accumulate over time in the received inertial sensor data.
  • processing unit 314 implements a data filter 316 , such as a Kalman filter, for example, to estimate the bias error of inertial sensors 306 - 310 .
  • Vision sensor 312 can be implemented as a video camera sensor in this embodiment.
  • data filter 316 compares image or video data received from vision sensor 312 with inertial data received from inertial sensors 306 - 310 to estimate their corresponding inertial bias errors.
  • processing unit 314 can determine more precisely when user device 102 is subjected to a particular motion.
  • vision sensor 312 can be implemented a laser or a radar sensor.
  • processing unit 314 is configured to adjust subsequent inertial sensor data received from inertial sensors 306 - 310 to compensate for their corresponding current bias error. As such, processing unit 314 adjusts the received inertial sensor data with stored error estimates, if any, prior to comparing the adjusted inertial sensor data with the most recent or newly received vision sensor data. Subsequently, data filter 316 processes newly received vision sensor data and the adjusted inertial sensor data to determine a new bias error estimate. In addition, for each inertial sensor, processing unit 314 calculates the covariance (i.e. uncertainty) of each estimated error and, in some embodiments, compares the covariance to a predetermined uncertainty threshold value.
  • covariance i.e. uncertainty
  • the estimated error is discarded. If the covariance is equal to or less than the threshold value, the estimated error is used in updating subsequent inertial sensor data received from inertial sensors 306 - 310 .
  • the threshold covariance value is based on error characteristics of the inertial sensor(s).
  • the latest evaluated error estimates are stored in the memory unit.
  • processing unit 314 retrieves the last stored inertial error estimates to be used for adjusting the inertial sensor data provided by the corresponding activated inertial sensors 306 - 310 .
  • a flow diagram 400 illustrates an exemplary method for calibrating inertial sensors 306 - 310 utilizing vision sensor 312 .
  • the calibration of the inertial sensors serves to mitigate or at least substantially minimize their corresponding bias errors that can accumulate over time in their measured inertial sensor data.
  • the computing system is configured to monitor the input state of the vision sensor, and in response to detecting a predefined or predetermined vision input state, the computing system is configured to invoke or trigger a process of using the vision input data as a basis to calibrate one or more of the inertial sensors.
  • gyroscopic sensor 308 may be configured to detect a three dimensional (3D) angular motion, and thus may have a bias value for each of three x, y, and z axes, for the sake of simplicity, the discussion of the calibration process will be limited to only one axis of gyroscopic sensor 308 .
  • blocks 402 through 414 correspond to the calibration of gyroscopic sensor 308 based on input data received from vision sensor 312 .
  • gyroscopic sensor 308 senses and communicates to processing unit 314 angular motion data generated by an angular motion of user device 102 , at block 404 .
  • computing system 104 is configured to monitor the state of input data of vision sensor 312 , which is communicated to and received by processing unit 314 , at block 406 , in order to determine whether the received vision input data represents a predetermined input data state, at block 408 .
  • processing unit 314 Upon determination that the state of input data of the vision sensor does represents the predetermined input data state, processing unit 314 is configured to estimate a bias error of the communicated angular motion data based on the vision input data, at block 410 .
  • the predetermined vision sensing input state may correspond to a predetermined input data threshold, which may be indicative of a substantial stillness of the input image data, or of a predetermined movement threshold of the device.
  • the vision sensor may be a video camera used to capture a plurality of image frames during a panning of a scene, and to communicate the captured image frames to the processing unit for comparison purposes.
  • the processing unit is configured to determine whether a frame difference between the captured image frames taken during a sufficient length of time remains substantially minimal, i.e., an image frame overlap between all of the captured image frames is substantially similar to one of the captured image frames.
  • the processing unit is configured to determine whether a frame overlap between at least two of the captured image frames is less than or equal to a predetermined frame overlap threshold.
  • the bias error is estimated by a filter application or algorithm, such as a Kalman filter, for example, that compares the vision input data and the angular motion data.
  • Gyroscopic sensors typically include three axes of freedom, none of which may correspond to panning axes of the vision sensor.
  • the vision input data may need to be translated to the reference axes of the gyroscopic sensor, at block 405 .
  • the Kalman filter is an algorithm that provides an efficient, recursive, computational solution of a least-square method utilizing sample data at discrete time intervals.
  • the processing unit may apply or implement the Kalman filter that has been seeded with data defining relationships between behavioral states of the gyroscopic sensor. As the Kalman filter receives more and more data in the form of additional inertial sensor measurements over time, the Kalman filter may then continue to improve bias error estimates, as well as a covariance for each of the estimates, which represents an error estimate uncertainty, and so forth.
  • the Kalman filter is structured to receive angular motion data or measurements taken over time that contain random variations or other noise and inaccuracies, and to compare them to vision input data to produce values that tend to be closer to the true values of those angular motion measurements.
  • the error estimation process involves analyzing the vision input data and comparing it to the angular motion data
  • the video camera used as the vision sensor, is utilized to capture a sequence of image frames during the motion of the user device. For each image frame, the relative position and orientation of the video camera is estimated relative to a previous image frame.
  • the error estimation process compares data representing the camera position and orientation changes between subsequent frames with the angular motion data provided by the gyroscopic sensor, to generate an estimate of the bias error of the angular motion data.
  • the computing system is configured to determine the uncertainty in the value of the bias error estimate, by evaluating its covariance value. As such, processing unit 314 compares the evaluated covariance value to a predetermined uncertainty threshold value, at block 412 . Upon determination that the evaluated covariance value is less than or equal to the predetermined uncertainty threshold value, at block 414 , processing unit 314 updates the previous bias error estimate, if any, with the newly evaluated bias error estimate to be used for adjusting the next angular motion measurement to be received by the processing unit.
  • the Kalman filter continues to improve bias error estimates as more and more data is received in the form of additional inertial and vision sensor measurements over time. As such, subsequently received inertial sensing input data is adjusted based on the evaluated estimated error value. Moreover, upon receipt of new vision sensing input data, a new error value is estimated for the adjusted subsequent inertial sensing input data based on the newly received vision sensing input data.
  • FIG. 5 is a flow diagram 500 that illustrates another embodiment of the bias error estimation or sensor calibration process.
  • one or more of inertial sensors 306 - 310 may be inactive, and the act of invoking the process of using the vision input data as a basis to calibrate one or more of the inertial sensors includes the function of activating the one or more inactive inertial sensors.
  • only gyroscopic sensor 308 is selected as being inactive.
  • blocks 502 through 518 correspond to the activation and calibration of gyroscopic sensor 308 based on input data received from vision sensor 312 .
  • computing system 104 is configured to monitor the state of input data of vision sensor 312 , which is communicated to and received by processing unit 314 , at block 504 .
  • the error estimation process compares data representing the camera position and orientation changes between subsequent frames with the angular motion data provided by the gyroscopic sensor, to generate an estimate of the bias error of the angular motion data.
  • the vision input data may need to be translated to the reference axes of the gyroscopic sensor, at block 505 .
  • a determination as to whether the received vision input data represents a predetermined input data state.
  • processing unit 314 Upon determination that the state of input data of the vision sensor does represents the predetermined input data state, processing unit 314 is configured to activate gyroscopic sensor 308 , at block 510 . Subsequent to its activation or switching from an off-state to an on-state, gyroscopic sensor 308 may detect angular motion of device 102 and communicates the corresponding measured angular motion data to processing unit 314 , at block 512 .
  • the computing system is configured to determine the uncertainty in the value of the bias error estimate, by evaluating its covariance value. As such, processing unit 314 compares the evaluated covariance value to a predetermined uncertainty threshold value, at block 516 . Upon determination that the evaluated covariance value is less than or equal to the predetermined uncertainty threshold value, processing unit 314 updates the previous bias error estimate, if any, at block 518 , with the newly evaluated bias error estimate to be used for adjusting the next angular motion measurement to be received by the processing unit. Alternately, more than one or all of the inertial sensors are activated and computing system can be configured to calibrate each one of them as their corresponding inertial measurements are communicated to the processing unit and based on the usage of their inertial measurements by particular applications.
  • the calibration process of FIG. 5 can thus operate to use the vision input data as the basis to calibrate one or more of inertial sensors 306 - 310 at a time when they are not being used by any application.
  • this calibration process can lead the estimation of one or more bias values for, which can be stored and later used by an application when the one or more inertial sensors are active.
  • Head wearable display device 600 which is suitable for continuous, daily use as a wearable personal electronics device, includes a pair of glasses 602 . While FIG. 6 illustrates glasses 602 as an example of head wearable display device 600 , other types of head wearable display devices could additionally or alternatively be used. In addition, other non-head wearable electronic devices, such as a wrist watch, or other non-wearable electronic devices, such as a mobile phone or laptop computer could be used.
  • glasses 602 comprise frame elements including lens frames 604 , 606 , respective lens elements or display units 608 and 610 , a center frame support 612 , two stems or temples 614 and 616 , and planar direction input units 622 , 624 .
  • the center support 612 and the two rearward extending stems 614 and 616 are configured to secure the glasses 602 to a user's face via a user's nose and ears, respectively.
  • Each of the frame elements 604 , 606 , 612 and stems 614 , 616 may be formed of a solid structure of plastic, metal, ceramic, etc., or may be formed of a hollow structure of similar material so as to allow wiring and component interconnects to be internally routed through glasses 602 .
  • Each of stems 614 and 616 is an example of a projection that extends away from a display element and is used to secure the display element to a user.
  • glasses 602 further include a computing device 626 and a miniature projector unit 628 coupled to an inside-surface of stem 614 and configured to project a display onto an inside-surface of display unit 608 .
  • Computing device 626 includes a processor unit and a memory unit (not shown). By providing the memory unit with instructions directed to the present method for calibrating an inertial sensor utilizing a vision sensor, computing device 626 can carry out the functions of the present method. In one embodiment, computing device 626 may be incorporated into glasses 602 .
  • computing device 626 may be a head-mounted computing device incorporated into, for example, a hat or helmet, or may be a body-mounted computing device incorporated into, for example, a waist-mounted mobile phone or personal digital assistant.
  • Computing device 626 is coupled to planar direction input units 622 , 624 and to miniature projector unit 628 .
  • computing device 626 is configured to transmit input received from planar direction input devices 622 , 624 , and to transmit display data to miniature projector unit 628 for display on display unit 608 .
  • glasses 602 further include a video camera 630 , a gyroscope 632 , and an accelerometer 634 .
  • Glasses 602 may further include a microphone (not shown), among other possible input units.
  • computing device 626 may monitor the inertial measurements generated by inertial sensors 632 and 634 , and vision data provided by camera 630 , in order to calibrate the inertial sensors as directed by particular applications.
  • FIG. 7 is a schematic illustrating a conceptual partial view of an example computer program product 700 that includes a computer program for executing a computer process on a computing device, arranged according to at least some embodiments presented herein.
  • the example computer program product 700 is provided using a signal bearing medium 701 .
  • Signal bearing medium 701 may include one or more programming instructions 702 that, when executed by one or more processors may provide functionality or portions of the functionality described above with respect to FIGS. 1-7 .
  • one or more features of one or more blocks 402 - 414 and blocks 502 - 518 may be undertaken by one or more instructions associated with signal bearing medium 701 .
  • signal bearing medium 701 may encompass a non-transitory computer-readable medium 703 , such as, but not limited to, a hard disk drive, a Compact Disc (CD), a Digital Video Disk (DVD), a digital tape, memory, etc.
  • signal bearing medium 701 may encompass a computer recordable medium 704 , such as, but not limited to, memory, read/write (R/W) CDs, R/W DVDs, etc.
  • signal bearing medium 701 may encompass a communications medium 705 , such as, but not limited to, a digital and/or an analog communication medium (e.g., a fiber optic cable, a waveguide, a wired communications link, a wireless communication link, etc.).
  • signal bearing medium 701 may be conveyed by a wireless form of the communications medium 705 (e.g., a wireless communications medium conforming with the IEEE 802.11 standard or other transmission protocol).
  • the one or more programming instructions 702 may be, for example, computer executable and/or logic implemented instructions.
  • a computing device such as computing device 700 of FIG. 7 may be configured to provide various operations, functions, or actions in response to programming instructions 702 conveyed to computing device 700 by one or more of the computer readable medium 703 , computer recordable medium 704 , and/or communications medium 705 .

Landscapes

  • Engineering & Computer Science (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Manufacturing & Machinery (AREA)
  • Automation & Control Theory (AREA)
  • Gyroscopes (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

A method is provided for calibrating an inertial sensing unit of a device utilizing a vision sensing unit integral to the device. The method includes receiving inertial sensing input data from the inertial sensing unit, receiving vision sensing input data from the vision unit, and determining when the received vision sensing input data represents a predetermined input state of the vision sensing unit. The method includes estimating an error value in the inertial sensing input data received from the inertial sensing unit based on the received vision sensing input data upon determination that the received vision sensing input data represents the predetermined vision sensing input state. The method further includes adjusting first subsequent received inertial sensing input data from the inertial sensing unit based on the estimated error value, thereby calibrating the inertial sensing unit.

Description

    CROSS REFERENCE TO RELATED APPLICATIONS
  • This application is a continuation of co-owned U.S. patent application Ser. No. 15/192,727, filed on Jun. 24, 2016, which is a continuation of co-owned U.S. patent application Ser. No. 13/289,321 filed on Nov. 4, 2011, both of which are incorporated by reference herein in their entirety and for all purposes.
  • BACKGROUND
  • Unless otherwise indicated herein, the materials described in this section are not prior art to the claims in this application and are not admitted to be prior art by inclusion in this section.
  • An inertial measurement unit (IMU) is an electronic device that measures and reports on a velocity and orientation of an apparatus or a vehicle using a combination of accelerometers, gyroscopes, and magnetometers. Recently, inertial navigation systems (INSs) have been widely used for estimating the motion of vehicles moving in a three dimensional (3-D) space, such as airplanes and automobiles, for example. An important element of most INSs is an IMU configured to measure linear accelerations and rotational velocities, which enable the INS to track the position and velocity of the corresponding vehicle. However, a major disadvantage of using IMUs for navigation or tracking purposes is that they typically suffer from accumulated error. This error accumulation leads to a drift in the inertial measurements provided by the IMU, which translates into an ever-increasing gap between the estimated location of the vehicle and its actual location.
  • Therefore, there exists a need for a system, using an IMU, which mitigates the above-discussed the measurement drift issues, thereby enabling a more accurate determination of inertial displacements of the associated apparatus or vehicle.
  • SUMMARY
  • Disclosed herein are improved methods, systems, and devices for calibrating inertial sensors via a vision sensor to help minimize drifting errors affecting measurements of the inertial sensors.
  • As stated above, IMUs typically accumulate measurement errors, which may lead to a drift in the inertial measurements provided to a computing system. As such, in accordance with the disclosure, in addition to the IMU, the computing system is provided with a measurement source, which serves to calibrate the inertial sensor, thereby helping to mitigate the measurement drift.
  • In one embodiment, the computing system, which includes an inertial sensor, is provided with a vision sensor, as the additional measurement source. Based on this configuration, the computing system is configured to receive inertial sensing input data from the inertial sensor, and vision sensing input data from the vision sensor. In order to calibrate the inertial sensor, the computing system implements a method, which monitors an input state of the vision sensor to determine when the received vision sensing input data represents a predetermined input state of the vision sensor. Upon that determination, an error value is estimated in the inertial sensing input data based on the received vision sensing input data. The method further includes adjusting subsequent received inertial sensing input data from the inertial sensor based on the estimated error value, thereby calibrating the inertial sensor.
  • In another embodiment, an inertial sensor is inactive, and the act of invoking the process of using input data from a vision sensor as the basis to calibrate the inertial sensor includes the function of activating the inertial sensor. While the inertial sensor is inactive, the system determines when the received vision sensing input data represents a predetermined input state of the vision sensor. Upon that determination, the system initiates a state switch of the inertial sensor from the inactive state to an active state. Once active, the inertial sensor provides inertial sensing input data to the computing system, which then proceeds to estimate an error value in the provided inertial sensing input data. Based on the estimated error value, the system adjusts subsequent received inertial sensing input data, thereby calibrating the inertial sensor.
  • In another embodiment, a non-transitory computer readable storage medium contains instructions that cause the computing system to perform the above-discussed processes for calibrating inertial sensors utilizing a vision sensor.
  • In yet another embodiment, the device, which includes the above discussed computing system, is a head-wearable display device, which in turn includes a display element for displaying graphical images, an image presenting unit for presenting the graphical images on the display element, an inertial sensor operable to sense inertial movements of the head-wearable display device, and a vision sensor operable to provide vision sensing input data. The head-wearable device further includes a memory unit storing program instructions executable to perform a method for calibrating the inertial sensor utilizing the vision sensor, and a processor operatively coupled to the memory, the image presenting unit, the inertial sensor, and the vision sensor, and configured to execute the method.
  • These as well as other aspects, advantages, and alternatives will become apparent to those of ordinary skill in the art by reading the following detailed description, with reference where appropriate to the accompanying drawings. Further, it should be understood that the disclosure provided in this summary section and elsewhere in this document is intended to discuss the invention by way of example only and not by way of limitation.
  • BRIEF DESCRIPTION OF THE FIGURES
  • In the figures:
  • FIG. 1 is a block diagram illustrating an embodiment of a device including a plurality of inertial sensors and a vision sensor;
  • FIG. 2 illustrates exemplary embodiments of mobile devices suitable for use with aspects of the instant disclosure;
  • FIG. 3 is a data flow diagram depicting one embodiment of the flow of data between the elements of the device of FIG. 1;
  • FIG. 4 is a flow diagram illustrating an exemplary method for calibrating an inertial sensor utilizing a vision sensor;
  • FIG. 5 is a flow diagram illustrating another exemplary method for calibrating an inertial sensor utilizing a vision sensor;
  • FIG. 6 illustrates an embodiment of a head-wearable display device with integrated inertial and vision sensors; and
  • FIG. 7 illustrates a schematic diagram illustrating a conceptual partial view of an example computer program associated with the methods of FIGS. 4 and 5.
  • DETAILED DESCRIPTION
  • In the following detailed description, reference is made to the accompanying figures, which form a part hereof. In the figures, similar symbols typically identify similar components, unless context dictates otherwise. The illustrative embodiments described in the detailed description, figures, and claims are not meant to be limiting. Other embodiments may be utilized, and other changes may be made, without departing from the spirit or scope of the subject matter presented herein. It will be readily understood that the aspects of the present disclosure, as generally described herein, and illustrated in the figures, can be arranged, substituted, combined, separated, and designed in a wide variety of different configurations, all of which are explicitly contemplated herein.
  • The methods, systems, and apparatuses or devices disclosed herein generally relate to minimizing drift or bias error in measurements provided by inertial sensors. In one embodiment, an apparatus or system includes a plurality of inertial sensors (e.g., an accelerometer, a gyroscope, and a magnetometer), a vision sensor (e.g., a video camera), and a processing unit programmed with application logic that makes use of the vision measurements or data provided by the vision sensor to improve the inertial measurements or data provided by the inertial sensors, thereby improving accuracy of useful output provided by the system. In general, some or all of the inertial sensors in such a system may have bias values (perhaps one bias value per axis) that vary over time, due to aging/wear, electrical noise, local magnetic effects, thermal variations, and other conditions.
  • As a general matter, to help ensure accurate output, when an application on such a system receives measurements from active or invoked inertial sensors and from the vision sensor, the application may apply a filtering algorithm that works over time to statistically evaluate and refine the received inertial measurements based on vision measurements from the vision sensor. In operation, such a filtering algorithm may internally generate estimates of inertial sensor bias values, covariance values, and other variables, and may improve those estimates over time as the filtering algorithm receives and operates on more and more inertial and vision sensor measurements. Thus, as the filtering algorithm continues to run, the accuracy of the measurements of the inertial sensors may continue to improve.
  • In accordance with the disclosure, an application that makes use of multiple inertial sensors could invoke a vision sensor for purposes of estimating and minimizing measurement bias errors affecting at least one of the multiple inertial sensors. For instance, an application that normally makes use of just a gyroscope and not a camera could be arranged to automatically invoke a camera so that angular movement (panning) in video signals received by the camera can be compared with gyroscope readings to help estimate and minimize one or more bias error values for the gyroscope. To improve the accuracy of the measurements of the gyroscope, the application implements a filtering algorithm, which by receiving more and more measurement data over time from both the gyroscope and the camera improves the estimation and minimization of the gyroscope bias error values.
  • Referring to FIG. 1, a block diagram 100 illustrates an exemplary end user device 102, which includes a computing system 104 used for implementing a method for calibrating inertial sensors. Computing system 104 includes a plurality of inertial sensors or sensing units, such as an accelerometer 106, a gyroscope 108, and a magnetometer 110. Computing system 104 also includes an image or vision sensor 112. Typically, accelerometers and gyroscopes can be implemented using piezo systems, micro-electro-mechanical systems, and laser sensing mechanisms, for example. Magnetometers can be implemented using hall effect sensors, and magnetoresistive elements. Sensors 106-112 are operatively connected to a processing unit 114, which is in turn coupled to or integral with a memory unit 116, an input unit 118, and an image presenting system 120. In one embodiment, image presenting system 120 may include a projecting unit and a display unit (both not shown).
  • In one embodiment, inertial sensors 106-110 can be implemented as micro or miniature piezoelectric sensors. In another embodiment, inertial sensors 106-110 can be implemented as micro-electrical-mechanical system (MEMS) sensors. In still another embodiment, some of the inertial sensors 106-110 can be implemented as other sensor types, such as laser gyroscopes, for example. In addition, in one embodiment, vision sensor 110 is a video camera, such as a charge coupled device (CCD) camera or a complementary metal oxide semiconductor (CMOS) camera, for example. As known to one of ordinary skill in the art, some CCD and CMOS cameras typically use the same kind of vision element, namely a photo diode.
  • Processor unit 112 is configured to execute instructions and to carry out operations associated with computing system 104. For example, using instructions retrieved from memory unit 116, the processor unit may control the reception and manipulation of input and output data between components of computing system 104. The processing unit may include an integrated circuit that can be configured by the user, such as a field-programmable gate array (FPGA). The FPGA configuration is generally specified using a hardware description language (HDL). The processor unit can be implemented on a single-chip, multiple chips or multiple electrical components. For example, various architectures can be used for processor unit 112, including dedicated or embedded processor or microprocessor (μP), single purpose processor, controller or a microcontroller (μC), application-specific integrated circuit (ASIC), any combination thereof, and so forth. In most cases, the processor unit together with an operating system operates to execute computer code and produce and use data.
  • Memory unit 116 generally provides a place to store computer code and data that are used by computing system 104. The memory unit may include but not limited to non-volatile memory, such as read-only memory (ROM, flash memory, etc.), volatile memory, such as random-access memory (RAM), a hard disk drive and/or the like. Memory unit 116 includes an inertial motion sensing application 122, and a vision sensing data application 124, a data filtering application 126, and program data 128. Inertial motion sensing application is configured to activate and deactivate inertial sensors 106-110 as dictated by particular applications, and to convert analog or digital inertial signals, generated by sensors 106-110, into inertial motion input data that are communicated to processing unit 114. Vision sensing data application 124 is configured to activate and deactivate vision sensor 112 as dictated by particular applications, and to convert generated digital vision signals into vision input data that are communicated to processing unit 114. Data filtering application 126 is configured to filter inertial motion sensing data in order to minimize inertial sensor bias values based on vision sensing data, in accordance with the present disclosure. In some example embodiments, applications 122-126 can be configured to operate with program data 128 on a suitable operating system (not shown). Operating systems are generally well known and will not be described in greater detail. By way of example, the suitable operating system may correspond to Windows 7, Mac OS, Google Chrome OS, Palm OS Cobalt (6.0), Android, Symbian Belle, BlackBerry OS, and the like. The suitable operating system can also be a special purpose operating system, such as may be used for limited purpose appliance-type computing devices.
  • Image presenting unit 120, operatively coupled to processor unit 112, may be a liquid crystal display (LCD) (e.g., active matrix, passive matrix and the like), a light-emitting diode (LED) display, a plasma display, a display implemented with electronic inks, or any other desirable display. Additionally, the image presenting unit may include data input configurations, which may include a GUI (not shown) that can provide an easy to use interface between a user of computing system 104 and the operating system or an application running thereon.
  • Input unit 118 may be used to make selections with respect to the GUI on image presenting unit 120, for example. The input unit may also be used to issue commands to processor unit 114. The input unit may include a touch sensing element, which is configured to receive input from a user's touch and to send this input to processor unit 114. Alternatively, the input unit may include a proximity sensing element, which is configured to receive input when the user's finger is within a predetermined distance from a surface of the proximity sensing element and to send this input to processor unit 114. The touch sensing element may be a touchpad or a touch screen, each of which may be configured to recognize touch points, in terms of coordinates of their positions as well as their magnitudes on a corresponding touch sensitive surface. The input unit is configured to report data corresponding to the touch points to processor unit 114, which interprets them in accordance with a corresponding programming. For example, the processor unit may initiate a task in accordance with a particular touch. The touch sensing element may be based on sensing technologies including but not limited to capacitive sensing, resistive sensing, surface acoustic wave sensing, pressure sensing, optical sensing, and/or the like. Additionally, the touch sensing element may be configured to detect a single touch point or a plurality of simultaneous touch points.
  • As shown in FIG. 2, user device 102 may be a small-form factor portable (or mobile) electronic device such as a cell phone 202, a personal data assistant (PDA) 204, a tablet or notebook 206, a personal media player device (not shown), a personal headset device (not shown), a video game player (not shown), a video game controller (not shown), a personal navigation device (not shown), a mobile internet device (MID) (not shown), or a hybrid device that includes any of the above functions. In one embodiment, user device 102 may be a head wearable display device 208. In case the computing system is integral to the user device, computing system 104 may correspond to a portion of the above-listed different user device embodiments. User device 102 may be capable of communicating via a wireless connection (e.g., electromagnetic radiation, infrared radiation or other wireless technology) using any type of wireless-based communication protocol, a wired connection using any type of wire-based communication protocol, or a combination of one or more wireless connections and one or more wired connections.
  • As used herein, the phrase “inertial sensor bias” refers to a measure of an inertial sensor's deviation from an ideal or perfect inertial sensor, and is typically determined by the inertial sensor reading at zero inertial rate, such as a zero angular rate for a perfect gyroscope or a zero acceleration rate for a perfect accelerometer, for example. As discussed herein, the phrase “bias drift” refers to the tendency of a sensor bias to change over time in response to environmental changes. As stated above, the bias drift may be affected by factors including temperature changes, electric noise, local magnetic effects, and hours of usage.
  • Now referring to FIG. 3, a data flow diagram 300 depicts one embodiment of the flow of data between the elements of the device of FIG. 1. Activated sensors 306-312 output corresponding sensor measurements or data to processing unit 314 when user device 102 is in operation. Primarily, processing unit 314 is configured to utilize the received sensor data from sensors 306-312 to determine motion of the user device. In addition, processing unit 314 is configured to estimate error values in the received inertial sensor data utilizing vision data received from vision sensor 312 in order to adjust subsequent received inertial sensor data, thereby minimizing bias drift that may accumulate over time in the received inertial sensor data.
  • In the depicted embodiment of FIG. 3, processing unit 314 implements a data filter 316, such as a Kalman filter, for example, to estimate the bias error of inertial sensors 306-310. Vision sensor 312 can be implemented as a video camera sensor in this embodiment. As such, data filter 316 compares image or video data received from vision sensor 312 with inertial data received from inertial sensors 306-310 to estimate their corresponding inertial bias errors. By utilizing a video camera in tandem with inertial sensors, processing unit 314 can determine more precisely when user device 102 is subjected to a particular motion. Alternately, vision sensor 312 can be implemented a laser or a radar sensor.
  • As stated above, during operation, processing unit 314 is configured to adjust subsequent inertial sensor data received from inertial sensors 306-310 to compensate for their corresponding current bias error. As such, processing unit 314 adjusts the received inertial sensor data with stored error estimates, if any, prior to comparing the adjusted inertial sensor data with the most recent or newly received vision sensor data. Subsequently, data filter 316 processes newly received vision sensor data and the adjusted inertial sensor data to determine a new bias error estimate. In addition, for each inertial sensor, processing unit 314 calculates the covariance (i.e. uncertainty) of each estimated error and, in some embodiments, compares the covariance to a predetermined uncertainty threshold value. As such, if the calculated covariance of the estimated inertial error exceeds the threshold value, the estimated error is discarded. If the covariance is equal to or less than the threshold value, the estimated error is used in updating subsequent inertial sensor data received from inertial sensors 306-310. The threshold covariance value is based on error characteristics of the inertial sensor(s).
  • In one embodiment, upon deactivation of the inertial sensors 306-310, the latest evaluated error estimates are stored in the memory unit. As such, upon start-up of the user device or reactivation of the inertial sensors, processing unit 314 retrieves the last stored inertial error estimates to be used for adjusting the inertial sensor data provided by the corresponding activated inertial sensors 306-310.
  • Now referring to FIG. 4, a flow diagram 400 illustrates an exemplary method for calibrating inertial sensors 306-310 utilizing vision sensor 312. The calibration of the inertial sensors serves to mitigate or at least substantially minimize their corresponding bias errors that can accumulate over time in their measured inertial sensor data. In one embodiment, the computing system is configured to monitor the input state of the vision sensor, and in response to detecting a predefined or predetermined vision input state, the computing system is configured to invoke or trigger a process of using the vision input data as a basis to calibrate one or more of the inertial sensors.
  • For the sake of simplicity in describing this exemplary sensor calibration method, we'll describe the calibration of only one inertial sensor, e.g., gyroscopic sensor 308, utilizing vision input data communicated by vision sensor 312. Moreover, a video camera is used as vision sensor 312. Although, gyroscopic sensor 308 may be configured to detect a three dimensional (3D) angular motion, and thus may have a bias value for each of three x, y, and z axes, for the sake of simplicity, the discussion of the calibration process will be limited to only one axis of gyroscopic sensor 308.
  • As shown in FIG. 4, blocks 402 through 414 correspond to the calibration of gyroscopic sensor 308 based on input data received from vision sensor 312. Upon initiation of the computing system, at block 402, gyroscopic sensor 308 senses and communicates to processing unit 314 angular motion data generated by an angular motion of user device 102, at block 404. As stated above, computing system 104 is configured to monitor the state of input data of vision sensor 312, which is communicated to and received by processing unit 314, at block 406, in order to determine whether the received vision input data represents a predetermined input data state, at block 408. Upon determination that the state of input data of the vision sensor does represents the predetermined input data state, processing unit 314 is configured to estimate a bias error of the communicated angular motion data based on the vision input data, at block 410. In one embodiment, the predetermined vision sensing input state may correspond to a predetermined input data threshold, which may be indicative of a substantial stillness of the input image data, or of a predetermined movement threshold of the device.
  • As stated above, the vision sensor may be a video camera used to capture a plurality of image frames during a panning of a scene, and to communicate the captured image frames to the processing unit for comparison purposes. To verify that the predetermined input data threshold is indicative of a substantial stillness of the input image data, the processing unit is configured to determine whether a frame difference between the captured image frames taken during a sufficient length of time remains substantially minimal, i.e., an image frame overlap between all of the captured image frames is substantially similar to one of the captured image frames. To verify that the predetermined input data threshold is indicative of a predetermined movement threshold of the device, the processing unit is configured to determine whether a frame overlap between at least two of the captured image frames is less than or equal to a predetermined frame overlap threshold.
  • In one embodiment, the bias error is estimated by a filter application or algorithm, such as a Kalman filter, for example, that compares the vision input data and the angular motion data. Gyroscopic sensors typically include three axes of freedom, none of which may correspond to panning axes of the vision sensor. As such, before comparing the vision input data and the angular motion data, the vision input data may need to be translated to the reference axes of the gyroscopic sensor, at block 405. As known to one of ordinary skill in the art, the Kalman filter is an algorithm that provides an efficient, recursive, computational solution of a least-square method utilizing sample data at discrete time intervals. As the processing unit receives sensor measurements, the processing unit may apply or implement the Kalman filter that has been seeded with data defining relationships between behavioral states of the gyroscopic sensor. As the Kalman filter receives more and more data in the form of additional inertial sensor measurements over time, the Kalman filter may then continue to improve bias error estimates, as well as a covariance for each of the estimates, which represents an error estimate uncertainty, and so forth.
  • In this embodiment, the Kalman filter is structured to receive angular motion data or measurements taken over time that contain random variations or other noise and inaccuracies, and to compare them to vision input data to produce values that tend to be closer to the true values of those angular motion measurements. As the error estimation process involves analyzing the vision input data and comparing it to the angular motion data, the video camera, used as the vision sensor, is utilized to capture a sequence of image frames during the motion of the user device. For each image frame, the relative position and orientation of the video camera is estimated relative to a previous image frame. As such, the error estimation process compares data representing the camera position and orientation changes between subsequent frames with the angular motion data provided by the gyroscopic sensor, to generate an estimate of the bias error of the angular motion data.
  • Once the bias error is estimated, at block 410, the computing system is configured to determine the uncertainty in the value of the bias error estimate, by evaluating its covariance value. As such, processing unit 314 compares the evaluated covariance value to a predetermined uncertainty threshold value, at block 412. Upon determination that the evaluated covariance value is less than or equal to the predetermined uncertainty threshold value, at block 414, processing unit 314 updates the previous bias error estimate, if any, with the newly evaluated bias error estimate to be used for adjusting the next angular motion measurement to be received by the processing unit.
  • As stated above, the Kalman filter continues to improve bias error estimates as more and more data is received in the form of additional inertial and vision sensor measurements over time. As such, subsequently received inertial sensing input data is adjusted based on the evaluated estimated error value. Moreover, upon receipt of new vision sensing input data, a new error value is estimated for the adjusted subsequent inertial sensing input data based on the newly received vision sensing input data.
  • FIG. 5 is a flow diagram 500 that illustrates another embodiment of the bias error estimation or sensor calibration process. In this embodiment, one or more of inertial sensors 306-310 may be inactive, and the act of invoking the process of using the vision input data as a basis to calibrate one or more of the inertial sensors includes the function of activating the one or more inactive inertial sensors. Without loss of generality, in this embodiment, only gyroscopic sensor 308 is selected as being inactive. As shown in FIG. 5, blocks 502 through 518 correspond to the activation and calibration of gyroscopic sensor 308 based on input data received from vision sensor 312.
  • Now referring to FIG. 5, upon initiation of the computing system, at block 502, computing system 104 is configured to monitor the state of input data of vision sensor 312, which is communicated to and received by processing unit 314, at block 504. As discussed above in relation to FIG. 4, the error estimation process compares data representing the camera position and orientation changes between subsequent frames with the angular motion data provided by the gyroscopic sensor, to generate an estimate of the bias error of the angular motion data. Before comparing the vision input data and the angular motion data the vision input data may need to be translated to the reference axes of the gyroscopic sensor, at block 505. At block, a determination as to whether the received vision input data represents a predetermined input data state. Upon determination that the state of input data of the vision sensor does represents the predetermined input data state, processing unit 314 is configured to activate gyroscopic sensor 308, at block 510. Subsequent to its activation or switching from an off-state to an on-state, gyroscopic sensor 308 may detect angular motion of device 102 and communicates the corresponding measured angular motion data to processing unit 314, at block 512.
  • Once the bias error is estimated, at block 514, the computing system is configured to determine the uncertainty in the value of the bias error estimate, by evaluating its covariance value. As such, processing unit 314 compares the evaluated covariance value to a predetermined uncertainty threshold value, at block 516. Upon determination that the evaluated covariance value is less than or equal to the predetermined uncertainty threshold value, processing unit 314 updates the previous bias error estimate, if any, at block 518, with the newly evaluated bias error estimate to be used for adjusting the next angular motion measurement to be received by the processing unit. Alternately, more than one or all of the inertial sensors are activated and computing system can be configured to calibrate each one of them as their corresponding inertial measurements are communicated to the processing unit and based on the usage of their inertial measurements by particular applications.
  • Advantageously, the calibration process of FIG. 5 can thus operate to use the vision input data as the basis to calibrate one or more of inertial sensors 306-310 at a time when they are not being used by any application. For each of the one or more inertial sensors, this calibration process can lead the estimation of one or more bias values for, which can be stored and later used by an application when the one or more inertial sensors are active.
  • The above discussed methods and system for calibrating sensors may be implemented in various arrangements. One such arrangement may include a head wearable display device 600, as shown in FIG. 6. Head wearable display device 600, which is suitable for continuous, daily use as a wearable personal electronics device, includes a pair of glasses 602. While FIG. 6 illustrates glasses 602 as an example of head wearable display device 600, other types of head wearable display devices could additionally or alternatively be used. In addition, other non-head wearable electronic devices, such as a wrist watch, or other non-wearable electronic devices, such as a mobile phone or laptop computer could be used.
  • As illustrated in FIG. 6, glasses 602 comprise frame elements including lens frames 604, 606, respective lens elements or display units 608 and 610, a center frame support 612, two stems or temples 614 and 616, and planar direction input units 622, 624. The center support 612 and the two rearward extending stems 614 and 616 are configured to secure the glasses 602 to a user's face via a user's nose and ears, respectively. Each of the frame elements 604, 606, 612 and stems 614, 616 may be formed of a solid structure of plastic, metal, ceramic, etc., or may be formed of a hollow structure of similar material so as to allow wiring and component interconnects to be internally routed through glasses 602. Each of stems 614 and 616 is an example of a projection that extends away from a display element and is used to secure the display element to a user.
  • As shown in FIG. 6, glasses 602 further include a computing device 626 and a miniature projector unit 628 coupled to an inside-surface of stem 614 and configured to project a display onto an inside-surface of display unit 608. Computing device 626 includes a processor unit and a memory unit (not shown). By providing the memory unit with instructions directed to the present method for calibrating an inertial sensor utilizing a vision sensor, computing device 626 can carry out the functions of the present method. In one embodiment, computing device 626 may be incorporated into glasses 602. In another embodiment, computing device 626 may be a head-mounted computing device incorporated into, for example, a hat or helmet, or may be a body-mounted computing device incorporated into, for example, a waist-mounted mobile phone or personal digital assistant. Computing device 626 is coupled to planar direction input units 622, 624 and to miniature projector unit 628. As such, computing device 626 is configured to transmit input received from planar direction input devices 622, 624, and to transmit display data to miniature projector unit 628 for display on display unit 608.
  • Additionally, glasses 602 further include a video camera 630, a gyroscope 632, and an accelerometer 634. Glasses 602 may further include a microphone (not shown), among other possible input units. During operation, computing device 626 may monitor the inertial measurements generated by inertial sensors 632 and 634, and vision data provided by camera 630, in order to calibrate the inertial sensors as directed by particular applications.
  • In some embodiments, the disclosed methods may be implemented as computer program instructions encoded on a computer-readable storage media in a machine-readable format. FIG. 7 is a schematic illustrating a conceptual partial view of an example computer program product 700 that includes a computer program for executing a computer process on a computing device, arranged according to at least some embodiments presented herein. In one embodiment, the example computer program product 700 is provided using a signal bearing medium 701. Signal bearing medium 701 may include one or more programming instructions 702 that, when executed by one or more processors may provide functionality or portions of the functionality described above with respect to FIGS. 1-7. Thus, for example, referring the embodiment shown in FIGS. 4 and 5, one or more features of one or more blocks 402-414 and blocks 502-518 may be undertaken by one or more instructions associated with signal bearing medium 701.
  • In some examples, signal bearing medium 701 may encompass a non-transitory computer-readable medium 703, such as, but not limited to, a hard disk drive, a Compact Disc (CD), a Digital Video Disk (DVD), a digital tape, memory, etc. In some implementations, signal bearing medium 701 may encompass a computer recordable medium 704, such as, but not limited to, memory, read/write (R/W) CDs, R/W DVDs, etc. In some implementations, signal bearing medium 701 may encompass a communications medium 705, such as, but not limited to, a digital and/or an analog communication medium (e.g., a fiber optic cable, a waveguide, a wired communications link, a wireless communication link, etc.). Thus, for example, signal bearing medium 701 may be conveyed by a wireless form of the communications medium 705 (e.g., a wireless communications medium conforming with the IEEE 802.11 standard or other transmission protocol).
  • The one or more programming instructions 702 may be, for example, computer executable and/or logic implemented instructions. In some examples, a computing device such as computing device 700 of FIG. 7 may be configured to provide various operations, functions, or actions in response to programming instructions 702 conveyed to computing device 700 by one or more of the computer readable medium 703, computer recordable medium 704, and/or communications medium 705.
  • While various aspects and embodiments have been disclosed herein, other aspects and embodiments will be apparent to those skilled in the art. The various aspects and embodiments disclosed herein are for purposes of illustration and are not intended to be limiting, with the true scope and spirit being indicated by the following claims, along with the full scope of equivalents to which such claims are entitled. It is also to be understood that the terminology used herein is for the purpose of describing particular embodiments only, and is not intended to be limiting.

Claims (20)

1. A method comprising:
during a session in which a first application is open on a computing device:
(a) receiving, from a first inertial sensing unit integral to the computing device, first inertial data indicating movement of the wearable device during a period of time;
(b) receiving, from a second inertial sensing unit integral to the computing device, second inertial data indicating the movement of the computing device during the period of time;
(c) determining, based on a comparison of the first inertial data to the second inertial data, an error value in the first inertial data;
(d) based on the estimated error value, determining an inertial-data adjustment for subsequently received inertial data from the first inertial sensing unit; and
(e) storing the inertial-data adjustment in a memory of the computing device;
subsequently initiating a session of a second application on the computing device, wherein the second application utilizes inertial data from the first inertial sensing unit; and
applying the stored inertial-data adjustment to at least some inertial data generated by the inertial sensing unit during the session of the second application.
2. The method of claim 1, further comprising, in response to initiating the session of the second application that utilizes inertial data, retrieving the inertial-data adjustment from memory and applying the inertial-data adjustment to at least some inertial data generated by the inertial sensing unit during the session of the second application.
3. The method of claim 1, further comprising:
determining when the second inertial data represents a predetermined input state of the second inertial sensing unit and responsively performing (c) to (e).
4. The method of claim 1, wherein the second inertial data comprises-input image data received from an image sensing unit integral to the wearable device, the method further comprising:
determining when the received input image data represents a predetermined input state of the image sensing unit and responsively performing (c) to (e).
5. The method of claim 4, wherein determining when the received input image data represents the predetermined image sensing input state comprises:
determining when the predetermined image sensing input state corresponds to a predetermined input data threshold.
6. The method of claim 5, wherein the predetermined input data threshold is indicative of a substantial stillness of the input image data.
7. The method of claim 5, wherein the predetermined input data threshold is indicative of a predetermined movement threshold of the device.
8. The method of claim 1, wherein the computing device comprises a wearable computing device.
9. The method of claim 1, wherein the computing device comprises a mobile computing device.
10. The method of claim 1, wherein the computing device comprises a handheld computing device.
11. The method of claim 1, wherein the inertial sensing unit is one of a gyroscope, an accelerometer, and a magnetometer.
12. The method of claim 1, wherein the computing system comprises:
a memory unit storing program instructions executable to perform the method; and
a processor unit operatively coupled to the memory unit, the inertial sensing unit, and the image sensing unit, and configured to execute the method.
13. A method comprising:
determining that no application running on a computing device is utilizing data generated by a first inertial sensing unit integral to the computing device; and
in response to determining that no application is utilizing data generated by the inertial sensing unit:
(a) operating the first inertial sensing unit to receive first inertial data indicating movement of the computing device;
(b) operating a second inertial sensing unit to receive second inertial data indicating movement of the computing device;
(c) determining, based on a comparison of the first inertial data to the second inertial data, an error value in the first inertial data; and
(d) adjusting subsequently received inertial data from the first inertial sensing unit based on the estimated error value.
14. The method of claim 13, further comprising:
determining when the second inertial data represents a predetermined input state of the second inertial sensing unit and responsively performing (c) and (d).
15. The method of claim 13, wherein the second inertial data comprises-input image data received from an image sensing unit integral to the wearable device, the method further comprising:
determining when the received input image data represents a predetermined input state of the image sensing unit and responsively performing (c) and (d).
16. The method of claim 13, wherein the computing device comprises a wearable computing device.
17. The method of claim 13, wherein the computing device comprises a mobile computing device.
18. A non-transitory computer readable storage medium comprising program instructions that cause a computing system to perform functions comprising:
during a session in which a first application is open on a computing device:
(a) receiving, from a first inertial sensing unit integral to the computing device, first inertial data indicating movement of the wearable device during a period of time;
(b) receiving, from a second inertial sensing unit integral to the computing device, second inertial data indicating the movement of the computing device during the period of time;
(c) determining, based on a comparison of the first inertial data to the second inertial data, an error value in the first inertial data;
(d) based on the estimated error value, determining an inertial-data adjustment for subsequently received inertial data from the first inertial sensing unit; and
(e) storing the inertial-data adjustment in a memory of the computing device;
subsequently initiating a session of a second application on the computing device, wherein the second application utilizes inertial data from the first inertial sensing unit; and
applying the stored inertial-data adjustment to at least some inertial data generated by the inertial sensing unit during the session of the second application.
19. The transitory computer readable storage medium of claim 18, wherein the second inertial data comprises-input image data received from an image sensing unit integral to the wearable device, further comprising program instructions that cause the computing system to perform functions comprising:
determining when the received input image data represents a predetermined input state of the image sensing unit and responsively performing (c) to (e).
20. The transitory computer readable storage medium of claim 19, wherein determining when the received input image data represents the predetermined image sensing input state comprises:
determining when the predetermined image sensing input state corresponds to a predetermined input data threshold.
US15/598,127 2011-11-04 2017-05-17 Calibrating Inertial Sensors Using an Image Abandoned US20170254832A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US15/598,127 US20170254832A1 (en) 2011-11-04 2017-05-17 Calibrating Inertial Sensors Using an Image

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201113289321A 2011-11-04 2011-11-04
US15/192,727 US9678102B2 (en) 2011-11-04 2016-06-24 Calibrating intertial sensors using an image sensor
US15/598,127 US20170254832A1 (en) 2011-11-04 2017-05-17 Calibrating Inertial Sensors Using an Image

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US15/192,727 Continuation US9678102B2 (en) 2011-11-04 2016-06-24 Calibrating intertial sensors using an image sensor

Publications (1)

Publication Number Publication Date
US20170254832A1 true US20170254832A1 (en) 2017-09-07

Family

ID=58408814

Family Applications (2)

Application Number Title Priority Date Filing Date
US15/192,727 Active US9678102B2 (en) 2011-11-04 2016-06-24 Calibrating intertial sensors using an image sensor
US15/598,127 Abandoned US20170254832A1 (en) 2011-11-04 2017-05-17 Calibrating Inertial Sensors Using an Image

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US15/192,727 Active US9678102B2 (en) 2011-11-04 2016-06-24 Calibrating intertial sensors using an image sensor

Country Status (1)

Country Link
US (2) US9678102B2 (en)

Cited By (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108120452A (en) * 2017-12-21 2018-06-05 吉林大学 The filtering method of MEMS gyroscope dynamic data
CN108387245A (en) * 2017-12-27 2018-08-10 北京航天时代光电科技有限公司 A kind of delivery rate gyroscope and plus meter apparatus polarity measurement method is installed
CN108592950A (en) * 2018-05-17 2018-09-28 北京航空航天大学 A kind of monocular camera and Inertial Measurement Unit are with respect to established angle scaling method
WO2019231850A1 (en) 2018-05-31 2019-12-05 Magic Leap, Inc. Radar head pose localization
US11189252B2 (en) 2018-03-15 2021-11-30 Magic Leap, Inc. Image correction due to deformation of components of a viewing device
US11187923B2 (en) 2017-12-20 2021-11-30 Magic Leap, Inc. Insert for augmented reality viewing device
US11199713B2 (en) 2016-12-30 2021-12-14 Magic Leap, Inc. Polychromatic light out-coupling apparatus, near-eye displays comprising the same, and method of out-coupling polychromatic light
US11200870B2 (en) 2018-06-05 2021-12-14 Magic Leap, Inc. Homography transformation matrices based temperature calibration of a viewing system
US11204491B2 (en) 2018-05-30 2021-12-21 Magic Leap, Inc. Compact variable focus configurations
US11210808B2 (en) 2016-12-29 2021-12-28 Magic Leap, Inc. Systems and methods for augmented reality
US11216086B2 (en) 2018-08-03 2022-01-04 Magic Leap, Inc. Unfused pose-based drift correction of a fused pose of a totem in a user interaction system
US11280937B2 (en) 2017-12-10 2022-03-22 Magic Leap, Inc. Anti-reflective coatings on optical waveguides
US11347960B2 (en) 2015-02-26 2022-05-31 Magic Leap, Inc. Apparatus for a near-eye display
US11425189B2 (en) 2019-02-06 2022-08-23 Magic Leap, Inc. Target intent-based clock speed determination and adjustment to limit total heat generated by multiple processors
US11445232B2 (en) 2019-05-01 2022-09-13 Magic Leap, Inc. Content provisioning system and method
US11510027B2 (en) 2018-07-03 2022-11-22 Magic Leap, Inc. Systems and methods for virtual and augmented reality
US11514673B2 (en) 2019-07-26 2022-11-29 Magic Leap, Inc. Systems and methods for augmented reality
US11521296B2 (en) 2018-11-16 2022-12-06 Magic Leap, Inc. Image size triggered clarification to maintain image sharpness
US11567324B2 (en) 2017-07-26 2023-01-31 Magic Leap, Inc. Exit pupil expander
US11579441B2 (en) 2018-07-02 2023-02-14 Magic Leap, Inc. Pixel intensity modulation using modifying gain values
US11598651B2 (en) 2018-07-24 2023-03-07 Magic Leap, Inc. Temperature dependent calibration of movement detection devices
US11624929B2 (en) 2018-07-24 2023-04-11 Magic Leap, Inc. Viewing device with dust seal integration
US11630507B2 (en) 2018-08-02 2023-04-18 Magic Leap, Inc. Viewing system with interpupillary distance compensation based on head motion
US11737832B2 (en) 2019-11-15 2023-08-29 Magic Leap, Inc. Viewing system for use in a surgical environment
US11762623B2 (en) 2019-03-12 2023-09-19 Magic Leap, Inc. Registration of local content between first and second augmented reality viewers
US20230322406A1 (en) * 2012-10-17 2023-10-12 Dugan Patents, Llc Methods and apparatus for reducing anxiety during travel
US11856479B2 (en) 2018-07-03 2023-12-26 Magic Leap, Inc. Systems and methods for virtual and augmented reality along a route with markers
US12016719B2 (en) 2018-08-22 2024-06-25 Magic Leap, Inc. Patient viewing system
US12033081B2 (en) 2019-11-14 2024-07-09 Magic Leap, Inc. Systems and methods for virtual and augmented reality
US12044851B2 (en) 2018-12-21 2024-07-23 Magic Leap, Inc. Air pocket structures for promoting total internal reflection in a waveguide
US12164978B2 (en) 2018-07-10 2024-12-10 Magic Leap, Inc. Thread weave for cross-instruction set architecture procedure calls

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10162362B2 (en) 2016-08-29 2018-12-25 PerceptIn, Inc. Fault tolerance to provide robust tracking for autonomous positional awareness
US10390003B1 (en) 2016-08-29 2019-08-20 Perceptln Shenzhen Limited Visual-inertial positional awareness for autonomous and non-autonomous device
US10366508B1 (en) 2016-08-29 2019-07-30 Perceptin Shenzhen Limited Visual-inertial positional awareness for autonomous and non-autonomous device
US10571925B1 (en) 2016-08-29 2020-02-25 Trifo, Inc. Autonomous platform guidance systems with auxiliary sensors and task planning
US10032276B1 (en) * 2016-08-29 2018-07-24 PerceptIn, Inc. Visual-inertial positional awareness for autonomous and non-autonomous device
US10395117B1 (en) * 2016-08-29 2019-08-27 Trifo, Inc. Visual-inertial positional awareness for autonomous and non-autonomous tracking
US10402663B1 (en) 2016-08-29 2019-09-03 Trifo, Inc. Visual-inertial positional awareness for autonomous and non-autonomous mapping
US11314262B2 (en) 2016-08-29 2022-04-26 Trifo, Inc. Autonomous platform guidance systems with task planning and obstacle avoidance
US10410328B1 (en) 2016-08-29 2019-09-10 Perceptin Shenzhen Limited Visual-inertial positional awareness for autonomous and non-autonomous device
US10043076B1 (en) * 2016-08-29 2018-08-07 PerceptIn, Inc. Visual-inertial positional awareness for autonomous and non-autonomous tracking
US10571926B1 (en) 2016-08-29 2020-02-25 Trifo, Inc. Autonomous platform guidance systems with auxiliary sensors and obstacle avoidance
US10453213B2 (en) 2016-08-29 2019-10-22 Trifo, Inc. Mapping optimization in autonomous and non-autonomous platforms
US10444761B2 (en) 2017-06-14 2019-10-15 Trifo, Inc. Monocular modes for autonomous platform guidance systems with auxiliary sensors
US10496104B1 (en) 2017-07-05 2019-12-03 Perceptin Shenzhen Limited Positional awareness with quadocular sensor in autonomous platforms
US11994530B1 (en) 2017-10-27 2024-05-28 Mindmaze Group Sa System, method and apparatus of a motion sensing stack
US20220178692A1 (en) * 2017-12-21 2022-06-09 Mindmaze Holding Sa System, method and apparatus of a motion sensing stack with a camera system
US11940277B2 (en) * 2018-05-29 2024-03-26 Regents Of The University Of Minnesota Vision-aided inertial navigation system for ground vehicle localization
US11100713B2 (en) 2018-08-17 2021-08-24 Disney Enterprises, Inc. System and method for aligning virtual objects on peripheral devices in low-cost augmented reality/virtual reality slip-in systems
CN108937742A (en) * 2018-09-06 2018-12-07 苏州领贝智能科技有限公司 A kind of the gyroscope angle modification method and sweeper of sweeper
JP7152285B2 (en) * 2018-12-05 2022-10-12 株式会社ソニー・インタラクティブエンタテインメント Electronics, correction methods and programs
US11774983B1 (en) 2019-01-02 2023-10-03 Trifo, Inc. Autonomous platform guidance systems with unknown environment mapping
WO2020258198A1 (en) * 2019-06-28 2020-12-30 深圳市大疆创新科技有限公司 Calibration method, calibration device, stabilizer and computer readable storage medium
US11334174B2 (en) 2019-07-18 2022-05-17 Eyal Shlomot Universal pointing and interacting device
US10705597B1 (en) * 2019-12-17 2020-07-07 Liteboxer Technologies, Inc. Interactive exercise and training system and method
CN111060138B (en) * 2019-12-31 2022-01-28 上海商汤智能科技有限公司 Calibration method and device, processor, electronic equipment and storage medium
US11408751B2 (en) 2020-08-04 2022-08-09 Honeywell International Inc. Systems and methods for calibrating a sensor position on an aircraft
DE102020210420A1 (en) * 2020-08-17 2022-02-17 Continental Automotive Gmbh Method for calibrating a vehicle yaw rate sensor
CN113029134B (en) * 2021-03-02 2022-04-08 浙江商汤科技开发有限公司 Visual inertial system initialization method and device, electronic equipment and storage medium
US11821994B2 (en) * 2021-06-29 2023-11-21 New Eagle, Llc Localization of autonomous vehicles using camera, GPS, and IMU
US12400888B2 (en) 2022-03-31 2025-08-26 Tokyo Electron Limited Data fusion of multiple sensors
US12300477B2 (en) 2022-04-27 2025-05-13 Tokyo Electron Limited Autonomous operation of plasma processing tool

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8255161B2 (en) 2008-10-03 2012-08-28 Honeywell International Inc. System and method of auto-calibration of inertial sensors
US8762091B1 (en) 2010-06-08 2014-06-24 Thales Visionix, Inc. Inertial measurement system
US8676498B2 (en) 2010-09-24 2014-03-18 Honeywell International Inc. Camera and inertial measurement unit integration with navigation data feedback for feature tracking
US9810549B2 (en) 2011-01-06 2017-11-07 University Of Utah Research Foundation Systems, methods, and apparatus for calibration of and three-dimensional tracking of intermittent motion with an inertial measurement unit
US20120323515A1 (en) 2011-06-14 2012-12-20 Microsoft Corporation User-mounted device calibration using external data

Cited By (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230322406A1 (en) * 2012-10-17 2023-10-12 Dugan Patents, Llc Methods and apparatus for reducing anxiety during travel
US11347960B2 (en) 2015-02-26 2022-05-31 Magic Leap, Inc. Apparatus for a near-eye display
US11756335B2 (en) 2015-02-26 2023-09-12 Magic Leap, Inc. Apparatus for a near-eye display
US12131500B2 (en) 2016-12-29 2024-10-29 Magic Leap, Inc. Systems and methods for augmented reality
US11210808B2 (en) 2016-12-29 2021-12-28 Magic Leap, Inc. Systems and methods for augmented reality
US11790554B2 (en) 2016-12-29 2023-10-17 Magic Leap, Inc. Systems and methods for augmented reality
US11874468B2 (en) 2016-12-30 2024-01-16 Magic Leap, Inc. Polychromatic light out-coupling apparatus, near-eye displays comprising the same, and method of out-coupling polychromatic light
US11199713B2 (en) 2016-12-30 2021-12-14 Magic Leap, Inc. Polychromatic light out-coupling apparatus, near-eye displays comprising the same, and method of out-coupling polychromatic light
US11567324B2 (en) 2017-07-26 2023-01-31 Magic Leap, Inc. Exit pupil expander
US11927759B2 (en) 2017-07-26 2024-03-12 Magic Leap, Inc. Exit pupil expander
US11953653B2 (en) 2017-12-10 2024-04-09 Magic Leap, Inc. Anti-reflective coatings on optical waveguides
US11280937B2 (en) 2017-12-10 2022-03-22 Magic Leap, Inc. Anti-reflective coatings on optical waveguides
US12298473B2 (en) 2017-12-10 2025-05-13 Magic Leap, Inc. Anti-reflective coatings on optical waveguides
US11187923B2 (en) 2017-12-20 2021-11-30 Magic Leap, Inc. Insert for augmented reality viewing device
US11762222B2 (en) 2017-12-20 2023-09-19 Magic Leap, Inc. Insert for augmented reality viewing device
US12366769B2 (en) 2017-12-20 2025-07-22 Magic Leap, Inc. Insert for augmented reality viewing device
CN108120452A (en) * 2017-12-21 2018-06-05 吉林大学 The filtering method of MEMS gyroscope dynamic data
CN108387245A (en) * 2017-12-27 2018-08-10 北京航天时代光电科技有限公司 A kind of delivery rate gyroscope and plus meter apparatus polarity measurement method is installed
US11189252B2 (en) 2018-03-15 2021-11-30 Magic Leap, Inc. Image correction due to deformation of components of a viewing device
US11908434B2 (en) 2018-03-15 2024-02-20 Magic Leap, Inc. Image correction due to deformation of components of a viewing device
US11776509B2 (en) 2018-03-15 2023-10-03 Magic Leap, Inc. Image correction due to deformation of components of a viewing device
CN108592950A (en) * 2018-05-17 2018-09-28 北京航空航天大学 A kind of monocular camera and Inertial Measurement Unit are with respect to established angle scaling method
US11204491B2 (en) 2018-05-30 2021-12-21 Magic Leap, Inc. Compact variable focus configurations
EP3803450A4 (en) * 2018-05-31 2021-08-18 Magic Leap, Inc. POSITIONING A RADAR HEAD
WO2019231850A1 (en) 2018-05-31 2019-12-05 Magic Leap, Inc. Radar head pose localization
CN112601975A (en) * 2018-05-31 2021-04-02 奇跃公司 Radar head pose positioning
US11885871B2 (en) 2018-05-31 2024-01-30 Magic Leap, Inc. Radar head pose localization
US11200870B2 (en) 2018-06-05 2021-12-14 Magic Leap, Inc. Homography transformation matrices based temperature calibration of a viewing system
US12001013B2 (en) 2018-07-02 2024-06-04 Magic Leap, Inc. Pixel intensity modulation using modifying gain values
US11579441B2 (en) 2018-07-02 2023-02-14 Magic Leap, Inc. Pixel intensity modulation using modifying gain values
US11510027B2 (en) 2018-07-03 2022-11-22 Magic Leap, Inc. Systems and methods for virtual and augmented reality
US11856479B2 (en) 2018-07-03 2023-12-26 Magic Leap, Inc. Systems and methods for virtual and augmented reality along a route with markers
US12164978B2 (en) 2018-07-10 2024-12-10 Magic Leap, Inc. Thread weave for cross-instruction set architecture procedure calls
US12379981B2 (en) 2018-07-10 2025-08-05 Magic Leap, Inc. Thread weave for cross-instruction set architectureprocedure calls
US11598651B2 (en) 2018-07-24 2023-03-07 Magic Leap, Inc. Temperature dependent calibration of movement detection devices
US11624929B2 (en) 2018-07-24 2023-04-11 Magic Leap, Inc. Viewing device with dust seal integration
US12247846B2 (en) 2018-07-24 2025-03-11 Magic Leap, Inc. Temperature dependent calibration of movement detection devices
US11630507B2 (en) 2018-08-02 2023-04-18 Magic Leap, Inc. Viewing system with interpupillary distance compensation based on head motion
US11609645B2 (en) 2018-08-03 2023-03-21 Magic Leap, Inc. Unfused pose-based drift correction of a fused pose of a totem in a user interaction system
US11216086B2 (en) 2018-08-03 2022-01-04 Magic Leap, Inc. Unfused pose-based drift correction of a fused pose of a totem in a user interaction system
US12254141B2 (en) 2018-08-03 2025-03-18 Magic Leap, Inc. Unfused pose-based drift correction of a fused pose of a totem in a user interaction system
US11960661B2 (en) 2018-08-03 2024-04-16 Magic Leap, Inc. Unfused pose-based drift correction of a fused pose of a totem in a user interaction system
US12016719B2 (en) 2018-08-22 2024-06-25 Magic Leap, Inc. Patient viewing system
US11521296B2 (en) 2018-11-16 2022-12-06 Magic Leap, Inc. Image size triggered clarification to maintain image sharpness
US12044851B2 (en) 2018-12-21 2024-07-23 Magic Leap, Inc. Air pocket structures for promoting total internal reflection in a waveguide
US12498581B2 (en) 2018-12-21 2025-12-16 Magic Leap, Inc. Air pocket structures for promoting total internal reflection in a waveguide
US11425189B2 (en) 2019-02-06 2022-08-23 Magic Leap, Inc. Target intent-based clock speed determination and adjustment to limit total heat generated by multiple processors
US11762623B2 (en) 2019-03-12 2023-09-19 Magic Leap, Inc. Registration of local content between first and second augmented reality viewers
US11445232B2 (en) 2019-05-01 2022-09-13 Magic Leap, Inc. Content provisioning system and method
US12267545B2 (en) 2019-05-01 2025-04-01 Magic Leap, Inc. Content provisioning system and method
US12249035B2 (en) 2019-07-26 2025-03-11 Magic Leap, Inc. System and method for augmented reality with virtual objects behind a physical surface
US11514673B2 (en) 2019-07-26 2022-11-29 Magic Leap, Inc. Systems and methods for augmented reality
US12033081B2 (en) 2019-11-14 2024-07-09 Magic Leap, Inc. Systems and methods for virtual and augmented reality
US11737832B2 (en) 2019-11-15 2023-08-29 Magic Leap, Inc. Viewing system for use in a surgical environment
US12472007B2 (en) 2019-11-15 2025-11-18 Magic Leap, Inc. Viewing system for use in a surgical environment

Also Published As

Publication number Publication date
US20170089948A1 (en) 2017-03-30
US9678102B2 (en) 2017-06-13

Similar Documents

Publication Publication Date Title
US9678102B2 (en) Calibrating intertial sensors using an image sensor
US9864192B2 (en) Image display device, computer program, and image display system
CN103591955B (en) Integrated navigation system
EP3645974B1 (en) Method for compensating gyroscope drift on an electronic device
US20130335554A1 (en) Adaptive estimation of frame time stamp latency
US9958938B2 (en) Gaze tracking for a mobile device
US20150192413A1 (en) Motion Tracking with Reduced On-Body Sensors Set
CN108885343B (en) System and method for correcting vehicle induced directional changes
US9228842B2 (en) System and method for determining a uniform external magnetic field
CN111723624B (en) A head movement tracking method and system
WO2014039552A1 (en) System and method for estimating the direction of motion of an entity associated with a device
KR102745328B1 (en) Map-aided inertial odometry with neural network for augmented reality devices
KR101693629B1 (en) Method for position estimation of pedestrian walking on loco-motion interface and apparatus thereof
WO2020259544A1 (en) Method for determining calibration parameter and electronic device
US20260016300A1 (en) System and method for offline calibration of a motion-tracking device
KR20210091692A (en) Method and apparatus for compensating motion of sensor attached to user's body
US10809062B2 (en) MEMS inertial sensor device with determination of the bias value of a gyroscope thereof and corresponding method
US12353645B2 (en) Pose algorithm for continuous AR experiences
WO2014153727A1 (en) Signal processing to extract a pedestrian's moving direction
WO2015007001A1 (en) Data processing method for space mouse and control method for mouse pointer
WO2020075825A1 (en) Movement estimating device, electronic instrument, control program, and movement estimating method
US11947119B2 (en) Display control device, display control method, and recording medium
KR20180052712A (en) Helmet Tracker Buffeting Compensation
KR102393016B1 (en) Method for Estimating Orientation of a Portable Device
US11991442B2 (en) Method and device for predicting user's intent

Legal Events

Date Code Title Description
AS Assignment

Owner name: GOOGLE INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:HO, HARVEY;RHODES, CHARLES C.;REEL/FRAME:042430/0354

Effective date: 20111103

AS Assignment

Owner name: GOOGLE LLC, CALIFORNIA

Free format text: CHANGE OF NAME;ASSIGNOR:GOOGLE INC.;REEL/FRAME:044129/0001

Effective date: 20170929

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION