Method, storage medium and vehicle for navigating an optimal path
By performing C-space decomposition and adjacency graph generation on the vehicle's environment, the problem of low computational efficiency in collision-free path planning in complex environments is solved, achieving efficient and smooth path navigation.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- MOTIONAL AD LLC
- Filing Date
- 2021-11-18
- Publication Date
- 2026-07-10
AI Technical Summary
When planning collision-free paths in complex environments, existing technologies are time-consuming and computationally resource-intensive, making it difficult to efficiently generate optimal paths.
The environment is sampled at the discrete headings of the vehicle by sensing circuits to generate C-space, which is then decomposed into multiple C-slices. Vertices of interest are inserted to form a C-slice adjacency list and a super-adjacency graph, and finally the shortest path is found for navigation.
It successfully finds feasible paths in a shorter computation time, reduces computational complexity, and generates smoother, collision-free paths.
Smart Images

Figure CN115540888B_ABST
Abstract
Description
Technical Field
[0001] This specification relates to collision-free path generation via connecting C-pieces through element decomposition. Background Technology
[0002] Navigating a vehicle from an initial location to a final destination typically requires the vehicle's decision-making system to select a path from the initial location to the requested final destination. Various objects can be located between the initial location and the final destination. Possible paths are represented by a graph with multiple vertices and edges, and the vehicle's decision-making system selects a path based on an arbitrary number of constraints. Objects influence the location of possible paths. Collision-free paths are paths that avoid vertices and edges that cross or are near objects. When the graph contains a large number of vertices and edges, path planning is both time-consuming and computationally resource-intensive. Summary of the Invention
[0003] A method for navigating an optimal path includes: sampling the environment at a discrete heading of a vehicle by a sensing circuit to generate a configuration space, or C-space, having one or more C-pieces, wherein a first C-piece corresponds to the discrete heading of the vehicle, and the vehicle and the detected object are represented by convex polygons; decomposing the first C-piece into one or more cells representing free space by a processor; generating a C-piece adjacency list for the first C-piece by the processor, wherein two cells sharing a boundary line are adjacent, and vertices of interest are inserted along the boundary line; deriving a super-adjacency list for the C-space by the processor, wherein the super-adjacency list connects vertices of interest across the one or more C-pieces to form a super-adjacency graph at least partially based on a Durbins path; and navigating an optimal path by a planning circuit, wherein the optimal path is the shortest path from a starting attitude to a target attitude on the super-adjacency graph.
[0004] A non-transitory computer-readable storage medium includes at least one program for execution by at least one processor of a first device, the at least one program including instructions that, when executed by the at least one processor, perform the following method: sampling the environment at a discrete heading of a vehicle to generate a configuration space, i.e., a C-space, having one or more C-pieces, wherein a first C-piece corresponds to the discrete heading of the vehicle, and the vehicle and the detected object are represented by convex polygons; decomposing the first C-piece into one or more cells representing free space; generating a C-piece adjacency list for the first C-piece, wherein two cells sharing a boundary line are adjacent, and vertices of interest are inserted along the boundary line; deriving a super-adjacency list for the C-space, wherein the super-adjacency list connects vertices of interest across the one or more C-pieces to form a super-adjacency graph at least partially based on Durbins paths; and navigating an optimal path, wherein the optimal path is the shortest path from a starting attitude to a target attitude on the super-adjacency graph.
[0005] A vehicle includes: at least one sensor configured to detect the attitude and geometry of an object in an environment, wherein a start attitude and an end attitude of the vehicle are specified; at least one computer-readable medium storing computer-executable instructions; and at least one processor communicatively coupled to the at least one sensor and configured to execute the computer-executable instructions, the execution comprising: sampling the environment at discrete headings of the vehicle to generate a configuration space, i.e., a C-space, having one or more C-pieces, wherein a first C-piece corresponds to a discrete heading of the vehicle, and wherein the vehicle... The vehicle and the object are represented by convex polygons; the first C-slice is decomposed into one or more cells representing free space; a C-slice adjacency list is generated for the first C-slice, wherein two cells sharing a boundary line are adjacent, and vertices of interest are inserted along the boundary line; a super-adjacency list is derived for the C-space, wherein the super-adjacency list connects vertices of interest across the one or more C-slices to form a super-adjacency graph based at least in part on the Durbins path; and control circuitry is communicatively coupled to the at least one processor, wherein the control circuitry is configured to operate the vehicle from the start attitude to the end attitude based on the super-adjacency graph. Attached Figure Description
[0006] Figure 1 An example of an autonomous vehicle (AV) with autonomous capabilities is shown.
[0007] Figure 2 An example "cloud" computing environment is shown.
[0008] Figure 3The computer system is shown.
[0009] Figure 4 An example architecture for AV is shown.
[0010] Figure 5 Examples of inputs and outputs that can be used by a sensing system are shown.
[0011] Figure 6 An example of a LiDAR system is shown.
[0012] Figure 7 The LiDAR system in operation is shown.
[0013] Figure 8 The operation of the LiDAR system is shown in more detail.
[0014] Figure 9 A block diagram showing the relationship between the inputs and outputs of the planning system is presented.
[0015] Figure 10 The directed graph used in path planning is shown.
[0016] Figure 11 A block diagram of the control system's inputs and outputs is shown.
[0017] Figure 12 A block diagram of the controller's inputs, outputs, and components is shown.
[0018] Figure 13A It is a diagram of the vehicle's collision path.
[0019] Figure 13B It is a diagram of a collision-free navigation path for a vehicle.
[0020] Figure 14 This is a flowchart illustrating the process that enables the rapid generation of collision-free paths.
[0021] Figure 15 This is a flowchart that enables the processing of cell decomposition and vertex connection.
[0022] Figure 16 It is a diagram of a C-space with a set of C slices.
[0023] Figure 17A This is a diagram of a C-slice that has undergone post-processing via trapezoidal decomposition.
[0024] Figure 17B This is a diagram of a C-piece with adaptive attention vertex insertion.
[0025] Figure 18A This is a diagram of a superadjacency graph that uses a brute-force connection strategy.
[0026] Figure 18B This is a diagram of a superadjacency graph that uses a brute-force connection strategy other than the ball.
[0027] Figure 18C It is a diagram of a superadjacency graph that uses a strategy of connecting adjacent cells and brute-force adjacent slices.
[0028] Figure 18D It is a diagram of a super adjacency graph that uses adjacent units and brute-force inter-segment connection strategies.
[0029] Figure 18E This is a diagram of a superadjacency graph that uses a grid-like connection strategy.
[0030] Figure 19 This is a process flowchart that enables fast collision-free path generation by connecting C-pieces through unit decomposition. Detailed Implementation
[0031] In the following description, numerous specific details are set forth for purposes of explanation in order to provide a thorough understanding of the invention. However, it will be apparent that the invention may be practiced without these specific details. In other instances, well-known constructions and apparatuses are shown in block diagram form to avoid unnecessarily obscuring the invention.
[0032] In the accompanying drawings, for ease of description, a specific arrangement or order of schematic elements (such as those representing devices, modules, systems, instruction blocks, and data elements) is shown. However, those skilled in the art will understand that the specific order or arrangement of the schematic elements in the drawings is not intended to imply a requirement for a particular processing order or sequence, or a separation of processing procedures. Furthermore, the inclusion of a schematic element in the drawings is not intended to imply that the element is required in all embodiments, nor is it intended to imply that a feature represented by the element cannot be included in some embodiments or cannot be combined with other elements in some embodiments.
[0033] Furthermore, in the accompanying drawings, connection elements such as solid or dashed lines or arrows are used to illustrate connections, relationships, or associations between two or more other schematic elements. The absence of any such connection element does not imply that connections, relationships, or associations cannot exist. In other words, connections, relationships, or associations between some elements are not shown in the drawings so as not to obscure the content of this disclosure. Additionally, for ease of illustration, a single connection element is used to represent multiple connections, relationships, or associations between elements. For example, if a connection element represents communication of signals, data, or instructions, those skilled in the art will understand that such an element represents one or more signal paths (e.g., a bus) that may be necessary to affect the communication.
[0034] Reference will now be made in detail to embodiments, examples of which are illustrated in the accompanying drawings. Numerous specific details are set forth in the following detailed description in order to provide a thorough understanding of the various embodiments described. However, it will be apparent to those skilled in the art that the various embodiments described can be practiced without these specific details. In other instances, well-known methods, procedures, components, circuits, and networks have not been described in detail so as not to unnecessarily obscure aspects of the embodiments.
[0035] The features described below can each be used independently or in any combination with other features. However, any individual feature may not address all of the problems discussed above, or may only address one of the problems discussed above. Some of the problems discussed above may not be adequately solved by any single feature described herein. Although headings are provided, information relating to specific headings but not found in the sections bearing those headings can be found elsewhere in this specification. Embodiments are described herein based on the following summary:
[0036] 1. Overview
[0037] 2. System Overview
[0038] 3. AV Architecture
[0039] 4. AV Input
[0040] 5. Path planning
[0041] 6. AV Control
[0042] 7. Obstacle Avoidance
[0043] 8. C-space generation and element decomposition
[0044] 9. Graph Generation and Search
[0045] 10. Generating collision-free paths by connecting C-pieces via unit decomposition.
[0046] General Overview
[0047] A vehicle can navigate through an environment independently from a start attitude to an end attitude. For successful navigation through the environment, it is represented as a configuration space (C-space) with an arbitrary number of objects, represented by C-obstacles within the C-space. The C-space is a three-dimensional space parameterized by latitude (e.g., x), longitude (e.g., y), and heading (e.g., θ). Vehicles and objects are represented by convex polygons within the C-space. Each discrete heading corresponds to a slice (C-slice) in the C-space. Cell decomposition is performed on each C-slice, and vertices of interest are generated by strategically inserting vertices at the boundaries of free cells, at least partially based on the C-obstacle type, to obtain a C-slice adjacency list. From a set of C-slice adjacency lists...
[0048] Export the superadjacency list. Based on transformation detection and collision detection techniques, connect C-piece adjacencies.
[0049] From the vertices of interest in the list and the vertices of interest across C-slices, derive a superadjacency graph for C-space.
[0050] Some advantages of these techniques include a high success rate in finding feasible paths within a relatively short computation time. Discretizing the heading allows for the representation of vehicles and objects as convex polygons, compared to representations in higher-order spaces, which ultimately enables cell decomposition with reduced computational complexity. Furthermore, the derived adjacency list requires fewer vertices to generate collision-free paths between many objects compared to other algorithms, and the paths computed via this technique are smoother in terms of curvature accumulation.
[0051] System Overview
[0052] Figure 1 An example of an AV 100 with autonomous capabilities is shown.
[0053] As used herein, the term “autonomy” refers to a function, feature, or facility that enables a vehicle to operate partially or fully without real-time human intervention, including but not limited to full AV, high AV, and conditional AV.
[0054] As used in this article, an autonomous vehicle (AV) is a vehicle with autonomous capabilities.
[0055] As used in this article, "vehicle" includes any mode of transport for goods or people. Examples include cars, buses, trains, airplanes, drones, trucks, ships, vessels, submersibles, and spacecraft. Driverless cars are an example of vehicles.
[0056] As used herein, a “track” refers to a path or route that navigates an AV from a first spatiotemporal location to a second spatiotemporal location. In embodiments, the first spatiotemporal location is referred to as the initial or starting point, and the second spatiotemporal location is referred to as the destination, final location, target, target location, or target position. In some examples, a track consists of one or more segments (e.g., road segments), each segment consisting of one or more blocks (e.g., a lane or part of an intersection). In embodiments, spatiotemporal locations correspond to real-world locations. For example, a spatiotemporal location is a pick-up or drop-off point for people or goods to board or alight.
[0057] As used herein, “(one or more) sensors” includes one or more hardware components for detecting information relating to the environment surrounding the sensor. Some hardware components may include sensing components (e.g., image sensors, biometric sensors), transmission and / or receiving components (e.g., laser or radio frequency wave transmitters and receivers), electronic components (such as analog-to-digital converters), data storage devices (such as RAM and / or non-volatile memory), software or firmware components, and data processing components such as ASICs (Application-Specific Integrated Circuits), microprocessors, and / or microcontrollers.
[0058] As used herein, a “scene description” is a data structure (e.g., a list) or data stream that includes one or more classified or tagged objects detected by one or more sensors on an AV vehicle, or one or more classified or tagged objects provided by a source outside the AV.
[0059] As used in this article, "road" is a physical area that can be traversed by a vehicle and can correspond to a named passageway (e.g., city street, interstate highway, etc.) or an unnamed passageway (e.g., driveway in a house or office building, a section of a parking lot, a section of an vacant parking lot, a waste path in a rural area, etc.). Because some vehicles (e.g., four-wheel drive pickup trucks, SUVs, etc.) can traverse a variety of physical areas that are not particularly suitable for vehicle travel, "road" can be any physical area that has not been formally defined as a passageway by any municipality or other government or administrative agency.
[0060] As used herein, a “lane” is the portion of a road that can be traversed by vehicles. Lanes are sometimes identified based on lane markings. For example, a lane may correspond to most or all of the space between lane markings, or it may correspond to only a portion of the space between lane markings (e.g., less than 50%). For example, a road with lane markings spaced far apart may accommodate two or more vehicles between the markings, allowing one vehicle to overtake another without crossing the lane markings; therefore, this could be interpreted as a lane being narrower than the space between lane markings, or as having two lanes between the lane markings. Lanes can also be interpreted in the absence of lane markings. For example, a lane may be defined based on the physical characteristics of the environment (e.g., rocks and trees along a path in a rural area, or natural obstacles that should be avoided, for example, in underdeveloped areas). Lanes can also be interpreted independently of lane markings or physical characteristics. For example, a lane may be interpreted based on any unobstructed path in an area that would otherwise lack features that would be interpreted as lane boundaries. In the example scenario, an AV could interpret a lane as a lane traversing an unobstructed portion of a field or open space. In another example scenario, an AV can interpret lanes that pass through a wide road (e.g., wide enough for two or more lanes) without lane markings. In this scenario, an AV can communicate lane-related information to other AVs, allowing them to coordinate route planning using the same lane information.
[0061] The term “over-the-air (OTA) client” includes any AV, or any electronic device (e.g., computer, controller, IoT device, electronic control unit (ECU)) embedded in, coupled to or communicating with an AV.
[0062] The term "over-the-air (OTA) update" means any update, alteration, deletion, or addition to software, firmware, data, or configuration settings, or any combination thereof, delivered to an OTA client using proprietary and / or standardized wireless communication technologies, including but not limited to: cellular mobile communications (e.g., 2G, 3G, 4G, 5G), wireless local area networks (e.g., WiFi), and / or satellite internet.
[0063] The term "edge node" means one or more edge devices coupled to a network that provide a portal for communicating with AV and can communicate with other edge nodes and cloud-based computing platforms to schedule OTA updates and deliver OTA updates to OTA clients.
[0064] The term "edge device" refers to a device that implements an edge node and provides physical wireless access points (APs) to the core network of an enterprise or service provider (such as Verizon or AT&T). Examples of edge devices include, but are not limited to: computers, controllers, transmitters, routers, routing switches, integrated access devices (IADs), multiplexers, metropolitan area network (MAN) and wide area network (WAN) access devices.
[0065] "One or more" includes functions performed by a single element, functions performed by multiple elements, such as in a distributed manner, several functions performed by a single element, several functions performed by several elements, or any combination thereof.
[0066] It should also be understood that although the terms first, second, etc., are used in some instances to describe various elements, these elements should not be limited by these terms. These terms are used only to distinguish one element from another. For example, without departing from the scope of the various described embodiments, a first contact may be referred to as a second contact, and similarly, a second contact may be referred to as a first contact. Both the first contact and the second contact are contacts, but they are not the same contact.
[0067] The terminology used in the description of the various embodiments described herein is for the purpose of describing particular embodiments only and is not intended to be limiting. As used in the description of the various embodiments described and the appended claims, the singular forms “a,” “an,” and “the” are also intended to include the plural forms unless the context clearly indicates otherwise. It will also be understood that “and / or,” as used herein, refers to and includes any and all possible combinations of one or more of the related list items. It will also be understood that when the terms “comprising,” “including,” “possessing,” and / or “having” are used in this specification, they specifically indicate the presence of the stated features, integers, steps, operations, elements, and / or components, but do not exclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and / or groups thereof.
[0068] As used herein, depending on the context, the term "if" may optionally be understood as meaning "when" or "at that time" or "in response to being determined" or "in response to being detected." Similarly, depending on the context, the phrase "if determined" or "if [the stated condition or event] has been detected" may optionally be understood as meaning "when determined" or "in response to being determined" or "when [the stated condition or event] is detected" or "in response to being detected."
[0069] As used herein, an AV system refers to an AV and an array of hardware, software, stored data, and real-time generated data that support AV operation. In embodiments, the AV system is incorporated within an AV. In embodiments, the AV system is distributed across several locations. For example, some of the software of the AV system is similar to that described below. Figure 2 The cloud computing environment described is implemented in the cloud computing environment of 200.
[0070] Generally, this document describes technologies applicable to any vehicle with one or more autonomous capabilities, including fully automated vehicles (AV), highly automated vehicles (AV), and conditionally automated vehicles (AV), such as so-called Level 5, Level 4, and Level 3 vehicles, respectively (see SAE International Standard J3016: Classification and Definition of Terms Related to Automated Driving Systems for Motor Vehicles on Roads, the entire contents of which are incorporated herein by reference for further details on vehicle autonomy levels). The technologies described in this document are also applicable to partially automated vehicles (AV) and driver-assisted vehicles, such as so-called Level 2 and Level 1 vehicles (see SAE International Standard J3016: Classification and Definition of Terms Related to Automated Driving Systems for Motor Vehicles on Roads). In embodiments, one or more Level 1, Level 2, Level 3, Level 4, and Level 5 vehicle systems can automatically perform certain vehicle operations (e.g., steering, braking, and map usage) under certain operating conditions based on the processing of sensor inputs. The technologies described in this document can benefit vehicles of any level, ranging from fully automated vehicles to human-operated vehicles.
[0071] AVs have advantages over vehicles that require human drivers. One advantage is safety. For example, in 2016, the U.S. experienced 6 million car accidents, 2.4 million injuries, 40,000 deaths, and 13 million vehicle collisions, with an estimated social cost of over $910 billion. From 1965 to 2015, the number of traffic fatalities per 100 million miles driven in the U.S. decreased from about 6 to about 1, partly due to additional safety features deployed in vehicles. For example, an extra half-second of warning associated with an impending collision is believed to mitigate 60% of front and rear collisions. However, passive safety features (such as seat belts and airbags) may have reached their limits in improving these figures. Therefore, active safety measures, such as automated vehicle controls, are a possible next step in improving these statistics. Since human drivers are considered to be responsible for serious pre-collision events in 95% of collisions, autonomous driving systems could potentially achieve better safety outcomes by: identifying and avoiding emergencies more reliably than humans; making better decisions, obeying traffic regulations better than humans, and predicting future events better than humans; and controlling vehicles more reliably than humans.
[0072] refer to Figure 1 The AV system 120 enables the vehicle 100 to operate along a trajectory 198, traversing the environment 190 to the destination 199 (sometimes referred to as the final location), while avoiding objects (e.g., natural obstacles 191, vehicles 193, pedestrians 192, cyclists and other obstacles) and complying with road rules (e.g., operating rules or driving preferences).
[0073] In an embodiment, the AV system 120 includes means 101 for receiving and operating operation commands from and on a computer processor 146. The term "operation command" is used to refer to executable instructions (or a set of instructions) that cause a vehicle to perform actions (e.g., driving maneuvers). Operation commands may, without limitation, include instructions for causing the vehicle to begin moving forward, stop moving forward, begin moving backward, stop moving backward, accelerate, decelerate, make a left turn, and make a right turn. In an embodiment, the computer processor 146 is referenced below. Figure 3 The processor 304 described is similar. Examples of the device 101 include a steering controller 102, a brake 103, a gear, an accelerator pedal or other acceleration control mechanism, a windshield wiper, a side door lock, a window controller, and a turn indicator.
[0074] In an embodiment, the AV system 120 includes sensors 121 for measuring or inferring attributes of the state or condition of the vehicle 100, such as the AV's position, linear velocity and angular velocity, linear acceleration and angular acceleration, and heading (e.g., the orientation of the front end of the vehicle 100). Examples of sensors 121 are GPS, inertial measurement units (IMUs) that measure both linear acceleration and angular rate of the vehicle, wheel rate sensors for measuring or estimating wheel slip ratio, wheel braking pressure or braking torque sensors, engine torque or wheel torque sensors, and steering angle and angular rate sensors.
[0075] In an embodiment, sensor 121 also includes sensors for sensing or measuring properties of the AV's environment. Examples include a monocular or stereo camera 122 with visible, infrared, or thermal (or both) spectra, a LiDAR 123, a RADAR, an ultrasonic sensor, a time-of-flight (TOF) depth sensor, a rate sensor, a temperature sensor, a humidity sensor, and a precipitation sensor.
[0076] In one embodiment, the AV system 120 includes a data storage unit 142 and a memory 144 for storing machine instructions associated with a computer processor 146 or data collected by the sensor 121. In another embodiment, the data storage unit 142 is associated with the following... Figure 3The described ROM 308 or storage device 310 is similar. In this embodiment, memory 144 is similar to main memory 306 described below. In this embodiment, data storage unit 142 and memory 144 store historical, real-time, and / or predictive information about environment 190. In this embodiment, the stored information includes maps, driving performance, traffic congestion updates, or weather conditions. In this embodiment, data related to environment 190 is transmitted from remote database 134 to vehicle 100 via a communication channel.
[0077] In an embodiment, AV system 120 includes communication devices 140 for communicating measured or inferred attributes of the state and conditions of other vehicles (such as position, linear velocity and angular velocity, linear acceleration and angular acceleration, and linear heading and angular heading) to vehicle 100. These devices include vehicle-to-vehicle (V2V) and vehicle-to-infrastructure (V2I) communication devices, as well as devices for wireless communication via point-to-point or ad hoc networks, or both. In an embodiment, communication device 140 communicates across the electromagnetic spectrum (including radio and optical communications) or other media (e.g., air and acoustic media). Combinations of vehicle-to-vehicle (V2V), vehicle-to-infrastructure (V2I) communication (and in some embodiments, one or more other types of communication) are sometimes referred to as vehicle-to-all-things (V2X) communication. V2X communication typically conforms to one or more communication standards for communication with AVs, between AVs, and between AVs.
[0078] In an embodiment, the communication device 140 includes a communication interface. For example, this may be a wired, wireless, WiMAX, Wi-Fi, Bluetooth, satellite, cellular, optical, near-field, infrared, or radio interface. The communication interface transmits data from a remote database 134 to the AV system 120. In an embodiment, the remote database 134 is embedded in, for example... Figure 2 In the cloud computing environment 200 described herein, communication device 140 transmits data collected from sensor 121 or other data related to the operation of vehicle 100 to remote database 134. In some embodiments, communication device 140 transmits information related to teleoperation to vehicle 100. In some embodiments, vehicle 100 communicates with other remote (e.g., "cloud") servers 136.
[0079] In this embodiment, the remote database 134 also stores and transmits digital data (e.g., data such as road and street locations). Such data is stored in memory 144 on the vehicle 100 or transmitted from the remote database 134 to the vehicle 100 via a communication channel.
[0080] In one embodiment, the remote database 134 stores and transmits historical information (e.g., rate and acceleration distribution) related to driving attributes of vehicles that previously traveled along trajectory 198 at similar times of day. In one implementation, such data may be stored in memory 144 on vehicle 100 or transmitted from the remote database 134 to vehicle 100 via a communication channel.
[0081] The computer processor 146 located on the vehicle 100 generates control actions in an algorithmic manner based on both real-time sensor data and prior information, allowing the AV system 120 to perform its autonomous driving capabilities.
[0082] In one embodiment, the AV system 120 includes a computer peripheral device 132 coupled to a computer processor 146 for providing information and alerts to a user of the vehicle 100 (e.g., a passenger or a remote user) and receiving input from that user. In another embodiment, the peripheral device 132 is similar to the one described in the following reference. Figure 3 The discussed display 312, input device 314, and cursor controller 316 are coupled wirelessly or wiredly. Any two or more interface devices can be integrated into a single device.
[0083] In one embodiment, the AV system 120 receives and enforces a privacy level for an occupant, such as one specified by the occupant or stored in a profile associated with the occupant. The occupant's privacy level determines how access is permitted to specific occupant-related information (e.g., occupant comfort data, biometric data, etc.) stored in the occupant profile and / or stored on cloud server 136 and associated with the occupant profile. In one embodiment, the privacy level specifies specific occupant-related information that is deleted once the ride is complete. In another embodiment, the privacy level specifies specific occupant-related information and identifies one or more entities authorized to access that information. Examples of the specified entities authorized to access the information may include other AV systems, third-party AV systems, or any entity that could potentially access the information.
[0084] An occupant's privacy level can be specified at one or more granular levels. In one embodiment, the privacy level identifies specific information to be stored or shared. In another embodiment, the privacy level applies to all information associated with the occupant, allowing the occupant to specify that her personal information should not be stored or shared. The designation of entities authorized to access specific information can also be specified at various granular levels. The various sets of entities authorized to access specific information may include, for example, other AVs, cloud server 136, specific third-party AV systems, etc.
[0085] In an embodiment, AV system 120 or cloud server 136 determines whether AV 100 or another entity can access certain information associated with an occupant. For example, a third-party AV system attempting to access occupant input related to a specific time and place must, for example, obtain authorization from AV system 120 or cloud server 136 to access occupant-related information. For example, AV system 120 uses a specified privacy level for the occupant to determine whether location- and time-related occupant input can be presented to a third-party AV system, AV 100, or another AV. This allows the occupant's privacy level to specify which other entities are allowed to receive data related to the occupant's actions or other data associated with the occupant.
[0086] Figure 2 This illustrates an example "cloud" computing environment. Cloud computing is a service delivery model that enables convenient, on-demand access over a network to a shared pool of configurable computing resources, such as networks, network bandwidth, servers, processing power, memory, storage, applications, virtual machines, and services. In a typical cloud computing system, one or more large cloud data centers house the machines used to deliver the services provided by the cloud. Now refer to... Figure 2 The cloud computing environment 200 includes cloud data centers 204a, 204b, and 204c interconnected via cloud 202. Data centers 204a, 204b, and 204c provide cloud computing services to computer systems 206a, 206b, 206c, 206d, 206e, and 206f connected to cloud 202.
[0087] A cloud computing environment 200 includes one or more cloud data centers. Generally, a cloud data center (e.g.) Figure 2 The cloud data center 204a shown refers to the cloud (e.g., Figure 2 The physical arrangement of servers in cloud 202 (or a specific portion of the cloud) is illustrated. For example, servers are physically arranged in rooms, groups, rows, and racks within a cloud data center. A cloud data center has one or more regions, each containing one or more server rooms. Each room has one or more rows of servers, and each row includes one or more racks. Each rack includes one or more individual server nodes. In some implementations, servers in regions, rooms, racks, and / or rows are arranged into groups based on the physical infrastructure requirements of the data center facility, including power, energy, heat, heat sources, and / or other requirements. In this embodiment, server nodes are similar to... Figure 3 The computer system described herein. Data center 204a has many computing systems distributed across many racks.
[0088] Cloud 202 includes cloud data centers 204a, 204b, and 204c, and networks and network resources (e.g., network devices, nodes, routers, switches, and network cables) for connecting cloud data centers 204a, 204b, and 204c and facilitating access to cloud computing services by computing systems 206a-f. In embodiments, the network represents any combination of one or more local area networks, wide area networks, or internetworks coupled by wired or wireless links deployed using terrestrial or satellite connections. Data exchanged over the network is transmitted using various network layer protocols, such as Internet Protocol (IP), Multiprotocol Label Switching (MPLS), Asynchronous Transfer Mode (ATM), Frame Relay, etc. Furthermore, in embodiments where the network represents a combination of multiple subnetworks, different network layer protocols are used on each underlying subnetwork. In some embodiments, the network represents one or more interconnected internetworks (such as the public Internet).
[0089] Computing systems 206a-f or cloud computing service consumers connect to the cloud 202 via network links and network adapters. In embodiments, computing systems 206a-f are implemented as various computing devices, such as servers, desktops, laptops, tablets, smartphones, Internet of Things (IoT) devices, AVs (including cars, drones, space shuttles, trains, buses, etc.), and consumer electronics. In embodiments, computing systems 206a-f are implemented in other systems or as part of other systems.
[0090] Figure 3 A computer system 300 is illustrated. In an implementation, the computer system 300 is a dedicated computing device. The dedicated computing device is hardwired to perform the technology, or includes a digital electronic device such as one or more application-specific integrated circuits (ASICs) or field-programmable gate arrays (FPGAs) that is persistently programmed to perform the technology, or may include one or more general-purpose hardware processors programmed to perform the technology according to program instructions in firmware, memory, other memory, or a combination thereof. Such a dedicated computing device may also combine custom hardwired logic, ASICs, or FPGAs with custom programming to perform the technology. In various embodiments, the dedicated computing device is a desktop computer system, a portable computer system, a handheld device, a network device, or any other device that includes hardwired and / or program logic to implement the technology.
[0091] In an embodiment, computer system 300 includes a bus 302 or other communication mechanism for communicating information, and a processor 304 coupled to the bus 302 to process information. Processor 304 is, for example, a general-purpose microprocessor. Computer system 300 also includes main memory 306, such as random access memory (RAM) or other dynamic storage device, coupled to the bus 302 to store information and instructions executed by processor 304. In one implementation, main memory 306 is used to store temporary variables or other intermediate information during the execution of instructions to be executed by processor 304. When such instructions are stored in a non-transitory storage medium accessible to processor 304, computer system 300 becomes a dedicated machine customized to perform the operations specified in the instructions.
[0092] In an embodiment, the computer system 300 further includes a read-only memory (ROM) 308 or other static storage device coupled to the bus 302 for storing static information and instructions of the processor 304. A storage device 310, such as a disk, optical disk, solid-state drive, or three-dimensional cross-point memory, is provided and coupled to the bus 302 to store information and instructions.
[0093] In this embodiment, computer system 300 is coupled via bus 302 to display 312, such as a cathode ray tube (CRT), liquid crystal display (LCD), plasma display, light-emitting diode (LED) display, or organic light-emitting diode (OLED) display for displaying information to a computer user. Input device 314, including alphanumeric keys and other keys, is coupled to bus 302 for communicating information and command selection to processor 304. Another type of user input device is a cursor controller 316, such as a mouse, trackball, touchscreen, or cursor arrow keys, for communicating directional information and command selection to processor 304 and for controlling cursor movement on display 312. This input device typically has two degrees of freedom on two axes (a first axis (e.g., x-axis) and a second axis (e.g., y-axis)), which allow the device to specify a position in a plane.
[0094] According to one embodiment, the techniques described herein are performed by a computer system 300 in response to a processor 304 executing one or more sequences of one or more instructions contained in main memory 306. Such instructions are read into main memory 306 from another storage medium, such as storage device 310. Execution of the sequence of instructions contained in main memory 306 causes the processor 304 to perform the process steps described herein. In alternative embodiments, hardwired circuitry is used instead of or in combination with software instructions.
[0095] As used herein, the term "storage medium" refers to any non-transitory medium that stores data and / or instructions that cause a machine to operate in a particular manner. Such storage media include non-volatile media and / or volatile media. Non-volatile media include, for example, optical discs, magnetic disks, solid-state drives, or three-dimensional cross-dot memory such as storage device 310. Volatile media include dynamic memory, such as main memory 306. Common forms of storage media include, for example, floppy disks, floppy disks, hard disks, solid-state drives, magnetic tape or any other magnetic data storage media, CD-ROMs, any other optical data storage media, any physical media with perforations, RAM, PROMs and EPROMs, FLASH-EPROMs, NV-RAMs, or any other memory chips or memory cartridges.
[0096] Storage media differ from transmission media, but can be used in conjunction with them. Transmission media participate in the information transmission between storage media. For example, transmission media include coaxial cables, copper wires, and optical fibers, which include wires with a bus 302. Transmission media can also take the form of sound waves or light waves, such as those generated during radio wave and infrared data communication.
[0097] In embodiments, various forms of media involve carrying one or more sequences of one or more instructions to processor 304 for execution. For example, the instructions may initially be executed on a disk or solid-state drive of a remote computer. The remote computer loads the instructions into its dynamic memory and transmits them over a telephone line using a modem. A local modem of computer system 300 receives the data over the telephone line and converts the data into an infrared signal using an infrared transmitter. An infrared detector receives the data carried in the infrared signal, and appropriate circuitry places the data on bus 302. Bus 302 carries the data to main memory 306, from which processor 304 retrieves and executes the instructions. The instructions received by main memory 306 may optionally be stored on storage device 310 before or after execution by processor 304.
[0098] Computer system 300 also includes a communication interface 318 coupled to bus 302. Communication interface 318 provides bidirectional data communication coupled to network link 320 connected to local network 322. For example, communication interface 318 is an Integrated Services Digital Network (ISDN) card, a cable modem, a satellite modem, or a modem used to provide data communication connectivity with a corresponding type of telephone line. As another example, communication interface 318 is a Local Area Network (LAN) card used to provide data communication connectivity with a compatible LAN. In some implementations, a wireless link is also implemented. In any such implementation, communication interface 318 transmits and receives electrical, electromagnetic, or optical signals carrying digital data streams representing various types of information.
[0099] Network link 320 typically provides data communication to other data devices via one or more networks. For example, network link 320 provides connectivity to host computer 324 or to a cloud data center or device operated by Internet Service Provider (ISP) 326 via local network 322. ISP 326, in turn, provides data communication services via a worldwide packet data communication network now commonly referred to as the "Internet" 328. Both local network 322 and Internet 328 use electrical, electromagnetic, or optical signals that carry digital data streams. Signals through various networks and signals on network link 320 via communication interface 318 are example forms of transmission media carrying digital data entering or leaving computer system 300. In embodiments, network 320 includes the aforementioned cloud 202 or a portion of cloud 202.
[0100] Computer system 300 sends messages and receives data including program code through one or more networks, network links 320, and communication interfaces 318. In an embodiment, computer system 300 receives code for processing. The received code is executed by processor 304 upon receipt and / or stored in storage device 310, or in other non-volatile storage devices for later execution.
[0101] AV architecture
[0102] Figure 4 Showing for AV (e.g., Figure 1 The example architecture 400 of the vehicle 100 shown is illustrated. Architecture 400 includes a sensing system 402 (sometimes referred to as a sensing circuit), a planning system 404 (sometimes referred to as a planning circuit), a control system 406 (sometimes referred to as a control circuit), a positioning system 408 (sometimes referred to as a positioning circuit), and a database system 410 (sometimes referred to as a database circuit). Each system plays a role in the operation of the vehicle 100. Commonly, systems 402, 404, 406, 408, and 410 can be... Figure 1 This is a portion of the AV system 120 shown. In some embodiments, any of the systems 402, 404, 406, 408, and 410 is a combination of computer software (e.g., executable code stored on a computer-readable medium) and computer hardware (e.g., one or more microprocessors, microcontrollers, application-specific integrated circuits (ASICs), hardware memory devices, other types of integrated circuits, other types of computer hardware, or any or all combinations of these hardware). The various systems in systems 402, 404, 406, 408, and 410 are sometimes referred to as processing circuitry (e.g., computer hardware, computer software, or a combination of both). Any or all combinations of systems 402, 404, 406, 408, and 410 are also examples of processing circuitry.
[0103] In use, the planning system 404 receives data representing the destination 412 and determines data representing the trajectory 414 (sometimes called a route) that the vehicle 100 can travel to reach (e.g., arrive at) the destination 412. In order for the planning system 404 to determine the data representing the trajectory 414, the planning system 404 receives data from the sensing system 402, the positioning system 408, and the database system 410.
[0104] The sensing system 402 uses, for example, as Figure 1 One or more sensors 121 are shown to identify nearby physical objects. The objects are classified (e.g., grouped into types such as pedestrians, bicycles, cars, traffic signs, etc.), and a scene description including the classified objects 416 is provided to the planning system 404.
[0105] The planning system 404 also receives data representing the location 418 of the AV from the positioning system 408. The positioning system 408 determines the location of the AV by using data from sensor 121 and data (e.g., geographic data) from database system 410 to calculate the location. For example, the positioning system 408 uses data from GNSS (Global Navigation Satellite System) sensors and geographic data to calculate the longitude and latitude of the AV. In embodiments, the data used by the positioning system 408 includes high-precision maps with lane geometry properties, maps describing road network connectivity properties, maps describing lane physical properties (such as traffic speed, traffic volume, number of vehicle and bicycle lanes, lane width, lane traffic direction, or lane marking type and location, or combinations thereof), and maps describing the spatial locations of road features (such as intersections, traffic signs, or various types of other traffic signals). In embodiments, the high-precision map is constructed by adding data to a low-precision map via automatic or manual annotation.
[0106] The control system 406 receives data representing trajectory 414 and data representing AV position 418, and operates the AV control functions 420a-420c (e.g., steering, throttle, braking, ignition) in a manner that will cause the vehicle 100 to travel along trajectory 414 to reach destination 412. For example, if trajectory 414 includes a left turn, the control system 406 will operate the control functions 420a-420c in such a way that the steering angle of the steering function will cause the vehicle 100 to turn left, and the throttle and brake will cause the vehicle 100 to stop and wait for passing pedestrians or vehicles before making the turn.
[0107] AV input
[0108] Figure 5 The sensing system 402 is shown. Figure 4The inputs used are 502a-502d (e.g., Figure 1 Examples of sensor 121 and outputs 504a-504d (e.g., sensor data) are shown. One input 502a is a LiDAR (light detection and ranging) system (e.g., Figure 1 The LiDAR system shown is 123. LiDAR is a technique that uses light (e.g., a beam of light such as infrared light) to obtain data related to physical objects in its line of sight. The LiDAR system produces LiDAR data as output 504a. For example, LiDAR data is a collection of 3D or 2D points (also called point clouds) used to construct a representation of environment 190.
[0109] Another input 502b is a RADAR (radar) system. RADAR is a technology that uses radio waves to obtain data related to nearby physical objects. RADAR can obtain data related to objects that are not within the line of sight of a LiDAR system. The RADAR system generates RADAR data as output 504b. For example, RADAR data is one or more radio frequency electromagnetic signals used to construct a representation of environment 190.
[0110] Another input 502c is a camera system. The camera system uses one or more cameras (e.g., a digital camera using a light sensor such as a charge-coupled device [CCD]) to acquire information about nearby physical objects. The camera system produces camera data as output 504c. Camera data is typically in the form of image data (e.g., data in image data formats such as RAW, JPEG, PNG, etc.). In some examples, the camera system has multiple independent cameras, for example, for stereoscopic imaging (stereoscopic vision), which enables the camera system to perceive depth. Although the objects perceived by the camera system are described here as "nearby," this is relative to the AV (view of objects). In some embodiments, the camera system is configured to "see" distant objects (e.g., objects as far as 1 kilometer or more in front of the AV). Therefore, in some embodiments, the camera system has features such as sensors and lenses optimized for perceiving distant objects.
[0111] Another input 502d is a Traffic Light Detection (TLD) system. The TLD system uses one or more cameras to acquire information related to traffic lights, street signs, and other physical objects that provide visual navigation information. The TLD system produces TLD data as output 504d. TLD data is often in the form of image data (e.g., data in image data formats such as RAW, JPEG, PNG, etc.). The TLD system differs from systems that include cameras in that it uses cameras with a wide field of view (e.g., using a wide-angle lens or fisheye lens) to acquire information related to as many physical objects as possible that provide visual navigation information, enabling the vehicle 100 to access all relevant navigation information provided by these objects. For example, the TLD system has a field of view of approximately 120 degrees or greater.
[0112] In some embodiments, sensor fusion technology is used to combine outputs 504a-504d. Thus, individual outputs 504a-504d are provided to other systems of the vehicle 100 (e.g., to systems such as...). Figure 4 The planning system 404 shown may provide combined outputs to other systems in the form of single or multiple combined outputs of the same type (e.g., using the same combination technique or combining the same outputs or both) or single or multiple combined outputs of different types (e.g., using different individual combination techniques or combining different individual outputs or both). In some embodiments, an early fusion technique is used. The early fusion technique is characterized by combining the outputs before applying one or more data processing steps to the combined outputs. In some embodiments, a late fusion technique is used. The late fusion technique is characterized by combining the outputs after applying one or more data processing steps to the individual outputs.
[0113] Figure 6 An example of a LiDAR system 602 is shown (e.g., Figure 5The input 502a is shown. The LiDAR system 602 emits light 604a-604c from a emitter 606 (e.g., a laser emitter). The light emitted by the LiDAR system is typically not in the visible spectrum; for example, infrared light is often used. Some of the emitted light 604b encounters a physical object 608 (e.g., a vehicle) and is reflected back to the LiDAR system 602. (The light emitted from the LiDAR system typically does not penetrate the physical object, e.g., a solid physical object.) The LiDAR system 602 also has one or more photodetectors 610 for detecting the reflected light. In an embodiment, one or more data processing systems associated with the LiDAR system generate an image 612 representing the field of view 614 of the LiDAR system. Image 612 includes information representing the boundary 616 of the physical object 608. Thus, image 612 is used to determine the boundary 616 of one or more physical objects near the AV.
[0114] Figure 7 The diagram illustrates a LiDAR system 602 in operation. In the scenario shown, the vehicle 100 receives both a camera system output 504c in the form of an image 702 and a LiDAR system output 504a in the form of LiDAR data points 704. In use, the vehicle 100's data processing system compares the image 702 with the data points 704. Specifically, physical objects 706 identified in the image 702 are also identified in the data points 704. Thus, the vehicle 100 perceives the boundaries of physical objects based on the contours and density of the data points 704.
[0115] Figure 8 Additional details of the operation of the LiDAR system 602 are shown. As described above, the vehicle 100 detects the boundaries of physical objects based on the characteristics of the data points detected by the LiDAR system 602. Figure 8 As shown, a flat object, such as ground 802, will reflect light 804a-804d emitted from LiDAR system 602 in a consistent manner. In other words, because LiDAR system 602 emits light at a consistent interval, ground 802 will reflect light back to LiDAR system 602 at the same consistent interval. When vehicle 100 travels on ground 802, LiDAR system 602 will continue to detect light reflected by the next effective surface point 806 if nothing obstructs its path. However, if object 808 obstructs its path, the light 804e-804f emitted by LiDAR system 602 will be reflected from points 810a-810b in a manner inconsistent with the expected consistency. Based on this information, vehicle 100 can determine the presence of object 808.
[0116] Path planning
[0117] Figure 9 Show (for example, as) Figure 4 The diagram 900 illustrates the relationship between the inputs and outputs of the planning system 404. Generally, the output of the planning system 404 is a route 902 from a starting point 904 (e.g., a source location or initial location) to an ending point 906 (e.g., a destination or final location). Route 902 is typically defined by one or more road segments. For example, a road segment refers to a distance to be traveled over at least a portion of a street, road, highway, driveway, or other physical area suitable for vehicle travel. In some examples, such as if the vehicle 100 is an off-road capable vehicle such as a four-wheel drive (4WD) or all-wheel drive (AWD) car, SUV, or pickup truck, route 902 includes “off-road” segments such as unpaved paths or open fields.
[0118] In addition to route 902, the planning system also outputs lane-level route planning data 908. Lane-level route planning data 908 is used to traverse a segment of route 902 at a specific time based on the conditions of that segment. For example, if route 902 comprises a multi-lane highway, then lane-level route planning data 908 includes trajectory planning data 910, which vehicle 100 can use to select a lane from among the multiple lanes based on factors such as whether an exit is nearby, whether other vehicles are present in one or more of the multiple lanes, or other factors that change over a period of minutes or less. Similarly, in some implementations, lane-level route planning data 908 includes a speed constraint 912 specific to a segment of route 902. For example, if the segment includes pedestrians or unexpected traffic, speed constraint 912 can limit vehicle 100 to a slower speed than expected, such as a speed based on speed limit data for that segment.
[0119] In an embodiment, the inputs to the planning system 404 include (e.g., from...) Figure 4 The database system 410 shown contains database data 914 and current location data 916 (for example, Figure 4 The AV position shown is 418), (for example, for use with Figure 4 The destination data 918 and object data 920 shown for destination 412 (e.g., as shown) Figure 4The perception system 402 shown perceives classified objects 416. In some embodiments, database data 914 includes rules used during planning. The rules are specified using a formal language (e.g., Boolean logic). In any given situation encountered by vehicle 100, at least some of these rules will apply to that situation. A rule applies to a given situation if it has conditions satisfied based on information available to vehicle 100 (e.g., information about the surrounding environment). Rules can have priorities. For example, a rule "move to the leftmost lane if the road is a highway" can have a lower priority than "move to the rightmost lane if the exit is within a mile."
[0120] Figure 10 This is illustrated in path planning (e.g., by planning system 404). Figure 4 The directed graph used is 1000. Generally speaking, such as... Figure 10 The directed graph 1000 shown is used to determine the path between any starting point 1002 and ending point 1004. In the real world, the distance separating the starting point 1002 and the ending point 1004 may be relatively large (e.g., in two different urban areas) or relatively small (e.g., two intersections adjacent to a city block or two lanes of a multi-lane road).
[0121] In an embodiment, the directed graph 1000 has nodes 1006a-1006d representing different locations that a vehicle 100 may occupy between a starting point 1002 and an ending point 1004. In some examples, for instance, when the starting point 1002 and the ending point 1004 represent different urban areas, nodes 1006a-1006d represent road segments. In some examples, for instance, when the starting point 1002 and the ending point 1004 represent different locations on the same road, nodes 1006a-1006d represent different locations on that road. Thus, the directed graph 1000 includes information at different levels of granularity. In an embodiment, the directed graph with higher granularity is also a subgraph of another directed graph with a larger scale. For example, most of the information in a directed graph where the starting point 1002 and the ending point 1004 are far apart (e.g., many miles away) is at a low granularity, and the directed graph is based on stored data, but the directed graph also includes some high-granularity information for representing a portion of the physical location in the field of view of the vehicle 100.
[0122] Nodes 1006a-1006d are distinct from objects 1008a-1008b that cannot overlap with nodes. In an embodiment, at a low granularity, objects 1008a-1008b represent areas that vehicles cannot traverse, such as areas without streets or roads. At a high granularity, objects 1008a-1008b represent physical objects within the field of view of vehicle 100, such as other vehicles, pedestrians, or other entities with which vehicle 100 cannot share physical space. In an embodiment, some or all of objects 1008a-1008b are static objects (e.g., objects that do not change position, such as streetlights or utility poles) or dynamic objects (e.g., objects capable of changing position, such as pedestrians or other cars).
[0123] Nodes 1006a-1006d are connected by edges 1010a-1010c. If two nodes 1006a-1006b are connected by edge 1010a, then vehicle 100 can travel between one node 1006a and the other node 1006b, for example, without having to travel to an intermediate node before reaching the other node 1006b. (When it is mentioned that vehicle 100 travels between nodes, it means that vehicle 100 travels between two physical locations represented by the respective nodes.) Edges 1010a-1010c are typically bidirectional, meaning that vehicle 100 can travel from a first node to a second node, or from a second node to a first node. In an embodiment, edges 1010a-1010c are unidirectional, meaning that vehicle 100 can travel from a first node to a second node, but not from a second node to a first node. When edge 1010a-1010c represents, for example, a one-way street, a single lane of a street, road or highway, or other features that can only be traversed in one direction due to legal or physical constraints, edge 1010a-1010c is one-way.
[0124] In an embodiment, the planning system 404 uses a directed graph 1000 to identify a path 1012 consisting of nodes and edges between a start point 1002 and an end point 1004.
[0125] Edges 1010a-1010c have associated costs 1014a-1014b. Costs 1014a-1014b represent the resources that would be spent if vehicle 100 selected that edge. A typical resource is time. For example, if the physical distance represented by one edge 1010a is twice the physical distance represented by another edge 1010b, then the associated cost 1014a of the first edge 1010a can be twice the associated cost 1014b of the second edge 1010b. Other factors affecting time include anticipated traffic, the number of intersections, speed limits, etc. Another typical resource is fuel economy. The two edges 1010a-1010b can represent the same physical distance, but due to factors such as road conditions and anticipated weather, one edge 1010a may require more fuel than the other edge 1010b.
[0126] When the planning system 404 identifies the path 1012 between the starting point 1002 and the ending point 1004, the planning system 404 typically selects the path that is optimized for cost, such as the path that has the minimum total cost when the individual costs of the edges are added together.
[0127] AV control
[0128] Figure 11 Show (for example, as) Figure 4 The diagram shows a block diagram 1100 of the inputs and outputs of the control system 406. The control system operates according to a controller 1102, which includes, for example, one or more processors similar to processor 304 (e.g., one or more computer processors such as a microprocessor or microcontroller or both); short-term and / or long-term data storage devices similar to main memory 306, ROM 308 and storage device 310 (e.g., memory, random access memory or flash memory or both); and instructions stored in the memory that, when executed (e.g. by one or more processors), perform the operation of controller 1102.
[0129] In one embodiment, controller 1102 receives data representing a desired output 1104. The desired output 1104 typically includes speed, such as rate and heading. The desired output 1104 may be based, for example, from (e.g., as...) Figure 4The data received by the planning system 404 (as shown) is used as follows. Based on the desired output 1104, the controller 1102 generates data that can be used as throttle input 1106 and steering input 1108. Throttle input 1106 indicates, for example, engaging the throttle of the vehicle 100 (e.g., acceleration control) to achieve the magnitude of the desired output 1104 by engaging the steering pedal or another throttle control. In some examples, throttle input 1106 also includes data that can be used to engage the brakes of the vehicle 100 (e.g., deceleration control). Steering input 1108 indicates the steering angle, such as the steering control of the AV (e.g., steering wheel, steering angle actuator, or other function for controlling the steering angle), which should be positioned to achieve the desired output 1104.
[0130] In one embodiment, controller 1102 receives feedback used when adjusting inputs provided to the throttle and steering. For example, if vehicle 100 encounters an obstacle 1110 such as a hill, the measured rate 1112 of vehicle 100 drops below the desired output rate. In one embodiment, any measured output 1114 is provided to controller 1102 such that necessary adjustments are made, for example, based on the difference 1113 between the measured rate and the desired output. The measured output 1114 includes measured position 1116, measured speed 1118 (including rate and heading), measured acceleration 1120, and other sensor-measurable outputs of vehicle 100. In one embodiment, the current steering angle 1124 is provided as a measured output.
[0131] In one embodiment, information related to interference 1110 is detected in advance, for example, by a sensor such as a camera or LiDAR sensor, and this information is provided to a predictive feedback system 1122. The predictive feedback system 1122 then provides information that the controller 1102 can use to make appropriate adjustments. For example, if the vehicle 100's sensors detect ("see") a hill, the controller 1102 can use this information to prepare to engage the throttle at an appropriate time to avoid significant deceleration.
[0132] Figure 12 A block diagram 1200 shows the inputs, outputs, and components of controller 1102. Controller 1102 has a rate analyzer 1202 that influences the operation of throttle / brake controller 1204. For example, the rate analyzer 1202 instructs throttle / brake controller 1204 to accelerate or decelerate using throttle / brake 1206 based on feedback received by, for example, controller 1102 and processed by the rate analyzer 1202.
[0133] The controller 1102 also has a lateral tracking controller 1208 that affects the operation of the steering wheel controller 1210. For example, the lateral tracking controller 1208 instructs the steering wheel controller 1210 to adjust the position of the steering angle actuator 1212 based on feedback received by the controller 1102 and processed by the lateral tracking controller 1208.
[0134] Controller 1102 receives several inputs for determining how to control the throttle / brake 1206 and the steering angle actuator 1212. Planning system 404 provides controller 1102 with information, for example, to select the heading of vehicle 100 at the start of operation and to determine which road segment vehicle 100 will cross when it reaches an intersection. Positioning system 408 provides controller 1102 with information describing the current location of vehicle 100, for example, so that controller 1102 can determine whether vehicle 100 is at the expected location based on the positive control of the throttle / brake 1206 and steering angle actuator 1212. In an embodiment, controller 1102 receives information from other inputs 1214, such as information received from a database, computer network, etc.
[0135] Obstacle Avoidance
[0136] Figure 13A This is an illustration of the vehicle on the collision path 1300A. Vehicle 1302 (e.g., Figure 1 The vehicle 100 can be an autonomous vehicle and is shown traveling along path 1304. For ease of description, the path is drawn along the center of the traffic lane. However, the path can appear along any physical area that the vehicle can traverse, and can correspond to named lanes (e.g., city streets, interstate highways, etc.) or unnamed lanes (e.g., driveways in houses or office buildings, sections of parking lots, sections of vacant parking lots, waste paths in rural areas, etc.). Therefore, the traffic lanes shown are for interpretation only and should not be considered limiting.
[0137] exist Figure 13A In the example, the location of object 1306 makes a continuous route along path 1304 infeasible. Object 1306 (e.g., Figure 1 Natural obstacles (191, vehicles 193, pedestrians 192, cyclists and other obstacles) such as those mentioned above Figure 4 The sensing circuit 402 shown detects the object 1306. Due to the location of the object 1306, path 1304 is an obstructed path. A collision-free path 1308 is also shown. Figure 13A In the example, in the scenario where vehicle 1302 continues along path 1304, vehicle 1302 will collide with object 1306.
[0138] Figure 13B This is an illustration of a collision-free path 1300B for vehicle navigation. Vehicle 1302 is illustrated as avoiding a collision with object 1306 by traveling from path 1304 to path 1308. Once the possibility of a collision with object 1306 has passed, vehicle 1302 returns to path 1304, which is unobstructed except for object 1306. The vehicle may also remain on path 1308, which is also unobstructed.
[0139] Typically, paths 1304 and 1308 originate from, for example... Figure 10 The graph is derived from a directed graph 1000, etc. In an embodiment, a graph representing collision-free paths through the space is generated within a configuration space (C-space). The C-space is a three-dimensional space parameterized by latitude (e.g., x), longitude (e.g., y), and heading (e.g., θ). A continuous C-space can be decomposed into a series of C-slices, where discrete headings correspond to slices (C-slices) of the C-space. Because the heading values are independent and have a predetermined resolution, the C-space decomposed into a set of C-slices is correspondingly discrete. In an embodiment, each discrete heading value, typically represented by an angle, represents the direction the vehicle is pointing. For example, the heading value is from one or more sensors (such as...). Figure 1 The angle value within the field of view of sensor 121. The object (e.g., Figure 1 Natural obstacles 191, vehicles 193, pedestrians 192, cyclists and other obstacles) are represented as C obstacles on each C-piece.
[0140] C-space generation and element decomposition
[0141] To quickly and efficiently determine collision-free paths around one or more objects, this technique enables collision-free path generation by connecting C-slices via cell decomposition. In this embodiment, cell decomposition is performed to generate collision-free paths between objects. Specifically, trapezoidal decomposition is used to generate numerous collision-free spaces within individual C-slices corresponding to multiple predetermined headings of the vehicle.
[0142] Figure 14 This is a flowchart illustrating the process 1400 that enables rapid collision-free path generation. A collision-free path is a path that avoids collisions with detected objects. This is achieved using technologies such as radar and LiDAR (e.g.,...). Figure 1 LiDAR 123) or cameras (e.g., Figure 1 One or more sensors (e.g., camera 122) etc. Figure 1 Sensor 121) detects the object. Sensor data is obtained (e.g., Figure 5 The outputs 504a-504d) are used to calculate in an environment (e.g., Figure 1The pose and geometry of all objects detected in the environment (190).
[0143] At box 1402, the C-space is generated. To generate the C-space, the vehicle and objects are represented as convex polygons. Furthermore, the start and end attitudes are specified by the vehicle's current and target attitudes. The Minkowski sums between the vehicle and all detected objects are calculated. Representing the vehicle and detected objects as convex polygons enables the Minkowski sum calculation as described below. Specifically, the Minkowski sums between the vehicle and all detected objects yield the vehicle's C-space. The C-space consists of multiple C-pieces, each corresponding to the vehicle's heading. Objects are represented as C-obstacles within each C-piece.
[0144] In box 1404, element decomposition is performed for each C-slice. During element decomposition, C-obstacle vertices are used to decompose each C-slice into multiple elements. Each element of a C-slice represents the free space that a vehicle can occupy. Discretizing the course to obtain multiple C-slices and representing vehicles and objects as convex polygons, compared to vehicle and obstacle representations in higher-order space, enables element decomposition with reduced computational complexity.
[0145] exist Figure 14 In the diagram, box 1406 represents vertex connectivity. Typically, during C-space generation at box 1402, vertices are generated and connected to define C-obstacles. During cell decomposition at box 1404, vertices of interest are inserted at policy points in the free space of each C-slice. In this embodiment, vertices of interest are inserted along cell boundaries according to the C-obstacle type to obtain a C-slice adjacency list. The C-slice adjacency lists for all C-slices in the C-space form a set of C-slice adjacency lists for the C-space. See below for reference. Figure 15 Further description of cell decomposition and vertex connection.
[0146] At box 1408, graph generation is performed. During graph generation, a super-adjacency list is derived from a set of C-slice adjacency lists. The super-adjacency list is derived by connecting vertices of interest across the C-slice adjacency lists according to a collision detection technique. In this embodiment, the C-slice adjacency lists are mapped to a C-slice adjacency graph connecting vertices of interest within each C-slice. The super-adjacency list is mapped to a super-adjacency graph for the entire C-space connecting vertices of interest across all C-slices. Compared to other algorithms, the derived adjacency list requires fewer vertices to generate collision-free paths between many obstacles, and the paths computed via this technique are smoother in terms of curvature accumulation. At box 1410, graph search is performed. Graph search enables the generation of collision-free paths through the environment.
[0147] Figure 14The flowchart is not intended to indicate that the boxes in example process 1400 will be executed in any order, or that all boxes will be included in every case. Furthermore, depending on the specific implementation details, example process 1400 may include any number of additional boxes (not shown). In some examples, vertex connections may include adaptive vertex connections, such that the insertion location of a vertex depends on the type of obstacle C and the location of the obstacle C relative to other obstacles C, etc.
[0148] Figure 15 This is a flowchart illustrating the process 1500 that enables cell decomposition and vertex connection. At box 1502, the field of view of the vehicle (e.g., Figure 6 One or more headings within the field of view 614 are sampled to generate C-space. In an embodiment, the heading of the vehicle is sampled uniformly. The heading is represented as an angle within the field of view of the sensing system. For example, sensing system 402 ( Figure 4 Sampling is performed at multiple headings to capture sensor data for each heading in the xy domain. One or more sensors 121 are used. Figure 1 Processing sensor data (e.g., Figure 5 Outputs 504a, 504b, 504c, and 504d are used to identify nearby physical objects. In this embodiment, objects are identified in Euclidean space. Sampling along discrete heading values generates continuous xy spaces for each heading value, and makes it possible to create a continuous three-dimensional (3D) model of the C space. Figure 16 It is an illustration of a continuous 3D model with multiple C-pieces.
[0149] Figure 16 This is a diagram of a C-space 1600 with a set of C-sheets 1602. As shown, the observed environment (e.g., Figure 1 The environment 190) is mapped to individual C-segments 1602A, 1602B, 1602C, 1602D, 1602E, and 1602F. Each C-segment corresponds to the heading of the vehicle. Based on the location of the detected object at the heading of each C-segment, one or more C-obstacles 1604 are calculated for each C-segment 1602. C-space 1600 is a continuous three-dimensional space on the xy-plane identified according to the x, y, θ coordinates 1606. As described below, a collision-free path 1608 is generated across the C-segments via a super-adjacency list.
[0150] Refer again Figure 15 At box 1504, iterative processing for generating C-obstacles and unit decomposition for each C-piece begin. In this embodiment, the sensor's field of view is divided into a predetermined number of C-pieces. In this embodiment, the C-pieces are uniformly distributed throughout the entire field of view. For example, consider a complete 360° field of view in a global reference frame. Figure 16 In the example, there are 6 C-slices. Therefore, each C-slice corresponds to one of six heading values, and the C-slices are spaced 30° apart to uniformly sample the environment across the entire 180° field of view. In environments with a large number of objects to detect, a finer level of sampling may be needed to accurately detect objects and generate C-obstacles. For example, increasing the number of C-slices to 11, with each C-slice spaced 15° apart, defines a C-space with a finer resolution.
[0151] The general assumption when calculating the Minkowski sum between two geometries is that the orientation is fixed, and in the context of C-slice generation, this means that the headings of both the ego vehicle and other objects (e.g., actor vehicles) are fixed. When generating multiple C-slices, the number of predetermined headings for the ego vehicle can vary, provided the actor vehicle's heading is fixed. In the example, the heading resolution is π / 20 to obtain 10 C-slices within the AV's field of view. For ease of description, a specific number of predetermined headings within a specific field of view are described. However, the number of predetermined headings, the resulting number of C-slices, and the vehicle's field of view may vary and should not be considered limiting. Furthermore, in embodiments, C-slices can be placed at a higher resolution in field of view areas where a large number of objects are detected, and at a lower resolution in field of view areas where relatively few objects are present or where no objects are present.
[0152] At box 1506, for the current C-slice, calculate the Minkowski sum between the vehicle and the detected object. Calculate the Minkowski sum for the vehicle and all detected objects, which generates C-obstacles for each C-slice. Typically, the Minkowski sum calculates the offset of the edges of a polygon representing a detected object by a certain distance. Specifically, the Minkowski sum identifies a set of coordinates where one polygon overlaps with another. The computational complexity of calculating the Minkowski sum is reduced by assuming the polygons are convex. To calculate the Minkowski sum, the minimum convex set containing the vehicle and the minimum convex set containing the object are calculated. In this example, this is for the corresponding polygons of the vehicle and the detected object. Draw the normals (e.g., theoretical lines extending from the edges of the polygon) for the edges of the convex polygons. Normals for the detected objects are drawn outwards, and normals for the vehicles are drawn inwards. The normals are then ordered in ascending order relative to their angles. The first point in the Minkowski sum is arbitrarily chosen as a point where the vehicle's centroid is located at one of the vertex-to-vertex contacts of the obstacle and the vehicle. The Minkowski sum is generated by adding the edges in the order specified by the normals. An important observation is that each edge of the Minkowski sum polygon is a translation of either the convex polygon of the detected object or the convex polygon of the vehicle. After calculating the Minkowski sum for each detected object, the detected object is drawn as a C-obstacle in the corresponding C-sheet. In the embodiment, the vehicle is represented in each C-sheet as a point moving in C-space. Multiple C-sheets are generated by fixing the vehicle's heading to different values throughout the environment, where, as a result of the Minkowski sum operation, the same object is represented in each C-sheet as a C-obstacle with different shapes.
[0153] At box 1508, cell decomposition is performed on the C-slice. During cell decomposition, C-obstacle vertices are used to decompose the C-slice into multiple cells representing free space within C-space. As used herein, free space is the portion of the C-slice where no C-obstacles are drawn. The free space of the C-slice corresponds to the environment region where no objects are detected. Cell decomposition creates multiple cell boundary lines within the C-slice based on C-obstacle locations. For the current C-slice, trapezoidal cell decomposition is performed to decompose a C-slice in C-space into several trapezoidal cells. Figure 17A This is a diagram of a C-chip 1700A with multiple units.
[0154] In C-slice 1700A, obstacles C-obstacles 1702 and 1704 are shown. Obstacles C-obstacles 1702 and 1704 are derived by calculating Minkowski values as described above. To generate the cells of the C-slice, boundary lines 1706 are drawn from the vertices of the obstacles C-obstacles to the boundaries of the C-slice. The boundary lines include boundary lines 1706A1, 1706A2, 1706B, 1706C, 1706D1, 1706D2, 1706E1, 1706E2, 1706F, 1706G, 1706H1, and 1706H2. The boundary of the C-slice is the end of the data for the C-slice. An obstacle C-obstacle vertex is the point where two sides of the convex polygon of the obstacle C-obstacle intersect. Obstacle C-obstacle 1702 has obstacles C-obstacle vertices 1702A, 1702B, 1702C, and 1702D. Obstacle C 1704 has vertices C 1704A, 1704B, 1704C and 1704D.
[0155] The cell decomposition for each C-slice ensures that any path within a cell is obstacle-free. In this embodiment, the cell decomposition is an exact cell decomposition. In an exact cell decomposition, at each vertex of a C-obstacle on the corresponding C-slice, the boundary line extends from the vertex of the C-obstacle until it reaches the boundary of the C-space or another C-obstacle. Figure 17A In the example, the boundary line 1706 is shown using dashed lines extending from the vertices of obstacles C 1702 and 1704. The dashed lines create multiple elements 1708A, 1708B, 1708C, 1708D, 1708E, 1708F, 1708G, 1708H, 1708I, 1708J, and 1708K. In this embodiment, the element decomposition is approximate. In the approximate element decomposition, starting with the entire C-sheet as an element, the elements are recursively subdivided until the element is entirely within free space or entirely within obstacle C. Subdivision may also end when a predetermined limit for element subdivision is reached. Boundary line 1706 creates multiple trapezoidal elements. By extending boundary line 1706 from the vertices of obstacle C, it is ensured that the derived free elements are convex trapezoids.
[0156] Refer again Figure 15 At box 1510, elements are defined during element decomposition. For an element (e.g., Figure 17A Cells 1708A-K are assigned cell identifiers (IDs). A cell adjacency list is also derived. The cell adjacency list identifies adjacent cells via a list of paired cell IDs. For example, two cells are adjacent when they share boundary line 1706. For example, regarding… Figure 17A Since units 1708A and 1708B share boundary line 1706A1, units 1708A and 1708B are adjacent. Furthermore, since units 1708A and 1708C share boundary line 1706A2, units 1708A and 1708C are adjacent.
[0157] At box 1512, the vertex of interest is inserted into each C-piece. For each C-piece corresponding to a specific attitude of the vehicle, the vertex of interest is inserted at each boundary line 1706. Each vertex is identified by its vertex ID and cell ID location. (See again...) Figure 17A A vertex of interest 1710 is inserted at the midpoint of each boundary line 1706, where the midpoint is measured from the C obstacle vertex to the boundary of the C patch. In this embodiment, the vertex of interest is inserted at the midpoint of the corresponding boundary line. Figure 17A This includes multiple vertices of interest 1710, each shown as a black dot on boundary line 1706. Since free-space trapezoidal elements are convex polygons, when elements are adjacent, the straight line connecting the vertices of interest along one boundary line to the vertices of interest along another boundary line (e.g., boundary lines 1706A1, 1706D1, 1706E1, and 1706H1) is a collision-free path through the element.
[0158] At box 1512, a list of adjacent vertices of interest is generated. If the first vertex of interest lies on a boundary line 1706 that shares a common cell, then the first vertex of interest is adjacent to the second vertex of interest. For example, since the boundary lines in boundary lines 1706A1 and 1706B share cell 1708B, vertex of interest 1710A is adjacent to vertex 1710C. Since the boundary lines in boundary lines 1706A1 and 1706A2 are collinear and connected by obstacle vertex 1702A, vertex of interest 1710A is adjacent to vertex 1710B. The list of adjacent vertices of interest is a paired list of vertex identifiers (IDs).
[0159] exist Figure 17A As mentioned above, vertices of interest are selected based on the midpoints of each boundary line 1706. Selecting the midpoints of each cell boundary line as vertices is generally sufficient to cover all free space in C-space. Selecting the midpoints of boundary lines for vertices of interest also reduces the number of vertices required to cover the free space in C-space. Redundant vertices that roughly cover the same space as the midpoint vertices are eliminated.
[0160] In this embodiment, the location of the focus vertex is adaptively selected based on the type of obstacle C closest to the boundary line. For example, consider a scenario where obstacle C corresponds to a pedestrian. Instead of choosing the midpoint of the boundary line generated from the pedestrian obstacle C as the vertex insertion point, the focus vertex is placed further away from the pedestrian. For example, the focus vertex is inserted at 75% of the distance from the obstacle C vertex to the end of the boundary line. Therefore, this technique is not obstacle-agnostic and allows for assessment of the object type when establishing the focus vertex.
[0161] Figure 17BThis is a diagram illustrating adaptive insertion of vertices of interest. In adaptive insertion, vertices of interest are generated to create paths with different gap strategies, allowing paths to be closer to one type of object (such as a car) and farther away from another type of object (a large truck, a pedestrian). For example, obstacle C1722 represents a vehicle. When obstacle C is a vehicle, vertices of interest can be inserted closer to obstacle C. Figure 17B In the example, obstacle C 1724 represents a pedestrian. For pedestrians, vertex insertion is performed at a distance from obstacle C to provide more space when planning paths near the pedestrian. Therefore, vertices of interest 1720A, 1720B, 1720C, 1720D, 1720E, and 1720F are closer to obstacle C 1722 than vertices of interest 1720G, 1720H, 1720I, 1720J, 1720K, and 1720L near obstacle C 1724. Therefore, the inserted vertices do not need to be evenly spaced. In this embodiment, vertex insertion is adaptive based on the type of detection object on which obstacle C is based.
[0162] Refer again Figure 15 At box 1514, the vertices of interest are connected through transitions across adjacent units to form an adjacency graph for each C-slice. (See also: Regarding...) Figures 18A-18E The method described above considers that identifying valid Dubins paths in the adjacent vertex list using a connection strategy can transform the adjacent vertex list into an adjacency graph for each C-slice. The adjacency list provides information about which vertices of interest on the current C-slice are adjacent to other vertices of interest. In this embodiment, the adjacency list is based on whether cells are connected to each other (adjacent). The adjacency list for each C-slice can be further pruned by determining whether two adjacent vertices can be connected by a valid Dubins path without collision. A Dubins path is the shortest curve connecting two points on a two-dimensional Euclidean plane (XY plane). Dubins paths are constrained by the curvature of the path and by specified initial and terminal tangents. Furthermore, it is assumed that the vehicle traveling along the path only moves forward. For collision checking, a set of vehicle attitudes is calculated by discretizing the Dubins path, and then a conventional convex polygon intersection algorithm is used for each attitude to determine whether the vehicle collides (intersects) with any C-obstacle. Typically, discretizing the Dubins path creates a polygonal path based on the curvature-constrained Dubins path. The discretized Dubins path is subject to turning and length constraints. When connecting vertices of interest according to the connection strategy described herein, at box 1514, the connection is a detected valid Dobbins path. By adding only valid Dobbins paths, this technique considers the kinematics of the vehicle when generating an adjacency graph via vertex connections. Note that regarding... Figure 15All computations described in box 1514 are applied to the current C-slice, and the vertices of interest for each C-slice are generated independently of the other C-slices. The vertices of interest are connected by efficient Dubins paths to form an adjacency graph for each C-slice.
[0163] If additional C-slices are needed for decomposition and adjacency graph determination, the process returns to box 1504. If all C-slices have been decomposed and C-slice adjacency lists have been generated, the process continues to box 1516. At box 1516, vertices of interest are connected across all C-slices. For example, the C-slice adjacency lists are combined to generate super-adjacency lists for the C-slices. (See also: [link to relevant documentation]). Figures 18A-18E The aforementioned approach, considering the connection strategy's identification of valid Dobbins paths in the superadjacency list, can transform the superadjacency list into a superadjacency graph for C-space. Connections across C-slices that are invalid Dobbins paths are removed from the superadjacency graph.
[0164] Figure 15 The processing flowchart is not intended to indicate that the boxes in example processing 1500 will be executed in a specific order or that all boxes will be included in every case. Furthermore, depending on the specific implementation details, any number of additional boxes, not shown, may be included within example processing 1500. In some examples, vertex connections may include adaptive vertex connections, such that the insertion point for a vertex depends on the type of C obstacle and the location of the C obstacle relative to other C obstacles, etc.
[0165] Figure 16 , 17A The block diagram of 17B is not intended to indicate Figure 16 , 17A And 17B's C film includes Figure 16 , 17A And all the components shown in 17B. Conversely, C-piece may include... Figure 16 , 17A And fewer components in 17B or Figure 16 , 17A And additional components not shown in 17B (e.g., additional C-slices, C-obstacles, vertices of interest, boundary lines, etc.). C-space 1600, C-slice 1700A, and C-slice 1700B may include any number of additional components not shown, depending on the specific implementation details. Furthermore, any one of the functions described, such as cell decomposition, adjacency list generation, cell ID generation, vertex ID generation, graph generation, and others, may be implemented partially or wholly in hardware and / or a processor. For example, this function may be implemented using an application-specific integrated circuit, logic implemented in a processor, logic implemented in a dedicated graphics processing unit, or in any other means.
[0166] Graph generation and search
[0167] Refer again Figure 17A and Figure 17B Illustrations of C-plate 1700A and 1700B are provided. For example, C-plate 1700A and 1700B are from... Figure 16 C-slice 1602. As described above, for each C-slice, C-obstacles are represented by convex polygons. For each C-slice, cell decomposition is performed, and an adjacency list is generated for each C-slice. In a similar manner, a super-adjacency list for vertices of interest is generated across C-slices. The generation of the super-adjacency graph based on the super-adjacency list slices is based on... Figures 18A-18E The connection strategy described is used. The connection strategy is based, at least in part, on the location of the first C-slice relative to the other C-slices within the C-space.
[0168] If C-slices are adjacent in a list of sequential heading values for C-slices, then a C-slice is adjacent to another C-slice. For example, consider a C-space of six C-slices that sample the environment every 30°. The first C-slice samples at heading 0°, the second at heading 30°, the third at heading 60°, the fourth at heading 90°, the fifth at heading 120°, and the sixth at heading 150°. In this example, the second C-slice is adjacent to both the first and third C-slices. Connection strategies alter how vertices of interest are connected within individual C-slices and across C-slices. Connections of vertices of interest across C-slices derive a superadjacency graph for the entire C-space. (See also: Regarding...) Figure 15 The available connections within and across each C-slice will be those connections where valid Dobbins paths exist. In an embodiment, the derived adjacency graph for C-space is augmented by calculating the cost of each edge connecting two adjacent poses.
[0169] Figures 18A-18E This is a diagram of the connection strategy. Figure 18A This is an illustration of a superadjacency graph 1800A using a brute-force connection strategy. In the brute-force strategy, the vertices of interest in the first C slice are connected to all vertices of interest in the first C slice and the other C slices. The computational complexity for generating the superadjacency graph 1800A using the brute-force connection strategy is O(m). 2 n 2 ), where m is the number of C-slices and n is the number of vertices of interest within each C-slice. The brute-force connectivity strategy creates a complete superadjacency graph 1800A that includes all possible paths in the C-space. Because all possible paths are available, the vehicle planning system can use the superadjacency graph 1800 to select the optimal and most convenient path.
[0170] Figure 18BThis is an illustration of a superadjacency graph 1800B that uses a brute-force connection strategy outside of a sphere. Generally, connections using Dubins paths from vertices within a radius (e.g., a sphere) may violate the minimum turning radius of a vehicle, which can be automatically eliminated without attempting to make a connection. Therefore, since some infeasible graph edges will not be attempted to be connected at all, forcing connections outside the sphere region around the graph vertices makes graph connection faster.
[0171] In the brute-force connection strategy outside the sphere, the vertices of interest in the first C-slice are connected to all vertices of interest in the first C-slice and the other C-slices within a predetermined distance from the corresponding vertex of interest. For example, the first vertex of interest is only connected to other vertices of interest within a specific range, such as those within a predetermined radius in C-space. The radius is used to filter out vertices of interest that are too far from the current vertex of interest. The computational complexity depends on the radius of the sphere. As the radius increases, the computational complexity for generating the superadjacency graph 1800B using the brute-force connection strategy outside the sphere approaches O(m). 2 n 2 ).
[0172] Figure 18C This is an illustration of a superadjacency graph 1800C using a brute-force adjacent slice connection strategy. Recall that each C slice has multiple cells generated during cell decomposition. In the brute-force adjacent slice connection strategy, the vertices of interest in the first C slice are connected to all vertices of interest in the adjacent cells of the first C slice. Each vertex of interest is connected across C slices to all vertices of interest in the adjacent C slices. The computational complexity for the brute-force adjacent slice connection strategy is O(mn). 2 By restricting the connection strategy across C slices to only those adjacent C slices, the number of possible C slices available for connection is reduced. This reduces computational complexity.
[0173] Figure 18D This is an illustration of a superadjacency graph 1800D using a brute-force inter-slice connection strategy. This strategy connects vertices of interest in the first slice C to vertices of interest in their neighboring slices. Each vertex of interest is connected across slice C to all vertices of interest in all other slices C. The computational complexity for this brute-force inter-slice connection strategy is O(m). 2 n 2 ).
[0174] Figure 18EThis is an illustration of a superadjacency graph 1800E using a mesh connectivity strategy. In the mesh connectivity strategy, vertices of interest in the first C slice are connected to all vertices of interest in the adjacent cells of the first C slice. Across C slices, each vertex of interest is connected to all vertices of interest in the adjacent C slices. For each vertex, connections are made between vertices in the adjacent cells of the adjacent C slices (connections across multiple cells are not attempted). The computation time for mesh adjacency is O(mn).
[0175] Figures 18A-18E The diagram is not intended to indicate Figures 18A-18E The superadjacency graph includes Figures 18A-18E All components shown. Conversely, the diagram may include more than... Figures 18A-18E Less ingredients or Figures 18A-18E Additional components not shown (e.g., additional C-slices, C-slices of different resolutions, adaptive vertex insertion, vertices of interest, edges, etc.). A superadjacency graph can include any number of additional components not shown, depending on the specific implementation details. Furthermore, arbitrary connectivity strategies can be implemented partially or entirely in hardware and / or in a processor. For example, this functionality can be implemented using an application-specific integrated circuit (ASIC), logic implemented in a processor, logic implemented in a dedicated graphics processing unit (GPU), or in any other device.
[0176] about Figures 18A-18E The described connectivity strategy selectively reduces the number of edges within the C-slice adjacency graph and the C-space superadjacency graph. This reduction ultimately reduces the number of edges planned by the planning system (e.g., Figure 4 The collision avoidance computation performed by the planning system 404. In this embodiment, a graph search is performed to identify paths using a superadjacency graph.
[0177] During graph search, the k-nearest neighbor algorithm is executed to obtain a set of start vertices and a set of end vertices in the superadjacency graph that are closest to the vehicle's start and end poses. In some cases, the actual start and end poses of the vehicle are not perfectly aligned with the vertices in the generated C-space. Invalid start and end vertices are filtered out by determining whether there exists a valid Dubins path that can connect the start and end vertices. Given all combinations of valid start and end vertices, the shortest path between each pair of start and end vertices is computed using a shortest path algorithm. The path with the minimum total cost is selected as the optimal path traversing the space. In this embodiment, Dijkstra's algorithm is executed to find the shortest path for each pair of start and end vertices in the graph. In this embodiment, the shortest path algorithm is the A* algorithm. For ease of description, the path is described as being selected based on the lowest cost. However, the optimal path can be selected based on time, environment, or any other factors.
[0178] A collision-free path is generated by connecting C-pieces via unit decomposition.
[0179] Figure 19 This is the processing flowchart for process 1900, which enables rapid collision-free path generation by connecting C-pieces via cell decomposition. Figure 19 In the example, the Dubins path is determined and used to connect the key points between C slices.
[0180] At box 1902, the environment (e.g., environment 190) at the discrete heading of the vehicle is sampled to generate a configuration space (C space) with one or more C-slices, each C-slice corresponding to a discrete heading of the vehicle. In an embodiment, a sensing system (e.g., Figure 4 The perception system 402) samples the environment. Discrete headings enable the use of Minkowski coordinates to represent vehicles and objects as convex polygons.
[0181] At box 1904, cell decomposition is performed at one or more C-slices. Cell decomposition breaks down each C-slice into multiple cells, which represent areas in the environment where no objects were detected.
[0182] At box 1906, a C-slice adjacency list is generated. The C-slice adjacency list is a list of vertices of interest for each C-slice and the adjacency information associated with each vertex of interest. Two cells sharing a boundary line are adjacent, and vertices of interest are inserted along the boundary line. In this embodiment, vertices of interest are inserted at the midpoint of the boundary line of each cell. In this embodiment, vertices of interest are adaptively located by selecting vertex locations on the cell boundary based on the type of nearby C-obstacles.
[0183] At box 1908, a superadjacency list of vertices of interest is derived for the C-space. The superadjacency list and the adjacency list are used to connect vertices of interest to one or more edges to form a superadjacency graph. Strategies for connecting vertices of interest across one or more C-slices include, for example, cell-based brute force (e.g., ...). Figure 18A Brute force outside the ball (e.g., Figure 18B ), based on adjacent elements and brute-force connections between elements (e.g., Figure 18C ), and neighboring elements based on elements and brute-force connections for neighboring elements (e.g., Figure 18D ), or a cell-based mesh (e.g., Figure 18E ).
[0184] At box 1910, the optimal path for the vehicle to traverse is determined by using a super adjacency graph to find the shortest path from the starting pose to the target pose.
[0185] In the preceding description, embodiments of the invention have been described with reference to numerous specific details that may vary depending on implementation. Therefore, the specification and drawings should be considered illustrative rather than restrictive. The sole and exclusive indication of the scope of the invention, and what the applicant desires, is that the scope of the invention is the literal and equivalent scope of a set of claims published from this application in the specific form of the published claims, including any subsequent amendments. Any definitions expressly set forth herein with respect to terms contained in such claims shall be taken as meaning as used in the claims. Furthermore, when the term "comprising" is used in the preceding specification or appended claims, the following phrase may be an additional step or entity, or a sub-step / sub-entity of a previously stated step or entity.
Claims
1. A method for navigating an optimal path, comprising: The environment at the discrete heading of the vehicle is sampled by the sensing circuit to generate a configuration space, namely C space, with one or more C-pieces, wherein the first C-piece corresponds to the discrete heading of the vehicle, and the vehicle and the detected object are represented by convex polygons. The processor decomposes the first C-slice into one or more units representing free space; The processor generates a C-slice adjacency list for the first C-slice, wherein two cells sharing a boundary line in the C-slice adjacency list of the first C-slice are adjacent, and a vertex of interest is inserted along the boundary line; The processor derives a superadjacency list for the C-space, wherein the superadjacency list connects vertices of interest across the one or more C-slices to form a superadjacency graph at least partially based on the Dubins path; and The optimal path is navigated by the planned circuit, wherein the optimal path is the shortest path from the starting pose to the target pose on the super adjacency graph.
2. The method according to claim 1, wherein, The discrete headings are predetermined.
3. The method according to claim 1 or 2, wherein, Decomposing the first C-slice into multiple units includes: Calculate the Minkowski sum between the convex polygons of the vehicle and the convex polygons of the detected object to obtain the C-shaped obstacle vertex, wherein the detected object corresponds to the C-shaped obstacle; and Insert a boundary line having a first point at the vertex of an obstacle C, and extend the boundary line to a second point, wherein the second point is located at another obstacle C, the boundary of the first C piece, or any combination thereof.
4. The method according to claim 1 or 2, wherein, Insert the vertex of interest at the midpoint of the corresponding boundary line.
5. The method according to claim 1 or 2, wherein, The vertices of interest are inserted adaptively, at least in part, based on the obstacle type C.
6. The method according to claim 1 or 2, wherein, The superadjacency graph is derived by connecting the vertices of interest in the first C-slice to all the remaining vertices of interest in the other C-slices of the one or more C-slices.
7. The method according to claim 1 or 2, wherein, For each point of interest in the first C-slice, the super adjacency graph is derived by connecting the corresponding point of interest in the first C-slice with points of interest in other C-slices that are within a predetermined distance from the corresponding point of interest.
8. The method according to claim 1 or 2, wherein, For each point of interest in the first C-slice, the super adjacency graph is derived by connecting the point of interest in the first C-slice to the point of interest in the adjacent cells of the first C-slice, and by connecting the point of interest in the first C-slice to the point of interest in the adjacent C-slices.
9. The method according to claim 1 or 2, wherein, The superadjacency graph is derived by connecting the vertices of interest in the first C-slice to the vertices of interest in the neighboring units of the first C-slice, and by connecting the vertices of interest in the first C-slice to the vertices of interest in the one or more C-slices.
10. The method according to claim 1 or 2, wherein, For each point of interest in the first C-slice, the super adjacency graph is derived by connecting the corresponding point of interest to other points of interest in other C-slices to form a mesh.
11. A non-transitory computer-readable storage medium comprising at least one program executable by at least one processor of a first device, the at least one program comprising instructions that, when executed by the at least one processor, perform a method comprising: The environment at discrete headings of the vehicle is sampled to generate a configuration space, or C-space, with one or more C-slices, where, The first C-piece corresponds to the discrete heading of the vehicle, and the vehicle and the detected object are represented by convex polygons; The first C-slice is decomposed into one or more units representing free space; Generate a C-slice adjacency list for the first C-slice, wherein two cells sharing a boundary line in the C-slice adjacency list of the first C-slice are adjacent, and a vertex of interest is inserted along the boundary line; Export a superadjacency list for the C-space, wherein the superadjacency list connects vertices of interest across the one or more C-slices to form a superadjacency graph at least partially based on the Dubins path; and The optimal navigation path is the shortest path from the starting pose to the target pose on the superadjacency graph.
12. The computer-readable storage medium according to claim 11, wherein, Decomposing the first C-slice into multiple units includes: Calculate the Minkowski sum between the convex polygons of the vehicle and the convex polygons of the detected object to obtain the C-shaped obstacle vertex, wherein the detected object corresponds to the C-shaped obstacle; and Insert a boundary line having a first point at the vertex of an obstacle C, and extend the boundary line to a second point, wherein the second point is located at another obstacle C, the boundary of the first C piece, or any combination thereof.
13. A vehicle comprising: At least one sensor is configured to detect the pose and geometry of an object in the environment, wherein the start pose and end pose of the vehicle are specified; At least one computer-readable medium storing computer-executable instructions; At least one processor, communicatively coupled to the at least one sensor and configured to execute computer-executable instructions, the execution including the following operations: The environment is sampled at discrete headings of the vehicle to generate a configuration space, or C-space, with one or more C-pieces, wherein the first C-piece corresponds to the discrete heading of the vehicle, and wherein the vehicle and the object are represented by convex polygons. The first C-slice is decomposed into one or more units representing free space; Generate a C-slice adjacency list for the first C-slice, wherein two cells sharing a boundary line in the C-slice adjacency list of the first C-slice are adjacent, and a vertex of interest is inserted along the boundary line; Export a superadjacency list for the C-space, wherein the superadjacency list connects vertices of interest across the one or more C-slices to form a superadjacency graph at least partially based on the Dubins path; and The control circuit is communicatively coupled to the at least one processor, wherein the control circuit is configured to operate the vehicle from the start attitude to the end attitude based on the superadjacency graph.
14. The vehicle according to claim 13, wherein, The operation includes: Calculate the Minkowski sum between the convex polygons of the vehicle and the convex polygons of the object to obtain the C-obstacle vertices, where the object corresponds to the C-obstacle; and Insert a boundary line having a first point at the vertex of an obstacle C, and extend the boundary line to a second point, wherein the second point is located at another obstacle C, the boundary of the first C piece, or any combination thereof.
15. The vehicle according to claim 13 or 14, wherein, The operation involves inserting a vertex of interest at the midpoint of the corresponding boundary line.
16. The vehicle according to claim 13 or 14, wherein, The operation includes adaptively inserting the vertex of interest based at least in part on the obstacle type C.
17. The vehicle according to claim 13 or 14, wherein, The operation includes deriving the superadjacency graph by connecting the vertices of interest in the first C-slice to all remaining vertices of interest in the other C-slices of the one or more C-slices.
18. The vehicle according to claim 13 or 14, wherein, The operation includes: for each interested vertex of the first C-slice, deriving the super adjacency graph by connecting the corresponding interested vertex of the first C-slice with interested vertices in other C-slices that are within a predetermined distance from the corresponding interested vertex.
19. The vehicle according to claim 13 or 14, wherein, The operation includes: for each point of interest in the first C-slice, deriving the super adjacency graph by connecting the point of interest in the first C-slice to the point of interest in the adjacent cells of the first C-slice, and connecting each point of interest in the first C-slice to the point of interest in the adjacent C-slice.
20. The vehicle according to claim 13 or 14, wherein, The operation includes: for each point of interest in the first C-slice, deriving the super adjacency graph by connecting the point of interest in the first C-slice to the point of interest in the adjacent units of the first C-slice, and connecting the point of interest in the first C-slice to the point of interest in each of the one or more C-slices.
21. The vehicle according to claim 13 or 14, wherein, The operation includes: for each interested vertex in the first C-slice, deriving the super adjacency graph by connecting the corresponding interested vertex to other interested vertices in other C-slices to form a mesh.
22. A computer program product comprising a program that causes a computer to perform the method according to any one of claims 1 to 10.