Vehicle detection and response

A computer includes a processor and a memory storing instructions executable by the processor to identify a virtual boundary between a host roadway lane of a host vehicle and a target roadway lane of a target vehicle, the virtual boundary based on a predicted path of the target vehicle, determine a first constraint value based on a boundary approach velocity of the target vehicle, determine a second constraint value based on (1) a boundary approach velocity of the host vehicle and (2) a boundary approach acceleration of the host vehicle and perform a threat assessment of a collision between the host vehicle and the target vehicle upon determining that the first constraint value violates a first threshold or the second constraint value violates a second threshold.

BACKGROUND

A vehicle can use sensors to detect an object on a roadway. Host vehicle sensors can detect a position and speed of the object, e.g., a vehicle of interest, sometimes referred to as a target vehicle, relative to the host vehicle. For example, host vehicle sensors can detect the position of the target relative to the vehicle. The vehicle can respond to detecting the target, e.g., by steering away from the target, by braking prior to reaching the target, etc.

DETAILED DESCRIPTION

A system includes a computer including a processor and a memory, the memory storing instructions executable by the processor to identify a virtual boundary between a host roadway lane of a host vehicle and a target roadway lane of a target vehicle, the virtual boundary based on a predicted path of the target vehicle, determine a first constraint value based on a boundary approach velocity of the target vehicle, determine a second constraint value based on (1) a boundary approach velocity of the host vehicle and (2) a boundary approach acceleration of the host vehicle, and perform a threat assessment of a collision between the host vehicle and the target vehicle upon determining that the first constraint value violates a first threshold or the second constraint value violates a second threshold.

The instructions can further include instructions to actuate one or more vehicle components to avoid the target vehicle based on the threat assessment.

The instructions can further include instructions to, upon performing the threat assessment, identify a third constraint value based on a location of the target vehicle and to actuate one or more components when the third constraint value violates a third threshold.

The instructions can further include instructions to determine the second constraint value based on a predicted lateral distance from the target vehicle to the virtual boundary.

The instructions can further include instructions to input the lateral position of the target vehicle to a path planning algorithm to predict the lateral distance.

The instructions can further include instructions to determine that the first constraint value violates the first threshold based on a sign of the first constraint value.

The instructions can further include instructions to determine that the second constraint value violates the second threshold when the target vehicle crosses the virtual boundary.

The instructions can further include instructions to determine the second constraint value on a boundary approach acceleration of the target vehicle.

The instructions can further include instructions to determine the boundary approach acceleration of the host vehicle based on a steering input, a brake input, and a throttle input to the host vehicle.

The instructions can further include instructions to perform the threat assessment upon detecting the target vehicle in the host roadway lane.

A method includes identifying a virtual boundary between a host roadway lane of a host vehicle and a target roadway lane of a target vehicle, the virtual boundary based on a predicted path of the target vehicle, determining a first constraint value based on a boundary approach velocity of the target vehicle, determining a second constraint value based on (1) a boundary approach velocity of the host vehicle and (2) a boundary approach acceleration of the host vehicle, and performing a threat assessment of a collision between the host vehicle and the target vehicle upon determining that the first constraint value violates a first threshold or the second constraint value violates a second threshold.

The method can further include actuating one or more vehicle components to avoid the target vehicle based on the threat assessment.

The method can further include, upon performing the threat assessment, identifying a third constraint value based on a location of the target vehicle and actuating one or more components when the third constraint value violates a third threshold.

The method can further include determining the second constraint value based on a predicted lateral distance from the target vehicle to the virtual boundary.

The method can further include inputting the lateral position of the target vehicle to a path planning algorithm to predict the lateral distance.

The method can further include determining that the first constraint value violates the first threshold based on a sign of the first constraint value.

The method can further include determining that the second constraint value violates the second threshold when the target vehicle crosses the virtual boundary.

The method can further include determining the second constraint value on a boundary approach acceleration of the target vehicle.

The method can further include determining the boundary approach acceleration of the host vehicle based on a steering input, a brake input, and a throttle input to the host vehicle.

The method can further include performing the threat assessment upon detecting the target vehicle in the host roadway lane.

