An autonomous vehicle (AV) must have a motion planning system to plan trajectories for the AV to execute. Each trajectory will include a path and a temporal solution (i.e., the correlation of times to points along the path, representing the times at which the AV will traverse the points on the path). Planned trajectories should be: (i) dynamically feasible for the AV to execute; (ii) safe (i.e., the trajectories will maintain sufficient distance from other road users and obstacles); (iii) compliant with rules of the road such as speed limits, lane markings, and the like; and (iv) comfortable for riders within the vehicle (for example, by avoiding extreme acceleration and/or jerk).
Motion planning for AVs is computationally challenging because it is high-dimensional. At minimum, the state space for the AV will include the pose of the vehicle on a manifold defined by a map (which includes x, y and yaw components) at each point in time. In order to plan feasible and comfortable trajectories, the state space also may include higher-order terms, such as velocity, acceleration and curvature.
To reduce dimensionality in AV motion planning calculation, AVs may implement motion planning in curvilinear coordinates, which is sometimes also referred to as planning in the “Frenét frame.” In the Frenét frame, the AV's three fundamental states in Cartesian coordinates {x, y, yaw} are replaced with two states {s, l}, where s is the distance along a reference curve and l is the lateral deviation of the vehicle from the reference curve. The reference curve is typically a continuous path through the center of a lane, although curvilinear coordinates are not necessarily limited to this exact positioning of the reference curve. Examples of such processes are disclosed in papers such as Héry et al., “Map-based Curvilinear Coordinates for Autonomous Vehicles,” IEEE Intelligent Transportation Systems Conference (2017).
While planning motion of an AV in curvilinear coordinates does help reduce dimensionality of the state space, the process is still mathematically challenging and requires a significant amount of processing resources. Mathematical challenges include: the transform from Cartesian to curvilinear coordinates is not a 1:1 mapping, and the mapping can be ambiguous near the center of curvature of each reference curve. For example,
This document describes methods and systems that are directed to addressing the problems described above, and/or other issues.
In various embodiments, to plan a trajectory for an autonomous vehicle, a motion planning system of the vehicle will determine a reference curve that represents a path via which the autonomous vehicle may travel in an environment over a time horizon. The motion planning system will receive, from a perception system of the autonomous vehicle, data representative of an actor that is moving in the environment. The motion planning system will segment the time horizon into a plurality of time intervals. For each of the time intervals, the motion planning system will identify a bounding geometry for the actor, wherein the bounding geometry represents a region of interest that surrounds the actor. The motion planning system will predict a lateral offset distance between the reference curve and the actor, and it will use the predicted lateral offset distances to determine a trajectory for the autonomous vehicle.
In some embodiments, the motion planning system may store the predicted lateral offset distances in a lookup table. If so, then when using the predicted lateral offset distances to determine a trajectory for the autonomous vehicle, the system may retrieve the predicted lateral offset distances from the lookup table when the moving actor is in proximity to the autonomous vehicle.
In some embodiments, using the predicted lateral offset distance to determine a trajectory for the autonomous vehicle may include determining, from the predicted lateral offset distance, one or more regions of configuration space for the autonomous vehicle that are occupied by the actor, and one or more regions of configuration space for the autonomous vehicle that are free of the actor. The system may determine whether a planned trajectory for the autonomous vehicle will conflict with any of the occupied regions of a configuration space. When the planned trajectory for the autonomous vehicle will conflict with any of the occupied regions of the configuration space, the system may alter the planned trajectory to be fully within a free configuration space for the autonomous vehicle and outside of an occupied configuration space for the autonomous vehicle.
In some embodiments, using the predicted lateral offset distance to determine a trajectory for the autonomous vehicle includes: determining one or more regions of configuration space for the autonomous vehicle that are occupied; determining one or more regions of configuration space for the autonomous vehicle that are free; and determining a planned trajectory that is fully within a region of free configuration space for the autonomous vehicle and outside of all regions of occupied configuration space for the autonomous vehicle.
In some embodiments, identifying the bounding box for the actor and predicting the lateral offset distance between the reference curve and the actor comprises, for each of the time intervals: (i) determining a coarse bounding geometry for the actor over the time interval; and (ii) determining whether the coarse bounding geometry for the actor will intersect with a coarse bounding geometry the autonomous vehicle over a distance interval on the reference curve. If the coarse bounding geometry for the actor will not intersect with the coarse bounding geometry for the autonomous vehicle, then the system may move to a next time or distance interval without predicting a lateral offset distance for that time or distance interval. If the coarse bounding geometry for the actor will intersect with the coarse bounding geometry for the autonomous vehicle, then the system may determine a plurality of fine bounding geometries for the actor over time subintervals and fine bounding geometries for the autonomous vehicle over distance subintervals, and the system may then determine lateral offset distances in each location where the fine bounding geometries of the actor and the autonomous vehicle intersect. In some embodiments, the motion planning system may determine the coarse bounding geometry for the autonomous vehicle by determining a bounding box for the autonomous vehicle, and by dilating the bounding box for the autonomous vehicle laterally by a threshold.
In some embodiments, identifying the bounding geometry for the actor and predicting the lateral offset distance between the reference curve and the actor comprises, for each of the time intervals: (i) subdividing the time interval into time subintervals; (ii) for each of the time subintervals, determining a fine bounding geometry for the actor; (iii) determining a distance interval that corresponds to the time interval, and subdividing the distance interval on the reference curve into a plurality of distance subintervals; (iv) for each of the distance subintervals, determining a fine bounding geometry for the autonomous vehicle; (v) identifying pairs of the time intervals and corresponding distance subintervals and, for each time subinterval and distance subinterval pair; and (vi) determining whether the fine bounding geometry for the actor intersects with the fine bounding geometry for the autonomous vehicle. If the fine bounding geometry for the actor does not intersect with the fine bounding geometry for the autonomous vehicle, then the system may continue to a next time subinterval. If the fine bounding geometry for the actor intersects with the fine bounding geometry for the autonomous vehicle, then the system may predict the lateral offset to a bounding geometry of the actor over the time subinterval at sample locations on the reference curve within the distance subinterval.
In some embodiments, predicting the lateral offset distance between the autonomous vehicle and the moving actor may include determining a distance between a bounding box for the autonomous vehicle and a convex hull of the moving actor.
In some embodiments, wherein identifying the bounding box for the actor and predicting the lateral offset distance between the reference curve and the actor comprises, for each of the time intervals: (i) subdividing the time interval into time subintervals; (ii) for each of the time subintervals, determining a fine bounding geometry for the actor; and (iii) determining a distance interval that corresponds to the time interval determine a maximum distance interval length to guarantee a detection range with respect to a reference point on the reference curve. Determining the distance interval may use the algorithm δdetect=p−rturn, which will be described in more detail below.
As used in this document, the singular forms “a,” “an,” and “the” include plural references unless the context clearly dictates otherwise. Unless defined otherwise, all technical and scientific terms used herein have the same meanings as commonly understood by one of ordinary skill in the art. As used in this document, the term “comprising” means “including, but not limited to.” Definitions for additional terms that are relevant to this document are included at the end of this Detailed Description.
This document describes a method by which a motion planning system of an autonomous vehicle (AV) may determine a trajectory for the AV by determining the occupied and free configuration space of the AV in curvilinear coordinates. The “configuration space” of a robotic device is the space of possible positions that the device may obtain over time. In Cartesian coordinates, position includes both location and orientation, and therefore may be considered to be the possible {x, y, yaw} poses that the vehicle may attain over time. However, in curvilinear coordinates the configuration space considers the possible {longitudinal, lateral} positions that the vehicle may attain with respect to a reference curve over time. The systems of this document use curvilinear coordinates to compute the configuration space. Portions of the configuration space at which the AV would contact another object are “occupied,” while portions that are free of such contact are “free.” The AV's motion planning system may then compute a trajectory in the free configuration space—and avoid placing the trajectory in the occupied configuration space—to avoid conflict with other objects.
At 203 the system will divide the period of interest in the time horizon (in which the period of interest may include all or a portion of the time horizon) into discrete time intervals, and it will divide the region of interest on the reference curve (in which the region of interest may include all or a portion of the reference curve) into discrete distance intervals. To do this, the system may identify a set of discrete points along the reference curve, and then determine each distance interval as an interval between two adjacent points.
At 205, the AV's motion planning system will receive a predicted trajectory for the actor (as determined by the AV's prediction system), and at 206 the motion planning system will then determine an expected location of the actor at the start and end of each time interval. For example,
Returning to
At 208, the system will calculate the lateral offsets to the actor at each sample point within each distance interval that is in proximity for the time interval. This is illustrated in
The lateral offset calculated at 208 may be a distance from the curve that the AV's bounding box 309 must travel to contact the edge of the convex hull for the actor 303 as shown in
When performing the proximity check at 207, the system may initially use a relatively coarse bounding geometry to define the space occupied by the AV and actor. The coarse bounding geometry will include all of the AV or actor, and it also may include a relatively larger amount of space around the AV or actor. However, for any time interval in which the proximity check determines that the coarse bounding geometries of the AV and actor intersect, the system may determine one or more finer bounding geometries that more precisely define the region of interest to include relatively less extra space around the AV or actor. This coarse-to-fine localization, and bounding geometry determination at each step, will be described in more detail below.
Before calculating lateral offsets to the actor as illustrated in
Returning to
On the other hand, if the coarse bounding geometries of the moving actor and the AV do intersect (504: YES) then at 506 the system may segment the wide time and distance intervals into multiple smaller subintervals. The system may then determine relatively finer bounding geometries for the actor at 507 over each of the time subintervals, and for the AV at 508 over each of the distance subintervals. A suitable fine geometry may be an “oriented bounding box.”
At 509 the system will then determine, for each subinterval, whether the fine bounding geometries of the moving actor and AV intersect. If the fine bounding geometries of the moving actor and AV do not intersect (509: NO), then the proximity checking may continue to the next distance subinterval along the reference curve, or the next time subinterval (step 510). If the fine bounding geometries intersect (509: YES), at 511 the system will then determine, at each location within the distance subinterval, the lateral offset distance from the reference curve to the convex hull of the moving actor over the time subinterval. An example result of this process is shown in
In some embodiment, when discretizing the time horizon into time intervals (or even when calculating the initial time intervals at the start of the process), the system may take precautions to avoid overlooking the actor's location at a critical point in time. For example, if the moving actor is heading in a direction that will cross the reference curve, it's possible that the actor would be on one side of the curve at time t0 and the other side of the curve at t1. These two sampling times would not capture the time when the actor actually crosses the reference curve. To address this, the system may require a minimum number of sample times. The system may also calculate the convex hull of the actor's bounding box between sample times. In the example above, the convex hull of the actor's bounding box at t0 and t1 would intersect the reference curve even if the individual bounding boxes at t0 and t1 do not.
In some embodiments, when discretizing the reference curve into distance intervals, the system may determine a maximum distance interval length to guarantee a detection range with respect to the reference curve. This can be understood with reference to
p is the diagonal of a parallelogram p=√{square root over (a2+ab22ab cos(Δθ))}
where a and b are sides of the parallelogram:
Where dfront and drear are distances from the reference point to front and rear of the AV, respectively.
rturn is the turn radius of the reference curve, calculated as rturn=Δs/Δθ.
If the change in heading Δθ is zero, then the guaranteed detection range=0 if Δs>dfront+drear, otherwise the detection range is infinite.
Returning to
At 211 the system may identify the remaining (non-occupied configuration space as free configuration space 211 for use in its motion planning. Specifically, at 212 the motion planning system may calculate a trajectory that avoids any intersection with the occupied configuration space and that only includes free configuration space. Alternatively, if a trajectory is already calculated and the trajectory will traverse (i.e., intersect) the occupied configuration space, then at 213 the system may alter that trajectory by changing the conflicting portion and/or by calculating or selecting a new trajectory. The change or alteration may result in the AV: (a) slowing before it reaches the occupied configuration space and thus allowing the moving actor to pass; (b) accelerating to pass through the occupied configuration space in a time interval before the space will become occupied; or (c) moving to another lane or otherwise changing a direction to avoid the occupied configuration space.
The vehicle also will include various sensors that operate to gather information about the environment in which the vehicle is traveling. These sensors may include, for example: a location sensor 960 such as a global positioning system (GPS) device; object detection sensors such as one or more cameras 962; a LiDAR sensor system 964; and/or a radar and or and/or a sonar system 966. The sensors also may include environmental sensors 968 such as a precipitation sensor and/or ambient temperature sensor. The object detection sensors may enable the vehicle to detect moving actors and stationary objects that are within a given distance range of the vehicle 999 in any direction, while the environmental sensors collect data about environmental conditions within the vehicle's area of travel. The system will also include one or more cameras 962 for capturing images of the environment. Any or all of these sensors, together with one or more processors of the vehicle's on-board computing device 920 and programming instructions that, when executed by the processors, enable the computing system to classify objects in the perception data, may be considered to be the vehicle's perception system.
During deployment of the vehicle, the vehicle will receive perception data from one or more sensors of the vehicle's perception system. The perception data may include data representative of one or more objects in the environment. The perception system will process the data to identify objects and assign categorical labels and unique identifiers to each object detected in a scene. Categorical labels may include categories such as vehicle, bicyclist, pedestrian, building, and the like. Methods of identifying objects and assigning categorical labels to objects are well known in the art, and any suitable classification process may be used, such as those that make bounding box predictions for detected objects in a scene and use convolutional neural networks or other computer vision models. Some such processes are described in Yurtsever et al., “A Survey of Autonomous Driving: Common Practices and Emerging Technologies” (arXiv Apr. 2, 2020).
During a run of the vehicle, information is communicated from the sensors to an on-board computing device 920. The on-board computing device 920 analyzes the data captured by the perception system sensors and, acting as a motion planning system, executes instructions to determine a trajectory for the vehicle. Various motion planning techniques are well known, for example as described in Gonzalez et al., “A Review of Motion Planning Techniques for Automated Vehicles,” published in IEEE Transactions on Intelligent Transportation Systems, vol. 17, no. 4 (April 2016). The trajectory will include pose and time parameters, and the vehicle's on-board computing device will control operations of various vehicle components to move the vehicle along the trajectory. For example, the on-board computing device 920 may control braking via a brake controller 922; direction via a steering controller 924; speed and acceleration via a throttle controller 926 (in a gas-powered vehicle) or a motor speed controller 928 (such as a current level controller in an electric vehicle); a differential gear controller 930 (in vehicles with transmissions); and/or other controllers 954.
Geographic location information may be communicated from the location sensor 960 to the on-board computing device 920, which may then access a map of the environment that corresponds to the location information to determine known fixed features of the environment such as streets, buildings, stop signs and/or stop/go signals. Captured images from the cameras 962 and/or object detection information captured from sensors such as a LiDAR system 964 is communicated from those sensors) to the on-board computing device 920. The object detection information and/or captured images may be processed by the on-board computing device 920 to detect objects in proximity to the vehicle 999. In addition or alternatively, the AV may transmit any of the data to an external server for processing. Any known or to be known technique for making an object detection based on sensor data and/or captured images can be used in the embodiments disclosed in this document.
In the various embodiments discussed in this document, the description may state that the vehicle or on-board computing device of the vehicle may implement programming instructions that cause the on-board computing device of the vehicle to make decisions and use the decisions to control operations of one or more vehicle systems. However, the embodiments are not limited to this arrangement, as in various embodiments the analysis, decision making and or operational control may be handled in full or in part by other computing devices that are in electronic communication with the vehicle's on-board computing device. Examples of such other computing devices include an electronic device (such as a smartphone) associated with a person who is riding in the vehicle, as well as a remote server that is in electronic communication with the vehicle via a wireless communication network. The processor of any such device may perform the operations that discussed above.
An optional display interface 1030 may permit information from the bus 1000 to be displayed on a display device 1035 in visual, graphic or alphanumeric format, such on an in-dashboard display system of the vehicle. An audio interface and audio output (such as a speaker) also may be provided. Communication with external devices may occur using various communication devices 1040 such as a wireless antenna, a radio frequency identification (RFID) tag and/or short-range or near-field communication transceiver, each of which may optionally communicatively connect with other components of the device via one or more communication system. The communication device(s) 1040 may be configured to be communicatively connected to a communications network, such as the Internet, a local area network or a cellular telephone data network.
The hardware may also include a user interface sensor 1045 that allows for receipt of data from input devices 1050 such as a keyboard or keypad, a joystick, a touchscreen, a touch pad, a remote control, a pointing device and/or microphone. Digital image frames also may be received from a camera 1020 that can capture video and/or still images. The system also may receive data from a motion and/or position sensor 1070 such as an accelerometer, gyroscope or inertial measurement unit. The system also may receive data from a LiDAR system 1060 such as that described earlier in this document.
The above-disclosed features and functions, as well as alternatives, may be combined into many other different systems or applications. Various components may be implemented in hardware or software or embedded software. Various presently unforeseen or unanticipated alternatives, modifications, variations or improvements may be made by those skilled in the art, each of which is also intended to be encompassed by the disclosed embodiments.
Terminology that is relevant to the disclosure provided above includes:
An “automated device” or “robotic device” refers to an electronic device that includes a processor, programming instructions, and one or more physical hardware components that, in response to commands from the processor, can move with minimal or no human intervention. Through such movement, a robotic device may perform one or more automatic functions or function sets. Examples of such operations, functions or tasks may include without, limitation, operating wheels or propellers to effectuate driving, flying or other transportation actions, operating robotic lifts for loading, unloading, medical-related processes, construction-related processes, and/or the like. Example automated devices may include, without limitation, autonomous vehicles, drones and other autonomous robotic devices.
The term “vehicle” refers to any moving form of conveyance that is capable of carrying either one or more human occupants and/or cargo and is powered by any form of energy. The term “vehicle” includes, but is not limited to, cars, trucks, vans, trains, autonomous vehicles, aircraft, aerial drones and the like. An “autonomous vehicle” is a vehicle having a processor, programming instructions and drivetrain components that are controllable by the processor without requiring a human operator. An autonomous vehicle may be fully autonomous in that it does not require a human operator for most or all driving conditions and functions. Alternatively, it may be semi-autonomous in that a human operator may be required in certain conditions or for certain operations, or that a human operator may override the vehicle's autonomous system and may take control of the vehicle. Autonomous vehicles also include vehicles in which autonomous systems augment human operation of the vehicle, such as vehicles with driver-assisted steering, speed control, braking, parking and other advanced driver assistance systems.
A “run” of a vehicle refers to an act of operating a vehicle and causing the vehicle to move about the real world. A run may occur in public, uncontrolled environments such as city or suburban streets, highways, or open roads. A run may also occur in a controlled environment such as a test track.
The term “object,” when referring to an object that is detected by a vehicle perception system or simulated by a simulation system, is intended to encompass both stationary objects and moving (or potentially moving) actors, except where specifically stated otherwise by terms use of the term “actor” or “stationary object.”
The term “bounding box” refers to a rectangular box that represents the location of an object. A bounding box may be represented in data by x- and y-axis coordinates [xmax, ymax] that correspond to a first corner of the box (such as the upper right corner), along with x- and y-axis coordinates [xmin, ymin] that correspond to the corner of the rectangle that is opposite the first corner (such as the lower left corner). It may be calculated as the smallest rectangle that contains all of the points of an object, optionally plus an additional space to allow for a margin of error. The points of the object may be those detected by one or more sensors, such as pixels of an image captured by a camera, or points of a point cloud captured by a LiDAR sensor. A “bounding geometry” is a shape that provides the function of a bounding box above, but which does not necessarily have a rectangular shape. Example bounding geometries include circles, cylinders, triangles, rectangles and other shapes.
In this document, the terms “street,” “lane,” and “road” are illustrated by way of example with vehicles traveling on one or more roads. However, the embodiments are intended to include lanes and intersections in other locations, such as parking areas. In addition, for autonomous vehicles that are designed to be used indoors (such as automated picking devices in warehouses), a lane may be a corridor of the warehouse, or a street may be the corridor and a lane may be a portion of the corridor. If the autonomous vehicle is a drone or other aircraft, the term “street” or “road” may represent an airway and a lane may be a portion of the airway. If the autonomous vehicle is a watercraft, then the term “street” or “road” may represent a waterway and a lane may be a portion of the waterway.
An “electronic device” or a “computing device” refers to a device that includes a processor and memory. Each device may have its own processor and/or memory, or the processor and/or memory may be shared with other devices as in a virtual machine or container arrangement. The memory will contain or receive programming instructions that, when executed by the processor, cause the electronic device to perform one or more operations according to the programming instructions.
The terms “memory,” “memory device,” “data store,” “data storage facility” and the like each refer to a non-transitory device on which computer-readable data, programming instructions or both are stored. Except where specifically stated otherwise, the terms “memory,” “memory device,” “data store,” “data storage facility” and the like are intended to include single device embodiments, embodiments in which multiple memory devices together or collectively store a set of data or instructions, as well as individual sectors within such devices.
The terms “processor” and “processing device” refer to a hardware component of an electronic device that is configured to execute programming instructions, such as a microprocessor or other logical circuit. A processor and memory may be elements of a microcontroller, custom configurable integrated circuit, programmable system-on-a-chip, or other electronic device that can be programmed to perform various functions. Except where specifically stated otherwise, the singular term “processor” or “processing device” is intended to include both single-processing device embodiments and embodiments in which multiple processing devices together or collectively perform a process.
In this document, when relative terms of order such as “first” and “second” are used to modify a noun, such use is simply intended to distinguish one item from another, and is not intended to require a sequential order unless specifically stated.