Synchronizing data streams
First Claim
1. A system comprising:
- a pulse-width-modulation (PWM) unit configured to generate pulses;
a camera, coupled to the PWM unit and configured to acquire respective images of an environment in response to detecting respective pulses generated by the PWM unit;
one or more processors; and
one or more computer-readable media storing computer-executable instructions that, when executed on the one or more processors, cause the one or more processors to perform acts comprising;
determining a nominal frequency at which to operate the PWM unit;
calculating a value of a first expected timestamp based at least in part on the nominal frequency and a current time;
calculating a value of a second expected timestamp based at least in part on the nominal frequency and at least one of the first expected timestamp or the current time;
configuring the PWM unit to generate pulses at the nominal frequency;
receiving a value of a first recorded timestamp, the value of the first recorded timestamp corresponding to a first time at which a first pulse was generated by the PWM unit;
comparing the value of the first expected timestamp to the value of the first recorded timestamp to generate a first error;
calculating a first amount to adjust the nominal frequency based at least in part on the first error;
configuring the PWM unit to generate pulses at a first adjusted frequency, the first adjusted frequency comprising the nominal frequency adjusted by the first amount;
receiving a value of a second recorded timestamp, the value of the second recorded timestamp corresponding to a second time at which a second pulse was generated by PWM unit;
comparing the value of the second expected timestamp to the value of the second recorded timestamp to generate a second error;
calculating a second amount to adjust nominal frequency based at least in part on the second error; and
configuring the PWM unit to generate pulses at a second adjusted frequency, the second adjusted frequency comprising the nominal frequency adjusted by the second amount.
1 Assignment
0 Petitions
Accused Products
Abstract
This disclosure describes techniques for synchronizing data streams. In some instances, a computing device couples to multiple sensors, such as cameras, and applies accurate timestamp information to the individual frames of sensor data from the independent sensors. After aligning these data streams by applying these accurate timestamps, the computing device may, in some instances, encode and transmit these timestamped data streams to one or more entities for further processing. In one example, a first camera (e.g., a depth camera configured to generate a depth map) may capture images of an environment, as may a second camera (e.g., an Red-Green-Blue (RGB) camera configured to generate color images). The resulting images may be temporally aligned with one another via the timestamping, and the resulting aligned images from both the depth sensor and the RGB camera may be used to create a three-dimensional (3D) model of the environment.
103 Citations
20 Claims
-
1. A system comprising:
-
a pulse-width-modulation (PWM) unit configured to generate pulses; a camera, coupled to the PWM unit and configured to acquire respective images of an environment in response to detecting respective pulses generated by the PWM unit; one or more processors; and one or more computer-readable media storing computer-executable instructions that, when executed on the one or more processors, cause the one or more processors to perform acts comprising; determining a nominal frequency at which to operate the PWM unit; calculating a value of a first expected timestamp based at least in part on the nominal frequency and a current time; calculating a value of a second expected timestamp based at least in part on the nominal frequency and at least one of the first expected timestamp or the current time; configuring the PWM unit to generate pulses at the nominal frequency; receiving a value of a first recorded timestamp, the value of the first recorded timestamp corresponding to a first time at which a first pulse was generated by the PWM unit; comparing the value of the first expected timestamp to the value of the first recorded timestamp to generate a first error; calculating a first amount to adjust the nominal frequency based at least in part on the first error; configuring the PWM unit to generate pulses at a first adjusted frequency, the first adjusted frequency comprising the nominal frequency adjusted by the first amount; receiving a value of a second recorded timestamp, the value of the second recorded timestamp corresponding to a second time at which a second pulse was generated by PWM unit; comparing the value of the second expected timestamp to the value of the second recorded timestamp to generate a second error; calculating a second amount to adjust nominal frequency based at least in part on the second error; and configuring the PWM unit to generate pulses at a second adjusted frequency, the second adjusted frequency comprising the nominal frequency adjusted by the second amount. - View Dependent Claims (2, 3, 4)
-
-
5. A method comprising:
-
configuring a trigger unit to generate pulses at a first frequency; calculating a first expected timestamp based at least in part on the first frequency; storing first data acquired by a sensor, the sensor acquiring the first data in response to receiving a first pulse; storing a first recorded timestamp corresponding to a first time at which the first pulse was generated; associating at least one of the first recorded timestamp or the first expected timestamp with the first data; analyzing the first recorded timestamp with respect to at least the first expected timestamp; determining a first error based at least in part on the analyzing; and configuring the trigger unit to generate pulses at a second frequency based at least in part on the first frequency and the first error. - View Dependent Claims (6, 7, 8, 9, 10, 11, 12, 13)
-
-
14. A system comprising:
-
a sensor; a trigger unit; one or more processors; and one or more computer-readable media storing computer-executable instructions that, when executed on the one or more processors, cause the one or more processors to perform acts comprising; configuring the trigger unit to generate pulses at a first frequency; calculating a first expected timestamp based at least in part on the first frequency; storing first data acquired by the sensor, the sensor acquiring the first data in response to receiving a first pulse; storing a first recorded timestamp corresponding to a first time at which the first pulse was generated; associating at least one of the first recorded timestamp or the first expected timestamp with the first data; analyzing the first recorded timestamp with respect to at least the first expected timestamp; determining a first error based at least in part on the analyzing; and configuring the trigger unit to generate pulses at a second frequency based at least in part on the first frequency and the first error. - View Dependent Claims (15, 16, 17, 18, 19, 20)
-
Specification