A system includes a plurality of vehicle components including a brake, a propulsion, and a steering assembly, means for identifying a virtual boundary between a host roadway lane of a host vehicle and a target roadway lane of a target vehicle, the virtual boundary based on a predicted path of the target vehicle, means for determining a first constraint value based on a boundary approach velocity of the target vehicle, means for determining a second constraint value based on (1) a boundary approach velocity of the host vehicle and (2) a boundary approach acceleration of the host vehicle, means for performing a threat assessment of a collision between the host vehicle and the target vehicle upon determining that the first constraint value violates a first threshold or the second constraint value violates a second threshold, and means for actuating one or more of the plurality of vehicle components to avoid the target vehicle based on the threat assessment.

The system can further include means for identifying a third constraint value based on a location of the target vehicle upon performing the threat assessment and means for actuating one or more components when the third constraint value violates a third threshold.

The system can further include means for determining the second constraint value based on a predicted lateral distance from the target vehicle to the virtual boundary.

The system can further include means for determining the boundary approach acceleration of the host vehicle based on a steering input, a brake input, and a throttle input to the host vehicle.

The system can further include means for performing the threat assessment upon detecting the target vehicle in the host roadway lane.

Further disclosed is a computing device programmed to execute any of the above method steps. Yet further disclosed is a vehicle comprising the computing device. Yet further disclosed is a computer program product, comprising a computer readable medium storing instructions executable by a computer processor, to execute any of the above method steps.

Collision avoidance with a target vehicle with virtual boundaries allows a host vehicle to predict an intent, i.e., a future path or motion, of the target vehicle. The host vehicle can identify one or more constraint values representing motion of the target vehicle. The constraint values are based on velocity and acceleration at which the target vehicle approaches the virtual boundaries and with other factors as discussed below, e.g., target vehicle heading angle and steering angle. When one or more of the constraint values violate respective thresholds, the host vehicle can perform a threat assessment to determine a probability of a collision with the target vehicle. The host vehicle can, based on the threat assessment, actuate one or more components to avoid the target vehicle. The virtual boundaries, boundary approach velocity, and boundary approach acceleration allow the host vehicle to predict the target vehicle movement with less data and fewer computations than other techniques that could be employed, e.g., a neural network or machine learning program. Using the boundary approach velocity and the boundary approach acceleration can allow the host vehicle to avoid a collision with the target vehicle crossing one of the virtual boundaries and to adjust operation of one or more components prior to the host vehicle reaching the virtual boundaries.

FIG.1illustrates an example system100for operating a vehicle105. A computer110in the vehicle105is programmed to receive collected data from one or more sensors115. For example, vehicle data may include a location of the vehicle105, data about an environment around a vehicle, data about an object outside the vehicle such as another vehicle, etc. A vehicle location is typically provided in a conventional form, e.g., geo-coordinates such as latitude and longitude coordinates obtained via a navigation system that uses the Global Positioning System (GPS). Further examples of data can include measurements of vehicle systems and components, e.g., a vehicle velocity, a vehicle trajectory, etc.

The computer110is generally programmed for communications on a vehicle network, e.g., including a conventional vehicle communications bus such as a CAN bus, LIN bus, etc., and or other wired and/or wireless technologies, e.g., Ethernet, WIFI, etc. Via the network, bus, and/or other wired or wireless mechanisms (e.g., a wired or wireless local area network in the vehicle105), the computer110may transmit messages to various devices in a vehicle105and/or receive messages from the various devices, e.g., controllers, actuators, sensors, etc., including sensors115. Alternatively or additionally, in cases where the computer110actually comprises multiple devices, the vehicle network may be used for communications between devices represented as the computer110in this disclosure. For example, the computer110can be a generic computer with a processor and memory as described above and/or may include a dedicated electronic circuit including an ASIC that is manufactured for a particular operation, e.g., an ASIC for processing sensor data and/or communicating the sensor data. In another example, the computer110may include an FPGA (Field-Programmable Gate Array) which is an integrated circuit manufactured to be configurable by a user. Typically, a hardware description language such as VHDL (Very High Speed Integrated Circuit Hardware Description Language) is used in electronic design automation to describe digital and mixed-signal systems such as FPGA and ASIC. For example, an ASIC is manufactured based on VHDL programming provided pre-manufacturing, whereas logical components inside an FPGA may be configured based on VHDL programming, e.g. stored in a memory electrically connected to the FPGA circuit. In some examples, a combination of processor(s), ASIC(s), and/or FPGA circuits may be included in computer110.

