Patent Description:
This document is directed to systems, apparatuses, techniques, and methods of dynamically calculating lane change trajectories. The systems and apparatuses may include components or means (e.g., processing systems) for performing the techniques and methods described herein.

The invention relates to a method, system and storage medium as defined by the claims. It includes a system including at least one processor configured to receive a request for a lane change trajectory for a lane change of a host vehicle that is traveling along a roadway. The processor is also configured to determine whether a preferred offset corresponding to an asymmetry of the lane change trajectory exists for the host vehicle. Responsive to determining that the preferred offset exists, the processor is further configured to calculate the lane change trajectory based on the preferred offset. Responsive to determining that the preferred offset does not exist, the processor is further configured to calculate the lane change trajectory as a symmetrical lane change trajectory. The processor is further configured to provide the lane change trajectory to a vehicle component effective to cause the vehicle component to execute the lane change according to the lane change trajectory.

The techniques and methods may be performed by the above system, another system or component, or a combination thereof. The invention described below includes a method that includes receiving a request for a lane change trajectory for a lane change of a host vehicle that is traveling along a roadway. The method also includes determining whether a preferred offset corresponding to an asymmetry of the lane change trajectory exists for the host vehicle. Responsive to determining that the preferred offset exists, the method further includes calculating the lane change trajectory based on the preferred offset. The method also includes providing the lane change trajectory to a vehicle component effective to cause the vehicle component to execute the lane change according to the lane change trajectory.

The components may include computer-readable media (e.g., non-transitory storage media) including instructions that, when executed by the above system, another system or component, or a combination thereof, implement the method above and other methods. The invention described below includes computer-readable storage media including instructions that, when executed, cause at least one processor to receive a request for a lane change trajectory for a lane change of a host vehicle that is traveling along a roadway. The instructions further cause the processor to determine whether a preferred offset corresponding to an asymmetry of the lane change trajectory exists for the host vehicle. Responsive to determining that the preferred offset exists, the instructions further cause the processor to calculate the lane change trajectory based on the preferred offset. Responsive to determining that the preferred offset does not exist, the instructions further cause the processor to calculate the lane change trajectory as a symmetrical lane change trajectory. The instructions also cause the processor to provide the lane change trajectory to a vehicle component effective to cause the vehicle component to execute the lane change according to the lane change trajectory.

This Summary introduces simplified concepts of dynamically calculating lane change trajectories that are further described in the Detailed Description and Drawings. This Summary is not intended to identify essential features of the claimed subject matter, nor is it intended for use in determining the scope of the claimed subject matter.

Systems and techniques of dynamically calculating lane change trajectories are described with reference to the following drawings that use some of the same numbers throughout to reference like or examples of like features and components.

Autonomous driving technologies enable vehicles to execute lane changes, triggered either automatically or via a user input (e.g., a turn signal switch). Trajectories for the lane changes are calculated and the vehicles follow the calculated trajectories.

Traditional means of generating the trajectories rely on static calculations. For example, the trajectories are often symmetric (e.g., the entries and exists have equal aggressiveness). Although some techniques have been developed to generate asymmetric trajectories, they are often fixed in their asymmetry (e.g., they are static trajectories). In many cases, a driver may wish to adjust the asymmetry due to preference or for various scenarios. Furthermore, the asymmetric trajectories may not be suitable for certain road and weather conditions.

The techniques and systems herein are configured for dynamically calculating lane change trajectories. An offset that corresponds to an amount of asymmetry of a lane change trajectory (a zero-offset may be a symmetrical lane change trajectory) is determined for a lane change based on vehicle/driver preferences, road curvature, and/or road conditions. The offset is then used to calculate the lane change trajectory for the lane change, which is then provided to a vehicle system to execute the lane change according to the lane change trajectory.

By dynamically calculating the lane change trajectory (e.g., actively determining the offset), lane change trajectories may be tailored to driver preferences, including asymmetry preferences and actions for different types of curves, as well as for road and weather conditions. Doing so, may not only improve driver experience due to better emulation of their behavior but also increase safety by decreasing unsafe lane change trajectories.

