Bias Estimation and Correction in Vehicle Dynamics Control
The Koopman operator framework in vehicle systems estimates and corrects steering biases using a recursive least-squares method with a forgetting factor, addressing tuning complexity and oscillations in existing vehicle motion control systems, improving stability and accuracy.
Patent Information
- Application Number
- JP2025507873
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2022-08-11
- Filing Date
- 2023-07-31
- Publication Date
- 2025-09-04
AI Technical Summary
Existing vehicle motion control systems suffer from biases between input commands and actual vehicle operations due to mechanical variations and sensor miscalibration, leading to discrepancies like understeer or oversteer, which current methods like Luenberger observers and Kalman filters are prone to oscillations and require complex tuning.
A vehicle system utilizing a Koopman operator framework to estimate and correct steering biases by recursively solving a nonlinear least-squares equation, employing a forgetting factor for tuning-free bias correction, and adapting to vehicle and sensor variations.
The system effectively reduces oscillations and tuning complexity, providing robust bias correction that adapts to vehicle-specific variations, enhancing vehicle control stability and accuracy.
Smart Images

Figure 2025529034000001_ABST
Abstract
Description
[Technical Field]
[0001] [CROSS-REFERENCE TO RELATED APPLICATIONS] This application claims priority to U.S. Provisional Application No. 63 / 371,172, filed August 11, 2022, entitled "ESTIMATING AND CORRECTING BIAS IN VEHICLE MOTION CONTROL," the disclosure of which is incorporated herein by reference in its entirety.
[0002] This document relates to bias estimation and correction in vehicle motion control. [Background technology]
[0003] Some vehicles manufactured today are equipped with one or more types of systems that may at least partially handle the operations associated with driving the vehicle. Some such assistance involves relying on sensor outputs to control vehicle motion or other functions. However, biases can arise in such systems between input commands and the effective manner in which the vehicle operates. Summary of the Invention
[0004] In a first aspect, a vehicle comprises an advanced driver assistance system (ADAS) that generates commands for aspects of vehicle motion; an actuator for controlling the aspects of vehicle motion, the actuator connected to the ADAS; and a bias estimation circuit that estimates a bias between the command for the aspect of vehicle motion and an actual aspect of vehicle motion, the bias estimation circuit estimating the bias using an operator that predicts a next time step of a non-linear function of a vehicle state, wherein the command for the aspect of vehicle motion is corrected using the bias estimated by the bias estimation circuit to provide a corrected command for the aspect of vehicle motion for use by the actuator.
[0005] Implementations may include any or all of the following features: the operator is a Koopman operator applied to the nonlinear function of vehicle states; the bias estimation circuit introduces a bias term to the nonlinear function of vehicle states; introducing the bias term includes subtracting the bias term multiplied by a coefficient from the command for the aspect of vehicle motion; the bias estimation circuit performs a recursive solution of a nonlinear least-squares equation involving a cost function; the recursive solution involves applying a forgetting factor corresponding to the number of previous data points used in estimating the bias; correcting the command for the aspect of vehicle motion includes subtracting the bias estimated by the bias estimation circuit from the command for the aspect of vehicle motion; the aspect of vehicle motion includes steering of the vehicle; the bias estimation circuit uses at least a yaw rate of the vehicle and a velocity of the vehicle in estimating the bias; and the bias estimation circuit further uses a sensed steering angle in estimating the bias. The bias estimation circuit further uses the corrected command for the aspect of vehicle motion without a sensed steering angle when estimating the bias. The bias estimation circuit begins using the corrected command for the aspect of vehicle motion after first using the sensed steering angle when estimating the bias. The bias estimation circuit begins using the corrected command for the aspect of vehicle motion based on the absence or unreliability of a steering angle sensor for the vehicle. The bias estimation circuit further uses a bank angle when estimating the bias. The bias estimation circuit further uses a wheel slip angle when estimating the bias. The bias estimation circuit further uses a lateral velocity of the vehicle when estimating the bias. The aspect of vehicle motion includes localization of the vehicle. The bias estimation circuit applies a recursive least squares method. The gain of the command for the aspect of vehicle motion is known to the bias estimation circuit before estimating the bias.
[0006] In a second aspect, a computer-implemented method includes generating a command for an aspect of vehicle motion for the vehicle using an advanced driver assistance system (ADAS) of the vehicle; estimating a bias between the command for the aspect of vehicle motion and an actual aspect of vehicle motion, the bias being estimated using an operator that predicts a next time step of a nonlinear function of a vehicle state; correcting the command for the aspect of vehicle motion using the estimated bias to generate a corrected command for the aspect of vehicle motion; and providing the corrected command for the aspect of vehicle motion to an actuator for controlling the aspect of vehicle motion, the actuator being connected to the ADAS. [Brief explanation of the drawings]
[0007] [Figure 1] 1 shows a schematic diagram of an example of a steering wheel input command and actual road angle.
[0008] [Figure 2] An example of a vehicle is shown.
[0009] [Figure 3A] 1 illustrates an example of an architecture that may be part of an ADAS-equipped vehicle. [Figure 3B] 1 illustrates an example of an architecture that may be part of an ADAS-equipped vehicle.
[0010] [Figure 4A] 1 shows a block diagram of an example of a bias estimator. [Figure 4B] 1 shows a block diagram of an example of a bias estimator.
[0011] [Figure 5] 1 shows an example of estimating bias in vehicle localization.
[0012] [Figure 6]An example of considering bank angle when estimating and correcting steering bias is shown.
[0013] [Figure 7] An example of taking slip angle into account when estimating and correcting steering bias is shown.
[0014] [Figure 8] An example of the method is shown below.
[0015] [Figure 9] 1 illustrates an exemplary architecture of a computing device that may be used to implement aspects of the present disclosure.
[0016] Like reference symbols in the various drawings indicate like elements. DETAILED DESCRIPTION OF THE INVENTION
[0017] This document describes example systems and techniques for estimating and correcting biases in one or more aspects of the control of vehicle motion. In some implementations, biases in the control of vehicle steering (sometimes referred to as steering biases) may be estimated and corrected.
[0018] A vehicle equipped with an advanced driver assistance system (ADAS) may have one or more actuators for controlling at least one aspect of the vehicle's motion, including, but not limited to, its steering. Bias in the steering system may manifest as a discrepancy between a steering wheel input command and the actual road wheel angle. The steering wheel input command may be generated by the ADAS or by the driver manipulating the steering wheel; the actual road wheel angle is the angle between the wheel and the longitudinal axis of the vehicle. These may be long-term discrepancies or infrequent discrepancies. The discrepancies may arise from mechanical variations or asymmetries, such as variations in the assembly process, wheel balancing or alignment, tire pressure differences, and / or miscalibration (e.g., in one or more sensors) of an electric power steering system or a steer-by-wire system. For example, a steering bias may manifest as understeer or oversteer when driving around a curve. In such situations, the ADAS controller may tend to find an equilibrium point away from zero; that is, if the vehicle is perfectly centered, the controller may attempt to make the steering angle exactly zero, but the steering bias may cause the wheels to have angles that are not zero but move away from the center in this case. Thus, the controller compensates for this and finds an off-center equilibrium. In this manner, the present subject matter can be used to automatically estimate and correct unknown, possibly time-varying, biases resulting from mechanical and / or calibration variations between vehicles. As mentioned, the biases may change over time and, in some cases, even vary between being positive or negative. In some implementations, bias estimation and correction according to the present subject matter is applied whenever the vehicle is in motion.
[0019] In some implementations, a methodology for steering bias estimation and correction according to the present subject matter utilizes a Koopman operator framework to discover the dynamics of a system governed by differential equations, given a set of nonlinear basis functions. For example, the bias may first be estimated using a priori knowledge of the equations governing the kinematic motion of the vehicle. The estimated bias may then be mapped to a control input (e.g., a steering command) and subtracted from the control law to effectively correct for it.
[0020] Disturbance estimators have been described in prior techniques. Some of them use a Luenberger observer, a Kalman filter, or integral control. Techniques based on integral control can often be prone to oscillatory behavior, such as when a vehicle enters or exits a curve. That is, the integrator can cause oscillations or overshoots due to load increases or load decreases. In contrast, the present subject matter is significantly less susceptible to underdamped modes and oscillations.
[0021] Approaches involving observers or Kalman filters are more complex to implement and more susceptible to tuning than the present subject matter. For example, such tuning may vary between vehicles. The present subject matter, in contrast, is less susceptible to tuning. While vehicle-to-vehicle variations may increase sensitivity to tuning and adversely affect performance, the present subject matter is robust to vehicle / sensor variations and may have only a single tuning parameter (e.g., a constant related to the number of data points used for the calculation). This may eliminate the need for complex tuning based on measurement and process covariance.
[0022] Examples herein refer to vehicles. A vehicle is a machine that transports passengers, cargo, or both. A vehicle may have one or more motors that use at least one type of fuel or other energy source (e.g., electricity). Examples of vehicles include, but are not limited to, cars, trucks, and buses. The number of wheels may vary between vehicle types, and one or more (e.g., all) of the wheels may be used to propel the vehicle, or the vehicle may be unpowered (e.g., when a trailer is attached to another vehicle). A vehicle may include a passenger compartment that accommodates one or more people. At least one vehicle occupant may be considered the driver; in this case, various tools, implements, or other devices may be provided to the driver. In examples herein, any person carried by a vehicle may be referred to as the "driver" or "passenger" of the vehicle, regardless of whether that person is driving the vehicle, whether that person has access to the controls to drive the vehicle, or whether that person lacks the controls to drive the vehicle. The vehicles in this example are shown as being similar or identical to one another for illustrative purposes only.
[0023] Examples herein refer to ADAS. In some implementations, the ADAS may perform driver assistance and / or autonomous driving. The ADAS may at least partially automate one or more dynamic driving tasks. The ADAS may operate, in part, based on the output of one or more sensors typically positioned on, under, or within the vehicle. The ADAS may plan one or more trajectories for the vehicle before and / or while controlling the vehicle's motion. The planned trajectories may define a path for the vehicle to travel. As such, propelling the vehicle according to the planned trajectories may correspond to controlling one or more aspects of the vehicle's operating behavior, such as, but not limited to, the vehicle's steering angle, gear (e.g., forward or reverse), speed, acceleration, and / or braking.
[0024] Although an autonomous vehicle is an example of an ADAS, not all ADAS are designed to provide fully autonomous vehicles. SAE International has defined multiple levels of driving automation, commonly referred to as Levels 0, 1, 2, 3, 4, and 5. For example, a Level 0 system or driving mode may not involve persistent vehicle control by the system. For example, a Level 1 system or driving mode may include adaptive cruise control, emergency brake assist, automatic emergency brake assist, lane keeping, and / or lane centering. For example, a Level 2 system or driving mode may include highway assist, autonomous obstacle avoidance, and / or autonomous parking. For example, a Level 3 or 4 system or driving mode may include incremental control of the vehicle by the driver assistance system. For example, a Level 5 system or driving mode may not require human intervention in the driver assistance system.
[0025] Examples herein refer to sensors. A sensor is configured to detect one or more aspects of its environment and output a signal reflective of the detection. The detected aspect may be static or dynamic at the time of detection. By way of illustrative example only, a sensor may indicate one or more of the following: a distance between the sensor and an object, a speed of a vehicle carrying the sensor, a trajectory of the vehicle, or an acceleration of the vehicle. A sensor may generate an output without probing its surroundings with anything (e.g., passive detection such as an image sensor capturing electromagnetic radiation), or the sensor may probe its surroundings (e.g., active detection by sending out electromagnetic radiation and / or sound waves) and detect a response to the probing. Examples of sensors that may be used in one or more embodiments include, but are not limited to, optical sensors (e.g., cameras); light-based sensing systems (e.g., light ranging and detection (LiDAR) devices); radio-based sensors (e.g., radar); acoustic sensors (e.g., ultrasonic devices and / or microphones); inertial measurement units (IMUs) (e.g., gyroscopes and / or accelerometers); speed sensors (e.g., for the vehicle or its components); location sensors (e.g., for the vehicle or its components); orientation sensors (e.g., for the vehicle or its components); torque sensors; thermal sensors; temperature sensors (e.g., primary or secondary thermometers); pressure sensors (e.g., for the ambient air or vehicle components); humidity sensors (e.g., rain detectors); or occupancy sensors.
[0026] 1 shows a schematic diagram of an example 100 of a steering wheel input command and an actual road angle. The example 100 may be used with one or more other examples described elsewhere herein. The example 100 involves a vehicle 102 (only a front portion is shown for simplicity) and a steering wheel 104 of the vehicle 102 (shown separately from the vehicle 102 for clarity). The vehicle 102 has one or more wheels 106 (shown schematically relative to the vehicle 102) that may be steered using the steering wheel 104. For example, a driver or an ADAS may control the steering wheel 104 and determine the angle δ between the steering wheel 104 and a longitudinal reference direction. cmd The wheel 106 may also rotate about an axis of rotation in the z direction (extending out of the drawing) as shown by the coordinate system, thereby forming an angle δ with the longitudinal reference direction. cmd If δ and δ do not correspond to one another, this may be referred to as a steering bias (e.g., a zero steering wheel input command results in a non-zero actual road angle). Thus, steering is an example of an aspect of vehicle motion for which the present subject matter can estimate and correct for bias.
[0027] 2 illustrates an example of a vehicle 200. The vehicle 200 may be used with one or more other examples described elsewhere herein. The vehicle 200 includes an ADAS 202 and vehicle control 204. The ADAS 202 may be implemented using some or all of the components described with reference to FIG. 9 below. The ADAS 202 includes sensors 206 and a motion controller 208. The motion controller 208 may include a bias estimator 210. The vehicle control 204 may include any number of controls implemented by actuators of the vehicle, including, but not limited to, a steering control 212. Other aspects that the vehicle 200 may include are omitted here for the sake of brevity.
[0028] Sensors 206 may include appropriate circuitry and / or executable programming for processing sensor output and performing detection based on that processing. To name just a few, sensors 206 may include radar (e.g., any object detection system based at least in part on radio waves); active optical sensors (e.g., any object detection system based at least in part on laser light, including but not limited to LiDAR); cameras (e.g., any image sensor whose signal is taken into account by vehicle 200); and / or ultrasonic sensors (e.g., any transmitter, receiver, and / or transceiver based on ultrasound and used in at least detecting the proximity of an object).
[0029] Motion controller 208 may plan for ADAS 202 to perform one or more actions, or no action, in response to monitoring the surroundings of vehicle 200 and / or driver inputs. One or more outputs of sensors 206 may be taken into account. In some implementations, motion controller 208 may perform motion planning for vehicle 200 and / or plan its trajectory.
[0030] The steering control 212 may be configured to control the steering angle through a mechanical connection between the steering control 212 and an adjustable wheel, or may be part of a steer-by-wire system.
[0031] The bias estimator 210 may be implemented using at least one circuit (e.g., a chip or other processor executing stored instructions). The bias estimator 210 estimates the bias between a command for an aspect of vehicle motion and an actual aspect of vehicle motion. For example, in FIG. 1, the command for an aspect of vehicle motion is an angle δ cmd, and the actual vehicle motion aspect may be the angle δ of the wheels 106. The bias estimator 210 estimates the bias using an operator that predicts the next time step of a nonlinear function of the vehicle state. For example, the operator may be a Koopman operator, and estimating the bias may involve recursively solving a least-squares problem for the coefficients of the differential equation.
[0032] 3A-3B illustrate example architectures 300 and 302, respectively, that may be part of an ADAS-equipped vehicle. Architectures 300 and / or 302 may be used with one or more other examples described elsewhere herein. Each of architectures 300 and 302 includes a bias estimator 210, a controller 304, and a block 306 (for clarity, block 306 is labeled "Vehicle") that generally represents one or more other components of a vehicle. In some implementations, architectures 300 and 302 may be implemented in a motion controller of an ADAS-equipped vehicle. For example, controller 304 may be an ADAS controller, and block 306 may represent aspects of sensor 206 and vehicle control 204 in FIG. 2.
[0033] The controller 304 may receive one or more inputs. In some implementations, the controller 304 is a lateral controller of the ADAS and receives a reference signal (“ref”). The reference signal may correspond to or reflect a desired lateral error of the vehicle relative to some reference (e.g., lane markings or other landmarks). The reference signal may correspond to or reflect a desired yaw and / or yaw rate. When the vehicle is traveling in a curve, the curvature multiplied by the vehicle speed gives the yaw rate, which is an angular velocity. The yaw rate may be measured relative to the z direction (FIG. 1). The reference signal may be generated by another component of the ADAS, including, but not limited to, a trajectory planner. In this manner, a trajectory with a particular curvature may be planned, from which the yaw and yaw rate are determined. As long as the value of the lateral error is always zero, the controller 304 may not need to receive that value from elsewhere.
[0034] The controller 304 may generate one or more outputs. In some implementations, the controller 304 generates commands for aspects of vehicle motion. The aspects of vehicle motion may include steering of the vehicle. For example, the controller 304 may generate commands for an angle δ cmd That is, the controller 304 may execute one or more processes related to vehicle control and may generate a steering wheel angle command corresponding to the angle δ cmd The controller 10 may decide to instruct the steering actuator to apply
[0035] Block 306 here represents vehicle components such as a steering actuator that controls the steering of the vehicle based on one or more commands, and sensors that indicate some aspect of vehicle motion. Block 306 may provide one or more signals to bias estimator 210. In architecture 300, block 306 provides yaw rate r, steering angle δ, and vehicle velocity v. Block 306 may provide one or more signals to controller 304. For example, lateral error and / or lateral error velocity may be provided.
[0036] The bias estimator 210 may generate one or more outputs. In some implementations, the bias estimator 210 estimates a bias based on information about an aspect of vehicle motion. For example, bias b may represent an estimated steering bias at the vehicle. The architectures 300 and 302 may include a correction block 308 that generates a corrected command for an aspect of vehicle motion. In some implementations, the corrected command is a steering angle command corrected for the estimated bias. For example, the corrected command may be an angle
number
number
number
[0037] As mentioned, in architecture 300, block 306 provides bias estimator 210 with the yaw rate r, steering angle δ, and vehicle velocity v. Thus, architecture 300 is an example of using a sensed steering angle in bias estimation. Other approaches may be used. In some implementations of architecture 302, block 306 provides bias estimator 210 with the yaw rate r and vehicle velocity v, but not the steering angle δ. Architecture 302 may provide bias estimator 210 with the angle
number
[0038] An ADAS-equipped vehicle can switch between two or more architectures of motion controllers, such as between architectures 300 and 302. In some implementations, the bias estimator 210 uses a sensed steering angle (e.g., steering angle δ) before estimating the bias, and then uses a sensed steering angle (e.g., steering angle δ) before estimating the bias.
number
[0039] 4A shows a block diagram of an example bias estimator 400. The bias estimator 400 may be implemented using aspects described with reference to FIG. 9 below and may be used with one or more other examples described elsewhere herein. The bias estimator 400 may include a matrix equation component 402, a substitution component 404, a recursive solution component 406, and a matrix multiplication component 408. The bias estimator 400 may estimate a bias between a command for an aspect of vehicle motion and an actual aspect of vehicle motion. The bias estimator 400 may do this using an operator that predicts the next time step of a nonlinear function of the vehicle state, for example, as will be described.
[0040] Information about aspects of vehicle motion may include a data set, such as a set of data related to steering, expressed as basis functions representing respective states of the vehicle, where the set of basis functions is named ψ and may depend on multiple values, for example:
number
[0041] The sets of basis functions at different time steps may be related to each other by the Koopman operator, in which case the sets of basis functions may be referred to as observables, for example:
number
[0042] The bias can be estimated by finding the Koopman operator K that minimizes the prediction error subject to a norm. For example, the minimization can be expressed as:
number
number
[0043] To illustrate how the minimization of Equation 4 can be performed, some example sets of basis functions are first discussed. The first line of Equation 3, with dimensions as shown in Equation 2, can be as follows:
number
number
number
[0044] In an attempt to address situations such as the presence of a steering bias, the system may be constrained by the fact that only the commanded steering angle can be adjusted by the controller. In Equation 5, the system uses the bias term k 14 We need to try to remove c, which can be done by adding something to the steering angle. The steering angle is the inherent gain (factor k in Equation 5). 13 ), which is also identified in this process. Therefore, the gain of the estimator (i.e., the coefficient k 14 ) is the gain of the input (i.e., the coefficient k 13 ) is required to be divided by the angle δ (obtained from the controller). cmd angle from
number
[0045] Equation 4 finds its derivative, sets it equal to zero, and then
number
number
number
number
[0046] However, if the number P is very large due to a large number of data points being considered, analytically minimizing Equation 4 may be prohibitively difficult in an online implementation where vehicle motion is to be controlled relatively frequently. The recursive solution component 406 may therefore perform recursive calculations instead of storing data in a dictionary. For example, the following are recursive versions of Equations 10 and 11, respectively, going from state k-1 to state k:
number
number
[0047] That is, the recursive solution using Equations 12 and 13 can be a recursive solution of a nonlinear least squares equation (attempting to find a matrix rather than a vector), with a cost function such as Equation 4. For example, Equation 4 can be linear as described here, with basis functions ψ and ψ + The set of can be non-linear.
[0048] The Koopman operator K is then
number
[0049] In some of the examples above, the bias is estimated by taking into account the lateral velocity ν y In some implementations, the lateral velocity may be omitted from the bias estimation. The dynamics may then correspond to a kinematic model of vehicle motion and control.
[0050] In some implementations, a recursive least squares method may be used in which the components of the parameter vector are calculated from one time step to the next. For example, the output of interest y may be defined as:
number
[0051] Similar to equation 4 above, a minimization problem can be solved here:
number
[0052] A recursive solution to equation 15 may then be performed by recursive solution component 406 (FIG. 4A). The recursive solution is
number
number
[0053] Next, using the derived values, similar to the explanation above for Equations 5 and 6,
number
[0054] That is, Equation 18 may provide a bias estimate that may be used in generating corrected commands for aspects of vehicle motion, including but not limited to those according to Equation 1 above.
[0055] The above calculations may be modified if one or more pieces of information about the system are known a priori. In some implementations, a priori information about the vehicle model is available and may be used. For example, the input gain corresponding to the steering input θ in the above definition of the parameter vector θ may be determined. The output of interest may instead be
number
[0056] The known gain, e.g., θ2, may be determined to a certain level of inaccuracy, which may affect the accuracy of the technique for correcting the calculation based on known information. However, because the denominator in Equation 18 is a constant in this case, this technique may be less susceptible to sudden fluctuations. In some implementations, the technique of Equation 19 may be applied when fluctuations are detected or when not enough data points have been collected (e.g., at the beginning of data collection). The technique of Equation 18 may also be used under steady-state conditions. The bias estimator 400 (FIG. 4A) can smoothly switch between these variants.
[0057] As mentioned above, a forgetting factor may be used in the recursive solution. FIG. 4B shows a block diagram of an example of a bias estimator 410, where the recursive solution component 406 includes a forgetting factor component 412. Other components of the bias estimator 410 may be similar to or identical to corresponding components of the bias estimator 400 (FIG. 4A) and will not be described in detail below. The bias estimator 410 may be implemented using aspects described with reference to FIG. 9 below and may be used with one or more other examples described elsewhere herein.
[0058] In some implementations, a forgetting matrix may be used instead in the recursive solution (sometimes referred to as a matrix forgetting factor). The forgetting matrix may help select different forgetting factors for different directions (i.e., for different variables). Furthermore, by varying the entries in the matrix over time, the learning rate for each direction may be adapted depending on the abundance of data. Recursive algorithms may become unstable if the input data is not persistently excitatory, i.e., if the algorithm lacks new information. For example, the covariance matrix may tend toward zero, and its projected inverse (e.g., Equation (21) below) may tend toward infinity. For this reason, it may be convenient to adapt the forgetting factor to 1 in one or more directions that may not be sufficiently persistently excitatory. In this way, older data is not forgotten, and the algorithm may be more robust to loss of excitation persistence.
[0059] The variable direction adaptive matrix forgetting factor may be calculated as follows: One or more singular value decompositions may be performed by a singular value decomposition (SVD) component 414. In some implementations, the covariance matrix and / or the projected input vector may be subjected to singular value decomposition. For example, the covariance matrix (e.g., the covariance matrix P in equations (16) and (17)) may be calculated as follows:
number
number
[0060] The forgetting matrix, denoted as Λ, can be constructed to select different forgetting factors for different variables. The diagonal entries of the inverse of the forgetting matrix are
number
[0061] Finally, the matrix
number
number
number
number
[0062] Using equations (20) and (21), the inputs can be projected in the direction implicated by the covariance matrix. If the individual projected inputs contain sufficient information, a default forgetting factor λ=1 can be used. Otherwise, a forgetting factor λ=1 can be used (i.e., so that data is no longer forgotten).
[0063] 5 shows an example of estimating bias in the localization of a vehicle 500. The vehicle 500 is here located on (e.g., traveling on) a surface 502; this example may be used with one or more other examples described elsewhere herein. The localization of the vehicle 500 is one example of an aspect of vehicle motion for which the present subject matter may estimate and correct bias. An ADAS controller may specify that the vehicle 500 should be located x millimeters away from a road marker 504 or any other landmark on the surface 502.
[0064] The ADAS may use one or more types of sensors in performing localization of the vehicle 500. Here, a sensor 506 is shown schematically detecting the position of the vehicle 500 relative to road markers 504 for localization purposes. Cameras, IMUs, wheel odometers, and / or global positioning system receivers, to name just a few, may be used in performing localization. To the extent that a bias occurs between a command for localization and an actual localization, bias estimation and correction may be performed substantially as described in the examples herein. For example, a localization-related signal or other output may be used in Equation 2, and Equation 7 may be formulated instead to correct for bias in the control of localization and the like.
[0065] 6 shows an example of considering bank angle when estimating and correcting steering bias. A vehicle 600 is here positioned on (e.g., traveling on) a surface 602 that has a bank angle 604 relative to a horizontal reference plane. Bank angle 604 may be determined, for example, using an IMU. This example may be used in conjunction with one or more other examples described elsewhere herein.
[0066] Due to the bank angle 604, a lateral force 606 acts on the vehicle 600 in a direction opposite to the direction that the surface 602 is banked. When the vehicle 600 is traveling on the surface 602 with the bank angle 604, the vehicle 600 may be characterized as being in a roll position. Traveling in a roll position may perturb certain aspects of the ADAS, such as steering. For example, a bias estimator for correcting the steering bias may be perturbed to apply a non-zero steering angle in a direction opposite to the lateral force 606. However, if the roadway of the surface 602 is currently straight, this means that the yaw rate is always zero. The bias estimator is then essentially determining and attempting to eliminate the difference between the commanded steering angle and the actual road angle resulting from the surface 602 with the bank angle 604. To address this situation, the bank angle 604 may be taken into account by the bias estimator. For example, a dimension reflecting bank angle 604 may be added as another dimension in the set of basis functions in Equation 2, so that the bias estimator can also correct for the bias resulting from this situation.
[0067] 7 shows an example of considering slip angle when estimating and correcting steering bias. Wheel 700 is here a steerable wheel of a vehicle located on surface 702. Wheel 700 currently has a steering angle δ relative to a longitudinal reference axis of the rest of the vehicle, which is not shown here for simplicity. This example may be used in conjunction with one or more other examples described elsewhere herein.
[0068] Wheel 700 is rotating and also slipping laterally relative to surface 702, as indicated diagrammatically by arrow 704. Side slip causes the wheel to not follow exactly the steering angle δ. For example, steering angle δ may be 45 degrees, but if wheel 700 is slipping due to arrow 704, velocity vector 706 of wheel 700 will not be 45 degrees, but rather will have a different value (e.g., 30 degrees). The angle of sideslip and / or the angle of velocity vector 706 may be calculated based on sensor signals and used to improve bias estimation and correction. To address this situation, the angle of sideslip and / or the angle of velocity vector 706 may be taken into account by the bias estimator. For example, a dimension reflecting sideslip may be added as another dimension in the set of basis functions in Equation 2, so that the bias estimator can also correct for the bias resulting from this situation.
[0069] 8 illustrates one example of a method 800. Method 800 may be used with one or more other examples described elsewhere herein. More or fewer operations than those shown may be performed. Unless otherwise indicated, two or more operations may be performed in a different order.
[0070] In operation 802, the ADAS may generate commands for aspects of vehicle motion. For example, the controller 304 (FIGS. 3A-3B) may generate commands for the angle δ cmd , the steering wheel angle command corresponding to
[0071] In operation 804, the bias may be estimated. For example, the minimization problem of Equation 4 may be recursively solved to determine the Koopman operator according to Equation 14, which may provide a bias estimate.
[0072] In operation 806, the command from the controller may be corrected for the estimated bias. For example, the angle
number
[0073] In operation 808, the corrected command may be provided to the actuator. For example, block 306 may
number
[0074] The motion controller may switch from one architecture to another in operation 810. For example, after initial operation using architecture 300 (FIG. 3A), in which sensed steering angle is considered in estimating bias, the motion controller may instead begin using architecture 302 (FIG. 3B), in which commanded steering angle, rather than sensed steering angle, is used in estimating bias.
[0075] FIG. 9 illustrates an example architecture of a computing device 900 that may be used to implement aspects of the present disclosure, including any of the systems, devices, and / or techniques described herein, or any other systems, devices, and / or techniques that may be utilized in various possible embodiments.
[0076] The computing device illustrated in FIG. 9 may be used to execute the operating system, application programs, and / or software modules (including software engines) described herein.
[0077] In some embodiments, computing device 900 includes at least one processing device 902 (e.g., processor), such as a central processing unit (CPU). Various processing devices are available from various manufacturers, such as Intel or Advanced Micro Devices. In this example, computing device 900 also includes a system memory 904 and a system bus 906 that couples various system components, including the system memory 904, to the processing device 902. The system bus 906 is one of any number of types of bus structures that can be used, including, but not limited to, a memory bus or memory controller; a peripheral bus; and a local bus, using any of a variety of bus architectures.
[0078] Examples of computing devices that may be implemented using computing device 900 include an electronic control unit (ECU), a desktop computer, a laptop computer, a tablet computer, a mobile computing device (such as a smartphone, touchpad mobile digital device, or other mobile device), or other device configured to process digital instructions.
[0079] The system memory 904 includes a read-only memory 908 and a random access memory 910. A basic input / output system 912, containing the basic routines that act to transfer information within the computing device 900, such as during start-up, may be stored in the read-only memory 908.
[0080] In some embodiments, computing device 900 also includes a secondary storage device 914, such as a hard disk drive for storing digital data. The secondary storage device 914 is connected to the system bus 906 by a secondary storage interface 916. The secondary storage device 914 and its associated computer-readable media provide non-volatile and non-transitory storage of computer-readable instructions (including application programs and program modules), data structures, and other data for computing device 900.
[0081] Although the exemplary environment described herein employs a hard disk drive as the secondary storage device, other types of computer-readable storage media are used in other embodiments. Examples of these other types of computer-readable storage media include a magnetic cassette, a flash memory card, a solid-state drive (SSD), a digital video disk, a Bernoulli cartridge, a compact disk read-only memory, a digital versatile disk read-only memory, a random access memory, or a read-only memory. Some embodiments include non-transitory media. For example, a computer program product may be tangibly embodied in a non-transitory storage medium. Additionally, such computer-readable storage media may include local storage or cloud-based storage.
[0082] A number of program modules may be stored on the secondary storage device 914 and / or in the system memory 904, including an operating system 918, one or more application programs 920, other program modules 922 (such as the software engines described herein), and program data 924. The computing device 900 may utilize any suitable operating system.
[0083] In some embodiments, a user provides input to the computing device 900 through one or more input devices 926. Examples of input devices 926 include a keyboard 928, a mouse 930, a microphone 932 (e.g., for voice and / or other audio input), a touch sensor 934 (e.g., a touchpad or touch-sensitive display), and a gesture sensor 935 (e.g., for gesture input). In some implementations, the input devices 926 provide presence, proximity, and / or motion-based detection. Other embodiments include other input devices 926. The input devices may be connected to the processing device 902 through an input / output interface 936 that is coupled to the system bus 906. These input devices 926 may be connected by any number of input / output interfaces (e.g., a parallel port, a serial port, a game port, or a universal serial bus). In some possible embodiments, wireless communication between the input device 926 and the input / output interface 936 is also possible, including infrared, BLUETOOTH® wireless technology, 802.11a / b / g / n, cellular, ultra-wideband (UWB), ZigBee®, or other radio frequency communication systems, to name just a few.
[0084] In this exemplary embodiment, a display device 938, such as a monitor, liquid crystal display device, light emitting diode display device, projector, or touch-sensitive display device, is also connected to system bus 906 via an interface, such as a video adapter 940. In addition to the display device 938, computing device 900 may also include various other peripheral devices (not shown), such as speakers or a printer.
[0085] Computing device 900 may be connected to one or more networks through network interface 942. Network interface 942 may provide wired and / or wireless communication. In some implementations, network interface 942 may include one or more antennas for transmitting and / or receiving wireless signals. When used in a local area networking environment or a wide area networking environment (such as the Internet), network interface 942 may include an Ethernet interface. Other possible embodiments use other communication devices. For example, some embodiments of computing device 900 include a modem for communicating over a network.
[0086] Computing device 900 may include at least some form of computer-readable media. Computer-readable media includes any available media that can be accessed by computing device 900. By way of example, computer-readable media include computer-readable storage media and computer-readable communication media.
[0087] Computer-readable storage media include volatile and nonvolatile, removable and non-removable media implemented in any device configured to store information such as computer-readable instructions, data structures, program modules, or other data, including, but not limited to, random access memory, read-only memory, electrically erasable programmable read-only memory, flash memory, or other memory technology, compact disc read-only memory, digital versatile disks, or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage, or other magnetic storage devices, or any other medium that can be used to store the desired information and that can be accessed by computing device 900.
[0088] Computer-readable communication media typically embodies computer-readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term "modulated data signal" refers to a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, computer-readable communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, radio frequency, infrared and other wireless media. Combinations of any of the above are also included within the scope of computer-readable media.
[0089] The computing device illustrated in FIG. 9 is also an example of a programmable electronic apparatus that may include one or more such computing devices, and when multiple computing devices are included, such computing devices may be coupled together via a suitable data communications network to collectively perform various functions, methods, or operations disclosed herein.
[0090] In some implementations, computing device 900 may be characterized as an ADAS computer. For example, computing device 900 may include one or more components potentially used to process tasks arising in the field of artificial intelligence (AI). Computing device 900, in turn, includes sufficient processing power and the necessary support architecture for the demands of ADAS or AI in general. For example, processing device 902 may include a multi-core architecture. As another example, computing device 900 may include one or more coprocessors in addition to or as part of processing device 902. In some implementations, at least one hardware accelerator may be coupled to system bus 906. For example, a graphics processing unit may be used. In some implementations, computing device 900 may implement neural network-specific hardware to handle one or more ADAS tasks.
[0091] As used throughout this specification, the terms "substantially" and "about" are used to describe and take into account small variations, such as those due to processing variations. For example, they can refer to less than or equal to ±5%, such as less than or equal to ±2%, such as less than or equal to ±1%, such as less than or equal to ±0.5%, such as less than or equal to ±0.2%, such as less than or equal to ±0.1%, such as less than or equal to ±0.05%. Also, as used herein, indefinite articles such as "a" or "an" mean "at least one."
[0092] It should be understood that all combinations of the above concepts, and additional concepts discussed in more detail below, (provided that such concepts are not mutually inconsistent) are contemplated as being part of the inventive subject matter disclosed herein. In particular, all combinations of claimed subject matter appearing at the end of this disclosure are contemplated as being part of the inventive subject matter disclosed herein.
[0093] Although several implementations have been described, it will nevertheless be understood that various modifications may be made without departing from the spirit and scope of the specification.
[0094] Additionally, the logic flows depicted in the figures do not require the particular order shown, or sequential order, to achieve desirable results. Additionally, other processes may be provided or processes may be eliminated from the described flows, and other components may be added to or removed from the described systems. Accordingly, other implementations are within the scope of the following claims.
[0095] While certain features of the described implementations have been shown and described herein, many modifications, substitutions, changes, and equivalents will now occur to those skilled in the art. It should therefore be understood that the appended claims are intended to cover all such modifications and variations that fall within the scope of these implementations. They have been presented by way of example only, and not limitation, and it should be understood that various changes in form and detail may be made. Except for mutually exclusive combinations, any portion of the apparatus and / or methods described herein may be combined in any combination. The implementations described herein may include various combinations and / or subcombinations of the functions, components, and / or features of the different implementations described.
Claims
1. Advanced Driver Assistance Systems (ADAS) that generate commands for aspects of vehicle motion; an actuator for controlling said aspect of said vehicle motion, said actuator connected to said ADAS; and a bias estimation circuit that estimates a bias between the command for an aspect of the vehicle motion and an actual aspect of the vehicle motion, the bias estimation circuit estimating the bias using an operator that predicts a next time step of a non-linear function of a vehicle state, wherein the command for an aspect of the vehicle motion is corrected using the bias estimated by the bias estimation circuit to provide a corrected command for the aspect of the vehicle motion for use by the actuator; A vehicle equipped with:
2. The vehicle of claim 1 , wherein the operator is a Koopman operator applied to the non-linear function of vehicle state.
3. 3. The vehicle of claim 1, wherein the bias estimation circuit introduces a bias term into the non-linear function of vehicle state.
4. 4. The vehicle of claim 3, wherein introducing the bias term comprises subtracting the bias term multiplied by a coefficient from the command for the aspect of vehicle motion.
5. 3. The vehicle of claim 1, wherein the bias estimation circuit performs a recursive solution of a non-linear least squares equation involving a cost function.
6. The vehicle of claim 5 , wherein the recursive solution involves applying a forgetting factor.
7. The vehicle of claim 6 , wherein the forgetting factor corresponds to a number of previous data points used in estimating the bias.
8. The vehicle of claim 6 , wherein the forgetting factor is a forgetting matrix configured to select different forgetting factors for different variables.
9. 3. The vehicle according to claim 1, wherein correcting the command for the aspect of the vehicle motion comprises subtracting the bias estimated by the bias estimation circuit from the command for the aspect of the vehicle motion.
10. 3. The vehicle according to claim 1, wherein the aspect of vehicle motion includes steering of the vehicle.
11. The vehicle of claim 10 , wherein the bias estimation circuit uses at least a yaw rate of the vehicle and a speed of the vehicle in estimating the bias.
12. 12. The vehicle of claim 11, wherein the bias estimation circuit further uses a sensed steering angle in estimating the bias.
13. 12. The vehicle of claim 11, wherein the bias estimation circuitry further uses the corrected command for the aspect of vehicle motion without sensed steering angle in estimating the bias.
14. 14. The vehicle of claim 13, wherein the bias estimation circuitry begins using the corrected command for the aspect of vehicle motion after first using the sensed steering angle in estimating the bias.
15. 15. The vehicle of claim 14, wherein the bias estimation circuitry initiates use of the corrected command for the aspect of vehicle motion based on the absence or unreliability of a steering angle sensor of the vehicle.
16. The vehicle of claim 11 , wherein the bias estimation circuitry further uses bank angle in estimating the bias.
17. 12. The vehicle of claim 11, wherein the bias estimation circuit further uses wheel slip angle in estimating the bias.
18. 12. The vehicle of claim 11, wherein the bias estimation circuitry further uses a lateral velocity of the vehicle in estimating the bias.
19. The vehicle of claim 1 or 2, wherein the aspect of the vehicle movement includes determining the position of the vehicle.
20. 3. The vehicle of claim 1, wherein the bias estimation circuit applies a recursive least squares method.
21. 21. The vehicle of claim 20, wherein the gain of the command for the aspect of vehicle motion is known to the bias estimation circuitry prior to estimating the bias.
22. generating vehicle dynamics aspects commands for said vehicle using an advanced driver assistance system (ADAS) of said vehicle; estimating a bias between the command and actual vehicle motion aspects, the bias being estimated using an operator that predicts a next time step of a non-linear function of the vehicle state; correcting the command for the aspect of vehicle motion using the estimated bias to generate a corrected command for the aspect of vehicle motion; and providing the corrected command for the aspect of the vehicle motion to an actuator for controlling the aspect of the vehicle motion, the actuator being connected to the ADAS.
1. A computer-implemented method comprising:
23. 23. The computer-implemented method of claim 22, wherein estimating the bias comprises performing a recursive solution of a nonlinear least-squares equation involving a cost function, wherein the recursive solution involves applying a forgetting matrix configured to select different forgetting factors for different variables.