In addition, the computer110may be programmed for communicating with the network125, which, as described below, may include various wired and/or wireless networking technologies, e.g., cellular, Bluetooth®, Bluetooth® Low Energy (BLE), wired and/or wireless packet networks, etc.

The memory can be of any type, e.g., hard disk drives, solid state drives, servers, or any volatile or non-volatile media. The memory can store the collected data sent from the sensors115. The memory can be a separate device from the computer110, and the computer110can retrieve information stored by the memory via a network in the vehicle105, e.g., over a CAN bus, a wireless network, etc. Alternatively or additionally, the memory can be part of the computer110, e.g., as a memory of the computer110.

Sensors115can include a variety of devices. For example, various controllers in a vehicle105may operate as sensors115to provide data via the vehicle network or bus, e.g., data relating to vehicle speed, acceleration, location, subsystem and/or component status, etc. Further, other sensors115could include cameras, motion detectors, etc., i.e., sensors115to provide data for evaluating a position of a component, evaluating a slope of a roadway, etc. The sensors115could, without limitation, also include short range radar, long range radar, LIDAR, and/or ultrasonic transducers.

Collected data can include a variety of data collected in a vehicle105. Examples of collected data are provided above, and moreover, data are generally collected using one or more sensors115, and may additionally include data calculated therefrom in the computer110, and/or at the server130. In general, collected data may include any data that may be gathered by the sensors115and/or computed from such data.

The vehicle105can include a plurality of vehicle components120. In this context, each vehicle component120includes one or more hardware components adapted to perform a mechanical function or operation—such as moving the vehicle105, slowing or stopping the vehicle105, steering the vehicle105, etc. Non-limiting examples of components120include a propulsion component (that includes, e.g., an internal combustion engine and/or an electric motor, etc.), a transmission component, a steering assembly (e.g., that may include one or more of a steering wheel, a steering rack, etc.), a brake component, a park assist component, an adaptive cruise control component, an adaptive steering component, a movable seat, and the like. Components120can include computing devices, e.g., electronic control units (ECUs) or the like and/or computing devices such as described above with respect to the computer110, and that likewise communicate via a vehicle network.

A vehicle105can operate in one of a fully autonomous mode, a semiautonomous mode, or a non-autonomous mode. A fully autonomous mode is defined as one in which each of vehicle propulsion (typically via a powertrain including an electric motor and/or internal combustion engine), braking, and steering are controlled by the computer110. A semi-autonomous mode is one in which at least one of vehicle propulsion (typically via a powertrain including an electric motor and/or internal combustion engine), braking, and steering are controlled at least partly by the computer110as opposed to a human operator. In a non-autonomous mode, i.e., a manual mode, the vehicle propulsion, braking, and steering are controlled by the human operator.

The system100can further include a network125connected to a server130. The computer110can further be programmed to communicate with one or more remote sites such as the server130, via the network125, such remote site possibly including a processor and a memory. The network125represents one or more mechanisms by which a vehicle computer110may communicate with a remote server130. Accordingly, the network125can be one or more of various wired or wireless communication mechanisms, including any desired combination of wired (e.g., cable and fiber) and/or wireless (e.g., cellular, wireless, satellite, microwave, and radio frequency) communication mechanisms and any desired network topology (or topologies when multiple communication mechanisms are utilized). Exemplary communication networks include wireless communication networks (e.g., using Bluetooth®, Bluetooth® Low Energy (BLE), IEEE 802.11, vehicle-to-vehicle (V2V) such as Dedicated Short Range Communications (DSRC), etc.), local area networks (LAN) and/or wide area networks (WAN), including the Internet, providing data communication services.

FIG.2is a diagram of a host vehicle105and a target vehicle200on a roadway205. The “target” vehicle200is a vehicle detected by the host vehicle105. The roadway205includes a first roadway lane210and a second roadway lane215. The first roadway lane210on which the host vehicle travels is a “host” roadway lane210, and the second roadway lane215on which the target vehicle travels is a “target” roadway lane215. The first roadway lane210has a left boundary line220and a right boundary line225.

