IP Library Granted Patent US 12,482,134
Granted Patent B2
US 12,482,134 · App. 18/028,176 · Granted Nov 25, 2025

Joint camera and inertial measurement unit calibration

Inventors: Igor Napolskikh (Plantation, FL); Ankur Gupta (Plantation, FL); Yu-Hsiang Huang (Plantation, FL); Mohamed Souiai (Plantation, FL); Etienne Gregoire Grossman (Plantation, FL)
Assignee: Magic Leap, Inc.
G06T7/80
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,482,134
App. No.
18/028,176
Granted
Nov 25, 2025
Kind
B2
Abstract

Methods, systems, and apparatus, including computer programs encoded on computer storage media, for calibrating an augmented reality device using camera and inertial measurement unit data. In some implementations, a bundle adjustment process jointly optimizes or estimates states of the augmented reality device. The process can use, as input, visual and inertial measurements as well as factory-calibrated sensor extrinsic parameters. The process performs bundle adjustment and uses non-linear optimization of estimated states constrained by the measurements and the factory calibrated extrinsic parameters. The process can jointly optimize inertial constraints, IMU calibration, and camera calibrations. Output of the process can include most likely estimated states, such as data for a 3D map of an environment, a trajectory of the device, and/or updated extrinsic parameters of the visual and inertial sensors (e.g., cameras and IMUs).

Claims (89)

1 . A system comprising:

one or more computers and one or more storage devices on which are stored instructions that are operable, when executed by the one or more computers, to cause the one or more computers to perform operations comprising:

receiving, from a camera included in a device, two images (a) of an environment in which the device is located (b) that each depict a portion of the environment that includes a point and is represented by an environment model of the environment that has a three-dimensional map point at a location that represents the point in the environment, the camera having camera calibration data that identifies a first rotation and a first translation that are both between the camera and a first sensor in the device;

receiving, from an inertial measurement unit included in the device, inertial data for the device, the inertial measurement unit having inertial measurement unit calibration data that identifies a second rotation and a second translation that are both between the inertial measurement unit and a second sensor in the device; and

jointly determining, using the two images, the inertial data, the camera calibration data, the inertial measurement unit calibration data, and the location for the three-dimensional map point or an initial estimated position of the device in the environment:

a) updated camera calibration data that identifies an updated first rotation and an updated first translation between the camera and the first sensor;

b) updated inertial measurement unit calibration data that identifies an updated second rotation and an updated second translation between the inertial measurement unit and the second sensor; and

c) at least one of (i) an updated estimated position of the device in the environment or (ii) an updated environment model of the environment in which the device is located including an updated location for the three-dimensional map point.

2 . The system of claim 1 , wherein:

the first sensor comprises a reference sensor, and the second sensor comprises the reference sensor; or

the first sensor comprises the inertial measurement unit, and the second sensor comprises the camera; or

the first sensor and the second sensor comprise the inertial measurement unit that is a reference sensor; or

the first sensor and the second sensor comprise the camera that is a reference sensor.

3 . The system of claim 1 , the operations comprising:

presenting, on a display, content for the environment using (i) the updated estimated position of the device in the environment, (ii) the updated environment model of the environment in which the device is located including the updated location for the three-dimensional map point, or (iii) both.

4 . The system of claim 1 , the operations comprising:

determining, using a first penalty function, a first error value that indicates a predicted accuracy of the inertial measurement unit calibration data; and

determining, using a second penalty function, a second error value that indicates a predicted accuracy of the camera calibration data, wherein:

jointly determining the updated camera calibration data, the updated inertial measurement unit calibration data, and (i) the updated estimated position of the device in the environment or (ii) the updated environment model of the environment comprises minimizing the first error value and the second error value.

5 . The system of claim 4 , wherein one or more of:

i) the operations comprise selecting, using the inertial data, a first weight for the first penalty function, the one or more computers configured to select different weights based on different inertial data, wherein:

determining the first error value comprises determining, using the first penalty function and the first weight, the first error value; or

ii) wherein jointly determining the updated camera calibration data, the updated inertial measurement unit calibration data, and (i) the updated estimated position of the device in the environment or (ii) the updated environment model of the environment comprises minimizing the first error value and the second error value comprises minimizing a difference between (a) a factory calibration that indicates a default space between the camera and the first sensor, and (b) a currently predicted space between the first and the first sensor.