<FIG> illustrates an example environment <NUM> where dynamically calculating lane change trajectories may be used. The example environment <NUM> contains a host vehicle <NUM> that is traveling in a lane <NUM> of a roadway <NUM>. The host vehicle <NUM> may be any type of system (automobile, car, truck, motorcycle, e-bike, boat, air vehicle, and so on).

A trajectory module <NUM> of the host vehicle <NUM> receives a request to generate a lane change trajectory <NUM> for a lane change from the lane <NUM> to an adjacent lane <NUM>. The roadway <NUM> has a curvature <NUM> (magnitude and left/right relative to a heading of the host vehicle <NUM>) and, in the example environment <NUM>, the lane change is from an outer lane to an inner lane (relative to the curve).

A driver of the host vehicle <NUM> or a vehicle component <NUM> (e.g., advanced driver assist system (ADAS), autonomous driving system, autopilot system) may initiate the lane change, which causes the request to be received by the trajectory module <NUM>. Based on a calculated offset, the trajectory module <NUM> calculates the lane change trajectory <NUM> and outputs it for receipt by the vehicle component <NUM> that uses the lane change trajectory <NUM> to execute the lane change.

In the example environment <NUM>, the lane change trajectory <NUM> has an asymmetry. That is, the entry and exits of the lane change do not have equal steering intensities (e.g., aggressiveness of steering inputs). The lane change trajectory <NUM> has a relaxed entry and an aggressive exit. This may be due to vehicle/driver preferences, a speed of the host vehicle <NUM>, and/or the curvature <NUM> (e.g., whether the roadway is curving left or right relative to the heading of the host vehicle <NUM>). For example, a driver of the host vehicle <NUM> may wish to have the lane change trajectory <NUM> as shown (e.g., a relaxed entry and aggressive exit) because the lane change is from an outer to an inner lane (relative to the curve).

In other environments (e.g., other preferences, other speeds, other curvatures), generated lane change trajectories may be symmetrical or have an asymmetry different than that of lane change trajectory <NUM>. For example, a symmetrical lane change trajectory <NUM> is shown as an alternative to the lane change trajectory <NUM>. The symmetrical lane change trajectory <NUM> has equal entry and exit steering intensities. As another example, another lane change trajectory <NUM> with a different asymmetry than the lane change trajectory <NUM> is shown. The other lane change trajectory <NUM> has an aggressive entry and a relaxed exit.

An offset <NUM> is used to define symmetry/asymmetry of the lane change trajectory <NUM>. The offset <NUM> corresponds to a distance and direction from an inflection point of the symmetrical lane change trajectory <NUM> for the environment to an inflection point of the lane change trajectory <NUM>. The inflection point of the symmetrical lane change trajectory <NUM> is at a distance <NUM> that is half of a total distance <NUM> between the start and end points.

In the example environment <NUM>, the offset <NUM> is positive, indicating the relaxed entry and aggressive exit. The offset <NUM> is negative for the other lane change trajectory <NUM>, indicating the aggressive entry and relaxed exit. The symmetrical lane change trajectory <NUM> may not have an offset or have a zero offset. It should be noted that the start and end points of the lane change are environment-dependent, thus, each environment/situation may have a lane change trajectory <NUM> that is different.

The conventions of the offset <NUM> may vary without departing from the scope of this invention. For example, the offset <NUM> may be a percentage of the distance <NUM> (e.g., the symmetrical lane change trajectory <NUM> has an offset of <NUM>% and the offset <NUM> is <NUM>%). Furthermore, although the offset <NUM> is shown in the longitudinal direction, the offset <NUM> may be relative to any direction (e.g., lateral, along a direction between the start and end points of the lane change, or some other reference). Further, the offset <NUM> may be relative to another point (e.g., the start point of the lane change, the end point of the lane change). Regardless of how it is referenced, the offset <NUM> corresponds to an asymmetry (or lack thereof) of the lane change trajectory <NUM> and is dynamic (e.g., it changes based on the environment).

By dynamically selecting the offset <NUM> and computing the lane change trajectory <NUM> based on it, the trajectory module <NUM> can adapt the lane change trajectory <NUM> for driver preferences as well as for road conditions. Doing so, not only increases user experience but may also increase safety through mitigation of unsafe lane change trajectories.

