Vehicle operation around obstacle
Through the computer system to determine the number of obstacle threats based on sensor data and formulate control obstacle functions, the problem of obstacle contact between obstacles and vehicles in advanced driver assistance systems is solved, and safety and comfort are improved.
Patent Information
- Application Number
- CN202510064701.X
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2024-01-19
- Filing Date
- 2025-01-15
- Publication Date
- 2025-07-22
AI Technical Summary
Existing advanced driver assistance systems are difficult to effectively reduce the possibility of contact between obstacles and vehicles, especially in the absence of contact to reduce activation of vehicle components.
The computer system determines the number of threats to obstacles based on sensor data, formulates a control obstacle function, and determines the control input to actuate the vehicle's braking or steering system to avoid obstacle contact.
Effectively reduces the risk of contact between obstacles and vehicles, improves the safety and comfort of vehicle operation, and reduces unnecessary component actuation.
Smart Images

Figure CN120348301A_ABST
Abstract
Description
Technical Field
[0001] The present disclosure relates to advanced driver assistance systems in vehicles. Background Art
[0002] An advanced driver assistance system (ADAS) is an electronic technology that assists a driver in achieving driving functions and parking functions. Examples of ADAS include forward proximity detection, lane departure detection, blind spot detection, brake actuation, adaptive cruise control, and lane keeping assistance systems. Summary of the Invention
[0003] The techniques described herein can reduce the likelihood of contact between an obstacle and a vehicle by, for example, actuating components of the vehicle using autonomous operation or ADAS functions, while reducing activation in cases where contact would not otherwise occur. For example, the system can actuate the vehicle, such as a braking system or a steering system, based on a threat number of the obstacle or the proximity of the obstacle to a buffer zone surrounding the vehicle. The threat number represents the risk of an impact between the vehicle and the obstacle, e.g., the force required to steer the vehicle away from the obstacle relative to the force that the vehicle is capable of exerting. The buffer zone can be represented by a control barrier function. The computer of the vehicle is programmed to: determine the threat number; formulate the control barrier function based on sensor data indicative of the obstacle; determine a control input based on an expression including the control barrier function and the threat number; and actuate the components of the vehicle according to the control input. In cases where the obstacle approaches the vehicle more closely but the vehicle can still comfortably drive along a route away from the obstacle, the use of the threat number can reduce the actuation of the components.
[0004] A computer includes a processor and a memory, and the memory stores instructions that can be executed by the processor to: determine a threat number based on sensor data indicative of an obstacle, the threat number representing the risk of an impact between the vehicle and the obstacle; formulate a control barrier function based on sensor data indicative of the obstacle; determine a control input based on an expression including the control barrier function and the threat number; and actuate components of the vehicle according to the control input.
[0005] In one example, the instructions can further include instructions for: determining the threat number based on a comparison of a first value of a kinematic quantity and a second value of the kinematic quantity, the first value being the value of the kinematic quantity for performing an operation for maneuvering the vehicle away from the obstacle, and the second value of the kinematic quantity being the ability of the vehicle to perform the operation. In another example, the instructions can further include instructions for: determining a predicted time for the vehicle to reach the obstacle, and determining the first value of the kinematic quantity based on the predicted time.
[0006] In yet another example, the instructions may further include instructions for: determining a plurality of candidate threat numbers, and selecting the smallest of the candidate threat numbers as the threat number.
[0007] In yet another example, the operation may include at least one of braking or steering.
[0008] In one example, determining the control input may be subject to a constraint based on the control barrier function. In another example, the constraint may be weighted by the threat number.
[0009] In yet another example, the constraint may include that the sum of the change of the control barrier function with respect to time and a function of the control barrier function exceeds a certain value. In yet another example, the sum may be weighted by the threat number.
[0010] In one example, the control barrier function may be the difference between the distance from a reference point to the obstacle and the distance from the reference point along the direction from the reference point to the obstacle to a point on the virtual boundary. In another example, the reference point may be inside the coverage area of the vehicle.
[0011] In yet another example, the reference point may be fixed relative to the vehicle.
[0012] In one example, the components of the vehicle may include at least one of a braking system or a steering system.
[0013] In one example, determining the control input may be a function based on minimizing the difference between the control input and a nominal input. In another example, the nominal input may be the current value of the input.
[0014] In yet another example, the instructions may further include instructions for: receiving the nominal input from an algorithm for at least partial autonomous operation of the vehicle.
[0015] A method includes: determining a threat number based on sensor data indicating an obstacle, the threat number representing the risk of an impact between the vehicle and the obstacle; formulating a control barrier function based on the sensor data indicating the obstacle; determining a control input based on an expression including the control barrier function and the threat number; and actuating a component of the vehicle according to the control input.
[0016] In one example, determining the control input may be subject to a constraint based on the control barrier function, and the constraint may be weighted by the threat number.
[0017] In one example, the control barrier function can be the difference between the distance from a reference point to the obstacle and the distance from the reference point along the direction from the reference point to the obstacle to a point on the virtual boundary.
[0018] In one example, the component of the vehicle can include at least one of a braking system or a steering system. BRIEF DESCRIPTION OF THE DRAWINGS
[0019] Figure 1 is a block diagram of an example vehicle.
[0020] Figure 2 is a schematic top view of a schematic scenario of a vehicle interacting with another vehicle.
[0021] Figure 3 is a schematic top view of a vehicle and an example obstacle.
[0022] Figure 4 is a flowchart of an example process for controlling a vehicle. DETAILED DESCRIPTION
[0023] Referring to the accompanying drawings, in which like numerals indicate like parts throughout the several views, computer 105 includes a processor and a memory, and the memory stores instructions that can be executed by the processor to: determine a threat number based on sensor data indicating an obstacle 200, the threat number representing the risk of an impact between vehicle 100 and obstacle 200; formulate a control barrier function based on sensor data indicating an obstacle 200; determine a control input based on an expression including the control barrier function and the threat number; and actuate a component of vehicle 100 according to the control input.
[0024] Referring Figure 1 , vehicle 100 can be any passenger or commercial vehicle, such as a sedan, truck, sport utility vehicle, crossover vehicle, van, minivan, taxi, bus, etc. Vehicle 100 can include computer 105, communication network 110, sensors 115, propulsion system 120, braking system 125, and steering system 130.
[0025] The computer 105 is a microprocessor-based computing device, such as a general-purpose computing device (including a processor and a memory, an electronic controller, etc.), a field-programmable gate array (FPGA), an application-specific integrated circuit (ASIC), a combination of the foregoing, etc. Generally, in electronic design automation, hardware description languages such as VHDL (VHSIC (Very High Speed Integrated Circuit) Hardware Description Language) are used to describe digital and mixed-signal systems such as FPGAs and ASICs. For example, an ASIC is manufactured based on the VHDL programming provided before manufacturing, and the logic components inside an FPGA can be configured based on, for example, the VHDL programming stored in a memory electrically connected to the FPGA circuit. Thus, the computer 105 may include a processor, a memory, etc. The memory of the computer 105 may include a medium for storing instructions executable by the processor and for electronically storing data and / or databases, and / or the computer 105 may include a structure such as the foregoing structure that provides programming. The computer 105 may be multiple computers coupled together.
[0026] The computer 105 can transmit and receive data through the communication network 110. The communication network 110 can be, for example, a controller area network (CAN) bus, Ethernet, WiFi, local interconnect network (LIN), on-board diagnostic connector (OBD-II), and / or any other wired or wireless communication network. The computer 105 can be communicatively coupled to the sensor 115, the propulsion system 120, the braking system 125, the steering system 130, and other components via the communication network 110.
[0027] The sensor 115 can provide data regarding the operation of the vehicle 100, such as wheel speed, wheel orientation, and engine and transmission data (e.g., temperature, fuel consumption, etc.). The sensor 115 can detect the position and / or orientation of the vehicle 100. For example, the sensor 115 can include a global positioning system (GPS) sensor; an accelerometer, such as a piezoelectric system or a microelectromechanical system (MEMS); a gyroscope, such as a rate gyroscope, a ring laser gyroscope, or an optical fiber gyroscope; an inertial measurement unit (IMU); and a magnetometer. The sensor 115 can detect the external world, such as obstacles 200 and / or characteristics of the environment around the vehicle 100, such as other vehicles, road lane markings, traffic lights and / or signs, road users, etc. For example, the sensor 115 can include a radar sensor, an ultrasonic sensor, a scanning lidar, a light detection and ranging (lidar) device, and an image processing sensor (such as a camera).
[0028] The propulsion system 120 of the vehicle 100 generates energy and converts the energy into the motion of the vehicle 100. The propulsion system 120 can be a conventional vehicle propulsion subsystem, for example, a conventional powertrain that includes an internal combustion engine coupled to a transmission that transfers rotational motion to the wheels; an electric powertrain that includes a battery, an electric motor, and a transmission that transfers rotational motion to the wheels; a hybrid powertrain that includes elements of a conventional powertrain and an electric powertrain; or any other type of propulsion device. The propulsion system 120 can include an electronic control unit (ECU) etc. that communicates with and receives inputs from the computer 105 and / or a human operator. The human operator can control the propulsion system 120 via, for example, an accelerator pedal and / or a shift lever.
[0029] The braking system 125 is typically a conventional vehicle braking subsystem and prevents the motion of the vehicle 100, thereby slowing down and / or stopping the vehicle 100. The braking system 125 can include friction brakes such as disc brakes, drum brakes, band brakes, etc.; regenerative brakes; any other suitable type of brakes; or combinations thereof. The braking system 125 can include an electronic control unit (ECU) etc. that communicates with and receives inputs from the computer 105 and / or a human operator. The human operator can control the braking system 125 via, for example, a brake pedal.
[0030] The steering system 130 is typically a conventional vehicle steering subsystem and controls the turning of the wheels. The steering system 130 can be a rack and pinion system with electric power steering, a steer-by-wire system (both of which are known), or any other suitable system. The steering system 130 can include an electronic control unit (ECU) etc. that communicates with and receives inputs from the computer 105 and / or a human operator. The human operator can control the steering system 130 via, for example, a steering wheel.
[0031] Reference Figure 2 , the computer 105 is programmed to determine the vehicle kinematic state of the vehicle 100. For the purposes of this disclosure, "kinematic state" is defined as a mathematical description of the position and / or motion of an entity. For example, the vehicle kinematic state can include position, heading, velocity vector, and yaw rate. The position of the vehicle 100 can be the position of a reference point 305 of the vehicle 100 ( Figure 3 shown in), for example, the center of gravity or the center of the rear axle. The components of the velocity vector of the vehicle 100 can be given by the following equation:
[0032]
[0033] where (x H , y H ) is the position of the vehicle 100, and the dot above a variable indicates the time derivative, vH is the longitudinal speed of vehicle 100, i.e., the speed, and θ H is the heading of vehicle 100. The yaw rate of vehicle 100 can be given by the following equation:
[0034]
[0035] where δ is the steering angle of vehicle 100 and W is the wheelbase of vehicle 100, i.e., the longitudinal distance between the front axle and the rear axle.
[0036] Computer 105 can be programmed to determine the vehicle kinematic state based on sensor data from sensors 115. For example, sensors 115 can return the position from a GPS sensor, the speed v of vehicle 100 from a wheel speed sensor H and the heading θ of vehicle 100 from an IMU H and the steering angle δ from the steering system 130.
[0037] Computer 105 can be programmed to actuate components of vehicle 100 based on an input. For the purposes of this disclosure, an "input" is one or more values that control the operation of a component of vehicle 100. For example, the component can be the braking system 125 and the input can include the desired speed u of vehicle 100 v or the desired acceleration u a . Actuating the braking system 125 based on the desired speed u of vehicle 100 v can include engaging the braking system 125 until the speed v H drops to the desired speed u v . Actuating the braking system 125 based on the desired acceleration u of vehicle 100 a can include engaging the braking system 125 such that the acceleration a of vehicle 100 H matches the desired acceleration u specified in the input a . For another example, the component can be the steering system 130 and the input can include the desired steering angle u δ . Actuating the steering system 130 based on the desired steering angle u δ can include turning the wheels until the steering angle δ of the wheels is oriented at the desired steering angle u δ .
[0038] Computer 105 can be programmed to receive a nominal input. The nominal input can be the current value of an input. The nominal input can include one or more values input by an operator. For example, if the operator is manually operating vehicle 100, the nominal input can be the current value of the values that form the input, e.g., the desired acceleration u received from a brake pedal or an accelerator pedal a and / or the desired steering angle u from a steering wheel δThe current value. For another example, if computer 105 operates vehicle 100 at least partially autonomously, the nominal input can include one or more values output by an algorithm for at least partially autonomous operation of vehicle 100. For example, the algorithm can be used for fully autonomous operation or for ADAS features. Computer 105 can receive the nominal input from the algorithm. Computer 105 can receive the nominal input from both the operator and the algorithm. For example, the expected steering angle u from the operator δ and the expected acceleration u from an ADAS feature such as adaptive cruise control a , or vice versa. In the absence of a control input (as determined as will be described below), computer 105 can be programmed to actuate components of vehicle 100 based on the nominal input.
[0039] Computer 105 can be programmed to receive sensor data from sensors 115 indicating one or more obstacles 200. For example, distance data from radar sensors, lidar sensors, and / or ultrasonic sensors in sensors 115. For example, Figure 2 another vehicle is shown as obstacle 200, and Figure 3 two obstacles 200 are shown. The sensor data can include the position, heading, velocity vector, and / or profile of obstacle 200. Thus, the sensor data can define the kinematic state of the obstacle. For example, the position of obstacle 200 can be represented as a distance r relative to vehicle 100 Hi (e.g., from reference point 305 of vehicle 100 to obstacle 200), and a direction θ relative to vehicle 100 Hi , e.g., from reference point 305 of vehicle 100 to obstacle 200 measured relative to the longitudinal axis of vehicle 100, where the subscript i is the index of obstacle 200. The velocity vector can be represented by the velocity v of obstacle 200 Ti and the heading θ of obstacle 200 Ti .
[0040] Computer 105 is programmed to determine at least one threat number for each of the plurality of obstacles 200. The threat number represents the risk of a collision between vehicle 100 and one of the obstacles 200. Computer 105 can determine the threat number based on the kinematic states of vehicle 100 and obstacle 200. For example, the threat number can indicate the likelihood of a collision occurring if vehicle 100 and obstacle 200 remain on their current trajectories (one of the vehicle and the obstacle may be stationary).
[0041] For an example of a type of threat number, the threat number can represent the ability of vehicle 100 to perform an operation to maneuver vehicle 100 away from a corresponding obstacle 200. Each threat number can be for a specific operation (e.g., braking and / or steering) and for a specific obstacle 200. Computer 105 determines each threat number based on a comparison of a first value and a second value of kinematic quantities. Kinematic quantities are numerical descriptions of the position and / or motion of one or more entities. The kinematic quantities can be related to the operation of vehicle 100, e.g., the longitudinal acceleration for braking or the lateral acceleration for steering. The first value is the value of the kinematic quantity for performing an operation to maneuver vehicle 100 away from obstacle 200, i.e., the value of the kinematic quantity available to vehicle 100 for performing an operation to maneuver vehicle 100 away from obstacle 200, i.e., how much kinematic quantity the situation provides for vehicle 100 to avoid intersection with obstacle 200. The second value is the ability of vehicle 100 to perform the operation, i.e., the value of the kinematic quantity that vehicle 100 will use to perform the operation, i.e., the value of the kinematic quantity that vehicle 100 can generate. The second value can be measured in the same unit as the first value for the corresponding operation, thus facilitating the comparison between the second value and the first value.
[0042] As an overall overview, computer 105 can be programmed to determine a plurality of candidate threat numbers for obstacle 200, where each candidate threat number represents a different operation or manner for guiding vehicle 100 away from obstacle 200. For each candidate threat number, computer 105 can determine the predicted time for vehicle 100 to reach obstacle 200 (e.g., the longitudinal time to collision (TTC)), determine a first value of kinematic quantity based on the predicted time, and determine the candidate threat number based on the first value and the second value, as will be described below for specific examples of candidate threat numbers. The calculation of the candidate threat number can be selected such that the resulting value is between 0 and 1, where 0 represents a negligible contact risk and 1 represents a high contact risk, thus enabling the candidate threat numbers to be compared with each other. Then, computer 105 can select the smallest of the candidate threat numbers as the threat number for obstacle 200.
[0043] Computer 105 can be programmed to determine the predicted time for vehicle 100 to reach obstacle 200. For example, computer 105 can determine the longitudinal TTC. Assuming a constant longitudinal speed of vehicle 100 along the longitudinal axis of vehicle 100 and a constant speed of obstacle 200 along the longitudinal axis, the longitudinal TTC can be the time when the longitudinal distance between vehicle 100 and obstacle 200 reaches zero, e.g., as in the following expression:
[0044]
[0045] where TTC long is the longitudinal TTC, Dlong is the component of the vector between the vehicle 100 and the obstacle 200 along the longitudinal axis of the vehicle 100, and v T,long is the component of the speed of the obstacle 200 along the longitudinal axis of the vehicle 100.
[0046] The first candidate threat number can be a braking threat number. The braking threat number can represent the ability of the vehicle 100 to brake to a stop before intersecting with the obstacle 200. For the braking threat number, the kinematic quantity can be the deceleration of the vehicle 100, the first value of the kinematic quantity can be the deceleration such that the vehicle 100 does not intersect with the obstacle 200, and the second value can be the maximum deceleration of the vehicle 100. The braking threat number can be the ratio of the first value to the second value (where the upper limit is 1), for example, as in the following expression:
[0047]
[0048] where BTN is the braking threat number, decel need is the first value, and decel max is the second value. The second value (i.e., the maximum deceleration decel max ) can be a preset value as a physical property of the braking system 125. The computer 105 can determine the first value based on the predicted time and the speed of the vehicle 100, for example, as the quotient of the speed and the difference between the predicted time and the braking delay time, for example, as in the following expression:
[0049]
[0050] where t BD is the braking delay time. The braking delay time can be a preset value selected based on the typical time when the operator of the vehicle 100 starts braking.
[0051] The second candidate threat number can be an acceleration threat number. The acceleration threat number can represent the ability of the vehicle 100 to accelerate past the position that a moving obstacle 200 will occupy (e.g., accelerate past the predicted path of another vehicle before the other vehicle reaches the path of the vehicle 100) before the moving obstacle 200 occupies a certain position. For the acceleration threat number, the kinematic quantity can be the longitudinal acceleration of the vehicle 100, the first value of the kinematic quantity can be the longitudinal acceleration for crossing the path of the obstacle 200, and the second value can be the maximum longitudinal acceleration of the vehicle 100. The acceleration threat number can be the ratio of the first value to the second value. The first value (i.e., the acceleration required to cross the path of the obstacle 200) can be twice the forward distance for crossing the path divided by the square of the contact time, for example, as in the following expression for the acceleration threat number:
[0052]
[0053] where ATN is the acceleration threat number, Δd is the distance of the path for crossing the obstacle 200, and a max is the maximum acceleration of the vehicle 100. The distance Δd can be the sum of the distance to the far side of the path from the vehicle 100 to the obstacle 200 and the length of the vehicle 100, both along the longitudinal axis of the vehicle 100. The second value (i.e., the maximum acceleration a max ) can be a preset value as a physical property of the propulsion system 120.
[0054] The third candidate threat number can be the steering threat number. The steering threat number can represent the ability of the vehicle 100 to turn to avoid intersection with the obstacle 200. For the steering threat number, the kinematic quantity can be the lateral acceleration of the vehicle 100, the first value of the kinematic quantity can be the lateral acceleration for crossing the obstacle 200, and the second value of the kinematic quantity can be the maximum lateral acceleration of the vehicle 100. The steering threat number can be the ratio of the first value to the second value (with an upper limit of 1), for example, as in the following expression:
[0055]
[0056] where STN is the steering threat number, a lat,need is the first value, and a lat,max is the second value. The second value (i.e., the maximum lateral acceleration a lat,max ) can be a preset value as a physical property of the steering system 130. The first value (i.e., the lateral acceleration a lat,need ) required to cross the obstacle 200 can be twice the lateral distance for crossing the obstacle 200 divided by the square of the contact time, for example, as in the following expression:
[0057]
[0058] where Δd lat is the lateral distance for crossing the obstacle 200. Assuming a constant lateral acceleration, the lateral distance Δd lat can be the difference between the preset lateral margin for crossing the obstacle 200 and the predicted lateral offset between the vehicle 100 and the obstacle 200 when the vehicle 100 reaches the obstacle 200.
[0059] The computer 105 can be programmed to select the minimum of the candidate threat numbers of the obstacle 200 as the threat number of the obstacle 200. Each threat number can represent a different operation or manner for guiding the vehicle 100 away from the obstacle 200, so the minimum candidate threat number represents the overall ability to guide the vehicle 100 away from the obstacle 200. For the example candidate threat numbers above, the computer 105 can select the minimum value from the braking threat number, the acceleration threat number, and the steering threat number, as in the following expression:
[0060] TN i = min(BTN i , ATN i , STN i )
[0061] where the subscript i is the index of the obstacle 200, and TN is the threat number. The computer 105 can determine the candidate threat numbers and select the minimum as the threat number for each of the multiple obstacles 200 (i.e., for different values of i).
[0062] For another example of one type of threat number, the computer 105 can be programmed to execute a machine learning model that is trained to output a measure indicating the risk of an impact between the vehicle 100 and the obstacle 200. The machine learning model can take the vehicle kinematic state and the obstacle kinematic state as inputs. The machine learning model can output a probability value, which can be a scalar value between 0 and 1. Reinforcement learning can be used to train the machine learning model. The training data can be multiple scenarios, where each scenario includes the vehicle kinematic state and the obstacle kinematic state within a common timeline, paired with a flag indicating whether an impact occurs in the scenario. The training data can be generated by vehicle simulation, actual vehicle operation, or both. The vehicle in the scenario can be human-controlled, whether simulated or actual. Thus, the machine learning model can consider the ability of the vehicle 100 to perform operations for maneuvering the vehicle 100 away from the obstacle 200, as in the first type of threat number described above.
[0063] Reference Figure 3 , the computer 105 can be programmed to formulate a control barrier function h i for each obstacle 200 relative to the vehicle 100 based on the sensor data indicating the obstacle 200. i Each control barrier function h Hi can be the difference between the distance r Hi from the reference point 305 of the vehicle 100 to the corresponding obstacle 200 and the distance from the reference point along the direction θ Hifunction Γ H , which returns the distance from the reference point 305 of the vehicle 100 in the direction θ Hi to the virtual boundary 310. Each control barrier function h i can be a function of the vehicle kinematic state and the corresponding obstacle kinematic state. For example, the control barrier function h i can be represented by the following equation:
[0064] h i (r H , θ H , θ Hi , θ Ti , v H , v Ti ) = r Hi - Γ H (θ Hi )
[0065] The virtual boundary 310 can extend around the coverage area of the vehicle 100. For example, the virtual boundary 310 can follow the outer edge of the coverage area of the vehicle 100's body, or the virtual boundary 310 can be spaced from the coverage area of the vehicle 100 by a buffer distance outside the coverage area of the vehicle 100. The reference point 305 can be inside the coverage area of the vehicle 100 such that the direction from the reference point 305 to the obstacle 200 passes through the virtual boundary 310. The reference point 305 is fixed relative to the vehicle 100, which means the virtual boundary 310 is also fixed.
[0066] The control barrier function h i provides a computationally efficient way for the computer 105 to determine the control input, as described below. For example, the computer 105 can determine the constraints based on the control barrier function and use quadratic programming to solve the optimization problem subject to the constraints, as will be described in turn. Quadratic programming is an efficient technique for solving optimization problems, and the use of the control barrier function allows formulating the optimization problem in the way required by quadratic programming.
[0067] Determining the control input (as described below) can be subject to a first constraint based on the control barrier function h i . To explain the first constraint, first refer to the base constraint. The base constraint can be that the sum of the time derivative of the control barrier function h i and a function α(·) of the control barrier function h i exceeds a first value. The first value can be zero. For example, the base constraint can be represented by the following expression:
[0068]
[0069] The function α(·) can be locally Lipschitz continuous; that is, within the range of the function α(·) involved in the first constraint or the basic constraint, the absolute value of the slope between any two points is not greater than a predefined real number. In other words, the function α(·) is with respect to the control barrier function h i There is a maximum rate of change. The function α(·) can be a class-κ function, that is, strictly increasing and equal to zero when the independent variable is zero (i.e., α(0) = 0). The function α(·) can be selected to actuate the components of the vehicle 100 in a timely manner to prevent the vehicle 100 from contacting the obstacle 200. For example, the function α(h i ) can be the product of the parameter λ and the control barrier function h i , that is, α(h i ) = λh i . The parameter λ can be selected to control the sensitivity of the basic constraint. The equivalent form of the basic constraint for the i-th obstacle 200 is the following expression:
[0070] -L gh h i u ≤ L fh h i +α(h i )
[0071] where u is the control input, and L gh and L fh are the Lie derivatives of the components of h i , thus regarding h i as a standard control-affine system. Similar to the first expression of the basic constraint, this expression includes the sum of the change of the control barrier function with respect to time (L fh h i ) and the function of the control barrier function (α(h i )) exceeding a certain value (–L gh h i u).
[0072] The first constraint is an expression including the control barrier function and the threat number. Specifically, the first constraint is the basic constraint weighted by the threat number. For example, in the second expression of the basic constraint above, the sum of the change of the control barrier function with respect to time and the function of the control barrier function is weighted by the threat number, as in the following expression:
[0073] L gh h i u ≥ -TN i (L fh h i +α(h i ))
[0074] When the threat number is closer to zero, the first constraint is actually less restrictive, i.e., it is less likely to change the control input away from the nominal input, and when the threat number is closer to one, the first constraint is actually more restrictive, i.e., it is more likely to change the control input away from the nominal input.
[0075] It is determined that the control input (described below) can be subject to a second constraint. The second constraint can be that the control input is below a maximum value, e.g., as represented by the following equation:
[0076] |u| ≤ u max
[0077] where u is the control input and u max is the maximum value. The maximum value u can be selected based on the capabilities of the components of the vehicle 100 controlled by the input (e.g., the braking system 125 and / or the steering system 130). max .
[0078] The computer 105 is programmed to determine the control input u based on the first constraint (i.e., including the control barrier function h i and the expression of the threat number). For example, determining the control input u can include minimizing a function of the difference between the control input u and the nominal input u nom . For example, determining the control input u can include solving a quadratic program subject to the first constraint and the second constraint. A quadratic program means solving an optimization problem formulated as a quadratic function. For example, solving the quadratic program can include minimizing the square of the difference between the control input u subject to the above first constraint and the second constraint and the nominal input u nom , e.g., as represented by the following formula:
[0079]
[0080] where is the set of m-length real-valued vectors. For example, if the control input u includes the acceleration u a of the vehicle 100 and the steering angle u δ , then the length m of the vector of the control input u is 2.
[0081] In the case of multiple obstacles 200, for all or a subset of the obstacles 200, the computer 105 can be programmed to determine the control input u based on the first constraint. For example, if there are three obstacles 200, determining the control input u can include solving a quadratic program subject to three first constraints (one for each obstacle 200) and the second constraint as described above.
[0082] The computer 105 can be programmed to actuate components of the vehicle 100, such as the braking system 125 and / or the steering system 130, in accordance with a control input u. For example, the computer 105 can be programmed to actuate a component in accordance with the control input u in response to the computer 105 determining the control input u and otherwise in accordance with a nominal input u nom Actuate a component.
[0083] Figure 4 is a flowchart showing an example process 400 for controlling the vehicle 100. The memory of the computer 105 stores executable instructions for performing the steps of the process 400, and / or the programming can be implemented in a structure such as that mentioned above. As an overall overview of the process 400, the computer 105 receives data from the sensors 115, receives the nominal input u nom , determines the vehicle kinematic state, determines the obstacle kinematic state, determines the contact time of the obstacle 200, determines the threat number of the obstacle 200, formulates a first constraint and a second constraint, solves a quadratic program for the control input u subject to the constraints, and actuates components of the vehicle 100 in accordance with the control input u. The process 400 can continue as long as the vehicle 100 remains on; that is, the computer 105 repeats these steps while the vehicle 100 remains on.
[0084] The process 400 begins at block 405, where the computer 105 receives sensor data from the sensors 115 indicating the obstacle 200, as described above.
[0085] Next, at block 410, the computer 105 receives the nominal input u nom , as described above.
[0086] Next, at block 415, the computer 105 determines the vehicle kinematic state, as described above.
[0087] Next, at block 420, the computer 105 determines the obstacle kinematic state of the obstacle 200, as described above.
[0088] Next, at block 425, the computer 105 determines the predicted time to reach the respective obstacle 200, as described above.
[0089] Next, at block 430, the computer 105 determines the threat number of the respective obstacle 200, as described above.
[0090] Next, at block 435, for each obstacle 200, the computer 105 formulates a respective control barrier function h i , and determines a respective first constraint based on the respective control barrier function and the respective threat number, as described above.
[0091] Next, in block 440, computer 105 determines a control input u based on an expression that includes a control barrier function h i and a threat count, e.g., solving for an optimal control input u subject to a first constraint imposed by obstacle 200 and subject to a second constraint, as described above.
[0092] Next, in block 445, computer 105 actuates components of vehicle 100 according to the control input u, e.g., brake system 125 and / or steering system 130, as described above.
[0093] Next, in decision block 450, computer 105 determines whether vehicle 100 is still on. If so, process 400 returns to block 405 to continue receiving sensor data. If not, process 400 ends.
[0094] In general, the described computing systems and / or devices can employ any of a variety of computer operating systems, including but by no means limited to the following versions and / or varieties: Ford App; AppLink / Smart Device Link middleware; Microsoft Operating System; Microsoft Operating System; Unix operating system (e.g., the operating system released by Oracle Corporation of Redwood Shores, California); AIX UNIX operating system released by International Business Machines Corporation of Armonk, New York; Linux operating system; Mac OSX and iOS operating systems released by Apple Inc. of Cupertino, California; BlackBerry operating system released by BlackBerry Limited of Waterloo, Canada; and Android operating system developed by Google Inc. and the Open Handset Alliance; or the CAR Infotainment Platform provided by QNX Software Systems. Examples of computing devices include but are not limited to in-vehicle computers, computer workstations, servers, desktops, notebooks, laptop computers, or handheld computers, or some other computing system and / or device.
[0095] Computing devices generally include computer-executable instructions, where the instructions can be executed by one or more computing devices such as those listed above. The computer-executable instructions can be compiled or interpreted from computer programs created using a variety of programming languages and / or technologies, which alone or in combination include but are not limited to Java TM, C, C++, Matlab, Simulink, Stateflow, Visual Basic, Java Script, Python, Perl, HTML, etc. Some of these applications can be compiled and executed on virtual machines such as Java Virtual Machine, Dalvik Virtual Machine, etc. Generally, a processor (e.g., a microprocessor) receives instructions from, for example, 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 can be stored and transmitted using a variety of computer-readable media. Files in a computing device are typically a collection of data stored on a computer-readable medium such as a storage medium, random access memory, etc.
[0096] A computer-readable medium (also referred to as a processor-readable medium) includes any non-transitory (e.g., tangible) medium that participates in providing data (e.g., instructions) that can be read by a computer (e.g., by a processor of a computer). Such media can take many forms, including but not limited to non-volatile media and volatile media. Instructions can be transmitted via one or more transmission media, which include optical fibers, wires, wireless communication, including internal components that make up a system bus coupled to a processor of a computer. Common forms of computer-readable media include, for example, RAM, PROM, EPROM, FLASH-EEPROM, any other memory chip or cartridge, or any other medium from which a computer can read.
[0097] The databases, data repositories, or other data stores described herein can include various mechanisms for storing, accessing / retrieving, and retrieving various data, including hierarchical databases, sets of files in a file system, application databases in a dedicated format, relational database management systems (RDBMS), non-relational databases (NoSQL), graph databases (GDB), etc. Each such data store is typically included within a computing device that employs a computer operating system such as one of those mentioned above, and is accessed via a network in any one or more of a variety of ways. A file system can be accessed from a computer operating system and can include files stored in various formats. In addition to languages for creating, storing, editing, and executing stored programs such as the PL / SQL language mentioned above, an RDBMS typically also employs the Structured Query Language (SQL).
[0098] In some examples, system components may be implemented as computer-readable instructions (e.g., software) on one or more computing devices (e.g., servers, personal computers, etc.) and stored on a computer-readable medium associated therewith (e.g., disks, memories, etc.). A computer program product may include such instructions stored on a computer-readable medium for performing the functions described herein.
[0099] In the drawings, the same reference numerals indicate the same elements. Additionally, some or all of these elements may be changed. With respect to the media, processes, systems, methods, heuristics, etc. described herein, it should be understood that although the steps of such processes etc. have been described as occurring in a certain ordered sequence, such processes may be practiced by performing the steps in a different sequence than that described herein. It should also be understood that certain steps may be performed simultaneously, other steps may be added, or certain steps described herein may be omitted. The operations, systems, and methods described herein should always be implemented and / or performed in accordance with the applicable owner / user manuals and / or safety guidelines.
[0100] The present disclosure has been described in an illustrative manner, and it should be understood that the terms used are of a descriptive nature and not restrictive. The use of "responsive to", "after determining...", etc. indicates a causal relationship and not just a temporal relationship. The adjectives "first", "second", and "third" are used throughout this document as identifiers and are not intended to indicate importance, order, or quantity. Given the above teachings, many modifications and variations of the present disclosure are possible, and the present disclosure may be practiced in other ways than specifically described.
[0101] According to the present invention, there is provided a computer having a processor and a memory, the memory storing instructions executable by the processor to: determine a threat number based on sensor data indicating an obstacle, the threat number representing the risk of an impact between the vehicle and the obstacle; formulate a control barrier function based on the sensor data indicating the obstacle; determine a control input based on an expression including the control barrier function and the threat number; and actuate a component of the vehicle according to the control input.
[0102] According to one embodiment, the instructions further include instructions for: determining the threat number based on a comparison of a first value of a kinematic quantity with a second value of the kinematic quantity, the first value being the value of the kinematic quantity for performing an operation to maneuver the vehicle away from the obstacle, and the second value of the kinematic quantity being the vehicle's ability to perform the operation.
[0103] According to one embodiment, the instructions further include instructions for performing the following operations: determining a predicted time for the vehicle to reach the obstacle, and determining the first value of the kinematic quantity based on the predicted time.
[0104] According to one embodiment, the instructions further include instructions for performing the following operations: determining a plurality of candidate threat numbers, and selecting the minimum of the candidate threat numbers as the threat number.
[0105] According to one embodiment, the operation includes at least one of braking or steering.
[0106] According to one embodiment, it is determined that the control input is subject to a constraint based on the control barrier function.
[0107] According to one embodiment, the constraint is weighted by the threat number.
[0108] According to one embodiment, the constraint includes that the sum of the change of the control barrier function with respect to time and the function of the control barrier function exceeds a certain value.
[0109] According to one embodiment, the sum is weighted by the threat number.
[0110] According to one embodiment, the control barrier function is the difference between the distance from a reference point to the obstacle and the distance from the reference point along the direction from the reference point to the obstacle to a point on the virtual boundary.
[0111] According to one embodiment, the reference point is inside the coverage area of the vehicle.
[0112] According to one embodiment, the reference point is fixed relative to the vehicle.
[0113] According to one embodiment, the component of the vehicle includes at least one of a braking system or a steering system.
[0114] According to one embodiment, determining the control input is based on a function that minimizes the difference between the control input and a nominal input.
[0115] According to one embodiment, the nominal input is the current value of the input.
[0116] According to one embodiment, the instructions further include instructions for performing the following operations: receiving the nominal input from an algorithm for at least partial autonomous operation of the vehicle.
[0117] According to the present invention, a method includes: determining a threat number based on sensor data indicating an obstacle, the threat number representing a risk of an impact between the vehicle and the obstacle; formulating a control barrier function based on the sensor data indicating the obstacle and based on the threat number; determining a control input based on the control barrier function; and actuating a component of the vehicle according to the control input.
[0118] In one aspect of the present invention, determining the control input is subject to a constraint based on the control barrier function, and the constraint is weighted by the threat number.
[0119] In one aspect of the present invention, the control barrier function is a difference between a distance from a reference point to the obstacle and a distance from the reference point along a direction from the reference point to the obstacle to a point on a virtual boundary.
[0120] In one aspect of the present invention, the component of the vehicle includes at least one of a braking system or a steering system.
Claims
1. A method, comprising: Determining a threat number based on sensor data indicating an obstacle, the threat number representing the risk of an impact between the vehicle and the obstacle; Formulating a control barrier function based on sensor data indicating the obstacle; Determining a control input based on an expression including the control barrier function and the threat number; And Actuating a component of the vehicle according to the control input.
2. The method according to claim 1, further comprising: Determining the threat number based on a comparison between a first value of a kinematic quantity and a second value of the kinematic quantity, the first value being the value of the kinematic quantity for performing an operation for maneuvering the vehicle away from the obstacle, and the second value of the kinematic quantity being the ability of the vehicle to perform the operation.
3. The method according to claim 2, further comprising: Determining a predicted time for the vehicle to reach the obstacle, and determining the first value of the kinematic quantity based on the predicted time.
4. The method according to claim 2, further comprising: Determining a plurality of candidate threat numbers, and selecting the smallest of the candidate threat numbers as the threat number.
5. The method according to claim 2, wherein the operation includes at least one of braking or steering.
6. The method according to claim 1, wherein determining the control input is subject to a constraint based on the control barrier function.
7. The method according to claim 6, wherein the constraint is weighted by the threat number.
8. The method according to claim 6, wherein the constraint includes that the sum of the change of the control barrier function with respect to time and the function of the control barrier function exceeds a certain value.
9. The method according to claim 8, wherein the sum is weighted by the threat number.
10. The method according to claim 1, wherein the control barrier function is the difference between the distance from a reference point to the obstacle and the distance from the reference point along the direction from the reference point to the obstacle to a point on a virtual boundary.
11. The method according to claim 1, wherein the component of the vehicle includes at least one of a braking system or a steering system.
12. The method according to claim 1, wherein determining the control input is based on a function that minimizes the difference between the control input and a nominal input.
13. The method according to claim 12, wherein the nominal input is the current value of the input.
14. The method according to claim 12, further comprising: Receiving the nominal input from an algorithm for at least partial autonomous operation of the vehicle.
15. A computer, comprising a processor and a memory, the memory storing instructions that can be executed by the processor to perform the method according to any one of claims 1 to 14.