The computer110can generate a first virtual boundary and a second virtual boundary. In this context, a “virtual boundary” is a set of geo-coordinates representing a virtual line on a roadway205. That is, the virtual boundary can be a virtual line on a map stored in the computer110. For example, the first virtual boundary can represent a dividing line between the host roadway lane210and the target roadway lane215, and the second virtual boundary can represent a dividing line between the host roadway lane210and a shoulder of the roadway205.

The computer110can collect data about the target vehicle200to generate the virtual boundaries. The data can include a position of the target vehicle200. A “position” of the target vehicle200is a set of coordinates {circumflex over (X)}, ŷ defining a point in a global coordinate system, where {circumflex over (x)} is a geo-coordinate defining a latitude and 9 is a geo-coordinate defining a longitude. The position of the target vehicle200is the geo-coordinates of a specified part of the target vehicle200, e.g., a center of a front bumper, a center of a rear axle, etc., and can be specified as {circumflex over (x)}t, ŷt.

The host vehicle105defines a vehicle coordinate system. The vehicle coordinate system defines points x, y, where x is a coordinate along a longitudinal axis of the host vehicle105and y is a coordinate along a lateral axis of the host vehicle105. That is, x coordinates extend in a vehicle-forward and vehicle-rearward (i.e., longitudinal) direction, and y coordinates extend in a vehicle-crosswise (i.e., lateral) direction. The position of the target vehicle200in the vehicle coordinate system is xtg, ytg. That is, xtgis a “longitudinal position” that defines a “longitudinal distance” between the host vehicle105and the target vehicle200, and ytgis a “lateral position” that defines a “lateral distance” between the host vehicle105and the target vehicle200. The computer110can determine the position of the target vehicle200at a specific time t, i.e., the values xtg, ytgare functions of time t: xtg(t), ytg(t). The dependence on t may be omitted below for clarity, and xtg, ytgare understood to be the position of the target vehicle200at the time t. The position of the target vehicle200as a function of time t over a time period t is a “predicted path” of the target vehicle200.

The computer110can identify a plurality of data about the host vehicle105and the target vehicle200. The data can include a heading angle θ′ of the target vehicle200, i.e., an angle defined between an axis extending along a center line of the target vehicle200and the longitudinal axis of the global coordinate system. The data can include a longitudinal velocity vtgof the target vehicle200, i.e., the velocity along the longitudinal axis, and the longitudinal velocity vhof the host vehicle105. The data can include a wheelbase L of the target vehicle200, i.e., a distance between a center of a front wheel and a center of a rear wheel of the target vehicle200. The data can include a width W of the target vehicle200. The data can include a steering angle δ, i.e., an angle define between an axis extending through a center of a front wheel of the target vehicle200and the longitudinal axis. The data can include a longitudinal input u, i.e., an acceleration along the longitudinal axis caused by brake and/or throttle input. The computer110can receive the steering angle δ and the longitudinal input u from the target vehicle200as steering and propulsion data over the network125, e.g., broadcast as a message.

The computer110can use one or more path polynomials to represent the left and right lane boundaries220,225of the host roadway lane210. A “path polynomial” is a predicted line represented as a polynomial equation of an upcoming distance x. In the present context, the “upcoming distance” x is a predetermined longitudinal distance in front of the host vehicle105from a front bumper of the host vehicle105at which the sensors115collect data and the path planning algorithm predicts the path. The upcoming distance x can be determined based on, e.g., a current speed of the host vehicle105, a predetermined time threshold, determined based on empirical simulation data, a detection range of the sensors115, etc. The time threshold can be, e.g., 1 second. The path polynomial can include one or more Bezier curves, i.e., polynomial functions that each represent a disjoint subset of points representing the path, and that taken together, represent the entire set of points representing the path. Bezier curves can be constrained to be continuously differentiable and have constraints or limits on the permitted derivatives, e.g. limits on the rates of change, with no discontinuities. Bezier curves can also be constrained to match derivatives with other Bezier curves at boundaries, providing smooth transitions between subsets. Constraints on Bezier curves can make a vehicle path polynomial a steerable path polynomial by limiting the rates of longitudinal and lateral accelerations required to pilot a vehicle along the host vehicle path polynomial, where braking torque and powertrain torque are applied as positive and negative longitudinal accelerations and clockwise and counter clockwise steering torque are applied as left and right lateral accelerations.