<FIG> illustrates an example system <NUM> configured to be disposed in the host vehicle <NUM> and configured to dynamically calculate lane change trajectories. Components of the example system <NUM> may be arranged anywhere within or on the host vehicle <NUM>. The example system <NUM> may include at least one processor <NUM>, computer-readable storage media <NUM> (e.g., media, medium, mediums), and the vehicle component <NUM>. The components are operatively and/or communicatively coupled via a link <NUM>.

The processor <NUM> (e.g., application processor, microprocessor, digital-signal processor (DSP), controller) is coupled to the computer-readable storage media <NUM> via the link <NUM> and executes computer-executable instructions (e.g., code) stored within the computer-readable storage media <NUM> (e.g., non-transitory storage device such as a hard drive, solid-state drive (SSD), flash memory, read-only memory (ROM)) to implement or otherwise cause the trajectory module <NUM> (or a portion thereof) to perform the techniques described herein. Although shown as being within the computer-readable storage media <NUM>, the trajectory module <NUM> may be a stand-alone component (e.g., having dedicated computer-readable storage media comprising instructions and/or executed on dedicated hardware, such as a dedicated processor, preprogrammed field-programmable-gate-array (FPGA), system on chip (SOC), and the like). The processor <NUM> and the computer-readable storage media <NUM> may be any number of components, comprise multiple components distributed throughout the host vehicle <NUM>, located remote to the host vehicle <NUM>, dedicated or shared with other components, modules, or systems of the host vehicle <NUM>, and/or configured differently than illustrated without departing from the scope of this invention.

The computer-readable storage media <NUM> also contains sensor data <NUM> generated by one or more sensors or types of sensors (not shown) that may be local or remote to the example system <NUM>. The sensor data <NUM> indicates or otherwise enables the determination of information usable to perform the techniques described herein. For example, the sensors may generate sensor data <NUM> indicative of aspects of an environment around the host vehicle <NUM> (e.g., the example environment <NUM>). In some implementations, the sensor data <NUM> may come from a remote source (e.g., via link <NUM>). The example system <NUM> may contain a communication system (not shown) that receives sensor data <NUM> from the remote source.

The vehicle component <NUM> contains one or more systems or components that are communicatively coupled to the trajectory module <NUM> and configured to use the lane change trajectory <NUM> to execute a lane change. For example, the vehicle component <NUM> may comprise an ADAS or autonomous driving system with means for accelerating, steering, or braking the host vehicle <NUM>. The vehicle component <NUM> is communicatively coupled to the trajectory module <NUM> via the link <NUM>. Although shown as separate components, the trajectory module <NUM> may be part of the vehicle component <NUM> and visa-versa.

<FIG> is an example flow <NUM> of dynamically calculating lane change trajectories. The example flow <NUM> may be implemented in any of the previously described environments and by any of the previously described systems or components. For example, the example flow <NUM> can be implemented in the example environment <NUM> and/or by the example system <NUM>. The example flow <NUM> may also be implemented in other environments, by other systems or components, and utilizing other flows or techniques. The example flow <NUM> may be implemented by one or more entities (e.g., the trajectory module <NUM>). The order in which the operations are shown and/or described is not intended to be construed as a limitation, and the order may be rearranged without departing from the scope of this invention. Furthermore, any number of the operations can be combined with any other number of the operations to implement the example flow or an alternate flow.

The example flow <NUM> starts with the trajectory module <NUM> receiving a lane change trajectory request <NUM> for a lane change. The lane change trajectory request <NUM> may be received from the vehicle component <NUM>, based on a driver input, or generated internally by the trajectory module <NUM>. The lane change trajectory request <NUM> may identify the adjacent lane <NUM> (e.g., change to a left or right lane, change to a slower or faster lane, change to a numbered lane).

The trajectory module <NUM> also obtains attributes <NUM> that may affect the lane change trajectory <NUM>. The attributes <NUM> may be of an environment (e.g., the example environment <NUM>) and/or vehicle/driver settings. As shown, the attributes <NUM> include aspects about the roadway <NUM> and preferences <NUM>.

The aspects of the roadway <NUM> include conditions <NUM> and the curvature <NUM>. The conditions <NUM> include dynamic aspects that may affect a safety or viability of certain lane change trajectories (e.g., weather, road surface conditions, road surface, gradient(s), quality of lane markings). The curvature <NUM> may indicate a radius of the roadway <NUM> at a location of the lane change and/or whether the roadway <NUM> curves to the left or right of a heading of the host vehicle <NUM>.

