Collision avoidance using object contours

JP2024510058A5Active Publication Date: 2024-12-10ZOOX INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2023512268
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2020-12-30
Filing Date
2021-12-07
Publication Date
2024-12-10
Estimated Expiration
2041-12-07

AI Technical Summary

Technical Problem

Vehicles face challenges in accurately representing the shape of objects using bounding boxes, which can impair safe navigation due to inaccuracies in size and shape estimation, leading to potential collisions.

Method used

The use of boundary contours, such as convex hulls and polygons, to accurately represent the perimeter of objects, allowing for more precise collision detection and avoidance by determining a close-fitting perimeter of objects using lidar data and sensor information.

Benefits of technology

Enhances the accuracy of collision detection and avoidance by providing a more precise representation of object shapes, reducing computing resources and time required for collision analysis, and enabling safer vehicle navigation.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

Techniques for collision avoidance using object contours are described. A trajectory associated with a vehicle may be received. Sensor data may be received from sensors associated with the vehicle. A boundary contour may be determined and associated with the object represented by the sensor data. Based on the trajectory, a simulated position of the vehicle may be determined. Further, a predicted position of the boundary contour may be determined. Based on the simulated vehicle position and the predicted position of the boundary contour, a distance between the vehicle and the object may be determined. An action may be performed based on the distance between the vehicle and the object.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] The present invention relates to collision avoidance using object contours. [Background technology]

[0002] This patent application claims priority to U.S. Utility Patent Application No. 17 / 138,710, filed December 30, 2020, and U.S. Utility Patent Application No. 17 / 138,751, filed December 30, 2020. Application Nos. 17 / 138,710 and 17 / 138,751 are incorporated by reference herein in their entireties.

[0003] Vehicles often encounter objects as they navigate an environment. These objects may include other vehicles, pedestrians, animals, etc. When attempting to safely pass a particular object, the vehicle may determine the object's location, size, and shape. In some situations, the vehicle may determine the object's size and shape based on a bounding box. However, the bounding box may fail to provide an accurate representation of the object. This impairment may compromise the safe navigation of the vehicle past the object. [Brief description of the drawings]

[0004] 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 drawing in which that reference number first appears. Use of the same reference number in different drawings indicates similar or identical components or features. [Figure 1] FIG. 1 illustrates an exemplary implementation for determining a boundary contour associated with an object and using the boundary contour to check a vehicle's trajectory for potential collision with the object, in accordance with an example of the present disclosure. [Diagram 2] 1 is a flowchart illustrating an example process for determining a boundary contour associated with an object based on sensor data associated with the object, according to an example of the present disclosure. [Diagram 3] 1 is a flowchart illustrating an example process for using bounding boxes and bounding contours to identify potential collisions with objects, according to an example of the present disclosure. [Figure 4A] FIG. 1 illustrates an example lidar point cloud associated with an object and a bounding shape defining the lidar point cloud, in accordance with an example of the present disclosure. [Figure 4B] FIG. 1 illustrates an example lidar point cloud associated with an object and a bounding shape defining the lidar point cloud, in accordance with an example of the present disclosure. [Diagram 5] 1 is a flowchart illustrating an example process for generating a convex hull associated with a lidar point cloud and creating a boundary contour based on the convex hull, in accordance with an example of the present disclosure. [Figure 6] FIG. 13 illustrates an exemplary process for replacing a bounding edge of a convex hull with two shorter segments, in accordance with an example of the present disclosure. [Figure 7] FIG. 13 illustrates another exemplary process for replacing a bounding edge of a convex hull with two shorter segments, in accordance with an example of the present disclosure. [Figure 8A] FIG. 1 illustrates an example convex hull with lidar points on a boundary edge and an example stray point located away from the majority of the lidar points, in accordance with an example of the present disclosure. [Figure 8B] FIG. 1 illustrates an example convex hull with lidar points on a boundary edge and an example stray point located away from the majority of the lidar points, in accordance with an example of the present disclosure. [Figure 9] 5 is a flowchart illustrating an example process for determining a distance between a vehicle and an object based on a boundary contour of the object, according to an example of the disclosure. [Figure 10A] 4A-4C are diagrams illustrating an example vehicle trajectory and boundary contour of an object when determining a distance between the vehicle and the boundary contour, in accordance with an example of the present disclosure. [Figure 10B] 4A-4C are diagrams illustrating an example vehicle trajectory and boundary contour of an object when determining a distance between the vehicle and the boundary contour, in accordance with an example of the present disclosure. [Figure 11A] FIG. 2 illustrates an example bounding box, bounding contour, and axis-aligned bounding box, in accordance with an example of the present disclosure. [Figure 11B] FIG. 2 illustrates an example bounding box, bounding contour, and axis-aligned bounding box, in accordance with an example of the present disclosure. [Figure 11C] FIG. 2 illustrates an example bounding box, bounding contour, and axis-aligned bounding box, in accordance with an example of the present disclosure. [Figure 12] FIG. 1 illustrates an example system for implementing the techniques described herein. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0005] The present disclosure is directed to techniques for determining boundary contours associated with an object and using those boundary contours for actions such as collision avoidance. In some examples, a lidar sensor may receive lidar data associated with the object. The lidar data may be projected onto a two-dimensional plane, and a convex hull may be identified based on the projected lidar data. Boundary edges associated with the convex hull may be removed to determine a boundary contour that represents a snug-fitting perimeter for the object. The boundary contour may be used, for example, in a vehicle planning component to determine whether the vehicle is likely to collide with the object represented by the boundary contour.

[0006] In some examples, when replacing the longest bounding edge of the convex hull, the longest bounding edge can have a first endpoint and a second endpoint. An interior point within the convex hull can be identified. In some examples, the longest bounding edge can be replaced with 1) a first segment based on the first endpoint and the interior point, and 2) a second segment based on the interior point and the second endpoint. An updated convex hull can be determined based on the first segment and the second segment. The process of successively replacing the longest bounding edge can generate a boundary contour that closely represents the perimeter of the associated object.

[0007] In some examples, the sensor data may include lidar data and may include a variety of lidar points. In connection with projecting the lidar data onto a two-dimensional representation, some of all of the lidar points may be relocated to a closest location on a predefined grid. If any two or more lidar points share the same grid location, some or all of the overlapping lidar points may be removed such that one lidar point remains for each grid location. In some examples, the predefined grid locations may have a spacing of one centimeter, although other dimensions are contemplated herein.

[0008] In some examples, the system may determine whether the vehicle is likely to collide with the object based on a boundary contour associated with the object. If a potential collision is detected, the system may determine a vehicle action to avoid a collision with the object and initiate the action to attempt to avoid the collision. In other examples, the action may be determined based on a boundary contour associated with the object. For example, the action may include at least one of controlling the vehicle, determining a static object, determining a dynamic object, or updating map data.

[0009] In some examples, a bounding box may be identified that is associated with an object identified in the lidar point cloud data. The size of the bounding box is expanded to include a greater amount of lidar point cloud data. The lidar points within the expanded bounding box may be captured and provide increased lidar data associated with the object. A bounding shape associated with all of the lidar points within the expanded bounding box may be created to better represent the contour of the object.

[0010] In some examples, the system may receive a trajectory associated with the vehicle and receive sensor data from a sensor associated with the vehicle. A boundary contour may be determined, the boundary contour associated with an object represented in the sensor data. Based on the trajectory associated with the vehicle, the system may determine a simulated position of the vehicle. Further, a predicted position of the boundary contour may be determined. Based on the simulated position of the vehicle and the predicted position of the boundary contour, a distance between the vehicle and the object may be determined. An action may be performed based on the distance between the vehicle and the object.

[0011] In some examples, the boundary contour described herein may be a polygon that closely identifies the perimeter of the object. The action taken based on the distance between the vehicle and the object may include validating the trajectory or invalidating the trajectory. In some examples, the distance between the vehicle and the object may be determined using ray casting. For example, the ray casting may extend (e.g., perpendicularly) from the side of the vehicle (or from a point associated with the trajectory) toward the boundary contour. A collision may be detected based on a number of boundary contour edges through which a ray passes. For example, if the ray passes through an even numbered boundary contour edge, no collision has occurred. However, if the ray passes through an odd numbered boundary contour edge, a collision occurs between the vehicle and the object.

[0012] In some examples, the axis-aligned bounding box can be used to quickly identify a potential collision, such as between a vehicle and an object. For example, the axis-aligned bounding box can be associated with a boundary contour. A second distance between the vehicle and the object can be determined based on the axis-aligned bounding box. In some examples, the axis-aligned bounding box is aligned along a longitudinal axis of the vehicle.

[0013] The techniques described herein can improve the functionality of a vehicle's computing device in many ways. The described techniques provide an improved representation of an object's shape. As described herein, the bounding contour provides a polygon that closely follows the perimeter of the object. The bounding contour is not limited to four sides as is the bounding box. Thus, the bounding contour can be adjusted to all shapes of the object to provide an accurate representation of the object. The tight-fitting bounding contour supports more accurate determination of potential collisions, distance between the vehicle and the object, and other actions associated with the object.

[0014] The techniques described herein may also provide improved functionality of a vehicle's computing device by determining boundary contours faster and with fewer computing resources. Compared to existing techniques such as Delaunay triangulation, the described systems and methods may simplify the creation of boundary contours without the need to create multiple triangles that cover every point in a set of points. The Delaunay triangulation process, which requires creating multiple triangles within a set of points, can be time-consuming and require significant computing resources. The systems and methods described herein may simplify the process by eliminating the need to calculate triangles at a set of points.