The path polynomial can represent any line that the computer110may use for operating the vehicle105, e.g., a lane boundary, a predicted path of the host vehicle105, a predicted path of the target vehicle200, etc. The computer110can use a path polynomial to predict a lane boundary such as the left lane boundary220and/or the right lane boundary225. Additionally, the computer110can use a path polynomial to predict a path that the host vehicle105will follow. The path polynomials that predict the lane boundaries220,225can use different data and have different coefficients than a path polynomial that predicts a path that the host vehicle105will follow. For example, the path polynomials for the lane boundaries220,225can use data from the roadway lanes210,215, and the path polynomials for the path of the host vehicle105can use data from one or more components120, e.g., speed, steering angle, acceleration, etc. That is, the computer110can use a path polynomial that predicts a path of the host vehicle105to determine whether the predicted path of the host vehicle105crosses one of the path polynomials for the lane boundaries220,225.

The computer110can define equations LL(x), RL(x) to predict respective left and right lane boundary lines220,225of the host roadway lane210. The equations LL(x), RL(x) can be defined for coordinates x, y as path polynomials from a path planning algorithm:
LL(x)=a0+a1x+a2x2+a3x3(1)
RL(x)=b0+b1x+b2x2+b3x3(2)
where a0, b0are lateral offsets, i.e., predicted lateral distances between the path and a center line of the host vehicle105at an upcoming distance x, a1, b1is a heading angle of the path, a2, b2is the curvature of the path, and a3, b3is the curvature rate of the path. The computer110can determine a lateral offset error e1and a heading offset error e2. The lateral offset error e1is a lateral distance between the current location of the host vehicle105and a planned path of the host vehicle105. The heading offset error e2is a difference between a current heading angle θ and a planned heading angle θ. The computer110can use the errors e1, e2to determine one or more constraint values c, as described below.

The computer110can define the virtual boundaries according to equations h1, h2based on the equations LL(x), RL(x) and the predicted path xtg(t), ytg(t) of the target vehicle200:

The computer110can define equations {dot over (h)}1, {dot over (h)}2to define a boundary approach velocity of the target vehicle200to the first virtual boundary and a boundary approach velocity of the host vehicle105to the second virtual boundary. The equations take a set of variables X=[x, y, δ, v] and a second set of variables U=[δ, u] as input.

X˙=f⁡(X)+g⁡(X)⁢U(5)h.1=Lf⁢h1=∂h1∂X⁢f⁡(X)(6)h.2=Lf⁢h2=∂h2∂X⁢f⁡(X)(7)
where the functions describing X are defined as:

f⁡(X)=[v⁢cos⁢(θ)v⁢sin⁢(θ)00](8)g⁡(X)=[0000vtgL00G](9)
where G is the acceleration due to gravity. The equations represent a simplified bicycle model for a vehicle, such as the host vehicle101or the target vehicle200. For the example shown inFIG.2, the equations can define the boundary approach velocities:
{dot over (h)}1=vtge2(xtg)  (10)
{dot over (h)}2=vhe2(0)  (11)

The computer110can define equations {umlaut over (h)}1, {umlaut over (h)}2to define a boundary approach acceleration of the target vehicle200to the first virtual boundary and a boundary approach acceleration of the host vehicle105to the second virtual boundary:

h¨1=[vt⁢g2L⁢e2(xt⁢g)][δu]+vt⁢g⁢ψ˙r(14)h¨2=[vh2L⁢e2(0)][δu]+vh⁢ψ˙r(15)
where {dot over (ψ)}ris a heading change of the roadway205at the current location of the host vehicle105, defined by {dot over (ψ)}r=vhk, where k is a curvature of the roadway205at the current location of the host vehicle105. Thus, the computer110can determine the boundary approach accelerations {umlaut over (h)}1, {umlaut over (h)}2based on respective steering input, brake input, and throttle input to the host vehicle105and the target vehicle200.

