Patent ID: 12249028

While the present disclosure is subject to various modifications and alternative forms, specific embodiments thereof have been shown by way of example in the drawings and will herein be described in detail. The present disclosure should not be understood to be limited to the particular forms disclosed, but on the contrary, the intention is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the present disclosure.

DETAILED DESCRIPTION

Systems and methods for generating lidar scenes for use in training machine learning models are disclosed. It will be appreciated that, for simplicity and clarity of illustration, where considered appropriate, reference numerals may be repeated among the figures to indicate corresponding or analogous elements. In addition, numerous specific details are set forth in order to provide a thorough understanding of the exemplary embodiments described herein. However, it will be understood by those of ordinary skill in the art that the exemplary embodiments described herein may be practiced without these specific details.

Three of the most significant technical challenges faced by the lidar industry are (1) reducing the manufacturing cost for lidar devices while maintaining existing performance levels, (2) improving the reliability of lidar devices under automotive operating conditions (e.g., weather, temperature, and mechanical vibration), and (3) increasing the range of lidar devices. One approach to reducing manufacturing costs is to reduce the amount of hardware (e.g., channels, transmitters, emitters, receivers, detectors, etc.) in the lidar device while increasing the utilization of the remaining hardware to maintain performance levels. One approach to improving device reliability is to develop lidar devices that use fewer moving mechanical parts (e.g., by eliminating or simplifying mechanical beam scanners). One approach to extending range is to develop lidar devices that use solid-state lasers.

Motivation for and Benefits of Some Embodiments

Existing lidar-based ML algorithms face certain challenges related to accuracy and can often classify objects in a lidar scan or point cloud incorrectly. Taking autonomous driving as an example, data collected by one or more lidar sensors on a vehicle can be interpreted by a machine learning model or other analysis tool in the vehicle (e.g., a data analysis and interpretation system). Low resolution in the lidar data (e.g., point cloud data) and/or inadequate machine learning model training can cause the vehicle's analysis tools to perceive a stop sign as something more innocuous, like a speed limit sign, or to confuse a car-shaped bush with a real car. As another example, when the vehicle's analysis tools misidentify a pedestrian as a lamp post, the vehicle may fail to recognize that the pedestrian may be able to move into the path of the vehicle, which could result in a collision. There is a need to improve the ability of a vehicle to identify objects in a lidar sensor scan.

In general, the ability of ML models to identify objects in a lidar scan can be improved through more rigorous and/or precise training of the ML models. This can involve, for example, use of a larger number of training datasets and/or training datasets that are more varied (e.g., cover a wider range of possible scenarios) and/or realistic. While use of such training datasets can improve model accuracy, the ability to generate a sufficient quantity and quality of training data can be limited by time and/or budget constraints.

Advantageously, the systems and methods described herein can be used to generate accurate and varied training data for lidar-based ML models, in a cost-effective manner. In some embodiments, point cloud data can be collected by a physical lidar sensor for (i) fixed or static objects in a background scene (e.g., a residential area with a street, houses, trees, etc.) and (ii) movable or dynamic objects in a foreground (e.g., a car, a bus, a motorcycle, a bicycle, a vehicle, a pedestrian, a person, an animal, etc.). Various lidar scenes can then be created from the point cloud data. For example, one or more of the foreground objects can be placed into the background scene. This can involve, for example, inserting point cloud data for the one or more foreground objects into the point cloud data for the background scene. The one or more foreground objects can be placed at any desired locations or orientations within the background scene. Properties of the lidar sensor can be specified, such as a sensor type and/or a sensor location in the background scene. An ML model can then be trained based on the generated scene. For example, the ML model can be presented with the point cloud representations of the background scene and the foreground objects, and can learn how to recognize objects in the scene (e.g., from the perspective of the lidar sensor location). Additional point cloud scenes can be generated in this manner. For example, any number and type of foreground objects can be inserted into a variety of background scenes, at any desired locations and orientations. This allows a wide variety of permutations and combinations of background scenes, foreground objects, and sensor types and/or locations to be constructed and used for ML model training. Further, because the point cloud data was collected with a physical sensor in a physical environment with physical objects, the point cloud data is realistic (e.g., compared to previous approaches that generate point cloud data using simulations and without using physical lidar sensors). The approach is efficient because any combination of background scene and foreground objects can be generated without having to drive around with a lidar sensor and wait for such combinations to appear in the real world. Advantageously, the systems and methods described herein are able to construct a large volume of accurate point cloud training data in a cost-effective manner.

While the disclosure herein is mainly described in the context of autonomous transportation, one skilled in the art will recognize that the techniques described in this disclosure may also be applied in other areas of geospatial field detection or in fields where lidar systems and ML algorithms have been developed and applied. For example, the disclosed techniques for augmenting lidar-based training datasets may be utilized in a lidar system that: (i) identifies the locations of fish stocks in oceans to establish fishery catch limits, (ii) scans natural scenes to build landslide risk analysis tools, or (iii) updates elevation models to monitor glaciers, forests, or other natural terrain.

Some Examples of Lidar Systems

A lidar system may be used to measure the shape and contour of the environment surrounding the system. Lidar systems may be applied to numerous applications including autonomous navigation and aerial mapping of surfaces. In general, a lidar system emits light that is subsequently reflected by objects within the environment in which the system operates. The light may be emitted by a laser (e.g., a rapidly firing laser). Laser light travels through a medium and reflects off points of surfaces in the environment (e.g., surfaces of buildings, tree branches, vehicles, etc.). The reflected (and/or scattered) light energy returns to a lidar detector where it may be sensed and used to perceive the environment.

The science of lidar systems is based on the physics of light and optics. Any suitable measurement techniques may be used to determine the attributes of objects in a lidar system's environment. In some examples, the lidar system is configured to emit light pulses (e.g., individual pulses or sequences of pulses). The time each pulse (or pulse sequence) travels from being emitted to being received (“time of flight” or “TOF”) may be measured to determine the distance between the lidar system and the object that reflects the pulse. Lidar systems that operate in this way may be referred to as “pulsed lidar,” “TOF lidar,” “direct TOF lidar,” or “pulsed TOF lidar.” In some other examples, the time of flight may be calculated indirectly (e.g., using amplitude-modulated continuous wave (AMCW) structured light). Lidar systems that operate in this way may be referred to as “indirect TOF lidar” or “iTOF lidar.” In still other examples, the lidar system can be configured to emit continuous wave (CW) light. The wavelength (or frequency) of the received, reflected light may be measured to determine the distance between the lidar system and the object that reflects the light. In some examples, lidar systems can measure the speed (or velocity) of objects. Lidar systems that operate in this way may be referred to as “coherent lidar,” “continuous wave lidar,” or “CW lidar.” In a CW lidar system, any suitable variant of CW lidar sensing may be used. For example, frequency modulated continuous wave (FMCW) lidar sensing may be used.

FIG.1depicts the operation of a lidar system100, according to some embodiments. In the example ofFIG.1, the lidar system100includes a lidar device102, which may include a transmitter104that generates and emits a light signal110, a receiver106that detects and processes a return light signal114, and a control & data acquisition module108. The transmitter104may include a light source (e.g., “optical emitter” or “emitter”), electrical components operable to activate (e.g., drive) and deactivate the light source in response to electrical control signals, and optical components adapted to shape and redirect the light emitted by the light source. The receiver106may include a light detector (e.g., “optical detector,” “photodetector,” or “detector”) and optical components adapted to shape return light signals114and direct those signals to the detector. In some implementations, one or more optical components (e.g., lenses, mirrors, etc.) may be shared by the transmitter and the receiver.

The lidar device102may be referred to as a lidar transceiver or “channel.” In operation, the emitted light signal110propagates through a medium and reflects off an object(s)112, whereby a return light signal114propagates through the medium and is received by receiver106. In one example, each lidar channel may correspond to a physical mapping of a single emitter to a single detector (e.g., a one-to-one pairing of a particular emitter and a particular detector). In other examples, however, each lidar channel may correspond to a physical mapping of multiple emitters to a single detector or a physical mapping of a single emitter to multiple detectors (e.g., a “flash” configuration). In some examples, a lidar system100may have no fixed channels; rather, light emitted by one or more emitters may be detected by one or more detectors without any physical or persistent mapping of specific emitters to specific detectors.

Any suitable light source may be used including, without limitation, one or more gas lasers, chemical lasers, metal-vapor lasers, solid-state lasers (SSLs) (e.g., Q-switched SSLs, Q-switched solid-state bulk lasers, etc.), fiber lasers (e.g., Q-switched fiber lasers), liquid lasers (e.g., dye lasers), semiconductor lasers (e.g., laser diodes, edge emitting lasers (EELs), vertical-cavity surface emitting lasers (VCSELs), quantum cascade lasers, quantum dot lasers, quantum well lasers, hybrid silicon lasers, optically pumped semiconductor lasers, etc.), and/or any other device operable to emit light. For semiconductor lasers, any suitable gain medium may be used including, without limitation, gallium nitride (GaN), indium gallium nitride (InGaN), aluminum gallium indium phosphide (AlGaInP), aluminum gallium arsenide (AlGaAs), indium gallium arsenide phosphide (InGaAsP), lead salt, etc. For Q-switched lasers, any suitable type or variant of Q-switching can be used including, without limitation, active Q-switching, passive Q-switching, cavity dumping, regenerative Q-switching, etc. The light source may emit light having any suitable wavelength or wavelengths, including but not limited to wavelengths between 100 nm (or less) and 1 mm (or more). Semiconductor lasers operable to emit light having wavelengths of approximately 905 nm, 1300 nm, or 1550 nm are widely commercially available. In some examples, the light source may be operated as a pulsed laser, a continuous-wave (CW) laser, and/or a coherent laser. A light signal (e.g., “optical signal”)110emitted by a light source may consist of a single pulse, may include a sequence of two or more pulses, or may be a continuous wave.

A lidar system100may use any suitable illumination technique to illuminate the system's field of view (FOV). In some examples, the lidar system100may illuminate the entire FOV simultaneously. Such illumination techniques may be referred to herein as “flood illumination” or “flash illumination.” In some examples, the lidar system100may illuminate fixed, discrete spots throughout the FOV simultaneously. Such illumination techniques may be referred to herein as “fixed spot illumination.” In some examples, the lidar system100may illuminate a line within the FOV and use a scanner (e.g., a 1D scanner) to scan the line over the entire FOV. Such illumination techniques may be referred to herein as “scanned line illumination.” In some examples, the lidar system100may simultaneously illuminate one or more spots within the FOV and use a scanner (e.g., a 1D or 2D scanner) to scan the spots over the entire FOV. Such illumination techniques may be referred to herein as “scanned spot illumination.”