6 . The system of claim 5 , wherein, one or more of:

a) selecting the first weight comprises:

determining a covariance for the inertial data; and

selecting the first weight using the covariance for the inertial data; or

b) the default space between the camera and the first sensor comprises one or more default translation values and one or more default rotation values; or

c) the currently predicted space between the camera and the first sensor comprises one or more currently predicted translation values and one or more currently predicted rotation values.

7 . The system of claim 1 , wherein jointly determining the updated camera calibration data, the updated inertial measurement unit calibration data, and (i) the updated estimated position of the device in the environment or (ii) the updated environment model of the environment comprises:

determining the updated camera calibration data using the two images, the inertial data, the camera calibration data, the inertial measurement unit calibration data, one or more constraints that indicate a limit for an amount of movement between the camera and the first sensor, and the location for the three-dimensional map point or the initial estimated position of the device in the environment.

8 . The system of claim 7 , wherein one or more of:

a) the operations comprise:

determining an estimated distance between the inertial measurement unit and the second sensor using the inertial data, wherein jointly determining the updated camera calibration data, the updated inertial measurement unit calibration data, and (i) the updated estimated position of the device in the environment or (ii) the updated environment model of the environment comprises:

comparing (i) the estimated distance between the inertial measurement unit and the second sensor and (ii) the one or more constraints that indicate the limit for the amount of movement between the camera and the first sensor; or

b) wherein the limit for an amount of movement between the camera and the first sensor comprises a maximum distance between the camera and the first sensor, a maximum rotation between a first surface on the camera and a second surface on the first sensor, or both; or

c) wherein the limit for an amount of movement between the camera and the first sensor comprises a minimum distance between the camera and the first sensor, a minimum rotation between a first surface on the camera and a second surface on the first sensor, or both; or

d) wherein the limit for an amount of movement between the camera and the first sensor comprises a maximum distance between the inertial measurement unit and the second sensor, a maximum rotation between a first surface on the inertial measurement unit and a second surface on the second sensor, or both; or

e) wherein the limit for an amount of movement between the camera and the first sensor comprises a minimum distance between the inertial measurement unit and the second sensor, a minimum rotation between a first surface on the inertial measurement unit and a second surface on the second sensor, or both.

9 . The system of claim 8 , wherein, one or more of:

f) the device includes:

the camera and a second different camera; and

the inertial measurement unit that is physically closer to the camera than any other cameras included in the device and a second different inertial measurement unit that is physically closer to the second different camera than any other cameras included in the device; and

the second sensor is the second different inertial measurement unit; or

g) the device includes:

the camera and a second different camera; and

the inertial measurement unit that is within a threshold physical distance from the camera and a second different inertial measurement unit that is within the threshold physical distance from the second different camera.

10 . The system of claim 1 , wherein:

the device includes two or more cameras; and

jointly determining the updated camera calibration data, the updated inertial measurement unit calibration data, and (i) the updated estimated position of the device in the environment or (ii) the updated environment model of the environment comprises jointly determining, for each of the two or more cameras, camera calibration data for the camera with respect to each of the other cameras included in the two or more cameras.

11 . The system of claim 1 , wherein:

the inertial data comprise position data that represents a position relative to a global reference frame, orientation data, angular velocity data, and linear velocity data; and

jointly determining the updated camera calibration data, the updated inertial measurement unit calibration data, and (i) the updated estimated position of the device in the environment or (ii) the updated environment model of the environment comprises determining the updated camera calibration data using the two images, the inertial data, the camera calibration data, the inertial measurement unit calibration data, the position data that represents a position relative to the global reference frame, the orientation data, the angular velocity data, and the linear velocity data.

12 . The system of claim 11 , wherein:

the inertial data comprise acceleration data; and

determining the updated camera calibration data comprises determining the updated camera calibration data using the two images, the camera calibration data, the inertial measurement unit calibration data, the position data that represents a position relative to the global reference frame, the orientation data, the angular velocity data, the linear velocity data, and the acceleration data.

13 . The system of claim 1 , wherein, one or more of:

a) the system is the device and comprises:

the camera; and

the inertial measurement unit; or

b) the device comprises a wearable device, a headset, or an augmented reality device.

14 . The system of claim 1 , wherein, one or more of:

