Autonomous vehicle trajectory planning

By generating a synthetic map and planning the navigation trajectory through the autonomous vehicle controller, the problem of autonomous vehicles being trapped on low-friction surfaces is solved, and autonomous escape and safe navigation to high-friction surfaces are achieved.

CN109664886BActive Publication Date: 2025-09-30FORD GLOBAL TECH LLC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN201811179176.2
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2017-10-16
Filing Date
2018-10-10
Publication Date
2025-09-30
Estimated Expiration
2038-10-10

AI Technical Summary

Technical Problem

When an autonomous vehicle is trapped on a low-friction surface (such as snow, mud, or ice), it is difficult to escape autonomously, and existing technologies lack effective trajectory planning methods.

Method used

The autonomous vehicle controller generates a synthetic map including the locations of obstacles and high-friction surfaces, plans a navigation trajectory from low-friction to high-friction surfaces, and uses the sliding control process to avoid obstacles and increase friction to achieve autonomous escape.

Benefits of technology

It effectively helps autonomous vehicles navigate from low-friction surfaces to high-friction surfaces, avoids getting stuck, and improves the robustness and safety of autonomous driving.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN109664886B_ABST
    Figure CN109664886B_ABST
Patent Text Reader

Abstract

An autonomous vehicle controller includes a memory and a processor programmed to execute instructions stored in the memory. The instructions include detecting that a host vehicle is on a low-friction surface, generating a synthetic map representing the locations of a plurality of high-friction surfaces, selecting one of the plurality of high-friction surfaces, and autonomously navigating the host vehicle to the selected high-friction surface by executing a slip control procedure.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present disclosure relates to the field of autonomous vehicle operations, and more particularly to systems and methods for autonomous vehicle trajectory planning. Background Art

[0002] The Society of Automotive Engineers (SAE) has defined several levels of autonomous vehicle operation. At Levels 0-2, a human driver typically monitors or controls most driving tasks without assistance from the vehicle. For example, at Level 0 ("no automation"), the human driver is responsible for all vehicle operations. At Level 1 ("driver assistance"), the vehicle may sometimes assist with steering, acceleration, or braking, but the driver remains responsible for the vast majority of vehicle control. At Level 2 ("partial automation"), the vehicle can control steering, acceleration, and braking in certain situations without human interaction. At Levels 3-5, the vehicle assumes more driving-related tasks. At Level 3 ("conditional automation"), the vehicle can handle steering, acceleration, and braking in certain situations, as well as monitor the driving environment. However, Level 3 requires occasional driver intervention. At Level 4 ("high automation"), the vehicle can handle the same tasks as Level 3 but does not rely on driver intervention for certain driving modes. At Level 5 ("full automation"), the vehicle can handle nearly all tasks without any driver intervention. Summary of the Invention

[0003] Vehicle drivers need to be prepared for a variety of situations. This also applies to autonomous vehicles controlled by an autonomous vehicle controller (sometimes called a "virtual driver"). Both human and virtual drivers may encounter situations where their vehicles become stuck in snow, mud, or icy roads. Human drivers learn to handle snow, mud, and icy roads through driver training courses and experience. Furthermore, human drivers can call for a tow truck to help free a trapped vehicle. Virtual drivers can be programmed to attempt to free a trapped autonomous vehicle.

[0004] An exemplary autonomous vehicle that can plan a trajectory to a high-friction surface as part of a slip control process includes a memory and a processor programmed to execute instructions stored in the memory. The instructions include detecting that the host vehicle is on a low-friction surface, generating a synthetic map representing the locations of a plurality of high-friction surfaces, selecting one of the plurality of high-friction surfaces, and autonomously navigating the host vehicle to the selected high-friction surface by executing the slip control process.

[0005] In one possible approach, the processor is programmed to generate a synthetic map to include the locations of obstacles. The processor may be programmed to autonomously navigate the host vehicle to a selected high-friction surface while avoiding obstacles. Alternatively or additionally, the processor may be programmed to generate the synthetic map by generating a first map that includes the locations of obstacles. In this implementation, the processor may be programmed to generate the synthetic map by generating the first map to include the path range of the host vehicle. Alternatively or additionally, the processor may be programmed to generate the synthetic map by generating a second map that includes the locations of multiple high-friction surfaces. In this possible approach, the processor may be programmed to generate the synthetic map by combining portions of the first map and the second map. Combining portions of the first map and the second map may include incorporating multiple high-friction surfaces from the second map and the locations of obstacles from the first map into the synthetic map.

[0006] The processor can be programmed to determine whether the host vehicle has reached a selected high friction surface. In that case, the processor can be programmed to stop executing the slip control process as a result of determining that the host vehicle has reached the selected high friction surface.

[0007] An exemplary method includes detecting a host vehicle on a low-friction surface, generating a synthetic map representing the locations of a plurality of high-friction surfaces, selecting one of the plurality of high-friction surfaces, and autonomously navigating the host vehicle to the selected high-friction surface by executing a slip control procedure.