[0015] The techniques described herein can be implemented in many ways. Exemplary implementations are provided below with reference to the following drawings. Although described in the context of an autonomous vehicle, the methods, apparatus, and systems described herein can be applied to a variety of systems and are not limited to autonomous vehicles. In another example, the techniques can be utilized in any type of vehicle, robotic system, or any system that uses sensor data. Also, the techniques described herein can be used with real data (e.g., captured using sensors), simulated data (e.g., generated by a simulator), or any combination of the two.

[0016] 1 illustrates a pictorial flow diagram of an example process 100 associated with environment 122 and environment 132 for determining a boundary contour associated with an object and using the boundary contour to check a vehicle's trajectory for a potential collision with the object, according to an example of the present disclosure. In some examples, determining the boundary contour associated with the object may be performed by a vehicle computing device in the vehicle, as described herein. Additionally, in some examples, the vehicle computing device may be used to check the vehicle's trajectory for a potential collision with the object based on the boundary contour.

[0017] 1, process 100 includes an operation 120 of determining a boundary contour associated with an object proximate to the vehicle. Process 100 further includes an operation 130 of checking the trajectory of the vehicle for a potential collision with the object using the boundary contour associated with the object.

[0018] As shown in the environment 122, the exemplary image 102 illustrates a scene in which an object 104 may operate. In the exemplary image 102, the object 104 is illustrated as a vehicle. In other examples, the object 104 may be any type of static or dynamic object. For example, static objects may include trees, buildings, signs, traffic signals, etc. Exemplary dynamic objects may include vehicles, pedestrians, animals, etc. In some examples, the object 104 may be moving at certain times (e.g., a moving vehicle) and stationary at other times (e.g., a parked vehicle or a vehicle stopped at a traffic light).

[0019] 1 also illustrates an example of a boundary contour 106 associated with an object 104 in an image 102. The boundary contour 106 may be created, for example, using the systems and methods described herein. The boundary contour 106 may be associated with an outer perimeter of the object 104. As described herein, the boundary contour 106 may be used to avoid collisions with the object 104 and to maintain a safe distance from the object. In some examples, the boundary contour 106 may be used in combination with a bounding box (e.g., a rectangular box associated with the object 104), both of which may provide information associated with the object 104.

[0020] In some examples, the bounding contour 106 may provide a better representation of the exact shape of the object than a bounding box. In a particular example, the bounding box may be a rectangle with four sides. This basic rectangular shape may not accurately represent the object because the bounding box may be expanded to include all parts of the object. For example, in the context of a vehicle with a large side mirror, the bounding box expanded to fit the mirror may be significantly larger than the actual vehicle. Similarly, if the bounding box is sized to fit the body of a vehicle with a large side mirror, the bounding box may not encompass the side mirror. In contrast, the bounding contour 106 may be a polygon created to closely follow the outer edge of the object, regardless of the object's shape or irregularities. This closely fitted polygon may provide a more accurate representation of the object's shape than a rectangular bounding box. In one or more examples, the polygon representing the bounding contour 106 may have five or more outer edges, also referred to herein as "bounding edges."

[0021] In some examples, the boundary contour 106 may be used when checking the vehicle's trajectory for a potential collision with the object 104. As shown in the environment 132, the trajectory 110 may define a planned driving path of the vehicle 112 through the environment 132. In FIG. 1, a boundary contour 114 associated with the object is displayed for the trajectory 110 and the vehicle 112. The boundary contour 114 may be associated with any object type, such as another vehicle, a pedestrian, an animal, a building, a street sign, a tree, etc. As described herein, the described systems and methods may use ray casting, as illustrated by the ray 116, to determine the distance between the vehicle 112 and the boundary contour 114. Based on the distance between the vehicle 112 and the boundary contour 114, the vehicle 112 may take one or more actions to avoid a collision with the object associated with the boundary contour 114. For example, the vehicle 112 may take actions such as steering, braking, honking the horn, alerting vehicle occupants, etc., depending on the distance from the object and the potential risk associated with the type of object.

[0022] As described herein, some examples may determine boundary contours associated with objects, check the vehicle's trajectory for potential collisions with objects, and perform other activities using a vehicle computing device within the vehicle. Additional details regarding the vehicle are described herein.

[0023] 2 is a flowchart illustrating an example process 200 for determining a boundary contour associated with an object based on sensor data associated with the object, according to an example of this disclosure. The operations described herein with respect to process 200 may be performed by one or more vehicle computing devices, as described herein.

[0024] As an example, process 200 is illustrated as a logical flow graph, each operation of which represents a sequence of operations that can be implemented in hardware, software, or a combination thereof. In the case of software, the operations can represent computer-executable instructions stored on one or more computer-readable storage media that, when executed by one or more processors, perform the recited operations. In general, computer-executable instructions can 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 can be combined (or omitted) in any order and / or in parallel to implement process 200. In some examples, the various branches represent alternative implementations that can be used individually or in combination with other operations described herein.

[0025] At operation 202, the process may include receiving image data including the object. In some examples, the image data may be captured by an image sensor (e.g., a camera) associated with the vehicle. At operation 204, the process may include determining a bounding box associated with the object based on the image data. In some examples, a three-dimensional bounding box may be determined based on the image data. Exemplary techniques for determining a three-dimensional bounding box are described in U.S. patent application Ser. No. 15 / 814,870, entitled "Pose Determination from Contact Point," filed Nov. 16, 2017, and U.S. patent application Ser. No. 16 / 408,414, entitled "Image-Based Depth Data and Bounding Boxes," filed May 9, 2019, both of which are incorporated by reference herein in their entirety for all purposes. However, the bounding box may be determined based on other sensor data, such as lidar data, time-of-flight data, etc. In some examples, process 200 may omit operations 202 and 204.

[0026] In some examples, the bounding box may be determined based on lidar data, which may be captured by a lidar sensor, as described herein. In this example, operations 202 and 204 may be replaced with an operation of determining a bounding box based on lidar data associated with the object.

[0027] At operation 206, the process may receive lidar data associated with the object. The lidar data may be received from a lidar sensor associated with a vehicle, a structure, or any other item. In some examples, the lidar data includes a point cloud including a plurality of lidar points identified by the lidar sensor. At operation 208, the process may determine a point cloud associated with the object. The point cloud associated with the object may represent a sub-region of the overall point cloud that is specifically associated with the object (e.g., a region of interest). In some examples, the subset of lidar points may be determined based on an instance segmentation that identifies the object.

[0028] In operation 210, the point cloud associated with the object may be projected onto a two-dimensional plane, such as a substantially horizontal plane. In operation 212, the process may determine a boundary contour associated with the object based on the point cloud projected onto the two-dimensional plane. In some examples, the boundary contour may be provided to a vehicle planning component (e.g., planning component 1232 shown in FIG. 12) for use in comparing the boundary contour to a planned vehicle trajectory, as described herein.

[0029] In one or more examples, the boundary contour may be extended to a three-dimensional representation. For example, a two-dimensional boundary contour may be defined in an xy plane. The two-dimensional boundary contour may be extended to a three-dimensional representation by extending the boundary contour along an x-axis perpendicular to the xy plane. In some examples, the two-dimensional boundary contour may be extended to a three-dimensional representation using a convolutional neural network (CNN).

[0030] In operation 214, the process may determine whether the object is a dynamic object, such as a moving vehicle, a pedestrian, an animal, etc. If the object is not a dynamic object, the process may proceed to operation 218 to select another object. In situations where the object is static (e.g., not dynamic), the boundary contour may not change at regular intervals, and therefore the boundary contour determined in operation 212 may not require updating.

[0031] If the object is dynamic, the process may continue from operation 214 to operation 216, where the process may receive updated lidar data associated with the object. In some examples, if the object is dynamic, its boundary contour may change as the object moves. In this situation, it may be advantageous to update the lidar data to determine an updated boundary contour. For example, the shape of an articulated bus may change over time as the articulated bus goes around corners in the environment. In some examples, the shape of the convex hull may be predicted based on a predicted trajectory associated with the object. After receiving updated lidar data at operation 216 (or a prediction for the object), the process may return to operation 206 to determine updated lidar data associated with the object.

[0032] 3 is a flowchart illustrating an example process 300 for using bounding boxes and bounding contours to identify potential collisions with objects, according to an example of this disclosure. The operations described herein with respect to process 300 may be performed by one or more vehicle computing devices, as described herein.

[0033] As an example, process 300 is illustrated as a logical flow graph, each operation of which represents a sequence of operations that can be implemented in hardware, software, or a combination thereof. In the case of software, the operations can represent computer-executable instructions stored on one or more computer-readable storage media that, when executed by one or more processors, perform the recited operations. In general, computer-executable instructions can include routines, programs, objects, components, data structures, and the like 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 can be combined (or omitted) in any order and / or in parallel to implement process 300. In some examples, the various branches represent alternative implementations that can be used individually or in combination with other operations described herein.

[0034] In operation 302, the process may include determining a bounding box associated with the object. In some examples, the bounding box may be determined based on an image of the object, lidar data associated with the object, etc. In some examples, the bounding box determined in operation 302 may be an axis-aligned bounding box based on the boundary contour determined in operation 304. Additional examples of axis-aligned bounding boxes are described in this disclosure as well as in FIGS. 11A-11C.

[0035] In operation 304, the process may determine a boundary contour associated with the object. For example, the systems and methods described herein may be used to determine a boundary contour associated with the object. Additional examples of determining a boundary contour are described in Figures 6, 7, 8A, and 8B, and throughout this disclosure.

