Methods, systems, and machine-readable media for operating an autonomous vehicle
By calculating the obstacle cost for each discrete point in the path planning of autonomous driving vehicles, the problem of path trajectory optimization in complex scenarios is solved, and driving efficiency and safety are improved.
Patent Information
- Application Number
- CN201911147002.2
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2019-03-26
- Filing Date
- 2019-11-21
- Publication Date
- 2024-12-31
- Estimated Expiration
- 2039-11-21
AI Technical Summary
In complex scenarios, it is difficult for autonomous vehicles to determine the optimized path trajectory, which may cause the vehicle to choose a non-optimized path, affecting driving efficiency and safety.
By planning for the path of an autonomous vehicle, each discrete point determines whether it overlaps with an obstacle, and uses different cost functions to calculate the obstacle cost, accumulates the total obstacle cost to determine the feasibility of the path trajectory, and optimizes the path trajectory.
It provides optimized path trajectory planning in complex scenarios, improves the driving efficiency and safety of autonomous vehicles, and ensures that the vehicle can effectively avoid obstacles.
Smart Images

Figure CN111830959B_ABST
Abstract
Description
Technical Field
[0001] Embodiments of the present disclosure generally relate to operating an autonomous vehicle. More specifically, embodiments of the present disclosure relate to path planning for complex scenarios by adjusting path length for an autonomous vehicle (ADV). Background Art
[0002] A vehicle operating in an automated driving mode (e.g., without human control) can relieve occupants, particularly the driver, from some driving-related responsibilities. When operating in an automated driving mode, the vehicle can navigate to various locations using onboard sensors, allowing the vehicle to travel with minimal human interaction or in some cases without any passengers.
[0003] Motion planning and control are key operations in autonomous driving. Motion planning and control may include path planning and speed planning. Traditional path planning operations estimate the difficulty of completing multiple trajectories based on obstacles, traffic conditions, road boundaries, etc. perceived by the vehicle to determine an optimized path trajectory, where the optimized path trajectory meets a set of path planning criteria for the vehicle. However, some complex scenarios may prevent the vehicle from successfully determining the path trajectory or may cause the vehicle to select a non-optimized path trajectory. Summary of the invention
[0004] The present disclosure aims to provide a path optimization solution in complex scenarios.
[0005] According to one aspect of the present disclosure, a computer-implemented method for operating an autonomous driving vehicle ADV includes: for each discrete point of a plurality of discrete points of a path trajectory planned for the ADV starting from a starting discrete point, determining whether the discrete point overlaps with an obstacle; in response to determining that the discrete point does not overlap with an obstacle, determining an obstacle cost for the discrete point using a first cost function; in response to determining that the discrete point overlaps with an obstacle, determining the obstacle cost for the discrete point using a second cost function; and calculating a total obstacle cost for the path trajectory based on the obstacle costs of the discrete points, wherein the total obstacle cost is used to determine whether the path trajectory can be used to drive the ADV.
[0006] According to another aspect of the present disclosure, a non-transitory machine-readable medium stores instructions that, when executed by a processor, cause the processor to perform operations, the operations comprising: determining, for each discrete point of a plurality of discrete points of a path trajectory planned for an ADV starting from a starting discrete point, whether the discrete point overlaps with an obstacle; in response to determining that the discrete point does not overlap with an obstacle, determining an obstacle cost for the discrete point using a first cost function; in response to determining that the discrete point overlaps with an obstacle, determining the obstacle cost for the discrete point using a second cost function; and calculating a total obstacle cost for the path trajectory based on the obstacle costs of the discrete points, wherein the total obstacle cost is used to determine whether the path trajectory can be used to drive the ADV.
[0007] According to another aspect of the present disclosure, a data processing system includes: a processor; and a memory connected to the processor to store instructions, which, when executed by the processor, cause the processor to perform operations, the operations including: for each discrete point of a plurality of discrete points of a path trajectory planned for an ADV starting from a starting discrete point, determining whether the discrete point overlaps with an obstacle; in response to determining that the discrete point does not overlap with an obstacle, determining an obstacle cost for the discrete point using a first cost function; in response to determining that the discrete point overlaps with an obstacle, determining the obstacle cost for the discrete point using a second cost function; and calculating a total obstacle cost for the path trajectory based on the obstacle costs of the discrete points, wherein the total obstacle cost is used to determine whether the path trajectory can be used to drive the ADV.
[0008] According to the embodiments of the present disclosure, optimized path trajectory planning can be provided in complex scenarios. BRIEF DESCRIPTION OF THE DRAWINGS
[0009] Embodiments of the present disclosure are illustrated by way of example and not limitation in the figures of the accompanying drawings in which like reference numerals indicate similar elements.
[0010] Figure 1 is a block diagram illustrating a networked system according to one embodiment.
[0011] Figure 2 is a block diagram illustrating an example of an autonomous driving vehicle according to one embodiment.
[0012] Figure 3A and Figure 3B is a block diagram illustrating an example of a perception and planning system used by an autonomous vehicle according to some implementations.
[0013] Figure 4 is a block diagram illustrating an example of a decision making and planning process according to one embodiment.
[0014] Figure 5 is a block diagram illustrating an example of a decision module according to one embodiment.
[0015] Figure 6 is a diagram showing a scenario for path planning according to one embodiment.
[0016] Figure 7 is a diagram illustrating a path trajectory determined by a path planning operation within a scene according to one embodiment.
[0017] Figure 8 is a diagram showing an obstacle collision function for determining obstacle cost according to one embodiment.
[0018] Fig. 9 is a flow chart illustrating a method of path planning according to one embodiment.
[0019] Fig.10 is a flow chart illustrating a method of path planning according to another embodiment.
[0020] Fig.11 is a block diagram illustrating a data processing system according to one embodiment. DETAILED DESCRIPTION
[0021] Various embodiments and aspects of the present disclosure will be described with reference to the details discussed below, and the accompanying drawings will illustrate the various embodiments. The following description and drawings are illustrative of the present disclosure and should not be construed as limiting the present disclosure. Many specific details are described to provide a comprehensive understanding of various embodiments of the present disclosure. However, in some cases, well-known or conventional details are not described to provide a concise discussion of embodiments of the present disclosure.
[0022] References in this specification to "one embodiment" or "an embodiment" mean that a particular feature, structure, or characteristic described in conjunction with the embodiment can be included in at least one embodiment of the present disclosure. The appearances of the phrase "in one embodiment" in various places in this specification are not necessarily all referring to the same embodiment.
[0023] According to some embodiments, ADV includes a method for planning a path trajectory. The method selects multiple discrete points of the path trajectory to determine the obstacle cost of the path trajectory. Starting from the starting discrete point and stepping through the discrete points that are successively away from the starting point along the path trajectory, the method determines whether any discrete point overlaps with an obstacle. For discrete points that do not overlap with obstacles, the method uses a first cost function to accumulate the obstacle cost of the path trajectory for discrete points starting from the starting discrete point through discrete points that are successively away from the starting point until the first discrete point that overlaps with the obstacle is determined. In one embodiment, if no discrete point overlaps with any obstacle, the method uses the first function to accumulate the obstacle cost of the path trajectory for all discrete points of the path trajectory. If the first discrete point is determined to overlap with an obstacle, the method uses a second cost function to calculate the overlapping obstacle cost for the first discrete point. The second cost function is based on the distance between the first discrete point of the path trajectory and its starting discrete point. The method adds the calculated overlapping obstacle cost to the obstacle cost to determine the obstacle cost of the path trajectory that overlaps with the obstacle.
[0024] According to one embodiment, for each of the discrete points of the path trajectory planned for the ADV starting from the starting discrete point, it is determined whether the discrete point overlaps with an obstacle. If the discrete point does not overlap with an obstacle, an obstacle cost associated with the discrete point is determined using a first cost function. Otherwise, an obstacle cost of the discrete point is determined using a second cost function different from the first obstacle function. A total obstacle cost is then calculated based on the obstacle costs of all discrete points of the path trajectory. The total obstacle cost of the path trajectory is then used to determine whether the path trajectory can be used to drive the ADV.
[0025] Figure 1 is a block diagram showing a network configuration of an autonomous driving vehicle according to one embodiment of the present disclosure. Figure 1 , the network configuration 100 includes an autonomous vehicle 101 that can be communicatively connected to one or more servers 103 to 104 via a network 102. Although one autonomous vehicle is shown, multiple autonomous vehicles can be connected to each other and / or to servers 103 to 104 via the network 102. The network 102 can be any type of network, for example, a wired or wireless local area network (LAN), a wide area network (WAN) such as the Internet, a cellular network, a satellite network, or a combination thereof. Servers 103 to 104 can be any type of server or server cluster, such as a web or cloud server, an application server, a back-end server, or a combination thereof. Servers 103 to 104 can be data analysis servers, content servers, traffic information servers, maps and points of interest (MPOI) servers, or location servers, etc.
[0026] An autonomous vehicle refers to a vehicle that can be configured to be in an autonomous mode in which the vehicle navigates through an environment with little or no input from a driver. Such an autonomous vehicle may include a sensor system having one or more sensors configured to detect information related to the environment in which the vehicle operates. The vehicle and its associated controller use the detected information to navigate through the environment. The autonomous vehicle 101 may operate in a manual mode, in a fully autonomous mode, or in a partially autonomous mode.
[0027] In one embodiment, the autonomous vehicle 101 includes, but is not limited to, a perception and planning system 110, a vehicle control system 111, a wireless communication system 112, a user interface system 113, and a sensor system 115. The autonomous vehicle 101 may also include certain common components included in an ordinary vehicle, such as: an engine, wheels, a steering wheel, a transmission, etc., which may be controlled by the vehicle control system 111 and / or the perception and planning system 110 using a variety of communication signals and / or commands, such as acceleration signals or commands, deceleration signals or commands, steering signals or commands, braking signals or commands, etc.
[0028] Components 110 to 115 may be communicatively coupled to each other via an interconnect, a bus, a network, or a combination thereof. For example, components 110 to 115 may be communicatively coupled to each other via a controller area network (CAN) bus. The CAN bus is a vehicle bus standard designed to allow microcontrollers and devices to communicate with each other in applications without a host. It is a message-based protocol originally designed for multiplexed electrical wiring within an automobile, but is also used in many other environments.
[0029] Reference now Figure 2In one embodiment, the sensor system 115 includes, but is not limited to, one or more cameras 211, a global positioning system (GPS) unit 212, an inertial measurement unit (IMU) 213, a radar unit 214, and a light detection and ranging (LIDAR) unit 215. The GPS system 212 may include a transceiver operable to provide information about the location of the autonomous vehicle. The IMU unit 213 may sense the position and orientation changes of the autonomous vehicle based on inertial acceleration. The radar unit 214 may represent a system that uses radio signals to sense objects within the local environment of the autonomous vehicle. In some embodiments, in addition to sensing objects, the radar unit 214 may additionally sense the speed and / or heading of the object. The LIDAR unit 215 may use lasers to sense objects in the environment of the autonomous vehicle. The LIDAR unit 215 may include, among other system components, one or more laser sources, a laser scanner, and one or more detectors. The camera 211 may include one or more devices for capturing images of the environment surrounding the autonomous vehicle. The camera 211 may be a still camera and / or a video camera. The camera may be mechanically movable, for example, by mounting the camera on a rotating and / or tilting platform.
[0030] The sensor system 115 may also include other sensors, such as: a sonar sensor, an infrared sensor, a steering sensor, a throttle sensor, a brake sensor, and an audio sensor (e.g., a microphone). The audio sensor may be configured to collect sound from the environment surrounding the autonomous vehicle. The steering sensor may be configured to sense the steering angle of the steering wheel, the wheels of the vehicle, or a combination thereof. The throttle sensor and the brake sensor sense the throttle position and the brake position of the vehicle, respectively. In some cases, the throttle sensor and the brake sensor may be integrated into an integrated throttle / brake sensor.
[0031] In one embodiment, the vehicle control system 111 includes, but is not limited to, a steering unit 201, a throttle unit 202 (also referred to as an acceleration unit), and a brake unit 203. The steering unit 201 is used to adjust the direction or forward direction of the vehicle. The throttle unit 202 is used to control the speed of the motor or engine, which in turn controls the speed and acceleration of the vehicle. The brake unit 203 decelerates the vehicle by providing friction to decelerate the wheels or tires of the vehicle. It should be noted that, as Figure 2 The components shown may be implemented in hardware, software or a combination thereof.
[0032] Back to Figure 1, the wireless communication system 112 allows communication between the autonomous driving vehicle 101 and external systems such as devices, sensors, other vehicles, etc. For example, the wireless communication system 112 can communicate directly with one or more devices wirelessly, or communicate wirelessly via a communication network, such as communicating with servers 103 to 104 through the network 102. The wireless communication system 112 can use any cellular communication network or wireless local area network (WLAN), for example, using WiFi, to communicate with another component or system. The wireless communication system 112 can communicate directly with a device (e.g., a passenger's mobile device, a display device, a speaker in the vehicle 101) using, for example, an infrared link, Bluetooth, etc. The user interface system 113 can be part of a peripheral device implemented in the vehicle 101, including, for example, a keyboard, a touch screen display device, a microphone, and a speaker.
[0033] Some or all of the functions of the autonomous vehicle 101 may be controlled or managed by the perception and planning system 110, particularly when operating in an autonomous mode. The perception and planning system 110 includes the necessary hardware (e.g., processor, memory, storage device) and software (e.g., operating system, planning and routing program) to receive information from the sensor system 115, the control system 111, the wireless communication system 112, and / or the user interface system 113, process the received information, plan a route or path from a starting point to a destination point, and then drive the vehicle 101 based on the planning and control information. Alternatively, the perception and planning system 110 may be integrated with the vehicle control system 111.
[0034] For example, a user as a passenger may specify a starting location and a destination of a trip, for example, via a user interface. The perception and planning system 110 obtains trip-related data. For example, the perception and planning system 110 may obtain location and route information from an MPOI server, which may be part of the servers 103 to 104. The location server provides location services, and the MPOI server provides map services and POIs of certain locations. Alternatively, such location and MPOI information may be locally cached in a permanent storage device of the perception and planning system 110.
[0035] As the autonomous vehicle 101 moves along the route, the perception and planning system 110 may also obtain real-time traffic information from a traffic information system or server (TIS). It should be noted that the servers 103 to 104 may be operated by a third-party entity. Alternatively, the functionality of the servers 103 to 104 may be integrated with the perception and planning system 110. Based on real-time traffic information, MPOI information, and location information, as well as real-time local environmental data (e.g., obstacles, objects, nearby vehicles) detected or sensed by the sensor system 115, the perception and planning system 110 may plan an optimal route and drive the vehicle 101 according to the planned route, for example, via the control system 111, to safely and efficiently reach a designated destination.
[0036] The server 103 may be a data analysis system, thereby performing data analysis services for various clients. In one embodiment, the data analysis system 103 includes a data collector 121 and a machine learning engine 122. The data collector 121 collects driving statistics 123 from various vehicles (autonomous driving vehicles or conventional vehicles driven by human drivers). The driving statistics 123 include information indicating the driving instructions issued (e.g., throttle, brake, steering instructions) and the responses of the vehicle (e.g., speed, acceleration, deceleration, direction) captured by the vehicle's sensors at different points in time. The driving statistics 123 may also include information describing the driving environment at different points in time, such as routes (including starting and destination locations), MPOI, road conditions, climate conditions, etc.
[0037] Based on the driving statistics 123, the machine learning engine 122 generates or trains a set of rules, algorithms and / or prediction models 124 for various purposes. In one embodiment, for example, the algorithm 124 may include an optimization method to optimize path planning and speed planning. The path planning optimization method can select a path trajectory with a minimum cost function. One component of the cost function is the obstacle cost. The path trajectory can be discretized into multiple discrete points. The obstacle cost of each discrete point can be accumulated using a first cost function starting from a starting discrete point on the path trajectory and gradually through discrete points that are successively away from the starting point until the first discrete point overlapping with the obstacle is found.
[0038] For discrete points that do not overlap with obstacles, the farther the discrete point is from the obstacle, the lower the obstacle cost of the discrete point. The obstacle cost of the first discrete point that is found to overlap with an obstacle is calculated using a second cost function based on the distance between the first discrete point and the starting discrete point. The farther the first discrete point is from the starting discrete point, the lower the obstacle cost of the first discrete point may be. The obstacle cost of the first discrete point that is found to overlap with an obstacle can be added to the accumulated obstacle costs of the remaining discrete points before the first discrete point to determine the obstacle cost of the path trajectory. The algorithm 124 including the path planning optimization method can be uploaded to the autonomous driving vehicle for generating a path trajectory for the vehicle in real time.
[0039] Figure 3A and Figure 3B is a block diagram illustrating an example of a perception and planning system for use with an autonomous vehicle according to one embodiment. System 300 may be implemented as Figure 1 A portion of an autonomous vehicle 101 includes, but is not limited to, a perception and planning system 110, a control system 111, and a sensor system 115. Figure 3A and Figure 3B The perception and planning system 110 includes but is not limited to a positioning module 301 , a perception module 302 , a prediction module 303 , a decision module 304 , a planning module 305 , a control module 306 , and a route module 307 .
[0040] Some or all of the modules 301 to 307 may be implemented in software, hardware, or a combination thereof. For example, these modules may be installed in permanent storage 352, loaded into memory 351, and executed by one or more processors (not shown). It should be noted that some or all of these modules may be communicatively coupled to Figure 2 Some or all modules of the vehicle control system 111 of the embodiment of the present invention may be integrated with them. Some of the modules 301 to 307 may be integrated together into an integrated module. For example, the decision module 304 and the planning module 305 may be integrated into a single module.
[0041] The positioning module 301 determines the current location of the autonomous vehicle 300 (e.g., using the GPS unit 212) and manages any data related to the user's trip or route. The positioning module 301 (also referred to as the map and route module) manages any data related to the user's trip or route. The user can log in, for example, via a user interface and specify the starting location and destination of the trip. The positioning module 301 communicates with other components of the autonomous vehicle 300, such as map and route information 311, to obtain trip-related data. For example, the positioning module 301 can obtain location and route information from a location server and a map and POI (MPOI) server. The location server provides location services, and the MPOI server provides map services and POIs at certain locations, which can be cached as part of the map and route information 311. As the autonomous vehicle 300 moves along the route, the positioning module 301 can also obtain real-time traffic information from a traffic information system or server.
[0042] Based on the sensor data provided by the sensor system 115 and the positioning information obtained by the positioning module 301, the perception module 302 determines the perception of the surrounding environment. The perception information can represent what an average driver would perceive around the vehicle that the driver is driving. The perception can include, for example, lane configuration in the form of objects (e.g., straight lanes or curved lanes), traffic light signals, the relative position of another vehicle, pedestrians, buildings, crosswalks or other traffic-related signs (e.g., stop signs, yield signs), etc. The lane configuration includes information describing one lane or multiple lanes, such as the shape of the lane (straight or curved), the width of the lane, the number of lanes in the road, one-way or two-way lanes, merging or diverging lanes, leaving lanes, etc.
[0043] The perception module 302 may include a computer vision system or the functionality of a computer vision system to process and analyze images captured by one or more cameras to identify objects and / or features in the autonomous vehicle environment. The objects may include traffic signals, road boundaries, other vehicles, pedestrians, and / or obstacles, etc. The computer vision system may use object recognition algorithms, video tracking, and other computer vision techniques. In some embodiments, the computer vision system may map the environment, track objects, and estimate the speed of objects, etc. The perception module 302 may also detect objects based on other sensor data provided by other sensors such as radar and / or LIDAR.
[0044] For each object, the prediction module 303 predicts how the object will behave in this situation. The prediction is performed based on a set of map / route information 311 and traffic rules 312, based on the perception data of the driving environment at that point in time. For example, if the object is a vehicle in the opposite direction and the current driving environment includes an intersection, the prediction module 304 will predict whether the vehicle is likely to go straight ahead or turn. If the perception data indicates that there is no traffic light at the intersection, the prediction module 304 may predict that the vehicle may need to come to a complete stop before entering the intersection. If the perception data indicates that the vehicle is currently in a left-turn-only lane or a right-turn-only lane, the prediction module 303 may predict that the vehicle will be more likely to turn left or right, respectively.
[0045] For each object, the decision module 304 makes a decision about how to handle the object. For example, for a particular object (e.g., another vehicle in a crossing path) and metadata describing the object (e.g., speed, direction, turn angle), the decision module 304 decides how to encounter the object (e.g., overtake, yield, stop, pass). The decision module 304 can make such decisions based on a rule set such as traffic rules or driving rules 312, which can be stored in the persistent storage device 352.
[0046] Based on the decision for each of the perceived objects, the planning module 305 plans a path or route and driving parameters (e.g., distance, speed, and / or turning angle) for the autonomous vehicle. In other words, for a given object, the decision module 304 decides what to do with the object, and the planning module 305 determines how to do it. For example, for a given object, the decision module 304 may decide to overtake the object, and the planning module 305 may determine whether to overtake on the left or right side of the object. Planning and control data are generated by the planning module 305 and include information describing how the vehicle 300 will move in the next movement cycle (e.g., the next route / path segment). For example, the planning and control data may indicate that the vehicle 300 moves at a speed of 30 miles per hour (mph) for 10 meters and then changes to the right lane at a speed of 25 mph.
[0047] Based on the planning and control data, the control module 306 controls and drives the autonomous vehicle according to the route or path defined by the planning and control data by sending appropriate commands or signals to the vehicle control system 111. The planning and control data includes sufficient information to drive the vehicle from a first point on the route or path to a second point using appropriate vehicle settings or driving parameters (e.g., throttle, braking, and turning commands) at different points in time along the route or path.
[0048] In one embodiment, the planning phase is performed in multiple planning cycles (also referred to as instruction cycles), for example, in each cycle with a time interval of 100 milliseconds (ms). For each of the planning cycles or instruction cycles, one or more control instructions will be issued based on the planning and control data. That is, for every 100ms, the planning module 305 plans the next route segment or path segment, for example, including the target position and the time required for the ADV to reach the target position. Alternatively, the planning module 305 can also specify specific speeds, directions and / or steering angles, etc. In one embodiment, the planning module 305 plans the route segment or path segment for the next predetermined period (such as 5 seconds). For each planning cycle, the planning module 305 plans the target position for the current cycle (e.g., the next 5 seconds) based on the target position planned in the previous cycle. The control module 306 then generates one or more control instructions (e.g., throttle, brake, steering control instructions) based on the planning and control data of the current cycle.
[0049] It should be noted that the decision module 304 and the planning module 305 can be integrated into an integrated module. The decision module 304 / planning module 305 can include a navigation system or the functionality of a navigation system to determine a driving path for an autonomous vehicle. For example, the navigation system can determine a series of speeds and directions for enabling the autonomous vehicle to move along a path that substantially avoids perceived obstacles while allowing the autonomous vehicle to move along a roadway-based path to a final destination. The destination can be set based on user input via the user interface system 113. The navigation system can dynamically update the driving path while the autonomous vehicle is running. The navigation system can combine data from a GPS system and one or more maps to determine a driving path for the autonomous vehicle.
[0050] The decision module 304 / planning module 305 may also include the functionality of a collision avoidance system or a collision avoidance system to identify, evaluate and avoid or otherwise navigate potential obstacles in the environment of the autonomous vehicle. For example, the collision avoidance system may implement changes in the navigation of the autonomous vehicle by operating one or more subsystems in the control system 111 to take a turn maneuver, a turning maneuver, a braking maneuver, etc. The collision avoidance system may automatically determine feasible obstacle avoidance maneuvers based on surrounding traffic patterns, road conditions, etc. The collision avoidance system may be configured so that a turn maneuver is not taken when other sensor systems detect vehicles, building obstacles, etc. located in an adjacent area into which the autonomous vehicle will turn. The collision avoidance system may automatically select a maneuver that is both usable and maximizes the safety of the autonomous vehicle occupants. The collision avoidance system may select an avoidance maneuver that predicts the minimum amount of acceleration to occur in the passenger compartment of the autonomous vehicle.
[0051] The route module 307 is configured to provide one or more routes or paths from the starting point to the destination point. For a given trip from the starting position to the destination position, such as a given trip received from a user, the route module 307 obtains the route and map information 311 and determines all possible routes or paths from the starting position to the destination position. The route module 307 can generate a reference line in the form of a topographic map, which determines each route from the starting position to the destination position. The reference line refers to an ideal route or path that is not interfered by any other factors such as other vehicles, obstacles or traffic conditions. That is, if there are no other vehicles, pedestrians or obstacles on the road, the ADV should follow the reference line accurately or closely. Then, the topographic map is provided to the decision module 304 and / or the planning module 305. The decision module 304 and / or the planning module 305 check all possible routes to select and change one of the best routes based on other data provided by other modules, wherein other data such as traffic conditions from the positioning module 301, the driving environment perceived by the perception module 302, and traffic conditions predicted by the prediction module 303. Depending on the particular driving circumstances at a point in time, the actual path or route used to control the ADV may be close to or different from the reference line provided by the route module 307 .
[0052] In one embodiment, the decision module 304 generates a rough path curve based on the reference line provided by the route module 307 and based on obstacles and / or traffic information perceived by the ADV. The rough path curve can be a portion of the path / speed curve 313 that can be stored in the permanent storage device 352. The rough path curve is generated by selecting points along the reference line. For each point, the decision module 304 moves the point to the left or right side of the reference line (e.g., candidate moves) based on one or more obstacle decisions about how to encounter the object, while the remaining points remain stationary. The candidate moves are selected using the method as Figure 3A The cost function 315 of a portion of the cost function is iteratively performed by dynamically programming the path candidates during the process of searching for the path candidate with the lowest path cost, thereby generating a rough path curve. Examples of cost functions include costs based on the following items: the curvature of the route path, the distance from the ADV to the perceived obstacle, and the distance from the ADV to the reference line.
[0053] In one embodiment, the decision module 304 generates a rough speed profile (as part of the path / speed profile 313) based on the generated rough path profile. The rough speed profile indicates the optimal speed for controlling the ADV at a specific point in time. Similar to the rough path profile, candidate speeds at different points in time are iterated using dynamic programming to determine the optimal speed based on obstacles perceived by the ADV as a function of the speed of the ADV. Figure 3AThe cost function 315 of the portion of the cost function finds the speed candidate (eg, acceleration or deceleration) with the lowest speed cost. The rough speed profile determines whether the ADV should overtake or avoid an obstacle, and whether to avoid to the left or right of the obstacle.
[0054] In one embodiment, the planning module 305 recalculates the rough path curve based on the obstacle decision and / or artificial barrier to prohibit the planning module 305 from searching the geometric space of the barrier. For example, if the rough speed profile determines that the obstacle is approached from the left, the planning module 305 can set the barrier (in the form of an obstacle) to the right of the obstacle to prevent the calculation of the ADV from approaching the obstacle from the right side. In one embodiment, the rough path curve is recalculated by optimizing the cost function (as part of function 315) using quadratic programming (QP).
[0055] In one embodiment, the planning module 305 recalculates the rough speed profile using quadratic programming (QP) optimization of the speed cost function (as part of the cost function 315). Similar speed barrier constraints can be added to prohibit the QP solver from searching for some forbidden speeds.
[0056] It should be noted that some or all of the components shown and described above can be implemented in software, hardware, or a combination thereof. For example, such components can be implemented as software installed and stored in a permanent storage device, which can be loaded in a memory by a processor (not shown) and executed in the memory to implement the process or operation described throughout the present application. Alternatively, such components can be implemented as executable code programmed or embedded in dedicated hardware (such as an integrated circuit (e.g., an application-specific integrated circuit or ASIC), a digital signal processor (DSP), or a field programmable gate array (FPGA)), which can be accessed via a corresponding driver and / or operating system from an application. In addition, such components can be implemented as specific hardware logic in a processor or processor core as part of an instruction set that can be accessed by a software component through one or more specific instructions.
[0057] Figure 4 is a block diagram illustrating an example of a decision making and planning process according to one embodiment. Figure 5 is a block diagram illustrating an example of the decision module 304 according to one embodiment. Figure 4 The decision and planning process 400 includes a route module 307 , positioning / sensing data 401 , a path decision process 403 , a speed decision process 405 , a path planning process 407 , a speed planning process 409 and a trajectory calculator 413 .
[0058] The path decision process 403 and the speed decision process 405 can be respectively Figure 5The path decision module 501 and the speed decision module 503 of the decision module 304 are executed. Figure 4 and Figure 5 , the path decision process 403 or the path decision module 501 includes a path state machine 505 and path traffic rules 507. The path decision process 403 or the path decision module 501 can use dynamic programming to generate a rough path curve as the initial constraint of the path / speed planning process 407 and 409. In one embodiment, the path state machine 505 includes at least three states: cruising, changing lanes, and idle state. The path state machine 505 provides previous planning results and important information, such as whether the ADV is cruising or changing lanes. As Figure 3A Path traffic rules 507, which are part of the driving / traffic rules 312 of the ADV, include traffic rules that may affect the results of the path decision module. For example, the path traffic rules 507 may include traffic information, such as construction traffic signs, so that the ADV can avoid lanes with these construction signs. Based on the state provided by the path state machine 504, traffic rules, reference lines provided by the route module 307, and obstacles perceived by the ADV, the path decision process 403 can decide how the perceived obstacles are handled (i.e., ignore, overtake, yield, stop, exceed) as part of the rough path curve.
[0059] For example, in one embodiment, a rough path curve is generated by a cost function consisting of costs based on the following items: the curvature of the path, and the distance from the reference line and / or reference point to the obstacle. Points on the reference line are selected and moved to the left or right side of the reference line as candidate moves representing path candidates. Each candidate move has an associated cost. The associated costs of candidate moves of one or more points on the reference line can be solved sequentially for the optimal cost one point at a time using dynamic programming. Dynamic programming (or dynamic optimization) is a mathematical optimization method and decomposes the problem to be solved into a series of value functions, solving each of these value functions at one time and storing their solutions. The next time the same value function appears, instead of recalculating its solution, simply look up the previously calculated solution to save computing time.
[0060] The speed decision process 405 or speed decision module 503 includes a speed state machine 511 and a speed traffic rule 513. The speed decision process 405 or speed decision module 503 can use dynamic programming to generate a rough speed profile as an initial constraint for the path / speed planning process 407 and 409. In one embodiment, the speed state machine 511 includes at least two states: an acceleration state and a deceleration state. Figure 3ASpeed traffic rules 513, which are part of the driving / traffic rules 312 of the ADV, include traffic rules that can affect the results of the speed decision module. For example, speed traffic rules 513 may include traffic information such as red / green traffic lights, another vehicle in a crossing route, etc. Based on the state of the speed state machine, speed traffic rules, the rough path curve generated by the decision process 403, and perceived obstacles, the speed decision process 405 can generate a rough speed curve to control when the ADV accelerates and / or decelerates.
[0061] refer to Figure 4 , the path planning process 407 can use the rough path curve as an initial constraint to recalculate the best reference line using quadratic programming. Quadratic programming involves minimizing or maximizing an objective function (e.g., a quadratic function of several variables) based on boundary, linear equality, and / or inequality constraints. One difference between dynamic programming and quadratic programming is that quadratic programming optimizes all candidate moves for all points on the reference line at once. The path planning process 407 can be used as Figure 3A The path cost function as part of cost function 315 recalculates the reference line to optimize the total cost of candidate moves of the reference point, for example using the QP optimization performed.
[0062] The speed planning process 409 can use the rough speed profile and the results of the path planning process 407 as initial constraints to calculate the optimal station-time profile as Figure 3A The trajectory generator 413 may be used as part of the cost function 315 to optimize the total cost of the move candidates (e.g., acceleration / deceleration) at different time points. The trajectory generator 413 may calculate the final trajectory for controlling the ADV. For example, the trajectory generator 413 may calculate a series of points (x, y, T) indicating when the ADV should pass through a specific (x, y) coordinate.
[0063] Therefore, a rough path curve and a rough speed curve that take into account obstacles and / or traffic conditions are generated using the path decision process 403 and the speed decision process 405. Given all the path decisions and speed decisions about obstacles, the path planning process 407 and the speed planning process 409 will use QP programming to optimize the rough path curve and speed curve according to the obstacles to generate the best trajectory with the minimum path cost and / or speed cost.
[0064] Figure 6 601 and 602. FIG. 602 is a diagram showing a scenario for path planning according to one embodiment. The scenario is represented in a station-lateral coordinate, where the origin represents the current position of the vehicle, the x-coordinate represents the forward distance, and the y-axis represents the lateral distance from the current position of the vehicle. The first boundary line 601 and the second boundary line 602 may represent road boundaries or lane boundaries. Figure 6The scene depicted in FIG. 6 shows a first obstacle 603 located at a positive lateral distance near a first boundary line 601 some distance ahead of the vehicle. A second obstacle 605 is located at a negative lateral distance near a second boundary line 602 some distance ahead of the first obstacle 603. Three additional obstacles 607, 609, and 611 are located further away in the forward direction. The obstacles may be objects, vehicles, pedestrians, barriers, or other obstacles that the vehicle is to avoid. An obstacle may be surrounded by an area that is larger than the physical size of the obstacle, wherein the vehicle is also to avoid the area.
[0065] As discussed above, the path decision process can generate a reference line for the vehicle based on a cost function, wherein the cost function takes into account the curvature of the road, the distance from the reference line to obstacles, etc. In one embodiment, the reference line can be in the middle of the road or in the middle of the lane. The path planning process can optimize the reference line to find the path trajectory with the lowest cost from multiple candidate trajectories based on the path cost function. Therefore, the generated path trajectory deviates from the reference line in some sections to maneuver the vehicle around obstacles. The path planning process can plan a path for the vehicle along a path length of a certain forward distance from the current position of the vehicle. In one embodiment, the path length can be 150 meters to 200 meters. In one embodiment, the path length can be a function of the current speed of the vehicle so that the path length increases for faster vehicles.
[0066] exist Figure 6 , the path length may be longer than the distance of obstacles 607, 609, and 611 from the vehicle. When the path planning process plans a path for this path length, it may detect that although path A (615) allows the vehicle to maneuver around nearby obstacles 603 and 605, distant obstacles 607, 609, and 611 may block the vehicle from continuing on the road or lane. Because the path planning process cannot successfully find a path (i.e., a path that satisfies the constraints imposed by the cost function to stay within the road boundary but not collide with obstacles or not enter within a safe distance of obstacles), the path planning process may default to an alternate path 613. The alternate path 613 may be a path along the middle of the road or lane. In one embodiment, the alternate path 613 may be a reference line for the path decision process 403. However, the alternate path 613 may pass through the obstacle 603 or the area around the obstacle 603. Therefore, the vehicle may stop in front of obstacle 603, rather than traveling along path A (615) to maneuver around obstacles 603 and 605 until it is blocked from continuing by obstacles 607, 609, and 611.
[0067] Figure 7 is a diagram illustrating a path trajectory determined by a path planning operation according to one embodiment. Figure 7 The scenes and Figure 6The same scenario as in . In order to allow the vehicle to travel further even when a feasible path that runs through the entire length of the path may not be generated due to being blocked by distant obstacles, it is desired that the path that overlaps with obstacles that are farther away from the current position of the vehicle has a lower cost. The cost function of the path can have two components: a path cost component that is a function of path characteristics (e.g., the length, curvature, curvature variation, etc. of the path), and an obstacle cost component. The obstacle cost component of the path can be a function of the proximity of the path to the obstacle. For example, a path far from an obstacle tends to have a lower obstacle cost than a path close to the obstacle. In one embodiment, the inverse relationship between the distance to a non-overlapping obstacle and the obstacle cost of the path can be extended to the relationship between the distance from the current position of the vehicle to the overlapping obstacle and the obstacle cost of the path that overlaps with the obstacle.
[0068] In one embodiment, the path planning process may discretize the path into multiple discrete points to determine the obstacle cost of the path. The path planning process may calculate the obstacle cost of the path by accumulating the obstacle cost for multiple discrete points starting from the starting discrete point of the path (e.g., a discrete point representing the current position of the vehicle). Starting from the starting discrete point and stepping through discrete points that are successively farther away from the starting discrete point, the path planning function may use a first cost function to calculate and accumulate obstacle costs for multiple discrete points until one of the discrete points overlaps with an obstacle. For the first cost function for discrete points that do not overlap with obstacles, there may be an inverse relationship between the obstacle cost and the distance from the discrete point to the non-overlapping obstacle. For example, Figure 7 Path A 715 in FIG. 7 shows a trajectory that initially bends in a negative lateral direction to increase the distance from obstacle 603 and then bends in a positive lateral direction to increase the distance from obstacle 605 after it passes obstacle 603 to minimize the obstacle cost of discrete points on the trajectory. The path planning process can calculate the obstacle cost of each discrete point on path A 715 as a function of the distance of the discrete point to the nearest obstacle 603 or 605. In one embodiment, the path planning process can optimize the obstacle cost of the reference line to generate path A 715 from multiple candidate moves of the reference line. For example, path A 715 can have the lowest cumulative obstacle cost of discrete points on its trajectory compared to other candidate paths. It should be noted that path A 715 stabilizes towards the backup path 613 after passing obstacle 605 to minimize the obstacle cost.
[0069] The path planning process uses the first cost function to accumulate obstacle costs for multiple discrete points on path A 715 until a first discrete point that overlaps an obstacle is found, such as obstacle overlap point 717. For obstacle overlap point 717, the path planning process uses a second cost function to determine its obstacle cost. The second cost function for the obstacle overlap discrete point is a function of the distance between the obstacle overlap discrete point and the starting discrete point of the path. For example, the obstacle cost of obstacle overlap point 717 is a function of the distance between obstacle overlap point 717 and the current position of the vehicle, or the distance between the blocking obstacle 609 and the current position of the vehicle. It is desirable that the obstacle cost of the obstacle overlap point decreases as the distance between the obstacle overlap point and the starting discrete point increases.
[0070] Figure 8 1 is a diagram showing an obstacle collision function for determining obstacle costs for obstacle overlap points according to one embodiment. The x-axis shows the distance of the obstacle overlap point from the starting point, and the y-axis shows the obstacle cost. As shown in the figure, the cost function is fixed to a high level at a distance between 0 and a first distance (e.g., 20 m). For this reason, a blocking obstacle less than 20 m from the current position of the vehicle may cause the path trajectory to have a high obstacle cost. Between the first distance and the second distance, for example, between 20 m and 220 m, the cost function decreases monotonically from a high level until it reaches a low level. The obstacle cost of a blocking obstacle within this range decreases as the blocking obstacle moves away from the current position of the vehicle. For distances beyond the second distance (e.g., 220 m), the obstacle cost may be kept at a low level because the blocking obstacle at this distance may not have any substantial effect on the obstacle cost.
[0071] Back to Figure 7 , the path planning process calculates the obstacle cost for the obstacle overlap point 717 using the second cost function, and adds the calculated obstacle cost of the obstacle overlap point 717 to the obstacle cost of path A 715. After finding the first obstacle overlap discrete point, the path planning process can terminate the accumulation of obstacle costs for discrete points along the path. As such, a path that is blocked by more than one obstacle or overlaps with an obstacle at more than one discrete point may not have its obstacle cost increased. This prevents a path with multiple obstacle overlap discrete points located farther away from having a higher obstacle cost than a second path with only one obstacle overlap discrete point that is closer to the vehicle's current location.
[0072] The path planning process can calculate obstacle costs for multiple paths to pick the path with the lowest obstacle cost. Figure 7Path B 713 is shown. The path planning process may discretize path B 713 and may calculate and accumulate obstacle costs for discrete points until a discrete point 719 overlapping the first obstacle is found. Because the first obstacle overlapping discrete point 719 is near the current position of the vehicle, the cost function of this point is high. Therefore, the obstacle cost of path B 713 may be higher than the obstacle cost of path A 715. In one embodiment, when the obstacle cost of a path is above a threshold, the path may be defaulted to an alternate path, such as alternate path 613. Therefore, the path planning process selects path A 715 to maneuver the vehicle around nearby non-blocking obstacles 603 and 605 to allow the vehicle to stop in front of distant blocking obstacles 607, 609, and 611, rather than in front of non-blocking obstacles 603 and 605.
[0073] Fig. 9 800 is a flow chart illustrating a path planning process according to one embodiment. Process 800 may be performed by processing logic, which may include software, hardware, or a combination thereof. Fig. 9 In box 801, for each discrete point in the path trajectory planned for the ADV starting from the starting discrete point, the processing logic determines whether the discrete point overlaps with an obstacle. In box 802, in response to determining that the discrete point does not overlap with an obstacle, the processing logic determines an obstacle cost for the discrete point using a first cost function. In box 803, in response to determining that the discrete point overlaps with an obstacle, the processing logic determines an obstacle cost for the discrete point using a second cost function. In box 804, the processing logic calculates a total obstacle cost for the path trajectory based on the obstacle costs of the discrete points. The total obstacle cost is used to determine whether the path trajectory can be used to drive the ADV.
[0074] Fig.10 is a flow chart showing a path planning method according to another embodiment. The path planning method 900 can be performed by a processing logic, which can include software, hardware, or a combination thereof. For example, the path planning method 800 can be performed by a decision module 304, a planning module 305, or a planning decision module 501 of an autonomous driving vehicle. In box 901, the method 900 performs path planning by discretizing the path trajectory into a plurality of discrete points. In box 903, the method 900 selects a starting discrete point on the path trajectory (e.g., the current position of the vehicle) as the current discrete point.
[0075] At box 905, method 900 determines whether the current discrete point overlaps with an obstacle. At box 907, if the current discrete point does not overlap with an obstacle, method 900 calculates the obstacle cost for the current discrete point using the first obstacle cost function. At box 909, method 900 determines whether there are more discrete points on the path trajectory. At box 911, if there are more discrete points on the path trajectory, method 900 selects the next discrete point farther from the starting point as the current discrete point. Then method 900 repeatedly determines whether the current discrete point overlaps with an obstacle, and calculates and accumulates the cost function of the discrete point until the first discrete point that overlaps with the obstacle is found.
[0076] At block 913, if a first discrete point overlapping an obstacle is found, method 900 calculates the distance from the first discrete point to the starting discrete point. At 915, method 900 calculates the obstacle cost of the obstacle overlapping discrete point using a second obstacle cost function. At 917, method 900 adds the obstacle cost of the obstacle overlapping discrete point to the obstacle cost of the path before the obstacle overlapping discrete point.
[0077] At block 919, the method 900 determines whether the accumulated obstacle cost is greater than a threshold. If the accumulated obstacle cost is not greater than the threshold, at block 923, the method 900 assigns the accumulated obstacle cost as the obstacle cost of the path trajectory. Otherwise, at block 921, the method 900 uses an alternate path trajectory.
[0078] Fig.11 is a block diagram illustrating an example of a data processing system that can be used with one embodiment of the present disclosure. For example, system 1000 can represent any data processing system described above that performs any of the above processes or methods, such as Figure 1 Includes Figure 3A and Figure 3B The decision module 304, the planning module 305, Figure 5 The path decision module 501 of the perception and planning system 110 or any one of the servers 103 to 104. The system 1000 may include many different components. These components may be implemented as integrated circuits (ICs), parts of integrated circuits, discrete electronic devices, or other modules suitable for circuit boards (such as motherboards or plug-in cards of computer systems) or implemented as components otherwise incorporated into the chassis of computer systems.
[0079] It should also be noted that system 1000 is intended to illustrate a high-level view of many components of a computer system. However, it should be understood that additional components may be provided in certain embodiments, and in addition, different arrangements of the components shown may be provided in other embodiments. System 1000 may represent a desktop computer, a laptop computer, a tablet computer, a server, a mobile phone, a media player, a personal digital assistant (PDA), a smart watch, a personal communicator, a gaming device, a network router or hub, a wireless access point (AP) or a repeater, a set-top box, or a combination thereof. In addition, although only a single machine or system is shown, the term "machine" or "system" should also be understood to include any set of machines or systems that individually or collectively execute one (or more) instruction sets to execute any one or more methods discussed herein.
[0080] In one embodiment, system 1000 includes a processor 1001, a memory 1003, and devices 1005 to 1008 connected by a bus or interconnect 1010. Processor 1001 may represent a single processor or multiple processors including a single processor core or multiple processor cores. Processor 1001 may represent one or more general-purpose processors, such as a microprocessor, a central processing unit (CPU), etc. More specifically, processor 1001 may be a complex instruction set computing (CISC) microprocessor, a reduced instruction set computing (RISC) microprocessor, a very long instruction word (VLIW) microprocessor, or a processor implementing other instruction sets, or a processor implementing a combination of instruction sets. Processor 1001 may also be one or more special-purpose processors, such as an application-specific integrated circuit (ASIC), a cellular or baseband processor, a field programmable gate array (FPGA), a digital signal processor (DSP), a network processor, a graphics processor, a communication processor, an encryption processor, a coprocessor, an embedded processor, or any other type of logic capable of processing instructions.
[0081] The processor 1001 (which may be a low-power multi-core processor socket, such as an ultra-low voltage processor) may act as a main processing unit and central hub for communicating with various components of the system. Such a processor may be implemented as a system on a chip (SoC). The processor 1001 is configured to execute instructions for performing the operations and steps discussed herein. The system 1000 may also include a graphics interface for communicating with an optional graphics subsystem 1004, which may include a display controller, a graphics processor, and / or a display device.
[0082] The processor 1001 may communicate with the memory 1003, which in one embodiment may be implemented via a plurality of memory devices to provide a certain amount of system storage. The memory 1003 may include one or more volatile storage (or memory) devices, such as random access memory (RAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), static RAM (SRAM), or other types of storage devices. The memory 1003 may store information including sequences of instructions to be executed by the processor 1001 or any other device. For example, executable code and / or data of various operating systems, device drivers, firmware (e.g., input-output basic system or BIOS), and / or applications may be loaded into the memory 1003 and executed by the processor 1001. The operating system may be any type of operating system, such as the Robot Operating System (ROS), a Company Operating system, Mac from Apple From Company LINUX, UNIX, or other real-time or embedded operating systems.
[0083] The system 1000 may also include IO devices, such as devices 1005 to 1008, including a network interface device 1005, an optional input device 1006, and other optional IO devices 1007. The network interface device 1005 may include a wireless transceiver and / or a network interface card (NIC). The wireless transceiver may be a WiFi transceiver, an infrared transceiver, a Bluetooth transceiver, a WiMax transceiver, a wireless cellular phone transceiver, a satellite transceiver (e.g., a global positioning system (GPS) transceiver) or other radio frequency (RF) transceivers or combinations thereof. The NIC may be an Ethernet card.
[0084] The input device 1006 may include a mouse, a touchpad, a touch-sensitive screen (which may be integrated with the display device 1004), a pointer device (such as a stylus), and / or a keyboard (e.g., a physical keyboard or a virtual keyboard displayed as part of a touch-sensitive screen). For example, the input device 1006 may include a touch screen controller coupled to a touch screen. The touch screen and touch screen controller may, for example, use any of a variety of touch-sensitive technologies (including, but not limited to, capacitive, resistive, infrared, and surface acoustic wave technologies), as well as other proximity sensor arrays or other elements for determining one or more points of contact with the touch screen to detect contact and movement or discontinuity thereof.
[0085] IO devices 1007 may include audio devices. The audio devices may include speakers and / or microphones to facilitate voice-enabled functions such as voice recognition, voice replication, digital recording, and / or telephone functions. Other IO devices 1007 may also include universal serial bus (USB) ports, parallel ports, serial ports, printers, network interfaces, bus bridges (e.g., PCI-PCI bridges), sensors (e.g., such as accelerometer motion sensors, gyroscopes, magnetometers, light sensors, compasses, proximity sensors, etc.), or combinations thereof. Device 1007 may also include an imaging processing subsystem (e.g., a camera), which may include an optical sensor such as a charge coupled device (CCD) or a complementary metal oxide semiconductor (CMOS) optical sensor for facilitating camera functions (e.g., recording photos and video clips). Certain sensors may be coupled to interconnect 1010 via a sensor hub (not shown), while other devices such as a keyboard or thermal sensor may be controlled by an embedded controller (not shown) according to the specific configuration or design of system 1000.
[0086] In order to provide permanent storage of information such as data, applications, one or more operating systems, etc., a mass storage device (not shown) may also be connected to the processor 1001. In various embodiments, in order to achieve a thinner and lighter system design and improve system responsiveness, such a mass storage device may be implemented via a solid-state device (SSD). However, in other embodiments, the mass storage device may be implemented primarily using a hard disk drive (HDD), wherein a smaller amount of SSD storage devices act as SSD caches to achieve non-volatile storage of context states and other such information during power-off events, thereby enabling fast power-on when system activities are restarted. In addition, a flash memory device may be connected to the processor 1001, for example, via a serial peripheral interface (SPI). Such a flash memory device may provide non-volatile storage of system software, including the BIOS and other firmware of the system.
[0087] The storage device 1008 may include a computer-accessible storage medium 1009 (also referred to as a machine-readable storage medium or a computer-readable medium) on which is stored one or more instruction sets or software (e.g., modules, units, and / or logic 1028) embodying any one or more of the methods or functions described herein. The processing module / unit / logic 1028 may represent any of the above-mentioned components, such as Figure 3A and Figure 3B The decision module 304 or the planning module 305 or Figure 5The processing module / unit / logic 1028 may also reside completely or at least partially in the memory 1003 and / or in the processor 1001 during its execution by the data processing system 1000, the memory 1003 and the processor 1001, which also constitute a machine-accessible storage medium. The processing module / unit / logic 1028 may also be transmitted or received via the network interface device 1005 through the network.
[0088] Computer-readable storage medium 1009 may also be used to permanently store some of the software functions described above. Although computer-readable storage medium 1009 is shown as a single medium in an exemplary embodiment, the term "computer-readable storage medium" should be considered to include a single medium or multiple media (e.g., a centralized or distributed database and / or associated caches and servers) storing the one or more instruction sets. The term "computer-readable storage medium" should also be considered to include any medium capable of storing or encoding an instruction set that is used to be executed by a machine and causes the machine to perform any one or more methods of the present disclosure. Therefore, the term "computer-readable storage medium" should be considered to include, but is not limited to, solid-state memory and optical and magnetic media, or any other non-temporary machine-readable medium.
[0089] The processing modules / units / logic 1028, components, and other features described herein may be implemented as discrete hardware components or integrated into the functionality of hardware components (such as ASICS, FPGAs, DSPs, or similar devices). In addition, the processing modules / units / logic 1028 may be implemented as firmware or functional circuits within a hardware device. In addition, the processing modules / units / logic 1028 may be implemented in any combination of hardware devices and software components.
[0090] It should be noted that although system 1000 is shown as having various components of a data processing system, it is not intended to represent any particular architecture or manner of interconnecting the components; as such details are not germane to the embodiments of the present disclosure. It should also be appreciated that network computers, handheld computers, mobile phones, servers, and / or other data processing systems having fewer or possibly more components may also be used with embodiments of the present disclosure.
[0091] Some portions of the foregoing detailed description have been presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is generally considered herein to be a self-consistent sequence of operations leading to a desired result. These operations are those requiring physical manipulation of physical quantities.
[0092] It should be borne in mind, however, that all of these and similar terms are intended to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless otherwise expressly indicated in the above discussion, it should be understood that throughout the specification, discussions utilizing terms such as those set forth in the appended claims refer to the actions and processes of a computer system or similar electronic computing device that manipulates data represented as physical (electronic) quantities within the computer system's registers and memories and transforms the data into other data similarly represented as physical quantities within the computer system's memories or registers or other such information storage, transmission, or display devices.
[0093] Embodiments of the present disclosure also relate to devices for performing the operations herein. Such a computer program is stored in a non-transitory computer-readable medium. A machine-readable medium includes any mechanism for storing information in a form readable by a machine (e.g., a computer). For example, a machine-readable (e.g., computer-readable) medium includes a machine (e.g., computer) readable storage medium (e.g., a read-only memory ("ROM"), a random access memory ("RAM"), a magnetic disk storage medium, an optical storage medium, a flash memory device).
[0094] The processes or methods depicted in the foregoing figures may be performed by processing logic including hardware (e.g., circuits, dedicated logic, etc.), software (e.g., embodied on a non-transitory computer-readable medium), or a combination of both. Although the processes or methods are described above in terms of some sequential operations, it should be understood that some of the operations may be performed in a different order. In addition, some operations may be performed in parallel rather than sequentially.
[0095] The embodiments of the present disclosure are not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the embodiments of the present disclosure as described herein.
[0096] In the above description, the disclosed embodiments have been described with reference to specific exemplary embodiments of the present disclosure. It will be apparent that various modifications may be made to the present disclosure without departing from the broader spirit and scope of the present disclosure as set forth in the appended claims. Therefore, the present description and the accompanying drawings should be understood in an illustrative sense rather than a restrictive sense.
Claims
1. A computer-implemented method for operating an autonomous vehicle (ADV), the method comprising: Discretize the path trajectory into a plurality of discrete points, and for each discrete point of the plurality of discrete points of the path trajectory planned for the ADV that are sequentially away from the starting point and that start from the starting discrete point, determine whether the discrete point overlaps with an obstacle; In response to determining that the discrete point does not overlap with an obstacle, determining an obstacle cost for the discrete point using a first cost function until a discrete point that overlaps with an obstacle is found; In response to determining that the discrete point overlaps with an obstacle, determining the obstacle cost for the discrete point using a second cost function, the second cost function being calculated based on a distance between the discrete point overlapping with the obstacle and the starting discrete point; A total obstacle cost is calculated for the path trajectory based on the obstacle costs of the discrete points, wherein the total obstacle cost is used to determine whether the path trajectory can be used to drive the ADV.
2. The method of claim 1, wherein the first cost function comprises an inverse relationship between an obstacle cost of a specific discrete point and a distance from the specific discrete point to a non-overlapping obstacle.
3. The method of claim 1 , wherein determining the obstacle cost using the second cost function comprises: If the distance between the first discrete point overlapping the obstacle and the starting discrete point is less than a first distance threshold, assigning a first overlapping obstacle cost to the first discrete point; as well as If the distance between the first discrete point and the starting discrete point is between the first distance threshold and a second distance threshold, a second overlapping obstacle cost is assigned to the first discrete point based on the distance. 4 . The method of claim 3 , further comprising assigning a third overlapping obstacle cost to the first discrete point if the distance is greater than the second distance threshold. 5 . The method of claim 3 , wherein the second overlapping obstacle cost decreases as the distance between the first discrete point and the starting discrete point increases between the first distance threshold and the second distance threshold.
6. The method according to claim 1, further comprising: comparing the total obstacle cost of the path trajectory to a cost threshold; as well as When the total obstacle cost of the path trajectory is greater than the cost threshold, an alternate path trajectory is used.
7. The method according to claim 1, wherein the path trajectory is one of a plurality of path trajectory candidates to be selected as a desired path trajectory for driving the ADV, wherein the method further comprises: comparing the total obstacle costs of each of the plurality of path trajectory candidates; as well as A path trajectory having the lowest total obstacle cost among the path trajectory candidates is selected as the desired path trajectory.
8. The method according to claim 1, further comprising: determining a path cost for the path trajectory based on a length or a curvature of the path trajectory; as well as A total cost of the path trajectory is calculated based on the total obstacle cost of the path trajectory and the path cost, wherein the total cost is used to determine whether the path trajectory can be used to drive the ADV.
9. A non-transitory machine-readable medium storing instructions that, when executed by a processor, cause the processor to perform operations comprising: Discretize the path trajectory into a plurality of discrete points, and for each discrete point of the plurality of discrete points of the path trajectory planned for the ADV that are sequentially away from the starting point and that start from the starting discrete point, determine whether the discrete point overlaps with an obstacle; In response to determining that the discrete point does not overlap with an obstacle, determining an obstacle cost for the discrete point using a first cost function until a discrete point overlaps with an obstacle; In response to determining that the discrete point overlaps with an obstacle, determining the obstacle cost for the discrete point using a second cost function, the second cost function being calculated based on a distance between the discrete point overlapping with the obstacle and the starting discrete point; as well as A total obstacle cost is calculated for the path trajectory based on the obstacle costs of the discrete points, wherein the total obstacle cost is used to determine whether the path trajectory can be used to drive the ADV.
10. The machine-readable medium of claim 9, wherein the first cost function comprises an inverse relationship between an obstacle cost for a particular discrete point and a distance from the particular discrete point to a non-overlapping obstacle.
11. The machine-readable medium of claim 9, wherein determining the obstacle cost using the second cost function comprises: If the distance between the first discrete point overlapping the obstacle and the starting discrete point is less than a first distance threshold, assigning a first overlapping obstacle cost to the first discrete point; as well as If the distance between the first discrete point and the starting discrete point is between the first distance threshold and a second distance threshold, a second overlapping obstacle cost is assigned to the first discrete point based on the distance.
12. The machine-readable medium of claim 11, wherein the operations further comprise assigning a third overlapping obstacle cost to the first discrete point if the distance is greater than the second distance threshold.
13. The machine-readable medium of claim 11, wherein the second overlapping obstacle cost decreases as a distance between the first discrete point and the starting discrete point increases between the first distance threshold and the second distance threshold.
14. The machine-readable medium of claim 9, wherein the operations further comprise: comparing the total obstacle cost of the path trajectory to a cost threshold; as well as When the total obstacle cost of the path trajectory is greater than the cost threshold, an alternate path trajectory is used.
15. The machine-readable medium of claim 9, wherein the path trajectory is one of a plurality of path trajectory candidates to be selected as a desired path trajectory for driving the ADV, wherein the operations further comprise: comparing the total obstacle costs of each of the plurality of path trajectory candidates; as well as A path trajectory having the lowest total obstacle cost among the path trajectory candidates is selected as the desired path trajectory.
16. The machine-readable medium of claim 9, wherein the operations further comprise: determining a path cost for the path trajectory based on a length or a curvature of the path trajectory; as well as A total cost of the path trajectory is calculated based on the total obstacle cost of the path trajectory and the path cost, wherein the total cost is used to determine whether the path trajectory can be used to drive the ADV.
17. A data processing system comprising: processor; as well as A memory coupled to the processor to store instructions, wherein when the instructions are executed by the processor, the processor performs operations, the operations comprising: Discretize the path trajectory into a plurality of discrete points, and for each discrete point of the plurality of discrete points of the path trajectory planned for the ADV that are sequentially away from the starting point and that start from the starting discrete point, determine whether the discrete point overlaps with an obstacle; In response to determining that the discrete point does not overlap with an obstacle, determining an obstacle cost for the discrete point using a first cost function until a discrete point overlaps with an obstacle; In response to determining that the discrete point overlaps with an obstacle, determining the obstacle cost for the discrete point using a second cost function, the second cost function being calculated based on a distance between the discrete point overlapping with the obstacle and the starting discrete point; and A total obstacle cost is calculated for the path trajectory based on the obstacle costs of the discrete points, wherein the total obstacle cost is used to determine whether the path trajectory can be used to drive the ADV.
18. The system of claim 17, wherein the first cost function comprises an inverse relationship between an obstacle cost of a specific discrete point and a distance of the specific discrete point to a non-overlapping obstacle.
19. The system of claim 17, wherein determining the obstacle cost using the second cost function comprises: If the distance between the first discrete point overlapping the obstacle and the starting discrete point is less than a first distance threshold, assigning a first overlapping obstacle cost to the first discrete point; as well as If the distance between the first discrete point and the starting discrete point is between the first distance threshold and a second distance threshold, a second overlapping obstacle cost is assigned to the first discrete point based on the distance.
20. The system of claim 19, wherein the operations further comprise assigning a third overlapping obstacle cost to the first discrete point if the distance is greater than the second distance threshold.
21. The system of claim 19, wherein the second overlapping obstacle cost decreases as the distance between the first discrete point and the starting discrete point increases between the first distance threshold and the second distance threshold.
22. The system of claim 17, the operations further comprising: comparing the total obstacle cost of the path trajectory to a cost threshold; as well as When the total obstacle cost of the path trajectory is greater than the cost threshold, an alternate path trajectory is used.
23. The system of claim 17, wherein the path trajectory is one of a plurality of path trajectory candidates to be selected as a desired path trajectory for driving the ADV, wherein the operations further comprise: comparing the total obstacle costs of each of the plurality of path trajectory candidates; as well as A path trajectory having the lowest total obstacle cost among the path trajectory candidates is selected as the desired path trajectory.
24. The system of claim 17, the operations further comprising: determining a path cost for the path trajectory based on a length or a curvature of the path trajectory; as well as A total cost of the path trajectory is calculated based on the total obstacle cost of the path trajectory and the path cost, wherein the total cost is used to determine whether the path trajectory can be used to drive the ADV.