[0008] In the method, generating the synthetic map may include generating the synthetic map to include the location of obstacles. In that case, autonomously navigating the host vehicle may include autonomously navigating the host vehicle to a selected high-friction surface while avoiding obstacles. Alternatively or additionally, generating the synthetic map may include generating a first map that includes the location of obstacles. Generating the synthetic map may also or alternatively include generating the first map to include the path range of the host vehicle. Generating the synthetic map may also or alternatively include generating a second map that includes the location of multiple high-friction surfaces. In that case, generating the synthetic map may include combining portions of the first map and the second map. Combining portions of the first map and the second map may include incorporating the multiple high-friction surfaces from the second map and the location of the obstacles from the first map into the synthetic map.

[0009] The method may also include determining whether the host vehicle has reached a selected high friction surface. In that case, the method may also include stopping the slip control process as a result of determining that the host vehicle has reached the selected high friction surface.

[0010] The elements shown may take many different forms and include multiple and / or alternative components and facilities. The exemplary components of these descriptions are not intended to be limiting. In practice, additional or alternative components and / or implementations may be used. Furthermore, unless expressly stated otherwise, the elements shown are not necessarily drawn to scale. BRIEF DESCRIPTION OF THE DRAWINGS

[0011] Figure 1 An exemplary autonomous host vehicle is described having an autonomous vehicle controller that can plan a vehicle trajectory onto a high-friction surface as part of a slip control process.

[0012] Figure 2 is a block diagram illustrating exemplary components of a host vehicle.

[0013] Figure 3 is a control diagram illustrating various operations of the autonomous vehicle controller during a slip control process.

[0014] Figures 4A to 4C Illustrated is a map generated by an autonomous vehicle controller developing vehicle trajectories onto a high-friction surface and avoiding detected obstacles.

[0015] Figure 5 is a flow chart of an example process that may be performed by an autonomous vehicle controller to plan a vehicle trajectory onto a high-friction surface.

[0016] 6A to 6D An example autonomous host vehicle performing an example slip control process on a low-friction surface is illustrated. DETAILED DESCRIPTION

[0017] like Figure 1 As illustrated in FIG, autonomous host vehicle 100 includes an autonomous vehicle controller 105 that is programmed to control various autonomous vehicle operations. For example, as explained in more detail below, autonomous vehicle controller 105 is programmed to receive sensor signals and output signals to various actuators throughout host vehicle 100. By controlling the actuators, autonomous vehicle controller 105 can autonomously provide longitudinal and lateral control of host vehicle 100. That is, autonomous vehicle controller 105 can control propulsion, braking, and steering of host vehicle 100.