[0036] At operation 306, the process may determine whether there is a possibility of a collision with the object based on the bounding box. In some examples, operation 306 may determine a possibility of a collision between the object performing process 300 and the vehicle. If operation 306 determines that there is no possibility of a collision (or the possibility is below a threshold) based on the bounding box, the process ends at operation 314, which indicates a "no collision possible" condition. In some examples, the "no collision possible" condition may be communicated to one or more systems, such as the vehicle, other vehicles, other systems, objects, etc.

[0037] If operation 306 determines that there is a possibility of a collision based on the bounding box (e.g., the possibility is above a threshold), the process proceeds to operation 308. In operation 308, the process may determine whether there is a possibility of a collision with the object based on the boundary contour. In some examples, operation 308 may determine a possibility of a collision between the object executing process 300 and the vehicle. If operation 308 determines that there is no possibility of a collision based on the boundary contour (or the possibility is below a threshold), the process ends at operation 314, which indicates a "no possibility of collision" condition.

[0038] If operation 308 determines that there is a likelihood of a collision based on the boundary contour (eg, the likelihood exceeds a threshold), the process proceeds to operation 310 .

[0039] In some examples, the bounding boxes described in operations 302 and 306 may have a box / cube shape or other relatively simple geometric shape. If a potential collision is detected (in operation 306), a more accurate representation of the object (e.g., a boundary contour) may be used to verify or disprove the potential collision detected in operation 306. This approach may reduce the use of computing resources by first checking for a collision with the bounding box, which is a simple calculation. More complex calculations associated with the boundary contour may not be performed unless a collision with the bounding box is detected or the bounding box is predicted to be within a threshold distance of the trajectory (and / or the vehicle's simulated position along the trajectory).

[0040] In operation 310, the process may determine a vehicle action to avoid a collision with the object. For example, the vehicle action may include steering, braking, sounding the horn, alerting vehicle occupants, etc. As described herein, the vehicle action determined in operation 310 may vary depending on the distance from the object and the potential risk associated with the type of object. In operation 312, the vehicle action determined in operation 310 is initiated to avoid a collision with the object.

[0041] 4A and 4B are diagrams illustrating an example lidar point cloud 402 associated with an object and a boundary shape 410 defining the lidar point cloud, according to examples of the disclosure. In some examples, the lidar point cloud 402 shown in FIG. 4A may be captured by a lidar sensor associated with a vehicle. As described herein, the lidar point cloud 402 may be used to create a boundary contour associated with the object. FIG. 4A illustrates a bounding box 404 that may be associated with some or all of the points in the lidar point cloud 402. In some examples, the bounding box 404 may represent the general shape of the vehicle, but may not include portions of the vehicle that extend beyond the general shape (e.g., mirrors and other items that extend outward from the body of the vehicle).

[0042] FIG. 4B illustrates a boundary shape 410 that may be generated based on the lidar point cloud 402 shown in FIG. 4A. As shown in FIG. 4B, a portion of the boundary shape 410 extends outside of the bounding box 404 shown in FIG. 4A. Thus, the boundary shape 410 associated with the lidar point cloud may be a better representation of the actual shape of the vehicle than the bounding box 404. When determining whether a vehicle will collide with an object, the exact shape of the object may be important to identify the likelihood of a collision. The systems and methods described herein describe the creation of boundary contours that define the perimeter of an object. In some examples, each boundary contour may be a polygon that closely identifies the perimeter of the object.

[0043] In some examples, the size of the bounding box 404 may be expanded to improve the likelihood of capturing all lidar points associated with an object. As shown in FIG. 4A , a portion of the lidar point cloud 402 extends outside of the bounding box 404. By expanding the size of the bounding box 404, some or all of the lidar points located outside of the bounding box 404 may be captured in the bounding shape 410. Thus, rather than limiting the object information to the lidar points contained within the bounding box 404, the bounding shape 410 associated with the object may provide a better representation of the object by including the lidar points located outside of the bounding box 404.

[0044] In some examples, the bounding box may be extended by a threshold amount based on the size of the object, the object type, etc. In some examples, the bounding box 404 may be extended in size by 0.4 meters. In some implementations, this extension allows the bounding shape 410 to include portions of the object that protrude beyond the bounding box 404, such as vehicle side mirrors, pedestrian arms, etc. In other examples, the bounding box 404 may be extended in size by any amount based on the type of object encountered, safety requirements, desired safety margins, etc. In one or more examples, the bounding box 404 is extended on all four sides to capture lidar points that lie outside of any side of the bounding box 404.

[0045] 5 is a flowchart illustrating an example process 500 for generating a convex hull associated with a lidar point cloud and creating a boundary contour based on the convex hull, according to an example of this disclosure. The operations described herein with respect to process 500 may be performed by one or more vehicle computing devices, as described herein.

[0046] As an example, process 500 is illustrated as a logical flow graph, each operation of which represents a sequence of operations that can be implemented in hardware, software, or a combination thereof. In the case of software, the operations can represent computer-executable instructions stored on one or more computer-readable storage media that, when executed by one or more processors, perform the recited operations. In general, computer-executable instructions can 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 can be combined (or omitted) in any order and / or in parallel to implement process 500. In some examples, the various branches represent alternative implementations that can be used individually or in combination with other operations described herein.

[0047] At operation 502, the process may include receiving lidar data associated with an environment proximate to the vehicle. In some examples, the lidar data may include one or more objects that may be important to a vehicle navigation or collision avoidance system.

[0048] In operation 504, the process may determine a point cloud associated with the object identified in the lidar data. For example, the object may be within or near the planned path of the vehicle. In some examples, the point cloud associated with the object may be part of the lidar data received in operation 502.

[0049] At operation 506, the process may project the point cloud associated with the object onto a two-dimensional plane. At operation 508, the process may generate a convex hull associated with the point cloud. In some examples, the convex hull may include multiple bounding edges associated with the point cloud. In one or more examples, the convex hull may be generated using known algorithms for computing a convex hull for a finite set of points. In some examples, the convex hull may have five or more bounding edges.

[0050] In some examples, points associated with a point cloud or other grouping of points may be relocated to the nearest location on a predefined grid. For example, the predefined grid may have a uniform spacing, such as one centimeter between grid points. Each point of this point cloud may be relocated to the nearest grid point. In some examples, two or more points may be located at the same grid point. In this situation, all duplicate points of the same grid point are removed, thereby leaving one point at the grid point.

[0051] In some examples, aligning points in a point cloud to a predefined grid may simplify the creation of a boundary contour associated with the point cloud because fewer points may be represented in the grid. This simplification may reduce the time and computing resources required to generate a boundary contour from a point cloud.

[0052] In operation 510, the process may determine the longest bounding edge associated with the convex hull. The longest bounding edge may have a first endpoint and a second endpoint.

[0053] In operation 512, the process may replace the longest bounding edge with two shorter bounding edges. In some examples, the first shorter bounding edge may include a first endpoint and the second shorter bounding edge may include a second endpoint. In some implementations, replacing the longest bounding edge may include determining an interior point (e.g., an interior rider point) inside the convex hull. The first shorter bounding edge may be based on the first endpoint and the interior point. The second shorter bounding edge may be based on the interior point and the second endpoint. In some examples, operation 512 may be based at least in part on an angle formed by the two shorter bounding edges. Additional examples of operation 512 are provided in connection with FIGS. 6 and 7, as well as throughout this disclosure.

[0054] In operation 514, the process may determine whether the next longest bounding edge is too short to remove. In some examples, the next longest bounding edge may be too short to remove if the length of the next longest bounding edge is less than half the length of the first bounding edge replaced in operation 512. In alternative examples, other parameters may be used to determine when the next longest bounding edge is too short to remove. For example, the other parameters may include the number of bounding edges of the convex hull that meet or exceed a first threshold, the length of the longest remaining bounding edge that is less than a second threshold, or the number of interior points associated with the updated convex hull being less than a third threshold.

[0055] If the next longest bounding edge is not too short to remove, the process returns to operation 512 to replace the next longest bounding edge.

[0056] If the next longest boundary edge is too short to remove, the process proceeds to operation 516, where the process may create a boundary contour associated with the object. In some examples, the boundary contour is based on a boundary edge of a convex hull associated with the point cloud. In some examples, the boundary contour associated with the object may be used to determine the likelihood of a collision between the vehicle and the object.

[0057] In some examples, each point is a vector of one or more triangles. After creating the triangles that encompass all the points in the set of points, various edges may be removed to define an outer boundary associated with the set of points. However, this technique may be time consuming as it requires the generation and processing of triangles that encompass all the points in the set of points in an attempt to define the outer boundary. The systems and methods described herein may provide a faster technique that uses fewer computing resources to generate boundary contours.

[0058] FIG. 6 illustrates an example process 600 for replacing a bounding edge of a convex hull with two shorter segments, according to an example of the present disclosure. As shown in FIG. 6, a polygon 620 may include any number of bounding edges and any number of points (e.g., rider points) contained within the bounding edges. In the example of FIG. 6, the polygon 620 includes multiple points. Some of these points are labeled as 602-1, 602-2, 602-3, and 602-4. In some examples, the point 602 may be located inside the polygon (e.g., points 602-1, 602-3, and 602-4) or on the boundary of the polygon (e.g., point 602-2). An example bounding edge 604 of the polygon 620 is shown in FIG. 6.

[0059] In some embodiments, all points associated with a polygon can be on the boundary of the polygon or inside the polygon. As described herein, one or more boundary edges of the polygon can be replaced to create a tighter boundary contour. In one or more examples, the resulting polygon (after replacing the boundary edges) can maintain a simple polygon shape. For example, the resulting polygon may not have any loops, holes, or self-intersecting edges. The examples described herein illustrate the removal of boundary edges in a manner that maintains a simple polygon shape.

[0060] 6, polygon 630 is similar to polygon 320 described above. Based on polygon 630, the systems and methods described herein select a longest bounding edge to replace the two shorter bounding edges. In one example, the longest bounding edge may be bounding edge 606 having a first endpoint 602-5 and a second endpoint 602-6. Endpoints 602-5 and 602-6 are points associated with the boundary of polygon 630.

[0061] In some examples, multiple pairs of shorter bounding edges may be identified as possible candidates for replacing the longest bounding edge 606. As shown in polygon 630, the first pair of shorter bounding edges are shown as bounding edges 608 and 610. For example, the first short bounding edge 608 extends from point 602-5 (one of the endpoints of the longest bounding edge 606) to point 602-3 (shown in polygon 620). In this example, point 602-3 is an internal point inside the polygon. As shown in polygon 630, the second short bounding edge 610 extends from point 602-6 (another endpoint of the longest bounding edge 606) to point 602-3 (shown in polygon 620). Thus, the first pair of shorter bounding edges 608, 610 replaces the longest bounding edge 606 by connecting with point 602-3.

[0062] In the example of FIG. 6, the second pair of shorter bounding edges are shown as bounding edges 612 and 614. For example, the first short bounding edge 612 extends from point 602-5 (one of the endpoints of the longest bounding edge 606) to point 602-4 (shown in polygon 620). In this example, point 602-4 is an internal point inside the polygon. As shown in polygon 630, the second short bounding edge 614 extends from point 602-6 (another endpoint of the longest bounding edge 606) to point 602-4 (shown in polygon 620). In this situation, the second pair of shorter bounding edges 612, 614 replaces the longest bounding edge 606 by connecting with point 602-4.

[0063] Thus, the two candidates to replace the longest bounding edge 606 are a first pair 608, 610 and a second pair 612, 614. In some examples, to select a particular candidate, the described systems and methods may identify an angle between the two shorter bounding edges associated with each pair. In one or more examples, the shorter bounding edge of the selected pair is the pair with the largest angle between the two shorter bounding edges. In the example of FIG. 6, the shorter bounding edge 608, 610 of the first pair has an angle of 616. As shown in FIG. 6, the shorter bounding edge 612, 614 of the second pair has an angle of 618. In this example, the angle 616 is greater than the angle 618. Thus, the shorter bounding edge 608, 610 of the first pair is selected to replace the longest bounding edge 606.

[0064] As shown in FIG. 6, polygon 640 is similar to polygons 620 and 630 described above. With reference to polygon 640, the longest bounding edge 606 has been replaced with two shorter bounding edges 608 and 610. As shown in polygon 640, the new polygon is smaller based on the replacement of the longest bounding edge 606. The shorter bounding edges 608 and 610 share a point 602-3 that was previously located within the polygon, so the integrity of the polygon is maintained while tightening the convex hull. In some instances, the shorter bounding edges 608 and 610 replace the longest bounding edge 606 without removing any points.

[0065] In some examples, the described systems and methods continue to remove the longest bounding edge by repeating the process 600 described with respect to Figure 6. As described above with respect to Figure 5, the process may be repeated until the next longest bounding edge is too short.

[0066] FIG. 7 illustrates another exemplary process 700 for replacing a bounding edge of a convex hull with two shorter segments, according to an example of the present disclosure. As shown in FIG. 7, polygon 710 is similar to the polygon described with respect to FIG. 6. Polygon 710 illustrates a polygon with new bounding edges 608 and 610, as described above. In some examples, bounding edge 610 is determined to be the next longest bounding edge to replace. As shown in polygon 710 of FIG. 7, a pair of shorter bounding edges 704 and 706 are identified as candidates for replacing the current longest bounding edge 610. In this example, the angle associated with the shorter bounding edges 704 and 706 is the same as the angle associated with the other shorter bounding edge candidate. In some examples, if the two angles are the same, the described system and method may randomly select one of the candidates. In the example of FIG. 7, the current longest bounding edge 610 is replaced with new shorter bounding edges 706 and 708, as shown in polygon 720. In the example polygon 720, the new short bounding edge 706 has endpoints at 702-3 and 702-4, and the new short bounding edge 708 has endpoints at 702-4 and 602-6.

[0067] 8A and 8B are diagrams illustrating an example convex hull with lidar points on the boundary edge and an example stray point located away from the majority of the lidar points, according to an example of the present disclosure. In the example of FIG. 8A, a convex hull is shown with multiple lidar points on the boundary of the convex hull. For example, points 802-1, 802-2, and 802-3 are located on the convex hull boundary. As shown in FIG. 8A, a proposed new boundary edge 804 extends from point 802-1 to 802-3. In some examples, this proposed new boundary edge 804 is not allowed because the new edge 804 would remove point 802-2 from the boundary. In this situation, point 802-2 is outside the convex hull. In one or more examples, this type of boundary edge replacement is not allowed because all points may be required to be within the convex hull or may be associated with the boundary of the convex hull.

[0068] In the example of Figure 8B, the exemplary stray point 810 is located away from the majority of the lidar points. In some examples, the point 810 is maintained as part of the convex hull polygon. In one or more examples, the point 810 is not removed from the polygon, and the edge that places the point 810 outside the polygon is not replaced (as described with respect to Figure 8A).

[0069] In some examples, the bounding edges are replaced sequentially to ensure that simple polygons are maintained after each boundary edge replacement. In certain examples, the systems and methods described herein may be used with convex hulls that represent static or dynamic objects.

[0070] 9 is a flowchart illustrating an example process 900 for determining a distance between a vehicle and an object based on a boundary contour of the object, according to an example of the disclosure. The operations described herein with respect to process 900 may be performed by one or more vehicle computing devices, as described herein.

[0071] As an example, process 900 is illustrated as a logical flow graph, each operation of which represents a sequence of operations that can be implemented in hardware, software, or a combination thereof. In the case of software, the operations can represent computer-executable instructions stored on one or more computer-readable storage media that, when executed by one or more processors, perform the recited operations. In general, computer-executable instructions can 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 can be combined (or omitted) in any order and / or in parallel to implement process 900. In some examples, the various branches represent alternative implementations that can be used individually or in combination with other operations described herein.

[0072] At operation 902, the process may include receiving a trajectory associated with the vehicle. The trajectory may be a planned path for the vehicle to follow toward a destination. At operation 904, the process may receive sensor data from a sensor associated with the vehicle. In some examples, the sensor may be a lidar sensor and the sensor data may be lidar data that may include a lidar point cloud.

[0073] In operation 906, the process may determine a boundary contour associated with the object represented in the sensor data. In some examples, the boundary contour may be determined based on a lidar point cloud associated with the object.

[0074] In operation 908, the process may determine a simulated position of the vehicle based on a trajectory associated with the vehicle. In some examples, the position of the vehicle may be simulated at different points along the trajectory to determine the likelihood of a collision with an obstacle at those different points. By identifying a potential collision along the trajectory at a future time, the vehicle may have extra time to take one or more actions that reduce or eliminate the likelihood of a collision. In some examples, a collision may be detected laterally from a pose the vehicle may occupy at a future time. For example, multiple poses may be predicted that the vehicle may occupy depending on its current trajectory. Along each of these poses, lateral collision detection techniques may be applied in accordance with the disclosed techniques. Similar techniques may be applied to multiple projected trajectories / poses to account for predicted possible future poses of the vehicle along multiple paths and / or in response to different future decision probabilities.

[0075] In operation 910, the process may determine a predicted position of the boundary contour. In some examples, a simulated position of the vehicle at a different point along the trajectory (e.g., a future time) may be compared to a predicted position of the boundary contour at the same future time. In some examples, operation 910 may include receiving a predicted trajectory of an object associated with the boundary contour, and in some examples, the predicted position may be based on the predicted trajectory. In some examples, operation 910 may include determining a predicted orientation of the boundary contour along the predicted trajectory.

[0076] In operation 912, the process may determine a distance between the vehicle and the object at a future time. In some examples, the distance may be determined based on a simulated position of the vehicle and a predicted position of a boundary contour representing the object. The distance between the vehicle and the boundary contour may help determine the likelihood of a collision between the vehicle and the object.

[0077] At operation 914, the process may perform an action based on the distance between the vehicle and the object. In some examples, the action may be initiated if the distance between the vehicle and the object is less than a threshold. In some examples, the threshold may be based on the speed of the vehicle and / or the object, a classification of the object, map data associated with the environment, behavior of the object, etc. As described herein, the action may include a driving maneuver that reduces or eliminates the likelihood of a collision between the vehicle and the object.

[0078] The process may (later) determine an updated vehicle position on the trajectory in operation 916. In some examples, the process may return to operation 908 to determine a simulated vehicle position based on a later time and determine the likelihood of a collision at the subsequent time.

[0079] 10A and 10B are diagrams illustrating an example vehicle trajectory 1002 and boundary contour 1004 of an object when determining a distance between the vehicle and boundary contour 1004, according to an example of the present disclosure. In some examples, the vehicle trajectory 1002 identifies a planned navigation path of the vehicle through an environment. As shown in FIG. 10A and FIG. 10B, the boundary contour 1004 is located proximate to the vehicle trajectory 1002. As described herein, the boundary contour 1004 may be associated with any type of object, such as a vehicle, a pedestrian, an animal, a building, a road sign, a tree, etc.

[0080] 10B illustrates a particular time when vehicle 1006 is located at a particular position on vehicle trajectory 1002. In the example of FIG. 10B, it may be desirable to determine the distance between vehicle 1006 and the object defined by boundary contour 1004. This distance may be important to determine whether vehicle 1006 can be safely guided past boundary contour 1004 when following vehicle trajectory 1002. In some embodiments, the distance between vehicle 1006 and the object defined by boundary contour 1004 may be determined by ray casting, as illustrated by ray trace 1008.

[0081] Based on the distance between the vehicle 1006 and the boundary contour 1004, the vehicle 1006 may take one or more actions to avoid colliding with the object associated with the boundary contour 1004. For example, the vehicle 1006 may take actions such as steering, braking, sounding the horn, alerting vehicle occupants, etc. depending on the distance from the object and the potential risk associated with the type of object. In some examples, certain types of objects, such as fast moving vehicles, may be at higher risk of colliding with the vehicle 1006 than stationary objects, such as trees or traffic signs.

[0082] In some examples, the vehicle 1006 and boundary contour 1004 may be propagated along the vehicle's trajectory to determine future collisions between the vehicle 1006 and objects as the vehicle 1006 moves along the vehicle trajectory 1002. In some implementations, the boundary contour 1004 may be determined at multiple points along the vehicle trajectory 1002. The position of the vehicle 1006 may be determined at those same points along the vehicle trajectory 1002 using ray casting, as described herein. These points along the vehicle trajectory 1002 may be specific points in space and time.

[0083] In some examples, the systems and methods described herein may determine whether the vehicle 1006 can be safely navigated past an object associated with the boundary contour 1004. Even in the absence of a collision, in some examples, there may be a minimum distance threshold (e.g., a safety margin) to ensure safe navigation of the vehicle 1006 through an object.

[0084] In some examples, the first boundary may be used to detect a potential collision between the vehicle and an external object. For example, the first boundary may be associated with a bounding box / cube or other relatively simple geometric shape. If a potential collision is detected, a more accurate (and possibly more processor intensive) boundary technique, such as the disclosed technique, may be used. The more accurate boundary technique may then be used to verify or disprove the potential collision detected using the bounding box (or other shape).

[0085] As shown in FIG. 10B, the ray trace 1008 may extend vertically from the side of the vehicle 1006 and pass through the boundary contour 1004. In some examples, when determining whether a collision may occur between the vehicle 1006 and an object associated with the boundary contour 1004, the systems and methods described herein determine the number of boundaries crossed within the boundary contour 1004 by the ray trace 1008. In a particular example, if the ray trace 1008 crosses an even number of boundaries as it passes through the boundary contour 1004, there is no collision between the vehicle 1006 and the object. In the example of FIG. 10B, the ray trace 1008 crosses two boundaries of the boundary contour 1004 (e.g., once when the ray enters the boundary contour 1004 and once when the ray exits the boundary contour 1004). Because the number of boundaries is even, the vehicle 1006 is unlikely to collide with the object. This may be confirmed by FIG. 10B, which shows a separation between the vehicle 1006 and the boundary contour 1004. In some examples, if the ray trace 1008 crosses an odd number of boundaries, it means that the ray trace 1008 occurred within the boundary contour 1004. If the ray trace 1008 occurs within the boundary contour 1004, it is an indication of a collision (e.g., at least a portion of the vehicle 1006 and an object sharing the same space at the same time).

[0086] 10B, the ray trace 1008 is shown extending vertically from the side of the vehicle 1006. In other examples, the ray trace 1008 may extend in any direction from any portion of the vehicle 1006. For example, the ray trace 1008 may extend longitudinally from the front or rear of the vehicle 1006 to determine the distance between the vehicle 1006 and an object in front of or behind the vehicle 1006.

[0087] 11A-11C are diagrams illustrating an example bounding box, bounding contour, and axis-aligned bounding box, according to an example of the present disclosure. In the example of FIG. 11A, three representations of an object are shown: a bounding box 1102, a bounding contour 1104, and an axis-aligned bounding box (AABB) 1106. The example object represented in FIG. 11A may be a vehicle. In some examples, the bounding box 1102 is a rectangle that represents a significant portion of the object (i.e., the vehicle). As shown in FIG. 11A, the long sides of the bounding box 1102 may represent the sides of the vehicle. However, the long sides of the bounding box 1102 may not include the side mirrors extending from each side of the vehicle. Thus, the bounding box 1102 may not accurately represent all portions of the vehicle or other object.

[0088] 11A, the boundary contour 1104 may provide a more accurate representation of the vehicle. For example, the boundary contour 1104 identifies two side mirrors of the vehicle that may be important to consider when determining the likelihood of a collision between the vehicle and another object. As noted above, the vehicle's side mirrors are not represented within the bounding box 1102, which may increase the likelihood of a collision because the systems and methods described herein do not recognize the side mirrors based solely on the bounding box 1102.

[0089] FIG. 11A also includes an axis-aligned bounding box (AABB) 1106. The AABB (1106) is a bounding box that may be aligned with a particular axis, such as the x-y axis, the longitudinal axis of a vehicle or other object. In the example of FIG. 11A, the AABB (1106) is aligned on the x-y axis. In some examples, the AABB (1106) is used to perform an early check for a possible collision between the vehicle represented by the AABB (1106) and another object. For example, the early check using the AABB (1106) may use a dynamic AABB tree for active contours. The dynamic AABB tree may enable an efficient search for contours that have AABBs that overlap with the AABB of a query contour (e.g., a contour of a vehicle to check for a possible collision with another object).

[0090] In the example of FIG. 11B, the environment 1110 includes a first vehicle (or object) 1114 and a second vehicle (or object) 1118. In this example, the first vehicle 1114 has an associated AABB (1112) and the second vehicle 1118 has an associated AABB (1116). As shown in FIG. 11B, the AABB (1112) and the AABB (1116) are aligned with the local Universal Transverse Mercator (UTM). Thus, the AABB (1112) and the AABB (1116) are aligned with the horizontal and vertical axes shown in FIG. 11B. In the example of FIG. 11B, the AABB (1112) and the AABB (1116) overlap each other, which may trigger a collision avoidance system or algorithm to detect a potential collision between the first vehicle 1114 and the second vehicle 1118. However, the example shown in FIG. 11B does not represent a collision situation. 11B, there is adequate spacing between the first vehicle 1114 and the second vehicle 1118. A potential collision between the two vehicles 1114 and 1118 may be indicated due to areas of AABB(1112) and AABB(1116) not accurately representing the first vehicle 1114 and the second vehicle 1118, respectively.

[0091] In the example of FIG. 11C, the environment 1120 includes a first vehicle (or object) 1124 and a second vehicle (or object) 1128. In this example, the first vehicle 1124 has an associated AABB (1122) and the second vehicle 1128 has an associated AABB (1126). As shown in FIG. 11C, the AABB (1122) and the AABB (1126) are aligned with the yaw of the vehicles 1124 and 1128. This alignment with the yaw of the vehicles 1124 and 1128 avoids overlap of the AABB (1122) and 1126. By aligning the ABBs (1122) and 1126 to the yaw of the vehicles, the AABB (1122) and 1126 provide a more accurate representation of the vehicle's contour. These "closer" AABBs (1122) and 1126 do not overlap, which is a more accurate representation of the environment 1120. In the example of Figure 11C, the collision avoidance system or algorithm may not detect a potential collision between the first vehicle 1124 and the second vehicle 1128.

[0092] In some examples, the vehicle planning and / or prediction component may use one or more bounding boxes, boundary contours, and AABBs to determine a vehicle trajectory, guide the vehicle along the vehicle trajectory, predict potential collisions between the vehicle and other objects, and initiate actions (e.g., vehicle actions) based on the potential collisions. In one or more examples, the systems and methods described herein may first perform a coarse analysis to predict a collision or determine whether an object maintains a threshold distance from the vehicle. This threshold distance may also be referred to as a safety radius associated with the vehicle. This coarse analysis may be performed, for example, using AABBs or bounding boxes. This coarse analysis can be performed quickly with minimal computing resources. If the coarse analysis identifies a potential collision or if the vehicle and object cannot maintain a threshold distance from each other, the described systems and methods may perform a more detailed analysis, for example, using boundary contours and ray tracing. In some examples, vehicle planning may be performed from both the front vehicle axles and the rear vehicle axles.

[0093] In some examples, collision checking may be time or distance limited. For example, collision checking may be time limited to the next few seconds. In a dynamic environment, collision checking far into the future may be inaccurate due to multiple dynamic objects moving in the environment. Therefore, to conserve computing resources and generate accurate data, collision checking may be limited to a few seconds into the future.

[0094] In addition, collision checking may be limited to a certain distance from the vehicle. For example, a vehicle moving along a trajectory may concern objects that are within a certain distance from the vehicle or the vehicle's trajectory. In some implementations, objects far away from the vehicle and the vehicle's trajectory may be ignored until they move within a threshold distance for analysis. Ignoring these objects conserves computing resources and focuses those computing resources on objects that are high priority based on their proximity to the vehicle or vehicle trajectory.

[0095] In some examples, the systems and methods described herein may check for collisions between a vehicle trajectory and a boundary contour associated with an object. In one or more examples, an AABB tree may be created, with all boundary contours aligned to the yaw of the vehicle (as shown in FIG. 11C). The vehicle trajectory may be added to the AABB tree. In some examples, the AABB tree may be queried for collision candidates. In some examples, the systems and methods described may query the AABB tree based on a particular time period.

[0096] In some examples, a potential collision may be determined using an AABB or other relative course representation using an AABB tree or other technique. In response to detecting a potential collision using a bounding box, a more accurate representation may be determined via a bounding contour, as disclosed herein. For example, the course representation may indicate a first probability of a potential collision in a particular scenario. In response to the first probability meeting a threshold, a second determination of a potential collision may be made using the more accurate representation. The second determination may include determining a second probability of a potential collision in the same scenario, where the second probability may differ from the first probability. The second probability may indicate, for example, that a collision is less likely than the first probability. Use of a more accurate representation may be more complex than use of a coarser representation. Using the described two-stage approach reduces the overall complexity for the system to determine a potential collision.

[0097] In some examples, if a collision is detected, the described systems and methods may invalidate the vehicle's current trajectory or modify the accuracy of the trajectory based on the time and distance of the collision from the vehicle. Similarly, if a safety margin is compromised, the systems and methods may invalidate or modify the vehicle's current trajectory.

[0098] 12 is a diagram illustrating an example system 1200 for implementing the techniques described herein. A vehicle 1202 may include one or more vehicle computing devices 1204, one or more sensor systems 1206, one or more emitters 1208, one or more communication connections 1210, at least one direct connection 1212, and one or more drive systems 1214.

[0099] In some examples, the system 1200 can be implemented as a vehicle, such as an autonomous vehicle configured to operate according to a Level 5 classification issued by the U.S. National Highway Traffic Safety Administration, which describes a vehicle that can perform all safety-critical functions for the entire journey, with no driver (or passenger) expected to control the vehicle at any time. In such examples, the vehicle can be configured to control all functions from start to stop, including all parking functions, and thus can be unmanned. This is by way of example only, and the systems and methods described herein can be incorporated into any ground, air, or water vehicle, including vehicles ranging from those that must be manually controlled by a driver at all times to those that are partially or fully autonomously controlled.

[0100] The vehicle computing device 1204 may include one or more processors 1216 and a memory 1218 communicatively coupled to the one or more processors 1216. In the illustrated example, the vehicle 1202 is an autonomous vehicle. However, the vehicle 1202 may be any other type of vehicle. In the illustrated example, the memory 1218 of the vehicle computing device 1204 stores a localization component 1220, a perception component 1222, one or more maps 1224, and one or more system controllers 1226. While shown in FIG. 12 as residing in the memory 1218 for illustrative purposes, it is contemplated that the localization component 1220, the perception component 1222, the one or more maps 1224, and the one or more system controllers 1226 may additionally or alternatively be accessible to the vehicle 1202 (e.g., may be stored remotely).

[0101] In at least one example, the localization component 1220 may include functionality for receiving data from the sensor system 1206 to determine the position and / or orientation of the vehicle 1202 (e.g., one or more of an x-position, a y-position, a z-position, a roll, a pitch, or a yaw). For example, the localization component 1220 may include and / or request / receive a map of the environment and may continually determine the position and / or orientation of the autonomous vehicle within the map. In some examples, the localization component 1220 may receive image data, lidar data, radar data, IMU data, GPS data, wheel encoder data, etc., utilizing SLAM (simultaneous localization and mapping), CLAMS (calibration, localization and mapping, simultaneously), relative SLAM, bundle adjustment, nonlinear least squares optimization, etc., to accurately determine the position of the autonomous vehicle. In some examples, the localization component 1220 may provide data to various components of the vehicle 1202 to determine an initial position of the autonomous vehicle for generating a trajectory and / or for generating or receiving map data, as described herein.

[0102] In some examples, the perception component 1222 may include functionality to perform object detection, segmentation, and / or classification. In some examples, the perception component 1222 may provide processed sensor data indicative of the presence of an object proximate to the vehicle 1202 and / or the classification of the object as an object type (e.g., automobile, pedestrian, cyclist, building, tree, road surface, curb, sidewalk, unknown, etc.). In additional or alternative examples, the perception component 1222 may provide processed sensor data indicative of one or more characteristics associated with a detected object (e.g., a tracked object) and / or the environment in which the object is located. In some examples, the characteristics associated with the object may include, but are not limited to, x-position (global and / or local position), y-position (global and / or local position), z-position (global and / or local position), orientation (e.g., roll, pitch, yaw), object type (e.g., classification), object speed, object acceleration, object range (size), etc. Characteristics associated with an environment may include, but are not limited to, the presence of other objects in the environment, the state of other objects in the environment, the time of day, the day of the week, the season, weather conditions, dark / light indications, and the like.

[0103] In some examples, the perception component 1222 may include a boundary contour component 1228 that may create and manage any number of boundary contours as described herein. In particular examples, the boundary contour component 1228 identifies boundary contours associated with one or more objects.

[0104] The memory 1218 may further include one or more maps 1224 that may be used by the vehicle 1202 to navigate through the environment. In some examples, the map may include, but is not limited to, texture information (e.g., color information (e.g., RGB color information, Lab color information, HSV / HSL color information), etc.), intensity information (e.g., LIDAR information, RADAR information, etc.), spatial information (e.g., image data projected onto a mesh, individual "surfels" (e.g., polygons associated with individual colors and / or intensities), reflectivity information (e.g., specularity information, retroreflectivity information, BRDF information, BSSRDF information, etc.). In some examples, the map may include a three-dimensional mesh of the environment. In some examples, the map may be stored in a tiled format such that individual tiles of the map represent distinct portions of the environment and may be loaded into the working memory as needed, as described herein. In at least one example, the one or more maps 1224 may include at least one map (e.g., an image and / or a mesh). In some examples, one or more maps 1224 may be stored on a remote computing device (such as computing device 1242) accessible via network 1240. In some examples, multiple maps 1224 may be stored, for example, based on a characteristic (e.g., type of object, time of day, day of the week, season of the year, etc.). Storing multiple maps 1224 may have similar memory requirements but increases the speed at which data in the maps may be accessed.

[0105] In at least one example, the vehicle computing device 1204 may include one or more system controllers 1226, which may be configured to control the steering, propulsion, braking, safety, emitter, communications, and other systems of the vehicle 1202. These system controllers 1226 may communicate with and / or control corresponding systems of the drive system 1214 and / or other components of the vehicle 1202.

[0106] In some examples, the memory 1218 may include a prediction component 1230 that predicts various activities and conditions proximate to the vehicle 1202. In at least one example, the prediction component 1230 may predict the likelihood of a collision with an object or other vehicular activity or condition.

[0107] In some examples, the memory 1218 may include a planning component 1232 that plans various vehicle activities, plans a vehicle trajectory to reach a destination, etc. In at least one example, the planning component 1232 may include a collision checking component 1234 that may identify potential collisions along the vehicle's trajectory. As described herein, the collision checking component 1234 may use boundary contours to determine the distance (and likelihood of collision) between the vehicle 1202 and boundary contours associated with objects near the vehicle's trajectory.

[0108] In some examples, some or all aspects of the components described herein may include any models, algorithms, and / or machine learning algorithms. For example, in some examples, the components within memory 1218 (and memory 1246 described below) may be implemented as neural networks.

[0109] As described herein, an exemplary neural network is an algorithm that passes input data through a series of connected layers to generate an output. Each layer in a neural network may also include another neural network, or may include any number of layers (whether convolutional or not). As understood in the context of this disclosure, a neural network may utilize machine learning, which may refer to a broad class of algorithms in which an output is generated based on learned parameters.

[0110] Although described in the context of neural networks, any type of machine learning may be used consistent with the present disclosure. For example, machine learning algorithms may 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), local estimation 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 dichotomizer 3 (ID3), chi-squared autocorrelation (CARC), and others). Dynamic Interaction Detection (CHAID), Decision Stamps, Conditional Decision Trees), Bayesian Algorithms (e.g., Naive Bayes, Gaussian Naive Bayes, Multinomial Naive Bayes, Average-one Dependent Estimator (AODE), Bayesian Belief Networks (BNN), Bayesian Networks), Clustering Algorithms (e.g., k-means, k-median, Expectation Maximization (EM), Hierarchical Clustering), Association Rule Learning Algorithms (e.g., Perceptron, Backpropagation, Hopfield Networks, Radial Basis Function Networks (RBFN)), Deep Learning Algorithms (e.g., Deep Boltzmann Machines (DBM), Deep Belief Networks (DBN), Convolutional Neural Networks) (CNN), stacked autoencoders), dimensionality reduction techniques (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), mixed 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), support vector machines (SVM), supervised learning, unsupervised learning, semi-supervised learning, etc.