a) jointly determining the updated camera calibration data, the updated inertial measurement unit calibration data, and (i) the updated estimated position of the device in the environment or (ii) the updated environment model of the environment comprises determining the updated environment model of the environment by updating the environment model; or

b) jointly determining the updated camera calibration data, the updated inertial measurement unit calibration data, and (i) the updated estimated position of the device in the environment or (ii) the updated environment model of the environment comprises determining a trajectory of the device in the environment; or

c) jointly determining the updated camera calibration data, the updated inertial measurement unit calibration data, and (i) the updated estimated position of the device in the environment or (ii) the updated environment model of the environment comprises determining an orientation of the device in the environment using the two images and the inertial data; or

d) jointly determining the updated camera calibration data, the updated inertial measurement unit calibration data, and (i) the updated estimated position of the device in the environment or (ii) the updated environment model of the environment comprises determining a trajectory of the device in the environment using the two images and the inertial data; or

e) jointly determining the updated camera calibration data, the updated inertial measurement unit calibration data, and (i) the updated estimated position of the device in the environment or (ii) the updated environment model of the environment comprises determining a mapping of image data for one or more images from the two images to locations in the environment model of the environment in which the device is located; or

f) receiving the two images comprises receiving at least one image from the two images that depicts data not represented by the environment model of the environment in which the device is located.

15 . The system of claim 14 , the operations comprising:

determining a prior position of the device, wherein jointly determining the updated camera calibration data, the updated inertial measurement unit calibration data, and (i) the updated estimated position of the device in the environment or (ii) the updated environment model of the environment is responsive to determining that a predetermined time period after the determination of the prior position of the device has expired.

16 . The system of claim 1 , the operations comprising maintaining, in a memory, the environment model of the environment in which the device is located.

17 . The system of claim 1 , the operations comprising:

determining, for the camera, whether a difference between (a) the updated camera calibration data and (b) the camera calibration data satisfies a threshold value; and

in response to determining that the difference satisfies the threshold value, updating a calibration profile for the camera using the updated camera calibration data.

18 . The system of claim 17 , wherein the updated camera calibration data comprises a translation value and a rotation value.

19 . A computer-implemented method comprising:

receiving, from a camera included in a device, two images (a) of an environment in which the device is located (b) that each depict a portion of the environment that includes a point and is represented by an environment model of the environment that has a three-dimensional map point at a location that represents the point in the environment, the camera having camera calibration data that identifies a first rotation and a first translation that are both between the camera and a first sensor in the device;

receiving, from an inertial measurement unit included in the device, inertial data for the device, the inertial measurement unit having inertial measurement unit calibration data that identifies a second rotation and a second translation that are both between the inertial measurement unit and a second sensor in the device; and

jointly determining, using the two images, the inertial data, the camera calibration data, the inertial measurement unit calibration data, and the location for the three-dimensional map point or an initial estimated position of the device in the environment:

a) updated camera calibration data that identifies an updated first rotation and an updated first translation between the camera and the first sensor;

b) updated inertial measurement unit calibration data that identifies an updated second rotation and an updated second translation between the inertial measurement unit and the second sensor; and

c) at least one of (i) an updated estimated position of the device in the environment or (ii) an updated environment model of the environment in which the device is located including an updated location for the three-dimensional map point.

20 . A non-transitory computer storage medium encoded with instructions that, when executed by one or more computers, cause the one or more computers to perform operations comprising:

receiving, from a camera included in a device, two images (a) of an environment in which the device is located (b) that each depict a portion of the environment that includes a point and is represented by an environment model of the environment that has a three-dimensional map point at a location that represents the point in the environment, the camera having camera calibration data that identifies a first rotation and a first translation that are both between the camera and a first sensor in the device;

receiving, from an inertial measurement unit included in the device, inertial data for the device, the inertial measurement unit having inertial measurement unit calibration data that identifies a second rotation and a second translation that are both between the inertial measurement unit and a second sensor in the device; and

jointly determining, using the two images, the inertial data, the camera calibration data, the inertial measurement unit calibration data, and the location for the three-dimensional map point or an initial estimated position of the device in the environment:

a) updated camera calibration data that identifies an updated first rotation and an updated first translation between the camera and the first sensor;

