Complex ground profile estimation
Patent Information
- Application Number
- JP2022519657
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2019-09-30
- Filing Date
- 2020-09-16
- Publication Date
- 2025-02-26
- Estimated Expiration
- 2040-09-16
Smart Images

Figure 0007636403000001 
Figure 0007636403000002 
Figure 0007636403000003
Abstract
Description
[Technical field]
[0001] Related Applications This application claims priority to U.S. Patent Application No. 16 / 588,717, filed September 30, 2019, which is incorporated herein by reference. [Background technology]
[0002] The safety of passengers in the vehicle and other people or objects in close proximity to the vehicle is paramount. Such safety is often based on accurate detection of potential collisions and timely deployment of safety measures. To operate safely, an autonomous vehicle may include multiple sensors and various systems to detect and track events surrounding the autonomous vehicle and take these events into account when controlling the autonomous vehicle. For example, an autonomous vehicle may detect and track all objects within a 360-degree view of a set of cameras, LIDAR sensors, radar, and / or the like to safely control the autonomous vehicle. Detecting salient objects in a flat environment may be easier since the ground can be modeled as a plane, but in an environment with varying slopes, it may be more difficult to distinguish objects from the ground. [Brief description of the drawings]
[0003] The detailed description will be set forth with reference to the accompanying drawings, in which the leftmost digit(s) of a reference number identifies the figure in which the reference number first appears, and the same reference numbers in different drawings indicate similar or identical items.
[0004] [Figure 1] FIG. 1 illustrates an example scenario in which an autonomous vehicle with a collision avoidance component may generate a trajectory for controlling the autonomous vehicle and determine, by the collision avoidance component, whether to execute the trajectory or initiate an alternate maneuver, such as a safe stop. [Diagram 2]FIG. 2 illustrates a top-down view of an example scenario and corridors monitored by a collision avoidance component compared to additional or alternative collision avoidance system monitoring areas. [Diagram 3] FIG. 3 illustrates a block diagram of an example system including a collision avoidance component. [Figure 4] FIG. 4 shows an illustrative flow diagram of an example process for verifying a trajectory and / or performing alternative maneuvers using a collision avoidance component. [Diagram 5] FIG. 5 illustrates example sensor data associated with the example scenario of FIG. 3, a corridor, and classification of the sensor data as a ground classification or an object classification. [Figure 6A] FIG. 6A illustrates an example scenario in which it may be difficult to classify sensor data as ground or as an object. [Figure 6B] FIG. 6B illustrates example sensor data associated with the example scenario of FIG. 6A along with a classification of the corridor and the sensor data as a ground classification or an object classification. [Figure 7] FIG. 7 shows an illustrative flow diagram of an example process for classifying sensor data as ground or as an object based at least in part on determining a curve to fit to the sensor data. [Figure 8] FIG. 8 depicts an example curve fit to sensor data according to the example process of FIG. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0005] Techniques for collision avoidance may include a collision avoidance system that validates, rejects, or replaces a trajectory generated to control the vehicle. The collision avoidance systems described herein may include a secondary perception component and / or a validation component. For example, the collision avoidance system may receive a trajectory from a planning component and receive sensor data associated with an environment surrounding the autonomous vehicle from one or more sensors. In some examples, the primary perception component may determine perception data based at least in part on all or substantially all of the sensor data, while the secondary perception component of the collision avoidance system may determine a corridor associated with the trajectory and perform the operations described herein based at least in part on a subset of the sensor data associated with the corridor. The collision avoidance system may determine the corridor based at least in part on a width and / or length of the vehicle, a current speed of the vehicle and / or a speed associated with the trajectory, and / or an offset distance. In at least some examples, such a secondary perception system may further use similar and / or different hardware and / or software with respect to the primary system.
[0006] In some examples, the secondary perception component may classify a subset of the sensor data (associated with the corridor) as belonging to either a ground classification or an object classification. A ground classification may identify that the sensor data is associated with a roadway and / or other environmental surfaces, while an object classification may include any other object that is not the ground. In some examples, the techniques described herein may simply classify the sensor data as either ground or object without further identifying which type of object it is.
[0007] In some examples, the techniques may include ground estimation techniques that may improve (e.g., reduce) false negative and / or false positive rates associated with classifying sensor data as ground or objects. In some examples, the techniques may include estimating lines and / or planes to model the profile of the roadway surface (e.g., roadway elevation profile), particularly for complex roadways that may include one or more gradient changes (e.g., roadway surface inclines). These ground fitting techniques may include determining a spline (e.g., one or more polynomials, Bezier curves) associated with the ground based at least in part on determining the number of control points and knots of the spline based at least in part on the number or percentage of sensor data that include valid return values. In some examples, the determined spline may be inaccurate when sensor data is sparse for a portion of the environment. The techniques may additionally or alternatively include weighting the sensor data prior to generating the spline (e.g., by weighting a least squares regression toward the minimum and / or highest (altitude) sensor data points), modifying height values (e.g., ordinates) associated with one or more control points based at least in part on the sensor data as a post-fitting operation, and / or modifying the spacing of the knots as a post-fitting operation. In some examples, determining the spline may include determining values of the control points and / or knots based at least in part on a regression algorithm (e.g., least squares).
[0008] The secondary perception component may include an M-estimator but may lack an object classifier, such as, for example, a neural network, decision tree, etc., for classifying objects. In additional or alternative examples, the secondary perception system may include any type of ML model configured to disambiguate the classification of objects. In contrast, the primary perception component may include a pipeline of hardware and / or software components that may include one or more machine learning models, Bayesian filters (e.g., Kalman filters), graphics processing units (GPUs), and / or the like. In some examples, the perception data may include object detection (e.g., identification of sensor data associated with objects in an environment surrounding the autonomous vehicle), object classification (e.g., identification of object types associated with detected objects), object tracking (e.g., historical, current, and / or predicted object position, velocity, acceleration, and / or orientation), and / or the like.
[0009] The techniques may additionally or alternatively include determining a threshold distance based at least in part on a speed associated with the trajectory. For example, the threshold distance may be a stopping distance estimate associated with the vehicle at the vehicle's current speed and / or a speed specified by the trajectory, taking into account environmental conditions (e.g., slope, roadway, and / or static coefficients associated with the roadway conditions). A validation component of a collision avoidance system may determine whether any sensor data classified as an object is at a distance from the vehicle that is less than a threshold distance, or whether the farthest point classified as ground is less than a threshold distance. In either case, the validation component may cause the vehicle to perform an alternative maneuver and / or re-determine the trajectory based at least in part on determining that the object or the farthest detected ground is within the threshold distance of the vehicle. If the validation component determines that the nearest object is at a distance greater than the threshold distance and the farthest sensor data classified as ground is at a distance greater than the threshold distance, the validation component may validate the trajectory, which may include transmitting the trajectory to a system controller that may generate signals to activate drive components of the vehicle to track the trajectory.
[0010] Additionally or alternatively, the validation component may determine whether to validate the trajectory or initiate an alternative maneuver based at least in part on the current speed of the vehicle, the speed associated with the trajectory, the speed associated with the object, the current pose of the vehicle, and / or determine whether sensor data associated with the object classification and / or ground classification is valid. For example, the techniques may include determining whether the current speed, steering angle, steering rate, and / or orientation of the vehicle (within respective thresholds) along with the speed, steering angle, steering rate, and / or orientation indicated by the trajectory.
[0011] For example, upon validating a trajectory according to the techniques described herein, the collision avoidance system may pass or otherwise allow the trajectory to be implemented by the vehicle. However, upon determining that the trajectory is invalid, according to the techniques described herein, the collision avoidance system may cause the vehicle to initiate a contingency trajectory (e.g., a safety stop maneuver, an alternative maneuver) and / or re-determine a new trajectory. In some examples, the vehicle's planning component may determine a trajectory based at least in part on sensor data, map data, positioning data (e.g., where the autonomous vehicle is / how the autonomous vehicle is oriented relative to objects in the environment, mapped positions, and / or the like), and / or sensory data received from a primary perception component (e.g., what is in the environment, characteristics of objects in the environment).
[0012] The techniques described herein may improve vehicle safety by preventing invalid or dangerous trajectories from being implemented by the vehicle. Additionally, the techniques may reduce the amount of computational bandwidth, memory, and / or power consumed for collision avoidance compared to previous techniques. The accuracy of the collision avoidance system may also be higher than the accuracy of the primary perception system, thereby reducing the overall error rate of the trajectories implemented by the autonomous vehicle by filtering invalid trajectories.
[0013] (Example scenario) FIG. 1 illustrates an example scenario 100 including a vehicle 102. In some examples, the vehicle 102 may be an autonomous vehicle configured to operate according to a Level 5 classification issued by the National Highway Traffic Safety Administration, which describes a vehicle capable of performing all safety-critical functions for the entire journey without expecting a driver (or passenger) to constantly control the vehicle. However, in other examples, the vehicle 102 may be a fully or partially autonomous vehicle having any other level or classification. It is contemplated that the techniques described herein may be applied to more than robotic control, such as autonomous vehicles. For example, the techniques described herein may be applied to search, manufacturing, augmented reality, and the like. Additionally, the vehicle 102 is depicted as a land vehicle, but may also be a spacecraft, a seaplane, and / or the like. In some examples, the vehicle 102 may be represented in a simulation as a simulated vehicle. For simplicity, the discussion herein does not distinguish between simulated and real-world vehicles. Thus, references to a "vehicle" may refer to a simulated vehicle and / or a real-world vehicle.
[0014] In accordance with the techniques described herein, the vehicle 102 may receive sensor data from sensors 104 of the vehicle 102. For example, the sensors 104 may include position sensors (e.g., Global Positioning System (GPS) sensors), inertial sensors (e.g., acceleration sensors, gyroscope sensors, etc.), magnetic field sensors (e.g., compasses), position / speed / acceleration sensors (e.g., speedometers, drive system sensors), depth position sensors (e.g., lidar sensors, radar sensors, sonar sensors, time-of-flight (ToF) cameras, depth cameras, ultrasonic and / or sonar sensors, and / or other depth-sensing sensors), image sensors (e.g., cameras), audio sensors (e.g., microphones), and / or environmental sensors (e.g., barometers, hygrometers, etc.).
[0015] The sensors 104 may generate sensor data, which may be received by a computing device 106 associated with the vehicle 102. However, in other examples, some or all of the sensors 104 and / or computing devices 106 may be located separately and / or remotely from the vehicle 102, and data capture, processing, command, and / or control may be communicated to and from the vehicle 102 by one or more remote computing devices over wired and / or wireless networks.
[0016] The computing device 106 may include a memory 108 that stores the perception component 110, the planning component 112, the collision avoidance component 114, and / or the system controller 116. While depicted in FIG. 1 for illustrative purposes, it should be understood that the collision avoidance component 114 may reside on a separate computing device (or otherwise) than any one or more of the other components. In some examples, the perception component 110 may be a primary perception component among other perception components, such as a secondary perception component that may be part of the collision avoidance component 114. In general, the perception component 110 may determine what is in the environment surrounding the vehicle 102, and the planning component 112 may determine how to operate the vehicle 102 based on information received from the perception component 110. For example, the planning component 112 may determine a trajectory 118 based at least in part on the perception data and / or other information, such as, for example, one or more maps, location information (e.g., when the vehicle 102 is in the environment relative to features detected by the maps and / or the perception component 110), etc. Trajectory 118 may include instructions for controller 116 to operate drive components of vehicle 102 to achieve a steering angle and / or steering rate, which may result in a vehicle position, vehicle velocity, and / or vehicle acceleration. For example, trajectory 118 may comprise a target direction, a target steering angle, a target steering rate, a target position, a target velocity, and / or a target acceleration for controller 116 to track. Perception component 110 and / or planning component 112 may include one or more machine learning (ML) models and / or other computer-executable instructions.
[0017] In some examples, the perception component 110 may receive sensor data from the sensors 104 and determine data related to objects in the vicinity of the vehicle 102 (e.g., detected objects, instance segmentation, semantic segmentation, 2D and / or 3D bounding boxes, classifications associated with tracks), route data specifying the vehicle's destination, global map data identifying roadway features (e.g., features detectable with different sensor modalities useful for locating an autonomous vehicle), local map data identifying features detected in the vicinity of the vehicle (e.g., locations and / or dimensions of buildings, trees, fences, fire hydrants, stop signs, and any other features detectable with various sensor modalities), and the like. The object classifications determined by the perception component 110 may distinguish between different object types, such as, for example, passenger cars, pedestrians, bicyclists, delivery vehicles, semi-trailer vehicles, traffic signs, and the like. A track may include historical, current, and / or predicted object position, speed, acceleration, and / or orientation. The data generated by the perception component 110 may be collectively referred to as perception data. Once the perception component 110 generates the sensory data, the perception component 110 can provide the sensory data to the planning component 112 .
[0018] The planning component 112 may use the sensory data received from the perception component 110 to determine one or more trajectories, control the movement of the vehicle 102 to traverse a path, and / or otherwise control the operation of the vehicle 102, although any such operations may be performed by various other components (e.g., localization may be performed by a localization component, which may be based at least in part on the sensory data). For example, the planning component 112 may determine a path for the vehicle 102 from a first location to a second location, generate multiple potential trajectories for controlling the movement of the vehicle 102 according to a receding horizon technique (e.g., one microsecond, half a second) substantially simultaneously and based at least in part on the sensory data and / or simulated sensory data (which may further include predictions regarding detected objects within such data), control the vehicle to traverse the path (e.g., to avoid any of the detected objects), select one of the potential trajectories as the trajectory 118 of the vehicle 102, and generate drive control signals that may be transmitted to drive components of the vehicle 102. FIG. 1 shows an example of such a trajectory 118 represented as arrows indicating direction, speed, and / or acceleration, but the trajectory itself may include instructions for the controller 116, which may operate the drive system of the vehicle 102.
[0019] In some examples, the perception component 110 may include a hardware and / or software pipeline that may include one or more GPUs, ML models, Kalman filters, and / or the like. In some examples, the perception component 110 may monitor as much of the environment surrounding the autonomous vehicle as possible, which may be limited by sensor capabilities, objects and / or environmental occlusions (e.g., buildings, gradient changes, objects ahead of other objects), and / or environmental effects such as fog, snow, etc. For example, sensor data may include LIDAR and / or radar data that the perception component 110 may receive as input. The perception component 110 may be configured to detect as many objects and information about the environment as possible to avoid not taking into account events or object behaviors that should be considered by the planning component 112 in determining the trajectory 118.
[0020] In contrast, the collision avoidance component 114 may monitor a corridor 120 associated with a trajectory 118. For example, the collision avoidance component 114 may receive the trajectory 118 from the planning component 112 and determine the corridor 120 based at least in part on the trajectory. Determining the corridor may include determining a region of the environment based on an offset that may be based at least in part on a current speed of the vehicle 102, a speed specified by the trajectory 118, and / or vehicle kinematics such as steering rack actuator gain, tire slip, body roll, and the like. In at least some examples, such a corridor may additionally or alternatively represent a simplified geometric region for the vehicle. The collision avoidance component 114 may determine a subset of sensor data associated with the corridor 120 and perform operations described herein based at least in part on the subset. For example, in an example scenario, collision avoidance component 114 may determine a subset that includes sensor data that includes a portion of the environment represented by corridor 120, which may include a portion of roadway 122 and / or a portion of object 126 depicted in sensor data representation 124. While the perception data determined by perception component 110 may include perception data associated with object 128 and trajectory 118 may be generated based at least in part on that perception data, collision avoidance component 114 may simply monitor the sensor data associated with corridor 120 to ensure that trajectory 118 does not result in or is not likely to result in a collision.
[0021] The collision avoidance component 114 may include a secondary perception component that may classify a subset of the sensor data into one of two classifications: ground or object. In some examples, there may be more classifications (e.g., different object classifications). The collision avoidance component 114 may additionally or alternatively include a validation component that may determine a threshold distance as discussed herein and / or determine whether to validate or reject the trajectory 118. Validating the trajectory 118 may include sending the trajectory 118 to the controller 116 (e.g., the validation component may include a multiplexer, one or more transistors configured as a switch that passes the trajectory 118 upon receiving a signal from the validation component, and / or the like that may provide a signal that allows the trajectory 118 signal to pass to the controller 116). Rejecting the trajectory 118 may include sending a message to the planning component 112 to initiate a redetermining of the trajectory and / or initiating alternative actions, such as safety stop actions (e.g., emergency braking, pullover, and parking) and / or contingent trajectories in addition to the trajectory 118, which may be received from the planning component 112 and / or stored in the memory 108. In some examples, the collision avoidance component 114 may determine that at least a portion of the subset of sensor data is valid or invalid based at least in part on the orientation of the sensors and / or the topology of the environment and / or lower and upper limits of the valid portion of the sensor data, as described in more detail herein.
[0022] In some examples, controller 116 may comprise software and / or hardware for operating drive components of vehicle 102 sufficient to track trajectory 118. For example, controller 116 may comprise one or more proportional-integral-derivative (PID) controllers.
[0023] 2 illustrates a top-down view of an example scenario 100 and sensor data representation 124 of a corridor 120 monitored by a collision avoidance component compared to an additional or alternative collision avoidance system monitoring area 200. The sensor data within area 200, represented as a circle, may be monitored by an additional or alternative collision avoidance system. In an additional or alternative example, area 200 may identify a distance from vehicle 102 monitored by perception component 110. In such an example, area 200 may correspond to a maximum effective range of one or more of sensors 104.
[0024] Note that in the illustrated example, trajectory 118 is straight and, therefore, corridor 120 is correspondingly straight. Note that the shape of corridor 120 may be based at least in part on the shape of trajectory 118 and may be curved, non-uniform, and / or non-straight, depending on the topology of trajectory 118 and / or the environment. In some examples, corridor 120 may be two-dimensional or three-dimensional or more.
[0025] Example System FIG. 3 illustrates a block diagram of an example system 300 that implements the techniques discussed herein. In some examples, the example system 300 may include a vehicle 302 that may represent the vehicle 102 of FIG. 1. In some examples, the vehicle 302 may be an autonomous vehicle configured to operate according to a Level 5 classification issued by the National Highway Traffic Safety Administration, which describes a vehicle that can perform all safety-critical functions throughout the trip, and where the driver (or passenger) is not expected to control the vehicle at any time. However, in other examples, the vehicle 302 may be a fully or partially autonomous vehicle having other levels or classifications. Additionally, in some cases, the techniques described herein may be usable by non-autonomous vehicles.
[0026] Vehicle 302 may include vehicle computing device 304, sensors 306, emitters 308, network interfaces 310, and / or drive components 312. Vehicle computing device 304 may represent computing device 106, and sensor 306 may represent sensor 104. System 300 may additionally or alternatively include computing device 314.
[0027] In some examples, the sensors 306 may represent the sensors 104 and may include lidar sensors, radar sensors, ultrasonic transducers, sonar sensors, position sensors (e.g., Global Positioning System (GPS), compass, etc.), inertial sensors (e.g., Inertial Measurement Unit (IMU), accelerometers, magnetometers, gyroscopes, etc.), image sensors (e.g., Red-Green (RGB), Infrared (IR), intensity, depth, time-of-flight cameras, etc.), microphones, wheel encoders, environmental sensors (e.g., thermometers, hygrometers, light sensors, pressure sensors, etc.), etc. The sensors 306 may include multiple instances of each of these or other types of sensors. For example, the radar sensors may include individual radar sensors located at corners, front, rear, sides, and / or top of the vehicle 302. As another example, the cameras may include multiple cameras positioned at various locations on the exterior and / or interior of the vehicle 302. The sensors 306 may provide input to the vehicle computing device 304 and / or the computing device 314.
[0028] The vehicle 302 may also include emitters 308 for emitting light and / or sound, as described above. The emitters 308 in this example may include interior audio and visual emitters for communicating with passengers of the vehicle 302. By way of example and not limitation, the interior emitters may include speakers, lights, signs, display screens, touch screens, haptic emitters (e.g., vibration and / or force feedback), mechanical actuators (e.g., seat belt tensioners, seat positioners, head rest positioners, etc.), and the like. The emitters 308 in this example may also include exterior emitters. By way of example and not limitation, the exterior emitters in this example may include lights or other indicators of vehicle operation (e.g., indicator lights, signs, light arrays, etc.) for signaling heading, and one or more audio emitters (e.g., speakers, speaker arrays, horns, etc.) for audibly communicating with pedestrians or other nearby vehicles, one or more of which may include acoustic beam steering technology.
[0029] The vehicle 302 may also include a network interface 310 that enables communication between the vehicle 302 and one or more other local or remote computing devices. For example, the network interface 310 may facilitate communication with other local computing devices on the vehicle 302 and / or the drive components 312. The network interface 310 may also additionally or alternatively enable the vehicle to communicate with other nearby computing devices (e.g., other nearby vehicles, traffic signals, etc.). The network interface 310 may additionally or alternatively enable the vehicle 302 to communicate with a computing device 314. In some examples, the computing device 314 may include one or more nodes of a distributed computing system (e.g., a cloud computing architecture).
[0030] The network interface 310 may include physical and / or logical interfaces for connecting the vehicle computing device 304 to another computing device or network, such as the network 316. For example, the network interface 310 may enable Wi-Fi-based communications, such as frequencies defined by the IEEE 300.11 standard, short-range wireless frequencies such as Bluetooth, cellular communications (e.g., 2G, 3G, 4G, 4G LTE, 5G, etc.), or via an appropriate wired or wireless communication protocol that allows each computing device to interface with other computing devices. In some cases, the vehicle computing device 304 and / or the sensors 306 may transmit sensor data to the computing device 314 over the network 316 at a particular frequency, after a predetermined period of time, in near real-time, etc.
[0031] In some examples, the vehicle 302 may include one or more drive components 312. In some examples, the vehicle 302 may have a single drive component 312. In some examples, the drive component 312 may include one or more sensors for detecting conditions surrounding the drive component 312 and / or the vehicle 302. By way of example and not limitation, the sensors of the drive component 312 may include one or more wheel encoders (e.g., rotational encoders) for sensing the rotation of the wheels of the drive component, inertial sensors (e.g., inertial measurement units, accelerometers, gyroscopes, magnetometers, etc.) for measuring the orientation and acceleration of the drive component, cameras or other image sensors, ultrasonic sensors for acoustically detecting objects surrounding the drive component, LIDAR sensors, radar sensors, etc. Some sensors, such as wheel encoders, may be unique to the drive component 312. In some cases, the sensors on the drive component 312 may overlap or supplement corresponding systems (e.g., sensors 306) of the vehicle 302.
[0032] The drive components 312 may include many vehicle systems including a high voltage battery, a motor to propel the vehicle, an inverter to convert direct current from the battery to alternating current utilized by other vehicle systems, a steering system including a steering motor and a steering rack (which may be electric), a brake system including hydraulic or electric actuators, a suspension system including hydraulic and / or pneumatic components, a stability control system to distribute braking forces to mitigate loss of traction and maintain control, an HVAC system, lighting (e.g., lighting such as head / tail lights that illuminate the exterior surroundings of the vehicle), and one or more other systems (e.g., cooling systems, safety systems, on-board charging systems, other electrical components such as DC / DC converters, high voltage junctions, high voltage cables, charging systems, charging ports, etc.). Additionally, the drive components 312 may include a drive components controller that may receive and pre-process data from sensors and control the operation of various vehicle systems. In some cases, the drive components controller may include one or more processors and a memory communicatively coupled to the one or more processors. The memory may store one or more components that perform various functions of the drive components 312. Additionally, the drive components 312 may also include one or more communication connections that enable each drive component to communicate with one or more other local or remote computing devices.
[0033] The vehicle computing device 304 may include a processor 318 and a memory 320 communicatively coupled to the one or more processors 318. The memory 320 may represent memory 108. The computing device 314 may also include a processor 322 and / or a memory 324. The processor 318 and / or 322 may be any suitable processor capable of processing data and executing instructions to perform operations as described herein. By way of example and not limitation, the processor 318 and / or 322 may include one or more central processing units (CPUs), graphics processing units (GPUs), integrated circuits (e.g., application specific integrated circuits (ASICs)), gate arrays (e.g., field programmable gate arrays (FPGAs)), and / or other devices or portions of devices that process electronic data and convert the electronic data into other electronic data that may be stored in registers and / or memory.
[0034] Memory 320 and / or 324 may be examples of non-transitory computer-readable media. Memory 320 and / or 324 may store an operating system and one or more software applications, instructions, programs, and / or data for implementing the methods and functions attributed to the various systems described herein. In various implementations, memory may be implemented using any suitable memory technology, such as static RAM (SRAM), synchronous DRAM (SDRAM), non-volatile / flash type memory, or any other type of memory capable of storing information. The architectures, systems, and individual elements described herein may include many other logical, programmatic, and physical components, of which the ones shown in the accompanying drawings are merely examples relevant to the description herein.
[0035] In some examples, memory 320 and / or memory 324 may store a positioning component 326, a perception component 328, a planning component 330, a collision avoidance component 332, a map 334, and / or a system controller 336. The perception component 328 may represent the perception component 110, the planning component 330 may represent the planning component 112, and / or the collision avoidance component 332 may represent the collision avoidance component 114.
[0036] In at least one example, the positioning component 326 may include hardware and / or software to receive data from the sensors 306 to determine the position, velocity, and / or orientation (e.g., one or more of x position, y position, z position, roll, pitch, or yaw) of the vehicle 302. In one example, the positioning component 326 may utilize simultaneous localization and mapping (SLAM), calibration, localization and mapping, simultaneously (CLAMS), relative SLAM, bundle adjustment, nonlinear least squares optimization, and the like to receive image data, lidar data, radar data, IMU data, GPS data, wheel encoder data, and the like to accurately determine the position, pose, and / or velocity of the autonomous vehicle. In some examples, as discussed herein, the positioning component 326 may provide data to various components of the vehicle 302 to determine an initial position of the autonomous vehicle for generating a trajectory and / or for generating map data. In some examples, the positioning component 326 may provide the collision avoidance component 332 with the position and / or orientation of the vehicle 302 relative to its associated environment and / or sensor data.
[0037] In some examples, the perception component 328 may include a primary perception system and / or a predictive system implemented in hardware and / or software. The perception component 328 may detect objects in the environment surrounding the vehicle 302 (e.g., identify that an object is present), classify the objects (e.g., determine an object type associated with a detected object), segment the sensor data and / or other representation of the environment (e.g., identify a portion of the sensor data and / or a representation of the environment that is associated with a detected object and / or object type), determine characteristics associated with the objects (e.g., a track that identifies a current, predicted, and / or previous position, orientation, speed, and / or acceleration associated with the object), and / or the like. Data determined by the perception component 328 is referred to as perception data.
[0038] The planning component 330 may receive the position and / or orientation of the vehicle 302 from the positioning component 326 and / or the perception data from the perception component 328, and may determine instructions for controlling the operation of the vehicle 302 based at least in part on any of this data. In some examples, determining the instructions may include determining the instructions based at least in part on a format associated with a system with which the instructions are associated (e.g., a first instruction for controlling the movement of the autonomous vehicle may be formatted in a first format of messages and / or signals (e.g., analog, digital, aerodynamic, kinematic) that the system controller 336 and / or the drive component 312 may analyze / execute, and a second instruction for the emitter 308 may be formatted according to a second format associated therewith).
[0039] The collision avoidance component 332 may operate on the vehicle 302 and / or the computing device 314. In some examples, the collision avoidance component 332 may be downstream (receives output) from the planning component 330 in the pipeline. The collision avoidance component 332 may be configured to pass all or a portion of the output of the planning component 330 to the system controller 336 for implementation, or may not be configured to pass the output, depending on the determinations discussed herein. In some examples, the collision avoidance component 332 may include a feedback loop to provide input to the planning component 330, such as a flag or message that triggers a redetermining of a trajectory.
[0040] Memory 320 and / or 324 may additionally or alternatively store a mapping system (e.g., generating a map based at least in part on the sensor data), a planning system, a ride management system, etc. Although positioning component 326, perception component 328, planning component 330, map 334, and / or system controller 336 are illustrated as being stored in memory 320, any of these components may include processor-executable instructions, machine learning models (e.g., neural networks), and / or hardware, and all or a portion of any of these components may be stored in memory 324 or configured as part of computing device 314.
[0041] As described herein, the localization component 326, the perception component 328, the planning component 330, and / or other components of the system 300 may include one or more ML models. For example, the localization component 326, the perception component 328, and / or the planning component 330 may each include a different ML model pipeline. In some examples, the ML model may include a neural network. An exemplary neural network is a bio-inspired algorithm that passes input data through a series of connected layers to produce an output. Each layer in a neural network may include another neural network, or may include any number of layers (convolutional or not). As can be understood in the context of the present disclosure, the neural network may utilize machine learning, which can refer to a broad class of such algorithms in which an output is generated based on learned parameters.
[0042] Although described in the context of neural networks, any type of machine learning can be used consistent with the present disclosure. For example, machine learning algorithms can include, but are not limited to, regression algorithms (e.g., ordinary least squares regression (OLSR), linear regression, logistic regression, stepwise regression, multivariate adaptive regression splines (MARS), locally estimated scatterplot smoothing (LOESS), instance-based algorithms (e.g., ridge regression, least absolute shrinkage and selection operator (LASSO), Elastic net, least-angle regression (LARS), decision tree algorithms (e.g., classification and regression trees (CART), iterative dichotomiser 3 (ID3), chi-squared automated interaction detection (CHAID), decision stump, conditional decision tree), Bayesian algorithms (e.g., naive Bayes, Gaussian naive Bayes, multinomial naive Bayes, average one-dependence estimators), Bayesian belief networks (BNNs), Bayesian networks), clustering algorithms (e.g., k-means, k-medians, expectation maximization (EM), hierarchical clustering), association rule learning algorithms (e.g., perceptrons, backpropagation, Hopfield networks, RBFNs (Radial Basis FunctionNetwork), deep learning algorithms (e.g., Deep Boltzmann Machines (DBM), Deep Belief Networks (DBN), Convolutional Neural Networks (CNN), stacked autoencoders), dimensionality reduction algorithms (e.g., Principal Component Analysis (PCA), Principal Component Regression (PCR), Partial Least Squares Regression (PLSR), Sammon Mapping, Multidimensional Scaling (MDS), Projection Pursuit, Linear Discriminant Analysis (LDA), Mixture Discriminant Analysis (MDA), Quadratic Discriminant Analysis (QDA), Flexible Discriminant Analysis (FDA)), ensemble algorithms (e.g., Boosting, Bootstrap Aggregation (Bagging), AdaBoost, Stacked Generalization (Blending), Gradient Boosting Machines (GBM), Gradient Boosted Regression Trees (GBRT), Random Forests), SVM (Support Vector Machines), supervised learning, unsupervised learning, semi-supervised learning, etc. Further example architectures include neural networks such as ResNet-50, ResNet-101, VGG, DenseNet, and PointNet.
[0043] The memory 320 may additionally or alternatively store one or more system controllers 336, which may be configured to control steering, propulsion, braking, safety, emitter, communication, and other systems of the vehicle 302. These system controllers 336 may communicate with and / or control corresponding systems of the drive component 312 and / or other components of the vehicle 302. For example, the planning component 330 may generate instructions based at least in part on sensory data generated by the perception component 328, which the collision avoidance component 332 may verify and / or send to the system controller 336. The system controller 336 may control the operation of the vehicle 302 based at least in part on instructions received from the planning component 330 and / or the collision avoidance component 332. In some examples, the collision avoidance component 332 may replace instructions generated by the planning component 330 with alternative instructions associated with an alternative trajectory, such as an alternative trajectory, which may specify an alternative maneuver.
[0044] 3 is shown as a distributed system, it should be noted that in alternative examples, components of the vehicle 302 may be associated with the computing device 314 and / or components of the computing device 314 may be associated with the vehicle 302. That is, the vehicle 302 may perform one or more functions associated with the computing device 314, and vice versa.
[0045] (Example Processing) 4 shows an illustrative flow diagram of an example process 400 for validating a trajectory output by a planning component of an autonomous vehicle. In some examples, the example process 400 may be performed by at least a collision avoidance component during operation of the autonomous vehicle.
[0046] At operation 402, the example process 400 may include receiving a current pose, trajectory, and / or corridor associated with the autonomous vehicle according to any of the techniques discussed herein. For example, the current pose may be received from a positioning component, the trajectory may be received from a planning component and / or one or more sensors (e.g., wheel encoders, GPS) of the autonomous vehicle, and / or the corridor may be received from a planning component and / or determined by a collision avoidance component. In some examples, determining the corridor may be based at least in part on the trajectory, the width and / or length of the autonomous vehicle, the current speed, and / or an offset. FIG. 4 illustrates an autonomous vehicle position 404 and a corridor 406. In at least some examples, the dimensions of such a corridor may be based on parameters associated with the vehicle, for example. As a non-limiting example, the length of the corridor may be a function of the vehicle's speed, while as another example, the width may be based on the vehicle's turning radius, speeds that may be associated with objects in the vicinity of the vehicle, and the like. To enhance clarity of the figures, the trajectory is not illustrated. In some examples, the trajectory may include a current position and / or a planned position and / or velocity of the autonomous vehicle.
[0047] At operation 408, the example process 400 may include receiving sensor data from a sensor associated with the autonomous vehicle according to any of the techniques discussed herein. For example, the sensor data 410 may include LIDAR data and / or radar data, among other types of sensor data. In some examples, the sensor data may include depth data (e.g., data indicative of a distance from a sensor / autonomous vehicle to a surface in the environment), Doppler data associated with a detected surface, and / or any other type of sensor data indicative of a position of an object in the environment surrounding the autonomous vehicle.
[0048] At operation 412, the example process 400 may include determining a first subset of sensor data associated with the corridor and a ground classification according to any of the techniques discussed herein. In some examples, the example process 400 may include determining a subset of sensor data associated with the corridor and classifying the subset into one of two classifications: a ground classification (at operation 412) and an object classification (at operation 420). FIG. 4 illustrates a portion of FIG. 5. FIG. 5 illustrates sensor data 500 associated with the example scenario 100 and a sensor data representation 124. FIG. 5 illustrates the corridor 406, the sensor data outside the corridor 406 as gray, and the subset of sensor data within the corridor 406 as black. FIG. 5 also illustrates a first subset of sensor data within the corridor 406 classified as ground 502 as a dotted line, and a second subset of sensor data within the corridor 406 classified as object 504 as a solid line.
[0049] Determining that the first subset of sensor data is associated with a ground classification may include determining continuity between the sensor data and determining that the sensor data is continuous. Determining that the sensor data is continuous may include determining that the spacing between the sensor data is within a spacing range (e.g., is less than or equal to a threshold distance between the points, and in at least some examples, such threshold distance may be fixed and / or may be a function of the range between the points), determining that the angle between the sensor data is within a range of angles (e.g., an azimuth angle between two points is within a range of azimuth angles, a (vertical) gradient between two points is within a range of gradients), determining that the surface roughness of the plurality of sensor data points is less than or equal to a surface roughness threshold, determining that the plurality of sensor data points are associated with a variance less than or equal to a variance threshold (e.g., a variance associated with a spacing (e.g., distance) between the sensor data points, a variance associated with an angular displacement between the sensor data points), etc. For example, the ground classification 416 is associated with sensor data that smoothly follows a contour of the topology / LIDAR data. In contrast, the object classification 418 may be associated with data points that do not exhibit the same continuity / spacing as the sensor data associated with the ground classification 416.
[0050] 7, determining the first subset associated with the ground classification may additionally or alternatively include fitting a line (e.g., a curve such as a polynomial, spline, and / or the like) and / or a plane to at least a portion of the subset of sensor data associated with the corridor and identifying points of the sensor data that are within a threshold distance of the line and / or plane as part of the first subset. In some examples, the threshold distance may be defined to be a distance perpendicular (tangent) to the line and / or plane.
[0051] At operation 420, the example process 400 may include determining a second subset of sensor data associated with the corridor and object classification according to any of the techniques discussed herein. For example, operation 420 may include identifying sensor data points that lie on (e.g., have an elevation value above) the line or plane determined at operation 412. In some examples, a line may be determined associated with a profile of the sensor data (e.g., associated with an elevation and / or longitudinal position of the sensor data), and operation 420 may include moving the line across the corridor. In some examples, the sensor data not classified as ground at operation 412 may be classified as an object (e.g., any sensor data not classified as ground may be classified as an object). In some examples, operation 420 may include determining that a portion of the second subset is associated with an object based at least in part on clustering, region growing, and / or similar techniques.
[0052] In some examples, operation 412 and / or operation 420 may additionally or alternatively include classifying sensor data associated with the extended corridor as ground or object, where the extended corridor includes the corridor and white space. For example, the corridor may be extended laterally according to a multiplier (e.g., 110%, 115%, any other value) and / or an additional distance (e.g., 0.5 meters, 15 centimeters, any other value).
[0053] At operation 422, the example process 400 may include determining a position and / or velocity associated with at least the closest object according to any of the techniques discussed herein. For example, operation 422 may include determining a velocity of the object based at least in part on accumulating sensor data associated with the object over time. In additional or alternative examples, determining the velocity of the object may be based at least in part on Doppler values indicated by radar equipment, sonar equipment, and / or the like. In some examples, operation 422 may include determining a position and / or velocity associated with additional objects identified in operation 420. In some examples, operation 422 may additionally or alternatively include determining one or more predicted positions of at least the closest object based at least in part on the velocity associated with the object. Operation 422 may additionally or alternatively include determining the closest object based at least in part on the current and / or predicted positions of the one or more objects and determining which object is closest or predicted to be closest to the autonomous vehicle position 404.
[0054] At operation 424, the example process 400 may include determining whether the nearest object is at a position or is predicted to be at a position that meets or exceeds a threshold distance according to any of the techniques discussed herein. Operation 424 may include a threshold distance based at least in part on the trajectory. For example, the threshold distance may correspond to a maximum stopping distance of the vehicle and, in some examples, may include an additional safety margin in addition to the maximum stopping distance. In some examples, the threshold distance may be a distance along a line or curve associated with the trajectory. Operation 424 may include determining whether the object is or will be within a threshold distance of the autonomous vehicle (or a predicted position of the autonomous vehicle).
[0055] If the object is located and / or is predicted to be less than the threshold distance of the autonomous vehicle, the example process 400 may proceed to operation 426. If the object is not located and / or is predicted to not be within the threshold distance of the autonomous vehicle, the example process 400 may proceed to operation 428.
[0056] At operation 426, the example process 400 may include having the autonomous vehicle execute a contingent trajectory and / or redetermine a trajectory according to any of the techniques discussed herein. For example, having the vehicle execute a contingent trajectory may include sending instructions to the system controller that cause the vehicle to slow down, perform a safety stop maneuver, apply heavy brakes, and / or the like. In some examples, the planner may determine the contingent trajectory and send the contingent trajectory to the collision avoidance component along with the trajectory and / or upon request by the collision avoidance component. In additional or alternative examples, operation 428 may include sending a request to the planner to determine a new trajectory.
[0057] At operation 428, the example process 400 may include determining whether the farthest ground data point is at a distance that meets or exceeds a threshold distance according to any of the techniques discussed herein. The farthest ground data point may be the sensor data point classified as being at the farthest ground data point from the autonomous vehicle's position (or predicted position), or at one of the farthest ground data points. Operation 428 may be a check to verify that there is sensor data far enough away from the autonomous vehicle that the autonomous vehicle can stop before hitting any objects and detect any objects within the stopping distance of the autonomous vehicle, plus some margin in some examples.
[0058] If the furthest ground data point is at a distance from the autonomous vehicle's current and / or predicted position that is less than the threshold distance, the example process 400 may proceed to operation 426, whereas if the furthest ground data point is at a distance from the autonomous vehicle that meets or exceeds the threshold distance, the example process 400 may proceed to operation 430.
[0059] In some examples, the techniques may include determining a first threshold distance (at operation 424) associated with the closest object and a second threshold distance (at operation 428) associated with the farthest ground data point. In some examples, the second threshold distance may be greater than the first threshold distance, but in some examples may be equal.
[0060] At operation 430, the example process 400 may include verifying and / or transmitting the trajectory according to any of the techniques discussed herein. For example, verifying and / or transmitting the trajectory may include causing the autonomous vehicle to execute the trajectory (e.g., by transmitting the trajectory to a system controller).
[0061] Examples of Challenging Ground Classification Scenarios FIG. 6A illustrates an example scenario 600 in which it may be difficult to classify sensor data as ground or object, and FIG. 6B illustrates example sensor data associated with the example scenario of FIG. 6A along with a corridor 602 and classification of the sensor data as a ground classification or an object classification.
[0062] FIG. 6A illustrates an example scenario 600 in which a vehicle 604 navigates an environment that includes two changes in slope. In the illustrated scenario, the roadway includes a negative slope that flattens (zero slope) for a period of time and then resumes the negative slope, at least for the portion of the environment associated with the trajectory 606. The vehicle 604 may generate a trajectory 606 for the vehicle 604 to traverse the environment down the first negative slope, through a portion of the flat slope, and down the second negative slope. Environments that include a single slope (e.g., a flat road or a road that slopes continuously upwards or downwards without any changes) present a simpler ground classification problem because the ground can be modeled using a plane or a single degree line. Changes in slope present a more challenging problem because modeling the roadway as a plane may result in multiple false positive object and / or ground classifications, and modeling the roadway using a simple polynomial may similarly result in false positive object and / or ground classifications.
[0063] FIG. 6B illustrates a corridor 602 associated with a trajectory 606 and sensor data 608, where the grey sensor data is sensor data outside the corridor 602 and the black sensor data is sensor data within the corridor 602. The techniques discussed herein may include fitting a multi-angle line and / or plane to the sensor data 608. In some examples, the techniques may include determining a line and / or plane that fits the sensor data within the corridor 602. For example, line fitting may include fitting a curve 610 to the sensor data, where the curve may be a quadratic (or higher) polynomial, a spline, a Bezier curve, a basis spline (B-spline), such as a non-uniform rational basis spline (NURBS), and / or the like. In some examples, determining the line may include outlier removal and / or may be based at least in part on a bias determined at least in part based on one or more sensor data points associated with a minimum and / or maximum altitude (and / or other local or global extremes). Because it may be difficult to understand the three-dimensional depiction of FIG. 6B, FIG. 8 includes a two-dimensional representation of the sensor data projected into a two-dimensional coordinate frame corresponding to the elevation profile along the trajectory 606 (e.g., the ordinal values are associated with elevation and the transverse values are associated with longitudinal position along the trajectory).
[0064] Example process for classifying sensor data as ground FIG. 7 shows an illustrative flow diagram of an example process 700 for classifying sensor data as a ground based at least in part on determining a curve to fit to the sensor data. In some examples, the curve may be used to classify the sensor data points as an object. For example, classifying the sensor data points as an object may include determining that the sensor data points lie on a line. In some examples, the example process 700 may be at least a portion of operation 412 and / or operation 420. The example process 700 may be preceded by projecting the three-dimensional sensor data, such as lidar data, radar data, and / or the like, into a two-dimensional coordinate frame as shown in FIG. 8, where the ordinate values are associated with altitude and the abscissa values are associated with longitudinal positions along a trajectory generated by the autonomous vehicle. In some examples, the example process 700 may be applied similarly to fitting a plane to the three-dimensional sensor data or fitting a line to a portion of the three-dimensional sensor data (e.g., three-dimensional sensor data having the same coordinate values, i.e., three-dimensional sensor data in the same plane or nearby (within a threshold distance) of the same plane). In some examples, the example process 700 may include determining a subset of sensor data associated with a ground segment based at least in part on fitting a curve to the sensor data, and identifying sensor data points that fall below or meet the curve, at an altitude, as ground.
[0065] At operation 702, the example process 700 may include mapping at least a portion of the sensor data to a lower dimensional space according to any of the techniques discussed herein. For example, operation 702 may include projecting three-dimensional sensor data points into a two-dimensional space. In some examples, the two-dimensional space may be associated with an elevation profile and / or trajectory of the environment. The two-dimensional space may be referenced, in some examples, at least in part, based on the trajectory and / or pose of the autonomous vehicle. In additional or alternative examples, the sensor data may originally include one or more dimensions, such as four or more dimensions. The mapping may include reducing the number of dimensions to one or more dimensions associated with the altitude / elevation and longitudinal components of the trajectory of the autonomous vehicle. For example, FIG. 6B shows an image of three-dimensional sensor data, and FIG. 8 shows a representative illustration of the sensor data mapped to a lower dimensional space (i.e., two dimensions in the depicted example).
[0066] At operation 704, the example process 700 may include determining a first number of channels of sensor data including one or more return values within the corridor according to any of the techniques discussed herein. A channel may include at least a detection portion associated with a sensor. For example, a lidar device may include a detector configured to receive a light beam, and a camera may include an image sensor including discrete detection portions (e.g., pixels).
[0067] In some examples, a sensor may output a "return" when the detector detects a return signal, such as reflected light (e.g., in the case of a lidar, radar, and / or depth camera), reflected sound waves (e.g., in the case of a sonar), emitted heat (e.g., in the case of an infrared or other thermal imaging camera), etc. In some examples, a channel may not produce a return when the return signal is diffracted, or there may not be a surface within the maximum operating distance of the sensor to cause a return signal.
[0068] In some examples, it is contemplated that a channel of a sensor device may include a detector that receives a signal from an environmental signal emitter. For example, a thermal imaging camera may include a detection component that receives heat from objects in the environment that generate heat. Regardless, a channel may be associated with a pixel, a detector, and / or any other distinct portion of a sensor detection system.
[0069] 7 illustrates lidar data that may include return values associated with channel 706, return values associated with channel 708, and return values associated with channel 710, among many other channels. For example, each contour of the depicted sensor data may correspond to a different channel of the lidar sensor.
[0070] Operation 704 may include determining a first number of channels that include returns and / or exceed a threshold number (e.g., a percentage) of returns in the corridor 712. For example, operation 704 may include determining a subset of sensor data associated with the corridor 712 and determining a number of channels associated with the returns of the subset. In some examples, determining the number of channels may include determining a number of channels that include more than 90% or more than 50% (or any other number) of returns in the channel, as opposed to no returns. In some examples, the first number may be a positive integer.
[0071] At operation 714, the example process 700 may include determining a second number of control points and / or a third number of knots of the curve (e.g., a Bézier curve) based at least in part on the first number according to any of the techniques discussed herein. Operation 714 may include determining a dimension of a knot vector and / or a control point vector associated with the curve, which may include polynomials and / or splines, such as Bézier curves, B-splines, NURBS, and / or the like. In some examples, the second number of control points may be equal to or less than the first number. Selecting the second number (the number of control points) to be less than the first number (the number of channels with return values) may reduce overfitting, thereby reducing misclassifying an object as ground. In some examples, the minimum second number may be two, although other numbers, such as one or three or more, are contemplated. The third number (the number of knots) may be related to the second number of control points and curvature (e.g., may be set to be equal to two, or in additional or alternative examples, three or more). For example, the third number of knots may be equal to the second number of control points + the curvature + 1. In some examples, the second number and / or the third number may be positive integers.
[0072] The knots may define the endpoints of a span of a curve, which may be defined by a polynomial (or other curve function), the parameters of which may be defined by one or more control points.
[0073] At operation 716, the example process 700 may include determining a curve having a second number of control points and / or a third number of knots based at least in part on the portion of the sensor data within the corridor in accordance with any of the techniques discussed herein. Operation 716 may additionally or alternatively include one or more pre-fitting operations, such as, for example, removing potentially erroneous sensor data points (e.g., by clustering return values within a channel to remove outliers), robust estimation techniques (e.g., RANSAC), and / or weighting the sensor data.
[0074] For example, weighting the sensor data may include determining a fourth number of bins based at least in part on a first number of channels having return values, with more bins that may be generated the more channels that include return values. For example, FIG. 7 illustrates example sensor data 718, bins 720, and bin 722. In some examples, the bins may be evenly spaced or spaced to include the same number of sensor data points. In some examples, the sensor data associated with bin 720 may be weighted differently than the sensor data associated with bin 722. Weighting the sensor data may include determining a range of the sensor data associated with the bin. For example, FIG. 7 illustrates a range 724, which may additionally or alternatively be represented as the difference between the highest and lowest sensor data points in height. In some examples, the sensor data associated with the bin may be assigned the same weight (e.g., 1) if the range / difference is less than a minimum object height (e.g., 1 meter, 0.5 meters, 20 centimeters, any other value). The sensor data associated with bin 720 may be weighted with the same weight, for example, because the sensor data associated therewith exhibits a low degree of variability.
[0075] However, if the range / difference meets or exceeds the minimum object height, determining the weight of the sensor data associated with the bin may include weighting the sensor data more heavily toward the bottom (altitude) of the sensor data. For example, sensor data points associated with the bottom quartile or other percentile (e.g., below the 30th percentile, below the 20th percentile, below the 10th percentile) may be weighted more heavily than sensor data points associated with an altitude above the altitude defined by the quartile or other percentile. In any case, sensor data points identifying a low altitude may be weighted more heavily based on an inference that such data points are more likely to be associated with the ground than with an object.
[0076] The operation 716 may include a fitting algorithm that minimizes a total residual associated with the difference (error) between the individual sensor data points and the curve 726. The fitting algorithm may determine values of a control point vector and / or a knot vector, which may define the locations of the control points and / or knots. The control points and knots may define a spline or other curve. In some examples, the fitting algorithm may comprise a least squares regression to fit an estimated curve defined by the control points and knots to the sensor data. In some examples, the fitting algorithm may be a weighted algorithm such as weighted least squares (e.g., using weights determined in association with the sensor data based at least in part on a degree defined by the sensor data), although any other suitable fitting algorithm may be used, for example, any of a variety of nonlinear least squares algorithms such as a Gauss-Newton algorithm, and / or the like.
[0077] In some examples, the loss function may determine a loss based at least in part on determining a residual (error) between the sensor data and the estimated curve. In some examples, the loss function may determine a weight associated with a residual 728 between the curve 726 and the sensor data point 730. In some examples, the loss function may be a distortion loss function that weights negative residuals more heavily than positive residuals. For example, the residual 728 is a positive residual because the sensor data point 730 is above the curve 726, while the residual 732 associated with the sensor data point 734 is a negative residual. The loss function may determine a first weight associated with the residual 732 that is greater than a second weight associated with the residual 728. In other words, the loss function may determine a greater loss for a first residual associated with a first sensor data point below the estimated curve than a second residual associated with a second sensor data point above the estimated curve. Functionally, this means that the fitting algorithm modifies the estimated curve based more heavily on residual 732 than on residual 728, which effectively causes the updated estimated curve determined by the fitting algorithm based at least in part on the weighted residuals to move towards sensor data point 734, taking into account only the contributions from the illustrated residuals and nothing else.
[0078] In operation 736, the example process 700 may include modifying the curve, control points, and / or knots based at least in part on the portion of the sensor data and / or a rule set according to any of the techniques discussed herein. The rule set may be generated at least in part based on the portion of the sensor data and may specify a maximum elevation value for the control points based at least in part on elevation values of the sensor data (e.g., a control point may not have an elevation greater than a maximum elevation value of the sensor data) and / or a knot spacing technique. For example, the knot spacing technique may include determining the spacing (e.g., distance) between knots, indicated by the "x" in FIG. 7, and modifying the spacing between them so that the knots are evenly spaced across the distance. Some fitting algorithms may space the knots based at least in part on index numbers of the sensor data (e.g., so that the knots are evenly distributed across the index numbers), but this may result in some knots being spatially too far apart or close to each other.
[0079] For example, FIG. 7 shows a spacing 738 between the first knot and the second knot and a spacing 740 between the second knot and the third knot. The spacing 738 is smaller than the spacing 740 because there is more sensor data between the first knot and the second knot, and the fitting technique determines the location of the knots based at least in part on the sensor data index. Changing the spacing of the knots may include changing the location of the knots based at least in part on the length of the curve (e.g., the length of the curve, the longitudinal distance spanned by the curve) and the number of knots. In some examples, changing the location of the knots may include changing the location of the knots so that the knots are evenly spaced along the curve or along the longitudinal distance spanned by the curve, or in additional or alternative examples, changing the location of the knots may include an "approximate" change that moves the knots toward even spacing, but does not strictly move the knots perfectly evenly spaced. For example, the latter technique may include defining a range associated with a position associated with an even number of knot placements and moving the knot's position until it falls within the range. The range may be based at least in part on sensor data density, total length of the curve, roadway slope, a number of slope inflection points (changing from positive to negative or vice versa), and / or the like.
[0080] FIG. 8 illustrates an example curve 800 that may represent curve 726, fitted to sensor data according to the example process of FIG. 7. Note that sensor data is represented as dots, control points are represented as circles, knots are represented as "x's," and curve 800 is represented as a solid line. Note that FIG. 8 also illustrates example return values associated with channel 802, return values associated with channel 804, bins 806, and bins 808. Note also that, at least for the depicted example, curve 800 is generated for three-dimensional sensor data projected into a two-dimensional coordinate frame, representing points along elevations on the vertical axis and longitudinal components of the trajectory along the horizontal axis. The curve may be determined in the two-dimensional space and projected back into the three-dimensional space associated with the original sensor data to determine whether the sensor data is associated with a ground classification (e.g., sensor data with elevations below the curve) or an object classification (e.g., sensor data with elevations above the curve). Such a determination may include moving a curve across the corridor to iteratively determine whether sensor data associated with a portion of the corridor is ground or an object.
[0081] Example clauses A. A method comprising: receiving a trajectory for controlling operation of an autonomous vehicle; receiving sensor data from a sensor associated with the autonomous vehicle; determining or receiving a corridor indicating a boundary area in front of the autonomous vehicle within which the autonomous vehicle is constrained to move; determining a first subset of the sensor data associated with the corridor and a ground classification; determining a second subset of the sensor data associated with the corridor and an object classification; determining a position and velocity associated with at least a portion of the object based at least in part on the second subset; and determining to control the autonomous vehicle to execute a trajectory or to control the autonomous vehicle to execute a contingent trajectory based at least in part on at least one of the position or velocity.
[0082] B. The method of clause A, wherein the velocity is a first velocity, the method further comprising at least one of determining a threshold distance associated with a second velocity associated with the autonomous vehicle, and determining a first distance from the autonomous vehicle to a position of the object or determining a second distance from the autonomous vehicle to a point of the first subset that is farthest from the autonomous vehicle.
[0083] C. The method of clause B, wherein controlling the autonomous vehicle to execute the trajectory is based at least in part on determining that the first distance meets or exceeds a threshold distance and determining that the second distance meets or exceeds a threshold distance.
[0084] D. The method of clause B or clause C, wherein controlling the autonomous vehicle to execute the contingent trajectory is based at least in part on determining that the first distance is less than a threshold distance or determining that the second distance is less than a threshold distance.
[0085] E. The method of any one of clauses A-D, wherein classifying the first subset of the sensor data as a ground classification comprises at least one of fitting a line to at least a portion of the sensor data and determining as the first subset first points of the sensor data that are within a threshold distance of the line or determining as the first subset first points that have a variance in spacing less than or equal to a variance threshold.
[0086] F. The method of any one of clauses A-E, wherein classifying the second subset of the sensor data as an object classification comprises at least one of fitting a line to at least a portion of the sensor data and determining second points of the sensor data that lie on the line as the second subset, or determining that a corner between two points of the second subset is outside a range of angles or a spacing between two points is outside a range of distances.
[0087] G. A system comprising one or more sensors, one or more processors, and a memory storing processor-executable instructions which, when executed by the one or more processors, cause the system to perform operations including receiving sensor data from sensors associated with a vehicle, receiving or determining a corridor associated with operation of the vehicle, determining a first subset of the sensor data associated with the corridor and a ground classification, determining a second subset of the sensor data associated with the corridor and an object classification, determining a threshold distance based at least in part on a first speed of a vehicle, and controlling a vehicle based at least in part on the threshold distance and at least one of the first subset or the second subset.
[0088] H. The system of clause G, wherein controlling the vehicle is further based at least in part on determining a position and a second velocity associated with at least a portion of the object based at least in part on the second subset.
[0089] I. The system of clause H, wherein controlling the vehicle further comprises determining at least one of a first distance from the vehicle to the location or a second distance from the vehicle to a predicted location of the object based at least in part on a first distance from the vehicle to the location or a first speed or a second speed, and causing the vehicle to execute a contingent trajectory based at least in part on determining that at least one of the first distance or the second distance is less than the threshold distance.
[0090] J. The system of any one of clauses G-I, wherein controlling the vehicle further comprises determining a distance from the vehicle to the farthest point of the first subset and causing the vehicle to follow a contingent trajectory based at least in part on determining that the distance is less than the threshold distance.
[0091] K. The system of any one of clauses G-J, wherein controlling the vehicle further comprises determining a first distance from the vehicle to a farthest point of a first subset or a second distance from the vehicle to a nearest point of a second subset, and causing the vehicle to navigate a trajectory based at least in part on determining that the first distance and the second distance meet or exceed the threshold distance.
[0092] L. The system of any one of clauses G-K, wherein classifying the first subset of sensor data as a ground classification comprises at least one of fitting a line to at least a portion of the sensor data and determining as the first subset first points of the sensor data that are within a second threshold distance of the line or determining as the first subset first points that have a spacing variance or angular displacement variance less than a variance threshold.
[0093] M. The system of any one of clauses G-L, wherein classifying the second subset of the sensor data as an object classification comprises at least one of fitting a line to at least a portion of the sensor data and determining second points of the sensor data that lie on the line as the second subset, or determining that a corner between two points of the second subset is outside a range of angles or that a distance between two points is outside a range of distances.
[0094] N. A non-transitory computer-readable medium storing processor-executable instructions that, when executed by one or more processors, cause the one or more processors to perform operations including receiving sensor data from a sensor associated with a vehicle; receiving a corridor associated with operation of the vehicle; determining a first subset of the sensor data associated with the corridor and a ground classification; determining a second subset of the sensor data associated with the corridor and an object classification; determining a threshold distance based at least in part on a first speed of the vehicle; and controlling the vehicle based at least in part on the threshold distance and at least one of the first subset or the second subset.
[0095] O. The non-transitory computer-readable medium of clause N, wherein controlling the vehicle is further based at least in part on determining a position and a second velocity associated with at least a portion of the object based at least in part on the second subset.
[0096] P. The non-transitory computer-readable medium of clause O, wherein controlling the vehicle further comprises determining at least one of a first distance from the vehicle to the location or a second distance from the vehicle to a predicted location of the object based at least in part on the first velocity or the second velocity, and causing the vehicle to execute a contingent trajectory based at least in part on determining that at least one of the first distance or the second distance is less than the threshold distance.
[0097] Q. The non-transitory computer-readable medium of any one of clauses N-P, wherein controlling the vehicle further comprises determining a distance from the vehicle to the farthest point of the first subset and causing the vehicle to follow a contingent trajectory based at least in part on determining that the distance is less than the threshold distance.
[0098] R. The non-transitory computer-readable medium of any one of clauses N-Q, wherein controlling the vehicle further comprises determining a first distance from the vehicle to a farthest point of a first subset or a second distance from the vehicle to a nearest point of a second subset, and causing the vehicle to navigate a trajectory based at least in part on determining that the first distance and the second distance meet or exceed the threshold distance.
[0099] S. The non-transitory computer-readable medium of any one of clauses N-R, wherein classifying the first subset of sensor data as a ground classification comprises at least one of fitting a line to at least a portion of the sensor data and determining as the first subset first points of the sensor data that are within a second threshold distance of the line or determining as the first subset first points that have a spacing variance or angular displacement variance less than or equal to a variance threshold.
[0100] T. The non-transitory computer-readable medium of any one of clauses N-S, wherein classifying the second subset of the sensor data as an object classification comprises at least one of fitting a line to at least a portion of the sensor data and determining second points of the sensor data that lie on the line as the second subset, or determining that a corner between two points of the second subset is outside a range of angles or that a distance between two points is outside a range of distances.
[0101] U. A method comprising: receiving lidar data from a lidar sensor associated with an autonomous vehicle; receiving a corridor associated with a trajectory of the autonomous vehicle; determining a first subset of the lidar data associated with a ground classification, the determining including mapping a portion of the lidar data and a first number of channels associated with the corridor to a two-dimensional representation; determining a number of channels of the lidar sensor including one or more return values associated with the corridor; determining a number of control points and a number of knots based at least in part on the number of channels; determining a curve having a number of the control points and a number of the knots based at least in part on a portion of the lidar data in the corridor; and determining the first subset based at least in part on the curve; and controlling the autonomous vehicle based at least in part on the first subset.
[0102] V. The method of clause U, wherein determining the curve further includes limiting elevation values associated with control points to an average elevation value of the lidar data plus a buffer distance.
[0103] W. The method of clause U or V, wherein determining the curve further includes determining an estimated curve having the number of control points and the number of knots based at least in part on a portion of the lidar data, determining a threshold distance based at least in part on the number of knots and a length of the estimated curve, determining that a distance between a first knot and a second knot associated with the estimated curve is less than the threshold distance, and repositioning at least one of the first knot or the second knot so that the distance therebetween meets or exceeds the threshold distance.
[0104] X. The method of any one of clauses U-W, wherein determining the curve further includes determining a residual between a lidar point and an estimated curve, determining a loss based at least in part on the residual, wherein the loss is greater for a first residual associated with a first lidar point below the estimated curve than a second residual associated with a second lidar point above the estimated curve, and modifying the estimated curve based at least in part on the loss.
[0105] Y. The method of any one of clauses U-X, wherein determining the curve further includes: determining a number of bins based at least in part on the number of channels; dividing a portion of the lidar data across the bins, the bins being associated with a second subset of the portion of the lidar data, the second subset including lidar data points; and determining weights associated with the second subset, wherein determining the weights includes determining weights associated with the lidar data points based at least in part on an altitude associated with the lidar data points.
[0106] Z. The method of any one of clauses U-Y, further comprising: determining a second subset of lidar data associated with an object classification based at least in part on the first subset; and determining a position and velocity associated with at least a portion of the object based at least in part on the second subset, wherein controlling the autonomous vehicle includes determining: controlling an autonomous vehicle to execute a trajectory or controlling an autonomous vehicle to execute a contingent trajectory based at least in part on at least one of the position or the velocity.
[0107] AA. A system comprising one or more sensors, one or more processors, and a memory storing processor-executable instructions that, when executed by the one or more processors, cause the system to perform operations including receiving sensor data from a sensor associated with an autonomous vehicle; receiving a corridor associated with a trajectory of the autonomous vehicle; determining a first subset of the sensor data associated with a ground classification, the determining being based at least in part on: mapping a portion of the sensor data and a first number of channels associated with the corridor to a lower dimensional representation; determining a number of channels of the sensor including one or more return values associated with the corridor; determining a number of control points and a number of knots based at least in part on a number of channels; determining a curve having a number of the control points and a number of the knots based at least in part on a portion of the sensor data in the corridor; and determining the first subset based at least in part on the curve; and controlling the autonomous vehicle based at least in part on the first subset.
[0108] AB. The system of clause AA, wherein determining the curve further includes limiting altitude values associated with control points to an average altitude value of the sensor data plus a buffer distance.
[0109] AC. The system of clause AA or clause AB, wherein determining the curve further includes determining an estimated curve having the number of control points and the number of knots based at least in part on a portion of the sensor data, determining a threshold distance based at least in part on the number of knots and a length of the estimated curve, determining that a distance between a first knot and a second knot associated with the estimated curve is less than the threshold distance, and modifying a position of at least one of the first knot or the second knot so that a distance therebetween meets or exceeds the threshold distance.
[0110] AD. The system of any one of clauses AA-AC, wherein determining the curve further includes determining a residual between sensor data points and an estimated curve, determining a loss based at least in part on the residual, wherein the loss is greater for a first residual associated with a first sensor data point below the estimated curve than a second residual associated with a second sensor data point above the estimated curve, and modifying the estimated curve based at least in part on the loss.
[0111] AE. The system of any one of clauses AA-AD, wherein determining the curve further includes determining a number of bins based at least in part on the number of channels; dividing a portion of the sensor data across the bins, the bins being associated with a second subset of the portion of the sensor data, the second subset including sensor data points; and determining weights associated with the second subset, wherein determining the weights includes determining weights associated with the sensor data points based at least in part on a height associated with the sensor data points.
[0112] AF. The system of any one of clauses AA-AE, wherein determining the curve is based at least in part on determining residuals between the sensor data points and an estimated curve, determining a loss based at least in part on one or more residuals and the weights, and determining the curve based at least in part on positioning the control points and knots to reduce the loss.
[0113] AG. Determining the weights includes determining a maximum altitude and a minimum altitude associated with the second subset, and determining the weights to be equal weights based at least in part on determining that a difference between the maximum altitude and the minimum altitude is less than a threshold obstacle altitude, or determining that the weights are greater for sensor data points of the second subset having altitudes less than a threshold altitude based at least in part on determining that the difference meets or exceeds the threshold obstacle altitude. The system of any one of clauses AA to AF, further comprising:
[0114] AH. A non-transitory computer readable medium storing processor executable instructions that, when executed by one or more processors, cause the one or more processors to perform operations including receiving sensor data from sensors associated with an autonomous vehicle; receiving a corridor associated with a trajectory of the autonomous vehicle; determining a first subset of the sensor data associated with a ground classification, the determining being based at least in part on: determining a number of channels of the sensors including one or more return values associated with the corridor; determining a number of control points and a number of knots based at least in part on the channels; determining a curve having a number of the control points and a number of the knots based at least in part on a portion of the sensor data in the corridor; and determining the first subset based at least in part on the curve; and controlling the autonomous vehicle based at least in part on the first subset.
[0115] AI. The non-transitory computer-readable medium of clause AH, wherein determining the curve further includes limiting altitude values associated with control points to an average altitude value of the sensor data plus a buffer distance.
[0116] AJ. The non-transitory computer readable medium of clause AH or clause AI, wherein determining the curve further includes determining an estimated curve having the number of control points and the number of knots based at least in part on a portion of the sensor data; determining a threshold distance based at least in part on the number of knots and a length of the estimated curve; determining that a distance between a first knot and a second knot associated with the estimated curve is less than the threshold distance; and altering a position of at least one of the first knot or the second knot such that a distance therebetween meets or exceeds the threshold distance.
[0117] AK. The non-transitory computer readable medium of clause AH or clause AJ, wherein determining the curve further includes determining a residual between sensor data points and an estimated curve; determining a loss based at least in part on the residual, wherein the loss is greater for a first residual associated with a first sensor data point below the estimated curve than a second residual associated with a second sensor data point above the estimated curve; and modifying the estimated curve based at least in part on the loss.
[0118] AL. The non-transitory computer readable medium of clause AH or clause AK, wherein determining the curve further includes: determining a number of bins based at least in part on the number of bins; dividing a portion of the sensor data across the bins, the bins being associated with a second subset of the portion of the sensor data, the second subset including sensor data points; and determining weights associated with the second subset, wherein determining the weights includes determining weights associated with the sensor data points based at least in part on an altitude associated with the sensor data points.
[0119] AM. The non-transitory computer-readable medium of clause AL, wherein determining the curve is based at least in part on determining residuals between the sensor data points and an estimated curve, determining a loss based at least in part on one or more residuals and the weights, and determining the curve based at least in part on positioning the control points and knots to reduce the loss. AN. The non-transitory computer readable medium of clause AM, wherein determining the weights further includes determining a maximum altitude and a minimum altitude associated with the second subset and determining the weights to be the same weight based at least in part on determining that a difference between the maximum altitude and the minimum altitude is less than a threshold obstacle altitude, or determining that the weights for sensor data points of the second subset having altitudes less than a threshold altitude are greater based at least in part on determining that the difference meets or exceeds the threshold obstacle altitude.
[0120] While the exemplary clauses described above are described with respect to one particular implementation, it should be understood that in the context of this specification, the contents of the exemplary clauses may also be implemented via a method, device, system, computer-readable medium, and / or another implementation. Furthermore, any of the exemplary clauses A-AN may be implemented alone or in combination with one or more other exemplary clauses A-AN.
[0121] (Conclusion) Although the subject matter has been described in language specific to structural features and / or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described. Rather, the specific features and acts are disclosed as example forms of implementing the claims.
[0122] The components described herein represent instructions that may be stored on any type of computer-readable medium and implemented in software and / or hardware. All of the methods and processes described above may be embodied and fully automated via software code components and / or computer-executable instructions executed by one or more computers or processors, hardware, or some combination thereof. Alternatively, some or all of the methods may be embodied in specialized computer hardware.
[0123] At least some of the processes described herein are illustrated as logic flow diagrams, with each operation representing a sequence of operations that may be implemented in hardware, software, or a combination thereof. In the context of software, the operations represent computer-executable instructions stored on one or more non-transitory computer-readable storage media that, when executed by one or more processors, cause a computer or autonomous vehicle to perform the described operations. Generally, computer-executable instructions include routines, programs, objects, components, data structures, etc. that perform particular functions or implement particular abstract data types. The order in which the operations are described is not intended to be construed as a limitation, and any number of the described operations may be combined in any order and / or in parallel to implement a process.
[0124] Unless expressly stated to the contrary, conditional terms such as "can," "may," "can," or "may" are understood in the context to indicate, among other things, that an example includes certain features, elements, and / or steps that other examples do not include. Thus, such conditional terms are not intended to imply that a feature, element, and / or step is required in any way in one or more examples in general, or that one or more examples necessarily include logic for determining whether a feature, element, and / or step is included in or should be performed in any particular example, with or without user input or prompting.
[0125] Conjunctions such as the phrase "at least one of X, Y, or Z," unless specifically stated otherwise, should be understood to mean that the item, term, etc. can be either X, Y, or Z, or any combination thereof, including collections of each of the elements. "A" means singular as well as plural, unless expressly described as singular.
[0126] Any routine illustrations, elements or blocks in the flow diagrams described herein and / or illustrated in the accompanying drawings should be understood as potentially representing modules, segments or portions of code that include one or more computer-executable instructions for implementing a particular logical function or element in the routine. Alternative implementations are included within the scope of the examples described herein, in which elements or functions may be omitted or performed out of order from that shown or described, including substantially simultaneously with additional operations or in reverse order, depending on the functionality involved, as will be understood by those skilled in the art.
[0127] Numerous variations and modifications can be made to the above-described examples, and those elements should be understood to be within the scope of other acceptable examples. All such modifications and variations are intended to be included herein within the scope of this disclosure and protected by the following claims.
Claims
1. One or more sensors; one or more processors; a memory for storing processor-executable instructions; A system comprising: The processor-executable instructions, when executed by the one or more processors, cause the system to: Receiving sensor data from a sensor associated with the autonomous vehicle; receiving a corridor associated with a trajectory of the autonomous vehicle; determining a first subset of the sensor data associated with a ground classification, the determining including: mapping a portion of the sensor data associated with the corridor and a first number of channels into a lower dimensional representation; determining a number of channels of the sensor including one or more return values associated with the corridor; determining a number of control points and a number of knots based at least in part on the number of channels; determining a curve having a number of said control points and a number of said knots based at least in part on a portion of said sensor data within said corridor; determining the first subset based at least in part on the curve; Based at least in part on controlling the autonomous vehicle based at least in part on the first subset; Executing an operation including The system, wherein determining the curve further includes limiting elevation values associated with control points to an average elevation value of the sensor data plus a buffer distance.
2. Determining the curve comprises: determining an estimated curve having the number of control points and the number of knots based at least in part on a portion of the sensor data; determining a threshold distance based at least in part on the number of knots and a length of the estimated curve; determining that a distance between a first knot and a second knot associated with the estimated curve is less than a threshold distance; modifying a position of at least one of the first knot or the second knot such that a distance therebetween meets or exceeds the threshold distance; The system of claim 1 further comprising:
3. Determining the curve comprises: determining a residual between the sensor data points and the estimated curve; determining a loss as a difference between the sensor data points and the estimated curve based at least in part on the residuals, the loss being greater for a first residual associated with a first sensor data point below the estimated curve relative to a highly associated coordinate than a second residual associated with a second sensor data point above the estimated curve; modifying the estimated curve based at least in part on the losses; and The system of claim 1 or claim 2, further comprising:
4. Determining the curve comprises: determining a number of bins based at least in part on the number of channels; partitioning the portion of the sensor data across the bins, the bins being associated with a second subset of the portion of the sensor data, the second subset including sensor data points; determining weights associated with the second subset, the determining weights including determining weights associated with the sensor data points based at least in part on altitudes associated with the sensor data points; The system of claim 1 , further comprising:
5. Determining the curve comprises: determining a residual between the sensor data points and the estimated curve; determining a loss as a difference between the sensor data points and the estimated curve based at least in part on one or more residuals and weights; determining the curve based at least in part on positioning the control points and knots to reduce the losses; The system of claim 1 , wherein the system is based at least in part on
6. Determining the weights comprises: determining a maximum altitude and a minimum altitude associated with the second subset; determining that the weights are equal weights based at least in part on determining that a difference between the maximum altitude and the minimum altitude is less than a threshold obstacle altitude; or determining that the weighting of the second subset of sensor data points having altitudes less than a threshold altitude is to be greater based at least in part on determining that the difference meets or exceeds the threshold obstacle altitude; and The system of claim 4 further comprising:
7. The operation includes: determining a second subset of lidar data associated with an object classification based at least in part on the first subset; and determining a position and velocity associated with at least a portion of the object based at least in part on the second subset; and Further comprising: Controlling the autonomous vehicle includes controlling the autonomous vehicle based at least in part on at least one of the position or the velocity. controlling the autonomous vehicle to execute the trajectory; or Controlling the autonomous vehicle to execute a contingent trajectory. determining whether The system of claim 1 .
8. The system of claim 1, wherein the ground classification is associated with sensor data that smoothly follows contours of topology / LIDAR data.
9. A non-transitory computer-readable medium storing processor-executable instructions, comprising: The processor-executable instructions, when executed by one or more processors, cause the one or more processors to: Receiving sensor data from a sensor associated with the autonomous vehicle; receiving a corridor associated with a trajectory of the autonomous vehicle; determining a first subset of the sensor data associated with a ground classification, the determining including: mapping a portion of the sensor data associated with the corridor and a first number of channels into a lower dimensional representation; determining a second number of channels of the sensor including one or more return values associated with the corridor; determining a number of control points and a number of knots based at least in part on the second number of channels; determining a curve having a number of the control points and a number of the knots in the lower dimensional representation based at least in part on a portion of the sensor data within the corridor; determining the first subset based at least in part on the curve; Based at least in part on controlling the autonomous vehicle based at least in part on the first subset; A non-transitory computer-readable medium for causing a computer to perform operations including:
10. 10. The non-transitory computer-readable medium of claim 9, wherein determining the curve further comprises limiting elevation values associated with control points to an average elevation value of the sensor data plus a buffer distance.
11. Determining the curve comprises: determining an estimated curve having the number of control points and the number of knots based at least in part on a portion of the sensor data; determining a threshold distance based at least in part on the number of knots and a length of the estimated curve; determining that a distance between a first knot and a second knot associated with the estimated curve is less than a threshold distance; modifying a position of at least one of the first knot or the second knot such that a distance therebetween meets or exceeds the threshold distance; 11. The non-transitory computer-readable medium of claim 9 or claim 10, further comprising:
12. Determining the curve comprises: determining a residual between the sensor data points and the estimated curve; determining a loss as a difference between the sensor data points and the estimated curve based at least in part on the residuals, the loss being greater for a first residual associated with a first sensor data point below the estimated curve relative to a highly associated coordinate than a second residual associated with a second sensor data point above the estimated curve; modifying the estimated curve based at least in part on the losses; and 12. The non-transitory computer readable medium of claim 9, further comprising:
13. Determining the curve comprises: determining a number of bins based at least in part on the second number of channels; partitioning the portion of the sensor data across the bins, the bins being associated with a second subset of the portion of the sensor data, the second subset including sensor data points; determining weights associated with the second subset, the determining weights including determining weights associated with the sensor data points based at least in part on altitudes associated with the sensor data points; 13. The non-transitory computer readable medium of claim 9, further comprising:
14. Determining the curve comprises: determining a residual between the sensor data points and the estimated curve; determining a loss as a difference between the sensor data points and the estimated curve based at least in part on one or more residuals and weights; determining the curve based at least in part on locating the control points and knots to reduce the losses; and 14. The non-transitory computer readable medium of claim 9, based at least in part on 15. The method of claim 14, further comprising: determining a maximum altitude and a minimum altitude associated with the second subset; determining that the weights are equal weights based at least in part on determining that a difference between the maximum altitude and the minimum altitude is less than a threshold obstacle altitude; or determining that the weighting of the second subset of sensor data points having altitudes less than a threshold altitude is to be greater based at least in part on determining that the difference meets or exceeds the threshold obstacle altitude; and 14. The non-transitory computer-readable medium of claim 13, further comprising:
Citation Information
Patent Citations
Travel support system and travel route curve creating method
JP2009294446A
Object detection device
JP2014074665A
Real time prediction of object behavior
JP2020083308A
System and method for navigating an autonomous vehicle using laser detection and ranging
US20100114416A1
Automated Bump and / or Depression Detection in a Roadway
US20200207356A1