The computer110can identify a plurality of constraint values c. A “constraint value” c is a value based on one of the virtual boundaries, the boundary approach velocity, and the boundary approach acceleration that indicates motion of the target vehicle200to the virtual boundaries. The computer110can compare the constraint value c to a predetermined threshold, as described below, to identify a maneuver of the target200. The computer110can define equations to determine two constraint values c1, c2based on the virtual boundary equations:
c1(X)={umlaut over (h)}1(X)+l1{dot over (h)}1(X)+l0h1(X)  (16)
c2(X)={umlaut over (h)}2(X)+l1{dot over (h)}2(X)+l0h2(X)  (17)
where l0, l1are predetermined scalar values that provide real, positive eigenvalues to the equations c1(X)≥0, c2(X)≥0. Thus, the first constraint value c1is based on the boundary approach velocity {dot over (h)}1of the target vehicle200and a boundary approach acceleration {umlaut over (h)}1of the target vehicle200. The second constraint value c2is based on the boundary approach velocity {dot over (h)}2of the host vehicle105and a boundary approach acceleration {umlaut over (h)}2of the host vehicle105. Alternatively, when acceleration data of the target vehicle200or the host vehicle105is unavailable, the first and second constraint values c1c2can be determined based on the boundary approach speeds {dot over (h)}1, {dot over (h)}2:
c1(X)={dot over (h)}1(X)+l0h1(X)  (18)
c2(X)={dot over (h)}2(X)+l0h2(X)  (19)

The computer110can determine whether one of the constraint values c1c2violates a threshold. In this context, a threshold is “violated” if the constraint value c is outside a range of values limited or defined by the threshold. For example, the threshold can be violated when the constraint value c falls below the threshold. Alternatively, the threshold can be violated when the constraint value c exceeds the threshold. In the example ofFIG.2, the threshold can be 0, and the computer110can perform the threat assessment when c1<0 and/or c2<0. The computer110can thus determine that the constraint values c1c2violate their respective thresholds based on a sign of the constraint values c1, c2, the “sign” being positive if the value exceeds 0, negative if the value is below 0, and 0 if the value equals 0. That is, if at least one of c1c2is negative, then at least one of the thresholds is violated. Alternatively or additionally, the computer110can determine that at least one of the constraint values c1c2is violated when at least one of the host vehicle105and/or the target vehicle200crosses one of the virtual boundaries210,215.

When one of the first and/or second constraint values violates their respective threshold, the computer110can perform a threat assessment of a collision between the host vehicle105and the target vehicle200. Alternatively or additionally, the computer can perform the threat assessment upon detecting the target vehicle in the host roadway lane210. A “threat assessment” is a determination of a probability of a collision between the host vehicle105and the target vehicle200. For example, the threat assessment can be an amount of longitudinal deceleration required to stop the host vehicle105before reaching the target vehicle200. In another example, the threat assessment can be an amount of lateral acceleration to steer the host vehicle105away from the target vehicle200. In another example, the threat assessment can be an amount of longitudinal acceleration required to move the host vehicle105past the target vehicle200. The computer110can compare the threat assessment to a predetermined threshold. For example, if the threat assessment is an amount of longitudinal deceleration required to stop the host vehicle105, the computer110can detect the threat when the required amount of longitudinal deceleration is greater than a predetermined threshold, e.g., 50% of the maximum deceleration that a brake120can provide to the host vehicle105. The predetermined threshold can be determined based on, e.g., empirical and/or virtual testing of host vehicles105and target vehicles200on test tracks, specific operation limits of physical components120, manufacturer recommendations, etc. For example, the testing can include identifying paths of a plurality of virtual vehicles105,200in a plurality of intersections operating at specified speeds, longitudinal accelerations, and lateral accelerations. The testing can identify a maximum speed, a maximum longitudinal acceleration, and/or a maximum lateral acceleration to avoid a collision between the virtual host vehicle105and the virtual target vehicle200. The threshold can be based on the maximum speed and/or accelerations resulting from the testing. The predetermined threshold can be the minimum threat assessment value determined, from the empirical and/or virtual testing, to prevent a collision between the host vehicle105and the target vehicle200.

The computer110can actuate one or more vehicle components to avoid the target vehicle bases on the threat assessment. The computer110can adjust a path that the host vehicle105follows (e.g., a path produced from a path polynomial described above) to avoid the target vehicle200. Adjusting the path can include, e.g., determining a steering angle, determining a throttle input, determining a brake input, etc., such that the host vehicle105avoids the target vehicle200upon attaining the steering angle and throttle and/or brake input to follow the adjusted path. For example, the computer110can actuate a steering motor120to provide the lateral acceleration to steer the host vehicle105away from the target vehicle200. In another example, the computer110can actuate a propulsion120to accelerate the host vehicle105past the target vehicle200. In another example, the computer110can actuate a brake120to slow or stop the host vehicle105until the target vehicle200passes the host vehicle105.

