VEHICLE OPERATION AROUND OBSTACLES
Patent Information
- Application Number
- DE102025101536
- Authority / Receiving Office
- DE · DE
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2024-01-19
- Filing Date
- 2025-01-16
- Publication Date
- 2025-07-24
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
FIELD OF TECHNOLOGY
[0001] This disclosure relates to driver assistance systems in vehicles. GENERAL STATE OF THE ART
[0002] Advanced driver assistance systems (ADAS) are electronic technologies that assist drivers with driving and parking functions. Examples of ADAS include systems for forward approach detection, lane departure detection, blind spot detection, brake application, adaptive cruise control, and lane keeping assistance. SUMMARY
[0003] The techniques described in this document can reduce the likelihood of contact between an obstacle and a vehicle by actuating a component of the vehicle, e.g., with autonomous operation or ADAS functions, while reducing activations in situations where contact would not occur. For example, the system can actuate the vehicle, e.g., a braking system or steering system, based on a threat score for the obstacle and the proximity of the obstacle to a buffer zone surrounding the vehicle. The threat score reflects a risk of a collision between the vehicle and the obstacle, e.g., an effort required to steer the vehicle away from the obstacle relative to the effort the vehicle is capable of. The buffer zone can be represented by a control barrier function.A vehicle's computer is programmed to determine the threat number, formulate the control barrier function based on sensor data indicating the obstacle, determine a control input based on an expression including the control barrier function and the threat number, and actuate the vehicle's component according to the control input. Using the threat number can reduce actuations of the component in situations where the obstacle is approaching the vehicle, but the vehicle can still comfortably avoid the obstacle.
[0004] A computer includes a processor and a memory, and the memory has stored therein instructions executable by the processor to determine a threat number based on sensor data indicative of an obstacle, the threat number representing a risk of collision between a 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 a component of the vehicle in accordance with the control input.
[0005] In one example, the instructions may further include instructions to determine the threat number based on a comparison of a first value of a kinematic quantity and a second value of the kinematic quantity, wherein the first value is a value of the kinematic quantity to perform an operation to maneuver a vehicle away from an obstacle, wherein the second value of the kinematic quantity is a capability of the vehicle to perform the operation. In another example, the instructions may further include instructions to determine a predicted time required for the vehicle to reach the obstacle and determine the first value of the kinematic quantity based on the predicted time.
[0006] In another further example, the instructions may further include instructions to determine a plurality of candidate threat numbers and to select a smallest of the candidate threat numbers as the threat number.
[0007] In another further 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 another further example, the constraint may include a sum of a change with respect to time in the control barrier function and a function of the control barrier function exceeding a value. In yet another example, the sum may be weighted by the threat number.
[0010] In one example, the control barrier function may be a difference between a distance from a reference point to the obstacle and a distance from the reference point to a point on a virtual boundary in a direction from the reference point to the obstacle. In another example, the reference point may be located inside a footprint of the vehicle.
[0011] In another further example, the reference point may be fixed relative to the vehicle.
[0012] In one example, the component 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 based on minimizing a function of a difference between the control input and a nominal input. In another example, the nominal input may be an actual input value.
[0014] In another further example, the instructions may further include instructions to receive the nominal input from an algorithm for at least partially autonomous operation of the vehicle.
[0015] A method includes determining a threat number based on sensor data indicative of an obstacle, the threat number representing a risk of collision between a vehicle and the obstacle; formulating a control barrier function based on sensor data indicative of 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 may be a difference between a distance from a reference point to the obstacle and a distance from the reference point to a point on a virtual boundary in a direction from the reference point to the obstacle.
[0018] In one example, the component of the vehicle may include at least one of a braking system or a steering system. BRIEF DESCRIPTION OF THE DRAWINGS Fig. 1 is a block diagram of an example vehicle. Fig. 2 is a schematic top view of an example scenario of the vehicle interacting with another vehicle. Fig. Figure 3 is a schematic plan view of the vehicle with exemplary obstacles. Fig. 4 is a flowchart of an exemplary process for controlling the vehicle. DETAILED DESCRIPTION
[0019] Referring to the figures, wherein like reference numerals indicate like parts throughout the several views, a computer 105 includes a processor and memory, and stored on the memory are instructions executable by the processor to determine a threat number based on sensor data indicative of an obstacle 200, the threat number representative of a risk of collision between a vehicle 100 and the obstacle 200; formulate a control barrier function based on sensor data indicative of the obstacle 200; determine a control input based on an expression including the control barrier function and the threat number; and actuate a component of the vehicle 100 in accordance with the control input.
[0020] With reference to Fig. 1, the vehicle 100 may be any passenger vehicle or any commercial vehicle, such as a car, a truck, an SUV, a crossover, a van, a minivan, a taxi, a bus, etc. The vehicle 100 may include the computer 105, a communications network 110, sensors 115, a drive system 120, a braking system 125, and a steering system 130.
[0021] The computer 105 is a microprocessor-based computing device, e.g., a generic computing device including: a processor and memory, an electronic controller or the like, a field-programmable gate array (FPGA), an application-specific integrated circuit (ASIC), a combination of the above, etc. Typically, a hardware description language such as VHDL (VHSIC (very high speed integrated circuit) hardware description language) is used in electronic design automation to describe digital and mixed-signal systems such as FPGAs and ASICs.For example, an ASIC is manufactured based on VHDL programming provided prior to manufacturing, whereas logical components inside an FPGA may be configured based on VHDL programming, e.g., stored on memory electrically connected to the FPGA circuitry. Computer 105 may thus include a processor, memory, etc. The memory of computer 105 may include media for storing instructions executable by the processor, as well as for electronically storing data and / or databases, and / or computer 105 may include structures such as those above through which programming is provided. Computer 105 may consist of multiple computers coupled together.
[0022] Computer 105 can transmit and receive data via communication network 110. Communication network 110 can be, for example, a controller area network (CAN) bus, Ethernet, Wi-Fi, a local interconnect network (LIN), an on-board diagnostics port (OBD-II), and / or any other wired or wireless communication network. Computer 105 can be communicatively coupled to sensors 115, drive system 120, braking system 125, steering system 130, and other components via communication network 110.
[0023] Sensors 115 may provide data about the operation of vehicle 100, such as wheel speed, wheel alignment, and engine and transmission data (e.g., temperature, fuel consumption, etc.). Sensors 115 may detect the location and / or orientation of vehicle 100. For example, sensors 115 may include: global positioning system (GPS) sensors; accelerometers, such as piezoelectric or microelectromechanical systems (MEMS); gyroscopes, such as rate-of-turn, ring laser, or fiber optic gyroscopes; inertial measurement units (IMUs); and magnetometers. Sensors 115 may detect the outside world, such as obstacles 200 and / or characteristics of an environment surrounding vehicle 100, such as other vehicles, lane markings, traffic lights and / or signs, road users, etc.For example, the sensors 115 may include radar sensors, ultrasonic sensors, laser scanner rangefinders, light detection and ranging (lidar) devices, and image processing sensors such as cameras.
[0024] The propulsion system 120 of the vehicle 100 generates energy and converts the energy into motion of the vehicle 100. The propulsion system 120 may be any of the following: a conventional vehicle propulsion subsystem, for example, a conventional powertrain including an internal combustion engine coupled to a transmission that transmits rotational motion to wheels; an electric powertrain including batteries, an electric motor, and a transmission that transmits rotational motion to the wheels; a hybrid powertrain including elements of the conventional powertrain and the electric powertrain; or any other type of propulsion. The propulsion system 120 may include an electronic control unit (ECU) or the like that communicates with and receives inputs from the computer 105 and / or a human operator.The human vehicle operator can control the drive system 120, for example, via an accelerator pedal and / or a gearshift lever.
[0025] The braking system 125 is typically a conventional vehicle braking subsystem that counteracts the motion of the vehicle 100 to thereby slow or stop the vehicle 100. The braking system 125 may include friction brakes, such as disc brakes, drum brakes, band brakes, etc.; regenerative brakes; any other suitable type of brake; or a combination. The braking system 125 may include an electronic control unit (ECU) or the like that communicates with and receives inputs from the computer 105 and / or a human vehicle operator. The human operator may control the braking system 125, for example, via a brake pedal.
[0026] The steering system 130 is typically a conventional subsystem for steering a vehicle and controls the turning of the wheels. The steering system 130 may 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 may include an electronic control unit (ECU) or the like that communicates with and receives inputs from the computer 105 and / or a human vehicle operator. The human operator may control the steering system 130, for example, via a steering wheel.
[0027] With reference to Fig. 2, the computer 105 is programmed to determine a kinematic state of the vehicle 100. For the purposes of this disclosure, a "kinematic state" is defined as a mathematical description of the position and / or motion of an entity. For example, the kinematic state of the vehicle may include a position, a heading, a velocity vector, and a yaw rate. The position of the vehicle 100 may be the position of a reference point 305 of the vehicle 100 (in Fig. 3), e.g., the center of gravity or the center of a rear axle. The components of the velocity vector of the vehicle 100 may be given by the following equations: x˙H=vHcosθH y˙H=vHsinθH where (x H , y H ) is the position of the vehicle 100, the point above a variable indicates a time derivative, v H the longitudinal speed, ie the speed, of the vehicle is 100 and θ His the heading of the vehicle 100. The yaw rate of the vehicle 100 can be given by the following equation: θ˙H=ωH=vHtanδW where δ is the steering angle of the vehicle 100 and W is the wheelbase of the vehicle 100, ie the longitudinal distance between a front axle and the rear axle.
[0028] The computer 105 may be programmed to determine the kinematic state of the vehicle based on sensor data from the sensors 115. For example, the sensors 115 may determine the position from a GPS sensor, the speed v H of the vehicle 100 from wheel speed sensors, the course θ H of the vehicle 100 from an IMU and the steering angle δ from the steering system 130.
[0029] The computer 105 may be programmed to actuate a component of the vehicle 100 according to an input. For the purposes of this disclosure, an "input" is one or more values that control the operation of a component of the vehicle 100. For example, the component may be the braking system 125, and the input may be a desired speed. v or target acceleration u a of the vehicle 100. The actuation of the braking system 125 according to the target speed u v of the vehicle 100 can activate the braking system 125 until the speed v H to the target speed u v The actuation of the braking system 125 according to the target acceleration u α of the vehicle 100 can activate the braking system 125 so that the acceleration a H of the vehicle 100 with the target acceleration u aAs another example, the component may be the steering system 130 and the input may include the target steering angle u δ Actuating the steering system 130 according to the target steering angle u δ can turn the wheels until the target steering angle δ of the wheels is in the target steering angle u δ is aimed at.
[0030] The computer 105 may be programmed to receive a nominal input. The nominal input may be an actual value of the input. The nominal input may include one or more values entered by an operator. For example, if an operator is manually operating the vehicle 100, the nominal input may be the actual values of the values that make up the input, e.g., actual values of the desired acceleration and a received from the brake pedal or accelerator pedal and / or the target steering angle u δfrom the steering wheel. As another example, if the computer 105 operates the vehicle 100 at least partially autonomously, the nominal input may include one or more values output by an algorithm for at least partially autonomous operation of the vehicle 100. The algorithm may, for example, be for fully autonomous operation or for an ADAS feature. The computer 105 may receive the nominal input from the algorithm. The computer 105 may receive the nominal input from both the operator and the algorithm, e.g., the desired steering angle u δ by the operator and the target acceleration u a from an ADAS feature, such as adaptive cruise control, or vice versa. In the absence of a control input (determined as described below), computer 105 may be programmed to actuate the components of vehicle 100 according to the nominal input.
[0031] The computer 105 may be programmed to receive sensor data from the sensors 115 indicative of one or more obstacles 200, e.g., range data from a radar, lidar, and / or ultrasonic sensor of the sensors 115. Fig. 2 represents, for example, another vehicle as an obstacle 200 and Fig. 3 depicts two obstacles 200. The sensor data may include positions, courses, velocity vectors, and / or contours of the obstacles 200. The sensor data may thereby define a kinematic state of the obstacle. For example, the position of the obstacle 200 may be defined as a distance r Hi relative to the vehicle 100, e.g. from the reference point 305 of the vehicle 100 to the obstacle 200, and a direction θ Hirelative to the vehicle 100, e.g., from the reference point 305 of the vehicle 100 to the obstacle 200, measured relative to a longitudinal axis of the vehicle 100, where the subscript i is an index of the obstacles 200. The velocity vector can be represented by a velocity v Ti of the obstacle 200 and a course θ Ti of the obstacle 200.
[0032] The computer 105 is programmed to determine at least one threat number for each of a plurality of obstacles 200. A threat number represents the risk of a collision between the vehicle 100 and one of the obstacles 200. The computer 105 may determine the threat number based on the kinematic states of the vehicle 100 and the obstacle 200. For example, the threat number may indicate a probability that a collision will occur if the vehicle 100 and the obstacle 200 remain on their current trajectories (one of which may be stationary).
[0033] As an example of a type of threat number, the threat number may reflect the ability of the vehicle 100 to perform an operation to maneuver the vehicle 100 away from the respective obstacle 200. Each threat number may apply to a specific operation, e.g., braking and / or steering, and to a specific obstacle 200. The computer 105 determines each threat number based on a comparison of a first value and a second value of a kinematic quantity. The kinematic quantity is a numerical description of the position and / or movement of one or more entities. The kinematic quantity may relate to the operation of the vehicle 100, e.g., a longitudinal acceleration for braking or a lateral acceleration for steering. The first value is a value of the kinematic quantity to perform an operation to maneuver the vehicle 100 away from the obstacle 200, i.e.,the value of the kinematic quantity available to the vehicle 100 to perform the operation of maneuvering the vehicle 100 away from the obstacle 200, i.e., how much of the kinematic quantity the situation provides for use by the vehicle 100 in order not to cross the obstacle 200. The second value is a capability of the vehicle 100 to perform the operation, i.e., a value of the kinematic quantity that the vehicle 100 would use to perform the operation, i.e., a value of the kinematic quantity that the vehicle 100 is capable of producing. The second value can be measured in the same units as the first value for the respective operation, thereby facilitating a comparison between the second value and the first value.
[0034] As a general overview, the computer 105 may be programmed to determine a plurality of candidate threat numbers for an obstacle 200, where each candidate threat number represents a different action or manner to steer the vehicle 100 away from the obstacle 200. For each candidate threat number, the computer 105 may determine a predicted time required for the vehicle 100 to reach the obstacle 200, e.g., a longitudinal time to contact (TTC), determine the first value of the kinematic quantity based on the predicted time, determine the second value, and determine the candidate threat number based on the first value and the second value, as described below for specific examples of candidate threat numbers.The calculations for the candidate threat numbers can be selected such that the resulting values lie between 0 and 1, where 0 represents a negligible contact risk and 1 represents a high contact risk, thereby making the candidate threat numbers comparable. Computer 105 can then select a smallest of the candidate threat numbers as the threat number for obstacle 200.
[0035] The computer 105 may be programmed to determine the predicted time required for the vehicle 100 to reach the obstacle 200. For example, the computer 105 may determine a longitudinal TTC. The longitudinal TTC may be a time at which a longitudinal distance between the vehicle 100 and the obstacle 200 reaches zero, assuming a constant longitudinal speed through the vehicle 100 and a constant speed through the obstacle 200 along a longitudinal axis of the vehicle 100, e.g., as in the following expression: TTClong=DlongvH−vT,long where TTC long the longitudinal TTC is D long is the component of a 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.
[0036] A first candidate threat number may be a braking threat number. The braking threat number may reflect the ability of the vehicle 100 to brake to a stop before crossing the obstacle 200. For the braking threat number, the kinematic quantity may be the deceleration of the vehicle 100, the first value of the kinematic quantity may be the deceleration at which the vehicle 100 does not cross the obstacle 200, and the second value may be the maximum deceleration of the vehicle 100. The braking threat number may be a ratio of the first value and the second value (with an upper limit of 1), e.g., as in the following expression: BTN=min(decelneeddecelmax,1) where BTN is the braking threat number, decel need the first value is and decel max The second value is the maximum deceleration decel max, may be a preset value that is a physical property of the braking system 125. The computer 105 may determine the first value based on the predicted time and the speed of the vehicle 100, e.g., as the quotient of the speed and a difference between the predicted time and a braking deceleration time, e.g., as in the following expression: decelneed=vHTTClong−tBD where t BD is the braking deceleration time. The braking deceleration time may be a preset value selected based on a typical time required for an operator of a vehicle 100 to begin braking.
[0037] A second candidate threat number may be an acceleration threat number. The acceleration threat number may reflect a capability of the vehicle 100 to accelerate beyond a location that a moving obstacle 200 will occupy before the moving obstacle 200 occupies that location, e.g., to accelerate beyond a projected path of another vehicle before the other vehicle reaches the path of the vehicle 100. In the acceleration threat number, the kinematic quantity may be the longitudinal acceleration of the vehicle 100, the first value of the kinematic quantity may be a longitudinal acceleration at which a path of the obstacle 200 is cleared, and the second value of the kinematic quantity may be a maximum longitudinal acceleration of the vehicle 100. The acceleration threat number may be a ratio of the first value and the second value. The first value, i.e.The acceleration required to clear the path of the obstacle 200 may be twice the forward distance to clear the path divided by the square of the time to contact, e.g., as in the following expression for the acceleration threat number:. ATN=2∗max(0,Δd)TTClong2amax where ATN is the acceleration threat number, Δd is the distance to clear the path of the obstacle 200, and a max the maximum acceleration of the vehicle is 100.
[0038] The distance Δd may be a sum of a distance from the vehicle 100 to a remote side of the path of the obstacle 200 and the length of the vehicle 100, each along the longitudinal axis of the vehicle 100. The second value, ie, the maximum acceleration a max , may be a preset value that is a physical property of the drive system 120.
[0039] A third possible threat number may be a steering threat number. The steering threat number may reflect the ability of the vehicle 100 to steer away before crossing the obstacle 200. For the steering threat number, the kinematic quantity may be the lateral acceleration of the vehicle 100, the first value of the kinematic quantity may be a lateral acceleration at which the obstacle 200 is avoided, and the second value of the kinematic quantity may be a maximum lateral acceleration of the vehicle 100. The steering threat number may be a ratio of the first value and the second value (with an upper limit of 1), e.g., as in the following expression: STN=min(alat,needalat,max,1) where STN is the steering threat number, a lat,need is the first value and a lat,max The second value, ie the maximum lateral acceleration a lat,max, may be a preset value that is a physical property of the steering system 130. The first value, ie the lateral acceleration a lat,need , which is required to avoid the obstacle 200, can be twice the lateral distance to avoid the obstacle 200, divided by the square of the time until contact, e.g. as in the following expression: alat,need=2∗max(Δdlat,0)TTClong2 where Δd lat is the lateral distance to avoid the obstacle 200. The lateral distance Δd lat may be a difference between a preset lateral distance to avoid the obstacle 200 and a predicted lateral offset between the vehicle 100 and the obstacle 200 when the vehicle 100 reaches the obstacle 200, assuming constant lateral acceleration.
[0040] The computer 105 may be programmed to select a smallest of the candidate threat numbers for an obstacle 200 as the threat number for the obstacle 200. Each threat number may represent a different action or manner of steering the vehicle 100 away from the obstacle 200, such that the smallest candidate threat number reflects the overall ability to steer the vehicle 100 away from the obstacle 200. For the above example candidate threat numbers, the computer 105 may select a smallest value from the braking threat number, the acceleration threat number, and the steering threat number, as in the following expression: TNi=min(BTNi,ATNi,STNi) where the subscript i is an index for the obstacles 200 and TN is the threat number. The computer 105 can determine the candidate threat numbers and select the smallest as the threat number for each of the plurality of obstacles 200, ie, for different values of i.
[0041] As another example of a type of threat number, computer 105 may be programmed to execute a machine learning model trained to output a metric indicative of a risk of a collision between vehicle 100 and obstacle 200. The machine learning model may take the kinematic state of the vehicle and the kinematic state of the obstacle as inputs. The machine learning model may output a probability value, which may be a scalar value between 0 and 1. The machine learning model may be trained using reinforcement learning. The training data may be a plurality of scenarios, each scenario including kinematic states of the vehicle and kinematic states of obstacles over a common time axis, paired with a flag indicating whether or not a collision occurs in the scenario.The training data can be generated through vehicle simulations, actual vehicle operation, or both. The vehicles in the scenarios can be driven by humans, whether simulated or actual. The machine learning model can thus consider the ability of the vehicle 100 to perform an operation to maneuver the vehicle 100 away from the obstacle 200, as well as the first type of threat number described above.
[0042] With reference to Fig. 3, the computer 105 may be programmed to provide a control barrier function h i for each obstacle 200 with respect to the vehicle 100 based on the sensor data containing the obstacle 200. Each control barrier function h i can be a difference between the distance r Hi from the reference point 305 of the vehicle 100 to the respective obstacle 200 and a point on a virtual boundary 310 in the direction θHi from the reference point 305 of the vehicle 100 to the obstacle 200. The virtual boundary 310 can be defined as a function Γ H the direction θ Hi which represents a 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 kinematic state of the vehicle and the kinematic state of the respective obstacle. For example, the control barrier function h i can be represented by the following equation: hi(rH,θH,θHi,θTi,vH,vTi)=rHi−ΓH(θHi)
[0043] The virtual boundary 310 may extend around a footprint of the vehicle 100. For example, the virtual boundary 310 may follow an outer edge of the footprint of a body of the vehicle 100, or the virtual boundary 310 may be spaced outside the footprint of the vehicle 100 by a buffer distance. The reference point 305 may be located inside the footprint of the vehicle 100, such that a direction from the reference point 305 to an obstacle 200 passes through the virtual boundary 310. The reference point 305 is fixed relative to the vehicle 100, meaning that the virtual boundary 310 is also fixed.
[0044] The tax barrier functions h iprovide a computationally efficient manner for computer 105 to determine the control input, which is described below. For example, computer 105 can determine constraints based on the control barrier function and solve an optimization problem subject to the constraints using a quadratic program, as will be described. Quadratic programming is an efficient technique for solving the optimization problem, and the use of the control barrier function allows the optimization problem to be formulated in the manner required for quadratic programming.
[0045] Determining the control input (described below) may be subject to a first constraint based on the control barrier function h iTo explain the first constraint, reference is first made to an underlying constraint. The underlying constraint may be that a sum of a time derivative of the tax barrier function h i and a function α(·) of the tax barrier function h i exceeds a first value. The first value can be zero. For example, the underlying constraint can be represented by the following expression: h˙H+α(hH)≥0
[0046] The function a(·) can be locally Lipschitz continuous; that is, within a region of the function α(·) implied by the first constraint or the underlying constraint, the absolute value of the slope between any two points is not larger than a predefined real number. In other words, a maximum rate of change of the function a(·) with respect to the control barrier function h iThe function a(·) may be a function of class κ, i.e., it is strictly increasing and equal to zero if the argument is zero, i.e., a(0) = 0. The function a(·) may be chosen to cause the component of the vehicle 100 to be actuated in time to prevent the vehicle 100 from coming into contact with the obstacle 200. For example, the function a(hi) may be a product of a parameter λ and the control barrier function h H be, ie a(h i ) = λh i The parameter λ can be chosen to control the sensitivity of the underlying constraint. An equivalent form for the underlying constraint for the i-th obstacle 200 is the following expression: −Lghhiu≤Lfhhi+α(hi) where u is the control input and L gh and L fh the Lie derivatives of the components of h i are, where h iis treated as an affine standard tax system. Like the first expression for the underlying constraint, this expression implies that a sum of a change with respect to time in the tax barrier function (L fh hi) and a function of the control barrier function (a(h i )) a value (-L gh h i u).
[0047] The first constraint is an expression that includes the control barrier function and the threat number. Specifically, the first constraint is the underlying constraint weighted by the threat number, e.g., the second expression for the above underlying constraint is the sum of the change with respect to time of the control barrier function and the function of the control barrier function weighted by the threat number, as in the following expression: Lghhiu≥−TNi(Lfhhi+α(hi))
[0048] When the threat number is closer to zero, the first constraint is less constraining in effect, that is, the control input is less likely to change away from the nominal input, and when the threat number is closer to one, the first constraint is actually more constraining, that is, the control input is more likely to change away from the nominal input.
[0049] Determining the control input (described below) may be subject to a second constraint. The second constraint may be that the control input is below a maximum value, such as represented by the following equation: |u|≤umax where u is the control input and u max is the maximum value. The maximum value u maxmay be selected based on the capabilities of the component of the vehicle 100 controlled by the input, e.g., the braking system 125 and / or the steering system 130.
[0050] The computer 105 is programmed to determine the control input u based on the first constraint, ie the expression that defines the control barrier function h i and the threat number. For example, determining the control input u can be a function of minimizing a difference between the control input u and the nominal input u nomFor example, determining the control input u may involve solving a quadratic program subject to the first and second constraints. Quadratic programming means solving optimization problems formulated as quadratic functions. For example, solving the quadratic program may involve minimizing a square of the difference between the control input u and the nominal input u Nenn which is subject to the above first and second constraints, as represented, for example, by the following formula: minu∈ℝ‖u−unom‖22 where ℝ m is the set of vectors of length m of real numbers. For example, if the control input u determines the acceleration u a of the vehicle 100 and the steering angle u δ contains, the length m of the vector of control input u is 2.
[0051] In the case of multiple obstacles 200, the computer 105 may be programmed to determine the control input u based on the first constraint for all or a subset of the obstacles 200. For example, if there are three obstacles 200, determining the control input u may involve solving a quadratic program, as described above, subject to three first constraints (one for each obstacle 200) and the second constraint.
[0052] The computer 105 may be programmed to actuate the component of the vehicle 100, e.g., the braking system 125 and / or the steering system 130, according to the control input u. For example, the computer 105 may be programmed to actuate the component according to the control input u in response to the computer 105 determining the control input u, and otherwise actuate the component according to the nominal input u. nom to operate.
[0053] Fig.4 is a flowchart illustrating an exemplary 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 programming may be implemented in structures such as those mentioned above. As a general overview of the process 400, the computer 105 receives data from the sensors 115, receives the nominal input, and nom, determines the kinematic state of the vehicle, determines the kinematic states of obstacles, determines the times to contact for the obstacles 200, determines the threat numbers for the obstacles 200, formulates the first and second constraints, solves the quadratic program for the control input u according to the constraints, and actuates the component of the vehicle 100 according to the control input u. The process 400 may continue as long as the vehicle 100 remains powered on; that is, the computer 105 repeatedly performs these steps while the vehicle 100 remains powered on.
[0054] The process 400 begins at a block 405 where the computer 105 receives the sensor data from the sensors 115 indicative of the obstacles 200, as described above.
[0055] Next, at a block 410, the computer 105 receives the nominal input u nom , as described above.
[0056] Next, at a block 415, the computer 105 determines the kinematic state of the vehicle, as described above.
[0057] Next, at a block 420, the computer 105 determines the kinematic states of obstacles for the obstacles 200, as described above.
[0058] Next, at a block 425, the computer 105 determines the predicted characters until reaching the respective obstacles 200, as described above.
[0059] Next, at a block 430, the computer 105 determines the threat numbers for the respective obstacles 200, as described above.
[0060] Next, at a block 435, the computer 105 formulates for each obstacle 200 the respective control barrier function h iand determines the respective first constraint based on the respective control barrier function and the respective threat number, as described above.
[0061] Next, at a block 440, the computer 105 determines the control input u based on the expression that defines the control barrier function h i and the threat number includes, e.g., solving for the optimal control input u according to the first constraints on the obstacles 200 and according to the second constraint, as described above.
[0062] Next, at a block 445, the computer 105 actuates the component of the vehicle 100, e.g., the braking system 125 and the steering system 130, according to the control input u, as described above.
[0063] Next, at decision block 450, computer 105 determines whether vehicle 100 is still powered on. If so, process 400 returns to block 405 to continue receiving sensor data. If not, process 400 ends.
[0064] In general, the described computing systems and / or devices may employ any of a variety of computer operating systems, including, but not limited to, versions and / or variants of the Ford Sync® application, the AppLink / Smart Device Link middleware, the Microsoft Automotive® operating system, the Microsoft Windows® operating system, the Unix operating system (e.g., the Solaris® operating system distributed by Oracle Corporation in Redwood Shores, California), the AIX UNIX operating system distributed by International Business Machines in Armonk, New York, the Linux operating system, the Mac OSX and iOS operating systems distributed by Apple Inc. in Cupertino, California, the BlackBerry OS distributed by Blackberry, Ltd. in Waterloo, Canada, and the Android operating system developed by Google, Inc. and the Open Handset Alliance, or the QNX® CAR Platform for Infotainment offered by QNX Software Systems.Examples of computing devices include, without limitation, an on-board vehicle computer, a computer workstation, a server, a desktop, notebook, laptop, or handheld computer, or other computing system and / or device.
[0065] Computing devices generally include computer-executable instructions, where the instructions may be executable by one or more computing devices, such as those listed above. Computer-executable instructions may be compiled or interpreted by computer programs created using a variety of programming languages and / or technologies, including, but not limited to, Java™, C, C++, Matlab, Simulink, Stateflow, Visual Basic, Java Script, Perl, HTML, etc., either alone or in combination. Some of these applications may be compiled and executed on a virtual machine, such as the Java Virtual Machine, the Dalvik Virtual Machine, or the like. Generally, a processor (e.g., a microprocessor) receives instructions from, e.g., memory, a computer-readable medium, etc.and executes those instructions, thereby performing one or more processes that include one or more of the processes described herein. Such instructions and other data may be stored and transmitted using a variety of computer-readable media. A file in a computing device is generally a collection of data stored on a computer-readable medium, such as a storage medium, random access memory, etc.
[0066] A computer-readable medium (also referred to as a processor-readable medium) includes any non-transitory (e.g., physical) 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 a medium can take many forms, including, without limitation, non-transitory media and volatile media. Instructions can be transmitted through one or more transmission media, including fiber optics, wires, wireless communications, and internal structural elements comprising a system bus coupled to a processor of a computer. Common forms of computer-readable media include, for example, RAM, a PROM, an EPROM, a FLASH EEPROM, any other memory chip or cartridge, or any other medium from which a computer can read.
[0067] Databases, data repositories, or other data stores 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 proprietary format, a relational database management system (RDBMS), a non-relational database (NoSQL), a graph database (GDB), etc. Each such data store is generally contained within a computing device employing a computer operating system such as one of those listed above and is accessed in one or more of a variety of ways over a network. A file system may be accessed by a computer operating system and may include files stored in various formats.An RDBMS generally uses the Structured Query Language (SQL) in addition to a language for creating, storing, editing, and executing stored procedures, such as the PL / SQL language mentioned above.
[0068] In some examples, system elements may be implemented as computer-readable instructions (e.g., software) on one or more computing devices (e.g., servers, personal computers, etc.) stored on computer-readable media (e.g., disks, memory, etc.) associated with the computing devices. A computer program product may include such instructions stored on computer-readable media for performing the functions described herein.
[0069] In the drawings, the same reference numerals indicate the same elements. Furthermore, some or all of these elements could be changed. With respect to the media, processes, systems, methods, heuristics, etc. described herein, it is understood that although the steps of such processes, etc., have been described as occurring according to a certain ordered sequence, such processes could be practiced wherein the described steps are performed in an order that differs from the order described herein. Further, it is understood that certain steps could be performed concurrently, that other steps could be added, or that certain steps described herein could be omitted.Operations, systems and procedures described herein should always be implemented and / or performed in accordance with any applicable owner / user manual and / or safety guidelines.
[0070] The disclosure has been described in an illustrative manner, and it is understood that the terminology used is intended to be descriptive rather than limiting. The use of "in response to" and "in determining" indicates a causal relationship, not merely a temporal relationship. The adjectives "first," "second," and "third" are used herein as identifiers and are not intended to indicate importance, order, or quantity. Many modifications and variations to the present disclosure are possible in light of the above teachings, and the disclosure may be practiced otherwise than as specifically described.
[0071] According to the present invention, a computer is provided having a processor and a memory, the memory having stored thereon instructions executable by the processor to: determine a threat number based on sensor data indicative of an obstacle, the threat number representative of a risk of collision between a 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 a component of the vehicle in accordance with the control input.
[0072] According to one embodiment, the instructions further include instructions to determine the threat number based on a comparison of a first value of a kinematic quantity and a second value of the kinematic quantity, wherein the first value is a value of the kinematic quantity to perform an operation to maneuver a vehicle away from an obstacle, wherein the second value of the kinematic quantity is a capability of the vehicle to perform the operation.
[0073] According to one embodiment, the instructions further include instructions to determine a predicted time required for the vehicle to reach the obstacle and to determine the first value of the kinematic quantity based on the predicted time.
[0074] According to one embodiment, the instructions further include instructions to determine a plurality of candidate threat numbers and to select a smallest of the candidate threat numbers as the threat number.
[0075] According to one embodiment, the operation includes at least one of braking or steering.
[0076] According to one embodiment, determining the control input is subject to a constraint based on the control barrier function.
[0077] According to one embodiment, the constraint is weighted by the threat number.
[0078] According to one embodiment, the constraint includes that a sum of a change with respect to time of the control barrier function and a function of the control barrier function exceeds a value.
[0079] According to one embodiment, the sum is weighted by the threat number.
[0080] According to one embodiment, the control barrier function is a difference between a distance from a reference point to the obstacle and a distance from the reference point to a point on a virtual boundary in a direction from the reference point to the obstacle.
[0081] According to one embodiment, the reference point is located inside a base area of the vehicle.
[0082] According to one embodiment, the reference point is fixed relative to the vehicle.
[0083] According to one embodiment, the component of the vehicle includes at least one of a braking system or a steering system.
[0084] According to one embodiment, determining the control input is based on minimizing a function of a difference between the control input and a nominal input.
[0085] According to one embodiment, the nominal input is an actual input value.
[0086] According to one embodiment, the instructions further include instructions to receive the nominal input from an algorithm for at least partially autonomous operation of the vehicle.
[0087] According to the present invention, a method includes: determining a threat number based on sensor data indicative of an obstacle, the threat number representing a risk of collision between a vehicle and the obstacle; formulating a control barrier function based on sensor data indicative of the obstacle and 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.
[0088] In one aspect of the 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.
[0089] In one aspect of the 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 to a point on a virtual boundary in a direction from the reference point to the obstacle.
[0090] In one aspect of the invention, the component of the vehicle may include at least one of a braking system or a steering system.
Claims
[1] Method comprising: Determining a threat score based on sensor data indicating an obstacle, the threat score reflecting a risk of collision between a 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 Operating a component of the vehicle according to the control input. [2] The method of claim 1, further comprising 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 a value of the kinematic quantity to perform an operation to maneuver a vehicle away from an obstacle, the second value of the kinematic quantity being a capability of the vehicle to perform the operation. [3] The method of claim 2, further comprising determining a predicted time required for the vehicle to reach the obstacle and determining the first value of the kinematic quantity based on the predicted time. [4] The method of claim 2, further comprising determining a plurality of candidate threat numbers and selecting a smallest of the candidate threat numbers as the threat number. [5] The method of claim 2, wherein the operation includes at least one of braking or steering. [6] The method of claim 1, wherein determining the control input is subject to a constraint based on the control barrier function. [7] The method of claim 6, wherein the constraint is weighted by the threat number. [8] The method of claim 6, wherein the constraint is a sum of a change with respect to a time of the control barrier function and a function of the control barrier function exceeds a value. [9] The method of claim 8, wherein the sum is weighted by the threat number. [10] The method of claim 1, wherein the control barrier function is a difference between a distance from a reference point to the obstacle and a distance from the reference point to a point on a virtual boundary in a direction from the reference point to the obstacle. [11] The method of claim 1, wherein the component of the vehicle includes at least one of a braking system or a steering system. [12] The method of claim 1, wherein determining the control input is based on minimizing a function of a difference between the control input and a nominal input. [13] The method of claim 12, wherein the nominal input is an actual input value. [14] The method of claim 12, further comprising receiving the nominal input from an algorithm for at least partially autonomous operation of the vehicle. [15] A computer comprising a processor and a memory, the memory storing instructions executable by the processor to perform the method of any one of claims 1-14.