The preferences <NUM> include aspects of vehicle and/or driver preferences for lane changes, including a preferred offset <NUM> and a curve inversion <NUM>. The preferred offset <NUM> is indicative of a preference for a certain shape of the lane change trajectory <NUM>. In line with the invention, the preferred offset <NUM> may correspond to an aggressive entry and relaxed exit (e.g., the other lane change trajectory <NUM> in the example environment <NUM>), a symmetrical lane change (e.g., the symmetrical lane change trajectory <NUM> in the example environment <NUM>), a relaxed entry and aggressive exit (e.g., the lane change trajectory <NUM> in the example environment <NUM>), or anything in-between. The preferred offset <NUM> may be a relative value (e.g., <NUM>-<NUM> with <NUM> being the most aggressive entry and most relaxed exit, <NUM> being the symmetrical lane change, and <NUM> being the most relaxed entry and most aggressive exit), an actual offset amount (distance), or some other value that influences a shape of the lane change trajectory <NUM>.

The curve inversion <NUM> is indicative of a preference to invert the preferred offset <NUM> for an inside curve lane change (e.g., from an outer lane to an inner lane relative to the curvature <NUM>). In other words, the entry and exit are reversed from the preferred offset <NUM> in such environments. In some implementations, there may be a threshold for applying the curve inversion <NUM>. For example, the curve inversion <NUM> may only be applied if a radius of the roadway <NUM> is below a certain value (e.g., the curve needs to be sharp enough to implement the curve inversion <NUM>). The threshold may also be dynamic (e.g., based on a speed of the host vehicle <NUM>).

Using the example environment <NUM> as an example, the lane change is from an outer lane to an inner lane. Assuming that the curve inversion <NUM> is set to "yes" and that the preferred offset <NUM> indicates a preference for an aggressive entry and relaxed exit (e.g., the other lane change trajectory <NUM>), the trajectory module <NUM> generates the lane change trajectory <NUM> that has a relaxed entry and an aggressive exit (opposite the preferred offset <NUM>).

The preferences <NUM> may be vehicle specific, driver specific, or some combination thereof. For example, there may be a single set of preferences <NUM> for the host vehicle <NUM> or there may be different preferences <NUM> for different drivers. The trajectory module <NUM> may determine a driver of the host vehicle <NUM> and obtain the preferences <NUM> for that driver. The preferences <NUM> may be input via at least one user input (e.g., button, knob, graphical user interface (GUI), touchscreen, navigation device, voice-control). For example, to select the preferred offset <NUM>, a driver of the host vehicle <NUM> may move a slider, select a value, or input a value. Limits of the preferred offset <NUM> may be pre-determined to ensure safe operation and may be vehicle-specific (e.g., very aggressive steering inputs may be unsafe, and thus, not selectable by the driver).

The attributes <NUM> may be acquired, received, or determined by the trajectory module <NUM>. For example, the trajectory module <NUM> may determine the attributes <NUM> directly from the sensor data <NUM>, from a bus or interface connected to sensors that interface with the example system <NUM>, or from another module or system of the example system <NUM>. Regardless of how or where the attributes <NUM> are gathered, received, derived, or calculated, the trajectory module <NUM> is configured to use the attributes <NUM> to determine the offset <NUM> and calculate the lane change trajectory <NUM>.

To do so, the attributes <NUM> are input into an offset module <NUM> that determines the offset <NUM> based on the example flow <NUM> discussed below. Once the offset <NUM> is determined, a path module <NUM> generates the lane change trajectory <NUM> using the offset <NUM>. The path module <NUM> may use any number of methods to generate the lane change trajectory <NUM> such that the offset <NUM> is achieved (e.g., a jerk optimal polynomial). For example, the offset <NUM> may provide a point through-which the lane change trajectory <NUM> should go. The offset <NUM> along with known start and end points allows the path module <NUM> to calculate/generate the lane change trajectory <NUM>.