b) updated inertial measurement unit calibration data that identifies an updated second rotation and an updated second translation between the inertial measurement unit and the second sensor; and

c) at least one of (i) an updated estimated position of the device in the environment or (ii) an updated environment model of the environment in which the device is located including an updated location for the three-dimensional map point.

Assignments (2)
SECURITY INTEREST Recorded Oct 15, 2025
From: MAGIC LEAP, INC.; MENTOR ACQUISITION ONE, LLC; MOLECULAR IMPRINTS, INC.
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 073109/0238 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 28, 2023
From: NAPOLSKIKH, IGOR; GUPTA, ANKUR; HUANG, YU-HSIANG; SOUIAI, MOHAMED; GROSSMANN, ETIENNE GREGOIRE
To: MAGIC LEAP, INC.
Reel/Frame 063781/0680 →
Continuity (2)
Provisional Application 63082312 · Sep 23, 2020
Related Publication 20230377197A1 · Nov 23, 2023
References Cited (19)
US 8736636B2 · Kang · 2014 [cited by applicant]
US 8793770B2 · Lim · 2014 [cited by applicant]
US 8823855B2 · Hwang · 2014 [cited by applicant]
US 8874673B2 · Kim · 2014 [cited by applicant]
US 9417689B1 · Ramaswamy · 2016 [cited by examiner]
US 9759918B2 · Ebstyne et al. · 2017 [cited by applicant]
US 20180124387A1 · Zhao et al. · 2018 [cited by applicant]
US 20190197982A1 · Chi et al. · 2019 [cited by applicant]
Chen and Schwertfeger, “Heterogeneous Multi-sensor Calibration based on Graph Optimization,” cs.RO, Submitted on Aug. 24, 2019, arXiv:1905.11167, 7 pages. [cited by applicant]
Deray et al., “Joint on-manifold self-calibration of odometry model and sensor extrinsics using pre-integration,” Paper, Presented at Proceedings of the 2019 European Conference on Mobile Robots (ECMR), Prague, Czech Re… [cited by applicant]
Forster et al., “On-Manifold Preintegration for Real-Time Visual-Inertial Odometry,” IEEE Transactions on Robotics (TRO), Submitted on Oct. 30, 2016, arXiv:1512.02363, 20 pages. [cited by applicant]
Furgale et al., “Unified Temporal and Spatial Calibration for Multi-Sensor Systems,” Paper, Presented at Proceedings of the 2013 IEEE/RSJ International Conference on Intelligent Robots and Systems, Tokyo, Japan, Nov. 3-… [cited by applicant]
Hinzmann et al., “Flexible Stereo: Constrained, Non-Rigid, Wide-Baseline Stereo Vision for Fixed-Wing Aerial Platforms,” Paper, Presented at Proceedings of the 2018 IEEE International Conference on Robotics and Automati… [cited by applicant]
Hinzmann et al., “Flexible Trinocular—Non-rigid Multi-Camera-IMU Dense Reconstruction for UAV Navigation and Mapping,” Paper, Presented at Proceedings of the IEEE International Conference on Intelligent Robots and Syste… [cited by applicant]
International Search Report and Written Opinion in International Appln. No. PCT/US2021/050502, mailed Dec. 16, 2021, 12 pages. [cited by applicant]
Mur-Artal and Tardos, “Visual-Inertial Monocular SLAM With Map Reuse,” IEEE Robotics and Automoation Letters, Apr. 2017, 2(2):796-803. [cited by applicant]
Rehder et al., “Extending kalibr: Calibrating the Extrinsics of Multiple IMUs and of Individual Axes,” Paper, Presented at Proceedings of the 2016 IEEE International Conference on Robotics and Automation (ICRA), Stockho… [cited by applicant]
Wikipedia.org [online], “Cardinal point (optics),” Jan. 2020, retrieved on Apr. 17, 2023, retrieved from URL<https://en.wikipedia.org/w/index.php?title=Cardinal_point_(optics)&oldid=936508381>, 6 pages. [cited by applicant]
Wikipedia.org [online], “Levenberg-Marquardt algorithm,” Jun. 2020, retrieved on Apr. 17, 2023, retrieved from URL<https://en.wikipedia.org/w/index.php?title=Levenberg%E2%80%93Marquardt_algorithm&oldid=962714983>, 6 pag… [cited by applicant]