The computer110can determine a threat assessment constraint value c3. When the threat assessment constraint value c3violates a threshold, the computer110can perform the threat assessment. The threat assessment constraint value c3can be determined based on a function h3of the position xtg, ytgof the target vehicle200:

h3(t)=(x-xt⁢g)2+(y-yt⁢g)2-rmin2(20)h.3(t)=2⁢(x-xtg)⁢(vh⁢cos⁡(θ)-vtg⁢cos⁡(θtg))+2⁢(y-ytg)⁢(vh⁢sin⁡(θ)-vtg⁢sin⁡(θtg))(21)h¨3(t)=Lf2⁢h3+Lg⁢Lf⁢h3[δuδt⁢gut⁢g](22)Lf2⁢h3=2⁢vh2+2⁢vtg2-4⁢vh⁢vtg⁢cos⁡(θ-θtg)(23)Lg⁢Lf⁢h3=[2⁢v2L⁢(-(x-xtg)⁢sin⁡(θ)+(y-ytg)⁢cos⁡(θ))2⁢g⁡((x-xtg)⁢cos⁡(θ)+(y-ytg)⁢sin⁡(θ))2⁢v2L⁢((x-xtg)⁢sin⁡(θtg)-(y-ytg)⁢cos⁡(θtg))-2⁢g⁢((x-xt)⁢cos⁡(θtg)+(y-yt)⁢sin⁡(θtg))]T(24)c3(X)=h¨3(X)+l1⁢h.3⁢(X)+l0⁢h3(X)(25)
where rminis a predetermined minimum distance that the host vehicle105should remain from the target vehicle200. The value for rmincan be determined by, e.g., a manufacturer. Thus, the constraint value c3is based on the lateral distance and the longitudinal distance between the host vehicle105and the target vehicle200, as shown in the h3term, and the lateral acceleration and the longitudinal acceleration between the host vehicle105and the target vehicle200, as shown in the {umlaut over (h)}3term.

FIG.3is a diagram of an example process300for operating a host vehicle105. The process300begins in a block305, in which a computer110of the host vehicle105detects a target vehicle200. The computer110can detect the target vehicle200based on data from one or more sensors115. For example, the computer110can actuate a camera to collect images of the environment around the host vehicle105and can use a conventional image processing technique (e.g., Canny edge detection, deep learning object detection, etc.) to identify the target vehicle200. In another example, the computer110can actuate a lidar to collect a data point cloud and can use a conventional object detection algorithm (e.g., segmentation) to identify the target vehicle200.

Next, in a block310, the computer identifies a first virtual boundary and a second virtual boundary. As described above, the computer110can use functions such as h1, h2to identify the virtual boundaries between the host vehicle105and the target vehicle200. The virtual boundaries allow the computer110to predict movement of the host vehicle105and one or more target vehicles200on the roadway205.

Next, in a block315, the computer110identifies one or more constraint values c. As described above, the constraint values c are values based on the virtual boundaries, a boundary approach velocity, and a boundary approach acceleration indicating motion of the target vehicle200and the host vehicle105to the virtual boundaries. For example, a constraint value c1can be an output of one of the virtual boundary equations described above. The computer110can determine a first constraint value c1and a second constraint value c2.

Next, in a block320, the computer110determines whether one of the constraint values c violates a respective threshold. For example, the computer110can determine whether the first constraint value violates a first threshold, e.g., c1<0. The first threshold can be determined based on, e.g., virtual testing of virtual host vehicles105and virtual target vehicles200on virtual roadways205. The computer110can determine whether the second constraint value violates a second threshold, e.g., c2<0. If at least one of the constraint values c2violates a respective threshold, the process300continues in a block325. Otherwise, the process300continues in a block340.

In the block325, the computer110performs a threat assessment of a collision between the host vehicle105and the target vehicle200. As described above, the threat assessment is a determination of a probability of a collision between the host vehicle105and the target vehicle200. For example, the threat assessment can be an amount of longitudinal deceleration required to stop the host vehicle105before reaching the target vehicle200. In another example, the threat assessment can be an amount of lateral acceleration to steer the host vehicle105away from the target vehicle200. In another example, the threat assessment can be an amount of longitudinal acceleration required to move the host vehicle105past the target vehicle200.