The lane change trajectory <NUM> is then output, by the trajectory module <NUM>, for receipt by the vehicle component <NUM>. The vehicle component <NUM> then executes the lane change according to the lane change trajectory <NUM>. For example, the vehicle component <NUM> may be an autonomous driving system that automatically steers the host vehicle <NUM> along the lane change trajectory <NUM>.

<FIG> is an example flow <NUM> of determining the offset <NUM>. The example flow <NUM> may be implemented in any of the previously described environments and by any of the previously described systems or components. For example, the example flow <NUM> can be implemented in the example environment <NUM> and/or by the example system <NUM>. The example flow <NUM> may also be implemented in other environments, by other systems or components, and utilizing other flows or techniques. The example flow <NUM> may be implemented by one or more entities (e.g., the offset module <NUM>). The order in which the operations are shown and/or described is not intended to be construed as a limitation, and the order may be rearranged without departing from the scope of this invention. Furthermore, any number of the operations can be combined with any other number of the operations to implement the example flow or an alternate flow.

At decision <NUM>, the offset module <NUM> determines whether an asymmetric lane change trajectory is safe. For example, the offset module <NUM> may determine, based on the conditions <NUM>, that an asymmetric lane change trajectory is unsafe. The conditions <NUM> may indicate that there is snow or ice on the road, that the road is wet, that the surface is uneven, or any other condition that may cause an unsafe lane change if aggressive steering inputs are used (e.g., an asymmetric lane change). Responsive to determining that an asymmetric lane change trajectory is unsafe (e.g., a "no" out of decision <NUM>), the offset module <NUM> sets the offset <NUM> to zero (or whatever value indicates a symmetrical lane change trajectory). Alternatively, the offset module <NUM> may indicate that the lane change trajectory <NUM> should be symmetrical.

Responsive to determining that an asymmetric lane change trajectory is safe (e.g., a "yes" out of decision <NUM>), the example flow <NUM> proceeds to decision <NUM>. At decision <NUM>, the offset module <NUM> determines whether the preferred offset <NUM> exists (e.g., for the host vehicle <NUM> and/or a driver of the host vehicle <NUM>). If the preferred offset <NUM> does not exist, is zero, or otherwise indicates a preference for symmetrical lane change trajectories (e.g., a "no" out of decision <NUM>), the offset module <NUM> sets the offset <NUM> to zero (or whatever value indicates a symmetrical lane change trajectory). Alternatively, the offset module <NUM> may indicate that the lane change trajectory <NUM> should be symmetrical.

Responsive to determining that the preferred offset <NUM> does exist, that the preferred offset <NUM> is non-zero, or that the preferred offset <NUM> otherwise indicates a preference for an asymmetrical lane change trajectory (e.g., a "yes" out of decision <NUM>), the example flow <NUM> proceeds to decision <NUM>. At decision <NUM>, the offset module <NUM> determines whether the curve inversion <NUM> exists (e.g., for the host vehicle <NUM> and/or a driver of the host vehicle <NUM>). If the curve inversion <NUM> does not exist or otherwise indicates a preference for not inverting preferred offsets for inside curves (e.g., a "no" out of decision <NUM>), the offset module <NUM> sets the offset <NUM> to the preferred offset <NUM>.

If the curve inversion <NUM> does exist or otherwise indicates a preference for inverting preferred offsets for inside curves (e.g., a "yes" out of decision <NUM>), the offset module <NUM> sets the offset <NUM> to the inverse of the preferred offset <NUM>. The inverse of the preferred offset <NUM> may correspond to an offset <NUM> that is at a similar distance from midpoint of a symmetrical lane change trajectory but opposite the midpoint of the symmetrical lane change trajectory. Regardless of how the preferred offset <NUM> is implemented, the inverse of the preferred offset <NUM> causes the lane change trajectory <NUM> to have reversed aggressiveness compared to the that generated by the preferred offset <NUM>. In other words, the aggressiveness' of the entry and exit of the lane change will be reversed.

It should be noted that the order of the decisions <NUM>, <NUM>, and <NUM> are not intended to be limiting. The example flow <NUM> may be modified (either by those skilled in the art or by a compiler or other program) and achieve similar results. For example, the decision <NUM> may be performed after determining a result of the decision <NUM> and/or the decision <NUM>, such that the decision <NUM> acts as a gate for any asymmetric lane change trajectories (e.g., a "yes" from the decision <NUM> may cause any offset <NUM> that is non-zero to be zero). Similarly, if the preferred offset <NUM> is zero, than decisions <NUM> and <NUM> may not be performed, as the lane change trajectory <NUM> would be symmetrical independent of the attributes <NUM>.

