Processing system for LIDAR measurements
By using light sources to transmit pulse trains and detect background light in the SPAD-based LIDAR system, and using multiple time registers to accumulate photon counts, the problem of low measurement accuracy in existing systems under environmental conditions is solved, and higher time resolution and noise immunity are achieved.
Patent Information
- Application Number
- JP2022506630
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2019-08-05
- Filing Date
- 2020-08-05
- Publication Date
- 2025-04-16
- Estimated Expiration
- 2040-08-05
AI Technical Summary
Existing SPAD-based LIDAR systems are difficult to provide stable distance measurement accuracy under various environmental conditions, especially under economic cost limitations, and are susceptible to background noise.
By introducing light sources into the optical measurement system, transmitting pulse trains, and detecting pulses and background light using photodetectors in the photo sensor, accumulating photon counts is used to generate a histogram of photon counts, and aggregating counts through arithmetic logic circuits to improve the time resolution.
Accurate estimation of background noise levels and total accumulation of photon counts are achieved, time resolution is improved, thereby improving the distance measurement accuracy and noise immunity of the LIDAR system.
Smart Images

Figure 0007663551000001 
Figure 0007663551000002 
Figure 0007663551000003
Abstract
Description
[Technical field]
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims the benefit of and priority to U.S. Provisional Patent Application No. 62 / 882,907, filed August 5, 2019, which is incorporated by reference in its entirety.
[0002] This disclosure generally describes light detection and ranging (LIDAR) systems. More specifically, this disclosure describes a SPAD-based LIDAR system that estimates background noise levels and tallies total photon counts over the course of a measurement with improved time resolution. [Background technology]
[0003] LIDAR systems are used for object detection and ranging, for example, for vehicles such as cars, trucks, boats, etc. LIDAR systems also have applications in mobile applications (e.g., for facial recognition), home entertainment (e.g., for capturing gesture capture for video game input), and augmented reality. LIDAR systems measure the distance to an object by shining a pulse from a laser onto a scene and measuring the time it takes for a photon to travel to the object and return after reflection, as measured by a receiver in the LIDAR system. The detected signal is analyzed to detect the presence of a reflected signal pulse in the background light. The distance to the object can be determined based on the time of flight from the transmission of the pulse to the reception of the corresponding reflected pulse.
[0004] Providing robust distance accuracy down to a few centimeters in all conditions can be difficult, especially at the economical cost of LIDAR systems. Promising new detector technologies such as single photon avalanche diodes (SPADs) are attractive but have significant drawbacks when used to measure time-of-flight and other signal characteristics, especially over a wide range of ambient conditions and target distances, due to their limited dynamic range. Furthermore, SPADs are sensitive to even a small number of photons, making them highly susceptible to ambient levels of background noise light.
[0005] LIDAR systems would benefit from a more accurate method of detecting reflected laser pulses and measuring their time of flight under a variety of real-world conditions. Specifically, SPAD-based LIDAR systems would benefit from a method to accurately estimate background noise levels and tally up total photon counts over the course of a measurement with improved time resolution. Summary of the Invention
[0006] In some embodiments, the optical measurement system may include a light source configured to transmit one or more pulse trains over one or more first time intervals as part of the optical measurement. Each of the one or more first time intervals may include one of the one or more pulse trains. The optical measurement system may also include a light sensor comprising one or more photodetectors configured to detect photons from the one or more pulse trains and photons from ambient light. The optical measurement system may additionally include a plurality of first registers that accumulate photon counts from the one or more photodetectors received during the one or more first time intervals. Each of the one or more first time intervals may be subdivided into a plurality of first time bins, and each of the plurality of first registers may accumulate photon counts received during a corresponding one of the plurality of first time bins in each of the one or more first time intervals to represent a histogram of photon counts received during the one or more first time intervals. The optical measurement system may further include a plurality of second registers that accumulate photon counts from the one or more photodetectors over a second time interval that overlaps with at least a portion of the one or more first time intervals. The second time interval may be subdivided into a plurality of second time bins, and each of the plurality of second registers may accumulate photon counts received during a corresponding one of the plurality of second time bins.
[0007] In some embodiments, a method of using an optical measurement system may include transmitting one or more pulse trains over one or more first time intervals as part of the optical measurement. Each of the one or more first time intervals may include one of the one or more pulse trains. The method may also include detecting photons from the one or more pulse trains and photons from ambient light. The method may additionally include accumulating, in a plurality of first registers, photon counts from the one or more photodetectors received during the one or more first time intervals. Each of the one or more first time intervals may be subdivided into a plurality of first time bins, and each of the plurality of first registers may accumulate photon counts received during a corresponding one of the plurality of first time bins in each of the one or more first time intervals to represent a histogram of photon counts received during the one or more first time intervals. The method may further include accumulating, in a plurality of second registers, photon counts over a second time interval that overlaps with at least a portion of the one or more first time intervals. The second time interval may be divided into a plurality of second time bins, and each of the plurality of second registers may accumulate photon counts received during a corresponding one of the plurality of second time bins.
[0008] In any embodiment, any or all of the following features may be included in any combination and without limitation. The optical measurement system may also include an arithmetic logic circuit that tallies the photon counts in each of the plurality of second registers to generate a total photon count received during the second time interval. Each of the one or more first time intervals may be defined by a first start signal. The second time interval may be defined by a second start signal that is independent of the first start signal. The one or more photodetectors may include one or more single photon avalanche diodes (SPADs). Each of the one or more first time intervals may fall within the second time interval. The optical measurement system may also include a selection signal that selects which of the plurality of second registers accumulates photon counts during each of the plurality of second time bins. The selection signal may be generated by a timer. The selection signal may be generated on the same integrated circuit as the plurality of second registers. The selection signal may alternatively not be generated on the same integrated circuit as the plurality of second registers. The selection signal may be generated based on the angular position of the optical sensor as about the central axis. The method / system operations may also include aggregating the photon counts in each of the plurality of second registers to generate a total photon count received during the second time interval, and estimating background noise detected by the optical measurement system during the second time interval using the total photon count. Estimating the background noise may include dividing the total photon count by a length of the second time interval. Estimating the background noise may include identifying one or more time bins within the plurality of first time bins in which reflected photons resulting from the one or more pulse trains are estimated to have been received by the optical measurement system, and excluding photon counts received within the one or more time bins from the total photon count. The background noise may be removed from the plurality of first registers. The second time interval may include time intervals outside the one or more first time intervals. A histogram of the photon counts in the plurality of first registers received during the one or more first time intervals may represent a single optical measurement by the optical measurement system.The method / system operations may also include generating an ambient image of the surrounding environment using the photon counts stored in the second plurality of registers over the second time interval. The photon counts stored in the second plurality of registers over the second time interval may include photons from the one or more pulse trains and photons from ambient light.
[0009] In some embodiments, the optical measurement system may include a light source configured to transmit one or more pulse trains over one or more first time intervals as part of the optical measurement. Each of the one or more first time intervals may include one of the one or more pulse trains. The optical measurement system may also include a light sensor comprising one or more photodetectors configured to detect photons from the one or more pulse trains. The optical measurement system may also include a data path comprising an arithmetic logic circuit and a plurality of first registers. The data path may be configured to populate the plurality of first registers using photon counts from the one or more pulse trains tabulated by the arithmetic logic circuit such that the plurality of first registers represent a histogram of photon counts received during the one or more first time intervals. The optical measurement system may additionally include a saturation detection circuit that determines when saturation occurs in the data path and causes the data path to stop populating the plurality of first registers during the first time interval of one or more times that occurs after saturation occurs.
[0010] In some embodiments, a method of using an optical measurement system may include transmitting one or more pulse trains over one or more first time intervals as part of the optical measurement. Each of the one or more first time intervals may include one of the one or more pulse trains. The method may also include detecting photons from the one or more pulse trains using one or more photodetectors. The method may additionally include populating a plurality of first registers in a data path using photon counts from the one or more photodetectors. The photon counts are tallied by an arithmetic logic circuit in the data path such that the plurality of first registers represent a histogram of photon counts received during the one or more first time intervals. The method may further include determining when saturation occurs in the data path. The method may also include causing the data path to stop populating the plurality of first registers during the one or more first time intervals that occur after saturation occurs.
[0011] In any embodiment, any or all of the following features may be included in any combination and without limitation: The data path may include a counter that counts the number of one or more first time intervals that occur before the saturation detection circuitry causes the data path to stop populating the number of first registers. The counter may be incremented by a signal that also starts the one or more first time intervals. The data path may further include a counter that counts the number of times the arithmetic logic circuitry updates the number of first registers before the saturation detection circuitry causes the data path to stop populating the number of first registers. The saturation detection circuitry may receive a signal from the arithmetic logic circuitry indicating that the arithmetic logic circuitry has saturated. The saturation detection circuitry may receive a signal indicating that a result from the arithmetic logic circuitry is greater than a maximum number stored in one of the number of first registers. The saturation detection circuitry may cause the data path to stop populating the number of first registers by disabling a periodic signal that causes the arithmetic logic circuitry to tally up photon counts. The saturation detection circuit may cause the data path to stop populating the plurality of first registers by disabling a periodic signal that causes the plurality of first registers to store updated photon counts. The system may also include a second data path having a second arithmetic logic circuit and one or more integrating registers, the second data path may be configured to accumulate photon counts from the one or more photodetectors into the one or more integrating registers over a second time interval that includes at least the one or more first time intervals. The second data path may include a second saturation detection circuit that determines when saturation occurs in the second data path and causes the second data path to stop accumulating photon counts from the one or more photodetectors into the one or more integrating registers during the second time interval after saturation occurs. The system may also include counting a number of events that occur before causing the data path to stop populating some of the first registers. The system may also include calculating a multiplier using the number of events that occur before causing the data path to stop populating the plurality of first registers and a total number of events that occur during the one or more first time intervals.The system may also use a multiplier to scale a histogram of photon counts in the first plurality of registers. The system may also find a peak in the histogram of photon counts in the first plurality of registers after scaling the histogram of photon counts. The system may also use photon counts from the one or more photodetectors to populate one or more integrating registers in a second data path, the photon counts being tallied by a second arithmetic and logic circuit in the second data path such that the one or more integrating registers represent a total photon count received over a second time interval that includes at least the one or more first time intervals, determine when saturation occurs in the second data path, and stop the second data path from populating the one or more integrating registers after saturation occurs. The system may also count a number of events that occur before stopping the second data path from populating the one or more integrating registers, and scale the total photon count in the one or more integrating registers using the number of events that occur before stopping the second data path from populating the one or more integrating registers. The system may also calculate an ambient background noise level after scaling the total photon count. The system may also use the ambient background noise level to set a threshold for detecting peaks in the optical measurement. The system may also remove the ambient background noise level from a histogram of the photon counts in the first plurality of registers.
[0012] In some embodiments, the optical measurement system may include a light source configured to transmit one or more pulse trains over one or more first time intervals as part of the optical measurement, each of the one or more first time intervals including one of the one or more pulse trains. The system may also include an optical sensor comprising one or more photodetectors configured to detect photons from the one or more pulse trains. The system may additionally include a plurality of first registers that accumulate photon counts received during the one or more first time intervals from the one or more photodetectors to represent a histogram of the photon counts received during the one or more first time intervals, each of the plurality of first registers corresponding to a time bin in the histogram. The system may further include a peak detection circuit configured to identify a maximum peak in at least a portion of the histogram in the plurality of first registers each time the peak detection circuit is executed. The system may also include a masking circuit configured to cause the peak detection circuit to exclude a register corresponding to a peak identified as a maximum peak during a previous run of the peak detection circuit from being identified as a maximum peak during a subsequent run of the peak detection circuit, such that multiple runs of the peak detection circuit identify multiple peaks.
[0013] In some embodiments, a method of using an optical measurement system may include transmitting one or more pulse trains over one or more first time intervals as part of an optical measurement. Each of the one or more first time intervals may include one of the one or more pulse trains. The method may also include detecting photons from the one or more pulse trains using one or more photodetectors. The method may additionally include accumulating photon counts from the one or more photodetectors in a plurality of first registers to represent a histogram of photon counts received during the one or more first time intervals, each of the plurality of first registers corresponding to a time bin in the histogram. The method may further include identifying a plurality of peaks in the histogram in the plurality of first registers through multiple executions of a peak detection circuit. Each execution of the peak detection circuit may identify a maximum peak in at least a portion of the histogram. A register corresponding to a peak identified as a maximum peak during a previous execution of the peak detection circuit may be excluded from being identified as a maximum peak during a subsequent execution of the peak detection circuit.
[0014] In any embodiment, any or all of the following features may be included in any combination and without limitation. The system may also include a plurality of second registers configured to store a plurality of peaks identified by the peak detection circuit. Each of the plurality of peaks may be stored as a series of time bins representing a time interval of the histogram around the peak. Each of the plurality of peaks may be stored with a relative time in the histogram at which the peak occurred. The system may be configured to send the plurality of peaks identified by the peak detection circuit to a processor, the processor may operate on an integrated circuit chip different from the integrated circuit chip on which the peak detection circuit operates. The plurality of peaks may be sent to the processor without applying a filter to the values representing the plurality of peaks. Each execution of the peak detection circuit may be configured to cycle through the plurality of first registers and identify a maximum value of the plurality of first registers that is not filtered out by the masking circuit. The maximum peak may include a subset of the plurality of first registers around one of the plurality of first registers that stores the maximum value. The peak detection circuit may be configured to cycle through the plurality of first registers at least three times to identify at least three maximum peaks in the histogram. The one or more photodetectors may include one or more SPADs. The method / system operations may also include applying a low pass filter to the histogram stored in the plurality of first registers before identifying the maximum peak. The method / system operations may also include applying a matched filter to the histogram stored in the plurality of first registers before identifying the maximum peak, the matched filter may correspond to one or more pulse trains. A peak identified as a maximum peak during a previous execution of the peak detection circuit may be excluded from being identified as a maximum peak during a subsequent execution of the peak detection circuit by a masking register in the plurality of first registers representing the peak previously identified as a maximum peak from the peak detection circuit during a subsequent execution of the peak detection circuit.A peak identified as a maximum peak during a previous run of the peak detection circuit may be excluded from being identified as a maximum peak during a subsequent run of the peak detection circuit by setting a threshold equal to or less than a maximum value from the peak previously identified as a maximum peak and excluding peaks during a subsequent run of the peak detection circuit that meet or exceed the threshold. Excluding peaks during a subsequent run of the peak detection circuit that meet or exceed the threshold may include identifying a register in the plurality of first registers having a value that meets or exceeds the threshold and excluding registers around the register in the plurality of first registers. The method / system operations may also include excluding an initial peak of the histogram from a run of the peak detection circuit. The initial peak may result from a reflection of one or more pulse trains off of a housing of the optical measurement system. The initial peak may meet or exceed a saturation threshold of the saturation detection circuit. The method / system operations may also include masking the initial peak from the saturation detection circuit.
[0015] In some embodiments, the optical measurement system may include a light source configured to transmit one or more pulse trains over one or more first time intervals as part of the optical measurement. Each of the one or more first time intervals may include one of the one or more pulse trains. The system may also include a light sensor comprising one or more photodetectors configured to detect photons from the one or more pulse trains. The system may additionally include a first integrated circuit including a plurality of first registers that accumulate photon counts received during the one or more first time intervals from the one or more photodetectors to represent a histogram of the photon counts received during the one or more first time intervals. Each of the plurality of first registers may correspond to a time bin of the histogram. The first integrated circuit may also include a threshold detection circuit configured to provide a threshold for identifying one or more peaks in the histogram, and a peak detection circuit configured to pass through the plurality of first registers and identify one or more peaks represented in the histogram using the threshold. The system may also include a second integrated circuit having a processor. The first integrated circuit may be configured to send information describing the one or more peaks detected using the threshold to a processor on the second integrated circuit.
[0016] In some embodiments, a method of using an optical measurement system may include transmitting one or more pulse trains over one or more first time intervals as part of an optical measurement. Each of the one or more first time intervals may include one of the one or more pulse trains. The method may also include detecting photons from the one or more pulse trains using one or more photodetectors. The method may additionally include accumulating, on the first integrated circuit, photon counts from the one or more photodetectors in a plurality of first registers to represent a histogram of photon counts received during the one or more first time intervals, each of the plurality of first registers may correspond to a time bin in the histogram. The method may further include providing, on the first integrated circuit, a threshold for identifying one or more peaks in the histogram. The method may also include identifying, on the first integrated circuit, one or more peaks represented in the histogram by making a pass through the plurality of first registers with the threshold. The method may additionally include sending information from the first integrated circuit to a processor on the second integrated circuit describing the one or more peaks detected using the threshold.
[0017] In any embodiment, any or all of the following features may be included in any combination and without limitation: The threshold detection circuit may be configured to use an existing threshold; The threshold detection circuit may be configured to calculate a threshold based on a background noise level present during the one or more first time intervals; The system may also include one or more integration registers that accumulate photon counts from the one or more photodetectors over a second time interval that overlaps with at least a portion of the one or more first time intervals, and the threshold detection circuit may be further configured to calculate the background noise level using the one or more values in the one or more integration registers; The threshold detection circuit may be further configured to calculate the background noise level by dividing the total photon counts in the one or more integration registers by a period during which the one or more integration registers were enabled; The period during which the one or more integration registers were enabled may be determined based on a total number of clock cycles during which the one or more integration registers were enabled. The threshold detection circuit may be further configured to calculate a background noise level by identifying one or more time bins in the histogram representing one or more peaks and subtracting the photon counts of the one or more time bins from the total photon counts of the one or more integration registers. The system may also include a plurality of second registers configured to store one or more peaks identified by the peak detection circuit. Each of the one or more peaks may be stored as a window of time bins representing a time interval of the histogram around the peak and a relative time in the histogram at which the peak occurred. The first integrated circuit may be implemented on a chip that is physically separate and distinct from the chip on which the second integrated circuit is implemented. The one or more peaks may be sent to the processor without applying a filter to values representing the one or more peaks in the histogram. The method / system operations may also include removing the background noise level from the one or more peaks represented in the histogram. The method / system operations may also include determining a background noise level based on samples of photons received by the one or more photodetectors during the one or more pulse trains.Providing a threshold may include setting the threshold to a predetermined interval above a background noise level. Providing a threshold may include setting the threshold to an interval above a background noise level that is a predetermined percentage of the background noise level. The method / system operations may also include applying a low pass filter to the histogram stored in the plurality of first registers before identifying the one or more peaks. The method / system operations may also include applying a matched filter to the histogram stored in the plurality of first registers before identifying the one or more peaks, the matched filter may correspond to one or more pulse trains. The one or more peaks may include peaks corresponding to reflections of the one or more pulse trains and peaks not corresponding to reflections of the one or more pulse trains. Identifying the one or more peaks represented in the histogram may use only a single pass through the plurality of first registers. [Brief description of the drawings]
[0018] A further understanding of the nature and advantages of various embodiments may be realized by reference to the remaining portions of the specification and the drawings, in which like reference numerals are used throughout the several drawings to refer to similar components. In some instances, a sub-label is associated with a reference numeral to indicate one of multiple similar components. When referring to a reference numeral without specifying an existing sub-label, the intention is to refer to all such multiple similar components.
[0019] [Figure 1A] 1 illustrates an automotive optical ranging device, also referred to herein as a LIDAR system, according to some embodiments. [Figure 1B] 1 illustrates an automotive optical ranging device, also referred to herein as a LIDAR system, according to some embodiments.
[0020] [Diagram 2] FIG. 1 illustrates a block diagram of an exemplary LIDAR device for implementing various embodiments.
[0021] [Diagram 3] 1 illustrates the operation of a typical LIDAR system that may be improved by embodiments.
[0022] [Figure 4] 1 illustrates an illustrative example of an optical transmission and detection process of an optical ranging system, according to some embodiments.
[0023] [Diagram 5] 1 illustrates various stages of a sensor array and associated electronics in accordance with an embodiment of the present invention.
[0024] [Figure 6] 4 illustrates a histogram according to an embodiment of the present invention.
[0025] [Figure 7] 13 illustrates a histogram accumulation over multiple pulse trains for a selected pixel in accordance with an embodiment of the present invention.
[0026] [Figure 8] 1 illustrates a circuit for receiving photons and generating a set of signals stored in memory that represent a histogram, according to some embodiments.
[0027] [Figure 9] 1 illustrates timing associated with different shots in a measurement according to some embodiments.
[0028] [Figure 10] 1 illustrates a datapath with integrated registers according to some embodiments.
[0029] [Figure 11] 4 illustrates a timing graph of an integrated data path according to some embodiments.
[0030] [Figure 12]4 illustrates a timing graph of an integration data path and a histogram data path according to some embodiments.
[0031] [Figure 13] 1 illustrates an aggregate datapath that includes an ALU to provide an aggregated sum from all of the aggregate registers according to some embodiments.
[0032] [Figure 14] 4 illustrates a relative timing diagram of the integration data path and the histogram data path according to some embodiments.
[0033] [Figure 15] 1 illustrates an integrated datapath that generates select signals on-chip, according to some embodiments.
[0034] [Figure 16] 1 illustrates an integrated data path that receives a select signal from an off-chip source, according to some embodiments.
[0035] [Figure 17] 1 illustrates ambient light measurement using multiple integrated resistors for an electric vehicle according to some embodiments.
[0036] [Figure 18] 1 illustrates a method for using an optical measurement system according to some embodiments.
[0037] [Figure 19] 1 illustrates the contents of a histogram memory when saturation occurs, according to some embodiments.
[0038] [Figure 20] 13 illustrates the effect that saturation can have on the overall shape of a received photon count histogram, according to some embodiments.
[0039] [Figure 21]20 shows the contents of the histogram memory from the measurement shown in FIG. 19 when the histogram data path has stopped accumulating and storing new photon counts because saturation has been detected.
[0040] [Figure 22] 1 illustrates a process for scaling a saturated histogram memory using an event counter according to some embodiments.
[0041] [Diagram 23] FIG. 1 illustrates a circuit diagram of a histogram datapath with saturation detection according to some embodiments.
[0042] [Figure 24] 1 illustrates a timeline of photon counts received during measurement of an integrated data path, according to some embodiments.
[0043] [Diagram 25] 1 illustrates how photon counts can be continuously tallied in one or more integrating registers during a measurement, according to some embodiments.
[0044] [Figure 26] 13 illustrates how the accumulation of photon counts into an integrating register can be stopped when saturation occurs, according to some embodiments.
[0045] [Figure 27] 1 illustrates an integrated data path with saturation protection according to some embodiments.
[0046] [Figure 28] 1 illustrates a flowchart of a method for using an optical measurement system to address saturation, according to some embodiments.
[0047] [Figure 29] 1 shows an initial peak that can be identified and masked according to some embodiments.
[0048] [Diagram 30] 1 illustrates multiple peaks represented in a histogram memory according to some embodiments.
[0049] [Diagram 31] 13 illustrates a previously detected pulse being masked for subsequent execution of a peak detection circuit, according to some embodiments.
[0050] [Diagram 32] 13 illustrates how the masking circuitry can continually generate new masks as additional peaks are identified by the peak detection circuitry, according to some embodiments.
[0051] [Diagram 33] 1 illustrates a circuit for detecting multiple peaks in a histogram memory according to some embodiments.
[0052] [Diagram 34] 1 shows a flowchart of a method for detecting multiple peaks in a measurement according to some embodiments.
[0053] [Diagram 35] 1 illustrates a method for using an optical measurement system to detect multiple peaks according to some embodiments.
[0054] [Diagram 36] 1 shows a graph of light detected by an optical measurement system resulting from multiple shots, according to some embodiments.
[0055] [Figure 37] 13 illustrates an estimated background noise level compared to received photon counts in a histogram memory according to some embodiments.
[0056] [Figure 38]13 shows a graph in which estimated background noise can be used to set a signal threshold for detecting peaks in a histogram memory, according to some embodiments.
[0057] [Figure 39] 4 illustrates a peak window detected by a threshold operation that may be passed off-chip to a processor, according to some embodiments.
[0058] [Diagram 40] 1 illustrates a circuit for calculating a threshold and detecting one or more peaks in a histogram memory according to some embodiments.
[0059] [Diagram 41] 1 illustrates a method for using an optical measurement system to detect multiple peaks according to some embodiments.
[0060] term The term "ranging," especially when used in the context of methods and devices for measuring the environment or assisting in the operation of a vehicle, may refer to determining a distance or distance vector from one location or position to another. "Optical ranging" may refer to a type of ranging method that uses electromagnetic waves to perform a ranging method or function. Thus, an "optical ranging device" may refer to a device for performing an optical ranging method or function. "Lidar" or "LIDAR" may refer to a type of optical ranging method that measures the distance to a target by illuminating the target with pulsed laser light and then measuring the reflected pulses with a sensor. Thus, a "lidar device" or "lidar system" may refer to a type of optical ranging device for performing a lidar method or function. An "optical ranging system" may refer to a system that includes at least one optical ranging device, such as a lidar device. The system may further include one or more other devices or components in various arrangements.
[0061] A "pulse train" may refer to one or more pulses transmitted together. The emission and detection of a pulse train may be referred to as a "shot." A shot may occur over a "detection time interval" (or "detection interval").
[0062] A "measurement" may include a train of N multiple pulses emitted and detected over N shots, each lasting for a detection time interval. One entire measurement may be equal to the N detection intervals of the measurement, or may exceed the measurement time interval (or simply "measurement interval"), which may be longer, for example, if pauses occur between the detection intervals.
[0063] An "optical sensor" or "photosensitive element" can convert light into an electrical signal. An optical sensor can include multiple "photodetectors", such as single photon avalanche diodes (SPADs). An optical sensor can correspond to a particular pixel of the resolution of the ranging measurement.
[0064] A "histogram" may refer to any data structure that represents a series of values over time, discretized across time bins. A histogram may have a value assigned to each time bin. For example, a histogram may store a counter of the number of photodetectors activated during each particular time bin of one or more detection intervals. As another example, a histogram may correspond to the digitization of an analog signal at various times. A histogram may include a signal (e.g., a pulse) and noise. Thus, a histogram may be viewed as a combination of signal and noise as a time series or photon flux of photons. A raw / digitized histogram (or accumulated photon time series) may include the digitized signal and noise in memory without filtering. A "filtered histogram" may refer to the output of a raw histogram after it has been passed through a filter.
[0065] The emitted signal / pulse may refer to an undistorted "nominal," "ideal," or "template" pulse or pulse train. The reflected signal / pulse may refer to a reflected laser pulse from an object, which may be distorted. The digitized signal / pulse (or raw signal) may refer to the digitized result from the detection of one or more pulse trains of the detection interval, stored in memory, and thus may correspond to a portion of a histogram. The detected signal / pulse may refer to the location in memory where the signal was detected. The detected pulse train may refer to the actual pulse train found by a matched filter. The predicted signal profile may refer to the shape of the digitized signal that would result from a particular emitted signal with a particular distortion in the reflected signal. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0066] The present disclosure relates generally to the field of object detection and ranging, and more specifically to the use of time-of-flight optical receiver systems for applications such as real-time 3D mapping and object detection, tracking and / or classification. Various embodiments of the present invention may provide various improvements. Such improvements may be increased accuracy, reduced noise, and increased energy efficiency.
[0067] An exemplary automotive LIDAR system is introduced in the following sections, followed by a description of exemplary techniques for detecting signals with an optical ranging system, and then a more detailed description of different embodiments.
[0068] I. Exemplary Automotive LIDAR System 1A and 1B show an optical ranging device for automobiles, also referred to herein as a LIDAR system, according to some embodiments. The automobile application for the LIDAR system is selected here for illustration purposes only, and the sensor described herein can be used in other types of vehicles, such as boats, aircraft, trains, and in various other applications where 3D depth images are useful, such as medical imaging, mobile phones, augmented reality, geodesy, geoinformatics, archaeology, geography, geology, topography, seismology, forestry, atmospheric physics, laser guidance, airborne laser swath mapping (ALSM), laser altimeter, etc. According to some embodiments, as shown in FIG. 1A and FIG. 1B, a LIDAR system, such as a scanning LIDAR system 101 and / or a solid-state LIDAR system 103, can be mounted on the roof of a vehicle 105.
[0069] The scanning LIDAR system 101 shown in FIG. 1A may employ a scanning architecture in which the orientation of the LIDAR light source 107 and / or detector circuitry 109 may be scanned around one or more fields of view 110 in an external field or scene outside the vehicle 105. In the case of a scanning architecture, the emitted light 111 may be scanned across the surrounding environment as shown. For example, the output beam of one or more light sources (such as infrared or near infrared pulsed IR lasers, not shown) positioned within the LIDAR system 101 may be scanned, e.g., rotated, to illuminate the scene around the vehicle. In some embodiments, the scanning, represented by the rotating arrow 115, may be performed by mechanical means, e.g., by mounting the light emitter on a rotating column or platform. In some embodiments, the scanning may be performed through other mechanical means, such as the use of a galvanometer. Chip-based steering techniques may also be used, e.g., by using a microchip, e.g., using one or more MEMS-based reflectors, such as digital micromirror (DMD) devices, digital light processing (DLP) devices, etc. In some embodiments, scanning can be achieved through non-mechanical means, such as by steering one or more optical phased arrays using electronic signals.
[0070] 1B , one or more solid-state LIDAR subsystems (e.g., 103a and 103b) may be mounted on a vehicle 105. Each solid-state LIDAR unit may be oriented in a different direction (possibly with overlapping and / or non-overlapping fields of view between units) such that each unit may capture a larger combined field of view than it can capture by itself.
[0071] In either the scanning or fixed architecture, objects in the scene can reflect a portion of the light pulse emitted from the LIDAR light source. One or more reflected portions can then return to the LIDAR system and be detected by the detector circuitry. For example, the reflected portion 117 can be detected by the detector circuitry 109. The detector circuitry can be disposed in the same housing as the emitter. The scanning and fixed system aspects are not mutually exclusive and can be used in combination. For example, the individual LIDAR subsystems 103a and 103b in FIG. 1B can use steerable emitters such as optical phased arrays, or the entire combined unit can rotate via mechanical means to scan the entire scene in front of the LIDAR system, for example from field of view 119 to field of view 121.
[0072] Figure 2 shows a more detailed block diagram of a rotating LIDAR system 200, according to some embodiments. More specifically, Figure 2 shows a rotating LIDAR system that can optionally employ a rotary actuator on a rotating circuit board that can receive (and transmit) power and data from a fixed circuit board.
[0073] The LIDAR system 200 can interact with one or more instantiations of a user interface 215. Different instantiations of the user interface 215 can vary and can include, for example, a computer system with a monitor, keyboard, mouse, CPU and memory, a touch screen in an automobile, a handheld device with a touch screen, or any other suitable user interface. The user interface 215 can be local to the object to which the LIDAR system 200 is attached, but can also be a remotely operated system. For example, commands and data to or from the LIDAR system 200 can be routed over a cellular network (such as LTE), a personal area network (such as Bluetooth, Zigbee), a local area network (such as WiFi, IR), or a wide area network such as the Internet.
[0074] The hardware and software user interface 215 can present the LIDAR data from the device to the user, but can also allow the user to control the LIDAR system 200 with one or more commands. Example commands include commands to activate or deactivate the LIDAR system, commands to specify light detector exposure levels, biases, sampling periods, and other operating parameters (e.g., emission pulse patterns and signal processing), and commands to specify light emitter parameters such as brightness. Additionally, the commands can allow the user to select a manner for displaying the results. The user interface can display the results of the LIDAR system, which may include, for example, displaying a single frame snapshot image, a constantly updated video image, and / or other light measurements for some or all pixels. In some embodiments, the user interface 215 can track the distance (proximity) of objects from the vehicle, potentially providing warnings to the driver or providing such tracking information for analysis of the driver's behavior.
[0075] In some embodiments, the LIDAR system can communicate with the vehicle control unit 217, and one or more parameters associated with the control of the vehicle can be modified based on the received LIDAR data. For example, in a fully autonomous vehicle, the LIDAR system can provide a real-time 3D image of the environment surrounding the car to aid in navigation. In other cases, the LIDAR system can be used as part of an advanced driver assistance system (ADAS) or as part of a safety system that can provide 3D image data to any number of different systems, such as, for example, adaptive cruise control, automatic parking, driver drowsiness monitoring, blind spot monitoring, collision avoidance systems, etc. If the vehicle control unit 217 is communicatively coupled to the optical ranging device 210, it can provide a warning to the driver or track the proximity of an object.
[0076] The LIDAR system 200 shown in FIG. 2 includes an optical ranging device 210. The optical ranging device 210 includes a ranging system controller 250, an optical transmission (Tx) module 240, and an optical sensing (Rx) module 230. Ranging data can be generated by the optical ranging device by transmitting one or more optical pulses 249 from the optical transmission module 240 to an object in a field of view surrounding the optical ranging device. A reflected portion 239 of the transmitted light is then detected by the optical sensing module 230 after some delay time. Based on the delay time, the distance to the reflecting surface can be determined. Other ranging methods can also be used, such as continuous wave, Doppler, etc.
[0077] The Tx module 240 includes an emitter array 242, which may be a one-dimensional or two-dimensional array of emitters, and a Tx optical system 244, which when combined may form an array of micro-optical emitter channels. The emitter array 242 or individual emitters are examples of laser light sources. The Tx module 240 further includes a processor 245 and a memory 246. In some embodiments, a pulse coding technique, such as a Barker code, may be used. In such a case, the memory 246 may store a pulse code that indicates when to transmit light. In one embodiment, the pulse code is stored as a sequence of integers stored in the memory.
[0078] The Rx module 230 can include a sensor array 236, which can be, for example, a one-dimensional or two-dimensional array of light sensors. Each light sensor or photosensitive element (also referred to as a sensor) can include, for example, a collection of photodetectors, such as APDs, or the sensor can be a single photon detector (e.g., SPAD). Like the Tx module 240, the Rx module 230 includes an Rx optical system 237. The Rx optical system 237 and the sensor array 236 can combine to form an array of micro-optical receiver channels. Each micro-optical receiver channel measures light corresponding to an image pixel within a distinct field of view of the surrounding volume. Each sensor (e.g., a collection of SPADs) of the sensor array 236 can correspond to a specific emitter of the emitter array 242, for example, as a result of the geometric configuration of the light sensing module 230 and the light transmitting module 240.
[0079] In one embodiment, the sensor array 236 of the Rx module 230 is fabricated (e.g., using CMOS technology) as part of a monolithic device on a single substrate that includes both an array of photon detectors and an ASIC 231 for signal processing the raw histograms from individual photon detectors (or groups of detectors) in the array. As an example of signal processing, for each photon detector or group of photon detectors, the memory 234 (e.g., SRAM) of the ASIC 231 can accumulate the counts of detected photons over successive time bins, which can be used in combination to regenerate the time series of reflected light pulses (i.e., photon counts versus time). This time series of aggregated photon counts is referred to herein as an intensity histogram (or simply a histogram). The ASIC 231 can implement matched filters and peak detection processing to identify return signals in time. Additionally, ASIC 231 may accomplish (e.g., by processor 238) certain signal processing techniques, such as multi-profile matched filtering, that serve to recover a photon time series that is less susceptible to pulse shape distortions that may occur due to SPAD saturation and quenching. In some embodiments, all or a portion of such filtering may be performed by processor 258, which may be embodied in an FPGA.
[0080] In some embodiments, the Rx optical system 237 may also be part of the same monolithic structure as the ASIC with a separate substrate layer for each receiver channel layer. For example, the aperture layer, collimating lens layer, optical filter layer, and photodetector layer may be stacked and bonded at the wafer level before dicing. The aperture layer may be formed by placing a non-transparent substrate on top of a transparent substrate or coating a transparent substrate with an opaque film. In yet other embodiments, one or more components of the Rx module 230 may be outside the monolithic structure. For example, the aperture layer may be implemented as a separate metal sheet with pinholes.
[0081] In some embodiments, the photon time series output from the ASIC is sent to the ranging system controller 250 for further processing, e.g., the data is encoded by one or more encoders in the ranging system controller 250 and then sent as a data packet to the user interface 215. The ranging system controller 250 can be implemented in multiple ways, including, for example, by using a programmable logic device such as an FPGA as an ASIC or part of the ASIC, by using a processor 258 with memory 254, and any combination of the above. The ranging system controller 250 can operate in conjunction with a fixed base controller or independently of the base controller (via pre-programmed instructions) to control the light-sensing module 230 by sending commands to adjust light detector parameters, including starting and stopping light detection. Similarly, the ranging system controller 250 can control the light-transmitting module 240 by sending commands, including light emission start and stop controls, as well as controls that may adjust other light emitter parameters (e.g., pulse code), or by relaying commands from the base controller. In some embodiments, the ranging system controller 250 has one or more wired interfaces or connectors for exchanging data with the light-sensing module 230 and the light-transmitting module 240. In other embodiments, the ranging system controller 250 communicates with the light-sensing module 230 and the light-transmitting module 240 via a wireless interconnection, such as an optical communication link.
[0082] The electric motor 260 may be an optional component required when there is a need to rotate system components such as the Tx module 240 and / or the Rx module 230. The system controller 250 may control the electric motor 260 to start and stop rotation and vary the rotation speed.
[0083] II. Detection of reflected pulses The optical sensors can be arranged in various ways to detect the reflected pulses. For example, the optical sensors can be arranged in an array, and each optical sensor can include an array of photodetectors (e.g., SPADs). Different patterns of pulses (pulse trains) transmitted during the detection interval are also described below.
[0084] A. Time-of-Flight Measurements and Detectors Figure 3 illustrates the operation of a typical LIDAR system that may be improved by some embodiments. A laser generates a short duration light pulse 310. The horizontal axis represents time and the vertical axis represents power. An example laser pulse duration, characterized by full width at half maximum (FWHM), is a few nanoseconds, and the peak power of a single emitter is on the order of a few watts. Embodiments using side emitter lasers or fiber lasers can have much higher peak powers, while embodiments with small diameter VCSELs can have peak powers of tens to hundreds of milliwatts.
[0085] The start time 315 of the transmission of a pulse does not have to coincide with the leading edge of the pulse. As shown, the leading edge of the light pulse 310 can be after the start time 315. In situations where different patterns of pulses are transmitted at different times, e.g., coded pulses, one may want the leading edges to be different.
[0086] The optical receiver system may begin detecting the received light simultaneously with, or at, the start of the laser. In other embodiments, the optical receiver system may begin at a later time that is a known time after the start time of the pulse. The optical receiver system may first detect background light 330 and some time later detect the laser pulse reflection 320. The optical receiver system may compare the detected light intensity to a threshold to identify the laser pulse reflection 320. The threshold may distinguish between background light 330 and light corresponding to the laser pulse reflection 320.
[0087] The time of flight 340 is the time difference between when a pulse is transmitted and when it is received. The time difference may be measured by dividing the time of transmission of the pulse (e.g., also measured relative to the start time) from the time of reception of the laser pulse reflection 320 (e.g., measured relative to the start time). The distance to the target may be determined as half the product of the time of flight and the speed of light. Pulses from the laser device reflect off objects in the scene at different times, and a pixel array detects the pulses of radiation reflection.
[0088] B. Object Detection Using an Array Laser and an Array of Light Sensors 4 illustrates an exemplary implementation of the optical transmission and detection process of an optical ranging system, according to some embodiments. FIG. 4 illustrates an optical ranging system (e.g., solid-state and / or scanning) that collects three-dimensional distance data of a volume or scene surrounding the system. FIG. 4 is an idealized diagram that emphasizes the relationship between the emitter and the sensor, and therefore other components are not shown.
[0089] The optical ranging system 400 includes an optical emitter array 402 and an optical sensor array 404. The optical emitter array 402 includes an array of optical emitters, such as emitter 403 and emitter 409, such as an array of VCSELs. The optical sensor array 404 includes an array of optical sensors, such as sensors 413 and 415. The optical sensors may be pixelated optical sensors that use a set of discrete photodetectors, such as single photon avalanche diodes (SPADs), per pixel. However, various embodiments may arrange for any type of photon sensor.
[0090] Each emitter may be slightly offset from adjacent emitters and configured to transmit light pulses into different fields of view from adjacent emitters, thereby illuminating the respective fields of view associated with only that emitter. For example, emitter 403 emits illumination beam 405 (formed from one or more light pulses) into a circular field of view 407 (whose size is exaggerated for clarity). Similarly, emitter 409 emits illumination beam 406 (also called emitter channel) into a circular field of view 410. Although not shown in FIG. 4 to avoid complexity, each emitter emits a corresponding illumination beam into a corresponding field of view, resulting in an array of 2D fields of view being illuminated (21 different fields of view in this example).
[0091] Each field of view illuminated by an emitter can be considered a pixel or spot in the corresponding 3D image generated from the ranging data. Each emitter channel can be separate for each emitter and non-overlapping with other emitter channels, i.e., there is a one-to-one mapping between a set of emitters and a set of non-overlapping fields or views. Thus, in the example of FIG. 4, the system can sample 21 different points in 3D space. High density sampling of points can be achieved by having a denser emitter array or by scanning the angular position of the emitter beam over time so that one emitter can sample multiple points in space. As above, scanning can be accomplished by rotating the entire emitter / sensor assembly.
[0092] Each sensor, like the emitters described above, can be slightly offset from adjacent sensors such that each sensor can see a different field of view of the scene in front of the sensor, and further, the field of view of each sensor can, for example, substantially match, e.g., overlap, and be the same size as, the field of view of the respective emitter channel.
[0093] In Fig. 4, the distance between corresponding emitter-sensor channels is exaggerated relative to the distance to objects in the field of view. In reality, the distance to objects in a small field is much larger than the distance between corresponding emitter-sensor channels, so that the path of light from the emitter to the object is nearly parallel to the path of reflected light back from the object to the sensor (i.e., the light is mostly "back-reflected"). Thus, there is a range of distances in front of the system 400 where the field of view of each sensor overlaps with the field of view of each emitter.
[0094] Since the field of view of the emitters overlaps with the field of view of the respective sensors, each sensor channel can ideally detect the reflected illumination beam originating from the respective emitter channel and ideally without crosstalk, i.e., no reflected light from other illumination beams is detected. Thus, each light sensor may correspond to a respective light source. For example, emitter 403 emits illumination beam 405 within a circular field of view 407, and a portion of the illumination beam reflects from object 408. Ideally, reflected beam 411 is detected only by sensor 413. Thus, emitter 403 and sensor 413 share the same field of view, e.g., field of view 407, and form an emitter-sensor pair. Similarly, emitter 409 and sensor 415 form an emitter-sensor pair and share field of view 410. Although the emitter-sensor pairs are shown in FIG. 4 as being at the same relative positions in their respective arrays, any emitter may be paired with any sensor, depending on the design of the optical system used in the system.
[0095] During ranging measurements, reflected light from various fields of view distributed around the volume surrounding the LIDAR system is collected and processed by various sensors to provide range information for any object within each respective field of view. As described above, time-of-flight techniques can be used in which a precisely timed pulse is emitted by the light emitter and a reflection of the pulse is detected by the respective sensor after a certain time has elapsed. The time elapsed between emission and detection and the known speed of light are then used to calculate the distance to the reflecting surface. In some embodiments, in addition to range, additional information can be obtained by the sensor to determine other properties of the reflecting surface. For example, the Doppler shift of the pulse can be measured by the sensor and used to calculate the relative velocity between the sensor and the reflecting surface. The pulse strength can be used to estimate the reflectivity of the target, and the pulse shape can be used to determine whether the target is a hard or diffuse material.
[0096] In some embodiments, the LIDAR system may be configured with a relatively large 2D array of emitter and sensor channels and may operate as a solid-state LIDAR, i.e., the LIDAR system may acquire frames of range data without the need to scan the direction of the emitters and / or sensors. In other embodiments, the emitters and sensors may be scanned, e.g., rotated about an axis, to ensure that the field of view of the set of emitters and sensors samples a full 360-degree region of the surrounding volume (or some useful portion of the 360-degree region). For example, range data collected from a scanning system over a given period of time may then be post-processed into one or more frames of data that may be further processed into one or more depth images or 3D point clouds. The depth images and / or 3D point clouds may be further processed into map files for use in 3D mapping and navigation applications.
[0097] C. Multiple photodetectors in each light sensor 5 shows various stages of a sensor array and associated electronics according to an embodiment of the present invention. Array 510 shows photosensors 515, each corresponding to a different pixel. Array 510 may be a staggered array. In this particular example, array 510 is 18×4 photosensors. High resolution (e.g., 72×1024) can be achieved using array 510, as the implementation is suitable for sweeping.
[0098] Array 520 shows an expanded view of a portion of array 510. As can be seen, each photosensor 515 is made up of multiple photodetectors 525. The signals from the photodetectors of a pixel collectively contribute to the measurement of that pixel.
[0099] In some embodiments, each pixel has multiple single photon avalanche diode (SPAD) units that increase the dynamic range of the pixel itself. Each SPAD may have analog front-end circuits for biasing, quenching, and recharging. SPADs are typically biased with a bias voltage above the breakdown voltage. A suitable circuit detects the leading edge of the avalanche current and generates a standard output pulse synchronized with the avalanche build-up, quenching the avalanche by lowering the bias below the breakdown voltage, and returning the photodiode to its operating level.
[0100] The SPAD may be positioned to maximize the fill factor in its local area, or a microlens array may be used that allows a high optical fill factor at the pixel level. Thus, an imager pixel may contain an array of SPADs to increase the efficiency of the pixel detector. A diffuser may be used to diffuse the light beam that passes through the aperture and is collimated by the microlens. The can diffuser serves to diffuse the parallel light beam so that all SPADs belonging to the same pixel receive some radiation.
[0101] FIG. 5 further illustrates a particular photodetector 530 (e.g., a SPAD) that detects a photon 532. In response to detection, the photodetector 530 generates an avalanche current 534 of charge carriers (electrons or holes). A threshold circuit 540 regulates the avalanche current 534 by comparing the avalanche current 534 to a threshold. If a photon is detected and the photodetector 530 is functioning properly, the avalanche current 534 rises above a comparator threshold and the threshold circuit 540 generates a time-precise binary signal 545 indicating the exact time of the SPAD current avalanche, which in turn is an accurate measure of the photon arrival. The correlation between the current avalanche and the photon arrival can occur with nanosecond resolution, thereby providing high timing resolution. The rising edge of the binary signal 545 can be latched by a pixel counter 550.
[0102] Binary signal 545, avalanche current 534, and pixel counter 550 are examples of data values that may be provided by a photosensor comprised of one or more SPADs. The data values may be determined from a respective signal from each of a plurality of photodetectors. Each of the respective signals may be compared to a threshold value to determine whether the corresponding photodetector has been triggered. Avalanche current 534 is an example of an analog signal, and thus each of the signals may be an analog signal.
[0103] The pixel counter 550 can use the binary signal 545 to count the number of photodetectors for a given pixel that are triggered by one or more photons during a particular time bin (e.g., a time window of 1, 2, 3 ns, etc.) controlled by the periodic signal 560. The pixel counter 550 can store a counter for each of multiple time bins of a given measurement. The value of the counter for each time bin starts at zero and can be incremented based on the binary signal 545 indicating the detection of a photon. When any photodetector of the pixel provides such a signal, the counter can be incremented.
[0104] The periodic signal 560 may be generated by a phase-locked loop (PLL) or a delay-locked loop (DLL), or any other method of generating a clock signal. Coordination of the periodic signal 560 with the pixel counter 550 may function as a time-to-digital converter (TDC), a device for recognizing events and providing a digital representation of the time they occurred. For example, the TDC may output the arrival time of each detected photon or light pulse. The measured time may not be an absolute time, but rather the elapsed time between two events (e.g., the start time and the detected photon or light pulse). The periodic signal 560 may be a relatively fast clock that switches between a bank of memory that includes the pixel counter 550. Each register in the memory may correspond to one histogram bin, and the clock may switch between them at the sampling interval. Thus, if the respective signal is greater than a threshold, a binary value indicating a trigger may be sent to a histogram circuit. The histogram circuit may aggregate the binary values across multiple photodetectors to determine the number of photodetectors that were triggered during a particular time bin.
[0105] The time bins may be measured relative to a start signal, for example at start time 315 in FIG. 3. Thus, the counter of the time bin immediately following the start signal may have a low value corresponding to the background signal, e.g., background light 330. The last time bin may correspond to the end of the detection time interval (also called a shot) of a given pulse train, which is further described in the next section. The number of cycles of the periodic signal 560 since the start time may serve as a timestamp of when the rising edge of the avalanche current 534 indicates a detected photon. The timestamp corresponds to the time bin for a particular counter in the pixel counter 550. Such operation differs from a simple analog-to-digital converter (ADC) following a photodiode (e.g., an avalanche photodiode (APD)). Each of the counters of the time bins may correspond to a histogram, which is described in more detail below. Thus, while an APD is a linear amplifier for the input optical signal with limited gain, a SPAD is a trigger device that provides a binary yes / no output for trigger events occurring within a time window.
[0106] D. Pulse train Ranging may be accomplished using a pulse train, defined as including one or more pulses, within the pulse train, the number of pulses, the width of the pulses, and the duration between pulses (collectively referred to as the pulse pattern) may be selected based on several factors, some of which include: 1 - Maximum laser duty cycle is the percentage of time the laser is on. For pulsed lasers, this can be determined by the FWHM and the number of pulses emitted in a given period of time, as explained above. 2- Eye safety limit- This is determined by the maximum amount of radiation that a device can emit without damaging the eyes of a bystander looking in the direction of the LIDAR system. 3- Power Consumption-This is the power consumed by the emitter to illuminate the scene.
[0107] For example, the spacing between pulses in a pulse train can be on the order of a single order or tens of nanoseconds.
[0108] Multiple pulse trains may be emitted during one measurement, each corresponding to a different time interval, e.g., a subsequent pulse train is not emitted until the expiration of a time limit for detecting a reflected pulse of the previous pulse train.
[0109] For a given emitter or laser device, the time between the emission of the pulse trains determines the maximum detectable range. For example, if pulse train A is emitted at time t0=0 ns and pulse train B is emitted at time t1=1000 ns, reflected pulse trains detected after t1 are much more likely to be reflections from pulse train B and should not be assigned to pulse train A. Thus, the time between the pulse trains and the speed of light define the maximum limit of the range of the system, which is given by: R max =c×(t1-t0) / 2 The time between shots (emission and detection of the pulse train) may be as little as 1 μs to allow sufficient time for the entire pulse train to travel to a distant object about 150 meters away and back.
[0110] III. Histogram signal from the photodetector One mode of operation of a LIDAR system is time-correlated single photon counting (TCSPC), which is based on counting single photons in a periodic signal. This technique works well for low levels of periodic radiation, which is preferred in LIDAR systems. This time-correlated counting may be controlled by the periodic signal 560 of FIG. 5 and may use time bins as discussed in FIG. 5.
[0111] The frequency of the periodic signal may specify the time resolution at which the data values of the signal are measured. For example, one measurement may be taken for each light sensor for each cycle of the periodic signal. In some embodiments, the measurement may be the number of light detectors triggered during that cycle. The period of the periodic signal corresponds to a time bin, with each cycle being a different time bin.
[0112] FIG. 6 illustrates a histogram 600 according to an embodiment of the invention. The horizontal axis corresponds to time bins measured relative to a start time 615. As mentioned above, the start time 615 may correspond to the start time of the pulse train. Any offset between the rising edge of the first pulse of the pulse train and the start time of either or both of the pulse train and the detection time interval may be considered, where determining the receive time to use for the time-of-flight measurement. The vertical axis corresponds to the number of triggered SPADs. In certain embodiments, the vertical axis may correspond to the output of an ADC following an APD. For example, the APD may exhibit traditional saturation effects, such as a constant maximum signal, rather than the dead-time based effects of the SPAD. Some effects may occur in both the SPAD and the APD, for example, pulse smearing of highly tilted surfaces may occur in both the SPAD and the APD.
[0113] Each counter for a time bin corresponds to a different bar in the histogram 600. The counters for the early time bins are relatively low and correspond to background noise 630. At some point, a reflected pulse 620 is detected. The corresponding counters may be much larger and exceed the threshold that distinguishes the detected pulse from the background. The reflected pulses 620 (after digitization) are shown corresponding to four time bins, which may be due to laser pulses of similar width, e.g., a 4 ns pulse if the time bins are 1 ns each. However, as described in more detail below, the number of time bins may vary based on the characteristics of the particular object, e.g., the angle of incidence of the laser pulse.
[0114] The temporal location of the time bin corresponding to the reflected pulse 620 can be used to determine the time of receipt relative to the start time 615, for example. As described in more detail below, a matched filter can be used to identify the pulse pattern, which effectively increases the signal-to-noise ratio, but also allows for a more accurate determination of the time of receipt. In some embodiments, the accuracy of determining the time of receipt can be less than the time resolution of a single time bin. For example, for a 1 ns time bin, that resolution would correspond to about 15 cm. However, it may be desirable to have an accuracy of only a few centimeters.
[0115] Thus, a detected photon may result in a particular time bin of the histogram being incremented based on its time of arrival relative to the start signal, for example as indicated by start time 615. The start signal may be periodic such that multiple pulse trains are transmitted during a measurement. Each start signal may also be synchronized to the laser pulse train such that multiple start signals cause multiple pulse trains to be transmitted over multiple detection intervals. Thus, a time bin (e.g., 200-201 ns after the start signal) will occur for each detection interval. The histogram may accumulate counts, with the count for a particular time bin corresponding to the sum of the measurement data values that all occur within that particular time bin over multiple shots. When the detected photons are histogrammed based on such techniques, it results in a return signal with a signal-to-noise ratio that is greater than that from a single pulse train by the square root of the number of shots that occurred.
[0116] FIG. 7 illustrates a histogram accumulation over multiple pulse trains for a selected pixel, according to an embodiment of the present invention. FIG. 7 illustrates three detected pulse trains 710, 720, and 730. Each detected pulse train corresponds to a transmitted pulse train having the same pattern of two pulses separated by the same amount of time. Thus, each detected pulse train has the same pulse pattern, as shown by the two time bins having appreciable values. For simplicity of illustration, the counters for the other time bins are not shown, although the other time bins may have relatively low non-zero values.
[0117] In the first detected pulse train 710, the counters for time bins 712 and 714 are the same. This may be due to the same number of detectors detecting photons in the two time bins. Alternatively, in other embodiments, approximately the same number of photons are detected in the two time bins. In other embodiments, more than one consecutive time bin may have consecutive non-zero values, but for ease of explanation, each non-zero time bin is shown.
[0118] Time bins 712 and 714 occur 458 ns and 478 ns, respectively, after start time 715. The counters shown for the other detected pulse trains occur in the same time bins for their respective start times. In this example, start time 715 is identified as occurring at time 0, but the actual time is arbitrary. The first detection interval for the first detected pulse train may be 1 μs. Thus, the number of time bins measured from start time 715 may be 1,000. After this first detection interval ends, a new pulse train may be transmitted and detected. The start and end of the different time bins may be controlled by a clock signal, which may be, for example, a portion of a circuit acting as a time-to-digital converter (TDC) as described in FIG. 5.
[0119] For the second detected pulse train 720, the start time 725 is at 1 μs, for example, when the second pulse train may be emitted. Such separate detection intervals may occur such that all pulses transmitted at the beginning of the first detection interval have already been detected, so there is no confusion for the pulses detected in the second time interval. For example, if there is no extra time between shots, the circuit may confuse a retroreflective stop sign at 200 m with a much less reflective object at 50 m (assuming a shot duration of approximately 1 μs). The two detection time intervals of pulse trains 710 and 720 may be of the same length and have the same relationship to their respective start times. Time bins 722 and 724 occur at the same relative times, 458 ns and 478 sn, as time bins 712 and 714. Thus, when the accumulation step occurs, the corresponding counters may be added. For example, the counter values in time bins 712 and 722 may be added together.
[0120] For the third detected pulse train 730, the start time 735 is at 2 μs, for example, when the third pulse train may be emitted. Time bins 732 and 734 also occur at 458 ns and 478 ns relative to the respective start time 735. For example, due to the stochastic nature of the scattering process of the light pulses leaving the object, the counters at different time bins may have different values even if the emitted pulses have the same power.
[0121] Histogram 740 shows the accumulation of counters from three detected pulse trains in time bins 742 and 744, which also correspond to 458 ns and 478 ns. Histogram 740 may have a fewer number of time bins measured during each detection interval or having values below the threshold, for example as a result of time bins falling at the beginning or end. In some implementations, depending on the pattern of the pulse train, approximately 10-30 time bins may have appreciable values.
[0122] By way of example, the number of pulse trains emitted during a measurement to create a single histogram may be about 1-40 (e.g., 24), but may be much higher, e.g., 50, 100, or 500. Once the measurement is completed, the histogram's counter may be reset and a set of pulse trains may be emitted to perform a new measurement. In various embodiments, measurements may be performed every 25, 50, 100, or 500 μs, depending on the number of detection intervals in their respective durations. In some embodiments, the measurement intervals may overlap, e.g., such that a given histogram corresponds to a particular sliding window of pulse trains. In such an example, there may be memory to store multiple histograms, each corresponding to a different time window. Any weighting applied to the detected pulses may be the same for each histogram, or such weighting may be individually controlled.
[0123] IV. Histogram Datapath FIG. 8 illustrates a circuit for receiving photons and generating a set of signals stored in memory representing a histogram, according to some embodiments. As described above in connection with FIG. 5, an array of light sensors may be used to receive reflected pulses and background photons from ambient light in an optical measurement system. A single light sensor 802 may include multiple photodetectors. Each photodetector may be implemented by a SPAD or other photosensitive sensor, and the photodetectors may be arranged in a grid pattern for the light sensor 802, as shown in FIG. 8. A filter may be used for each of the light sensors so that light outside of a range centered on the light source of the LIDAR system is not received by the light sensor. However, even with this filter, ambient light at or near the emission wavelength of the light source may pass through the filter. This may result in photons from the ambient light and photons emitted from the LIDAR light source being received by the light sensor.
[0124] Each photodetector in the optical sensor 802 may include an analog front-end circuit to generate an output signal indicative of when a photon is received by the photodetector. For example, referring back to FIG. 5, the avalanche current 534 from the SPAD may trigger the threshold circuit 540 to generate the output binary signal 545. Returning to FIG. 8, each photodetector in the optical sensor 802 may generate its own signal corresponding to the received photon. Thus, the optical sensor 802 may generate a set of signals 816 corresponding to the number of photodetectors in the optical sensor 802. The optical sensor 802 may also be referred to as a "pixel" or "pixel sensor" because it may correspond to a single pixel of information when displayed or analyzed at a later stage of the optical measurement system. When a signal is generated in response to a received photon (e.g., a transition from a logical "0" to a logical "1"), this may be referred to as a "positive" signal.
[0125] An arithmetic logic unit (ALU) 804 may be used to implement the functionality of pixel counter 550 from FIG. 5. Specifically, ALU 804 may receive set of signals 816 from individual photodetectors of photosensor 802 and tally up the number of these signals, each of which indicates the detection of a photon. ALU 804 may include combinatorial digital electronic circuitry that performs arithmetic and / or other bit-wise operations on set of signals 816. For example, ALU 804 may receive each of set of signals 816 as a binary signal (i.e., “0” or “1”) as an input or operand to ALU 804. By tallying up or adding the inputs together, ALU 804 may count a number of positive signals in set of signals 816 that indicate a photon was received within a particular time bin. For example, by adding up each of the signals that indicate a “1” signal level, the output of ALU 804 may indicate the number of signals in set of signals 816 that are associated with photodetectors that received a photon during the time bin.
[0126] ALU 804 is specially designed to receive at least a number of inputs corresponding to the number of photodetectors in photosensor 802. In the example of FIG. 8, ALU 804 may be configured to receive 32 parallel inputs that are single bit wide. Internally, ALU 804 may be implemented with digital logic gates to form a ripple carry adder, a carry lookahead adder, a carry save adder, and / or any other type of adder that can sum a relatively large number of inputs with low propagation time. The output of ALU 804 may be referred to as a "total signal count" and may be expressed as an n-bit binary number output from ALU 804 or a stage of ALU 804.
[0127] As described above, the output of the ALU 804 may characterize the total number of photons received by the photosensor 802 during a particular time bin. Each time the ALU 804 completes a counting operation, the total signal count may be added to a corresponding memory location in the memory 806 that represents the histogram 818. In some embodiments, the memory 806 may be implemented using SRAM. Thus, over the course of multiple shots (each shot including a pulse train), the total signal count from the ALU 804 may be counted with the existing value of the corresponding memory location in the memory 806. A single measurement may consist of multiple shots populating the memory 806 to generate a histogram 818 of values in a time bin that may be used to detect reflected signals, background noise, peaks, and / or other signals of interest.
[0128] The ALU 804 may also perform a second tallying operation that adds the total signal count to an existing value in a memory location of the memory 806. Recall from FIG. 7 that with each shot, a new total signal count may be added to an existing value in a corresponding time bin of the memory 806. In this manner, the histogram 818 may be gradually built up in the memory 806 over several shots. When a total signal count is generated by the ALU 814, a current value 820 of the corresponding memory location of that time bin may be retrieved from the memory 806. The current value 820 may be provided as an operand to the ALU 804, which may be combined with the total signal count from the set of signals 816. In some embodiments, the ALU 804 may be comprised of a first stage and a second stage, where the first stage calculates the total signal count from the light sensor 802, and the second stage combines the total signal count with the current value 820 from the memory location of that time bin in the memory 806. In some embodiments, the aggregation of the set of signals 816 and the aggregation of the total signal count and current value 820 may be performed as a single moving image, and thus, although these two operations may be described as functionally separate "aggregators," in reality they may be performed together using a combination of parallel and sequential circuitry in ALU 804.
[0129] As described above in connection with FIG. 5, the ALU 804 may receive a periodic signal 560 that triggers a counting operation. The periodic signal 560 may be generated using any of the techniques described above. The periodic signal 560 may define the length of each time bin. In some embodiments, the periodic signal 560 and the corresponding time bins may be measured relative to a start signal, as shown in FIG. 3. Each cycle of the periodic signal 560 may cause the ALU 804 to perform a counting operation and increment the memory address of the memory 860 to the next time bin. For example, a rising edge of the periodic signal 560 may cause the ALU 804 to generate a result that counts the total signal count and the current value 820 together. The corresponding periodic signal 808 may also be sent to a memory interface circuit that increments the address to the memory location of the current time bin, such that each cycle also moves to the next time bin in the memory 806.
[0130] A clock circuit 810 may be used to generate the periodic signal 560 based on inputs that define a shot and a measurement of the optical measurement system. For example, the shot input 814 may correspond to the start signal shown in FIG. 3. The shot input 814 may reset the address of the memory 806 to a beginning memory location that coincides with the first time bin of the histogram 818. The shot input 814 may also cause the clock circuit 810 to begin generating the periodic signal 560 of the ALU 804 and / or the periodic signal 808 that increments the address of the memory 806. In addition, the clock circuit 810 may receive a measurement input 812 that defines the beginning / end of a measurement. A measurement may consist of multiple shots that progressively build the histogram 818. The measurement signal 812 may be used to reset values in the memory 806 so that the histogram can start over for each new measurement.
[0131] The memory 806 may include multiple registers that accumulate photon counts from the photodetectors. By accumulating the photon counts in respective registers corresponding to time bins, the registers in the memory 806 may store the photon counts based on the arrival time of the photon. For example, photons arriving in a first time bin may be stored in a first register in the memory 806, photons arriving in a second time bin may be stored in a second register in the memory 806, and so on. Each "shot" may include one traversal through each of the registers in the memory 806 that correspond to the time bins of that photosensor. The shot signal 814 may be referred to as an "enable" signal for the multiple registers in the memory 806 in that the shot signal 814 enables the registers in the memory 806 to store the results from the ALU 804 during the current shot.
[0132] The periodic signal 560 can be generated such that it is configured to capture the set of signals 816 provided asynchronously from the photosensor 802. For example, the threshold circuit 540 can be configured to hold the output signal high for a predetermined time interval. The periodic signal 560 can be timed such that it has a period that is equal to or less than the hold time of the threshold circuit 540. Alternatively, the period of the periodic signal 560 can be a percentage of the hold time of the threshold circuit 540, such as 90%, 80%, 75%, 70%, 50%, 110%, 120%, 125%, 150%, and 200%. Some embodiments can use a rising edge detection circuit as shown in FIG. 5 to convert the asynchronous signal from the photodetector into a single clock strobe that uses the same clock that runs the ALU 804. This can ensure that photons are not counted more than once. Other embodiments can alternatively oversample the asynchronous pulses from the photodetector or use brute force rising edge detection.
[0133] 9 illustrates the timing associated with different shots in a measurement, according to some embodiments. The vertical axis represents the total number of photodetector signals measured at a single optical sensor. For example, the vertical axis may represent total photon counts. The horizontal axis represents time. When a new optical measurement is started as indicated by measurement signal 812, the first shot can begin with the receipt of shot signal 814-1 as the starting signal. Periodic signal 506 illustrates how each clocking of ALU 804 corresponds to a single time bin and corresponding memory location in memory 806.
[0134] With each subsequent shot, a histogram may be built in memory 806, as shown in FIG. 9. Each time a shot input 814 is received, the addressing of memory 806 may be reset, thereby adding a new total signal count to the existing signal count. In the example of FIG. 9, there is a non-zero time interval separation between each shot. For example, the shot initiated by shot signal 814-1 ends and a non-zero time interval elapses before the shot defined by shot signal 814-2 begins. Alternatively, some embodiments may not have a delay between subsequent shots, such that the periodic signal 506 clocks continuously through the measurement. In that case, subsequent shot signals 814-2, 814-3 may define both the end of the previous shot and the beginning of the subsequent shot.
[0135] In some embodiments, the timing of the measurement signal 812, the shot signal 814, and the periodic signal 506 that clocks the ALU 804 may all be coordinated and generated relative to one another. Thus, the clocking of the ALU may be triggered by and dependent on the start signal of each shot. Additionally, the period of the periodic signal 506 may define the length of each time bin associated with each memory location in the histogram.
[0136] The datapath shown in FIG. 8 is primarily configured to build a histogram 818 over several shots. However, the histogram may only be populated during a shot in some embodiments. Any photons received between shots are not aggregated into time bins by the ALU 804 and stored in the memory 806. In addition, the contents of the memory 806 may be reset after each measurement is completed and before the subsequent measurement begins. Thus, photons received before and / or after the current measurement may not be saved or immediately available. Furthermore, the total count of all photons received in the histogram is not immediately available in the histogram datapath, nor is the total count of all photons received during a measurement cycle available if there is a non-zero interval between shots when the histogram is disabled. In addition to the histogram datapath shown in FIG. 8, a second parallel datapath may be used to record the photons received in a continuous manner that is independent of the shot / measurement timing.
[0137] V. Integrated Data Path To record the accumulated photon sum of all the photodetectors in the photosensor, some embodiments may provide a parallel data path that includes an integration register. This integration data path may receive the total positive signal count for each time bin and add the values to a single integration register rather than separate time bins to form a histogram. This integration register may record pre-shot, inter-shot, and post-shot photon counts. This integration register may be clocked independently from the histogram data path described above, so that photon counts may be recorded even when no active measurements are being made or shots are being taken in a multi-shot measurement. This provides a readily available total photon count for the photosensor or pixel that may be used to estimate background noise, set thresholds, and provide real-time image data.
[0138] FIG. 10 illustrates a data path with an accumulation register, according to some embodiments. The light sensor 802 with multiple light detectors may generate a set of signals 816 as described above in connection with FIG. 8. The second ALU 1006 may accumulate positive signals received during a time bin, as described above. However, instead of storing the total signal counts accumulated by the ALU 1006 in separate time bins in the memory 806, this second data path may add the total signal count to a value stored in an accumulation register 1004 that represents the total number of positive signals received from the light detectors over each of the time bins over any number of shots. For example, the accumulation register 1004 may provide the ALU 1006 with a current value 1010 of the accumulation register 1004. The first stage of the ALU 1006 may accumulate the set of signals 816 from the light sensor 802 to generate a total signal count for the current time bin. The second stage of ALU 1006 can then add the total signal count for the current time bin to a current value 1010 representing the total photon count in the integration register 1004, and store the updated total photon count in the integration register 1004.
[0139] The integration signal 1008 may be provided to the clock circuit 1003 to initiate an integration cycle. The clock circuit 1003 may generate a periodic signal 1012 that may clock the ALU 1006. For example, the periodic signal 1012 may define time bins into which the set of signals 816 may be aggregated by the ALU 1006. The clock circuit 1003 may also generate a periodic signal 1011 that is used to latch new values into the integration register 1004. For example, a rising clock edge of the periodic signal 1011 may cause the integration register 1004 to latch the result from the ALU 1006. The result from the ALU 1006 may be the sum of the total signal count and the current value 1010 of the integration register 1004 before latching the new result value.
[0140] The timing associated with the integration register 1004 and / or the ALU 1006 may be independent of the timing of the clock circuit 810 in the histogram datapath of FIG. 8. For example, the periodic signal 1012 in the integration datapath need not be phase-aligned with the periodic signal 560 in the histogram datapath. These periodic signals 1012, 560 may also have different periods and / or duty cycles. In addition, the integration signal 1008 that defines the beginning and / or length of an integration cycle need not be aligned with or derived from the shot signal 814 or the measurement signal 812 of the histogram datapath. Thus, the timing of the histogram datapath and the integration datapath may be completely independent of one another.
[0141] In some embodiments, the integration register 1004 may accumulate photon counts from the photosensor 802 during one or more intervals defined by the integration signal 1008. In this sense, the integration signal 1008 may be referred to as an "enable" signal in that it enables the integration register 1004 to accumulate photon counts. In some embodiments, each enablement of the integration signal 1008 may reset the integration register 1004 so that the accumulation of photon counts starts over. In other embodiments, each enablement of the integration signal 1008 restarts the integration register 1004, so that the integration register 1004 continues accumulating photon counts from where it left off. This enables the integration register 1004 to accumulate photon counts over one or more time intervals that may be defined by the integration (i.e., enable) signal 1008.
[0142] FIG. 11 shows a timing graph of an integration datapath, according to some embodiments. The vertical axis of the bottom graph represents the total signal count for each time bin. The vertical axis of the top graph represents the total value stored in the integration register. The horizontal axis of the top and bottom graphs represents time. When an integration signal is received 1008, a clock circuit 1003 may begin generating a periodic signal 1012. As shown in the bottom graph, the periodic signal 1012 may define the time bins for each sampling of the ALU 1006. Note that the term "time bins" of the integration datapath need not correspond to specific memory locations of the histogram, as do time bins in the histogram datapath. Instead, the time bins of the integration datapath refer to the intervals between when the aggregation results are available from the ALU 1006. As described above with respect to the histogram data path periodic signal 560, the frequency of the integration data path periodic signal 1012 may be timed relative to the hold time of the threshold circuit 540 so that positive sensor responses to photons are not missed or over-counted during the counting operation of the ALU 1006. In some embodiments, the analog front-end of the SPAD may implement a rising edge detector to convert the photodetector signal into a synchronous clock signal as described above.
[0143] Three such shots 910, 912, and 914 are shown in FIG. 11 for reference, although not necessarily timed with the shots of the histogram datapath. For example, interval 910 may represent a first shot, interval 912 may represent a second shot, and interval 914 may represent a third shot. Note that the integration signal 1008 does not necessarily correspond to a start signal that would indicate the beginning of a shot in the histogram datapath, such as shot 910. In addition, note that the integration register may be updated intermittently over time, regardless of shot or measurement. In this example, the periodic signal 1012 continues to clock the ALU 1006 before, during, and after the shots 910, 912, and 914 in the histogram datapath. Because the integration register 1004 may be continuously updated, the integration register may represent the total number of positive signals received from the photodetector over each of the time bins and over the time intervals representing the separate shots.
[0144] The top graph of FIG. 11 shows the value 1108 of the accumulation register 1004 over time. The top graph does not represent a histogram, but instead each vertical bar represents the value of the accumulation register 1004 at that point in time. The values of the bottom graph are also shown as black boxes in the top graph that are added to the value 1108 of the accumulation register 1004 for each time bin. For example, the time bins of the bottom graph that have values of 8, 10, 11, and 9 are cumulatively added to the value 1108 of the accumulation register of the top graph during the corresponding time bin. When the value 8 is stored in the time bin of the histogram, it is also added to the existing value 1108 of the accumulation register to produce an updated value of 16. Then, the current value of 10 is added to that time bin and the existing value 16 of the accumulation register to produce an upgraded value of 26, and so on. Instead of storing the updated value in a memory location and incrementing the address of the memory, the same accumulation register is continually updated with new values from the ALU 1006. As mentioned above, the value of the accumulation register 1004 may be continually incremented regardless of the shots being recorded in the histogram datapath.
[0145] VI. Multiple Integrated Registers The above-described embodiments use a single integration register to accumulate photon counts of photons received before, during, between, and / or after a shot in one or more optical measurements. This aggregated value stored in the integration register can be used to estimate a background noise level to distinguish between background noise and photons reflected from a pulse train as part of the measurement. In addition, the values in the integration register can be used to generate an ambient light image of the surrounding environment. For example, each of the shots in the measurement can fall within an integration window of the integration register. While the histogram data path will generate distance measurements to objects in the surrounding environment, the values in the integration register can be used to generate an ambient light image (e.g., grayscale) of the surrounding environment. The spatial resolution of the resulting ambient light image can generally match the spatial resolution of the measurements of the LIDAR system such that each distance measurement corresponds to one grayscale image value of the ambient light image.
[0146] Instead of using a single integration register, some embodiments may use multiple integration registers to improve the spatial resolution of the image data captured in the integration register. FIG. 12 illustrates an integration data path with multiple integration registers 1202, according to some embodiments. The integration data path illustrated in FIG. 12 is similar to the integration data path illustrated in FIG. 10. However, instead of a single integration register 1004 that accumulates all photon counts received while the integration register 1004 is enabled, this integration data path includes multiple integration registers 1202. Instead of storing all photon counts in a single integration register 1004, the photon counts from the ALU 1006 may be stored in multiple integration registers 1202 based on various stimuli, such as timing, position, and thresholds.
[0147] As shown in FIG. 12, the ALU 1006 may provide an output of the photon count in the current ALU clock cycle to a bank of integrating registers 1210. The bank of integrating registers 1210 may then select one of the integrating registers 1202, which may then add the photon count received from the ALU 1006 during the current clock cycle to its current stored value. A select signal 1204 may be provided to the bank of integrating registers 1210 and may be used to select and cycle each of the integrating registers 1202. The select signal 1204 may also be used by the bank of integrating registers 1210 to select an output from an integrating register 1202 to use as the current value 1010 sent to the ALU 1006, and to select one of the integrating registers 1202 in which to store an updated value from the ALU 1006.
[0148] When the integration signal 1008 triggers the start of an integration cycle on the integration data path, a bank of integration registers 1210 may select a first integration register in the plurality of integration registers 1202. For example, the selection signal 1204 may be provided to a multiplexer 1206, which receives the outputs from the plurality of integration registers 1202 and selects the output of one of those integration registers 1202 to be used as the current value 1010. This first integration register, as selected by the selection signal 1204, may provide the sum of the stored photon counts from the previous ALU clock cycle to the ALU 1006, which can add this current value 1010 from the selected integration register to the current photon count from the photosensor 802. This updated value may then be returned to the bank of integration registers.
[0149] When the bank of accumulation registers 1210 receives the updated value from the ALU 1006, the select signal 1204 may again be used to select the same accumulation register whose output was selected by the multiplexer 1206 above. In some embodiments, the select signal 1204 may function as an enable signal individually for each of the accumulation registers 1202. The output of the ALU 1006 may be provided to the input of each of the accumulation registers 1202, and the select signal 1204 may select one of the accumulation registers 1204 to latch the updated value from the ALU 1006. Although not explicitly shown in FIG. 12, some embodiments may alternatively or additionally include a demultiplexer or demultiplexer to route the updated value from the ALU 1006 to the selected accumulation register.
[0150] The select signal 1204 may select the same integration register through multiple ALU clock cycles before selecting a different one of the integration registers 1202. While the integration register is selected, it may tally up photon counts in the same manner as described above for an integration data path with only a single integration register. However, an embodiment having multiple integration registers 1202 may switch to a new one of the integration registers 1202 during a single integration interval. For example, when the integration signal 1008 is enabled to begin an integration cycle, the select signal 1204 may select the eleventh one of the integration registers 1202, as described above. During the same integration cycle, the select signal 1204 may be changed or incremented to select the twenty-first one of the integration registers 1202 without requiring a new enablement of the integration signal 1008. This process may then continue as the select signal 1204 cycles through each of the integration registers 1202 during the integration cycle. This effectively splits the total photon count stored in the single integrating register of FIG. 10 across multiple individual integrating registers 1202 in the embodiment of FIG.
[0151] A. Total photon count from an integrating register When the select signal 1204 moves the integration operation from one of the integration registers 1202 to the next one, the accumulated value stored in the previous one of the integration registers 1202 may be maintained. Thus, when a subsequent one of the integration registers 1202 is selected, the previous integration registers in the integration register bank 1210 may maintain their values until the end of the integration cycle or until the start of a subsequent integration cycle. For example, when the integration signal 1008 is enabled to begin a new integration cycle, the values stored in the integration registers 1202 may be reset to zero.
[0152] 13 shows an integration data path including an ALU 1302 to provide an aggregated sum from all of the integration registers 1202, according to some embodiments. As the select signal 1204 proceeds through the integration registers 1202, each of the integration registers 1202 maintains their stored values, so that the aggregated sum from each of the integration registers 1202 at any point during an integration cycle can provide the total photon count up to that point in the integration cycle. After an integration cycle is completed, the values in the integration registers 1202 may still be maintained such that the aggregated sum of the values in the integration registers 1202 may be used at any point before the start of a subsequent integration cycle.
[0153] To generate the total photon count 1304 for an integration cycle, the ALU 1302 may receive the output from each of the integration registers 1202. The output of the ALU 1302 may then represent the total photon count 1304. In some embodiments, the ALU 1302 may be asynchronous such that the ALU 1302 dynamically provides a new total photon count 1304 when values are updated at the outputs of the integration registers 1202. In some embodiments, the ALU 1302 may be a synchronous ALU and may be clocked using the same clock signal as the ALU 1006 to tally up the photon counts from the photosensor 802.
[0154] The total photon count 1304 may be provided as an output used by a control processor to generate the selection signal 1204 and / or the integration signal 1008 and to process data from the histogram data path to identify the reflected pulse train. In some embodiments, the integration register bank 1210 may also include an additional register that receives the total photon count 1304 from the ALU 1302 and stores the total photon count 1304 each time the integration register 1202 is updated and a new value is available from the ALU 1302. These embodiments may simultaneously provide photon counts from individual integration registers 1204 as well as provide a register that stores the total photon count 1304 for the total integration cycle.
[0155] B. Relative timing between data paths The integration datapath can be distinguished from the histogram datapath at least in part by the different timing of enable, select, and / or clock signals used in each of the datapaths, as well as the various time intervals and time bins. The select signal 1204, the clock signal 1012 of the ALU 1006, the integration signal 1008, and the clock signal 1011 of the bank of integration registers 1210 in the integration datapath may each be individually independent from any or all of the timing signals in the histogram datapath. For example, each of the timing signals of the integration datapath may be generated from a different source when compared to the timing signals in the histogram datapath. However, some of these signals may be dependent on each other in some embodiments, or may at least be temporarily aligned with each other. For example, if the circuitry of the ALU 1006 is shared between the datapaths, then the clock signals 1012 and 1011 may be shared between the datapaths.
[0156] FIG. 14 illustrates a relative timing diagram of the integration data path and the histogram data path, according to some embodiments. Starting with the histogram data path in the bottom graph, each measurement may consist of one or more "shots." A shot may be defined as the time interval during which a pulse train is transmitted from a light source and received by a corresponding light sensor. For example, FIG. 14 illustrates multiple shots, each of which occurs during a shot time interval 1408 (also referred to as a "first time interval"). The first shot in the measurement may occur during time interval 1408a, the second shot in the measurement may occur during time interval 1408b, the third shot in the measurement may occur during time interval 1408c, and so on. Each of the shots in the measurement and the corresponding time interval 1408 may be defined by a shot (or "start") signal 814 in the histogram data path.
[0157] Each of the shot time intervals 1408 may be subdivided into a number of shot time bins 1406 (also referred to as "first time bins"). Each of the shot time intervals 1408 may include the same number of time bins 1406, and each of the time bins may correspond to a register in the SRAM 806 of FIG. 8 of the histogram data path. For example, photon counts received in a first time bin in each of the shot time intervals 1408 may be tallied in the same first register in the SRAM, photon counts received in a second time bin in each of the shot time intervals 1408 may be tallied in the same second register in the SRAM, and so on. To distinguish the registers in the SRAM from the registers in the bank of integrated registers 1210, the registers in the SRAM may be referred to as a number of "first registers." As described above, because each time bin tallies values from multiple shot time intervals 1408, this set of registers in the SRAM may collectively represent a histogram of values received across multiple shots during a measurement. 14 illustrates a non-zero time interval between each of the shot time intervals 1408. Other embodiments may cause the shot time intervals 1408 to occur back-to-back such that there is no delay between the shot time intervals 1408.
[0158] Turning to the integration data path shown in the top graph, instead of using multiple time intervals to define a measurement, the integration data path can use a single integration time interval 1402 (also referred to as the "second time interval") during which photon counts are sequentially accumulated into a bank of integration registers 1202. The time scale of the top graph can be the same as the time scale of the bottom graph. The beginning of the integration time interval 1402 can be triggered by the integration signal 1008 as described above. When this signal is received, the selection signal 1204 can select the eleventh one of the integration registers 1202 and begin accumulating photon counts from the ALU as shown in FIG.
[0159] When the select signal changes / increments, the twenty-first of the integration registers 1202 may begin receiving photon counts from the ALU. This process may continue until each of the integration registers 1202 is selected. Thus, each of the integration registers 1202 may be associated with a corresponding time bin 1404 that subdivides the integration time interval 1402. These may also be referred to as "second time bins" to distinguish them from the first time bins in each of the shot time intervals of the histogram data path. For example, the first time bin 1404a in the integration data path may correspond to the first integration register in the bank of integration registers 1210. The first time bin 1404a may be much larger than the time bin 1406 in the histogram data path. Additionally, some embodiments may allow each of the integration time bins 1404 to be of different lengths. This may be the case when the selection signal 1204 is not controlled by a timer, but instead is generated by an external stimulus such as a position sensor.
[0160] The integration time bins 1404 do not have to be aligned in time with any of the time bins 1406 or shot time intervals 1408 from the histogram data path. For example, a time bin 1404a can start or end in the middle of a shot time interval 1408a, can include multiple shot time intervals 1408, and / or can tally photon counts that are outside of any of the shot time intervals 1408. In some embodiments, the time bins 1404 can be synchronized with the shot time intervals 1408 such that a certain number of shot time intervals 1408 fall within each of the integration time bins 1404. For example, some embodiments may be timed such that two or more shot time intervals 1408 fall evenly within each of the integration time bins 1404.
[0161] The duration of the integration time interval 1402 also need not align with the shot time interval 1408 that constitutes a single measurement of the optical measurement system. For example, the integration time interval 1402 may include shots from multiple measurements. The integration time interval 1402 may also include fewer shot time intervals 1408 than during a single measurement. In some embodiments, multiple integration time intervals 1402 may fit within a single shot time interval and / or a single measurement. Some integration time intervals 1402 may begin before a measurement and extend beyond the measurement. Thus, the integration time intervals 1402 may tally up photon counts in the integration register 1202 between shots, between measurements, and / or during other times when a pulse train is not being transmitted from the light source.
[0162] VII. Selection of Integrated Resistors As mentioned above, the select signal 1204 may be used to go through the integrated register 1202. The select signal 1204 may be generated from a variety of different sources, including a timer with a defined interval, as well as an external stimulus that does not have to adhere to precise timing requirements. The select signal 1204 may be generated on the same integrated circuit chip as the integrated data path, or may alternatively be generated off-chip.
[0163] A. On-chip signals FIG. 15 illustrates an integrated data path that generates the select signal 1204 on-chip, according to some embodiments. The select signal 1204 may be generated by a timer 1502. The timer 1502 may be configured to generate the select signal 1204 at regular intervals such that each of the integration time bins (i.e., second time bins) is of uniform length. The timer may define the length of each integration interval (i.e., second time interval) by subdividing the integration interval into integration time bins that add to the desired length of the integration interval. For example, if the integration data path is being used to generate a total photon count for a pixel in an ambient image of the surrounding environment, the timer 1502 may be configured to generate time bins that add to the length of time corresponding to that pixel. The time associated with each pixel may correspond to the speed at which the optical measurement system physically rotates to scan the surrounding environment. The timer 1502 may then subdivide the time interval associated with each pixel by the number of integration registers 1202 in the bank of integration registers 1210 to generate the final period of the select signal 1204.
[0164] In some embodiments, the timer 1502 may be configured such that it corresponds to the length of time associated with each optical measurement. For example, if each measurement is configured to take approximately 1 μs, the timer may be configured to increment the select signal 1204 by dividing the time of each measurement by the number of integration registers 1202 in the bank of integration registers 1210. This configuration may be used when integration intervals need to match corresponding measurements. For example, if integration values are used to estimate background noise levels and set measurement thresholds, integration intervals may be aligned in time to include the measurements.
[0165] The timer 1502 may also be used as a proxy for measuring the position of the optical measurement system. Since the speed at which the optical measurement system can rotate around its central axis may be known, the timer 1502 may be configured to provide a predetermined spatial resolution for the ambient light measurement. For example, if the optical measurement system rotates 360° around its central axis every 100 ms and the system needs to generate 1000 pixels, the timer 1502 may be configured to increment the select signal 1204 every 100 μs divided by the number of integrated registers 1202 in the integrated register bank 1210, or every 25 μs. Thus, the timer may be used to generate the on-chip select signal 1204 based on the approximate angular position of the optical measurement system without the need for an off-chip external signal from an angular encoder.
[0166] B. Off-chip signals FIG. 16 illustrates an integrated data path receiving a select signal 1204 from an off-chip source, according to some embodiments. If generated off-chip, the integrated circuit chip 1504 can receive an input from an external source, which can be converted into a select signal 1204 for the integrated data path. For example, the input can be received on a pin as an interrupt for a control processor that interfaces with the integrated circuit 1504. The control processor can then generate a periodic signal that serves as the select signal 1204 to increment the integration register 1202. Thus, the external signal can define the length of the integration time interval, and the control processor can use the external signal to generate the select signal 1204, which in turn defines the length of the integration time bin for each of the integration registers 1202, as described above.
[0167] In some embodiments, the external signal may be generated by an angle encoder 1602. Where the integration time interval is to be based on the angular position of the optical measurement system as it rotates about its central axis, the angle encoder 1602 may be used to determine the position of the optical measurement system during rotation. For example, the angle encoder 1602 may be included as described in U.S. Patent Application No. 15 / 980,509, filed May 15, 2018, entitled "AUGMENTING PANORAMIC LIDAR RESULTS WITH COLOR," and incorporated herein by reference. The angle encoder 1602 may provide a readout of 0.36° of rotation (or 1000° of a full rotation) that may be sent to an integration data path. 分 Alternatively, the angle encoder 1602 can send a signal representing the value of the angular rotation to a control processor, and the control processor can generate the selection signal 1204 based on the received rotation angle.
[0168] Although an angle encoder 1602 is used in FIG. 16 as an example, other embodiments may use any other external source to generate the selection signal 1204. For example, some systems may change the speed of the integration cycle so that the integration interval is decreased in low light conditions. This may result in a higher resolution ambient light image. Some embodiments may use the speed of the vehicle in which the optical measurement system operates to affect the frequency of the selection signal 1204. For example, the period of the selection signal 1204 may be decreased as the vehicle moves faster, while the period may be increased when the vehicle is waiting at a traffic light. Other on-board systems may also provide inputs to the optical measurement system to affect the generation of the selection signal 1204, including safety systems, collision detection systems, received weather forecasts, and other systems that measure and / or respond to the surrounding environment.
[0169] C. Improved spatial resolution One of the effects of subdividing each integration interval into several integration time bins, each captured in a corresponding integration register, is to increase the spatial resolution of the ambient light measurement of the integration process. FIG. 17 illustrates ambient light measurement using multiple integration registers for an electric vehicle 1703, according to some embodiments. In this example, an optical measurement system 1701 may be mounted on top of the electric vehicle 1703. The optical measurement system 1701 may be configured to rotate around its central axis many times per second to scan the surrounding area and generate both a depth image and an ambient light image of the surrounding environment. Each integration interval may correspond to one pixel of the ambient light image.
[0170] In some embodiments, the depth image measurements captured by the histogram datapath may be temporally aligned with the ambient light measurements made by the integration datapath as described above. Specifically, a single depth measurement may correspond to a single integration cycle, such that the ambient light measurements may be used to estimate background noise, remove background noise from the depth image, calculate thresholds for detecting reflected pulses, etc. Thus, when using only a single integration register, the spatial resolution of the ambient light image may be defined by the length of the measurements made by the histogram datapath, which may be defined either in terms of the length of time that occurs as the system scans to capture the histogram, or the physical length of the field of view.
[0171] However, when multiple integration registers are used, the spatial resolution of the ambient light image from the integration data path can be increased based on the number of integration registers used. In the example of FIG. 17, the bank of integration registers 1210 includes four integration registers 1202. An increment of angular rotation 1702 corresponding to a measurement (and thus an integration cycle in this example) can be subdivided into four angular increments, each of which tallies the photon counts received in a corresponding one of the integration registers 1202a-1202d. This increases the spatial resolution of the ambient light image by a factor of four in the scan direction. As described above, the selection signal 1204 can be generated by an angular encoder on the optical measurement system 1701, the selection signal 1204 may be generated by a timer used as a proxy for position based on a known rotation rate, or the selection signal 1204 may be generated by any other position sensing device.
[0172] VIII. METHODS FOR USING MULTIPLE INTEGRATED RESISTORS 18 illustrates a method for using an optical measurement system. At block 1802, the method may include transmitting one or more pulse trains over one or more first time intervals as part of the optical measurement. Each of the first time intervals may correspond to a shot time interval as described above, and each of the first time intervals may correspond to one of the transmitted pulse trains. These pulse trains may be transmitted by a light source of the optical measurement system, and each may include one or more individual pulses.
[0173] At block 1804, the method may also include detecting photons from the one or more pulse trains and photons from the ambient light. The pulse trains and ambient light may be detected using multiple photodetectors on the light sensor. The photodetectors may be implemented using single photon avalanche diodes (SPADs). The photodetectors may generate a signal when a photon is received, and the thresholding circuit may generate a positive signal to indicate that a photon has been received. The ALU may count these positive signals during an ALU clock cycle to generate a photon count during the ALU clock cycle.
[0174] At block 1806, the method may additionally include accumulating photon counts from the one or more photodetectors during one or more first time intervals. These photon counts may be accumulated in a plurality of first registers. The plurality of first registers may include registers in the SRAM of the histogram data path as described above. Each of the first time intervals may be subdivided into a plurality of first time bins for the histogram. A corresponding time bin in each of the one or more first time intervals may be accumulated in a single register in the plurality of first registers. Each of the first time intervals may represent a shot, and together, the one or more first time intervals may represent a measurement of the optical measurement system. Each of the first time intervals may be defined by a start signal or shot signal that resets a memory representing the histogram to the first register in the histogram.
[0175] At block 1808, the method may additionally include accumulating the photon counts over a second time interval that overlaps at least a portion of the one or more first time intervals. These photon counts may be accumulated in a plurality of second registers. The second registers may be implemented using a plurality of accumulation registers as described above. The second time interval may correspond to the accumulation time interval as described above, and the second time interval may include at least a portion of one or more of the first time intervals of the histogram data path. The second time interval may also be subdivided into second time bins. Each of the second time bins may be defined by a selection signal, and each of the second time bins may correspond to an individual accumulation register in the plurality of second registers. Some embodiments may also include an arithmetic logic circuit, such as an ALU, that generates a tabulated sum of the values stored in the second registers that represents the total photon counts received during the accumulation interval. This total photon count may then be used to estimate background noise and generate a threshold for detecting the reflected pulse.
[0176] IX. Histogram Register Saturation The width of the histogram datapath described above may not be overly large, since the contents of the histogram memory may typically be reset at the beginning of each measurement. For example, some embodiments may use a 12-bit SRAM, with each 12-bit register capable of storing an unsigned value in the range of 0 to 4095. Under normal circumstances, this provides enough memory that the photon counts within a shot from each measurement may be tallied in the histogram registers without exceeding the 12-bit range. Other datapath components in the histogram datapath may be at least as wide as the registers in the histogram memory.
[0177] Under normal operating conditions, the registers in the histogram memory and / or other data path components may be large enough that saturation does not generally occur. However, in certain operating conditions, there may be an excessive amount of ambient light such that saturation may occur. Alternatively or additionally, highly reflective and / or retroreflective surfaces may be encountered that reflect a large amount of light emitted from the optical measurement system back to the corresponding light sensor. A retroreflective surface is a surface that reflects light-containing radiation back to the light source with a minimal amount of scattering. Retroreflective surfaces may be commonly encountered in driving situations where the optical measurement system is mounted on a vehicle. These retroreflective surfaces may include road signs, vehicle reflectors, safety clothing, safety barriers, and other objects with reflective surfaces. The optical measurement system of the vehicle may also encounter a large amount of ambient light in the form of vehicle headlights, construction lights, high beam lights, street lights, and / or other artificial light sources that illuminate the road. The optical measurement system of the vehicle may also receive a large amount of light from natural sources such as the sun. 9 When an optical measurement system encounters any of these light sources and / or reflective surfaces, saturation of one or more of the histogram registers can occur.
[0178] As used herein, the term "saturation" may describe a situation where photon counts are received from a light sensor and adding the received photon counts to an existing value stored in a histogram register for that time bin results in a value that exceeds the value that can be represented in at least one component in the histogram data path. For example, some embodiments may use an unsigned 12-bit data path that can represent values ranging from 0 to 4095. This data path may saturate when the received photon counts added to the existing value in the time bin register exceed 4095. For example, if a register stores a value of 3825 from a photon count of a previous shot and a current shot attempts to add an additional 425 photon counts to the register for that time bin, the data path will saturate attempting to aggregate and / or store a value greater than 4095. The behavior of the data path in a saturated state depends on the implementation of the ALUs, registers, and other data path components. Some components may maintain a maximum value (e.g., 4095) when attempting to aggregate or store a value greater than the maximum value. Some components may reset the value to 0. Some components may restart the count at 0 and add any amount beyond the maximum to 0 (e.g., 3825 + 425 = 155). Regardless of the component's operation, any actual value beyond the register's maximum will be lost when the data path saturates.
[0179] In some embodiments, the registers in the histogram memory may form a component separate from the ALU, which accumulates the photon counts of the current shot and adds that value to the existing value in the register. As shown in FIG. 8, the ALU 804 may take a current value 820 from the histogram memory 806 and add that value to the photon counts in the current shot. Thus, some embodiments may include the ALU 804 as a saturation limiting component. For example, a 12-bit ALU may generate a "carry" output or other indication that the result of the current "add" operation exceeds the 12-bit capacity of the output of the ALU 804. In general, the output of the ALU 804 will start counting over as described above, and the remaining value (counting up from zero) will be stored in the histogram memory 806 as the current value 820. Some ALUs with signed outputs will carry over and start counting up from the lowest negative number represented in the ALU. Some embodiments may use an accumulator memory that combines the ALU 804 and histogram memory, such that the memory interface of the histogram memory 806 performs the accumulation function of the ALU 804. Regardless of the particular implementation, either the histogram memory 806, the ALU 804, the memory interface of the histogram memory 806, or other datapath components may be limited to a certain number of bits, and it is possible that the accumulation operation in which the photon count is added to the current value 820 exceeds the width of that datapath component. If this occurs in any component, it may be considered saturation.
[0180] FIG. 19 illustrates the contents of the histogram memory when saturation occurs, according to some embodiments. Each of the vertical bars in the graph represents a single time bin stored in a register in the histogram memory. The horizontal divisions of each bar represent the values accumulated in the register during each shot. In this example, eight shots occurred in the optical measurement. As described above, the photon counts from each shot may be added to the existing value of the photon counts accumulated in the register from the previous shot. Each register representing a time bin may be implemented using an N-bit register, where N is an integer value such as 8, 10, 12, 16, 24, 32, and 64. Typically, the register does not need to store any indication of which photon counts were received during a particular shot. Thus, the vertical divisions of each bar do not need to be represented by values stored in the register itself, but rather are included for illustrative purposes to show how the photon counts may accumulate over time in the registers in the histogram memory.
[0181] The horizontal lines in FIG. 19 represent saturation limits 1902 that may be applied to each of the registers in the histogram memory. As discussed above, the saturation limit 1902 may be a limit derived from the bit width of any data path component in the histogram data path. The saturation limit 1902 may represent the maximum unsigned value that may be stored by each individual register. For example, the saturation limit 1902 may be a value of 4095 for a 12-bit register. The saturation limit 1902 may also represent the maximum width of the output of the ALU in the histogram data path, such that after the saturation limit 1902 is exceeded, the ALU generates a carry output and / or begins counting up from the lower ALU limit. Due to high levels of ambient light and / or highly reflective surfaces, the histogram in FIG. 19 includes peaks that exceed the saturation limit 1902 such that multiple time bins store saturated values rather than actual photon counts.
[0182] Regardless of the particular data path component that saturates, such saturation may occur when a new photon count is received by the ALU and an attempt is made to add the new photon count to an existing value. The new photon count may be added to a particular time bin's register in the histogram memory multiple times during each shot. The ALU's clock signal may be switched periodically during the time bin to capture positive indications from individual photodetectors in the light sensor when a photon arrives. Thus, saturation may occur at any point during the time bin because the accumulation operation is periodically adding new photon counts during the time bin, rather than adding the accumulated photon count at the end of the time bin. Some embodiments may accumulate all of the photon counts during the time bin and then attempt to add the number of total photon counts during the time bin to the corresponding register in the histogram memory. In either case, saturation may occur during the accumulation operation by the ALU and / or when the updated total photon count is sent to the histogram memory for storage.
[0183] FIG. 20 illustrates the effect that saturation may have on the overall shape of a received photon count histogram, according to some embodiments. As described above in this disclosure, the width, height, and shape of the received pulse may be processed by a matched filter to identify the light pulse emitted by the optical measurement system's light source, reflected by the surrounding environment, and received by the light sensor. The matched filter may distinguish between the reflected pulse and the incident or background light received from the surrounding environment. The shape of the pulse is also important in determining the exact location of the pulse. The location of the pulse (i.e., the time bin in which the pulse peak is located) may be used to determine the distance between the optical measurement system and a reflective object in the surrounding environment.
[0184] FIG. 20 shows the contents of registers in the histogram memory when saturation of FIG. 19 occurs. Instead of accurately representing the magnitude of the photon counts received in a pulse time bin 2002, the registers in the histogram memory may saturate at their maximum value. For example, a 12-bit unsigned register may saturate at a value of 4095. Because individual registers typically only store a value that represents the total photon count in a measurement, they do not distinguish when individual photons arrived during a measurement in a particular time bin. Thus, the histogram data path does not know the true magnitude of a saturated register. For example, there is no way to determine whether a register saturates with only a few photon counts and is therefore fairly accurate, or whether a register saturates with many photon counts midway through the measurement and is therefore fairly inaccurate. Not only does the saturation of the register affect the accuracy with which the individual registers represent the total photon count, but it also fails to store any information that indicates when saturation occurs in the measurement.
[0185] In addition to the inaccuracies of the individual registers, the saturation shown in FIG. 20 also changes the shape of the received light pulse. During the remaining time bins in the measurement, the registers are not saturated and therefore continue to accurately accumulate photon counts until the measurement is terminated. Because the photon counts in the pulse time bin 2002 are saturated, the relative distance between the recorded top of the pulse and the background noise is reduced. This reduces the signal-to-noise ratio (SNR) and makes the measurement less reliable since the peak is no longer distinguishable from the background noise. Saturation also has the effect of "flattening" the pulse. Instead of a clearly defined pulse peak position that can be identified in a single time bin, the pulse time bins 2002 in FIG. 20 are indistinguishable from one another after saturation. The peak of the pulse can be anywhere within the pulse time bin 2002. This uncertainty reduces the accuracy with which the peak can be found and, therefore, the accuracy with which the distance to a reflecting object in the surrounding environment can be calculated. Changing the shape of the reflected pulse within the pulse time bin 2002 also affects the accuracy with which the matched filter can identify the pulse.
[0186] A. Counter-Based Saturation Scaling To solve these and other technical problems associated with saturation in the histogram data path, the data path may include a counter that counts the number of shots and / or exposures during a measurement. As described above, a "shot" begins with a start / shot signal and involves recording photon counts in multiple time bins in the histogram memory. A shot is dropped into one layer of the histogram that is incrementally accumulated over the course of a multi-shot measurement. Each tally of photon counts in a time bin in a shot may be referred to as an "exposure," a shot may include multiple exposures, and the ALU and histogram memory are clocked to tally and store updated photon counts in a single time bin. When saturation occurs and is detected, tallying and storing additional photon counts during the measurement of all registers in the histogram memory for that photosensor may be disabled. A counter may store the number of shots and / or exposures that occurred before saturation, and this number, along with the total number of shots and / or exposures in the measurement throughout the measurement, may be used to scale the incomplete photon counts in the histogram memory. This preserves the overall shape of the reflected pulse and allows its true magnitude to be estimated.
[0187] FIG. 21 shows the contents of the histogram memory from the measurement shown in FIG. 19 when the histogram data path stops accumulating and storing new photon counts because saturation was detected. If a single saturation of a particular photosensor in a single time bin is detected, the accumulation and storage of new photon counts can be disabled for the remainder of the measurement for all registers in all time bins of that photosensor. Disabling a photosensor after saturation does not need to have any effect on other photosensors in the photosensor array. This allows saturation to be detected and addressed individually at each photosensor without affecting the other photosensors. For example, if several photosensors receive a large light pulse that causes saturation, this event can be isolated to only the affected photosensors. Furthermore, the affected photosensors can have their results scaled to be comparable to those of unaffected photosensors, as described below.
[0188] The histogram data path may include an event counter 2002 that counts the number of events that occur between the start of the measurement and when saturation occurs. An "event" may include the number of shots, the number of exposures accumulated by the ALU, and / or any other timing event that occurs periodically during the measurement. In this example, the event counter 2002 may represent the number of shots since the beginning of the measurement, although this is not meant to be limiting and any other event may be used in a similar manner.
[0189] For each event, the event counter 2002 may be incremented. In this example, the event counter 2002 may be incremented at the beginning or end of each shot. For example, a start signal that causes the clock to begin sending pulses to the ALU and histogram memory may also increment the event counter 2002. Each shot after the beginning of the measurement may continue to increment the event counter 2002 until saturation in the histogram data path occurs or the measurement ends. A component that causes or otherwise detects saturation may signal the event counter 2002, causing it to stop incrementing with a subsequent start signal at the beginning of the subsequent shot. Thus, at the end of the measurement, the value of the event counter 2002 may represent the number of shots that occurred at the beginning of the measurement until saturation occurred in the histogram data path.
[0190] As discussed above in connection with Figure 19, each vertical bar in the histogram of Figure 21 represents a cumulative sum of photon counts stored in a register representing a single time bin that is repeatedly dropped across multiple shots in the measurement. Each section within a vertical bar represents the photon counts received in a single shot. Thus, this example shows a total of four shots that were accumulated and stored in the histogram memory before saturation occurred.
[0191] In this example, the register associated with time bin 2102 reaches a saturated state during the fourth shot. As described above, this condition may include saturation at the ALU, saturation in the register of the histogram memory, and / or saturation in any other component of the histogram data path. As a result of saturation, the total photon count during the fourth shot may not be accurately accumulated and / or represented in the associated register. When saturation is detected, the remaining photon count of the current shot may be addressed in various manners. In some embodiments, the current register may be invalidated for the remainder of the shot, and other registers in the histogram memory continue to accumulate photon counts until the end of the current shot. After the end of the current shot, the remaining registers in the histogram memory may then be invalidated. When this occurs, the periodic clock signal that causes the ALU to increment and the histogram memory to update may be turned off. In this example, the complete photon count of each register may be accumulated and stored, except for the portion of the photon count of time bin 2102 that is above the saturation limit 1902.
[0192] Alternatively, some embodiments can have the ALU stop accumulating and immediately stop storing new values in the histogram memory when saturation occurs in any of the histogram registers. A saturation event only needs to occur in a single register in the histogram data path of the light sensor. Instead of stopping accumulation in that single register, all accumulation and storage of new photon counts in the light sensor can be disabled. This can happen immediately when saturation occurs in the middle of a shot, such that photons are not accumulated in any registers in the remaining time bins for the remainder of the measurement. In this example, time bins up to time bin 2104 may contain the complete photon counts of the current shot, time bin 2102 may contain partial photon counts of the current shot, and time bins from time bin 2106 onwards will not contain photon counts from the current shot. This removes the block above time bin 2106 onwards in FIG. 21.
[0193] In some embodiments, an exposure counter may be used in addition to or instead of a shot counter. When saturation occurs within a time bin 2102, the exposure counter may record the number of exposures of the current shot stored in the register of the time bin 2102. The time bins before timing 2104 may contain the complete photon count of the current shot, while the registers from time bin 2106 onwards may count photons up to the number of exposures of the current shot that were successfully performed before the saturation in the time bin 2102. Thus, the time bins from 2106 onwards may accumulate photon counts of a portion of the current shot that corresponds to the percentage of the current shot that was captured within the time bin 2102 before saturation. This portion is represented by a dashed line in each of the time bins after time bin 2106. For example, if an updated time bin 2104 is saturated and only 50% of the photons counted in the current exposure can be represented in the histogram register of the time bin 2104, the photon counts of subsequent histogram registers from time bin 2106 onwards may also be reduced by 50% for the current shot.
[0194] Other embodiments may use different methods to stop accumulating and storing new photon counts when saturation occurs during a shot. Any combination of the methods described above may be used. In particular, each time bin may be addressed independently of other time bins in the measurement. For example, the time bin 2102 where saturation occurs may stop accumulating immediately, while the time bins before time bin 2104 and after time bin 2106 may store full and / or partial photon counts of the current shot or may be disabled entirely after saturation occurs in time bin 2102. These different methods may be used in any combination and within any time bin in various embodiments without limitation.
[0195] Because accumulation and storage of new photon counts may be stopped when saturation occurs, the overall shape of the histogram stored in the histogram memory may approximate the overall shape of a histogram that would have been captured without the saturation limit 1902, as shown in Figure 19. Because the overall shape is preserved, the SNR is not as adversely affected as if accumulation and storage of photon counts were not stopped, as shown in Figure 20. Additionally, preserving the shape of the histogram increases the likelihood that the matched filter will correctly identify the reflected pulses that correspond to the train of pulses emitted from the light source of the optical measurement system.
[0196] The overall shape is preserved, but the magnitudes of the pulses captured by the histogram memory may be significantly smaller than the actual magnitudes of the pulses received by the photosensor throughout the measurement. However, because the event counter 2002 recorded the number of events that occurred before saturation, and the total number of events in the measurement may also be known and / or recorded in a separate counter, the values stored in the event counter 2002 are used to scale (or otherwise normalize) the shape of the histogram so that the magnitudes approximate those that would have been received, accumulated, and stored without the saturation limit 1902.
[0197] FIG. 22 illustrates a process for scaling a saturated histogram memory using an event counter, according to some embodiments. In this example, the number of shots of the measurement continues to be used as the value stored in the event counter 2002, i.e., four shots as described above. The total number of shots may be stored in a separate counter 2210 or may otherwise be a known value in the optical measurement system. For example, the control process providing the start signal may store several start signals that are sent during each measurement. The total number of events may be divided by the value of the event counter 2002 to generate a multiplier 2214 for scaling the histogram 2202 stored in the histogram memory after saturation. In this example, the measurement may include a total of eight shots in the counter 2210 and a value of four shots in the event counter 2002, resulting in a multiplier of two.
[0198] In some embodiments, the multiplier 2214 may pass off-chip with the value of the peak identified in the histogram memory. The auxiliary processor may then scale the values in the histogram 2202 by the multiplier 2214 to obtain the magnitude of the values in the histogram 2202. FIG. 22 illustrates how the values of the histogram 2202 may be scaled by the multiplier 2204 to yield the values shown in the histogram 2204. The processor may include memory registers that are much larger than those used by the on-chip histogram memory, and thus may be able to represent these values after being scaled by the multiplier 2214 accurately without saturating. Note the similarity of the shape of the histogram 2204 after saturation and scaling compared to the shape of the received photon counts of FIG. 19 without considering saturation. Some embodiments may also perform scaling and normalization functions on-chip.
[0199] Properly scaling the values in the histogram memory by the multiplier 2214 also enables the calculation of the background noise level and threshold for peak detection. Without the multiplier 2214, the background noise recorded in the histogram 2202 may not be accurate. However, once scaled by the multiplier 2214, the background noise can be more accurately estimated and used to set a threshold for detecting peaks in the current measurement.
[0200] B. Histogram Saturation Circuit Figure 23 shows a circuit diagram of a histogram datapath with saturation detection, according to some embodiments. Figure 23 is similar in operation to the histogram datapath shown in Figure 8, but the histogram datapath of Figure 23 includes various counters and components to detect datapath saturation. These additional components enable the histogram datapath to detect when saturation occurs along the datapath and, in response to detecting saturation, to allow the ALU 804 and / or histogram memory 806 to stop accumulating / storing additional photon counts and record the number of events (e.g., shots, exposures, etc.) that occurred during the current measurement before saturation occurred.
[0201] The histogram data path may include a shot counter 2304 that increments with each shot in the measurement. When a new measurement begins, the shot counter 2304 may be reset. Each time the shot input 814 triggers the beginning of a new shot, the shot counter 2304 may be incremented. For example, the shot input 1804 may be provided as an input to the shot counter 2304, and the shot counter 2304 may increment an internally stored value in response to a rising edge of the shot input 814. Some embodiments may include more than one counter in the shot counter 2304. For example, the shot counter 2304 may include a first shot counter that counts shots until saturation occurs and a second shot counter that counts the total number of shots in the measurement regardless of saturation. This allows each photosensor to provide both a count of the total number of shot inputs received and a count of the total number of shots before saturation.
[0202] As discussed above, any event may be counted to determine when saturation occurs. In addition to the shot counter 2304, some embodiments may include additional counters that increment with other events in the histogram data path. For example, some embodiments may include an exposure counter 2306 that counts the number of exposures captured by the light sensor in the current measurement. The clock 810 may generate a periodic signal 560 that causes the ALU 804 to tally up the received photon counts along with the current value 820 in the register of the current time bin. This periodic signal 560 may also be provided to the exposure counter 2306 to also increment the value stored in the exposure counter 2306 with each exposure. The exposure counter 2306 may be implemented in a similar design to the shot counter 2304 in that the exposure counter 2306 includes multiple individual counters. For example, a first exposure counter may count the number of exposures until saturation occurs, while a second exposure counter may count the total number of exposures in the current measurement. By counting both values, the exposure counter 2306 may also be used to generate a multiplier for scaling the final value in the histogram memory.
[0203] The histogram data path may also include a saturation detection circuit 2306, which detects saturation along the histogram data path and provides an output signal that causes the ALU 804 and / or histogram memory 806 to stop tallying new photon counts after saturation. Because saturation can occur at several different places in the histogram data path, the saturation detection circuit 2302 may use different implementations in different implementations. For example, if saturation occurs when the ALU 804 overflows, the ALU may provide a carry output indicating that the result of the ALU 804 has exceeded its bit width. This output may be sent to the saturation detection circuit 2302 and may be used as an enable signal for the clock 810 and / or the shot counter 2304. Alternatively, when saturation occurs in the histogram memory 806, the memory interface may send a signal to the saturation detection circuit 2302 that may also be used as an enable signal for the clock 810 and / or the shot counter 2304. Some embodiments may also use a comparator in the saturation detection circuit 2302 to determine when the most significant bits in the histogram data path have a non-zero value, indicating that the current aggregated value may exceed the bit width of the histogram memory 806. The saturation detection circuit 2302 may latch a value indicating the current saturation state of the histogram data path (e.g., a logical "1" when saturation occurs), which can be sent along with the value of the event counter when the histogram memory is processed for peak detection to indicate that saturation has occurred. When a new measurement signal 812 is received, the saturation detection circuit 2302 can reset this state value for a new measurement.
[0204] In response to saturation detection by the saturation detection circuit 2302, the output signal from the saturation detection circuit 2302 can cause the histogram data path of this single photosensor to stop tallying new photon counts. In some embodiments, the output can be used as an enable signal for a clock 810 that generates periodic signals 560, 808 that trigger the ALU 804 and the histogram memory 806. If the saturation detection circuit 2302 disables the clock 810, these periodic signals 560, 808 can no longer be provided to the ALU 804 and the histogram memory 806, which in turn can prevent them from tallying and storing new photon counts for the remainder of the measurement. Note that turning off the clock 810 also stops the exposure counter 2306 from incrementing. Similarly, any other event counters used in the histogram data path can be selectively disabled by the output of the saturation detection circuit 2302.
[0205] The saturation detection circuit 2302 may include one or more delay elements or counters that cause the saturation detection circuit 2302 to insert a delay between the time that saturation occurs and the time that new photon counts should be stopped being tallied and / or stored. As discussed above, various embodiments may cause the histogram datapath to continue functioning normally until the end of the current shot, while other embodiments may cause the histogram datapath to immediately shut down in response to saturation. Depending on the embodiment, the saturation detection circuit 2302 may wait until the next shot signal 814 is received before turning off the clock 810 or otherwise disabling the histogram datapath.
[0206] X. Saturation of integrated resistors As mentioned above, the optical measurement system may include multiple parallel data paths operating simultaneously for each light sensor. The multiple parallel data paths may include both a histogram data path and an integration data path. Although these data paths are not shown together in FIG. 23, it should be understood that they may both be connected to the same light sensor and operate in parallel at the same time.
[0207] The integration datapath can face similar saturation problems as those described above for the histogram datapath. In particular, the integration datapath may have bit-width limitations that can saturate due to high levels of ambient and / or reflected light received by the light sensor during the integration interval. Although the source of the problem is the same, the circuit solutions for detecting and dealing with saturation may include differences from the histogram datapath.
[0208] A. Counter-Based Saturation Scaling As detailed above, the integration data path can aggregate photon counts received by the light sensor over a "second time interval," which can include all or some of the time intervals or shots used by the histogram data path. The total photon counts can be stored in one or more individual integration registers and can be used to estimate background noise levels, set peak detection thresholds, remove background noise from detected peaks, and / or generate an ambient light image of the surrounding environment.
[0209] FIG. 24 illustrates a timeline of photon counts 2406 received during measurement of an integrated data path, according to some embodiments. Instead of breaking down the photon counts into shots, the integrated data path photon counts may be received as a continuous stream of photons that are tallied by an ALU in the integrated data path. The integrated data path time intervals may overlap and / or encompass shot intervals from the histogram data path, represented by intervals 2402 in FIG. 24. Thus, photon counts may be continually tallied by the integrated data path before, during, between, and / or after shots that occur simultaneously in the histogram data path.
[0210] Because the integration data path continuously tallies the photon counts, the sum of the photon counts represented in one or more integration registers can be significantly higher than any of the photon counts represented in the registers of the histogram memory in the histogram data path. FIG. 25 illustrates how photon counts can be continuously tallied in one or more integration registers during a measurement according to some embodiments. In this example, incremental photon counts received over time as shown in FIG. 24 are continuously added to the value of the integration register in FIG. 25. Each vertical bar represents the total tallied photon counts represented by the integration register as time passes during the integration interval. The dark portion of each vertical bar represents the photon counts added during the current tally operation from the ALU in the integration data path.
[0211] Similar to the situation described above for the histogram datapath, the integration datapath may include saturation limits 2502 that may be imposed by any of the components in the integration datapath. For example, the ALU of the integration datapath may include the maximum bit width of any output result. Although the integration registers may be larger than the registers typically used by the histogram memory (e.g., 64-bit, etc.), the integration registers may still have saturation limits that define the maximum photon counts that may be stored in the integration registers. Although not drawn to scale, the saturation limits 2502 indicate that continued tallying of photon counts into the integration registers may cause saturation in some parts of the integration datapath. When saturation occurs in the integration datapath, the integration registers may face similar problems to those encountered in the histogram datapath. For example, the total photon counts represented by the integration registers may become inaccurate, making it difficult to accurately estimate the background noise level or generate an ambient image of the surrounding environment for that particular pixel.
[0212] FIG. 26 illustrates how the accumulation of photon counts into the accumulation register can be stopped when saturation occurs, according to some embodiments. Saturation detection circuitry can also be implemented in the accumulation data path to allow the accumulation data path to stop adding new values to the accumulation register when saturation occurs, and instead maintain the current value throughout the remaining accumulation interval. The value of the accumulation register can be held if one or more components in the accumulation data path reach a saturation limit 2502. As described above for the histogram data path, an event counter can count the number of events that occur from the beginning of the accumulation interval until saturation occurs. In this example, the events being counted can include an exposure, which causes the accumulation ALU to accumulate new photon counts from the light sensor and update the value in the accumulation register. The total number of exposures 2602 can be divided by the exposure count 2604 to calculate a multiplier 2608, which can be applied to the value stored in the accumulation register to generate the total photon count 2610 for the accumulation interval.
[0213] Although the total photon count stored in the integration register may be inaccurate over the complete integration interval due to saturation, the scaled total photon count may be an accurate estimate of the total number of photons received by the photosensor during the integration interval. The scaled total photon count may therefore be used to estimate background noise levels, set detection thresholds, remove background noise from detected peaks, and / or generate an ambient image of the surrounding environment, as described in more detail below.
[0214] B. Integrated saturation circuit 27 shows an integration datapath with saturation protection according to some embodiments. The integration datapath may include one or more event counters, such as an exposure counter 2704 that increments with each exposure captured by the ALU 1006. The exposure counter may be incremented using a periodic signal 1012 generated by a clock 1003 that runs continuously during the integration interval. This allows the exposure counter 2704 to count each exposure between when the integration interval begins with the integration signal 1008 and when saturation occurs.
[0215] The integration data path may also include a saturation detection circuit 2702 that operates in a manner similar to the saturation detection circuit 2302 of FIG. 23 for the histogram data path. For example, the saturation detection circuit 2702 may receive a carry or overflow indication from the ALU 1006. The saturation detection circuit 2702 may also receive a signal from the integration register 1004 indicating that the value to be stored in the integration register 1004 is larger than the allowed bit width. The saturation detection circuit 2702 may also include one or more comparators that compare values at various points in the integration data path to saturation limits. The saturation detection circuit 2702 may use any of these inputs to generate an output signal to the clock 1003. This signal (e.g., a logic "0") may act as an disable signal for the clock 1003, causing the clock 1003 to stop generating the periodic signals 1012, 1011. When the periodic signals 1012, 1011 are disabled, the ALU 1006 and integration register 1004 may stop tallying and storing new photon counts for the remainder of the integration interval. Additionally, the exposure counter 2704 may stop incrementing, thereby storing the number of exposures that occurred before saturation.
[0216] XI. Methods for dealing with memory saturation 28 shows a flowchart of a method for using an optical measurement system to address saturation, according to some embodiments. At block 2802, the method may include transmitting one or more pulse trains over one or more first time intervals as part of the optical measurement. Each of the first time intervals may correspond to a shot time interval as described above, and each of the first time intervals may correspond to one of the transmitted pulse trains. These pulse trains may be transmitted by a light source of the optical measurement system, and each may include one or more individual pulses.
[0217] At block 2804, the method may also include detecting photons and photons from the one or more pulse trains. Photons from ambient light may also be detected. The pulse trains and ambient light may be detected using multiple photodetectors on the light sensor. The photodetectors may be implemented using single photon avalanche diodes (SPADs). The photodetectors may generate a signal when a photon is received, and the thresholding circuit may generate a positive signal to indicate that a photon has been received. The ALU may count these positive signals during an ALU clock cycle to generate a photon count during the ALU clock cycle.
[0218] At block 2806, the method may additionally include using the photon counts from the one or more photodetectors to populate a plurality of first registers in the data path. The plurality of first registers may include registers in an SRAM of a histogram data path as described above. Each of the first time intervals may be subdivided into a plurality of first time bins for the histogram. Corresponding time bins in each of the one or more first time intervals may be accumulated in a single register in the plurality of first registers. Each of the first time intervals may represent a shot, and together, the one or more first time intervals may represent a measurement of the optical measurement system. Each of the first time intervals may be defined by a start signal or a shot signal that resets a memory representing the histogram to the first register in the histogram. The photon counts may be tallied by an arithmetic logic circuit in the data path, such as an ALU as described above.
[0219] At block 2808, the method may further include determining when saturation occurs in the data path. Saturation may be determined by receiving a signal indicative of an overflow or carry operation from the arithmetic logic circuit. Saturation may also be determined by receiving an indication from the plurality of first registers that a value to be stored in the plurality of first registers is too large. Saturation may also be determined by comparing any value at any point in the data path to a predetermined saturation limit.
[0220] At block 2810, the method may also include causing the data path to stop populating the first plurality of registers during one or more first time intervals that occur after saturation occurs. The data path may include a saturation detection circuit that generates a disable signal for a clock circuit that, when disabled, causes the arithmetic logic circuit and / or the first plurality of registers to stop accumulating photon counts. The method may cause the data path to stop populating the first plurality of registers immediately upon detecting saturation, or may alternatively wait until the end of the current time interval (e.g., the end of the current shot) to stop populating the registers.
[0221] In some embodiments, the method may additionally include counting the number of events that occur before causing the data path to stop populating the first plurality of registers. The data path may include an event counter, such as a shot counter and / or an exposure counter that is incremented for each shot and / or exposure. The value of the event counter may then be used along with the total number of events being measured to scale the histogram of the first plurality of registers as described above.
[0222] XII. Multiple Peaks in a Histogram Examples of the present disclosure have often used a single peak transmitted from a light source and detected by a light sensor as an example of how to use optical measurements to determine the distance between an optical measurement system and an object in the surrounding environment. However, these examples are not meant to be limiting. In addition to the intended peak caused by the pulse train reflecting off the object of interest, the histogram memory may also include other peaks resulting from more immediate unintended reflections of the pulse train, and peaks that do not necessarily result from the pulse train. For example, the additional peaks may correspond to light sources, reflections, or other ambient light phenomena in the surrounding environment. An initial peak may result from reflections of the pulse train off of the housing of the optical measurement system or an unexpected obstacle in front of the LIDAR system. In these cases, rather than just detecting a single peak, the optical measurement system may detect multiple peaks that may result in being present in the histogram memory. Each of these peaks can then be passed to a processor for further analysis to determine which peaks correspond to the reflected pulse train of interest and which peaks result from other sources or unintended objects.
[0223] A. Excluding the initial peak of multiple peaks in a histogram The embodiments described herein may use various methods to accurately detect multiple peaks in the histogram memory. These methods may include detecting and masking an initial peak resulting from photons from a light source reflected off the housing of the optical measurement system. This can be used to exclude the initial peak from the saturation detection described above and from the analysis of light reflected from the ambient environment outside the optical measurement system. After masking the initial peak, subsequent peaks can be recursively or iteratively detected by a peak detection circuit configured to identify a maximum peak in the histogram memory. Once the maximum peak is identified, it can be masked to be excluded from any subsequent runs of the peak detection circuit, allowing new peaks to be identified with each run.
[0224] FIG. 29 illustrates an initial peak that may be identified and masked according to some embodiments. The graph in FIG. 29 illustrates values stored in a register of a histogram memory over time. Each vertical bar of the histogram corresponds to a register or time bin of the histogram memory, as detailed above. For clarity, continuous curves are superimposed on the vertical bars in FIG. 29 to illustrate the general shape of the histogram, but it should be understood that the continuous curves in FIG. 29 do not actually need to be stored as separate values by the histogram data path. In addition, FIG. 29 illustrates only an initial portion of the histogram memory. Subsequent contents of the histogram memory may continue from the right side of the graph in FIG. 29.
[0225] As shown in FIG. 29, the initial portion of the histogram memory may include an initial peak 2904 resulting from the emission of photons from a light source on the optical measurement system. As described above, the light source of the optical measurement system may emit photons that are reflected from the surrounding environment and received by the light sensor. When the photons are first emitted, at least a portion of those photons may be immediately detected by the light sensor after being reflected from the housing of the optical measurement system without being reflected from the surrounding environment outside the optical measurement system. In some cases, the initial peak may be caused by an object in close proximity to the light sensor that interferes with the normal emission, reflection, and reception of photons in the surrounding environment. For example, a plastic bag or other object may be mistakenly attached to the optical measurement system, causing a large portion of the light emitted by the light source to immediately reflect back onto the light sensor. Each of these situations may produce an initial peak 2906 that is detected at the beginning of the shot and stored in the initial portion of the histogram memory. However, this initial object is not the desired object that should ultimately be detected.
[0226] Due to the close proximity of this initial reflection (e.g., from a housing or enclosing object), the intensity of the initial peak 2904 may be very large. As discussed above, some embodiments may detect when saturation occurs in any time bin in the histogram memory. Detecting saturation in one time bin may cause the histogram data path to stop populating the histogram memory for that photosensor in other time bins of subsequent shots. Because the initial pulse 2904 may be very large, receiving the initial pulse in an early portion of the histogram memory may saturate the histogram data path early in the measurement. This saturation may occur early enough in the measurement that a relatively small number of shots are received to detect reflected photons from the surrounding environment.
[0227] To prevent the initial pulse 2904 from saturating the histogram data path, some embodiments may exclude the initial pulse 2904 from saturation detection and / or peak detection. Because the initial peak 2904 may predictably occur in an early portion of the histogram memory, early time bins may be excluded from saturation detection. For example, a mask interval 2906 may be used that excludes a predetermined number of time bins from saturation detection. If saturation occurs within the histogram data path during the mask interval 2906, the histogram data path may ignore the saturation and allow the light sensor to continue collecting and accumulating photon counts in the histogram memory.
[0228] Returning briefly to FIG. 23, the saturation detection circuit 2302 may receive an input from the clock 810 after a predetermined number of clock cycles have elapsed. The signal from the clock 810 may be used as an enable signal for the saturation detection circuit 2302 so that the saturation detection circuit 2302 does not detect saturation during the initial portion of each shot. Some embodiments may alternatively use an internal counter within the saturation detection circuit 2302 that is reset and started by the shot signal 814. The output of the internal counter may be fed to a comparator that compares the internal counter value with a predetermined number of clock cycles during the initial portion of each shot. The saturation detection circuit 2302 may be enabled by the output of the comparator when a predetermined number of clock cycles have elapsed.
[0229] The number of clock cycles excluded by the mask interval 2906 can be set based on the length of each time bin and a predetermined distance from the optical measurement system. For example, some embodiments can exclude initial pulses that are reflected within 2 feet of the optical measurement system. The number of registers in the mask interval 2906 can be determined by dividing the time it takes a photon to travel back and forth within the 2 feet range by the time represented by each time bin. Other embodiments can use different ranges other than 2 feet depending on how and where the optical measurement system is installed. For example, other embodiments can use ranges such as 1 foot, 2 feet, 3 feet, and 5 feet. Some embodiments can also allow the range represented by the mask interval 2906 to be dynamically set / adjusted during operation based on various factors, such as the speed at which the vehicle carrying the optical measurement system is traveling, weather conditions, traffic conditions, and / or any other factors that may cause a large initial peak 2904.
[0230] B. Multiple peak detection In addition to being excluded from saturation detection as described above, the initial peak 2904 may also be excluded when detecting additional peaks received in subsequent time bins of the histogram memory. In practice, a large initial peak 2904 may be followed by multiple peaks representing photons reflected from objects in the surrounding environment. The multiple peaks following the initial peak may be used to determine the distance between the optical measurement system and the reflecting object. Thus, to avoid interfering with the accuracy of these distance measurements, some embodiments may include a peak detection circuit that can exclude previously detected peaks, such as the initial peak 2904.
[0231] 1. Recursive masking of previous peaks 30 illustrates multiple peaks represented in a histogram memory according to some embodiments. The histogram memory may include the initial peak 2904 mentioned above that exceeds the saturation limit 2902 of the histogram data path. In addition, the histogram memory may include multiple subsequent peaks 3002, 3004, 3006, 3008 that represent photon counts resulting from reflections from objects in the surrounding environment. To accurately calculate distance, a peak detection circuit may cycle through the registers of the histogram memory to identify each peak while ruling out previously detected peaks being identified more than once.
[0232] As mentioned above, the raw histogram data may undergo one or more filtering operations before being analyzed to detect peak values. Some embodiments may use a low pass filter on the raw histogram data to eliminate any transient signals, smooth the data, and / or expand the width of any reflected peaks. Some embodiments may also use a matched filter that corresponds to the pulse train emitted by the light source of the optical measurement system. The matched filter may change the shape of the data stored by the histogram memory to produce peaks that are more easily identifiable than the signals in the raw data. A matched filter may also be used to distinguish between reflected pulse transient light and / or ambient background light received by the light sensor.
[0233] The embodiments described herein for detecting multiple pulses and masking initial pulses can be used with any type of data in the histogram memory. For example, these embodiments can be used with unfiltered data to detect peaks in the raw data. These embodiments can also be used with filtered data, such as data that has undergone a low pass filtering operation and data that has been filtered using a matched filter. Filters can be applied to data both before and after peaks have been detected by the peak detection circuitry without affecting its operation. Portions of the histogram memory identified as peaks can be sent to the processor in filtered and / or unfiltered form.
[0234] Some embodiments may use a method of recursive masking to filter out the initial peak 2904 and any peaks previously identified by the peak detection circuit. The peak detection circuit may be configured to cycle through the registers in the histogram memory to identify the maximum value. For example, the peak detection circuit may continually traverse each register in the histogram memory to detect the maximum value stored in the register. Because the value stored in each histogram register represents the accumulated photon count in each of the optical measurement shots, this maximum value may represent the maximum number of photons received during any single time bin.
[0235] Once the maximum is identified, a portion of the histogram memory surrounding the maximum may be identified as a peak. Some embodiments may identify a predetermined number of time bins around the maximum that may be designated as a peak. For example, several time bins may be identified, such as 5 time bins, 9 time bins, 15 time bins, and 17 time bins, to represent the entire peak centered around the maximum. Some embodiments may identify surrounding time bins that have values within a percentage of the maximum. This may result in a variable number of time bins that may be used to represent the peak, depending on the width of the peak. For example, time bins surrounding the maximum may be included in the peak when their values are within 25% of the maximum. The width of the peak may be used to mask the identified peak in later iterations to further identify the peak.
[0236] In FIG. 30, a narrow peak, such as peak 3004, may include six time bins surrounding the maximum, while a wider peak, such as peak 3002, may include twelve time bins surrounding the maximum. Some embodiments may also filter out maxima where the resulting peak is too narrow. For example, a maximum that would result in a peak that is only three time bins wide may be considered a transient peak rather than a reflective peak. These relatively narrow peaks may be filtered out by the peak detection circuitry because they are unlikely to result from photons reflecting at that particular distance from an object in the surrounding environment. Using any of these methods, the peak detection circuitry may identify several time bins to represent a peak, and the values within these time bins may be sent to a processor to calculate the distance to the reflective object.
[0237] Each operation or run by the peak detection circuit may detect the maximum value in the histogram memory. Without modification, each run of the peak detection circuit may identify the same maximum value and return the same peak. Therefore, some embodiments may use a masking circuit coupled to the peak detection circuit to detect multiple peaks as the peak detection circuit passes through the histogram memory multiple times. The masking circuit may use peaks previously detected by the peak detection circuit to cause the peak detection circuit to exclude these peaks from subsequent execution cycles. This allows each run of the peak detection circuit to identify new peaks that were not considered the maximum peak in the previous iteration.
[0238] In FIG. 30, the initial peak 2904 may be a known peak or a previously detected peak. Thus, the masking circuit may provide a mask to the peak detection circuit to exclude time bins within the mask interval 2906. For example, the masking circuit may provide a value to the peak detection circuit that identifies the first 12 (or other number) time bins in the histogram memory as time bins to be excluded from the execution of the peak detection circuit. When the peak detection circuit executes, any maximum value identified within the mask interval 2906 may be excluded from the current execution cycle. For example, the peak detection circuit may skip time bins within the mask interval 2906. Instead of skipping time bins within the mask interval 2906, the peak detection circuit may alternatively ignore any value identified as a maximum value within the mask interval 2906. In the case of the initial peak 2904, the mask interval 2906 may be used by the peak detection circuit during the first execution of the peak detection circuit, such that the initial peak 2904 is not identified as a peak corresponding to photons reflected from an object in the surrounding environment.
[0239] With the initial peak 2904 excluded from the execution of the peak detection circuit, the next largest peak may be identified in the histogram memory. In the example of FIG. 30, peak 3004 may be identified as the peak during the first execution of the peak detection circuit. Peak 3004 may include a maximum value that is greater than any other remaining value in the histogram memory. The peak detection circuit may continue to cycle through the registers until the end of the histogram memory and then determine that the maximum value in the histogram memory corresponds to peak 3004. The peak detection circuit may then determine the peak resulting from the maximum value including, for example, nine time bins surrounding this maximum value to define peak 3004. An indication of these time bins may then be passed to a set of registers that store the identified peak and / or a masking circuit, so that peak 3004 may be excluded from subsequent executions of the peak detection circuit.
[0240] 31 illustrates a previously detected pulse being masked for a subsequent run of the peak detection circuit, according to some embodiments. After identifying a peak 3004 during an initial run of the peak detection circuit (using mask 2906), the masking circuit may generate a mask interval 3102 that identifies time bins associated with the peak 3004. These time bins may be provided in addition to the time bins from the mask interval 2906 associated with the initial peak 2904. During a second run of the peak detection circuit, the maxima identified within the mask interval 2906 and mask interval 3102 may be removed from consideration. Alternatively, any time bins within the mask interval 2906 or mask interval 3102 may be skipped by the peak detection circuit, without the need to examine their values to be considered as maxima.
[0241] During a second execution of the peak detection circuit, the next largest remaining peak may be identified. In the example of Figure 31, peak 3008 may be identified by having the largest valid maximum value remaining in the histogram memory. As discussed above, the time bins surrounding peak 3008 may be identified by the peak detection circuit and stored in a set of registers and / or passed to a masking circuit so that the time bins associated with peak 3008 are excluded from consideration during subsequent executions of the peak detection circuit.
[0242] FIG. 32 illustrates how the masking circuit may continually generate new masks as additional peaks are identified by the peak detection circuit, according to some embodiments. After detecting the peak 3008, the masking circuit may generate a mask interval 3202 that identifies the time bins associated with the peak 3008. The masking circuit may pass the mask interval 3202 to the peak detection circuit so that those time bins are excluded from subsequent executions of the peak detection circuit. For example, during a third execution of the peak detection circuit, the time bins associated with the mask interval 2906, the mask interval 3102, and the mask interval 3202 may be excluded from the search for the maximum value. As more peaks are identified during subsequent executions of the peak detection circuit, the number of time bins that need to be considered by the peak detection circuit decreases. This may increase the speed at which subsequent executions of the peak detection circuit can cycle through the histogram memory, reducing the overall time to detect multiple peaks in a measurement.
[0243] 30-32 show how the peak detection circuit can be implemented as a recursive process where results from previous runs are used to influence each subsequent run. The masking process described above allows the peak detection circuit to be executed any number of times and therefore any number of peaks can be detected in the histogram memory. Some embodiments can detect a predefined number of peaks in each measurement. For example, for a system configured to detect three peaks in each measurement, the peak detection circuit can be executed three times, masking previously detected peaks and detecting new peaks in each run. In FIG. 32, after detecting peak 3004 and peak 3008, the peak detection circuit can be executed three times to detect peak 3006. Upon identifying three peaks in the current measurement, the peak detection circuit can complete the execution cycle for the current measurement.
[0244] Some embodiments need not identify a predetermined number of peaks, but may instead identify a number of peaks that meet a threshold. In general, a "threshold" may include a predetermined number of peaks as described above. In addition, a "threshold" may include a variable number of peaks that meet certain criteria. Some embodiments may identify any peaks that have a maximum value that exceeds a threshold. Some embodiments may identify any peaks that have a maximum value that is within a threshold percentage of the maximum value of the largest peak. For example, once the largest peak is identified, additional peaks whose maximum value is within 50% of the maximum value of the largest peak may be identified. Some embodiments may identify a predetermined number of peaks that are identified within a predefined time interval from an initially detected peak. For example, the peak detection circuit may identify an initial peak, and then identify peaks that occur within 50 time bins of the initial peak. In any of these cases, once the threshold value for identifying a pulse is reached, the peak detection circuit may terminate execution of the current measurement.
[0245] 2. Thresholding the previous peak In the above example, a mask interval is used to exclude time bins from consideration by subsequent runs of the peak detection circuit. However, some embodiments may use alternative methods to exclude previously identified peaks from consideration. For example, instead of identifying specific time bins to be excluded, the masking circuit may adjust a maximum threshold for peaks detected by the peak detection circuit. Using a threshold may provide the advantage that only a single value needs to be stored and / or updated between the masking circuit and the peak detection circuit for subsequent runs.
[0246] Referring back to FIG. 30, the initial peak 2904 may be filtered out by a threshold 3010 rather than (or in addition to) the mask interval 2906. The threshold 3010 may be set at or below the saturation limit 1902. The peak detection circuit may then filter out any peaks having a maximum value that meets or exceeds the threshold 3010. For example, when analyzing the initial peak 2904, the peak detection circuit may determine that at least one of the time bins of the initial peak 2904 meets the saturation limit 1902. The peak action circuit may then identify time bins surrounding any time bins that meet or exceed the threshold 3010 and eliminate those time bins from consideration during the current peak execution cycle. The time bins surrounding time bins that meet or exceed the threshold 3010 may be identified using any of the methods described above for determining the mask interval 2906.
[0247] After setting the threshold 3010 at or near the saturation limit 1902, a first run of the peak detection circuitry can identify the peak 3004 using the maximum value approach described above. Specifically, the time bin of the peak 3004 can contain the maximum value in the histogram memory, and surrounding time bins can be identified to define the peak 3004 in both the processor circuitry and the masking circuitry.
[0248] Referring again to FIG. 31, the threshold 3110 can be set to exclude both the initial peak 2904 and the peak 3004. For example, the threshold 3110 can be set below the maximum value seen in the peak 3004. As described above, if a maximum value is encountered that exceeds the threshold 3010, the peak detection circuit can exclude both the maximum value and any time bins surrounding the maximum value. Since each subsequent peak identified by the peak detection circuit will necessarily be smaller in magnitude than any of the previously identified peaks, the threshold 3110 can be continually moved down to exclude peaks as they are identified. The peak 3008 can be identified by the peak detection circuit as a maximum value that does not meet or exceed the threshold 3110. The corresponding time bins that include the peak 3008 can then be identified to the processor and masking circuitry.
[0249] The threshold 3210 may be set to exclude the last identified peak 3008. The threshold 3210 may also exclude peak 3004 and initial peak 2904 because they were previously identified and therefore have a larger magnitude than peak 3008. This process may continue to be repeated until a threshold number of peaks have been identified. As described above for recursive masking, this threshold may indicate the number of peaks that meet predefined criteria and / or any other type of threshold.
[0250] XIII. Peak Detector Circuit FIG. 33 illustrates a circuit for detecting multiple peaks in a histogram memory, according to some embodiments. This circuit is similar to the histogram data path described above in FIG. 8 and FIG. 10. This circuit may include a peak detection circuit 3306 that may communicate with the memory interface of the histogram memory 806. The peak detection circuit 3306 may operate as described above to cycle through each of the registers in the histogram memory 806 to identify a maximum value and surrounding registers that represent time bins to define each peak. The peak detection circuit 3306 may include one or more comparators to identify a value in the histogram memory 806 as a maximum value, one or more registers that specify masks and / or thresholds to be excluded from consideration, and an addressing unit to request information from the histogram memory 806.
[0251] The circuitry may also include a number of registers 3304 that store the peaks identified by the peak detection circuitry 3306. The peaks may be stored as a series of time bins with associated values read from the histogram memory 806. For example, values from the histogram memory 806 may be copied to the number of registers 3304 to represent the identified peaks in the histogram memory. The number of registers 3304 may also represent the peaks as addresses or memory locations in the histogram memory 806. When sending the identified peaks to the processor for distance calculation, the registers 3304 may read values from the histogram memory 806 and send the values read from the histogram memory 806 to the processor. In addition to storing values and / or references to each time bin in the histogram memory 806, the registers 3304 may also store relative time information indicating the location in time of each of the identified peaks. For example, the registers 3304 may store a relative time bin number (e.g., time bin 45) that can be used to estimate the time of the time bin from the beginning of the shot. For example, if an interpolation filter is used, a fraction of a time bin may also be stored. The multiple registers 3304 may also be referred to herein as "multiple second registers" to distinguish them from the "multiple first registers" in the histogram memory.
[0252] The plurality of registers 3304 may pass the stored peaks to the processor 3308. The processor may correspond to the ranging system controller 250 of FIG. 2. In some embodiments, the processor 3308 may be an off-chip processor. For example, the processor 3308 may be implemented in an integrated circuit chip that is physically separate and distinct from the integrated circuit chip on which the peak detection circuit 3306 is implemented. The processor 3308 may receive each of the peaks stored in the plurality of registers 3304 for each measurement and perform distance and / or timing calculations to determine the distance between the optical measurement system and reflective objects in the surrounding environment. As an example, the processor 3308 may apply an interpolation filter to the histogram portion (or filtered portion) of the stored peaks. In some embodiments, the register 3304 may send an unfiltered version of the data to the processor 3308. For example, the processor 3308 may receive raw data from the histogram memory 806 that has not been low-pass filtered or matched filtered. In other embodiments, filtered data may be passed to the processor 3308 instead.
[0253] The masking circuit 3302 can use the peaks stored in the multiple registers 3304 to cause the peak detection circuit 3306 to exclude already detected peaks from subsequent executions of the peak detection circuit 3306. In some embodiments, the masking circuit 3302 can send a range of time bins including a range of addresses in the histogram memory 806 that can be excluded from execution of the peak detection circuit 3306. In some embodiments, the masking circuit 3302 can send a threshold such that peaks above the threshold can be excluded from execution of the peak detection circuit 3306. In some embodiments, the masking circuit 3302 can be integrated with the peak detection circuit 3306 such that the mask and / or threshold are stored internally with the peak detection circuit 3306. In other embodiments, the masking circuit 3302 and the peak detection circuit 3306 can separate their functions into different areas on an integrated circuit.
[0254] The circuitry may optionally include filters 3310 used to apply one or more filters to the data values stored in the histogram memory 806. These filters may include low pass filters, such as to smooth transient signals, improve signal to noise ratio (SNR), and increase the width of peaks. These filters may also include matched filters configured to identify pulse train patterns emitted from the light source. The optional filters 3310 may be applied before, after, or during the operation of the peak detection circuitry 3306. For example, the peak detection circuitry 3306 may operate on raw histogram data received from the ALU 804. In some embodiments, the peak detection circuitry 3306 may operate on registers in the histogram memory after one or more of the filters 3310 have been applied. Some embodiments may enable the peak detection circuitry 3306 to process the filtered data and then pass unfiltered data corresponding to the filtered peaks to the off-chip processor 3308.
[0255] XIV. Methods for Multi-Peak Detection Methods for iteratively or recursively detecting multiple peaks in a histogram memory may include a high-level process that includes transmitting a pulse train, receiving a reflected signal and an ambient light signal, accumulating photon counts in a histogram memory, and identifying peaks in the histogram. These methods may also include a low-level process that includes running a peak detection circuit multiple times to progressively detect peaks in the histogram memory. This section first describes the low-level process for running the peak detection circuit multiple times. This section then describes the high-level process for completing a measurement using the low-level process.
[0256] 34 shows a flow chart of a method for detecting multiple peaks in a measurement according to some embodiments, which can be performed by the peak detection circuitry described above.
[0257] At block 3402, the method can begin by cycling through the histogram memory to identify the maximum peak. For example, a peak detection circuit can continuously send an address or a range of addresses to the histogram memory to retrieve values stored in the histogram memory. Each value retrieved from the histogram memory can be compared to a maximum value stored to find an overall maximum value in the histogram memory. Then, using the methods described above, the peak detection circuit can define a peak that surrounds the maximum value in the histogram memory, which may include multiple time bins in the histogram memory that surround the time bin with the maximum value.
[0258] At block 3406, the method may optionally determine whether peaks detected in a current run of the peak detection circuit, together with peaks detected in a previous run of the peak detection circuit, meet or exceed a threshold. As discussed above, this threshold may include a predefined number of peaks and / or a variable number of peaks that meet predefined criteria, such as peaks that fall within a predefined time interval, peaks that are within a threshold percentage of the maximum value of the maximum peak, etc. If thresholding is not performed, the method may proceed to block 3410. In some implementations, instead of thresholding, block 3406 may determine whether the number of peaks has reached a maximum.
[0259] At block 3408, if the detected peak meets or exceeds the threshold, the method may continue and send the stored peak to a processor for distance and / or timing calculations.
[0260] At block 3410, if the number of detected peaks does not yet meet or exceed the threshold, the method may continue by storing the maximum peak from the current run of the peak detection circuit along with any peaks detected from a previous run of the peak detection circuit.
[0261] At block 3412, the method may include generating a mask and / or threshold to exclude each of the stored peaks from subsequent executions of the peak detection circuit. As described above, the mask and / or threshold may cause the peak detection circuit to ignore maximum values that fall within a time bin that belongs to a previously identified peak. The mask and / or threshold may also cause the peak detection circuit to ignore maximum values that meet or exceed the threshold. The method may then continue at block 3402 to cycle through the histogram memory again to identify another maximum peak that is outside of the previously identified maximum peak.
[0262] 35 illustrates a method for using an optical measurement system to detect multiple peaks, according to some embodiments. At block 3502, the method may include transmitting one or more pulse trains over one or more first time intervals as part of the optical measurement. Each of the first time intervals may correspond to a shot time interval as described above, and each of the first time intervals may correspond to one of the transmitted pulse trains. These pulse trains may be transmitted by a light source of the optical measurement system, and each may include one or more individual pulses.
[0263] At block 3504, the method may also include detecting photons and photons from the one or more pulse trains. Photons from ambient light may also be detected. The pulse trains and ambient light may be detected using multiple photodetectors on the light sensor. The photodetectors may be implemented using single photon avalanche diodes (SPADs). The photodetectors may generate a signal when a photon is received, and the thresholding circuit may generate a positive signal to indicate that a photon has been received. The ALU may count these positive signals during an ALU clock cycle to generate a photon count during the ALU clock cycle.
[0264] At block 3506, the method may additionally include accumulating the photon counts from the photodetector in a register to represent a histogram of the photon counts in a plurality of first registers. The plurality of first registers may include registers in an SRAM of a histogram data path as described above. Each of the first time intervals may be subdivided into a plurality of first time bins for the histogram. A corresponding time bin in each of the one or more first time intervals may be accumulated in a single register in the plurality of first registers. Each of the first time intervals may represent a shot, and together, the one or more first time intervals may represent a measurement of the optical measurement system. Each of the first time intervals may be defined by a start signal or a shot signal that resets a memory representing the histogram to the first register in the histogram. The photon counts may be tallied by an arithmetic logic circuit in the data path, such as an ALU as described above.
[0265] At block 3508, the method may further include identifying a plurality of peaks in the histogram represented by the plurality of first registers through multiple executions of the peak detection circuit. Each execution of the peak detection circuit may identify a maximum peak of the histogram. As described above, the peak detection circuit may traverse time bins in the histogram memory to identify a maximum value and then identify a plurality of time bins representing the peak having the maximum value. Additionally, a peak identified as a maximum peak during a previous execution of the peak detection circuit may be excluded from being identified as a maximum peak during a subsequent execution of the peak detection circuit. These previously identified peaks may be excluded using a time bin mask and / or a threshold, as detailed above.
[0266] XV. Threshold calculation using integrated registers Some of the above-mentioned embodiments describe systems and methods for recursively or iteratively detecting one or more peaks in a measurement. These recursive or iterative methods may be useful for identifying peaks without additional information about the surrounding environment in which the measurement is performed. In particular, information about ambient light levels, background noise, reflected light intensity, and the like is not required. Instead, these methods use the iterative or recursive circuitry described above to successively identify the largest remaining unidentified peaks in the measurement until a criterion is met, such as identifying a predetermined number of peaks in the measurement.
[0267] Instead of using an iterative or recursive method, some embodiments may instead use information measured from the surrounding environment to calculate the threshold. For example, a background noise level may be measured from the surrounding environment using one or more integration registers as described above. Since the integration register represents the total photon count received during the measurement, this total photon count may be divided by the total time that the integration register is enabled to calculate a background noise level representing ambient light photons at or near the wavelength of the LIDAR light source received from the surrounding environment. Some embodiments may optionally remove from the background noise level calculation any reflected light peaks resulting from one or more pulse trains emitted by the optical measurement system. This background noise level may then be used to calculate a threshold for detecting peaks in the measurement from which the threshold was derived.
[0268] By calculating a threshold for detecting peaks in a measurement, many technical advantages can be realized. For example, the threshold allows each measurement to set a measurement-specific threshold based on the background noise level present during that measurement. This also allows a single threshold to be used to detect multiple peaks in a measurement, so the threshold only needs to be calculated once. Additionally, the single threshold allows the peak detection circuitry to make a single pass through the histogram memory. Making multiple passes through the histogram memory requires additional time and power for each pass. Instead of requiring a pass through the histogram memory for each identified peak, these methods allow multiple peaks to be identified with only a single pass, thereby reducing the time and power required to identify multiple peaks.
[0269] The threshold for identifying the multiple peaks may be calculated using a number of different techniques. For example, an estimate of the background noise level may be obtained or calculated by the optical measurement system. This estimate of the background noise level may then be used to set the threshold as described in more detail below. Estimation of the background noise level may be accomplished using a number of different techniques. Some embodiments may use statistical sampling of the light received between shots in the measurement to estimate the background noise level. Other embodiments may utilize the integration registers described above.
[0270] A. Background noise estimation FIG. 36 shows a graph of light detected by an optical measurement system resulting from multiple shots, according to some embodiments. In this example, each of the shots may receive at least a first peak 3606 and a second peak 3608. Note that additional peaks may be received as time continues beyond the right side of the graph, which is not explicitly shown in FIG. 26. The first peak 3606 and / or the second peak 3608 may result from photons from one or more pulse trains previously emitted from the light source of the optical measurement system. In some circumstances, the first peak 3606 and / or the second peak 3608 may also result from other reflections or light sources in the surrounding environment.
[0271] As discussed above, some embodiments may apply various filters to the contents of the histogram memory before identifying the histogram peaks. For example, a low pass filter may be applied to the histogram data. Some embodiments may additionally or alternatively apply a matched filter to the histogram data. These embodiments for identifying multiple peaks with a threshold may be used with both filtered and unfiltered data. Thus, the graph of FIG. 36 may be considered as either filtered or unfiltered histogram data interchangeably without limitation.
[0272] The vertical axis of the graph may represent photon counts received by one photosensor in the array of photosensors. The horizontal axis may represent time. These photons may have been received in multiple shots to store a digitized representation of the signal in the histogram memory. Thus, each of the vertical bars in FIG. 36 may represent a single time bin in the histogram memory. It should be noted that the values stored in each of the time bins of the histogram memory shown in FIG. 36 may also be accumulated in one or more accumulation registers over the course of the measurement. It should be understood that instead of showing the value of the accumulation register, the accumulation register may operate as described above to include photon counts in each of the vertical bars of the graph along with any photon counts that occurred before, between, and / or after the shots in the measurement.
[0273] As mentioned above, some embodiments may include a single integrating register, while other embodiments may include multiple integrating registers. Either integrating register configuration is compatible with these methods for estimating background noise levels and generating peak detection thresholds. Thus, the term "integrating register" may be used herein to refer to a single integrating register and may also be used to refer to multiple integrating registers that provide a cumulative total of photon counts over a measurement.
[0274] The first peak 3606 may be associated with the first window 3602, which includes multiple time bins as described above. The second peak 3608 may also be associated with the second window 3604 in the same manner. Thus, the time bins of the first window 3602 and the second window 3604 may be associated with the first peak 3606 and the second peak 3608, respectively. The remaining time bins outside the first window 3602 and the second window 3604 may be referred to as background time bins 3610. The background time bins 3610 may represent background noise received during each of these time bins, as they are not associated with a reflected pulse train as part of a measurement or other strong light source or reflection.
[0275] The background noise level may be determined by the values in the background time bins 3610. For example, the background noise level may be estimated using a standard deviation analysis of the histogram data. This analysis may remove outlier time bins occurring in the first 3602 and second 3604 windows and average the values found in the background time bins 3610 to calculate the background noise level. Alternatively, a sample of histogram values in the background time bins 3610 outside the first 3602 and second 3604 windows may be taken as an estimate of the background noise.
[0276] Instead of relying solely on the contents of the histogram memory, some embodiments may additionally or alternatively use the total photon count of the integration register to calculate the background noise level. The total value stored in the integration register may provide a more accurate and computationally less expensive way to estimate the background noise level in a measurement. Because the integration register stores the overall sum of all photons received by the light sensor over a known time interval, this value may be divided by the total time interval over which the integration operation took place to estimate the background noise. For example, the number of clock cycles of a periodic signal that clocks the integration ALU and / or integration register may be tracked along with the total photon count in the integration register. The total photon count may then be divided by the number of clock cycles to calculate the background noise level.
[0277] Some embodiments may also compensate for any peaks 3606, 3608 recorded by the integration register when calculating the background noise level. Note that FIG. 36 is not drawn to scale with respect to time. The actual return pulse typically constitutes a very small portion of the overall integration value recorded in the integration register. Thus, the photons received due to the return pulse may be considered negligible compared to the overall number of photons received due to background noise throughout the entire measurement. The extent to which the photons within the peaks affect the background noise level estimate may depend on the size of the windows 3602, 3604 compared to the overall integration time. If the size of the windows 3602, 3604 is small compared to the overall integration time (e.g., less than 5%), their effect on the background noise estimate may be considered negligible, and the total signal photon count may be used to estimate the background noise level.
[0278] However, if the size of the window 3602, 3604 exceeds a small fraction of the total integration time (e.g., more than 10%), additional steps can be taken to more accurately estimate the background noise level. For example, the photons received during the window 3602, 3604 can be subtracted from the value of the integration register. The photon counts in the histogram register during the time bins of the window 3602, 3604 can be subtracted from the value of the integration register. In addition, the length of the window 3602, 3604 can be subtracted from the overall integration time. The modified value of the total photon counts in the integration register can then be divided by the modified integration time to better estimate the background noise value. This can enable the optical measurement system to reduce the effect that multiple strong peaks would otherwise have when calculating the background noise level.
[0279] 37 shows an estimated background noise level 3610 compared to the received photon counts in the histogram memory, according to some embodiments. Any of the processes described above can be used to calculate the background noise level 3712 for the measurement. Optionally, the photon counts received during the first interval 3602 and / or the second interval 3604 can be removed from the estimation procedure by subtracting the photon counts received during the first window 3602 and / or the second window 3604, as described in the section above. This may result in an estimated background noise level 3712 that is very close to the actual average of the background noise level stored in the background time bins 3610.
[0280] The estimated background noise level 3712 may be used by the optical measurement system for several different signal processing procedures. In some embodiments, the estimated background noise level 3712 may be subtracted from each of the peaks 3606, 3608 before they are analyzed for distance measurements. For example, the estimated background noise level may be subtracted from each time bin in a histogram register that is within a time window associated with an identified peak, such as the time bins of the first window 3602 and the second window 3604. Subtracting the background noise level may reduce the photon counts in each of the time bins associated with an identified peak, which may provide a more accurate magnitude measurement for the peak.
[0281] Some embodiments may implement the histogram data path and the integrated data path in an integrated circuit chip that can detect peaks in the histogram memory and pass information describing those peaks to a separate processor for distance calculations, data visualization, and other data analysis operations. Some implementations may pass information regarding the signal strength of the peaks 3606, 3608, and the strength (i.e., magnitude) of those peaks may be used in addition to their time location. Before passing the peak data out of the integrated circuit, an estimated background noise level 3712 may be used as a signal floor and subtracted from the peaks 3606, 3608. This may provide a more accurate characterization of the magnitude of the pulses by removing the background noise level before the shape and / or height of those peaks 3606, 3608 are analyzed.
[0282] B. Setting the detection threshold 38 illustrates a graph in which an estimated background noise can be used to set a signal threshold for detecting peaks in a histogram memory, according to some embodiments. After estimating the background noise level 3712, the estimate can be used as a baseline to set a threshold 3802 for detecting peaks in the histogram memory, such as peak 3606 and / or peak 3608. By using the background noise level 3712 as a baseline, a threshold can be set such that any background noise identified in the background time bin 3610 can be excluded as a peak by setting the threshold a distance above the background noise level 3712.
[0283] Some embodiments may start with an estimated background noise level 3712 and add a predetermined percentage of the background noise level 3712 to calculate the desired threshold. The predetermined percentage by which the background noise level 3712 may be increased may be 10%, 20%, 30%, 40%, 50%, 75%, 100%, 125%, 150%, etc. For example, FIG. 38 shows a threshold 3802 set by increasing the background noise level 3712 by approximately 125%. This allows the threshold for each measurement to be scaled according to the magnitude of the background noise level 3712. In environments with more background noise, the threshold 3802 may be increased proportionately to provide a larger margin in noisy environments.
[0284] Some embodiments may also add a predetermined value to the background noise level 3712 instead of increasing the background noise level 3712 by a particular percentage to generate the threshold 3802. For example, the threshold 3802 in Figure 38 may be set by adding a predetermined photon count to the background noise level 3712. This may provide a constant margin above the background noise level 3712 that is constant for various levels of background noise.
[0285] Instead of using an estimate of the average background noise level as described above, some embodiments may find a maximum in the background time bin 3610 and generate a threshold based on that maximum. For example, a maximum may be identified in the background time bin 3610 and a threshold may be set using any of the methods described above based on the maximum rather than the average or mean value. This may generate a higher threshold 3804 than the average or mean based threshold 3802. The higher threshold 3804 may ensure a margin 3808 is calculated to exclude all background time bins 3610 in the measurement.
[0286] XVI. Single-Pass Peak Detection Once the measurement threshold is determined, the threshold can be used by the peak detection circuit to make a single pass through the histogram memory to identify any peaks in the measurement. The iterative and / or recursive methods described above incrementally identify peaks by generating thresholds and therefore may require multiple passes through the histogram memory to identify multiple peaks. In contrast, those embodiments that pre-calculate the threshold may identify multiple peaks using a single pass through the histogram memory.
[0287] A. Peak detection Referring again to FIG. 38, any of the illustrated thresholds may be used to identify peaks. To identify one or more peaks, the peak detection circuit may make a pass through the histogram memory. As used herein, the term "pass" may refer to an operation or set of operations that successively accesses memory locations in the histogram memory and evaluates the photon counts stored in the memory locations against a threshold. For example, a pass through the histogram memory may include providing an address or address range to the histogram memory, obtaining photon counts from those addressed locations, and / or comparing those photon counts to one or more thresholds.
[0288] In the example of FIG. 38, each of the time bins represented by the vertical bars of the graph may represent a location in a histogram memory. As mentioned above, these locations may be referred to as "a plurality of first registers" that store a histogram of photon counts received over a plurality of shots. The values of these memory locations, represented by the vertical bars of the graph, may be sequentially accessed in the histogram memory and compared to a threshold, such as threshold 3804. If a memory location contains a value that exceeds threshold 3804, then that memory location may be identified as belonging to a peak. For example, the nine intermediate memory locations (or other number) of peak 3606 may be identified as belonging to the peak because the photon counts stored in each of those memory locations exceed threshold 3804.
[0289] Once one or more memory locations in the histogram memory are identified as belonging to a peak, a peak window surrounding those memory locations may be determined using the techniques detailed above. For example, once the central memory location of the peak 3606 is identified as exceeding the threshold 3804, the first window 3602 may be determined by various methods as described above. These methods may include designating a predetermined number of time bins surrounding the peak as part of the first window 3602, designating surrounding time bins that exceed a lower threshold as part of the first window 3602, and the like.
[0290] B. Off-chip peak path The peak detection methods described above can be performed on an integrated circuit that includes a histogram memory, a peak detection circuit, and a threshold detection circuit. The integrated circuit can be implemented in a single chip package that is separate and distinct from a processor that analyzes the detected peaks for distance calculations, image generation, image processing, etc. Thus, some embodiments can detect peaks in the histogram memory, specify a window of time bins that contains those peaks, and pass information describing those peaks from the integrated circuit to a separate processor.
[0291] Figure 39 illustrates a peak window detected by a threshold operation that may be passed off-chip to a processor, according to some embodiments. In this example, a first window 3602 and a second window 3604 containing the detected peak from Figure 38 may be extracted from the remaining histogram memory. Recall that the time window containing the peak may be relatively small compared to the overall time representing the shot and / or measurement in the histogram memory. Thus, on-chip peak detection significantly reduces the amount of memory that needs to be streamed from the integrated circuit to the processor.
[0292] Some embodiments may read values from the histogram memory that have been identified as belonging to a peak and pass those values to an off-chip processor. For example, a stream of numbers representing photon counts that belong to the time bins of the peak 3606 may be sent to the processor. In addition, some embodiments may send an identifier that provides relative timing information of the beginning / end of the detected peak. For example, a time bin number, memory location address, or other identifier may be used to specify where in the measurement the identified peak begins / ends.
[0293] As discussed above, data values in the histogram memory representing identified peaks may be passed off-chip to the processor in filtered and / or unfiltered form, depending on the embodiment. For example, raw histogram values representing photon counts received from the photosensor may be sent to the processor. Any filtering performed in the integrated circuit may be replicated by the processor as needed. This allows the processor to use unfiltered data, but still allows the processor to filter the unfiltered data separately if any operation requires filtered data. Some embodiments may alternatively or additionally send data that has been filtered using any of the filtering options discussed above, including low pass filters, matched filters, etc.
[0294] XVII. Threshold and Peak Detector Circuits FIG. 40 shows a circuit for calculating a threshold and detecting one or more peaks in a histogram memory according to some embodiments. This example shows how the histogram datapath and the integration datapath can be combined on the same integrated circuit. The histogram datapath can include any of the circuit elements shown in FIG. 8, including the histogram memory 806, the clock 810, the shot signal 814, the measurement signal 812, and the periodic signals 560, 808, etc. The histogram datapath can include any of the circuit elements shown in FIG. 10, including the integration register 1004, the clock 1003, the periodic signal 1011, and the integration signal 1008, etc. The integration register 1004 can also include multiple individual registers as shown in FIG. 12. In this embodiment, the integration datapath and the histogram datapath can share the ALU 804. For example, a first stage of the ALU 804 can accumulate a positive signal 816 from the photodetector, and one or more second stages of the ALU 804 can add this value to the current value 820 in the time bin in the histogram memory 806 and the current value 1010 in the accumulation register 1004. The accumulation signal 1008 may be timed independently of the measurement signal 812 and / or the shot signal 814.
[0295] Once the measurements are complete, the threshold detection circuit 4002 may calculate one or more thresholds for peak detection using the various methods described above. For example, the threshold detection circuit 4002 may receive or tally the total photon counts from the integration register 1004 to estimate the background noise level. Alternatively, the threshold detection circuit 4002 may sample from background time bins that do not correspond to reflection peaks or use other statistical methods to derive the background noise level from the contents of the histogram memory 806. The threshold detection circuit 4002 may scale or add a value to the background noise level to generate one or more thresholds.
[0296] The threshold detection circuit 4002 may pass the calculated threshold or thresholds to a peak detection circuit 4004. The peak detection circuit may make a pass through the histogram memory 806 using the threshold or thresholds calculated by the threshold detection circuit 4002 to identify one or more peaks in the histogram. Some embodiments may identify multiple peaks using only a single pass through the histogram memory 806. The peak detection circuit 4002 may then identify a window or interval surrounding the identified peak using the methods described above.
[0297] The histogram data path elements, the integrated data path elements, the threshold detection circuit 4002, and the peak detection circuit 4004 may be implemented in a first integrated circuit 4020. For example, the first integrated circuit 4020 may include each of these individual circuits implemented in a unit of semiconductor material that is physically separate and distinct from other integrated circuit chips in the optical measurement system.
[0298] In some embodiments, the peak detection circuit 4004 may pass the interval representing the peak to an off-chip processor 4008. The off-chip processor 4008 may correspond to the ranging system controller 250 of FIG. 2. The off-chip processor 4008 may be implemented in a second integrated circuit 4022. The second integrated circuit 4022 may be physically separate and separate and distinct from the first integrated circuit 4020. For example, communication between the first integrated circuit 4020 and the second integrated circuit 4022 may include transmitting signals between pins or pads of the integrated circuits 4020, 4022 via traces on a printed circuit board.
[0299] In some embodiments, the peak detection circuit 4004 may pass intervals representing peaks to the off-chip processor 4008 as they are detected by the peak detection circuit 4004. Other embodiments may store each of the identified peaks and send the peaks together to the off-chip processor 4008 once they are all detected. For example, the second set of registers 4006 may store information representing the identified peaks as they are identified by the peak detection circuit 4004. The second set of registers 4006 may store address ranges in the histogram memory 806, values from the histogram memory 806, time bin numbers from the histogram memory 806, etc. The second set of registers 4006 may be significantly smaller in size than the histogram memory 806. The histogram memory 806 may store the entire contents of a histogram of photon counts, while the second set of registers 4006 may only need to store information (or references to information) representing a limited number of peaks in the histogram. As a result, because the information stored in the second set of registers 4006 is significantly less than the information stored in the histogram memory 806, the bandwidth and memory required to pass this information between the first integrated circuit 4020 and the second integrated circuit 4022 can be significantly reduced by these embodiments.
[0300] 40 as separate circuit elements, the threshold detect circuit 4002, the peak detect circuit 4004, and / or the second set of registers 4006 may be implemented in any combination without limitation. For example, the threshold detect circuit 4002 may be an integrated part of the peak detect circuit 4004 without any functional separation between the two circuits. Alternatively, the threshold detect circuit 4002 and the peak detect circuit 4004 may be functionally separated in the data path.
[0301] XVIII. Methods for Threshold Peak Detection FIG. 41 illustrates a method for using an optical measurement system to detect multiple peaks according to some embodiments.
[0302] At block 4102, the method may include transmitting one or more pulse trains over one or more first time intervals as part of the optical measurement. Each of the first time intervals may correspond to a shot time interval as described above, and each of the first time intervals may correspond to one of the transmitted pulse trains. These pulse trains may be transmitted by a light source of the optical measurement system and may each include one or more individual pulses.
[0303] At block 4104, the method may also include detecting photons and photons from the one or more pulse trains. Photons from ambient light may also be detected. The pulse trains and ambient light may be detected using multiple photodetectors on the light sensor. The photodetectors may be implemented using single photon avalanche diodes (SPADs). The photodetectors may generate a signal when a photon is received, and the thresholding circuit may generate a positive signal to indicate that a photon has been received. The ALU may count these positive signals during an ALU clock cycle to generate a photon count during the ALU clock cycle.
[0304] At block 4106, the method may further include accumulating the photon counts from the photodetector in a register to represent a histogram of the photon counts in a plurality of first registers. The plurality of first registers may include registers in an SRAM of a histogram data path as described above. Each of the first time intervals may be subdivided into a plurality of first time bins for the histogram. A corresponding time bin in each of the one or more first time intervals may be accumulated in a single register in the plurality of first registers. Each of the first time intervals may represent a shot, and together, the one or more first time intervals may represent a measurement of the optical measurement system. Each of the first time intervals may be defined by a start signal or a shot signal that resets a memory representing the histogram to the first register in the histogram. The photon counts may be tallied by an arithmetic logic circuit in the data path, such as an ALU as described above. The accumulation of the photon counts from the photodetector may be performed on the first integrated circuit. The plurality of first registers may also reside on the first integrated circuit.
[0305] At block 4108, the method may further include providing a threshold value for identifying one or more peaks in the histogram. In some embodiments, the threshold value may include a default threshold value that does not require any calculation during the current measurement. For example, the threshold value may be reused from a previous measurement or may be calculated based on a threshold value used in the previous measurement. The threshold value may also be a default threshold value that is used unless a threshold value specific to the current measurement is calculated.
[0306] In some embodiments, a background noise level may be determined and used to calculate the threshold. The background noise level may be determined using an integration register that accumulates the total photon counts present in a time interval overlapping the measurement. For example, the total photon count may be divided by the time the integration register was enabled. To calculate the total photon count, multiple integration registers may be used and tallied. The background noise level may later be subtracted from any identified peaks. In addition, the background noise level may be used to generate a threshold. For example, the threshold may be calculated such that it is a predetermined percentage of the background noise level or a value that exceeds it. These operations may be performed using any of the methods described above, including the methods performed by the peak detection circuit 4004 and threshold detection circuit 4002 of FIG. 40. The threshold may be provided by a circuit implemented on a first integrated circuit that includes multiple first registers. The integration register may also be implemented on the first integrated circuit.
[0307] At block 4110, the method may additionally include identifying one or more peaks represented in the histogram by making a pass through a plurality of first registers with a threshold value (by forming a pass through the plurality of first registers with a threshold value). As described above, the pass through the plurality of first registers may include an operation or set of operations that successively takes values from the histogram memory and compares them to a threshold value. Identifying the peaks may include identifying a value that exceeds a threshold value and identifying a time window or interval surrounding the value that exceeds the threshold value. The time window may include a plurality of values within a time bin of the histogram memory and an indication of when the interval occurred in the histogram memory. Some embodiments may store the one or more peaks in a separate set of registers, such as the second set of registers 4006, and pass the one or more peaks in filtered and / or unfiltered form to an off-chip processor. The peaks may be identified in the first integrated circuit.
[0308] At block 4112, the method may further include sending information describing the one or more peaks detected using the threshold to a processor on the second integrated circuit. As shown in FIG. 40 above, the processor may include an off-chip processor implemented on a separate integrated circuit. The first integrated circuit may be physically separate and distinct from the second integrated circuit. The processor may be configured to identify peaks of the one or more peaks resulting from the pulse train reflected from objects in the surrounding environment. The processor may also be configured to perform distance calculations, generate an image, and / or perform other processing functions on the information describing the one or more peaks transmitted from the first integrated circuit. The information describing the one or more peaks may include values from a plurality of first registers representing photon counts received at a time bin of the histogram. The information may also include timing information indicating when the photon counts were received relative to measurements made by the optical measurement system.
[0309] XIX. Additional Embodiments Although some embodiments disclosed herein focus on optical ranging applications within the context of 3D sensing for automotive use cases, the systems disclosed herein can be used in any application without departing from the scope of the present disclosure. For example, the system can have a small or even tiny form factor that enables several additional use cases, for example for solid-state optical ranging systems. For example, the system can be used in 3D cameras and / or depth sensors in devices such as mobile phones, tablet PCs, laptops, desktop PCs, or in other peripherals and / or user interface devices. For example, one or more embodiments can be used in mobile devices for face recognition and face tracking capabilities, support for eye tracking capabilities, and / or 3D scanning of objects. Other use cases include front-facing depth cameras for augmented reality and virtual reality applications in mobile devices.
[0310] Other applications include deployment of one or more systems on airborne vehicles such as airplanes, helicopters, drones, etc. Such examples can provide 3D sensing and depth imaging to aid in navigation (autonomous or otherwise) and / or generate 3D maps for later analysis, e.g., to support geophysical, architectural, and / or archaeological analysis.
[0311] The system may also be mounted on stationary objects and structures such as buildings, walls, poles, bridges, scaffolding, etc. In such cases, the system may be used to monitor outdoor areas such as manufacturing facilities, assembly lines, industrial facilities, construction sites, excavation sites, roadways, railways, bridges, etc. Additionally, the system may be mounted indoors and used to monitor movement of people and / or objects within a building, such as movement of inventory in a warehouse, or movement of people, luggage, or goods within an office building, airport, train station, etc. As will be recognized by one of ordinary skill in the art with the benefit of this disclosure, many different applications of optical ranging systems are possible, and thus the examples provided herein are provided by way of example only and should not be construed as limiting the use of such systems to only those examples expressly disclosed.
[0312] XX. Computer Systems Any of the computer systems or circuits referred to herein may utilize any suitable number of subsystems. The subsystems may be connected via a system bus 75. By way of example, the subsystems may include input / output (I / O) devices, system memory, storage devices, and network adapters (e.g., Ethernet, Wi-Fi, etc.) that may be used to connect the computer system to other devices (e.g., an engine control unit). The system memory and / or storage devices may incorporate computer-readable media.
[0313] A computer system may include multiple identical components or subsystems connected to each other by internal interfaces or via removable storage devices connecting one component to another, for example, by external interfaces. In some embodiments, computer systems, subsystems, or devices may communicate over a network.
[0314] Aspects of the embodiments may be implemented using hardware circuitry in the form of control logic (e.g., application specific integrated circuits or field programmable gate arrays) and / or using computer software with general purpose programmable processors in a modular or integrated manner. As used herein, a processor may include a single core processor, a multi-core processor on the same integrated chip, or multiple processing units on a single circuit board or networked, as well as dedicated hardware. Based on this disclosure and the teachings provided herein, one of ordinary skill in the art will recognize and understand other ways and / or methods for implementing embodiments of the present invention using hardware and combinations of hardware and software.
[0315] Any of the software components or functions described in this application may be implemented as software code executed by a processing device using any suitable computer language, such as, for example, Java, C, C++, C#, Objective-C, Swift, or a scripting language, such as, for example, Perl or Python, using conventional or object-oriented techniques. The software code may be stored as a series of instructions or commands on a computer-readable medium for storage and / or transmission. Suitable non-transitory computer-readable media may include random access memory (RAM), read-only memory (ROM), magnetic media (such as a hard drive or floppy disk), or optical media (such as a compact disk (CD) or DVD (digital versatile disk)), flash memory, and the like. The computer-readable medium may be any combination of such storage or transmission devices.
[0316] Such programs may also be coded and transmitted using carrier signals adapted for transmission over wired, optical, and / or wireless networks following various protocols, including the Internet. Thus, computer-readable media may be created using data signals coded with such programs. Computer-readable media coded with program code may be packaged with a compatible device or provided separately from other devices (e.g., via Internet download). Any such computer-readable media may be present on or within a single computer product (e.g., a hard drive, CD, or an entire computer system), or may be present on or within different computer products in a system or network. A computer system may include a monitor, printer, or other suitable display for providing a user with any of the results described herein.
[0317] Any of the methods described herein may be implemented in whole or in part using a computer system including one or more processors that can be configured to perform the steps. Thus, embodiments may be directed to a computer system configured to perform the steps of any of the methods described herein, with potentially different components performing each step or each group of steps. Although presented as numbered steps, steps of the methods herein may be performed simultaneously or at different times, or in different orders. In addition, portions of these steps may be combined with portions of other steps from other methods. Also, all or portions of a step may be optional. In addition, any steps of any of the methods may be performed by modules, units, circuits, or other means of systems for performing these steps.
[0318] The specific details of the particular embodiments may be combined in any suitable manner without departing from the spirit and scope of the embodiments of the invention, however, other embodiments of the invention may be directed to particular embodiments relating to each individual aspect, or particular combinations of these individual aspects.
[0319] The above description of exemplary embodiments of the invention has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form described, and many modifications and variations are possible in light of the above teachings.
[0320] The descriptions "a," "an," or "the" are intended to mean "one or more," unless specifically indicated to the contrary. The use of "or" is intended to mean "inclusive or" rather than "exclusive or," unless specifically indicated to the contrary. A reference to a "first" component does not necessarily require that a second component is provided. Furthermore, a reference to a "first" or "second" component does not limit the referenced components to a particular location unless expressly stated. The term "based on" is intended to mean "based at least in part on."
[0321] All patents, patent applications, publications, and specifications mentioned herein are incorporated by reference in their entirety for all purposes. None is admitted to be prior art. The claims at the time of filing are as follows: <Claim 1> 1. An optical measurement system comprising: a light source configured to transmit one or more pulse trains over one or more first time intervals as part of an optical measurement, each of the one or more first time intervals including one of the one or more pulse trains; an optical sensor including one or more photodetectors configured to detect photons from the one or more pulse trains and photons from ambient light; a plurality of first registers for accumulating photon counts received from the one or more photodetectors during the one or more first time intervals, each of the one or more first time intervals being subdivided into a plurality of first time bins, each of the plurality of first registers accumulating photon counts received during a corresponding one of the plurality of first time bins in each of the one or more first time intervals to represent a histogram of photon counts received during the one or more first time intervals; a plurality of second registers that accumulate the photon counts from the one or more photodetectors over a second time interval that overlaps with at least a portion of the one or more first time intervals, the second time interval being subdivided into a plurality of second time bins, each of the plurality of second registers accumulating photon counts received during a corresponding one of the plurality of second time bins; An optical measurement system comprising: <Claim 2> an arithmetic logic circuit that sums the photon counts in each of the plurality of second registers to generate a total photon count received during the second time interval; 2. The optical measurement system of claim 1, further comprising: <Claim 3> Each of the one or more first time intervals is defined by a first initiation signal. 2. The optical measurement system according to claim 1 . <Claim 4> The second time interval is defined by a second initiation signal that is independent of the first initiation signal. 4. The optical measurement system according to claim 3. <Claim 5> The one or more photodetectors include one or more single photon avalanche diodes (SPADs). 2. The optical measurement system according to claim 1 . <Claim 6> Each of the one or more first time intervals is included in the second time interval. 2. The optical measurement system according to claim 1 . <Claim 7> a selection signal that selects which of the plurality of second registers accumulates photon counts during each of the plurality of second time bins. 2. The optical measurement system of claim 1, further comprising: <Claim 8> The selection signal is generated by a timer. 8. Optical measurement system according to claim 7. <Claim 9> The selection signal is generated on the same integrated circuit as the plurality of second registers. 8. Optical measurement system according to claim 7. <Claim 10> The selection signal is not generated on the same integrated circuit as the second plurality of registers. 8. Optical measurement system according to claim 7. <Claim 11> The selection signal is generated based on an angular position of the optical sensor about a central axis. 8. Optical measurement system according to claim 7. <Claim 12> 1. A method of using an optical measurement system, comprising: transmitting one or more pulse trains over one or more first time intervals as part of an optical measurement, each of the one or more first time intervals including one of the one or more pulse trains; detecting photons from the one or more pulse trains and photons from ambient light; accumulating in a plurality of first registers photon counts received from the one or more photodetectors during the one or more first time intervals, each of the one or more first time intervals being subdivided into a plurality of first time bins, each of the plurality of first registers accumulating photon counts received during a corresponding one of the plurality of first time bins in each of the one or more first time intervals to represent a histogram of photon counts received during the one or more first time intervals; accumulating, in a plurality of second registers, photon counts over a second time interval overlapping at least a portion of the one or more first time intervals, the second time interval being subdivided into a plurality of second time bins, each of the plurality of second registers accumulating photon counts received during a corresponding one of the plurality of second time bins; A method comprising: <Claim 13> summing the photon counts in each of the plurality of second registers to generate a total photon count received during the second time interval; using the total photon count to estimate background noise detected by the optical measurement system during the second time interval; 13. The method of claim 12, further comprising: <Claim 14> estimating the background noise comprises: dividing the total photon count by the length of the second time interval. 14. The method of claim 13, comprising: <Claim 15> estimating the background noise comprises: identifying one or more time bins within the first plurality of time bins during which reflected photons resulting from the one or more pulse trains are estimated to have been received by the optical measurement system; removing photon counts received within the one or more time bins from the total photon count; 14. The method of claim 13, comprising: <Claim 16> The background noise is removed from the first registers. 14. The method according to claim 13 . <Claim 17> The second time interval includes a time interval outside the one or more first time intervals. 13. The method of claim 12. <Claim 18> The histogram of photon counts in the first registers received during the one or more first time intervals represents a single optical measurement by the optical measurement system. 13. The method of claim 12. <Claim 19> generating an ambient image of an environment using the photon counts stored in the second plurality of registers over the second time interval; 13. The method of claim 12, further comprising: <Claim 20> The photon counts stored in the second plurality of registers over the second time interval include photons from the one or more pulse trains and photons from the ambient light. 13. The method of claim 12. <Claim 21> 1. An optical measurement system comprising: a light source configured to transmit one or more pulse trains over one or more first time intervals as part of an optical measurement, each of the one or more first time intervals including one of the one or more pulse trains; an optical sensor including one or more photodetectors configured to detect photons from the one or more pulse trains; a data path having an arithmetic logic circuit and a plurality of first registers, the data path being configured to use photon counts from the one or more pulse trains compiled by the arithmetic logic circuit to populate the plurality of first registers such that the plurality of first registers represent a histogram of photon counts received during the one or more first time intervals; a saturation detection circuit that determines when saturation occurs in the data path and causes the data path to stop populating the first plurality of registers for a plurality of time intervals of the one or more first time intervals that occur after the saturation occurs; An optical measurement system comprising: <Claim 22> The data path includes a counter that counts the number of the one or more first time intervals that occur before the saturation detection circuit causes the data path to stop populating the first plurality of registers. 22. The optical measurement system of claim 21 further comprising: <Claim 23> The counter is incremented by a signal that initiates the one or more first time intervals. 23. Optical measurement system according to claim 22. <Claim 24> The data path includes a counter that counts the number of times the arithmetic logic circuit updates the first plurality of registers before the saturation detection circuit causes the data path to stop populating the first plurality of registers. 22. The optical measurement system of claim 21 further comprising: <Claim 25> The saturation detection circuit receives a signal from the arithmetic logic circuit indicating that the arithmetic logic circuit is saturated. 22. Optical measurement system according to claim 21. <Claim 26> The saturation detection circuit receives a signal indicating that a result from the arithmetic logic circuit is greater than a maximum number that may be stored in one of the first plurality of registers. 22. Optical measurement system according to claim 21. <Claim 27> The saturation detection circuit causes the data path to stop populating the first plurality of registers by disabling a periodic signal that causes the arithmetic logic circuit to tally up photon counts. 22. Optical measurement system according to claim 21. <Claim 28> The saturation detection circuit causes the data path to stop populating the first plurality of registers by disabling a periodic signal that causes the first plurality of registers to store updated photon counts. 22. Optical measurement system according to claim 21. <Claim 29> a second data path having a second arithmetic logic circuit and one or more integrated registers; Further comprising: The second data path is configured to aggregate the photon counts from the one or more photodetectors into the one or more integration registers over a second time interval that includes at least the one or more first time intervals. 22. Optical measurement system according to claim 21. <Claim 30> The second data path has a second saturation detection circuit that determines when saturation occurs in the second data path and causes the second data path to stop tallying the photon counts from the one or more photodetectors into the one or more integration registers for the second time interval after the saturation occurs. 30. Optical measurement system according to claim 29. <Claim 31> 1. A method of using an optical measurement system, comprising: transmitting one or more pulse trains over one or more first time intervals as part of an optical measurement, each of the one or more first time intervals including one of the one or more pulse trains; detecting photons from said one or more pulse trains using one or more photodetectors; using photon counts from the one or more photodetectors to populate a first plurality of registers in a data path, the photon counts being compiled by an arithmetic logic circuit in the data path such that the first plurality of registers represent a histogram of photon counts received during the one or more first time intervals; determining when saturation occurs in the data path; causing the data path to cease populating the first plurality of registers during a plurality of time intervals of the one or more first time intervals occurring after the saturation occurs; A method comprising: <Claim 32> Counting the number of events that occur before causing the data path to stop populating the first plurality of registers. 32. The method of claim 31 further comprising: <Claim 33> the number of said events occurring before causing said data path to stop populating said first plurality of registers; and a total number of events occurring during the one or more first time intervals; and Calculating the multiplier using 33. The method of claim 32, further comprising: <Claim 34> scaling the histogram of the photon counts in the first plurality of registers using the multiplier. 34. The method of claim 33, further comprising: <Claim 35> finding a peak in the histogram of the photon counts in the first plurality of registers after scaling the histogram of the photon counts. 35. The method of claim 34, further comprising: <Claim 36> using photon counts from the one or more photodetectors to populate one or more integrating registers in a second data path, the photon counts being tallied by a second arithmetic and logic circuit in the second data path such that the one or more integrating registers represent a total photon count received over a second time interval that includes at least the one or more first time intervals; determining when saturation occurs in the second data path; causing the second data path to cease populating the one or more integrated registers after the saturation occurs; 32. The method of claim 31 further comprising: <Claim 37> counting the number of events that occur before causing the second data path to stop populating the one or more integration registers; scaling the total photon count in the one or more integration registers using the number of events that occur before causing the second data path to stop populating the one or more integration registers; 37. The method of claim 36, further comprising: <Claim 38> calculating an ambient background noise level after scaling the total photon counts. 38. The method of claim 37, further comprising: <Claim 39> using the ambient background noise level to set a threshold for detecting peaks in the optical measurements. 40. The method of claim 38, further comprising: <Claim 40> removing the ambient background noise level from the histogram of the photon counts in the first plurality of registers. 40. The method of claim 38, further comprising: <Claim 41> 1. An optical measurement system comprising: a light source configured to transmit one or more pulse trains over one or more first time intervals as part of an optical measurement, each of the one or more first time intervals including one of the one or more pulse trains; an optical sensor including one or more photodetectors configured to detect photons from the one or more pulse trains; a plurality of first registers that accumulate photon counts received from the one or more photodetectors during the one or more first time intervals to represent a histogram of the photon counts received during the one or more first time intervals, each of the plurality of first registers corresponding to a time bin in the histogram; a peak detection circuit configured to identify a maximum peak in at least a portion of the histogram in the first plurality of registers each time the peak detection circuit is executed; a masking circuit configured to cause the peak detection circuit to exclude a register corresponding to a peak identified as a maximum peak during a previous execution of the peak detection circuit from being identified as a maximum peak during a subsequent execution of the peak detection circuit, such that multiple executions of the peak detection circuit identify multiple peaks; An optical measurement system comprising: <Claim 42> a plurality of second registers configured to store the plurality of peaks identified by the peak detection circuit; 42. The optical measurement system of claim 41 further comprising: <Claim 43> Each of the plurality of peaks is stored as a series of time bins representing a time interval in the histogram around that peak. 43. Optical measurement system according to claim 42. <Claim 44> Each of the plurality of peaks is stored along with a relative time within the histogram at which the peak occurred. 43. Optical measurement system according to claim 42. <Claim 45> the optical measurement system is configured to send the peaks identified by the peak detection circuitry to a processor; The processor operates on an integrated circuit chip different from the integrated circuit chip on which the peak detection circuit operates. 42. Optical measurement system according to claim 41. <Claim 46> The plurality of peaks are transmitted to the processor without applying a filter to values representing the plurality of peaks. 46. Optical measurement system according to claim 45. <Claim 47> Each execution of the peak detection circuit is configured to cycle through the plurality of first registers to identify a maximum value of the plurality of first registers that is not filtered out by the masking circuit. 42. Optical measurement system according to claim 41. <Claim 48> A maximum peak includes a subset of the plurality of first registers around one of the plurality of first registers that stores the maximum value. 48. Optical measurement system according to claim 47. <Claim 49> The peak detection circuit is configured to cycle through the first plurality of registers at least three times to identify at least three largest peaks in the histogram. 42. Optical measurement system according to claim 41. <Claim 50> The one or more photodetectors include one or more single photon avalanche diodes (SPADs). 42. Optical measurement system according to claim 41. <Claim 51> 1. A method of using an optical measurement system, comprising: transmitting one or more pulse trains over one or more first time intervals as part of an optical measurement, each of the one or more first time intervals including one of the one or more pulse trains; detecting photons from said one or more pulse trains using one or more photodetectors; accumulating photon counts from the one or more photodetectors into a plurality of first registers to represent a histogram of the photon counts received during the one or more first time intervals, each of the plurality of first registers corresponding to a time bin in the histogram; identifying a plurality of peaks in the histogram in the plurality of first registers through multiple executions of a peak detection circuit, each execution of the peak detection circuit identifying a maximum peak in at least a portion of the histogram, and a register corresponding to a peak identified as a maximum peak during a previous execution of the peak detection circuit being excluded from being identified as a maximum peak during a subsequent execution of the peak detection circuit; A method comprising: <Claim 52> applying a low pass filter to the histogram stored in the first plurality of registers prior to identifying the maximum peak. 52. The method of claim 51 further comprising: <Claim 53> applying a matched filter to the histogram stored in the first plurality of registers prior to identifying the maximum peak. Further comprising: The matched filter corresponds to the one or more pulse trains. 52. The method of claim 51 . <Claim 54> the peak identified as the largest peak during a previous run of the peak detection circuitry, masking, during subsequent execution, registers within the first plurality of registers that represent the peaks previously identified as maximum peaks from the peak detection circuit. from being identified as a maximum peak during subsequent executions of the peak detection circuitry. 52. The method of claim 51 . <Claim 55> the peak identified as the largest peak during a previous run of the peak detection circuitry, setting a threshold below a maximum value from the peak previously identified as the largest peak; and excluding peaks during a subsequent run of the peak detection circuit that meet or exceed the threshold value from being identified as a maximum peak during a subsequent run of the peak detection circuit. 52. The method of claim 51 . <Claim 56> excluding subsequent running peaks of the peak detection circuit that meet or exceed the threshold, identifying a register within the first plurality of registers having a value that meets or exceeds the threshold; excluding registers around the register in the first plurality of registers; 56. The method of claim 55, comprising: <Claim 57> excluding an initial peak of the histogram from multiple runs of the peak detection circuitry. 52. The method of claim 51 further comprising: <Claim 58> The initial peak results from a reflection of the one or more pulse trains from a housing of the optical measurement system. 58. The method of claim 57. <Claim 59> The initial peak meets or exceeds the saturation threshold of a saturation detection circuit. 58. The method of claim 57. <Claim 60> masking said initial peak from said saturation detection circuit. 60. The method of claim 59, further comprising: <Claim 61> 1. An optical measurement system comprising: a light source configured to transmit one or more pulse trains over one or more first time intervals as part of an optical measurement, each of the one or more first time intervals including one of the one or more pulse trains; an optical sensor including one or more photodetectors configured to detect photons from the one or more pulse trains; A first integrated circuit; a second integrated circuit having a processor; Equipped with The first integrated circuit comprises: a plurality of first registers that accumulate photon counts received from the one or more photodetectors during the one or more first time intervals to represent a histogram of the photon counts received during the one or more first time intervals, each of the plurality of first registers corresponding to a time bin in the histogram; a threshold detection circuit configured to provide a threshold for identifying one or more peaks in the histogram; a peak detection circuit configured to form a path through the first plurality of registers and to identify the one or more peaks represented in the histogram using the threshold; Have The first integrated circuit is configured to send information to the processor on the second integrated circuit describing the one or more peaks detected using the threshold. 1. An optical measurement system comprising: <Claim 62> The threshold detection circuit is configured to use a pre-existing threshold. 62. Optical measurement system according to claim 61. <Claim 63> The threshold detection circuit is configured to calculate the threshold based on a background noise level present during the one or more first time intervals. 62. Optical measurement system according to claim 61. <Claim 64> one or more integration registers that accumulate the photon counts from the one or more photodetectors over a second time interval that overlaps with at least a portion of the one or more first time intervals. Further comprising: The threshold detection circuit is further configured to calculate the background noise level using one or more values in the one or more integration registers. 64. Optical measurement system according to claim 63. <Claim 65> The threshold detection circuit is further configured to calculate the background noise level by dividing a total photon count in the one or more integration registers by a duration for which the one or more integration registers are enabled. 65. Optical measurement system according to claim 64. <Claim 66> The duration for which the one or more integration registers are enabled is determined based on a total number of clock cycles during which the one or more integration registers are enabled. 66. An optical measurement system according to claim 65. <Claim 67> The threshold detection circuit includes: identifying one or more time bins within the histogram that represent the one or more peaks; subtracting the photon counts of the one or more time bins from the total photon counts of the one or more integration registers; and further configured to calculate the background noise level by 65. Optical measurement system according to claim 64. <Claim 68> a plurality of second registers configured to store the one or more peaks identified by the peak detection circuitry; 62. The optical measurement system of claim 61 further comprising: <Claim 69> Each of the one or more peaks is a window of time bins representing a time interval in the histogram around the peak; and the relative time within the histogram at which the peak occurred; 69. The optical measurement system of claim 68, wherein the signal is stored as <Claim 70> The first integrated circuit is implemented on a chip that is physically separate and distinct from the chip on which the second integrated circuit is implemented. 62. Optical measurement system according to claim 61. <Claim 71> The one or more peaks are sent to the processor without applying a filter to values in the histogram representing the one or more peaks. 62. Optical measurement system according to claim 61. <Claim 72> 1. A method of using an optical measurement system, comprising: transmitting one or more pulse trains over one or more first time intervals as part of an optical measurement, each of the one or more first time intervals including one of the one or more pulse trains; detecting photons from said one or more pulse trains using one or more photodetectors; accumulating, on a first integrated circuit, photon counts from the one or more photodetectors into a plurality of first registers to represent a histogram of the photon counts received during the one or more first time intervals, each of the plurality of first registers corresponding to a time bin in the histogram; providing, on said first integrated circuit, a threshold for identifying one or more peaks in said histogram; identifying, on the first integrated circuit, the one or more peaks represented in the histogram by forming a pass through the first plurality of registers according to the threshold; sending information from the first integrated circuit to a processor on a second integrated circuit describing the one or more peaks detected using the threshold; A method comprising: <Claim 73> removing a background noise level from said one or more peaks represented in said histogram. 73. The method of claim 72, further comprising: <Claim 74> determining a background noise level based on a sample of photons received by the one or more photodetectors during the one or more pulse trains. 73. The method of claim 72, further comprising: <Claim 75> Providing the threshold includes setting the threshold at a predetermined interval above a background noise level. 73. The method of claim 72. <Claim 76> Providing the threshold includes setting the threshold at an interval above a background noise level that is a predetermined percentage of the background noise level. 73. The method of claim 72. <Claim 77> applying a low pass filter to the histogram stored in the first plurality of registers prior to identifying the one or more peaks. 73. The method of claim 72, further comprising: <Claim 78> applying a matched filter to the histogram stored in the first plurality of registers prior to identifying the one or more peaks. Further comprising: The matched filter corresponds to the one or more pulse trains. 73. The method of claim 72. <Claim 79> The one or more peaks include peaks corresponding to reflections of the one or more pulse trains and peaks not corresponding to reflections of the one or more pulse trains. 73. The method of claim 72. <Claim 80> The step of identifying the one or more peaks represented in the histogram uses only a single pass through the first plurality of registers. 73. The method of claim 72.
Claims
1. 1. An optical measurement system comprising: a light source configured to transmit one or more pulse trains over one or more first time intervals as part of an optical measurement, each of the one or more first time intervals including one of the one or more pulse trains; an optical sensor including one or more photodetectors configured to detect photons from the one or more pulse trains; a plurality of first registers that accumulate photon counts received from the one or more photodetectors during the one or more first time intervals to represent a histogram of the photon counts received during the one or more first time intervals, each of the plurality of first registers corresponding to a time bin in the histogram; a peak detection circuit configured to identify a maximum peak in at least a portion of the histogram in the first plurality of registers each time the peak detection circuit is executed; a masking circuit configured to cause the peak detection circuit to exclude a register corresponding to a peak identified as a maximum peak during a previous execution of the peak detection circuit from being identified as a maximum peak during a subsequent execution of the peak detection circuit, such that multiple executions of the peak detection circuit identify multiple peaks; a plurality of second registers configured to store the plurality of peaks identified by the peak detection circuit; An optical measurement system comprising:
2. Each of the plurality of peaks is stored as a series of time bins representing a time interval in the histogram around that peak.
2. The optical measurement system of claim 1.
3. Each of the plurality of peaks is stored along with a relative time within the histogram at which the peak occurred.
2. The optical measurement system of claim 1.
4. the optical measurement system is configured to send the peaks identified by the peak detection circuitry to a processor; The processor operates on an integrated circuit chip different from the integrated circuit chip on which the peak detection circuit operates.
2. The optical measurement system of claim 1.
5. The plurality of peaks are transmitted to the processor without applying a filter to values representing the plurality of peaks.
5. The optical measurement system of claim 4.
6. Each execution of the peak detection circuit is configured to cycle through the plurality of first registers to identify a maximum value of the plurality of first registers that is not filtered out by the masking circuit.
2. The optical measurement system of claim 1.
7. A maximum peak includes a subset of the first registers around one of the first registers that stores the maximum value.
7. The optical measurement system of claim 6.
8. The peak detection circuit is configured to cycle through the first plurality of registers at least three times to identify at least three largest peaks in the histogram.
2. The optical measurement system of claim 1.
9. The one or more photodetectors include one or more single photon avalanche diodes (SPADs).
2. The optical measurement system of claim 1.
10. 1. A method of using an optical measurement system, comprising: transmitting one or more pulse trains over one or more first time intervals as part of the optical measurement, each of the one or more first time intervals including one of the one or more pulse trains; detecting photons from the one or more pulse trains using one or more photodetectors; accumulating photon counts from the one or more photodetectors into a plurality of first registers to represent a histogram of the photon counts received during the one or more first time intervals, each of the plurality of first registers corresponding to a time bin in the histogram; identifying a plurality of peaks in the histogram in a plurality of first registers through a plurality of executions of a peak detection circuit, each execution of the peak detection circuit identifying a maximum peak in at least a portion of the histogram, a register corresponding to a peak identified as a maximum peak during a previous execution of the peak detection circuit being excluded from being identified as a maximum peak during a subsequent execution of the peak detection circuit, and the plurality of peaks identified by the peak detection circuit being stored in a plurality of second registers; A method comprising:
11. applying a low pass filter to the histogram stored in the first plurality of registers prior to identifying the maximum peak.
11. The method of claim 10 further comprising:
12. applying a matched filter to the histogram stored in the first plurality of registers prior to identifying the maximum peak. Further comprising: The matched filter corresponds to the one or more pulse trains.
11. The method of claim 10.
13. the peak identified as the largest peak during a previous run of the peak detection circuitry, masking, during subsequent execution, a register within said plurality of first registers that represents said peak previously identified as a maximum peak from said peak detection circuit. from being identified as a maximum peak during subsequent executions of the peak detection circuitry.
11. The method of claim 10.
14. the peak identified as the largest peak during a previous run of the peak detection circuitry, setting a threshold below a maximum value from the peak previously identified as the largest peak; and excluding peaks during a subsequent run of the peak detection circuit that meet or exceed the threshold value from being identified as a maximum peak during a subsequent run of the peak detection circuit.
11. The method of claim 10.
15. excluding subsequent running peaks of the peak detection circuit that meet or exceed the threshold, identifying a register within the first plurality of registers having a value that meets or exceeds the threshold; excluding registers around the register in the first plurality of registers; 15. The method of claim 14, comprising:
16. excluding an initial peak of the histogram from multiple runs of the peak detection circuitry.
11. The method of claim 10 further comprising:
17. The initial peak results from a reflection of the one or more pulse trains from a housing of the optical measurement system.
17. The method of claim 16.
18. The initial peak meets or exceeds the saturation threshold of a saturation detection circuit.
17. The method of claim 16.
19. masking said initial peak from said saturation detection circuit.
20. The method of claim 18 further comprising:
Citation Information
Patent Citations
Optical measurement device, optical measurement method, and optical measurement program
JP2018091760A
Accurate photo detector measurements for lidar
WO2018160886A1
Systems and methods for efficient multi-return light detectors
WO2019112733A1