Next, in a block330, the computer110determines whether a threat is detected. The computer110can compare the threat assessment to a predetermined threshold, as described above. For example, if the threat assessment is an amount of longitudinal deceleration required to stop the host vehicle105, the computer110can detect the threat when the required amount of longitudinal deceleration is greater than a predetermined threshold, e.g., 50% of the maximum deceleration that a brake120can provide to the host vehicle105. The predetermined threshold can be determined based on, e.g., empirical and/or virtual testing of host vehicles105and target vehicles200on test tracks, specific operation limits of physical components120, manufacturer recommendations, etc. The predetermined threshold can be the minimum threat assessment value determined, from the empirical and/or virtual testing, to prevent a collision between the host vehicle105and the target vehicle200. For example, the testing can include identifying paths of a plurality of virtual vehicles105,200in a plurality of intersections operating at specified speeds, longitudinal accelerations, and lateral accelerations. The testing can identify a maximum speed, a maximum longitudinal acceleration, and/or a maximum lateral acceleration to avoid a collision between the virtual host vehicle105and the virtual target vehicle200. The threshold can be based on the maximum speed and/or accelerations resulting from the testing. When the threat assessment violates the threshold, the computer can determine that a threat of a collision is detected. If the computer110detects a threat, the process300continues in a block335. Otherwise, the process300continues in the block340.

In the block335, the computer110actuates one or more components120to avoid the target vehicle200. The computer110can adjust a path for the host vehicle105(e.g., a path produced from a path polynomial described above) to avoid the target vehicle200. Adjusting the path can include, e.g., determining a steering angle, determining a throttle input, determining a brake input, etc., such that the host vehicle105avoids the target vehicle200upon attaining the steering angle and throttle and/or brake input to follow the adjusted path. For example, the computer110can actuate a steering motor120to provide the lateral acceleration to steer the host vehicle105away from the target vehicle200. In another example, the computer110can actuate a propulsion120to accelerate the host vehicle105past the target vehicle200. In another example, the computer110can actuate a brake120to slow or stop the host vehicle105until the target vehicle200passes the host vehicle105. Alternatively or additionally, the computer110can actuate all three of the steering motor120, the propulsion120, and the brake120to move the host vehicle105to avoid the target vehicle200.

In the block340, the computer110determines whether to continue the process300. For example, the computer110can determine not to continue the process300when the target vehicle200passes the host vehicle105. If the computer110determines to continue, the process300returns to the block305. Otherwise, the process300ends.

Computing devices discussed herein, including the computer110, include processors and memories, the memories generally each including instructions executable by one or more computing devices such as those identified above, and for carrying out blocks or steps of processes described above. Computer executable instructions may be compiled or interpreted from computer programs created using a variety of programming languages and/or technologies, including, without limitation, and either alone or in combination, Java™, C, C++, Visual Basic, Java Script, Python, Perl, HTML, etc. In general, a processor (e.g., a microprocessor) receives instructions, e.g., from a memory, a computer readable medium, etc., and executes these instructions, thereby performing one or more processes, including one or more of the processes described herein. Such instructions and other data may be stored and transmitted using a variety of computer readable media. A file in the computer110is generally a collection of data stored on a computer readable medium, such as a storage medium, a random access memory, etc.

With regard to the media, processes, systems, methods, etc. described herein, it should be understood that, although the steps of such processes, etc. have been described as occurring according to a certain ordered sequence, such processes could be practiced with the described steps performed in an order other than the order described herein. It further should be understood that certain steps could be performed simultaneously, that other steps could be added, or that certain steps described herein could be omitted. For example, in the process300, one or more of the steps could be omitted, or the steps could be executed in a different order than shown inFIG.3. In other words, the descriptions of systems and/or processes herein are provided for the purpose of illustrating certain embodiments and should in no way be construed so as to limit the disclosed subject matter.

The article “a” modifying a noun should be understood as meaning one or more unless stated otherwise, or context requires otherwise. The phrase “based on” encompasses being partly or entirely based on.

The adjectives “first,” “second,” and “third” are used throughout this document as identifiers and are not intended to signify importance or order.