[0111] Additional examples of architectures include neural networks such as ResNet50, ResNetl0l, VGG, DenseNet, and PointNet.

[0112] In at least one example, the sensor system 1206 may include lidar sensors, radar sensors, ultrasonic transducers, sonar sensors, position sensors (e.g., GPS, compass, etc.), inertial sensors (e.g., inertial measurement units (IMUs), accelerometers, magnetometers, gyroscopes, etc.), image sensors (e.g., RGB, IR, intensity, depth, etc.), time-of-flight sensors, audio sensors, wheel encoders, environmental sensors (temperature sensors, humidity sensors, light sensors, pressure sensors, etc.), and others. The sensor system 1206 may include multiple instances of each of these or other types of sensors. For example, the lidar sensors may include individual lidar sensors located at the corners, front, rear, sides, and / or top of the vehicle 1202. As another example, the image sensors may include various cameras positioned at various locations on the exterior and / or interior of the vehicle 1202. The sensor system 1206 may provide input to the vehicle computing device 1204. Additionally or alternatively, the sensor system 1206 may transmit sensor data over one or more networks 1240 to one or more computing devices 1242 at a particular frequency, such as after a predetermined period of time, in near real-time, or the like.

[0113] The vehicle 1202 may also include one or more emitters 1208 for emitting light and / or sound, as described above. The emitters 1208 in this example include interior audio and visual emitters for communicating with occupants of the vehicle 1202. By way of non-limiting example, 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 1208 in this example also include exterior emitters. By way of example, the exterior emitters in this example include lights (e.g., indicator lights, signs, light arrays, etc.) that signal a direction of travel or other indicators of the vehicle's operation, and one or more audio emitters (e.g., speakers, speaker arrays, horns, etc.) that acoustically communicate with pedestrians or one or more other nearby vehicles, including acoustic beam steering technology.