By dynamically setting the offset <NUM> as zero, the preferred offset <NUM>, or an inverse of the preferred offset <NUM> based on the attributes <NUM>, the offset module <NUM> is able to better select the offset <NUM> in a wider variety of environments and situations. Consequently, the path module <NUM> (and thus, the trajectory module <NUM> as a whole) is able to dynamically generate the lane change trajectory <NUM> based on the offset <NUM> (that is based on the attributes <NUM>). Doing so allows the vehicle component <NUM> to emulate a specific/preferred driving pattern more accurately while also increasing safety.

<FIG> is an example method <NUM> for dynamically calculating lane change trajectories. The example method <NUM> may be implemented in any of the previously described environments, by any of the previously described systems or components, and by utilizing any of the previously described flows, process flows, or techniques. For example, the example method <NUM> can be implemented in the example environment <NUM>, by the example system <NUM>, and/or by following the example flows <NUM> and/or <NUM>. The example method <NUM> may also be implemented in other environments, by other systems or components, and utilizing other flows, process flows, or techniques. Example method <NUM> may be implemented by one or more entities (e.g., the trajectory module <NUM>). The order in which the operations are shown and/or described is not intended to be construed as a limitation, and the order may be rearranged without departing from the scope of this invention. Furthermore, any number of the operations can be combined with any other number of the operations to implement the example process flow or an alternate process flow.

At <NUM>, a request for a lane change trajectory for a lane change of a host vehicle that is traveling along a roadway is received. For example, the trajectory module <NUM> may receive the lane change trajectory request <NUM>.

At <NUM>, it is determined whether a preferred offset corresponding to an asymmetry of the lane change trajectory exists for the host vehicle. For example, the offset module <NUM> may determine whether the preferred offset <NUM> exists or is non-zero (e.g., at decision <NUM>).

At <NUM>, responsive to determining that the preferred offset exists, the lane change trajectory is calculated based on the preferred offset. For example, the offset module <NUM> may determine the offset <NUM> as the preferred offset <NUM> or an inverse of the preferred offset <NUM> (depending on decision <NUM>). In some situations, the offset module <NUM> may set the offset <NUM> as zero (e.g., according to decision <NUM>). The offset <NUM> may then be used by the path module <NUM> to calculate the lane change trajectory <NUM>.

At <NUM>, the lane change trajectory is provided to a vehicle component effective to cause the vehicle component to execute the lane change according to the lane change trajectory. For example, the path module <NUM> may output the lane change trajectory <NUM> such that the vehicle component <NUM> can execute a lane change according to the lane change trajectory <NUM>.

While various embodiments of the invention are described in the foregoing description and shown in the drawings, it is to be understood that this invention is not limited thereto but may be variously embodied to practice within the scope of the following claims. From the foregoing description, it will be apparent that various changes may be made without departing from the scope of the invention as defined by the following claims.

Claim 1:
A method comprising:
receiving a request (<NUM>) for a lane change trajectory (<NUM>, <NUM>, <NUM>) for a lane change of a host vehicle (<NUM>) that is traveling along a roadway (<NUM>);
determining whether a preferred offset (<NUM>) exists for the host vehicle (<NUM>), the preferred offset (<NUM>) being an amount of asymmetry of the lane change trajectory (<NUM>, <NUM>, <NUM>), and whereby the preferred offset (<NUM>) is indicative of a preference for a certain shape of the lane change trajectory (<NUM>, <NUM>, <NUM>), namely an aggressive entry and relaxed exit, a symmetrical lane change, a relaxed entry and aggressive exit, or anything in between;
responsive to determining that the preferred offset (<NUM>) exists, calculating the lane change trajectory (<NUM>, <NUM>, <NUM>) based on the preferred offset (<NUM>); and
providing the lane change trajectory (<NUM>, <NUM>, <NUM>) to a vehicle component (<NUM>) effective to cause the vehicle component (<NUM>) to execute the lane change according to the lane change trajectory (<NUM>, <NUM>, <NUM>).