[0018] Additionally, as explained in more detail below, autonomous vehicle controller 105 is programmed to detect objects in the vicinity of host vehicle 100. Objects may include other vehicles, pedestrians, road signs, lane markings, etc. Autonomous vehicle controller 105 is programmed to detect surfaces with low friction (referred to as "low friction surfaces"). or "low mu surfaces") and surfaces with high friction (called "high friction surfaces", In some cases, autonomous vehicle controller 105 is programmed to predict the surface friction of the area near host vehicle 100 (including the area in front of host vehicle 100, the area adjacent to host vehicle 100, the area behind host vehicle 100, or a combination thereof). Given an obstacle between host vehicle 100 and the high-friction surface, autonomous vehicle controller 105 can be programmed to develop a trajectory from the low-friction surface to the high-friction surface.

[0019] Although shown as a sedan, the host vehicle 100 may include any passenger vehicle or commercial vehicle, such as a car, truck, sport utility vehicle, crossover, van, minivan, taxi, bus, etc. As discussed in more detail below, the host vehicle 100 is an autonomous vehicle that can operate in an autonomous (e.g., driverless) mode, a partially autonomous mode, and / or a non-autonomous mode. The partially autonomous mode may refer to an SAE Level 2 operating mode, in which the host vehicle 100 can control steering, acceleration, and braking in certain situations without human interaction. The partially autonomous mode may also refer to an SAE Level 3 operating mode, in which the host vehicle 100 can handle steering, acceleration, and braking in certain situations, as well as monitoring the driving environment, even though some human interaction is sometimes required.

[0020] Figure 2 is a block diagram illustrating exemplary components of host vehicle 100 . Figure 2 The components shown in FIG. 1 include actuator 110 , autonomous driving sensor 115 , memory 120 , and processor 125 .

[0021] Each actuator 110 is controlled by a control signal output by the processor 125. The electrical control signal output by the processor 125 can be converted into mechanical motion by the actuator 110. Examples of actuators 110 include linear actuators, servo motors, electric motors, and the like. Each actuator 110 can be associated with a specific longitudinal or lateral vehicle control. For example, a propulsion actuator can control the acceleration of the host vehicle 100. In other words, the propulsion actuator can control the throttle, which controls airflow to the engine. In the case of an electric vehicle or hybrid vehicle, the propulsion actuator can be an electric motor or otherwise control the speed of the electric motor. A braking actuator can control the vehicle brakes. In other words, the braking actuator can actuate the brake pads to slow the wheels. A steering actuator can control the rotation of the steering wheel or otherwise control the lateral movement of the host vehicle 100, including facilitating cornering. Each actuator 110 can control its corresponding vehicle subsystem based on, for example, the signal output by the processor 125.

[0022] The autonomous driving sensors 115 are implemented via circuits, chips, or other electronic components programmed to detect objects external to the host vehicle 100. For example, the autonomous driving sensors 115 may include radar sensors, scanning laser rangefinders, light detection and ranging (LiDAR) devices, ultrasonic sensors, and image processing sensors such as cameras. Each autonomous driving sensor can be programmed to output a signal representing an object detected by the sensor. For example, the autonomous driving sensors 115 can be programmed to output a signal representing an object such as another vehicle, a pedestrian, a road sign, a lane marking, or other objects. Some autonomous driving sensors 115 may be implemented via circuits, chips, or other electronic components that can detect certain internal states of the host vehicle 100. Examples of internal states may include wheel speed, wheel orientation, and engine and transmission variables. Furthermore, the autonomous driving sensors 115 may use, for example, a global positioning system (GPS) sensor; an accelerometer such as a piezoelectric or microelectromechanical system (MEMS) sensor; a gyroscope such as a rate, ring laser, or fiber gyroscope; an inertial measurement unit (IMU); and a magnetometer to detect the vehicle's position or orientation. Thus, the autonomous driving sensors 115 may output signals representing the internal vehicle state, position, or orientation, or both, of the host vehicle 100. The autonomous driving sensors 115 may be programmed to output signals to the processor 125 so that the processor 125 may autonomously control the host vehicle 100, including detecting when the host vehicle 100 is traveling on a low-friction surface, estimating the location of high-friction surfaces, and developing a trajectory to one of the high-friction surfaces given any nearby obstacles.

[0023] The memory 120 is implemented via circuits, chips, or other electronic components and may include one or more of a read-only memory (ROM), a random access memory (RAM), a flash memory, an electrically programmable memory (EPROM), an electrically programmable and erasable memory (EEPROM), an embedded multimedia memory card (eMMC), a hard drive, or any volatile or non-volatile medium. The memory 120 may store instructions executable by the processor 125 and other data. The instructions and data stored in the memory 120 may be accessible to the processor 125 and possibly other components of the host vehicle 100.

[0024] The processor 125 is implemented via circuits, chips, or other electronic components and may include one or more microcontrollers, one or more field programmable gate arrays (FPGAs), one or more application-specific integrated circuits (ASICs), one or more digital signal processors (DSPs), one or more customer-specific integrated circuits, etc. The processor 125 may receive and process data from the autonomous driving sensors 115 and, based on the data, determine whether the host vehicle 100 is on a low-friction surface, estimate where high-friction surfaces are located, locate obstacles near the host vehicle 100, select one of the high-friction surfaces, develop a trajectory from the current location of the host vehicle 100 to one of the high-friction surfaces, and autonomously navigate the host vehicle 100 to the high-friction surface while avoiding detected obstacles.

[0025] In some cases, the processor 125 may be programmed to determine that the host vehicle 100 is stuck on a low-friction surface, such as snow, mud, or ice. The processor 125 may determine that the host vehicle 100 is stuck on a low-friction surface based on a signal output by a slip controller. Alternatively, the processor 125 may be programmed to operate as a slip controller. Thus, the processor 125 may be programmed to determine that the host vehicle 100 is stuck on a low-friction surface based on a slip calculation, which may be calculated relative to a target slip based on, for example, wheel torque, wheel speed, or other internal vehicle characteristics. The difference between the slip calculation and the target slip may be referred to as a "slip error." The processor 125 may be programmed to infer that the host vehicle 100 is on a low-friction surface when the slip error is above a predetermined threshold. Furthermore, during slip control, the processor 125 may be programmed to use the slip error to determine whether the host vehicle 100 is attempting to escape the low-friction surface. That is, during slip control, the processor 125 may attempt to maintain wheel torque and speed at a certain slip target to maintain momentum and thereby continue forward on the low-friction surface.

[0026] The processor 125 can be programmed to generate one or more maps after determining that the host vehicle 100 is on a low-friction surface but before and during an attempt to move to a high-friction surface. Each map may include the location of high-friction surfaces, the location of detected objects, the location of low-friction surfaces, the estimated location of high-friction surfaces, the estimated location of low-friction surfaces, a path that the host vehicle 100 can travel, or a combination thereof. In some cases, the processor 125 can be programmed to generate a synthetic map that includes, for example, the estimated locations of high-friction surfaces and detected obstacles. The processor 125 can be programmed to generate the synthetic map after selecting one of the high-friction surfaces.

[0027] Processor 125 can be programmed to output control signals to actuators 110 to navigate host vehicle 100 to a selected high-friction surface based on the synthetic map. That is, processor 125 can be programmed to develop a trajectory from the current location of host vehicle 100 to the location of the selected high-friction surface using the synthetic map. Processor 125 can be programmed to develop the trajectory in a manner that causes host vehicle 100 to avoid detected obstacles. Developing the trajectory can include processor 125 outputting certain control signals to one or more of actuators 110 at certain times. The control signals output by processor 125 cause actuators 110 to manipulate, for example, the throttle, brakes, and steering wheel to navigate host vehicle 100 from its current location to one of the high-friction surfaces (i.e., the selected high-friction surface) while avoiding the detected obstacle. In some cases, the control signals output by processor 125 implement a slip control process to escape a low-friction surface and guide host vehicle 100 toward a high-friction surface.

[0028] Figure 3 is a control diagram 300 illustrating an example slip control process that may be performed by the processor 125 when the processor 125 is used as a slip controller. At block 305, the processor 125 performs a slip calculation. The slip calculation may be a vehicle speed (V ref ) and wheel speed (V whl ). Specifically, the sliding calculation can be defined as:

[0029]

[0030] At block 310, the processor 125 may calculate a slip error. The slip error may be the difference between the target slip value and the slip calculated in equation (1). Block 315 represents a PID slip controller. The output of the PID slip controller includes control signals for the powertrain torque and brake torque given the slip error determined in block 310 and other inputs such as an estimate of the change in surface friction (block 325) and the deviation from the target path (block 330). Another output of the PID slip controller includes a change in the target slip value (block 320). The processor 125 determines how the changes in the powertrain torque and brake torque (blocks 335 and 340, respectively) affect the wheel speed (block 345). The change in wheel speed is fed back to block 305 so that a new slip can be calculated, a new slip error can be determined, and the new output signals can be used to control the powertrain and brakes. Thus, the processor 125 can control the host vehicle 100 to the current slip target and shift the vehicle to gain momentum in successive iterations. Additionally, when the host vehicle 100 reaches a surface with higher friction, the processor 125 may apply more steering, acceleration, and braking control, as well as control the host vehicle 100 according to a lower slip target.

[0031] When the host vehicle 100 reaches the end of its intended path, the processor 125 may cease executing the control diagram 300, wherein the non-driven wheel speed matches the driven wheel speed. In some possible approaches, the processor 125 may be programmed to deactivate the slip control (e.g., terminate execution of the control diagram 300) if certain exit conditions are met. The exit conditions may be based on driver input, an impending collision, an actual collision, a low battery condition, a low fuel condition, the processor 125 failing to release the host vehicle 100 after a predetermined number of attempts, etc.

[0032] Figures 4A to 4C Exemplary maps 400A through 400C, respectively, that may be generated by processor 125 are illustrated. Maps 400A through 400C may be used to develop a trajectory to a high-friction surface after, for example, processor 125 determines that host vehicle 100 is trapped on a low-friction surface. That is, processor 125 may use a slip control process, such as the slip control process shown in control map 300, to steer host vehicle 100 to a selected high-friction surface identified in one or more of maps 400A through 400C.

[0033] Figure 4A An exemplary map 400A is shown with an obstacle 405 detected by autonomous driving sensors 115 and a path range 410. Path range 410 may be calculated by processor 125 and may be based on the location of obstacle 405 and the operating constraints (e.g., size and turning radius) of host vehicle 100. In other words, path range 410 may be based on an area of ​​the map to which host vehicle 100 may travel from its current location while avoiding obstacle 405 with a certain buffer.

[0034] Figure 4B Example map 400B illustrates the estimated location of high-friction surfaces 415. Processor 125 can estimate where high-friction surfaces 415 are located, and the result can be a map similar to map 400B. The estimated high-friction surfaces can be areas not covered by snow, mud, ice, etc., as determined by processor 125 based on data collected by autonomous driving sensors 115.

[0035] Figure 4CAn exemplary synthetic map 400C is shown. Synthetic map 400C may include elements of map 400A and map 400B. That is, synthetic map 400C may be generated by combining portions of map 400A and map 400B. For example, synthetic map 400C shows the locations of obstacles 405 and high friction surfaces 415. In some cases, map 400C may also show path range 410. Using map 400C, processor 125 may plan a route from the current location of host vehicle 100 to one of high friction surfaces 415. That is, processor 125 may select one of high friction surfaces 415 based on, for example, which high friction surface 415 is easiest for host vehicle 100 to navigate to while avoiding obstacle 405. Any path range 410 (from Figure 4A ) can be candidates for selected high-friction surface 415. In other words, processor 125 can be programmed to select high-friction surface 415 from those to which host vehicle 100 can navigate via, for example, path range 410. This is true even when path range 410 is not included in synthetic map 400C. Processor 125 can develop a trajectory from the current position of host vehicle 100 to selected high-friction surface 415 and output various control signals consistent with, for example, control map 300 to release host vehicle 100 from the low-friction surface and to move host vehicle 100 to high-friction surface 415. Once on the selected high-friction surface, the slip control process can end, and processor 125 can return to normal (i.e., more conventional) autonomous control of host vehicle 100.

[0036] Furthermore, in some cases, the processor 125 may be programmed to continuously update the maps 400A-400C. That is, the processor 125 may be programmed to update any one or more of the maps 400A-400C as the processor 125 attempts to release the host vehicle 100 from a low-friction surface, so that, for example, the processor 125 may consider a new obstacle 405, a newly estimated high-friction surface 415, a newly detected low-friction surface, etc. In some cases, the processor 125 may select a new high-friction surface 415 that is discovered after the processor 125 selects an initial high-friction surface.

[0037] Figure 5 is a flow chart of an example process 500 that may be performed by autonomous vehicle controller 105. Process 500 may be performed any time host vehicle 100 is operating autonomously. Process 500 may continue to be performed as long as host vehicle 100 continues to operate in autonomous mode.

[0038] At decision block 505, autonomous vehicle controller 105 determines whether host vehicle 100 is on a low-friction surface. Processor 125 may be programmed to determine that host vehicle 100 is on a low-friction surface based on signals output by autonomous driving sensors 115. For example, processor 125 may be programmed to determine that host vehicle 100 is on a low-friction surface based on internal states of host vehicle 100, such as wheel speed, wheel orientation, and engine and transmission values. If processor 125 determines that host vehicle 100 is on a low-friction surface, process 500 may proceed to block 510. Otherwise, block 505 may be repeated until processor 125 determines that host vehicle 100 is on a low-friction surface or process 500 ends.

[0039] At block 510, autonomous vehicle controller 105 generates at least one map. Processor 125 may be programmed to generate one or more maps that include obstacles detected by autonomous driving sensors 115. That is, processor 125 may be programmed to identify any object detected by autonomous driving sensors 115 as an obstacle and generate a map showing the location of the obstacle. Processor 125 may be programmed to generate multiple maps. A first map may include obstacles and path ranges. A second map may include the estimated location of high-friction surfaces. A third map may be a composite map showing, for example, the location of obstacles and high-friction surfaces.

[0040] At block 515, autonomous vehicle controller 105 selects one of the high-friction surfaces in the synthetic map. Processor 125 can be programmed to select the high-friction surface that host vehicle 100 is most likely to reach, given the current location of host vehicle 100, the location of obstacles, and the like. Processor 125 can also be programmed to consider whether other low-friction surfaces are in close proximity to the high-friction surface. That is, processor 125 can prioritize high-friction surfaces based on, for example, whether the high-friction surface is at least partially surrounded by low-friction surfaces, obstacles, or a combination of both. Processor 125 can further prioritize high-friction surfaces ahead of host vehicle 100 over those behind it to reduce the likelihood of host vehicle 100 becoming stuck on the same low-friction surface again. After selecting a high-friction surface, process 500 can proceed to block 520.

[0041] At block 520, the autonomous vehicle controller 105 executes a slip control process to escape the low friction surface and move toward the selected high friction surface. The processor 125 may be programmed, for example, to execute a slip control process such as discussed above and described in Figure 3 The sliding control process 300 is shown in FIG. Additional details about the sliding control process will be discussed below.

[0042] At decision block 525, autonomous vehicle controller 105 determines whether to discontinue the slip control process at block 520. Processor 125 may be programmed to determine whether host vehicle 100 has reached a selected high-friction surface or otherwise escaped a low-friction surface. Processor 125 may be programmed to make such a determination based on internal vehicle states detected while executing slip control process 300, using location data (such as GPS data), etc. Furthermore, upon reaching the selected high-friction surface, processor 125 may be programmed to determine whether the selected high-friction surface provides sufficient friction to operate host vehicle 100 without requiring slip control process 300. If processor 125 decides to discontinue slip control process 300, process 500 may proceed to block 530. Otherwise, process 500 may continue with block 525. In the event that the processor 125 determines that the host vehicle 100 has reached the selected high friction surface but still cannot obtain sufficient traction to control the host vehicle 100 without the slip control process 300, the process 500 can return to block 520 or block 510 so that a new map can be generated, a new high friction surface can be evaluated, a new high friction surface can be selected, and the slip control process 300 can be executed again.

[0043] At block 530, autonomous vehicle controller 105 continues normal autonomous operation of host vehicle 100. That is, processor 125 may cease executing the slip control process and begin outputting control signals to actuators 110 based on external signals received from autonomous driving sensors 115, without relying on slip control process 300 to control host vehicle 100. Process 500 may end after block 530.

[0044] The slip control process 300 described above allows the host vehicle 100 to escape from a low-friction surface. The slip control process (sometimes referred to as "escape mode") involves controlling braking, powertrain torque, gear shifting, and steering inputs to free the host vehicle 100 from a trapped condition, such as when the host vehicle 100 is trapped in deep snow. When the host vehicle 100 detects that it is on a low-friction surface, the host vehicle 100 can automatically enter escape mode. Alternatively or additionally, the host vehicle 100 can enter escape mode in response to user input provided by an occupant pressing a button or otherwise selecting escape mode from within the passenger compartment of the host vehicle 100. The user input can be received via, for example, an infotainment system. Furthermore, in some cases, if the host vehicle 100 detects that it is trapped, it can prompt the occupant to activate escape mode via the infotainment system.

[0045] The aforementioned slip control process 300 may be initiated as a result of receiving user input activating the escape mode, or as a result of the autonomous vehicle controller 105 determining that the host vehicle 100 is trapped. That is, the autonomous vehicle controller 105, starting with the steering wheel as the center, may apply drivetrain torque to the driven wheels, measuring wheel speed and wheel slip to control the wheel speed to an optimal target, as previously described. The autonomous vehicle controller 105 shifts gears toward the desired direction and continuously monitors the non-driven wheels to determine if they begin to rotate. If the non-driven wheels begin to rotate, the autonomous vehicle controller 105 may determine that the vehicle is moving out of the trapped position. If the non-driven wheels do not rotate, stop rotating, or slow down below a predetermined threshold, the autonomous vehicle controller 105 shifts gears and drives the host vehicle 100 in the opposite direction, causing the host vehicle 100 to swing back and forth (e.g., oscillate) until the driven wheels stop slipping and the non-driven wheels roll normally. The autonomous vehicle controller 105 may also test various steering angles to attempt to find a path out of the trapped situation, particularly if attempts to oscillate the host vehicle 100 fail to make significant progress. As previously mentioned, autonomous driving sensors can be used to avoid collisions with nearby objects during this slip control process.

[0046] If the autonomous vehicle controller 105 operating in escape mode fails to release the host vehicle 100 after a set number of attempts, or if the non-driven wheels cannot achieve peak speed, the autonomous vehicle controller 105 can report "unable to escape", which may include returning control to the driver (assuming an occupant is present) and may also make suggestions to the driver on how to best escape. Some driver inputs, such as brake pedal depression, accelerator depression, steering wheel angle, can cause the autonomous vehicle controller 105 to exit escape mode and give the driver full control. Other conditions that may cause the vehicle to exit escape mode are battery voltage below a set threshold, fuel level below a set threshold, if certain diagnostic trouble codes are set, or if a collision is imminent or has occurred.

[0047] With this approach, autonomous vehicle controller 105 tests different steering wheels and angles while oscillating host vehicle 100 back and forth, monitoring the wheel speeds of both the driven and non-driven wheels. Instead of monitoring only the driven wheels and vehicle acceleration, autonomous vehicle controller 105 looks for the wheel speeds of the driven and non-driven wheels to converge over a period of time.

[0048] An exemplary slip control process performed during escape mode may be as follows. Initially, autonomous vehicle controller 105 may determine whether host vehicle 100 needs to move forward or backward from its current position. Additionally, autonomous vehicle controller 105 may initialize a counter that counts the number of times autonomous vehicle controller 105 will attempt to free a trapped host vehicle 100 (i.e., iterations).

[0049] After selecting a direction and initializing a counter, autonomous vehicle controller 105 can estimate the speed of host vehicle 100 using a rolling average of the non-driven wheel speeds. The non-driven wheel speeds may have a certain critical slip relative to the slip of the driven wheel speeds. The rolling average can be used to remove noise from the data, such as from variations in the road surface caused by, for example, snow. Autonomous vehicle controller 105 can be programmed to detect when the rolling average speed is decreasing and compare the rolling average to a predetermined threshold. Upon determining that the rolling average is decreasing and has fallen below the predetermined threshold, autonomous vehicle controller 105 can determine that host vehicle 100 is no longer gaining momentum to escape the entrapment situation. Autonomous vehicle controller 105 can compare the number of iterations in the counter to a trial limit. If the trial limit has not been reached, autonomous vehicle controller 105 can increment the counter and continue determining the rolling average and comparing it to the predetermined threshold, as described above. If the number of iterations meets or exceeds the attempt limit, autonomous vehicle controller 105 may shift the vehicle into a reverse gear (e.g., “reverse” if host vehicle 100 previously attempted to move forward; “drive” if host vehicle 100 previously attempted to move backward) and attempt again to free the trapped host vehicle 100.

[0050] After the vehicle has shifted into the opposite gear, autonomous vehicle controller 105 may begin accelerating host vehicle 100. Autonomous vehicle controller 105 may continue to calculate and monitor the rolling average speed and determine whether the rolling average speed is decreasing and has fallen below a predetermined threshold. If so, autonomous vehicle controller 105 may again conclude that host vehicle 100 has not gained sufficient momentum to escape. Autonomous vehicle controller 105 may then increase the iterations and determine whether the peak speed of host vehicle 100 at the steering angle during each movement pattern has increased. If so, autonomous vehicle controller 105 may return to attempting to free the trapped host vehicle 100 in a target (e.g., previous) gear that moves host vehicle 100 in the original direction (e.g., target direction). Otherwise, autonomous vehicle controller 105 may determine that the current steering angle does not help host vehicle 100 escape. In that case, autonomous vehicle controller 105 may instruct host vehicle 100 to attempt to free itself using a different steering angle, as discussed in more detail below. Furthermore, it is expected that host vehicle 100 will not escape in that direction (e.g., the direction of the opposite gear). If the rolling average speed exceeds a value over a given time period, or if the calculated displacement is too far from the starting position, then to avoid moving into an environmental hazard, autonomous vehicle controller 105 can command host vehicle 100 to change gear and return to the target direction and perform a portion of the process associated with moving in the target direction, as described above.

[0051] When a new steering angle is requested, the autonomous vehicle controller 105 may change the current angle by a calibrated amount. Continuously making this request prevents the host vehicle 100 from attempting to free itself using the same steering angle as a failed attempt. At each new steering angle, the host vehicle 100 may enter a normal rocking motion (e.g., rocking back and forth) and attempt to free itself. If the steering angle fails, new angles may be tested until the desired result is achieved or a failure condition exits escape mode.

[0052] 6A to 6D The exemplary host vehicle 100 is illustrated operating in the escape mode discussed above to escape a trapped condition. Figures 6A-6D The host vehicle 100 in FIG. 1 is on an uneven low-friction surface (eg, a muddy road, a snowy road, an icy road, etc.). The arrows indicate the direction of the momentum of the host vehicle 100 .

[0053] exist Figure 6A In the example, autonomous vehicle controller 105 determines that host vehicle 100 is not moving forward normally (e.g., moving in a straight line). Therefore, autonomous vehicle controller 105 activates escape mode and selects a target direction. Autonomous vehicle controller 105 then causes host vehicle 100 to oscillate back and forth in an attempt to move forward in the target direction. Figure 6B The example in which the host vehicle 100 cannot proceed in the target direction is described. That is, the host vehicle 100 cannot pass the uneven road surface. In this case, the autonomous vehicle controller 105 switches to the opposite gear (the gear in the Figure 6B (The view shown in the figure is opposite). Figure 6C , the autonomous vehicle controller 105 commands the host vehicle 100 to accelerate backward so that the host vehicle 100 can have additional energy to pass the uneven road surface. Figure 6D , the host vehicle 100 is Figures 6A to 6C is free after multiple iterations of (e.g., multiple iterations of building energy by swinging the host vehicle 100 back and forth). Figure 6D In the event of a jam, the host vehicle 100 has gained enough momentum to overcome the jam condition (e.g., passing through an uneven road surface despite the uneven road surface being low friction). Once passed, the host vehicle 100 is free to continue in the target direction.

[0054] When combined with the generation of a synthetic map, this approach gives autonomous vehicle controller 105 a greater chance of freeing host vehicle 100 from a stuck situation.

[0055] In general, the computing systems and / or devices described may be used with any number of computer operating systems, including, but not limited to, versions and / or variations of the following operating systems: Ford Applications, AppLink / Smart DeviceLink middleware, Microsoft Operating system, Microsoft Operating systems, Unix operating systems (e.g., those developed by Oracle Corporation of Redwood Shores, California) operating system), the AIX UNIX operating system developed by International Business Machines Corporation of Armonk, New York, the Linux operating system, Mac OSX and iOS operating systems developed by Apple Inc. of Cupertino, California, the BlackBerry OS developed by BlackBerry Ltd. of Waterloo, Canada, the Android operating system developed by Google Inc. and the Open Handset Alliance, or the QNX software system Automotive Infotainment Platform. Examples of computing devices include, but are not limited to, an in-vehicle computer, a computer workstation, a server, a desktop, a laptop, a portable computer, or a handheld computer, or some other computing system and / or device.

[0056] Computing devices generally include computer executable instructions, in which case the instructions can be executed by one or more computing devices (such as those listed above). Computer executable instructions can be compiled or interpreted from a computer program created using various programming languages ​​and / or technologies, including but not limited to Java™, C, C++, Visual Basic, JavaScript, Perl, etc., either alone or in combination. Some of these applications can be compiled and executed on a virtual machine, such as a Java virtual machine, a Dalvik virtual machine, etc. Typically, a processor (e.g., a microprocessor) receives instructions, for example, from a memory, a computer-readable medium, etc., and executes these instructions, thereby executing one or more processes, including one or more processes described herein. Such instructions and other data can be stored and transmitted using various computer-readable media.

[0057] Computer-readable media (also known as processor-readable media) include any non-transitory (e.g., tangible) medium that participates in providing data (e.g., instructions) that can be read by a computer (e.g., a computer's processor). Such media can take many forms, including but not limited to non-volatile media and volatile media. Non-volatile media include, for example, optical or magnetic disks and other permanent storage. Volatile media may include, for example, dynamic random access memory (DRAM), which typically constitutes main memory. Such instructions may be transmitted by one or more transmission media, including coaxial cables, copper wire, or optical fiber, including the wires comprising a system bus coupled to a computer's processor. Common forms of computer-readable media include, for example, floppy disks, diskettes, hard disks, magnetic tape, any other magnetic medium, CD-ROMs, DVDs, any other optical media, punch cards, paper tape, any other physical medium having a pattern of holes, RAM, PROMs, EPROMs, FLASH-EEPROMs, any other memory chip or cartridge, or any other computer-readable medium.

[0058] A database, data repository, or other data store described herein may include various types of mechanisms for storing, accessing, and retrieving various types of data, including a hierarchical database, a set of files in a file system, an application database in a specialized format, a relational database management system (RDBMS), and the like. Each of such data stores is typically included in a computing device using a computer operating system such as one described above and is accessible via a network in any one or more of a variety of ways. The file system is accessible from the computer operating system and may include files stored in a variety of formats. An RDBMS typically uses Structured Query Language (SQL), as well as a language for creating, storing, editing, and executing stored procedures, such as the PL / SQL language described above.

[0059] In some examples, system elements may be implemented as computer-readable instructions (e.g., software) stored on a computer-readable medium (e.g., disk, memory, etc.) associated with one or more computing devices (e.g., servers, personal computers, etc.). A computer program product may include such instructions stored on a computer-readable medium for performing the functions described herein.

[0060] With respect to the processes, systems, methods, heuristics, and the like described herein, it should be understood that although the steps of these processes, and the like, have been described as occurring in a certain ordered sequence, these processes can be practiced with the steps described being performed in an order different from that described herein. It should be further understood that certain steps can be performed simultaneously, other steps can be added, or certain steps described herein can be omitted. That is, the descriptions of the processes herein are provided for the purpose of illustrating certain embodiments and should not be construed in any way as limiting the claims.

[0061] Therefore, it should be understood that the above description is intended to be illustrative and not limiting. Many embodiments and applications other than the examples provided will be apparent upon reading the above description. The scope should not be determined with reference to the above description, but rather with reference to the appended claims, along with the full scope of equivalents to which such claims are entitled. It is anticipated and contemplated that future developments will occur in the technology described herein, and that the disclosed systems and methods will be incorporated into such future embodiments. In short, it should be understood that the application is capable of modification and variation.

[0062] All terms used in the claims are intended to be given their ordinary meaning as understood by those skilled in the art as described herein, unless an explicit indication to the contrary is made herein. In particular, the use of singular articles such as "a," "an," "the," and the like should be understood to describe one or more of the indicated elements unless a claim recites an explicit limitation to the contrary.

[0063] The abstract is provided to allow the reader to quickly ascertain the nature of the technical disclosure. It should be understood that it is not intended to interpret or limit the scope or meaning of the claims. Furthermore, in the foregoing detailed description, it can be seen that various features are grouped together in individual embodiments for the purpose of simplifying the disclosure. This method of disclosure is not to be construed as an intention to convey that the claimed embodiments require more features than are expressly recited in each claim. Quite the contrary, as expressed in the claims below, the subject matter of the invention lies in less than all of the features of a single disclosed embodiment. Accordingly, the claims below are hereby incorporated by reference into the detailed description, with each claim standing on its own as the subject matter of a separate claim.

[0064] According to the present invention, an autonomous vehicle controller is provided having a memory; and a processor programmed to execute instructions stored in the memory, the instructions including detecting a host vehicle on a low-friction surface, generating a synthetic map representing the locations of a plurality of high-friction surfaces, selecting one of the plurality of high-friction surfaces, and autonomously navigating the host vehicle to the selected high-friction surface by executing a slip control procedure.

[0065] According to an embodiment, the processor is programmed to generate the synthetic map to include the locations of obstacles.

[0066] According to an embodiment, the processor is programmed to autonomously navigate the host vehicle to a selected high-friction surface while avoiding obstacles.

[0067] According to an embodiment, the processor is programmed to generate the synthetic map by generating a first map including the locations of obstacles.

[0068] According to an embodiment, the processor is programmed to generate the synthetic map by generating the first map to include a path range of the host vehicle.

[0069] According to an embodiment, the processor is programmed to generate the synthetic map by generating a second map comprising the locations of the plurality of high friction surfaces.

[0070] According to an embodiment, the processor is programmed to generate a composite map by combining parts of the first map and the second map.

[0071] According to an embodiment, the above invention is further characterized in that combining portions of the first map and the second map includes incorporating into the resultant map the locations of the plurality of high friction surfaces from the second map and obstacles from the first map.

[0072] According to an embodiment, the processor is programmed to determine whether the host vehicle has reached a selected high friction surface.

[0073] According to an embodiment, the processor is programmed to cease execution of the slip control process as a result of determining that the host vehicle has reached a selected high friction surface.

[0074] According to the present invention, a method is provided having the steps of detecting that a host vehicle is on a low-friction surface; generating a synthetic map representing the locations of a plurality of high-friction surfaces; selecting one of the plurality of high-friction surfaces; and autonomously navigating the host vehicle to the selected high-friction surface by executing a slip control procedure.

[0075] According to an embodiment, generating the synthetic map includes generating the synthetic map to include locations of obstacles.

[0076] According to an embodiment, autonomously navigating the host vehicle includes autonomously navigating the host vehicle to a selected high-friction surface while avoiding obstacles.

[0077] According to an embodiment, generating the synthetic map comprises generating a first map comprising locations of obstacles.

[0078] According to an embodiment, generating the synthetic map includes generating a first map to include a path range of the host vehicle.

[0079] According to an embodiment, generating the synthetic map includes generating a second map including the locations of a plurality of high-friction surfaces.

[0080] According to an embodiment, generating the composite map comprises combining portions of the first map and the second map.

[0081] According to an embodiment, combining the portions of the first map and the second map comprises incorporating into the composite map the locations of the plurality of high friction surfaces from the second map and obstacles from the first map.

[0082] According to an embodiment, the above invention is further characterized by determining whether the host vehicle has reached a selected high friction surface.

[0083] According to an embodiment, the above invention is further characterized by stopping the slip control process as a result of determining that the host vehicle has reached the selected high friction surface.

Claims

1. A method for autonomous vehicle trajectory planning, the method comprising: Detecting that the host vehicle is on a low-friction surface; generating a composite map representing locations of a plurality of high-friction surfaces and locations of obstacles in response to detecting the host vehicle on the low-friction surface; selecting one of the plurality of high friction surfaces; and The host vehicle is autonomously navigated from the low-friction surface to a selected high-friction surface by executing a slip control process based on the synthetic map. 2 . The method of claim 1 , wherein autonomously navigating the host vehicle comprises autonomously navigating the host vehicle to the selected high-friction surface while avoiding the obstacle. The method of claim 1 , wherein generating the synthetic map comprises generating a first map including the locations of the obstacles. The method of claim 3 , wherein generating the synthetic map comprises generating the first map to include a path range of the host vehicle. 5 . The method of claim 3 , wherein generating the synthetic map comprises generating a second map including the locations of the plurality of high-friction surfaces. The method of claim 5 , wherein generating the composite map comprises combining portions of the first map and the second map. 7 . The method of claim 6 , wherein combining portions of the first and second maps comprises incorporating the plurality of high-friction surfaces from the second map and the locations of the obstacles from the first map into the composite map. 8 . The method of claim 1 , further comprising determining whether the host vehicle has reached the selected high friction surface. 9 . The method of claim 8 , further comprising discontinuing the slip control process as a result of determining that the host vehicle has reached the selected high friction surface.

10. The method of any one of claims 1-9, performed by an autonomous vehicle controller.

11. An autonomous vehicle controller having a memory and a processor programmed to execute instructions stored in the memory, the instructions comprising the method of any one of claims 1-9.

12. A vehicle comprising an autonomous vehicle controller programmed to perform the method of any one of claims 1-9.