[0114] Vehicle 1202 may also include one or more communication connections 1210 that enable communication between vehicle 1202 and one or more other local or remote computing devices. For example, communication connection 1210 may facilitate communication with other local computing devices on vehicle 1202 and / or drive system 1214. Communication connection 1210 may also enable the vehicle to communicate with other nearby computing devices (e.g., other nearby vehicles, traffic signals, etc.). Communication connection 1210 may also enable vehicle 1202 to communicate with remotely operated computing devices or other remote services.

[0115] The communications connection 1210 may include a physical and / or logical interface for connecting the vehicle computing device 1204 to another computing device or network, such as network 1240. For example, the communications connection 1210 may enable communications based on Wi-Fi, over frequencies defined by the IEEE 802.11 standard, short-range wireless frequencies such as Bluetooth, cellular communications (e.g., 2G, 3G, 4G, 4G LTE, 5G, etc.), etc., or any suitable wired or wireless communications protocol that enables each computing device to interface with other computing devices.

[0116] In at least one example, the vehicle 1202 may include one or more drive systems 1214. In some examples, the vehicle 1202 may have a single drive system 1214. In at least one example, when the vehicle 1202 has multiple drive systems 1214, the individual drive systems 1214 may be located at opposite ends of the vehicle 1202 (e.g., at the front and the rear, etc.). In at least one example, the drive system 1214 may include one or more sensor systems for detecting conditions surrounding the drive system 1214 and / or the vehicle 1202. By way of example and not by way of limitation, the sensor systems may include one or more wheel encoders (e.g., rotary encoders) for sensing the rotation of the wheels of the drive system, inertial sensors (e.g., inertial measurement units, accelerometers, gyroscopes, magnetometers, etc.) for measuring the orientation and acceleration of the drive system, cameras or other image sensors, ultrasonic sensors for acoustically detecting objects in the conditions surrounding the drive system, lidar sensors, radar sensors, etc. Some sensors, such as wheel encoders, may be specific to the drive system 1214. In some cases, sensor systems present in the drive system 1214 may overlap or complement corresponding systems in the vehicle 1202 (e.g., sensor system 1206).