Any suitable optical detector may be used including, without limitation, one or more photodetectors, contact image sensors (CIS), solid-state photodetectors (e.g., photodiodes (PD), single-photon avalanche diode (SPADs), avalanche photodiodes (APDs), etc.), photomultipliers (e.g., silicon photomultipliers (SiPMs), and/or any other device operable to convert light (e.g., optical signals) into electrical signals. In some examples, CIS can be fabricated using a complementary metal-oxide semiconductor (CMOS) process. In some examples, solid-state photodetectors can be fabricated using semiconductor processes similar to CMOS. Such semiconductor processes may use silicon, germanium, indium gallium arsenide, lead (II) sulfide, mercury cadmium, telluride, MoS2, graphene, and/or any other suitable material(s). In some examples, an array of integrated or discrete CIS or solid-state photodetectors can be used to simultaneously image (e.g., perform optical detection across) the lidar device's entire field of view or a portion thereof. In general, solid-state photodetectors may be configured to detect light having wavelengths between 190 nm (or lower) and 1.4 μm (or higher). PDs and APDs configured to detect light having wavelengths of approximately 905 nm, 1300 nm, or 1550 nm are widely commercially available.

The lidar system100may include any suitable combination of measurement technique(s), light source(s), illumination technique(s), and detector(s). Some combinations may be more accurate or more economical on certain conditions. For example, some combinations may be more economical for short-range sensing but incapable of provide accurate measurements at longer ranges. Some combinations may pose potential hazards to eye safety, while other combinations may reduce such hazards to negligible levels.

The control & data acquisition module108may control the light emission by the transmitter104and may record data derived from the return light signal114detected by the receiver106. In some embodiments, the control & data acquisition module108controls the power level at which the transmitter104operates when emitting light. For example, the transmitter104may be configured to operate at a plurality of different power levels, and the control & data acquisition module108may select the power level at which the transmitter104operates at any given time. Any suitable technique may be used to control the power level at which the transmitter104operates. In some embodiments, the control & data acquisition module108or the receiver106determines (e.g., measures) particular characteristics of the return light signal114detected by the receiver106. For example, the control & data acquisition module108or receiver106may measure the intensity of the return light signal114using any suitable technique.

Operational parameters of the transceiver102may include its horizontal field of view (“FOV”) and its vertical FOV. The FOV parameters effectively define the region of the environment that is visible to the specific lidar transceiver102. More generally, the horizontal and vertical FOVs of a lidar system100may be defined by combining the fields of view of a plurality of lidar devices102.

To obtain measurements of points in its environment and generate a point cloud based on those measurements, a lidar system100may scan its FOV. A lidar transceiver system100may include one or more beam-steering components (not shown) to redirect and shape the emitted light signals110and/or the return light signals114. Any suitable beam-steering components may be used including, without limitation, mechanical beam steering components (e.g., rotating assemblies that physically rotate the transceiver(s)102, rotating scan mirrors that deflect emitted light signals110and/or return light signals114, etc.), optical beam steering components (e.g., lenses, lens arrays, microlenses, microlens arrays, beam splitters, etc.), microelectromechanical (MEMS) beam steering components (e.g., MEMS scan mirrors, etc.), solid-state beam steering components (e.g., optical phased arrays, optical frequency diversity arrays, etc.), etc.

In some implementations, the lidar system100may include or be communicatively coupled to a data analysis & interpretation module109, which may receive outputs (e.g., via a connection116) from the control & data acquisition module108and may perform data analysis on those outputs. By way of example and not limitation, connection116may be implemented using wired or wireless (e.g., non-contact communication) technique(s).

FIG.2Aillustrates the operation of a lidar system202, in accordance with some embodiments. In the example ofFIG.2A, two return light signals203and205are shown. Because laser beams generally tend to diverge as they travel through a medium, a single laser emission may hit multiple objects at different ranges from the lidar system202, producing multiple return signals203,205. The lidar system202may analyze multiple return signals203,205and report one of the return signals (e.g., the strongest return signal, the last return signal, etc.) or more than one (e.g., all) of the return signals. In the example ofFIG.2A, lidar system202emits laser light in the direction of near wall204and far wall208. As illustrated, the majority of the emitted light hits the near wall204at area206resulting in a return signal203, and another portion of the emitted light hits the far wall208at area210resulting in a return signal205. Return signal203may have a shorter TOF and a stronger received signal strength compared to return signal205. In both single- and multiple-return lidar systems, it is important that each return signal is accurately associated with the transmitted light signal so that one or more attributes of the object reflecting the light signal (e.g., range, velocity, reflectance, etc.) can be correctly estimated.

Some embodiments of a lidar system may capture distance data in a two-dimensional (“2D”) (e.g., within a single plane) point cloud manner. These lidar systems may be used in industrial applications, or for surveying, mapping, autonomous navigation, and other uses. Some embodiments of these systems rely on the use of a single laser emitter/detector pair combined with a moving mirror to effect scanning across at least one plane. This mirror may reflect the emitted light from the transmitter (e.g., laser diode), and/or may reflect the return light to the receiver (e.g., to the detector). Use of a movable (e.g., oscillating) mirror in this manner may enable the lidar system to achieve 90-180-360 degrees of azimuth (horizontal) view while simplifying both the system design and manufacturability. Many applications require more data than just a 2D plane. The 2D point cloud may be expanded to form a 3D point cloud, in which multiple 2D point clouds are used, each corresponding to a different elevation (e.g., a different position and/or direction with respect to a vertical axis). Operational parameters of the receiver of a lidar system may include the horizontal FOV and the vertical FOV.

FIG.2Bdepicts a lidar system250with a movable (e.g., rotating or oscillating) mirror, according to some embodiments. In the example ofFIG.2B, the lidar system250uses a single emitter252/detector262pair combined with a fixed mirror254and a movable mirror256to effectively scan across a plane. Distance measurements obtained by such a system may be effectively two-dimensional (e.g., planar), and the captured distance points may be rendered as a 2D (e.g., single plane) point cloud. In some embodiments, but without limitation, the movable mirror256may oscillate at very fast speeds (e.g., thousands of cycles per minute).

The emitted laser signal251may be directed to a fixed mirror254, which may reflect the emitted laser signal251to the movable mirror256. As movable mirror256moves (e.g., oscillates), the emitted laser signal251may reflect off an object258in its propagation path. The reflected return signal253may be coupled to the detector262via the movable mirror256and the fixed mirror254. In some embodiments, the movable mirror256is implemented with mechanical technology or with solid state technology (e.g., MEMS).

FIG.2Cdepicts a 3D lidar system270, according to some embodiments. In the example ofFIG.2C, the 3D lidar system270includes a lower housing271and an upper housing272. The upper housing272includes a cylindrical shell element273constructed from a material that is transparent to infrared light (e.g., light having a wavelength within the spectral range of 700 to 1,700 nanometers). In one example, the cylindrical shell element273is transparent to light having wavelengths centered at 905 nanometers.

In some embodiments, the 3D lidar system270includes a lidar transceiver, such as transceiver102shown inFIG.1, operable to emit laser beams276through the cylindrical shell element273of the upper housing272. In the example ofFIG.2C, each individual arrow in the sets of arrows275,275′ directed outward from the 3D lidar system270represents a laser beam276emitted by the 3D lidar system. Each beam of light emitted from the system270(e.g., each laser beam276) may diverge slightly, such that each beam of emitted light forms a cone of light emitted from system270. In one example, a beam of light emitted from the system270illuminates a spot size of 20 centimeters in diameter at a distance of 100 meters from the system270.

In some embodiments, the transceiver102emits each laser beam276transmitted by the 3D lidar system270. The direction of each emitted beam may be determined by the angular orientation ω of the transceiver's transmitter104with respect to the system's central axis274and by the angular orientation Ψ of the transmitter's movable mirror (e.g., similar or identical to movable mirror256shown inFIG.2B) with respect to the mirror's axis of oscillation (or rotation). For example, the direction of an emitted beam in a horizontal dimension may be determined by the transmitter's angular orientation ω, and the direction of the emitted beam in a vertical dimension may be determined by the angular orientation Ψ of the transmitter's movable mirror. Alternatively, the direction of an emitted beam in a vertical dimension may be determined the transmitter's angular orientation ω, and the direction of the emitted beam in a horizontal dimension may be determined by the angular orientation Ψ of the transmitter's movable mirror. (For purposes of illustration, the beams of light275are illustrated in one angular orientation relative to a non-rotating coordinate frame of the 3D lidar system270and the beams of light275′ are illustrated in another angular orientation relative to the non-rotating coordinate frame.)

The 3D lidar system270may scan a particular point (e.g., pixel) in its field of view by adjusting the angular orientation ω of the transmitter and the angular orientation Ψ of the transmitter's movable mirror to the desired scan point (ω, Ψ) and emitting a laser beam from the transmitter104. Accordingly, the 3D lidar system270may systematically scan its field of view by adjusting the angular orientation ω of the transmitter and the angular orientation Ψ of the transmitter's movable mirror to a set of scan points (ωi, Ψj) and emitting a laser beam from the transmitter104at each of the scan points.

Assuming that the optical component(s) (e.g., movable mirror256) of a lidar transceiver remain stationary during the time period after the transmitter104emits a laser beam110(e.g., a pulsed laser beam or “pulse” or a CW laser beam) and before the receiver106receives the corresponding return beam114, the return beam generally forms a spot centered at (or near) a stationary location LO on the detector. This time period is referred to herein as the “ranging period” or “listening period” of the scan point associated with the transmitted beam110and the return beam114.

In many lidar systems, the optical component(s) of a lidar transceiver do not remain stationary during the ranging period of a scan point. Rather, during a scan point's ranging period, the optical component(s) may be moved to orientation(s) associated with one or more other scan points, and the laser beams that scan those other scan points may be transmitted. In such systems, absent compensation, the location Li of the center of the spot at which the transceiver's detector receives a return beam114generally depends on the change in the orientation of the transceiver's optical component(s) during the ranging period, which depends on the angular scan rate (e.g., the rate of angular motion of the movable mirror256) and the range to the object112that reflects the transmitted light. The distance between the location Li of the spot formed by the return beam and the nominal location LO of the spot that would have been formed absent the intervening rotation of the optical component(s) during the ranging period is referred to herein as “walk-off.”

Referring toFIG.2D, a block diagram of a transmitter-receiver optical subassembly (TROSA)281is shown, according to some embodiments. In some embodiments, the TROSA281may include a TOSA280, an optical detector287, a beam splitter283, signal conditioning electronics289, an analog to digital (A/D) converter290, controller292, and digital input/output (I/O) electronics293. In some embodiments, the TROSA components illustrated inFIG.2Dare integrated onto a common substrate282(e.g., printed circuit board, ceramic substrate, etc.). In some embodiments, the TROSA components illustrated inFIG.2Dare individually mounted to a common substrate282. In some embodiments, groups of these components are packaged together and the integrated package(s) is/are mounted to the common substrate.

The TOSA280may include one or more light sources and may operate the light source(s) safely within specified safety thresholds. A light source of the TOSA may emit an optical signal (e.g., laser beam)285.

A return signal284may be detected by the TROSA281in response to the optical signal285illuminating a particular location. For example, the optical detector287may detect the return signal284and generate an electrical signal288based on the return signal284. The controller292may initiate a measurement window (e.g., a period of time during which collected return signal data are associated with a particular emitted light signal285) by enabling data acquisition by optical detector287. Controller292may control the timing of the measurement window to correspond with the period of time when a return signal is expected in response to the emission of an optical signal285. In some examples, the measurement window is enabled at the time when the optical signal285is emitted and is disabled after a time period corresponding to the time of flight of light over a distance that is substantially twice the range of the lidar device in which the TROSA281operates. In this manner, the measurement window is open to collect return light from objects adjacent to the lidar device (e.g., negligible time of flight), objects that are located at the maximum range of the lidar device, and objects in between. In this manner, other light that does not contribute to a useful return signal may be rejected.

In some embodiments, the signal analysis of the electrical signal288produced by the optical detector287is performed by the controller292, entirely. In such embodiments, the signals294provided by the TROSA281may include an indication of the distances determined by controller292. In some embodiments, the signals294include the digital signals291generated by the A/D converter290. These raw measurement signals291may be processed further by one or more processors located on board the lidar device or external to the lidar device to arrive at a measurement of distance. In some embodiments, the controller292performs preliminary signal processing steps on the signals291and the signals294include processed data that are further processed by one or more processors located on board the lidar device or external to the lidar device to arrive at a measurement of distance.

In some embodiments a lidar device (e.g., a lidar device100,202,250, or270) includes multiple TROSAs281. In some embodiments, a delay time is enforced between the firing of each TROSA and/or between the firing of different light sources within the same TROSA. In some examples, the delay time is greater than the time of flight of the light signal285to and from an object located at the maximum range of the lidar device, to reduce or avoid optical cross-talk among any of the TROSAs281. In some other examples, an optical signal285is emitted from one TROSA281before a return signal corresponding to a light signal emitted from another TROSA281has had time to return to the lidar device. In these embodiments, there may be sufficient spatial separation between the areas of the surrounding environment interrogated by the light signals of these TROSAs to avoid optical cross-talk.

In some embodiments, digital I/O293, A/D converter290, and signal conditioning electronics289are integrated onto a single, silicon-based microelectronic chip. In another embodiment, these same elements are integrated into a single gallium-nitride or silicon based circuit that also includes components of the TOSA280(e.g., an illumination driver). In some embodiments, the A/D converter290and controller292are combined as a time-to-digital converter.

As depicted inFIG.2D, return light284reflected from the surrounding environment is detected by optical detector287. In some embodiments, optical detector287includes one or more avalanche photodiodes (APDs) and/or single-photon avalanche diodes (SPADs). Any suitable optical detector may be used. In some embodiments, optical detector287generates an output signal288that is amplified by signal conditioning electronics289. In some embodiments, signal conditioning electronics289include an analog trans-impedance amplifier. However, in general, the amplification of output signal288may include multiple amplifier stages. In this sense, an analog transimpedance amplifier is provided by way of non-limiting example, as many other analog signal amplification schemes may be used.

In some embodiments, the amplified signal is communicated to A/D converter290, and the digital signals generated by the A/D converter are communicated to controller292. Controller292may generate an enable/disable signal to control the timing of data acquisition by ADC290.

As depicted inFIG.2D, the optical signal285emitted from the TROSA281and the return signal284directed toward the TROSA281share a common path within the lidar device. In the embodiment depicted inFIG.2D, the return light284is separated from the emitted light285by a beam splitter283. The beam splitter may direct the light285emitted by the TOSA280toward the lidar device's environment, and direct the return light284to the optical detector287. Any suitable beam splitter may be used, including (without limitation) a polarizing beam splitter, nonpolarizing beam splitter, dielectric film, etc.). Some non-limiting examples of suitable beam splitters are described in International Patent Publication No. WO 2017/164989.

Training Datasets Used in Lidar-Based ML

In various examples, a lidar system can be utilized in autonomous transportation, in which one or more lidar sensors are arranged on a vehicle to collect environment data, and lidar-based ML algorithms analyze the environment data. To enable the vehicle to safely and accurately navigate the environment, the ML algorithms should be able to distinguish between various objects detected in the environment data, including vehicles (e.g., cars, trucks, motorcycles, and bicycles), pedestrians, animals, plants, lamp posts, street signs, and other objects. The ability of the ML algorithms to identify such objects can be improved by training the ML algorithms with accurate training data representing a wide variety of environments that may be encountered by the vehicle. Such environments can include a background scene (e.g., a residential area, a downtown area, a highway, a road, a sidewalk, a city, natural features, and/or natural terrain) with foreground objects (e.g., vehicles, pedestrians, trees, etc.).

FIG.3Aillustrates three types of datasets that can be used to train a lidar-based ML algorithm for autonomous driving, in accordance with some embodiments. The three types of datasets include: drive data302, simulated data304, and artificially real data306. Selecting which type of training dataset to use can depend on (i) how accurate the ML algorithm will be when trained with the dataset, (ii) how expensive the dataset is to generate (e.g., including a cost of annotating objects in the dataset), and (iii) how easy it is to scale the dataset (e.g., to cover a large number of environments and objects, in various combinations and permutations). In other words, each of the datasets302,304, and306can be assessed based on accuracy, expense, and scalability, as shown in columns308.

To generate the drive data302dataset, one or more lidar sensors can be placed on a vehicle and used to collect point cloud data as the vehicle is traveling through an environment (e.g., driving down a city street). The collected data can then be annotated (e.g., to label objects in the environment) and used to train an ML algorithm or model. Because the drive data302is generated using a lidar sensor in a real environment, the accuracy of ML models trained with such data can be high. The cost to generate the drive data302, however, can also be high, due to time and effort associated with collecting and annotating such data (e.g., 3D lidar data). Further, the drive data302may not be scalable. To generate drive data302for a scene having a different background and/or different foreground objects, for example, the vehicle may need to travel through that particular scene so that lidar data for the scene can be collected and annotated.

In various cases, the simulated data304can include synthetic point cloud data generated using a 3D virtual model, which can utilize or include, for example, a mesh of a scene, a virtual lidar sensor, and a 3D rendering engine. Simulated data304can be highly scalable and manipulable, can be easy to generate, can avoid privacy concerns, and, more importantly, can fill data gaps where real data is difficult to obtain or not feasible. Use of simulated data304in lidar-based ML algorithms can be attractive because the simulated data304provides freedom in scene creation; however, there are certain drawbacks associated with the use of simulated data304. For example, compared to a real or physical lidar sensor, the 3D virtual model (e.g., mesh) used to generate point clouds for the simulated data304may not represent the shape or reflectance of each surface accurately. Additionally, the 3D virtual models (e.g., created by mesh artists) can be difficult to scale and/or can be expensive to generate for a large number of background scenes and foreground objects, in various combinations. Further, simulated data304may be unrealistic due to a lack of noise present in real data, which can be difficult to model and/or can vary depending on the type of lidar sensor being used. Simulated data304may therefore be inaccurate, compared to lidar data obtained with a physical sensor in a real environment.

The inaccuracies associated with simulated data304are illustrated in Table 1, below, which includes accuracy values for two different ML algorithms and two different datasets. The two ML algorithms include an ML algorithm trained using simulated data304(referred to as “simulation-based ML algorithm”) and an ML algorithm trained using drive data302(referred to as “real data-based ML algorithm”). The accuracy of these ML algorithms was evaluated using two different datasets: a “simulated” dataset (including simulated data304) and a “real” dataset (including drive data302). Accuracy is presented as average recall rate, which is a percentage of objects that were identified accurately by the ML algorithms for each dataset. The table indicates that the simulation-based ML algorithm had a higher accuracy when presented with the simulated dataset (i.e., 90.3% average recall rate) and a lower accuracy when presented with the real dataset (i.e., 65.6% average recall rate). The real data-based ML algorithm had a low accuracy when presented with the simulated dataset (i.e., 16.2% average recall rate) and higher accuracy when presented with the real dataset (i.e., 75.2% average recall rate). The accuracy shortcomings of the two models presented in Table 1 indicate that a new type of training dataset is needed that is accurate, scalable, and inexpensive to generate.

TABLE 1Average recall rate for two ML algorithms and two datasets.Average Recall RateSimulation-BasedReal Data-BasedDatasetML AlgorithmML AlgorithmSimulated90.3%16.2%Real65.6%75.2%

Referring again toFIG.3A, the artificially real data306dataset can be generated from point cloud data obtained from one or more physical lidar sensors in a physical environment. For example, point cloud data can be obtained for multiple background scenes and for multiple foreground objects, and the artificially real data306dataset can include a combination of the point cloud data for one of the background scenes and one or more of the foreground objects placed within the background scene. Compared to the drive data302and simulated data304datasets, the artificially real data306dataset can be the least expensive to generate. Also, the artificially real data306can be based on real lidar sensor data (e.g., obtained using a physical lidar sensor), which avoids inaccuracies associated with simulated data304, as described above. Further, the artificially real data306has the advantage of being scalable to cover any desired combination of a background scene and one or more foreground objects. The procedure for generating an artificially real data306dataset is described in more detail below, for example, with reference toFIGS.4A-5.

Still referring toFIG.3A, once a training dataset has been generated (e.g., including point cloud data and object annotations), the dataset can be used to train an ML model310(e.g., a neural network). The trained ML model310can then receive data from a lidar sensor (e.g., point cloud data) and identify objects (e.g., roads, vehicles, pedestrians, trees, etc.) in an environment being sensed by the lidar sensor. Based on the identified objects, the ML model310and/or other software or hardware components can provide instructions to a vehicle for navigating the environment. This can include, for example, determining a path and/or an action for the vehicle (e.g., calculating a steering angle and/or a speed required to avoid an object or stay within a highway lane). In general, an accuracy312of the ML model310for identifying objects and providing vehicle instructions can be improved using the systems and methods described herein.

FIG.3Billustrates various factors to be considered when generating a training dataset for a lidar-based ML model, in accordance with some embodiments. In various examples, a trained lidar-based ML model should be robust (e.g., accurate and efficient) for a wide variety of permutations and combinations of factors, including, for example, background scene352(e.g., street scene, residential scene, city scene, mountain scene, nighttime, daytime, etc.), foreground objects354that can be present in the scene352(e.g., cars, buses, and pedestrians), an orientation356and/or position of each object in the scene352, a type of lidar sensor358being used, and/or a range360(or signal-to-noise ratio) for the sensor358. For example, the ML model should be able to identify an object354in a variety of scenes352, at a variety of distances from the sensor358(e.g., 5 m, 50 m, 100 m, or 150 m, or more), and for a variety of object orientations (e.g., facing the sensor or facing away from the sensor). The ML model should consider the type of sensor358being used, given that the scene352and objects354may look different depending on the sensor type. A training dataset covering all these permutations and combinations362can be large (e.g., including over one million lidar scans or scenes with objects) and difficult to generate. Advantageously, the systems and methods described herein can reduce the time and cost associated with generating such training datasets.

Artificially Real Lidar Scene Generation

In various examples, “artificially real” training datasets can be generated by combining lidar point cloud data for a background scene with lidar point cloud data for one or more foreground objects. Such datasets can be referred to as “real” because they contain point cloud data generated with real or physical lidar sensors in real or physical environments. This is in contrast to simulated point cloud data generated with a 3D virtual mesh, as described above. Such datasets can be referred to as “artificially” real because they can include point cloud data for a background scene and one or more foreground objects in a combination that may not have existed in reality or may not have been measured or scanned by a physical lidar sensor all at once. For example, the artificially real lidar training dataset can include point cloud data representing a background scene and one or more objects inserted into the background scene, at various object positions and orientations. The point cloud data for the background scene and the point cloud data for the objects can be collected during separate lidar measurements or scans (e.g., one scan to collect data for the background scene and a separate scan(s) to collect data for the object(s)). The point cloud data for the background scene and the objects can then be merged together into a single set of point cloud data representing the objects placed within the background scene. Compared to the simulated data or drive data described herein, artificially real datasets can be easier to generate, can have improved scalability, and can result in ML models having more accurate object recognition. In various examples, an “artificially real” dataset or scene can also be referred to herein as a “generated lidar scene” or simply as a “lidar scene.”

In general, the training datasets used to train lidar-based ML models can include or represent data (e.g., point cloud data) for both static objects and dynamic objects. The static objects can include stationary objects in a background scene, such as, for example, buildings, trees, utility poles, road signs, guardrails, etc. The dynamic objects can include movable objects (e.g., in a foreground), such as, for example, cars, buses, bicycles, pedestrians, etc. In a lidar system, the background scene (and the static objects) can change or move as a vehicle changes location, for example, from road to road, city to city, etc. As the background scene changes, the static objects in the background scene can also change. The dynamic objects can have high variability in shape, reflectance, position, and orientation within a given background scene and/or with respect to lidar sensors. For example, the dynamic objects can be present in a wide variety of types, numbers, positions, and/or orientations, in a single background scene.

FIG.4Aillustrates a process for decoupling a lidar point cloud into a background scene and one or more foreground objects, in accordance with some embodiments. Point cloud data for a scene400can be obtained by performing a scan using a lidar sensor. Dynamic objects402in the scene400can be identified in the point cloud data (e.g., manually or automatically). This can involve, for example, taking multiple scans to identify objects that moved from scan-to-scan. In some cases, to avoid false positives, only objects associated with a high confidence score (e.g., over a pre-defined threshold) may be recognized as objects. The dynamic objects402can be annotated and/or labeled (e.g., with boxes encompassing the objects). Such annotating or labeling can be performed manually or automatically (e.g., for supervised or unsupervised training). The annotated dynamic objects402can then be decoupled404or removed from the scene400to create an “empty” background scene406(e.g., with no dynamic objects402) and separate foreground objects408(representing the original dynamic objects402).

In various examples, point cloud data for the background scene406and for the foreground objects408can be stored and maintained in one or more databases. The stored point cloud data can then be used to generate (e.g., using simulation techniques) lidar scenes or datasets having the background scene400and dynamic objects402in various permutations and combinations. For example, the foreground objects408may be placed at different positions and orientations within the background scene406to create a variety of scenes represented by point cloud data. Advantageously, the labels or annotations identifying the foreground objects408can remain attached to the foreground objects408during the lidar scene generation process. Once a foreground object408has been labeled, for example, the foreground object408can be retrieved (e.g., from a database), placed into a scene, repositioned, and/or reoriented, as desired, and the label or annotation can follow the object408. Further, the approach of decoupling foreground objects from the map can make it easier to generate training data for new background scenes and/or new objects. For example, to train the model for a new city, a map can be generated for the new city, and then foreground objects can be inserted into the map, at desired positions and orientations. The decoupled approach is more flexible and efficient than previous approaches in which complete scenes are scanned all at once, and the arrangement of objects is limited to how events unfolded in the real world.

Advantageously, the artificially real training datasets described herein can be generated from lidar data (e.g., 3D maps) obtained with real or physical lidar sensors. Because the point cloud data for the background and the objects (e.g., static objects, dynamic objects, and foreground objects) is obtained from a physical lidar sensor, sensor noise and object reflectance may be captured by or represented in the point cloud data. This results in more accurate training data and, once trained, more accurate ML models. In general, point cloud data for the background scene and foreground objects can be blended in various permutations and combinations, some of which may be difficult or impractical to encounter in a physical situation.

FIG.4Billustrates an example method420in which a lidar scene generator432, a dynamic object list selector438, and a scene synthesizer440are used to generate an artificially real lidar scene426(alternatively referred to as an artificially real lidar dataset). In various examples, the scene generation process can include: (1) creating a static map library422of background scenes; (2) creating a dynamic object library424of dynamic objects; and (3) synthesizing various combinations and permutations of background scenes and dynamic objects to create multiple artificially real lidar scenes426. The background scenes, dynamic objects, and artificially real lidar scenes426can include or be defined by point cloud data obtained from one or more physical lidar sensors. One or more steps of the method420can be performed by the control & data acquisition module108and/or the data analysis & interpretation module109, described above.

In some examples, to create the static map library422, background scenes can be scanned using one or more physical lidar sensors, and data from the scan can be processed by a lidar system to generate maps428of the background scenes. Each map in the static map library422can be or include a point cloud representation of a background scene. The point cloud representation can have a high density (e.g., about 10,000 points per square meter) and/or can include points located at a variety of angles and distances with respect to the lidar sensor. Each point in the point cloud can represent a point on a surface of an object in a background scene. The dense point cloud for a map can be generated while a lidar sensor is traveling through the background scene, such that point cloud data can be collected from multiple sensor positions.

The maps in the static map library422can represent lidar scans for a variety of background scenes (e.g., roads, cities, rural areas, etc.). In some examples, a static map (alternatively referred to herein as a “map”) can include a background scene with one or more static objects but no dynamic objects (e.g., foreground objects). To generate a map, a lidar sensor on a vehicle may be used to sweep the same area more than once, and differences between the scans can be used to identify any moving or dynamic objects, which can be removed to obtain an empty background scene. The generated maps, stored in the static map library422, can be used as starting points (e.g., static, background scenes) for constructing artificially real lidar scenes426. In various instances, for example, a static map or background scene of point cloud data can be used to generate a variety of artificially real lidar scenes in which point cloud data for one or more dynamic objects (e.g., a car, a pedestrian, etc.) are placed in one or more locations of the scene. The artificial scenes generated in this matter can be used to train one or more lidar-based ML models, as described herein.

In various examples, an artificial scene can be constructed that includes point cloud representations of a background (e.g., with static objects) and foreground objects (e.g., dynamic objects) and includes a sensor trajectory430defining one or more locations where a lidar sensor may be deployed in the scene. For example,FIG.4Cdepicts an artificial scene450in which a sensor trajectory430is defined by or includes checkpoints452through468representing lidar sensor locations for the scene450. The sensor trajectory430and checkpoints452through468may be chosen to represent desired lidar scan locations for the scene450. For example, the number and/or locations of the checkpoints in the sensor trajectory430may be chosen based on the type of scene450. In some examples, more checkpoints (or a higher density of checkpoints) may be needed in regions having many foreground objects (e.g., crowded traffic intersections) than in regions having few or no foreground objects (e.g., remote roads). Additionally or alternatively, the sensor trajectory430and checkpoints may be chosen based on a high variability of the scenes (e.g., wide variations in foreground object densities and types) and/or on lidar sensor parameters, such as distance requirements or ranges. With the lidar sensor locations defined, as indicated by checkpoints in the sensor trajectory430, one or more dynamic objects can be placed in the scene450so that ML models can be trained to recognize the objects from the perspective of each checkpoint location.

In some instances, ML models can be trained to recognize objects as they may appear to a lidar sensor traveling at a specified velocity from one checkpoint to the next along the sensor trajectory430. By presenting the ML models with a sequence of point cloud data from the perspective of each checkpoint location, the ML models can learn to recognize objects and make decisions based on how the objects may be presented to the models in real time (e.g., as a vehicle is traveling down the road). This can allow the ML models to consider velocity differences (e.g., relative velocities), changes in orientation and/or position, etc., between the vehicle or lidar sensor and one or more objects in the point cloud. For example, the ML model can learn to recognize when an object is moving towards or into a path of a vehicle, such that corrective action may be necessary to avoid a collision.

In various implementations, the placement of the dynamic objects in the scene450may be based on the sensor trajectory430, distances and angles with respect to the checkpoint locations, and/or other requirements. For example, the dynamic objects may be placed in realistic locations within the scene, according to the positions of background objects, such as sidewalks, driveways, intersections, crosswalks, etc. Referring again toFIG.4B, the lidar scene generator432can be used to create the map (e.g., the scene450) having the empty background and the sensor trajectory430, including one or more checkpoints.

There are several advantages associated with building the static map library422of background scenes. For example, point cloud data for the background scenes can be captured (e.g., automatically) using a lidar sensor on a vehicle in a short span of time (e.g., less than a few seconds or minutes). Because the point cloud data is obtained for a physical environment using a physical lidar sensor, there may be no need to generate point cloud data through simulations involving a virtual environment with simulated surface geometries and reflectance. Use of a physical environment and a physical lidar sensor can allow the signal-to-noise ratio (SNR) of lidar sensors to be captured in the maps. By comparison, the sensor SNR, surface geometries, and surface reflectance can be difficult to model when generating point cloud data in simulators.

In some examples, the maps can be used to generate training datasets for lidar sensors that are different from the lidar sensors used to capture the map data. For example, a dense point cloud map of an environment can look the same regardless of the sensor type or model used to generate the map. Accordingly, to extract point cloud data from the map for a specific sensor model, a virtual representation of the sensor can be placed into the map at a desired location (e.g., at a checkpoint in a trajectory), and beam locations can be predicted for the sensor (e.g., based on a sweeping pattern and/or transmitter orientations for the sensor). Data points can then be extracted from the map that resemble the sensor's view of the map. This can involve, for example, determining where the predicted beam locations intersect the dense point cloud and identifying and extracting data points in the map that correspond to or are closest to the intersection locations. In some instances, for example, a dense point cloud map can be built with a first type of sensor, and then a virtual representation of a second type of sensor (e.g., a different sensor model) can be placed into the map (e.g., at a checkpoint). Data points can then be extracted from the map using the sweeping pattern and laser configuration of the second type of sensor, and the extracted points can represent a scan that would be obtained using the second type of sensor. This allows a map generated using one type of sensor to be used to generate point cloud data for a different type of sensor.

Still referring toFIG.4B, in addition to creating the maps for the static map library422and the sensor trajectories, the method420can involve creating point cloud representations of dynamic objects for storage in a dynamic object library424. The dynamic objects can be or include, for examples, cars, bicycles, pedestrians, buses, or other objects that can be generally compact. In various examples, point cloud data for dynamic objects can be obtained by scanning the dynamic objects using a physical lidar sensor. The dynamic objects can be scanned at a variety of orientations and angles with respect to the physical lidar sensors. This allows point cloud representations for a dynamic object to be obtained for various angles and orientations of the dynamic object. Such scans can capture in-class variations (e.g., different car models, pedestrian poses, pedestrian sizes, etc.) and/or true reflectance characteristics for the dynamic objects. In some examples, a large object turntable434can be used to scan the dynamic objects. A dynamic object can be placed on the turntable434and scanned by one or more lidar sensors at a variety of viewpoints, angles, and/or distances, to obtain multiple views436or point cloud representations for the object, from the perspective of the lidar sensor(s).

Example turntables472and474are shown inFIGS.4D and4E, respectively. The turntables472and474can be installed indoors or outdoors and used to rotate dynamic objects to desired orientations when performing lidar scans of the objects. For example, a car475or other dynamic object can be parked on the turntable474and rotated so that point cloud data for the car475can be collected from one or more lidar sensors at various distances and/or angles.

Referring toFIG.4F, a lidar sensor476can be placed on a robot477that can move the lidar sensor476to a desired location and/or orientation with respect to the object being scanned. The lidar sensor476may be positioned at different distances and/or different angles to collect multi-view data of the object (e.g., the car475). The scan performed by the lidar sensor476may capture geometric aspects of the object (e.g., shape and size) rather than or in addition to color or other attributes of the object.

Referring again toFIG.4B, there are several advantages to build the dynamic object library424. For example, the dynamic object library424can store lidar point cloud data for dynamic objects at various viewpoints and distances with respect to one or more lidar sensors. Also, since parameters for the objects, turntables, and the lidar sensors are known, training data for the objects (e.g., point cloud data) can be more easily annotated, either manually or automatically. Moreover, the dynamic object library424enables a lidar-based ML model to be exposed to lidar data for new dynamic objects, without having to search for and scan the objects in real-world environments (e.g., waiting for a type of car to appear on the road). In general, the dynamic object library424facilitates the creation, storage, and retrieval of lidar point cloud data for training one or more lidar-based ML models.

In some embodiments, data stored in the dynamic object library424for dynamic objects can include various annotations or labels, such as, for example: one or more bounding boxes (e.g., cubic or rectangular boxes) surrounding an object; a label (e.g., a name) identifying an object; an indication of a type of view of an object (e.g., front view, back view, side view, etc.) during a scan; an indication of a distance between a lidar sensor and an object during a scan; an indication of a type of relative motion between the object and the sensor during a scan, etc. An object list selector438may be provided for selecting objects from the dynamic object library424. For example, a user can use the object list selector438to locate scan data for an object in a particular orientation and/or distance with respect to a lidar sensor.

Still referring toFIG.4B, the method420utilizes the scene synthesizer440to generate artificially real lidar scenes426. For example, the scene synthesizer440can receive as input a lidar scene from the lidar scene generator432. The lidar scene can include a point cloud representation of a background scene from the static map library422. Additionally or alternatively, the lidar scene can include a sensor trajectory430that defines one or more locations (e.g., virtual locations) for a lidar sensor within the lidar scene. The scene synthesizer440can also receive as input point cloud representations of one or more dynamic objects, which can be obtained from the dynamic object library424using the dynamic object list selector438. The scene synthesizer440can be used to place the one or more dynamic objects within the lidar scene at desired positions and orientations. For example, the scene synthesizer440can place point cloud representations of one or more cars, pedestrians, or other objects into a point cloud representation of the lidar scene. Such placements can be made manually and/or automatically. For example, the scene synthesizer440can place cars, pedestrians, or other objects into the lidar scene in positions and/or orientations at which the objects would likely be encountered in real-world situations. For example, pedestrians can be placed on sidewalks or crosswalks, and cars can be placed in proper lanes within roads. Additionally or alternatively, to provide robust training for lidar-based ML models, scenes can be created that are rare or unlikely to be encountered in real-world situations. For example, a car can be placed sideways in the middle of a lane, a pedestrian can be placed in the middle of a highway, etc.

In various examples, the scene generator432and the scene synthesizer440can use simulation techniques to generate artificially real lidar scenes426from the point cloud data for the background scene and objects. To achieve this, the lidar scene generator432may first generate a static scene from the point cloud map for the background scene. The scene generator432can project rays or laser beams from a virtual lidar sensor location in map. The scene generator432can determine where the rays intersect static object surfaces and can choose point cloud locations that are closest to the determined intersection locations. The scene generator432can recognize shadows cast by one or more static objects. For example, a pole between the sensor and the building can cast a shadow onto the building. The shadow may or may not be present or visible in the map, but the scene generator432can recognize the existence of the shadow from the perspective of the sensor.

Once the static scene has been generated by the scene generator432, the static scene may be augmented with dynamic objects using the scene synthesizer440. The scene synthesizer440may receive the static scene from the scene generator432and a list of dynamic objects from the dynamic object list selector438. The scene synthesizer440can then drop dynamic objects at desired locations in the static scene. In various examples, the scene synthesizer440can calculate shadows that dynamic objects cast on the static objects. For example, a pedestrian (a dynamic object) between the sensor and a building (a static object) can cast a shadow onto the building. The scene synthesizer440can remove or ignore point cloud data in shadows or in locations that are otherwise not visible from a current position or checkpoint of the lidar sensor. Advantageously, the artificially real lidar scenes426improve training accuracy by capturing sensor signal-to-noise ratios, surface geometries, and surface reflectivity associated with physical lidar sensors in physical environments.

FIG.4Gillustrates an example artificially real lidar scene492generated from a background scene482(e.g., from the static map library422), one or more dynamic objects490(e.g., from the dynamic object library424), and information488for one or more lidar sensors486(e.g., sensor type and sensor location), as described herein. The information488for the one or more lidar sensors486can include, for example, a sensor type (e.g., sensor model or product name) and/or a position or checkpoint484for a sensor within the background scene482. The artificially real lidar scene492can include annotations for the dynamic objects494that have been placed in the artificially real lidar scene492. The artificially real lidar scene492can be used to train one or more lidar-based ML models, as described herein.

FIG.5shows a flowchart of method500for training a lidar-based machine learning model, in accordance with some embodiments. A map of a background scene is obtained at step502. The map includes 3D point cloud data generated using one or more lidar sensors. The background scene can include or represent, for example, a residential area, a downtown area, a highway, a road, a sidewalk, a city, natural features, natural terrain, or any combination thereof. In some embodiments, the map of the background scene can be obtained by performing one or more scans of the background scene using the one or more lidar sensors, identifying a dynamic object in the one or more scans, and removing the dynamic object from the one or more scans.

At step504, at least one point cloud representation of at least one foreground object is obtained. The at least one point cloud representation can include 3D point cloud data generated using one or more lidar sensors for the at least one foreground object. The one or more lidar sensors used for step504can be the same as or different from the one or more lidar sensors used for step502. The foreground object can include or represent, for example, a car, a bus, a motorcycle, a bicycle, a vehicle, a pedestrian, a person, an animal, or any combination thereof. In some embodiments, the at least one point cloud representation can be retrieved from a library of point cloud representations for a number of foreground objects.

At step506, a lidar scene is generated by placing the at least one point cloud representation within the map. A sensor trajectory defining one or more locations (e.g., virtual locations) for a lidar sensor within the lidar scene can be used to generate the lidar scene.

At step508, a machine learning model is trained using the generated lidar scene. The machine learning model can be trained to identify objects (e.g., roads, vehicles, pedestrians, trees, etc.) in an environment being sensed by the one or more lidar sensors. Based on the identified objects, the machine learning model can provide instructions to a vehicle for navigating the environment.

In certain examples, the machine learning model training techniques described herein can be used for radio detection and ranging (RADAR) devices in addition to or instead of lidar devices. For example, a machine learning model can be trained based on a background map and foreground objects generated using one or more RADAR sensors. The background map can be obtained by performing one or more scans of a background scene using the one or more RADAR sensors (e.g., to generate a RADAR point cloud of the background scene). One or more dynamic objects can be identified in the background scene scan data and removed, if desired. Foreground objects can be scanned using the one or more RADAR sensors (e.g., to generate RADAR point cloud data for the foreground objects). Training data can be generated by placing RADAR scan data for one or more foreground objects in the RADAR scan data for the background map, and the machine learning model can be trained using the training data. Alternatively or additionally, the machine learning model can be trained with a combination of RADAR scan data and lidar point cloud data. The trained machine learning model can be used to identify objects in an environment sensed by one or more RADAR sensors and/or lidar sensors. For example, a vehicle can have a RADAR sensor and/or a lidar sensor that generate scan data for a surrounding environment. The resulting scan data can be provided to the trained machine learning model, and the machine learning model can be used to identify objects in the surrounding environment. The object identifications from the machine learning model can be used by a vehicle control system to control the vehicle.

Some Examples of Continuous Wave (CW) Lidar Systems

As discussed above, some lidar systems may use a continuous wave (CW) laser to detect the range and/or velocity of targets, rather than pulsed TOF techniques. Such systems include continuous wave (CW) coherent lidar systems and frequency modulated continuous wave (FMCW) coherent lidar systems. For example, any of the lidar systems100,202,250, and270described above can be configured to operate as a CW coherent lidar system or an FMCW coherent lidar system.

Lidar systems configured to operate as CW or FMCW systems can avoid the eye safety hazards commonly associated with pulsed lidar systems (e.g., hazards that arise from transmitting optical signals with high peak power). In addition, coherent detection may be more sensitive than direct detection and can offer better performance, including single-pulse velocity measurement and immunity to interference from solar glare and other light sources, including other lidar systems and devices.

FIG.6illustrates an exemplary CW coherent lidar system600configured to determine the radial velocity (or speed) of a target. Lidar system600includes a laser602configured to produce a laser signal which is provided to a splitter604. The laser602may provide a laser signal having a substantially constant laser frequency.

In one example, the splitter604provides a first split laser signal Tx1to a direction selective device606, which provides (e.g., forwards) the signal Tx1to a scanner608. In some examples, the direction selective device606is a circulator. The scanner608uses the first laser signal Tx1to transmit light emitted by the laser602and receives light reflected by the target610(e.g., “reflected light” or “reflections”). The reflected light signal Rx is provided (e.g., passed back) to the direction selective device606. The second laser signal Tx2(provided by the splitter604) and the reflected light signal Rx are provided to a coupler (also referred to as a mixer)612. The mixer may use the second laser signal Tx2as a local oscillator (LO) signal and mix it with the reflected light signal Rx. The mixer612may be configured to mix the reflected light signal Rx with the local oscillator signal LO. The mixer612may provide the mixed optical signal to differential photodetector614, which may generate an electrical signal representing the beat frequency fbeatof the mixed optical signals, where fbeat=|fTx2−fRx| (the absolute value of the difference between the frequencies of the mixed optical signals). In some embodiments, the current produced by the differential photodetector614based on the mixed light may have the same frequency as the beat frequency fbeat. The current may be converted to a voltage by an amplifier (e.g., a transimpedance amplifier (TIA)), which may be provided (e.g., fed) to an analog-to-digital converter (ADC)616configured to convert the analog voltage signal to digital samples for a target detection module618. The target detection module618may be configured to determine (e.g., calculate) the radial velocity of the target610based on the digital sampled signal with the beat frequency fbeat.

In one example, the target detection module618may identify Doppler frequency shifts using the beat frequency fbeatand determine the radial velocity of the target610based on those shifts. For example, the radial velocity of the target610can be calculated using the following relationship:

fd=2λ⁢vt
where, fdis the Doppler frequency shift, λ is the wavelength of the laser signal, and vtis the radial velocity of the target610. In some examples, the direction of the target610is indicated by the sign of the Doppler frequency shift fd. For example, a positive signed Doppler frequency shift may indicate that the target610is traveling towards the system600and a negative signed Doppler frequency shift may indicate that the target610is traveling away from the system600.

In one example, a Fourier Transform calculation is performed using the digital samples from the ADC616to recover the desired frequency content (e.g., the Doppler frequency shift) from the digital sampled signal. For example, a controller (e.g., target detection module618) may be configured to perform a Discrete Fourier Transform (DFT) on the digital samples. In certain examples, a Fast Fourier Transform (FFT) can be used to calculate the DFT on the digital samples. In some examples, the Fourier Transform calculation (e.g., DFT) can be performed iteratively on different groups of digital samples to generate a target point cloud.

While the lidar system600is described above as being configured to determine the radial velocity of a target, it should be appreciated that the system can be configured to determine the range and/or radial velocity of a target. For example, the lidar system600can be modified to use laser chirps to detect the velocity and/or range of a target.

Some examples have been described in which a DFT is used to generate points of a point cloud based on a group of samples. However, frequency analysis techniques (e.g., spectrum analysis techniques) other than the DFT may be used to generate points of a point cloud based on a group of samples. Any suitable frequency analysis technique may be used, including, without limitation, Discrete Cosine transform (DCT), Wavelet transform, Auto-Regressive moving average (ARMA), etc.

FIG.7illustrates an exemplary FMCW coherent lidar system700configured to determine the range and/or radial velocity of a target. Lidar system700includes a laser702configured to produce a laser signal which is fed into a splitter704. The laser is “chirped” (e.g., the center frequency of the emitted laser beam is increased (“ramped up” or “chirped up”) or decreased (“ramped down” or “chirped down”) over time (or, equivalently, the central wavelength of the emitted laser beam changes with time within a waveband). In various embodiments, the laser frequency is chirped quickly such that multiple phase angles are attained. In one example, the frequency of the laser signal is modulated by changing the laser operating parameters (e.g., current/voltage) or using a modulator included in the laser source702; however, in other examples, an external modulator can be placed between the laser source702and the splitter704.

In other examples, the laser frequency can be “chirped” by modulating the phase of the laser signal (or light) produced by the laser702. In one example, the phase of the laser signal is modulated using an external modulator placed between the laser source702and the splitter704; however, in some examples, the laser source702may be modulated directly by changing operating parameters (e.g., current/voltage) or may include an internal modulator. Similar to frequency chirping, the phase of the laser signal can be increased (“ramped up”) or decreased (“ramped down”) over time.

Some examples of systems with FMCW-based lidar sensors have been described. However, some embodiments of the techniques described herein may be implemented using any suitable type of lidar sensors including, without limitation, any suitable type of coherent lidar sensors (e.g., phase-modulated coherent lidar sensors). With phase-modulated coherent lidar sensors, rather than chirping the frequency of the light produced by the laser (as described above with reference to FMCW techniques), the lidar system may use a phase modulator placed between the laser702and the splitter704to generate a discrete phase modulated signal, which may be used to measure range and radial velocity.

As shown, the splitter704provides a first split laser signal Tx1to a direction selective device706, which provides (e.g., forwards) the signal Tx1to a scanner708. The scanner708uses the first laser signal Tx1to transmit light emitted by the laser702and receives light reflected by the target710. The reflected light signal Rx is provided (e.g., passed back) to the direction selective device706. The second laser signal Tx2and reflected light signal Rx are provided to a coupler (also referred to as a mixer)712. The mixer may use the second laser signal Tx2as a local oscillator (LO) signal and mix it with the reflected light signal Rx. The mixer712may be configured to mix the reflected light signal Rx with the local oscillator signal LO to generate a beat frequency fbeat. The mixed signal with beat frequency fbeatmay be provided to a differential photodetector714configured to produce a current based on the received light. The current may be converted to voltage by an amplifier (e.g., a transimpedance amplifier (TIA)), which may be provided (e.g., fed) to an analog-to-digital converter (ADC)716configured to convert the analog voltage to digital samples for a target detection module718. The target detection module718may be configured to determine (e.g., calculate) the range and/or radial velocity of the target710based on the digital sample signal with beat frequency fbeat.

Laser chirping may be beneficial for range (distance) measurements of the target. In comparison, Doppler frequency measurements are generally used to measure target velocity. Resolution of distance can depend on the bandwidth size of the chirp frequency band such that greater bandwidth corresponds to finer resolution, according to the following relationships:

Range⁢resolution:Δ⁢R=c2⁢BW⁢(given⁢a⁢perfectly⁢linear⁢chirp),andRange:R=fbeat⁢c⁢TChirpRamp2⁢BW
where c is the speed of light, BW is the bandwidth of the chirped laser signal, fbeatis the beat frequency, and TChirpRampis the time period during which the frequency of the chirped laser ramps up (e.g., the time period corresponding to the up-ramp portion of the chirped laser). For example, for a distance resolution of 3.0 cm, a frequency bandwidth of 5.0 GHz may be used. A linear chirp can be an effective way to measure range and range accuracy can depend on the chirp linearity. In some instances, when chirping is used to measure target range, there may be range and velocity ambiguity. In particular, the reflected signal for measuring velocity (e.g., via Doppler) may affect the measurement of range. Therefore, some exemplary FMCW coherent lidar systems may rely on two measurements having different slopes (e.g., negative and positive slopes) to remove this ambiguity. The two measurements having different slopes may also be used to determine range and velocity measurements simultaneously.

FIG.8Ais a plot of ideal (or desired) frequency chirp as a function of time in the transmitted laser signal Tx (e.g., signal Tx2), depicted in solid line802, and reflected light signal Rx, depicted in dotted line804. As depicted, the ideal Tx signal has a positive linear slope between time t1and time t3and a negative linear slope between time t3and time t6. Accordingly, the ideal reflected light signal Rx returned with a time delay td of approximately t2−t1has a positive linear slope between time t2and time t5and a negative linear slope between time t5and time t7.

FIG.8Bis a plot illustrating the corresponding ideal beat frequency fbeat806of the mixed signal Tx2×Rx. Note that the beat frequency fbeat806has a constant value between time t2and time t3(corresponding to the overlapping up-slopes of signals Tx2and Rx) and between time t5and time t6(corresponding to the overlapping down-slopes of signals Tx2and Rx).

The positive slope (“Slope P”) and the negative slope (“Slope N”) (also referred to as positive ramp (or up-ramp) and negative ramp (or down-ramp), respectively) can be used to determine range and/or velocity. In some instances, referring toFIGS.8A-8B, when the positive and negative ramp pair is used to measure range and velocity simultaneously, the following relationships are utilized:

Range:R=cTChirpRamp⁢(fbeat⁢_⁢P+fbeat⁢_⁢N)22,andVelocity:V=λ⁢(fbeat⁢_⁢P+fbeat⁢_⁢N)22
where fbeat_Pand fbeat_Nare beat frequencies generated during positive (P) and negative (N) slopes of the chirp802respectively and λ is the wavelength of the laser signal.

In one example, the scanner708of the lidar system700is used to scan the environment and generate a target point cloud from the acquired scan data. In some examples, the lidar system700can use processing methods that include performing one or more Fourier Transform calculations, such as a Fast Fourier Transform (FFT) or a Discrete Fourier Transform (DFT), to generate the target point cloud from the acquired scan data. Being that the system700is capable of measuring range, each point in the point cloud may have a three-dimensional location (e.g., x, y, and z) in addition to radial velocity. In some examples, the x-y location of each target point corresponds to a radial position of the target point relative to the scanner708. Likewise, the z location of each target point corresponds to the distance between the target point and the scanner708(e.g., the range). In one example, each target point corresponds to one frequency chirp802in the laser signal. For example, the samples collected by the system700during the chirp802(e.g., t1to t6) can be processed to generate one point in the point cloud.

Additional Embodiments, Computing Devices, and Information Handling Systems

In some embodiments, lidar systems and techniques described herein may be used to provide mapping and/or autonomous navigation for a vehicle.FIG.9illustrates a vehicle900having a plurality of sensors902. As shown, a first sensor902a, a second sensor902b, a third sensor902c, and a fourth sensor902dmay be positioned in a first location on (or inside) the vehicle900(e.g., the roof). Likewise, a fifth sensor902emay be positioned in a second location on (or inside) the vehicle900(e.g., the front of the vehicle900) and a sixth sensor902fmay be positioned in a third location on (or inside) the vehicle900(e.g., the back of the vehicle900). In other examples, a different number or configuration of sensors may be used.

In some examples, at least one sensor of the plurality of sensors902is configured to provide (or enable) 3D mapping of the vehicle's surroundings. In certain examples, at least one sensor of the plurality of sensors902is used to provide autonomous navigation for the vehicle900within an environment. In one example, each sensor902includes at least one lidar system, device, or chip. The lidar system(s) included in each sensor902may include any of the lidar systems disclosed herein. In some examples, at least one sensor of the plurality of sensors902may be a different type of sensor (e.g., camera, radar, etc.). In one example, the vehicle900is a car; however, in other examples, the vehicle900may be a truck, boat, plane, drone, vacuum cleaner (e.g., robot vacuum cleaner), robot, train, tractor, ATV, or any other type of vehicle or moveable object.

In some embodiments, lidar systems and techniques described herein may be implemented using Silicon photonics (SiP) technologies. SiP is a material platform from which photonic integrated circuits (PICs) can be produced. SiP is compatible with CMOS (electronic) fabrication techniques, which allows PICs to be manufactured using established foundry infrastructure. In PICs, light propagates through a patterned silicon optical medium that lies on top of an insulating material layer (e.g., silicon on insulator (SOI)). In some cases, direct bandgap materials (e.g., indium phosphide (InP)) are used to create light (e.g., laser) sources that are integrated in an SiP chip (or wafer) to drive optical or photonic components within a photonic circuit. SiP technologies are increasingly used in optical datacom, sensing, biomedical, automotive, astronomy, aerospace, augmented reality (AR) applications, virtual reality (VR) applications, artificial intelligence (AI) applications, navigation, image identification, drones, robotics, etc.

FIG.10is a block diagram of a silicon photonic integrated circuit (PIC)1000in accordance with aspects described herein. In one example, the lidar systems described herein can be implemented as the PIC1000. The PIC1000includes a transmitter module1002, a steering module1004, and a receiver module1006. As shown, the transmitter module1002, the steering module1004, and the receiver module1006are integrated on a silicon substrate1008. In other examples, the transmitter module1002, the steering module1004, or the receiver module1006may be included on a separate substrate. In some embodiments, the steering module1004is used by the PIC1000in connection with transmission (e.g., emission) and reception (e.g., collection) of optical signals. In some examples, the silicon substrate1008is an SOI substrate with a silicon layer (e.g., between 200 nm and 10 micron thick) disposed over an oxide layer (e.g., approximately 2 micron thick). In certain examples, the silicon substrate1008can include multiple silicon and/or oxide layers.

In one example, the transmitter module1002includes at least one laser source. In some examples, the laser source(s) are implemented using a direct bandgap material (e.g., InP) and integrated on the silicon substrate1008via hybrid integration. The transmitter module1002may also include at least one splitter, a combiner, and/or a direction selective device that are implemented on the silicon substrate1008via monolithic or hybrid integration. In some examples, the laser source(s) are external to the PIC1000and the laser signal(s) can be provided to the transmission module1002.

In some embodiments, lidar systems and techniques described herein may be implemented using micro-electromechanical system (MEMS) devices. A MEMS device is a miniature device that has both mechanical and electronic components. The physical dimension of a MEMS device can range from several millimeters to less than one micrometer. Lidar systems may include one or more scanning mirrors implemented as a MEMS mirror (or an array of MEMS mirrors). Each MEMS mirror may be a single-axis MEMS mirror or dual-axis MEMS mirror. The MEMS mirror(s) may be electromagnetic mirrors. A control signal is provided to adjust the position of the mirror to direct light in at least one scan direction (e.g., horizontal and/or vertical). The MEMS mirror(s) can be positioned to steer light transmitted by the lidar system and/or to steer light received by the lidar system. MEMS mirrors are compact and may allow for smaller form-factor lidar systems, faster control speeds, and more precise light steering compared to other mechanical-scanning lidar methods. MEMS mirrors may be used in solid-state (e.g., stationary) lidar systems and rotating lidar systems.

In embodiments, aspects of the techniques described herein (e.g., timing the emission of the transmitted signal, processing received return signals, and so forth) may be directed to or implemented on information handling systems/computing systems. For purposes of this disclosure, a computing system may include any instrumentality or aggregate of instrumentalities operable to compute, calculate, determine, classify, process, transmit, receive, retrieve, originate, route, switch, store, display, communicate, manifest, detect, record, reproduce, handle, or utilize any form of information, intelligence, or data for business, scientific, control, or other purposes. For example, a computing system may be a personal computer (e.g., laptop), tablet computer, phablet, personal digital assistant (PDA), smart phone, smart watch, smart package, server (e.g., blade server or rack server), network storage device, or any other suitable device and may vary in size, shape, performance, functionality, and price.

FIG.11is a block diagram of an example computer system1100that may be used in implementing the technology described in this document. General-purpose computers, network appliances, mobile devices, or other electronic systems may also include at least portions of the system1100. The system1100includes a processor1110, a memory1120, a storage device1130, and an input/output device1140. Each of the components1110,1120,1130, and1140may be interconnected, for example, using a system bus1150. The processor1110is capable of processing instructions for execution within the system1100. In some implementations, the processor1110is a single-threaded processor. In some implementations, the processor1110is a multi-threaded processor. In some implementations, the processor1110is a programmable (or reprogrammable) general purpose microprocessor or microcontroller. The processor1110is capable of processing instructions stored in the memory1120or on the storage device1130.

The memory1120stores information within the system1100. In some implementations, the memory1120is a non-transitory computer-readable medium. In some implementations, the memory1120is a volatile memory unit. In some implementations, the memory1120is a non-volatile memory unit.

The storage device1130is capable of providing mass storage for the system1100. In some implementations, the storage device1130is a non-transitory computer-readable medium. In various different implementations, the storage device1130may include, for example, a hard disk device, an optical disk device, a solid-date drive, a flash drive, or some other large capacity storage device. For example, the storage device may store long-term data (e.g., database data, file system data, etc.). The input/output device1140provides input/output operations for the system1100. In some implementations, the input/output device1140may include one or more network interface devices, e.g., an Ethernet card, a serial communication device, e.g., an RS-232 port, and/or a wireless interface device, e.g., an 802.11 card, a 3G wireless modem, or a 4G wireless modem. In some implementations, the input/output device may include driver devices configured to receive input data and send output data to other input/output devices, e.g., keyboard, printer and display devices1160. In some examples, mobile computing devices, mobile communication devices, and other devices may be used.

In some implementations, at least a portion of the approaches described above may be realized by instructions that upon execution cause one or more processing devices to carry out the processes and functions described above. Such instructions may include, for example, interpreted instructions such as script instructions, or executable code, or other instructions stored in a non-transitory computer readable medium. The storage device1130may be implemented in a distributed way over a network, for example as a server farm or a set of widely distributed servers, or may be implemented in a single computing device.

Although an example processing system has been described inFIG.11, embodiments of the subject matter, functional operations and processes described in this specification can be implemented in other types of digital electronic circuitry, in tangibly-embodied computer software or firmware, in computer hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. Embodiments of the subject matter described in this specification can be implemented as one or more computer programs, i.e., one or more modules of computer program instructions encoded on a tangible nonvolatile program carrier for execution by, or to control the operation of, a data processing apparatus. Alternatively or in addition, the program instructions can be encoded on an artificially generated propagated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal that is generated to encode information for transmission to suitable receiver apparatus for execution by a data processing apparatus. The computer storage medium can be a machine-readable storage device, a machine-readable storage substrate, a random or serial access memory device, or a combination of one or more of them.

The term “system” may encompass all kinds of apparatus, devices, and machines for processing data, including by way of example a programmable processor, a computer, or multiple processors or computers. A processing system may include special purpose logic circuitry, e.g., an FPGA (field programmable gate array), an ASIC (application specific integrated circuit), or a programmable general purpose microprocessor or microcontroller. A processing system may include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them.

A computer program (which may also be referred to or described as a program, software, a software application, a module, a software module, a script, or code) can be written in any form of programming language, including compiled or interpreted languages, or declarative or procedural languages, and it can be deployed in any form, including as a standalone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program may, but need not, correspond to a file in a file system. A program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub programs, or portions of code). A computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.

The processes and logic flows described in this specification can be performed by one or more programmable computers executing one or more computer programs to perform functions by operating on input data and generating output. The processes and logic flows can also be performed by, and apparatus can also be implemented as, special purpose logic circuitry, e.g., an FPGA, an ASIC, or a programmable general purpose microprocessor or microcontroller.

Computers suitable for the execution of a computer program can include, by way of example, general or special purpose microprocessors or both, or any other kind of central processing unit. Generally, a central processing unit will receive instructions and data from a read-only memory or a random access memory or both. A computer generally includes a central processing unit for performing or executing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic disks, magneto optical disks, or optical disks. However, a computer need not have such devices. Moreover, a computer can be embedded in another device, e.g., a mobile telephone, a personal digital assistant (PDA), a mobile audio or video player, a game console, a Global Positioning System (GPS) receiver, or a portable storage device (e.g., a universal serial bus (USB) flash drive), to name just a few.

Computer readable media suitable for storing computer program instructions and data include all forms of nonvolatile memory, media and memory devices, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto optical disks; and CD-ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.

To provide for interaction with a user, embodiments of the subject matter described in this specification can be implemented on a computer having a display device, e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor, for displaying information to the user and a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input. In addition, a computer can interact with a user by sending documents to and receiving documents from a device that is used by the user; for example, by sending web pages to a web browser on a user's user device in response to requests received from the web browser.

Embodiments of the subject matter described in this specification can be implemented in a computing system that includes a back end component, e.g., a data server, or that includes a middleware component, e.g., an application server, or that includes a front end component, e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the subject matter described in this specification, or any combination of one or more such back end, middleware, or front end components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (“LAN”) and a wide area network (“WAN”), e.g., the Internet.

The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship between client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship with each other.

While this specification contains many specific implementation details, these should not be construed as limitations on the scope of what may be claimed, but rather as descriptions of features that may be specific to particular embodiments. Certain features that are described in this specification in the context of separate embodiments can also be implemented in combination in a single embodiment. Conversely, various features that are described in the context of a single embodiment can also be implemented in multiple embodiments separately or in any suitable sub-combination. Moreover, although features may be described above as acting in certain combinations and even initially claimed as such, one or more features from a claimed combination can in some cases be excised from the combination, and the claimed combination may be directed to a sub-combination or variation of a sub-combination.

Similarly, while operations are depicted in the drawings in a particular order, this should not be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed, to achieve desirable results. In certain circumstances, multitasking and parallel processing may be advantageous. Moreover, the separation of various system components in the embodiments described above should not be understood as requiring such separation in all embodiments, and it should be understood that the described program components and systems can generally be integrated together in a single software product or packaged into multiple software products.

FIG.12depicts a simplified block diagram of a computing device/information handling system (or computing system) according to embodiments of the present disclosure. It will be understood that the functionalities shown for system1200may operate to support various embodiments of an information handling system—although it shall be understood that an information handling system may be differently configured and include different components.

As illustrated inFIG.12, system1200includes one or more central processing units (CPU)1101that provide(s) computing resources and control(s) the computer. CPU1201may be implemented with a microprocessor or the like, and may also include one or more graphics processing units (GPU)1217and/or a floating point coprocessor for mathematical computations. System1200may also include a system memory1202, which may be in the form of random-access memory (RAM), read-only memory (ROM), or both.

A number of controllers and peripheral devices may also be provided. For example, an input controller1203represents an interface to various input device(s)1204, such as a keyboard, mouse, or stylus. There may also be a wireless controller1205, which communicates with a wireless device1206. System1200may also include a storage controller1207for interfacing with one or more storage devices1208, each of which includes a storage medium such as a magnetic tape or disk, or an optical medium that might be used to record programs of instructions for operating systems, utilities, and applications, which may include embodiments of programs that implement various aspects of the techniques described herein. Storage device(s)1208may also be used to store processed data or data to be processed in accordance with some embodiments. System1200may also include a display controller1209for providing an interface to a display device1211, which may be a cathode ray tube (CRT), a thin film transistor (TFT) display, or other type of display. The computing system1200may also include an automotive signal controller1212for communicating with an automotive system1213. A communications controller1214may interface with one or more communication devices1215, which enables system1200to connect to remote devices through any of a variety of networks including the Internet, a cloud resource (e.g., an Ethernet cloud, a Fiber Channel over Ethernet (FCoE)/Data Center Bridging (DCB) cloud, etc.), a local area network (LAN), a wide area network (WAN), a storage area network (SAN), or through any suitable electromagnetic carrier signals including infrared signals.

In the illustrated system, all major system components may connect to a bus1216, which may represent more than one physical bus. However, various system components may or may not be in physical proximity to one another. For example, input data and/or output data may be remotely transmitted from one physical location to another. In addition, programs that implement various aspects of some embodiments may be accessed from a remote location (e.g., a server) over a network. Such data and/or programs may be conveyed through any of a variety of machine-readable medium including, but not limited to: magnetic media such as hard disks, floppy disks, and magnetic tape; optical media such as CD-ROMs and holographic devices; magneto-optical media; and hardware devices that are specially configured to store or to store and execute program code, such as application specific integrated circuits (ASICs), programmable logic devices (PLDs), flash memory devices, and ROM and RAM devices. Some embodiments may be encoded upon one or more non-transitory, computer-readable media with instructions for one or more processors or processing units to cause steps to be performed. It shall be noted that the one or more non-transitory, computer-readable media shall include volatile and non-volatile memory. It shall also be noted that alternative implementations are possible, including a hardware implementation or a software/hardware implementation. Hardware-implemented functions may be realized using ASIC(s), programmable arrays, digital signal processing circuitry, or the like. Accordingly, the “means” terms in any claims are intended to cover both software and hardware implementations. Similarly, the term “computer-readable medium or media” as used herein includes software and/or hardware having a program of instructions embodied thereon, or a combination thereof. With these implementation alternatives in mind, it is to be understood that the figures and accompanying description provide the functional information one skilled in the art would require to write program code (i.e., software) and/or to fabricate circuits (i.e., hardware) to perform the processing required.

It shall be noted that some embodiments may further relate to computer products with a non-transitory, tangible computer-readable medium that has computer code thereon for performing various computer-implemented operations. The medium and computer code may be those specially designed and constructed for the purposes of the techniques described herein, or they may be of the kind known or available to those having skill in the relevant arts. Examples of tangible, computer-readable media include, but are not limited to: magnetic media such as hard disks, floppy disks, and magnetic tape; optical media such as CD-ROMs and holographic devices; magneto-optical media; and hardware devices that are specially configured to store or to store and execute program code, such as application specific integrated circuits (ASICs), programmable logic devices (PLDs), flash memory devices, and ROM and RAM devices. Examples of computer code include machine code, such as produced by a compiler, and files containing higher level code that is executed by a computer using an interpreter. Some embodiments may be implemented in whole or in part as machine-executable instructions that may be in program modules that are executed by a processing device. Examples of program modules include libraries, programs, routines, objects, components, and data structures. In distributed computing environments, program modules may be physically located in settings that are local, remote, or both.

One skilled in the art will recognize no computing system or programming language is critical to the practice of the techniques described herein. One skilled in the art will also recognize that a number of the elements described above may be physically and/or functionally separated into sub-modules or combined together.

In embodiments, aspects of the techniques described herein (e.g., timing the emission of optical signals, processing received return signals, generating point clouds, performing one or more (e.g., all) of the steps of the methods described herein, etc.) may be implemented using machine learning and/or artificial intelligence technologies.

“Machine learning” generally refers to the application of certain techniques (e.g., pattern recognition and/or statistical inference techniques) by computer systems to perform specific tasks. Machine learning techniques may be used to build models based on sample data (e.g., “training data”) and to validate the models using validation data (e.g., “testing data”). The sample and validation data may be organized as sets of records (e.g., “observations” or “data samples”), with each record indicating values of specified data fields (e.g., “independent variables,” “inputs,” “features,” or “predictors”) and corresponding values of other data fields (e.g., “dependent variables,” “outputs,” or “targets”). Machine learning techniques may be used to train models to infer the values of the outputs based on the values of the inputs. When presented with other data (e.g., “inference data”) similar to or related to the sample data, such models may accurately infer the unknown values of the targets of the inference data set.

A feature of a data sample may be a measurable property of an entity (e.g., person, thing, event, activity, etc.) represented by or associated with the data sample. A value of a feature may be a measurement of the corresponding property of an entity or an instance of information regarding an entity. Features can also have data types. For instance, a feature can have an image data type, a numerical data type, a text data type (e.g., a structured text data type or an unstructured (“free”) text data type), a categorical data type, or any other suitable data type. In general, a feature's data type is categorical if the set of values that can be assigned to the feature is finite.

As used herein, “model” may refer to any suitable model artifact generated by the process of using a machine learning algorithm to fit a model to a specific training data set. The terms “model,” “data analytics model,” “machine learning model” and “machine learned model” are used interchangeably herein.

As used herein, the “development” of a machine learning model may refer to construction of the machine learning model. Machine learning models may be constructed by computers using training data sets. Thus, “development” of a machine learning model may include the training of the machine learning model using a training data set. In some cases (generally referred to as “supervised learning”), a training data set used to train a machine learning model can include known outcomes (e.g., labels or target values) for individual data samples in the training data set. For example, when training a supervised computer vision model to detect images of cats, a target value for a data sample in the training data set may indicate whether or not the data sample includes an image of a cat. In other cases (generally referred to as “unsupervised learning”), a training data set does not include known outcomes for individual data samples in the training data set.

Following development, a machine learning model may be used to generate inferences with respect to “inference” data sets. For example, following development, a computer vision model may be configured to distinguish data samples including images of cats from data samples that do not include images of cats. As used herein, the “deployment” of a machine learning model may refer to the use of a developed machine learning model to generate inferences about data other than the training data.

“Artificial intelligence” (AI) generally encompasses any technology that demonstrates intelligence. Applications (e.g., machine-executed software) that demonstrate intelligence may be referred to herein as “artificial intelligence applications,” “AI applications,” or “intelligent agents.” An intelligent agent may demonstrate intelligence, for example, by perceiving its environment, learning, and/or solving problems (e.g., taking actions or making decisions that increase the likelihood of achieving a defined goal). In many cases, intelligent agents are developed by organizations and deployed on network-connected computer systems so users within the organization can access them. Intelligent agents are used to guide decision-making and/or to control systems in a wide variety of fields and industries, e.g., security; transportation; risk assessment and management; supply chain logistics; and energy management. Intelligent agents may include or use models.

Some non-limiting examples of AI application types may include inference applications, comparison applications, and optimizer applications. Inference applications may include any intelligent agents that generate inferences (e.g., predictions, forecasts, etc.) about the values of one or more output variables based on the values of one or more input variables. In some examples, an inference application may provide a recommendation based on a generated inference. For example, an inference application for a lending organization may infer the likelihood that a loan applicant will default on repayment of a loan for a requested amount, and may recommend whether to approve a loan for the requested amount based on that inference. Comparison applications may include any intelligent agents that compare two or more possible scenarios. Each scenario may correspond to a set of potential values of one or more input variables over a period of time. For each scenario, an intelligent agent may generate one or more inferences (e.g., with respect to the values of one or more output variables) and/or recommendations. For example, a comparison application for a lending organization may display the organization's predicted revenue over a period of time if the organization approves loan applications if and only if the predicted risk of default is less than 20% (scenario #1), less than 10% (scenario #2), or less than 5% (scenario #3). Optimizer applications may include any intelligent agents that infer the optimum values of one or more variables of interest based on the values of one or more input variables. For example, an optimizer application for a lending organization may indicate the maximum loan amount that the organization would approve for a particular customer.

As used herein, “data analytics” may refer to the process of analyzing data (e.g., using machine learning models, artificial intelligence, models, or techniques) to discover information, draw conclusions, and/or support decision-making. Species of data analytics can include descriptive analytics (e.g., processes for describing the information, trends, anomalies, etc. in a data set), diagnostic analytics (e.g., processes for inferring why specific trends, patterns, anomalies, etc. are present in a data set), predictive analytics (e.g., processes for predicting future events or outcomes), and prescriptive analytics (processes for determining or suggesting a course of action).

Data analytics tools are used to guide decision-making and/or to control systems in a wide variety of fields and industries, e.g., security; transportation; risk assessment and management; supply chain logistics; and energy management. The processes used to develop data analytics tools suitable for carrying out specific data analytics tasks generally include steps of data collection, data preparation, feature engineering, model generation, and/or model deployment.

As used herein, “spatial data” may refer to data relating to the location, shape, and/or geometry of one or more spatial objects. Data collected by lidar systems, devices, and chips described herein may be considered spatial data. A “spatial object” may be an entity or thing that occupies space and/or has a location in a physical or virtual environment. In some cases, a spatial object may be represented by an image (e.g., photograph, rendering, etc.) of the object. In some cases, a spatial object may be represented by one or more geometric elements (e.g., points, lines, curves, and/or polygons), which may have locations within an environment (e.g., coordinates within a coordinate space corresponding to the environment). In some cases, a spatial object may be represented as a cluster of points in a 3D point-cloud.

As used herein, “spatial attribute” may refer to an attribute of a spatial object that relates to the object's location, shape, or geometry. Spatial objects or observations may also have “non-spatial attributes.” For example, a residential lot is a spatial object that that can have spatial attributes (e.g., location, dimensions, etc.) and non-spatial attributes (e.g., market value, owner of record, tax assessment, etc.). As used herein, “spatial feature” may refer to a feature that is based on (e.g., represents or depends on) a spatial attribute of a spatial object or a spatial relationship between or among spatial objects. As a special case, “location feature” may refer to a spatial feature that is based on a location of a spatial object. As used herein, “spatial observation” may refer to an observation that includes a representation of a spatial object, values of one or more spatial attributes of a spatial object, and/or values of one or more spatial features.

Spatial data may be encoded in vector format, raster format, or any other suitable format. In vector format, each spatial object is represented by one or more geometric elements. In this context, each point has a location (e.g., coordinates), and points also may have one or more other attributes. Each line (or curve) comprises an ordered, connected set of points. Each polygon comprises a connected set of lines that form a closed shape. In raster format, spatial objects are represented by values (e.g., pixel values) assigned to cells (e.g., pixels) arranged in a regular pattern (e.g., a grid or matrix). In this context, each cell represents a spatial region, and the value assigned to the cell applies to the represented spatial region.

“Computer vision” generally refers to the use of computer systems to analyze and interpret image data. In some embodiments, computer vision may be used to analyze and interpret data collected by lidar systems (e.g., point-clouds). Computer vision tools generally use models that incorporate principles of geometry and/or physics. Such models may be trained to solve specific problems within the computer vision domain using machine learning techniques. For example, computer vision models may be trained to perform object recognition (recognizing instances of objects or object classes in images), identification (identifying an individual instance of an object in an image), detection (detecting specific types of objects or events in images), etc.

Computer vision tools (e.g., models, systems, etc.) may perform one or more of the following functions: image pre-processing, feature extraction, and detection/segmentation. Some examples of image pre-processing techniques include, without limitation, image re-sampling, noise reduction, contrast enhancement, and scaling (e.g., generating a scale space representation). Extracted features may be low-level (e.g., raw pixels, pixel intensities, pixel colors, gradients, patterns and textures (e.g., combinations of colors in close proximity), color histograms, motion vectors, edges, lines, corners, ridges, etc.), mid-level (e.g., shapes, surfaces, volumes, patterns, etc.), or high-level (e.g., objects, scenes, events, etc.). The detection/segmentation function may involve selection of a subset of the input image data (e.g., one or more images within a set of images, one or more regions within an image, etc.) for further processing.

Some Embodiments

Some embodiments may include any of the following:

A1. A method of training a machine learning model, the method comprising: obtaining a map of a background scene, the map comprising three-dimensional (3D) point cloud data; obtaining at least one point cloud representation of at least one foreground object, the at least one point cloud representation comprising 3D point cloud data, wherein one or more light detection and ranging (lidar) sensors were used to generate the 3D point cloud data for the map and the at least one point cloud representation; generating a lidar scene by placing the at least one point cloud representation within the map; and training the machine learning model using the generated lidar scene.

A2. The method of clause A1, wherein the background scene comprises at least one of a residential area, a downtown area, a highway, a road, a sidewalk, a city, natural features, natural terrain, or any combination thereof.

A3. The method of clause A1 or A2, wherein obtaining the map comprises retrieving the map from a library comprising a plurality of maps for a plurality of background scenes.

A4. The method of any of clauses A1 to A3, wherein obtaining the map of the background scene comprises: performing one or more scans of the background scene using the one or more lidar sensors; identifying a dynamic object in the one or more scans; and removing the dynamic object from the one or more scans.

A5. The method of any of clauses A1 to A4, wherein the at least one foreground object comprises a car, a bus, a motorcycle, a bicycle, a vehicle, a pedestrian, a person, an animal, or any combination thereof.

A6. The method of any of clauses A1 to A5, wherein obtaining the at least one point cloud representation comprises retrieving the at least one point cloud representation from a library comprising a plurality of point cloud representations for a plurality of foreground objects.

A7. The method of any of clauses A1 to A6, wherein the library comprises point cloud representations of the at least one foreground object in multiple orientations with respect to the one or more lidar sensors.

A8. The method of any of clauses A1 to A7, wherein obtaining the at least one point cloud representation comprises scanning, by the one or more lidar sensors, the at least one foreground object while the at least one foreground object is on a turntable.

A9. The method of any of clauses A1 to A8, wherein the lidar scene comprises at least one annotation identifying the at least one foreground object.

A10. The method of any of clauses A1 to A9, wherein generating the lidar scene comprises selecting a lidar sensor position within the map.

A11. The method of any of clauses A1 to A10, further comprising: generating a second lidar scene by placing the at least one point cloud representation within a second map of a second background scene, the second map comprising 3D point cloud data; and training the machine learning model using the generated second lidar scene.

A12. A system for training a machine learning model, the system comprising: one or more computer processors programmed to perform operations comprising: obtaining a map of a background scene, the map comprising three-dimensional (3D) point cloud data; obtaining at least one point cloud representation of at least one foreground object, the at least one point cloud representation comprising 3D point cloud data, wherein one or more light detection and ranging (lidar) sensors were used to generate the 3D point cloud data for the map and the at least one point cloud representation; generating a lidar scene by placing the at least one point cloud representation within the map; and training the machine learning model using the generated lidar scene.

A13. The system of clause A12, wherein the background scene comprises at least one of a residential area, a downtown area, a highway, a road, a sidewalk, a city, natural features, natural terrain, or any combination thereof.

A14. The system of clause A12 or A13, wherein obtaining the map comprises retrieving the map from a library comprising a plurality of maps for a plurality of background scenes.

A15. The system of any of clauses A12 to A14, wherein obtaining the map of the background scene comprises: performing one or more scans of the background scene using the one or more lidar sensors; identifying a dynamic object in the one or more scans; and removing the dynamic object from the one or more scans.

A16. The system of any of clauses A12 to A15, wherein the at least one foreground object comprises a car, a bus, a motorcycle, a bicycle, a vehicle, a pedestrian, a person, an animal, or any combination thereof.

A17. The system of any of clauses A12 to A16, wherein obtaining the at least one point cloud representation comprises retrieving the at least one point cloud representation from a library comprising a plurality of point cloud representations for a plurality of foreground objects.

A18. The system of any of clauses A12 to A17, wherein the library comprises point cloud representations of the at least one foreground object in multiple orientations with respect to the one or more lidar sensors.

A19. The system of any of clauses A12 to A18, wherein obtaining the at least one point cloud representation comprises scanning, by the one or more lidar sensors, the at least one foreground object while the at least one foreground object is on a turntable.

A20. A method of controlling a vehicle, comprising: collecting data using a light detection and ranging (lidar) sensor on the vehicle while the vehicle is being operated; providing the data to a machine learning model, wherein the machine learning model has been trained using a generated lidar scene, and wherein the generated lidar scene comprises a lidar point cloud representation of at least one foreground object placed within a map of a background scene comprising lidar point cloud data, receiving from the machine learning model an identification of an object in a vicinity of the vehicle; and controlling the vehicle based on the identification of the object in the vicinity of the vehicle.

Terminology

The phrasing and terminology used herein is for the purpose of description and should not be regarded as limiting.

Measurements, sizes, amounts, and the like may be presented herein in a range format. The description in range format is provided merely for convenience and brevity and should not be construed as an inflexible limitation on the scope of the invention. Accordingly, the description of a range should be considered to have specifically disclosed all the possible subranges as well as individual numerical values within that range. For example, description of a range such as 1-20 meters should be considered to have specifically disclosed subranges such as 1 meter, 2 meters, 1-2 meters, less than 2 meters, 10-11 meters, 10-12 meters, 10-13 meters, 10-14 meters, 11-12 meters, 11-13 meters, etc.

Furthermore, connections between components or systems within the figures are not intended to be limited to direct connections. Rather, data or signals between these components may be modified, re-formatted, or otherwise changed by intermediary components. Also, additional or fewer connections may be used. The terms “coupled,” “connected,” or “communicatively coupled” shall be understood to include direct connections, indirect connections through one or more intermediary devices, wireless connections, and so forth.

Reference in the specification to “one embodiment,” “preferred embodiment,” “an embodiment,” “some embodiments,” or “embodiments” means that a particular feature, structure, characteristic, or function described in connection with the embodiment is included in at least one embodiment of the invention and may be in more than one embodiment. Also, the appearance of the above-noted phrases in various places in the specification is not necessarily referring to the same embodiment or embodiments.

The use of certain terms in various places in the specification is for illustration purposes only and should not be construed as limiting. A service, function, or resource is not limited to a single service, function, or resource; usage of these terms may refer to a grouping of related services, functions, or resources, which may be distributed or aggregated.

Furthermore, one skilled in the art shall recognize that: (1) certain steps may optionally be performed; (2) steps may not be limited to the specific order set forth herein; (3) certain steps may be performed in different orders; and (4) certain steps may be performed simultaneously or concurrently.

The term “approximately”, the phrase “approximately equal to”, and other similar phrases, as used in the specification and the claims (e.g., “X has a value of approximately Y” or “X is approximately equal to Y”), should be understood to mean that one value (X) is within a predetermined range of another value (Y). The predetermined range may be plus or minus 20%, 10%, 5%, 3%, 1%, 0.1%, or less than 0.1%, unless otherwise indicated.

The indefinite articles “a” and “an,” as used in the specification and in the claims, unless clearly indicated to the contrary, should be understood to mean “at least one.” The phrase “and/or,” as used in the specification and in the claims, should be understood to mean “either or both” of the elements so conjoined, i.e., elements that are conjunctively present in some cases and disjunctively present in other cases. Multiple elements listed with “and/or” should be construed in the same fashion, i.e., “one or more” of the elements so conjoined. Other elements may optionally be present other than the elements specifically identified by the “and/or” clause, whether related or unrelated to those elements specifically identified. Thus, as a non-limiting example, a reference to “A and/or B”, when used in conjunction with open-ended language such as “comprising” can refer, in one embodiment, to A only (optionally including elements other than B); in another embodiment, to B only (optionally including elements other than A); in yet another embodiment, to both A and B (optionally including other elements).

As used in the specification and in the claims, “or” should be understood to have the same meaning as “and/or” as defined above. For example, when separating items in a list, “or” or “and/or” shall be interpreted as being inclusive, i.e., the inclusion of at least one, but also including more than one, of a number or list of elements, and, optionally, additional unlisted items. Only terms clearly indicated to the contrary, such as “only one of” or “exactly one of,” or, when used in the claims, “consisting of,” will refer to the inclusion of exactly one element of a number or list of elements. In general, the term “or” as used shall only be interpreted as indicating exclusive alternatives (i.e. “one or the other but not both”) when preceded by terms of exclusivity, such as “either,” “one of,” “only one of,” or “exactly one of.” “Consisting essentially of,” when used in the claims, shall have its ordinary meaning as used in the field of patent law.

As used in the specification and in the claims, the phrase “at least one,” in reference to a list of one or more elements, should be understood to mean at least one element selected from any one or more of the elements in the list of elements, but not necessarily including at least one of each and every element specifically listed within the list of elements and not excluding any combinations of elements in the list of elements. This definition also allows that elements may optionally be present other than the elements specifically identified within the list of elements to which the phrase “at least one” refers, whether related or unrelated to those elements specifically identified. Thus, as a non-limiting example, “at least one of A and B” (or, equivalently, “at least one of A or B,” or, equivalently “at least one of A and/or B”) can refer, in one embodiment, to at least one, optionally including more than one, A, with no B present (and optionally including elements other than B); in another embodiment, to at least one, optionally including more than one, B, with no A present (and optionally including elements other than A); in yet another embodiment, to at least one, optionally including more than one, A, and at least one, optionally including more than one, B (and optionally including other elements).

The use of “including,” “comprising,” “having,” “containing,” “involving,” and variations thereof, is meant to encompass the items listed thereafter and additional items.

Use of ordinal terms such as “first,” “second,” “third,” etc., in the claims to modify a claim element does not by itself connote any priority, precedence, or order of one claim element over another or the temporal order in which acts of a method are performed. Ordinal terms are used merely as labels to distinguish one claim element having a certain name from another element having a same name (but for use of the ordinal term), to distinguish the claim elements.

Particular embodiments of the subject matter have been described. Other embodiments are within the scope of the following claims. For example, the actions recited in the claims can be performed in a different order and still achieve desirable results. As one example, the processes depicted in the accompanying figures do not necessarily require the particular order shown, or sequential order, to achieve desirable results. In certain implementations, multitasking and parallel processing may be advantageous. Other steps or stages may be provided, or steps or stages may be eliminated, from the described processes. Accordingly, other implementations are within the scope of the following claims.

It will be appreciated by those skilled in the art that the preceding examples and embodiments are exemplary and not limiting to the scope of the present disclosure. It is intended that all permutations, enhancements, equivalents, combinations, and improvements thereto that are apparent to those skilled in the art upon a reading of the specification and a study of the drawings are included within the true spirit and scope of the present disclosure. It shall also be noted that elements of any claims may be arranged differently including having multiple dependencies, configurations, and combinations.

Having thus described several aspects of at least one embodiment of this invention, it is to be appreciated that various alterations, modifications, and improvements will readily occur to those skilled in the art. Such alterations, modifications, and improvements are intended to be part of this disclosure, and are intended to be within the spirit and scope of the invention. Accordingly, the foregoing description and drawings are by way of example only.