[0117] The drive system 1214 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 for use by other vehicle systems, a steering system including a steering motor and a steering rack (which may be electric), a braking system including hydraulic or electric actuators, a suspension system including hydraulic and / or pneumatic components, a stability control system for braking force distribution to mitigate loss of traction and maintain control, an HVAC system, lighting (e.g., lighting such as headlights / taillights that illuminate the perimeter 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 system 1214 may include a drive system controller to control the operation of various vehicle systems that may receive and pre-process data from the sensor systems. In some examples, the drive system 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 for performing various functions of the drive system 1214. In addition, the drive systems 1214 also include one or more communication connections that enable each drive system to communicate with one or more other local or remote computing devices.

[0118] In at least one example, the direct connection 1212 may provide a physical interface that couples to one or more drive systems 1214 with the body of the vehicle 1202. For example, the direct connection 1212 may allow for the transfer of energy, fluid, air, data, etc. between the drive system 1214 and the vehicle. In some examples, the direct connection 1212 may further removably secure the drive system 1214 to the body of the vehicle 1202.

[0119] In some examples, the vehicle 1202 may transmit sensor data to one or more computing devices 1242 over the network 1240. In some examples, the vehicle 1202 may transmit raw sensor data to the computing device 1242. In other examples, the vehicle 1202 may transmit processed sensor data and / or representations of the sensor data to the computing device 1242. In some examples, the vehicle 1202 may transmit sensor data to the computing device 1242 at a particular frequency, such as after a predetermined period of time, in near real-time, etc. In some instances, the vehicle 1202 may transmit the sensor data (raw or processed) to the computing device 1242 as one or more log files.

[0120] The computing device 1242 may include a processor 1244 and a memory 1246 that stores a training component 1248. In some examples, the training component 1248 may include training data generated by a simulator.

[0121] The processor 1216 of the vehicle 1202 and the processor 1244 of the computing device 1242 may be any suitable processor capable of processing data and executing instructions to perform the operations described herein. By way of example, the processors 1216 and 1244 may include one or more central processing units (CPUs), graphic processing units (GPUs), or any other device or portion of a device that processes electronic data and converts it into registers or other electronic data that can be stored in a memory. In some examples, integrated circuits (e.g., ASICs, etc.), gate arrays (e.g., FPGAs, etc.), and other hardware devices may also be considered processors so long as they are configured to execute encoded instructions.

[0122] The memories 1218 and 1246 are examples of non-transitory computer-readable media. The memories 1218 and 1246 can store an operating system and one or more software applications, instructions, programs, and / or data to implement the methods and functions attributed to the various systems described herein. In various implementations, the memories can be implemented using suitable memory technologies such as static random access memory (SRAM), synchronous dynamic RAM (SDRAM), non-volatile / flash type memory, or any other type of memory capable of storing information. The architectures, systems, and individual elements described herein can include many other logical, programmatic, and physical components, of which those shown in the accompanying drawings are merely examples associated with the description herein.

[0123] In some cases, the memories 1218 and 1246 may include at least a working memory and a storage memory. For example, the working memory may be a limited capacity of high-speed memory (e.g., cache memory) used to store data manipulated by the processors 1216 and 1244. In some cases, the memories 1218 and 1246 may include a storage memory, which may be a relatively large capacity of slower memory used for long-term storage of data. In some cases, the processors 1216 and 1244 may not directly manipulate data stored in the storage memory as described herein, and the data may need to be loaded into the working memory to perform operations based on the data.

[0124] 12 is illustrated as a distributed system, it should be noted that in alternative illustrations, components of the vehicle 1202 may be associated with the computing device 1242 and / or components of the computing device 1242 may be associated with the vehicle 1202. That is, the vehicle 1202 may perform one or more of the functions associated with the computing device 1242, and vice versa.

[0125] Example clauses A. A system comprising: one or more processors; and one or more non-transitory computer-readable media storing instructions executable by the one or more processors, the instructions which, when executed, cause the system to perform operations including receiving a trajectory associated with an autonomous vehicle traversing an environment; receiving sensor data from sensors associated with the autonomous vehicle; determining a boundary contour associated with an object represented in the sensor data based on the sensor data; determining a predicted position and orientation of the boundary contour based on a position of the autonomous vehicle along the trajectory; determining a distance between a position at the predicted position and orientation based on ray casting and the boundary contour; and controlling the autonomous vehicle based on the distance.

[0126] B. The system of paragraph A, wherein the boundary contour is a polygon representing a convex hull associated with the object.

[0127] C. The system of paragraph B, wherein the operations further include connecting at least two points of the sensor data, and the polygon is determined based on connecting the at least two points.

[0128] D. The system of any one of paragraphs A-C, wherein the distance is a first distance, and the operation further includes determining a second distance based on an axis-aligned bounding box corresponding to the object.

[0129] E. The system of any one of paragraphs A-D, wherein the operation further includes comparing the distance to a threshold, the threshold being based on a speed of the autonomous vehicle and an object type associated with the object.

[0130] F. A method comprising the steps of receiving a trajectory associated with a vehicle, receiving sensor data from a sensor associated with the vehicle, determining a boundary contour associated with an object represented in the sensor data, determining a predicted position of the vehicle based on the trajectory, determining a predicted position of the boundary contour associated with the object, determining a distance between the vehicle and the object based on a simulated position of the vehicle and the predicted position of the boundary contour, and performing an action based on the distance between the vehicle and the object.

[0131] G. The method of paragraph F, wherein the boundary contour is a polygon representing a convex hull associated with the object determined by the connection of at least two points of the sensor data.

[0132] H. The method of paragraph F or G, wherein the action includes verifying the trajectory and / or invalidating the trajectory.

[0133] I. The method of any one of paragraphs F-H, wherein the step of determining the distance between the vehicle and the object is based at least in part on ray casting.

[0134] J. The method of any of paragraphs F-I, further comprising determining a predicted direction of the boundary contour.

[0135] K. The method of paragraph J, wherein the predicted direction is based at least in part on a predicted trajectory associated with the object.

[0136] L. The method of any one of paragraphs F-K, wherein the sensor is a lidar sensor and the sensor data includes lidar data.

[0137] M. The method of any of paragraphs F-L, further comprising the step of representing the boundary contour as a representation of a plurality of connected points.

[0138] The method of any one of paragraphs F-M, wherein N. the distance is a first distance, and the method further includes determining a second distance based on the axis-aligned bounding box.

[0139] O. The method of any of paragraphs F-N, further comprising comparing the distance to a threshold, the threshold being based on at least one of a speed of the vehicle or an object type associated with the object.

[0140] P. The method of any of paragraphs F-O, further comprising determining an axis-aligned bounding box associated with the boundary contour based at least in part on an orientation of the vehicle.

[0141] Q. The method of any of paragraphs F-P, wherein the boundary contour associated with the object includes at least five boundary edges.

[0142] R. One or more non-transitory computer-readable media storing instructions that, when executed, cause one or more processors to perform operations including receiving a trajectory associated with a vehicle; receiving sensor data from a sensor associated with the vehicle; determining a boundary contour associated with an object represented in the sensor data; determining a simulated position of the vehicle based on the trajectory; determining a predicted position of the boundary contour associated with the object; determining a distance between the vehicle and the object based on the simulated position of the vehicle and the predicted position of the boundary contour; and performing an action based on the distance between the vehicle and the object.

[0143] S. The one or more non-transitory computer-readable media of paragraph R, wherein the boundary contour is a polygon representing a convex hull associated with the object determined by the connection of at least two points of the sensor data.

[0144] T. The one or more non-transitory computer-readable media of paragraphs R or S, wherein the operations further include determining an axis-aligned bounding box associated with the boundary contour and determining a second distance between the vehicle and the object based on the axis-aligned bounding box.

[0145] U. A system comprising: one or more processors; and one or more non-transitory computer-readable media storing instructions executable by the one or more processors, the instructions which, when executed, cause the system to: receive lidar data associated with an object; project the lidar data onto a two-dimensional plane as projected lidar data; determine a first convex hull based on the projected lidar data, the first convex hull including a plurality of bounding edges; determine a longest bounding edge, the longest bounding edge having a first endpoint and a second endpoint; determine an interior point within the first convex hull; replace the longest bounding edge with a first segment based on the first endpoint and the interior point, and a second segment based on the interior point and the second endpoint; and determine an updated convex hull based on the first segment and the second segment.

[0146] V. The system described in paragraph U, wherein the updated convex hull represents a boundary contour associated with the object, and the operation is determining an action based on the boundary contour associated with the object, the action including at least one of controlling a vehicle, determining a static object, determining a dynamic object, or updating map data.

[0147] W. The system of paragraph U or V, wherein determining the longest bounding edge includes identifying a plurality of bounding edges associated with the first convex hull, and determining a longest bounding edge among the plurality of bounding edges associated with the first convex hull.

[0148] X. The system of any one of paragraphs U-W, further comprising identifying a bounding box associated with an object identified in the lidar data, expanding the size of the bounding box as an expanded bounding box, and capturing additional lidar data within the expanded bounding box.

[0149] Y. A method comprising: receiving sensor data associated with an object; determining a first convex hull based on the sensor data, the first convex hull including a plurality of bounding edges; determining a longest bounding edge, the longest bounding edge having a first endpoint and a second endpoint, determining an internal point within the first convex hull; replacing the longest bounding edge with a first segment based on the first endpoint and the internal point and a second segment based on the internal point and the second endpoint; and determining a second convex hull based on the first segment and the second segment.

[0150] Z. The method of paragraph Y, wherein the sensor data associated with the object includes a plurality of lidar points, and the method further includes the steps of projecting the plurality of lidar points onto a two-dimensional plane and relocating a point of the plurality of lidar points to a nearest position on a predetermined grid.

[0151] AA. The method of paragraph Y or Z, further including the steps of determining a second internal point inside the first convex hull, determining a third segment based on the first endpoint and the second internal point, and determining a fourth segment based on the second internal point and the second endpoint.

[0152] AB. The method of paragraph AA, further comprising the steps of determining a first angle associated with the first segment and the second segment, determining a second angle associated with the third segment and the fourth segment, and determining a maximum angle among the first angle and the second angle, wherein the step of replacing the longest bounding edge further includes at least one of replacing the longest bounding edge with the first segment and the second segment in response to determining that the first angle is greater than the second angle, or replacing the longest bounding edge with the third segment and the fourth segment in response to determining that the second angle is greater than the first angle.

[0153] AC. The method of any of paragraphs Y-AB, further including determining a three-dimensional object based on a second convex hull.

[0154] AD. The method of any one of paragraphs Y-AC, wherein the second convex hull represents a boundary contour associated with the object, and the method further includes determining a probability associated with a potential collision between the vehicle and the object based on the boundary contour associated with the object.

[0155] AE. The method of any one of paragraphs Y-AD, wherein the second convex hull represents a boundary contour associated with the object, and the method includes determining an action based on the boundary contour associated with the object, the action including at least one of controlling the vehicle, determining a static object, determining a dynamic object, or updating map data.

[0156] AF. The method of any one of paragraphs Y-AE, further comprising identifying a bounding box associated with an object identified in the sensor data, expanding the size of the bounding box as an expanded bounding box, and capturing all sensor data points within the expanded bounding box.

[0157] AG. The method of any one of paragraphs Y through AF, further including the steps of determining a next longest bounding edge, determining that the length of the next longest bounding edge is less than a threshold length, and outputting a second convex hull based at least in part on the length being less than the threshold length.

[0158] AH. The method of paragraph AG, further comprising determining a threshold length based at least in part on the longest bounding edge.

[0159] AI. The method of any one of paragraphs Y-AH, further including outputting a second convex hull based at least in part on the number of edges of the convex hull meeting or exceeding a first threshold, the length of the longest remaining bounding edge being less than a second threshold, or the number of internal points associated with the second convex hull being less than a third threshold.

[0160] AJ. The method of any one of paragraphs Y-AI, further comprising determining a plurality of lidar points based on instance segmentation.

[0161] AK. The method of any of paragraphs Y-AJ, wherein the first convex hull includes at least five bounding edges.

[0162] AL. One or more non-transitory computer-readable media storing instructions that, when executed, cause one or more processors to perform operations including receiving sensor data associated with an object; determining a first convex hull based on the sensor data, the first convex hull including a plurality of bounding edges; determining a longest bounding edge, the longest bounding edge having a first endpoint and a second endpoint; determining an interior point within the first convex hull; replacing the longest bounding edge with a first segment based on the first endpoint and the interior point, and a second segment based on the interior point and the second segment; and determining a second convex hull based on the first segment and the second segment.

[0163] AM. The one or more non-transitory computer-readable media of paragraph AL, wherein the sensor data associated with the object includes a plurality of lidar points, and the operation further includes projecting the plurality of lidar points onto a two-dimensional plane and relocating a point of the plurality of lidar points to a nearest position on a predetermined grid.

[0164] AN. One or more non-transitory computer-readable media of paragraphs AL or AM, wherein the operations further include identifying a bounding box associated with an object identified in the sensor data, expanding the size of the bounding box as an expanded bounding box, and capturing all sensor data points within the expanded bounding box.

[0165] While the exemplary provisions described above are described with respect to one particular implementation, it should be understood in the context of this specification that the contents of the exemplary provisions can also be implemented via a method, device, system, computer-readable medium, and / or another implementation. Furthermore, any of Examples A-AN can be implemented alone or in combination with any of the other one or more Examples A-AN.

[0166] conclusion While one or more examples of the technology described herein have been described, various modifications, additions, substitutions, and equivalents thereof are within the scope of the technology described herein. In describing the examples, reference is made to the accompanying drawings, which form a part of this specification, and which show, by way of illustration, specific examples of the claimed subject matter. It should be understood that other examples can be used and modifications or substitutions, such as structural changes, can be made. Such examples, modifications, or variations do not necessarily depart from the intended scope of the claimed subject matter. While the steps herein may be presented in a particular order, in some cases the order can be changed such that certain inputs are provided at different times or in a different order without changing the functionality of the described systems and methods. The disclosed procedures can also be performed in different orders. Furthermore, the various calculations described herein need not be performed in the order disclosed, and other examples using alternative orders of calculations may be easily implemented. In addition to reordering, calculations can also be decomposed into sub-calculations that have the same results.

Claims

1. 1. A method comprising: receiving a trajectory associated with a vehicle; receiving sensor data from a sensor associated with the vehicle; determining a boundary contour associated with an object represented in the sensor data; determining a simulated position of the vehicle based on the trajectory; determining a predicted location of the boundary contour associated with the object; determining a distance between the vehicle and the object based on the simulated position of the vehicle and the predicted position of the boundary contour; performing an action based on the distance between the vehicle and the object; A method for providing the above.

2. The method of claim 1 , wherein the boundary contour is a polygon representing a convex hull associated with the object determined by a connection of at least two points of the sensor data.

3. The method of claim 1 or 2, wherein the action comprises verifying the trajectory or invalidating the trajectory.

4. The method of claim 1 , wherein determining the distance between the vehicle and the object is based at least in part on ray casting.

5. The method of claim 1 , further comprising the step of determining a predicted direction of the boundary contour.

6. The method of claim 5 , wherein the predicted direction is based at least in part on a predicted trajectory associated with the object.

7. The method of claim 1 , wherein the sensor is a LIDAR sensor and the sensor data includes LIDAR data.

8. The method of claim 1 , further comprising the step of representing the boundary contour as a representation of a plurality of connected points.

9. The method of claim 1 , wherein the distance is a first distance, the method further comprising determining a second distance based on an axis-aligned bounding box.

10. 10. The method of claim 1, further comprising comparing the distance to a threshold, the threshold being based on at least one of a speed of the vehicle or an object type associated with the object.

11. The method of claim 1 , further comprising determining an axis-aligned bounding box associated with the boundary contour based at least in part on an orientation of the vehicle.

12. The method of claim 1 , wherein the boundary contour associated with the object comprises at least five boundary edges.

13. One or more non-transitory computer readable media storing instructions that, when executed by one or more processors, cause one or more computing devices to perform the method of any one of claims 1 to 12.

14. 1. A system comprising: one or more processors; and one or more non-transitory computer-readable media storing instructions for causing the one or more processors to perform operations; and the operation comprises: receiving a trajectory associated with a vehicle; receiving sensor data from a sensor associated with the vehicle; determining a boundary contour associated with an object represented in the sensor data; determining a simulated position of the vehicle based on the trajectory; and determining a predicted location of the boundary contour associated with the object; determining a distance between the vehicle and the object based on the simulated position of the vehicle and the predicted position of the boundary contour; and performing an action based on the distance between the vehicle and the object; A system including:

15. The operations include determining an axis-aligned bounding box associated with the boundary contour; and and determining a second distance between the vehicle and the object based on the axis-aligned bounding box.