Calibration Adjustment For Automatic Steering Systems
20220363280 · 2022-11-17
Inventors
Cpc classification
B62D15/021
PERFORMING OPERATIONS; TRANSPORTING
B60W2420/40
PERFORMING OPERATIONS; TRANSPORTING
B60W50/06
PERFORMING OPERATIONS; TRANSPORTING
International classification
B60W50/06
PERFORMING OPERATIONS; TRANSPORTING
Abstract
An automatic steering system for an agricultural vehicle includes an assisted steering device and a controller or estimator operatively coupled to the assisted steering device and configured to adjust a calibration range. Adjusting the calibration range includes generating an estimated curvature for the vehicle based on a pose of the agricultural vehicle; generating an estimated encoder position of the encoder based on the estimated curvature; determining a current encoder position of the encoder; and adjusting the calibrated encoder range based on the estimated encoder position and the current encoder position.
Claims
1. An automatic steering system for an agricultural vehicle, comprising: an assisted steering device configured to mount to a steering wheel of an agricultural vehicle, the assisted steering device comprising a motor and an encoder comprising a calibration range; and a controller or an estimator operatively coupled to the assisted steering device and configured to adjust the calibration range, the adjusting comprising: generating an estimated curvature for the vehicle based on a pose of the agricultural vehicle; generating an estimated encoder position of the encoder based on the estimated curvature; determining a current encoder position of the encoder; and adjusting the calibrated encoder range based on the estimated encoder position and the current encoder position.
2. The automatic steering system of claim 1, wherein the adjusting further comprises generating the pose of the agricultural vehicle based on at least one of geolocation data and IMU data.
3. The automatic steering system of claim 1, wherein generating the estimated encoder position comprises using a curvature-to-encoder transformation for the encoder.
4. The automatic steering system of claim 1, wherein the calibration range comprises a calibration range reference, and wherein the adjusting of the calibration range further comprises comparing the estimated encoder position and the current encoder position, generating an estimated range reference based on the calibration reference and the comparison of the estimated and current encoder positions, and adjusting the calibration range based on the estimated range reference and the calibration range reference.
5. The automatic steering system of claim 4, wherein the calibration range reference comprises a maximum of the calibration range and the estimated range reference comprises a maximum of the estimated calibration range.
6. The automatic steering system of claim 4, wherein the adjusting of the calibration range further comprises filtering a plurality of values of the estimated range reference to generate a filtered estimated range reference, and adjusting the calibration range based on the calibration range reference and the filtered estimated range reference.
7. The automatic steering system of claim 4, wherein adjusting the calibration range comprises shifting the calibration range toward the estimated calibration range.
8. The automatic steering system of claim 7, wherein shifting the calibration range comprises shifting the calibration range in a plurality of steps.
9. The automatic steering system of claim 8, wherein each of the plurality of steps comprises a shift of the calibration range toward the estimated calibration range by about 25% or less of the calibration range.
10. An automatic steering system for a vehicle, comprising: an assisted steering device configured to mount to a steering wheel of a vehicle, the assisted steering device comprising a motor and an encoder comprising a calibrated encoder range comprising a calibrated range reference; and a controller configured to adjust the calibrated encoder range, the adjusting comprising: generating an estimated curvature for the vehicle based on sensor data; generating an estimated encoder position based on the estimated curvature; determining a current encoder position; generating an estimated range reference based on the calibrated range reference and a comparison of the estimated encoder position and the current encoder position; filtering a plurality of values of the estimated range reference to generate a filtered estimated range reference; determining a difference between the calibrated range reference and the filtered estimated range reference; and adjusting the calibrated encoder range based on the difference.
11. The automatic steering system of claim 10, wherein the sensor data comprises at least one of geolocation data and IMU data.
12. The automatic steering system of claim 10, wherein the sensor data is derived from one or more of GPS, accelerometers, gyroscopes, camera systems, radar and LIDAR.
13. The automatic steering system of claim 10, wherein the calibrated range reference comprises a maximum of the calibrated encoder range and the estimated range reference comprises a maximum of the estimated encoder range.
14. The automatic steering system of claim 10, wherein adjusting the calibrated encoder range comprises shifting the calibrated encoder range toward the estimated encoder range.
15. The automatic steering system of claim 14, wherein shifting the calibrated encoder range comprises shifting the calibrated encoder range in a plurality of steps over a period of time.
16. The automatic steering system of claim 15, wherein each of the plurality of steps comprises a shift of the calibrated encoder range toward the estimated encoder range by about 25% or less of the calibrated encoder range.
17. A method for adjusting the calibration of an automatic steering system of an agricultural vehicle, the method comprising: generating an estimated curvature of an agricultural vehicle based on sensor data, the agricultural vehicle comprising an automatic steering system comprising a steering sensor comprising a calibration range comprising a calibration range reference; generating, with a controller or an estimator, an estimated steering position of the agricultural vehicle based on the estimated curvature; determining a current steering position of the agricultural vehicle; comparing, with the controller or the estimator, the estimated steering position and the current steering position; generating, with the controller or the estimator, an estimated range reference based on the calibration range reference and the comparison of the estimated and current steering positions; filtering, with the controller or the estimator, a plurality of values of the estimated range reference to generate a filtered estimated range reference; and adjusting the calibration range based on the calibration range reference and the filtered estimated range reference.
18. The method of claim 17, wherein the sensor data comprises at least one of geolocation data and IMU data.
19. The method of claim 17, wherein the calibration range reference comprises a maximum of the calibration range and the estimated range reference comprises a maximum of the estimated range.
20. The method of claim 17, wherein adjusting the calibration range comprises shifting the calibration range toward the estimated range in a plurality of steps.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0027]
[0028]
[0029]
[0030]
[0031]
[0032]
[0033]
[0034]
DETAILED DESCRIPTION
[0035] The various embodiments disclosed and contemplated herein relate to the calibration of automatic steering systems for agricultural vehicles. More specifically, various implementations of the disclosed embodiments provide devices, systems and methods for adjusting or correcting the steering system's calibration. Adjustments to the steering calibration can improve the correlation between the calibrated vehicle curvature and the vehicle's true curvature, thus improving the steering performance of the vehicle.
[0036] According to one aspect of the disclosure, various implementations of an automatic steering system are configured to generate and use an estimate of the actual (i.e., true) vehicle curvature to identify and adjust for errors in the system's steering calibration. For example, in some cases the automatic steering system computes an estimated curvature of the vehicle using the vehicle's heading rate and velocity. In some implementations the steering system generates the estimated curvature using an estimate of the vehicle heading rate and velocity, such as an estimate based on geolocation, acceleration, and orientation data and the like. The steering system then determines any difference between the estimated curvature and a calibrated vehicle curvature indicated by, for example, the vehicle's steering position or steering angle. The difference between the estimated vehicle curvature and the calibrated vehicle curvature is then used by the system to adjust the steering calibration.
[0037] Using an estimate of the actual vehicle curvature to adjust the steering calibration as disclosed herein can in some cases provide various benefits when compared with existing calibration adjustment techniques. As one example, implementations of the disclosed technology can result in quick and accurate estimates of the true vehicle curvature without the need for a highly accurate, yet costly, external steering sensor. In addition, various implementations enable a quicker calibration initialization because, for example, the correlation error can be adjusted for over time and thus the initial calibration estimate can be less precise than might otherwise be needed.
[0038] As used herein, an agricultural vehicle's true curvature may also be referred to herein as the “true vehicle curvature” or the “actual vehicle curvature.” The term “calibrated vehicle curvature” is used herein to refer to the vehicle curvature currently indicated, measured, reported, or otherwise represented by the agricultural vehicle's steering system. In some cases the calibrated vehicle curvature may also be referred to herein as the “current vehicle curvature” or the “reported vehicle curvature.”
[0039] According to various implementations, the calibrated vehicle curvature may be characterized as a steering angle or steering position. In various implementations an automatic steering system determines the calibrated vehicle curvature from one or more steering feedback signals generated by one or more steering sensors. As an example, in some cases the calibrated vehicle curvature is determined based on the measured or reported position of the vehicle's steering wheel. As another example, in some cases the calibrated vehicle curvature is determined based on the vehicle's wheel angle, as sensed or measured and reported by a wheel angle sensor or another steering sensor.
[0040] Implementations of the disclosed technology may use additional examples of a steering feedback signal. In some cases a steering encoder or another sensor that is part of an assisted steering system may generate a steering feedback signal indicating, for example, the current or measured steering position. In some cases one or more feedback signals are received from a steering sensor through a Controller Area Network (CAN) bus or another vehicle network. For example, a vehicle steering sensor may generate and transmit a feedback signal to the CAN bus that includes a steering wheel or vehicle wheel position and/or turning rate. In some cases an automated steering system may receive one or more feedback signals from a wheel angle sensor that provides a wheel angle position or rate. In some cases a factory installed or aftermarket wheel angle sensor generates a steering feedback signal that can be used by an automatic steering system to control, for example, an integrated valve steering mechanism. As another example, in some cases a vehicle's steering wheel may be equipped with one or more rotational sensors that generate feedback signals based on the wheel's rotational position and/or rate of turning. Other sources for feedback about the currently calibrated steering angle or position are also possible.
[0041] According to another aspect, in various implementations the steering system corrects errors in the steering calibration by adjusting a calibration range of the steering system, such as the calibration range of a steering position sensor (e.g., a steering wheel encoder, wheel angle sensor, etc.). As an example, in various implementations the steering system determines an estimated reference value for the steering sensor calibration range based on a reference value of the current calibration range and the difference between the estimated vehicle curvature and the calibrated vehicle curvature. The system then shifts the calibrated sensor range to reduce any difference between the estimated reference value and the calibration range reference value. In various implementations the estimated reference value and the current calibrated range reference value are corresponding maximums, minimums, or some other value of the respective estimated sensor range and current, calibrated sensor range. To reduce the effect of signal noise, in some cases the system filters (e.g., with a moving average) multiple calculations of the estimated range reference (e.g., maximum) over a period of time.
[0042] While certain implementations discussed herein relate to a calibration range reference value that is a maximum, it is readily appreciated that in further versions any defined calibration range value, such as a sensor calibration range minimum, center, or any other defined reference point within the range can be used. That is, in certain implementations, the calibration range maximum can be substituted with any defined reference point as a defined calibration range value, as would be appreciated by those of skill in the art.
[0043] In various implementations, the steering position sensor may be one of a variety of sensors for measuring and determining the current vehicle steering position or angle, also referred to herein as the calibrated vehicle curvature. As an example, in some implementations the steering sensor is a steering wheel encoder that indicates the position of the agricultural vehicle's steering wheel.
[0044] Another part of the disclosure describes how the automatic steering system in various implementations compares the vehicle's estimated curvature and calibrated curvature by comparing corresponding steering positions. In some cases, for example, the calibrated vehicle curvature is approximated by determining (e.g., measuring) the current steering position. Further, the steering system in such cases uses a curvature-to-steering position transformation, such as a standard linear interpolation, to generate an estimated steering position based on the estimated vehicle curvature. Once both steering positions are available, the steering system determines any differences between the measured steering position (i.e., according to the current calibration) and the estimated steering position.
[0045] The agricultural vehicle's current steering position may be determined in a number of ways. According to various implementations, the automatic steering system compares corresponding steering positions by comparing corresponding steering wheel encoder positions. In some cases, for example, the calibrated vehicle curvature is approximated by determining (e.g., measuring) the current position of the steering encoder. Further, the steering system in such cases uses a curvature-to-encoder transformation, such as a standard linear interpolation, to generate an estimated encoder position based on the estimated vehicle curvature. Once both encoder positions are available, the steering system determines any differences between the measured encoder position (i.e., according to the current calibration) and the estimated position.
[0046] According to another aspect of the disclosure, in various implementations the automatic steering system shifts the range of calibration over a period of time so that the calibration range reference value (e.g., maximum) is closer to, or the same as, the estimated/calculated reference value (e.g., maximum). For example, in some cases the system increases the calibration range reference value toward the calculated calibration reference value in a series of incremental steps over a period of time. The difference between calibrated and true calibration range thus decreases with each incremental increase, providing a burning down or reduction of the calibration error instead of a one-time correction. In some cases, the relatively gradual adjustment enables a quicker initialization since the initial estimate can be less precise.
[0047] In various implementations the calibration range reflects the calibration range of a steering wheel encoder, though other steering sensors (e.g., a wheel angle sensor) may also be used. In such an example, the automatic steering system shifts the range of the encoder over a period of time so that the calibrated encoder reference value (e.g., maximum) is closer to, or the same as, the estimated/calculated reference value (e.g., maximum). For example, in some cases the system increases the encoder range reference value toward the calculated encoder reference value in a series of incremental steps over a period of time. The difference between calibrated and true encoder range thus decreases with each incremental increase, providing a burning down or reduction of the calibration error instead of a one-time correction.
[0048] According to various implementations, an automatic steering system includes a state observer and/or state estimator configured to determine (e.g., estimate) the actual vehicle curvature based on one or more sensor inputs and/or steering information. As will be appreciated, in control theory a state observer or state estimator (also called an observer or an estimator) is a system that provides an estimate of the internal state of another second system from measurements of the inputs and outputs of that other system. According to various implementations, an estimator is configured to estimate the actual vehicle curvature of an agricultural vehicle based on various inputs including, for example, geolocation data and/or vehicle movement data.
[0049] In various cases an estimator may be implemented with one or more processing and computing components such as, for example, a CPU or processor, data storage, and computer-readable instructions that configure the processor or CPU to carry out the operations of the estimator. In some cases the estimator may be incorporated into a steering controller or another component of the automatic steering system. In various cases the steering controller and the estimator may be implemented as a hybridized system such as a Linear-quadratic-Gaussian (LQG) control. In some cases the estimator may be implemented with shared computing components that also provide the functionality of, e.g., the steering controller, a display unit, or another component. In various cases the estimator may be implemented by separate and/or remote computing components, such as network and/or cloud-based computer components.
[0050] For simplicity and ease of reference herein, when the steering system is described as performing one or more process steps and/or providing one or more features of the automatic steering system, it should be assumed that one or more of a steering controller, estimator and/or another computing component of the system performs the steps and/or provides the relevant features unless otherwise indicated. Accordingly, in some cases relevant operations of the system such as, for example, estimating vehicle curvature, steering positions, and the like described as being determined by the steering system may be determined by the controller, estimator, or another computing component of the automatic steering system or another system.
[0051] Turning to the drawings,
[0052] According to various implementations, the controller 4 includes one or more processing and computing components for implementing various technologies disclosed herein and elsewhere. As shown in
[0053] The controller 4 is communicatively coupled with the display 2. In some cases the display 2 includes its own processing and computing component(s), such as a CPU or other processor 20, which runs an operating system 22 that provides a graphical user interface (GUI) 24. According to various implementations, the estimator 11 may instead be provided as part of the display 2. One example of a display unit is the display unit sold under the name InCommand® by Ag Leader Technology of Ames, Iowa. It is appreciated that the display 2 may include a touchscreen and/or be equipped with interface components such as a keyboard, mouse, and/or other device for interacting with the system 1.
[0054] It should be appreciated that the controller 4 and/or estimator 11 may be located in one of many places according to various implementations. For example, in some cases the controller and/or estimator is a discrete physical component mounted separately from other components. In some cases the controller and/or estimator is mounted within and/or is integral to another component, such as the display unit 2, the steering mechanism 10, or another component. In the depicted example the display 2 is provided separately from the controller 4. It should be appreciated that the various components of the display 2, the controller 4, and the estimator 11 are in operational communication with one another as needed via wired or wireless connections and are configured to perform processes and execute commands to implement operations and features described herein.
[0055] According to various implementations, the controller 4 and/or estimator 11 is configured to determine a desired trajectory and the controller 4 is configured to control the steering device 6 to steer the vehicle along the desired trajectory. As an example, in some cases the estimator and/or controller is configured to determine a vehicle curvature that will guide the vehicle from its current position to a new position along the desired trajectory. In various implementations the controller and/or estimator determines the vehicle curvature as a desired steering angle or position of the vehicle wheel(s) and/or steering wheel. The controller and/or estimator is configured to then determine a turning rate (e.g., in terms of speed and direction) to bring the steering wheel or vehicle wheel(s) from its current position to the desired position within a particular amount of time. It is appreciated that in various implementations, one or more controller, estimator, and/or other control circuitry is provided.
[0056] In various implementations the system 1 also includes a communications component (not shown) configured for sending and receiving data to one or more cloud-based locations for processing and storage. As examples, data may be transmitted to and from a remote server, database, and/or other cloud computing components readily understood in the art. Such connections by the communications component can be made wirelessly via understood internet and/or cellular technologies such as Bluetooth, Wi-Fi, LTE, 3G, 4G, or 5G connections and the like. It is understood that in certain implementations, the communications component and/or cloud components comprise encryption or other data privacy components such as hardware, software, and/or firmware security aspects. In various implementations, the operator or enterprise manager or other third parties are able to receive notifications such as adjustment prompts and confirmation screens on their mobile devices, and in certain implementations can review the plotted guidance paths and make adjustments via their mobile phones.
[0057] As depicted in the example of
[0058] According to various implementations, the steering device 6 may be a hydraulic valve that is part of an integrated hydraulic steering system. As another example, in some cases the steering device 6 may be an OEM or factory-installed steering control system (e.g., including a hydraulic, electric, electrohydraulic, or another type of steering device) that is controllable through a Controller Area Network (CAN) bus or another vehicle network. In such examples, the steering sensor 8 may be provided as part of an integrated steering system or an OEM steering control system or may be provided separately as a dealer or aftermarket installed sensor.
[0059] According to various implementations, the steering sensor 8 may be one of various types of sensors suitable for generating one or more feedback signals conveying steering information including, for example, information representing a current steering position or steering angle. As noted above, in some cases the steering sensor 8 is provided by a motor encoder. In various cases the steering sensor 8 is a factory installed or aftermarket wheel angle sensor that generates a steering feedback signal. As another example, in some cases a vehicle's steering wheel may be equipped with one or more rotational sensors that generate feedback signals based on the wheel's rotational position and/or rate of turning. In some cases the steering sensor 8 may include a strain gauge that changes resistance as it bends, Measuring the resistance enables determination of the amount of bend in the sensor, which can enable measuring an angle of a wheel relative to a vehicle when attached to a wheel linkage. Such a measurement could also provide the position of the wheel (also called the vehicle's wheel angle). In various other cases, the steering sensor 8 may be a pressure sensor. For example, the sensor may measure the changing pressure in a valve attached between the wheel and the vehicle. Turning the wheel changes the wheel angle, which in turn changes the valve pressure, which can be sensed and sent to the controller as a feedback signal. Of course other types of steering sensors are possible and implementations of the disclosed technology are not limited to any one type of steering sensor.
[0060]
[0061]
[0062]
[0063] Turning to
[0064]
[0065] A first part of the method 300 involves determining whether any difference exists between the current, calibrated vehicle curvature and an estimate of the actual curvature of the vehicle. As shown in
[0066] In various implementations a steering system generates an estimate of the actual vehicle curvature using sensor data that includes positional data and/or data from onboard sensors. In the example in
[0067] According to various implementations, vehicle heading and vehicle velocity are two parts of the vehicle pose output by the filter analysis. The first derivative of the heading, known as the heading rate or yaw rate, is then used with the vehicle velocity, v, to determine the estimated curvature 308 of the vehicle according to the following relationship:
in which {dot over (ψ)} represents the heading rate (also referred to as heading rate-of-change or yaw rate), ν represents the vehicle's velocity, and κ.sub.est represents the estimated curvature 308.
[0068] Before comparing the estimated curvature 308 to the calibrated curvature currently indicated by the steering sensor, the steering system performs a transformation 310 to generate an estimated steering position 312. The estimated steering position 312 represents, for example, a physical orientation of the steering system and/or expected response from a steering sensor that would result in the estimated curvature 308. As shown in
SteerPos.sub.est=ComputeSteer(κ.sub.est)
in which ComputeSteer(κ.sub.est) represents the curvature-to-steering position transformation 310.
[0069] The curvature-to-steering position transformation 310 can be accomplished using a number of suitable linear and/or nonlinear conversions. According to various implementations, the transformation 310 is determined according to the following linear transformation:
in which SteerPos.sub.max and SteerPos.sub.min are the maximum and minimum steering positions (e.g., corresponding to maximum/minimum values of the steering sensor), respectively, and κ.sub.max and κ.sub.min are the maximum and minimum curvatures, respectively, achievable by the steering system. In some cases the estimated steering position 312 is determined as a number of sensor counts or range subdivisions.
[0070] Returning to
[0071] Once both the estimated steering position 312 and the current steering position 314 are determined, the steering system (e.g., the controller and/or estimator) then compares 317 the positions to determine a difference 318 in steering positions:
diff=SteerPos.sub.cur−SteerPos.sub.est
The difference 318 between the steering positions may be determined as a number of steering units, which may vary depending upon the type of steering sensor being used. As just one example, in various cases involving a steering wheel encoder, the difference is measured as a number of encoder counts. As previously noted, the difference 318 between the current and estimated steering positions also represents the difference between the estimated vehicle curvature 308 and the calibrated vehicle curvature.
[0072] According to various implementations, the steering system corrects the steering calibration by adjusting the steering system's calibration range. This may include, for example, shifting the range of a steering sensor to more closely correspond to an estimated calibration range. The method 300, shown in the example of
CalRange_Ref.sub.est=CalRange_Ref.sub.cal+diff
[0073] According to some implementations, the estimated range reference 332 is processed by a filter 334 such as a Kalman filter to provide a filtered estimated range reference 336, CalRange_Ref.sub.filtered. In some cases, filtering in this manner can reduce the effects of noise on the computed value. Certain implementations can make use of a rolling average. As an example, in some cases the steering system computes an average of multiple values of the estimated range reference value to improve the accuracy of the estimate:
wherein a and b represent the first and last values collected over a period of time. While one example of a filter is discussed, it should be appreciated that implementations that filter the estimated encoder range value are not limited to any specific filter. Other types of data conditioning or filtering that may be used include, but are not limited to, a rolling buffer, a first, second, or n.sup.th order filter, a Kalman filter (e.g., such as the above example), and a linear-least squares filter.
[0074] After generating and filtering the estimated range reference, the method 300 includes adjusting or shifting 338 the calibration range to more closely match the estimated calibration range. Prior to the adjustment, the method includes determining the difference between the estimated range reference and the calibrated range reference. In various implementations the difference is represented as a number of sensor values or counts corresponding to the range of possible steering positions.
[0075] Assuming the calibrated range reference is different from the estimated range reference, the steering system adjusts 338 the calibrated range reference to be closer to, or the same as, the estimated range reference. In various implementations aligning the calibration range reference with the estimated range reference provides a simple and straightforward way to align the full range of calibration values. As an example, for a range of [−1500, CalRange_Ref.sub.cal, 1500], shifting the calibration range reference from CalRange_Ref.sub.cal to CalRange_Ref.sub.cal+1500 also shifts the range minimum, range maximum, and all points in between, resulting in a shifted range of [0, CalRange_Ref.sub.cal+1500, 3000].
[0076] In various cases the system dynamically shifts the entire calibration range up or down so that the calibration range reference value is closer to the estimated range reference value. In some cases the system shifts the calibration range so that the calibration range reference value is the same as the estimated range reference value.
[0077] In some implementations, the steering system shifts the calibration range toward the estimated range in a single, one-time adjustment. In various implementations, though, the system shifts the calibration range in a series of incremental steps over a period of time. For example, in some cases each incremental shift is limited to about 25% or less of the total calibration range per step. In some cases each incremental shift is limited to about 1% (e.g., 0.5-1.5%) of the total calibration range per step. Other values are also possible.
[0078] The shifts may occur at any suitable frequency. In some cases the incremental shifts occur at an operating frequency of the automatic steering system. In some cases the operating frequency is based on the period of communication between a steering driver or device and the steering system controller. As an example, in various implementations the calibration shifts occur at a rate of 50 Hz. In some cases the step size and/or update frequency is designed to limit degradation of an operator's experience while using the system. In some cases successive iterations of the method 300 at 50 Hz may correct a misalignment of the calibration range in 5 seconds or less depending upon the degree of initial misalignment. In some cases the correction may occur within 3 seconds or less at 50 Hz.
[0079] In various implementations, such short correction times can also provide a feasible way to repeatedly initialize a steering system's calibration. Such capability can be useful when a steering system's calibration needs to be initialized after every system power cycle. As an example, some implementations of an automatic steering system may not retain calibration information or instantly and automatically determine such information upon power up. In such cases, each power up of the system reports back an initial steering position value of zero.
[0080] One type of initial calibration procedure that can be used in some cases is a manual procedure that takes time and is error-prone. Such a procedure involves the operator moving the steering-wheel from full right to full left (e.g., from end-stop to end-stop or between points in which the wheels stop turning). Monitoring steering position values during the movement provides a size and maximum value of the calibration range. However, if the operator did not perfectly center the steering wheel before beginning the initial calibration, the true wheel angle will not match the calibrated expectation. In such a case, for example, the steering wheel might be turned 10° to the right but the steering sensor reports a steering position of 0, which normally corresponds to the center of the expected range.
[0081] In this type of situation, implementations of the disclosed calibration method could initialize the calibration by estimating the vehicle curvature based on, for example, GPS and inertial movement measurements and then adjusting the calibration range to match the estimated curvature. While this initial calibration may in some cases be off by several degrees, successive iterations can quickly reduce the error within an acceptable time frame. For example, in some cases an initialization of this type can occur as quickly (e.g., within about 3 seconds of movement) as an automatic steering system takes to generate an initial vehicle pose.
[0082] Accordingly, this type of calibration initialization can be especially helpful when the automatic steering system needs to be frequently reinitialized. This can happen, for example, when the steering system lacks a steering sensor or other means that provides such calibration information upon power-up (e.g., a voltage-based wheel angle sensor, a pressure sensor, an absolute encoder, etc.). In various implementations an automatic steering system according to the disclosed technology may lack this type of initial calibration information, and thus quickly calibrating the steering system through successive iterations as disclosed above can be a useful feature. It should be appreciated that various implementations of an automatic steering system and/or methods of steering may utilize such a capability. For example, in some cases an automatic steering system includes or otherwise uses an absolute encoder or other sensor that inherently provides initial calibration information, thus removing the need to reinitialize after every power cycle, as would be appreciated.
[0083] As noted elsewhere herein, in various implementations the calibration range reference value and the estimated range reference value can be any suitable corresponding values in the calibration range and estimated range, respectively. In some cases the calibrated range reference and estimated range reference may each refer to a minimum, a center, a maximum, or any other desirable point within the respective ranges.
[0084]
[0085] According to various implementations, the controller (not shown in
[0086] According to various implementations, the assisted steering device 104 includes a motor drive unit (MDU) with a drive motor configured to rotate the steering wheel in response to commands from the controller. The MDU also includes a motor encoder that senses rotation of the motor using, for example, a Hall-effect sensor. The MDU generates and sends a feedback signal to the controller based on the sensor output. In various implementations the feedback signal includes the current encoder position and the current encoder rate. According to such implementations, the current encoder position corresponds to the current position of the motor and steering wheel and the current encoder rate corresponds to the speed and direction of the motor/steering wheel. In various implementations the controller also sends steering commands to the MDU in the form of desired encoder positions and/or rates. For example, in various cases the controller sends a desired encoder rate to the MDU to bring the encoder and the steering wheel from their current positions to new desired positions corresponding to a desired vehicle curvature.
[0087] In some cases, the current encoder rate is determined as a number of encoder counts per second. According to various implementations, the encoder has approximately 850 counts for one revolution of the steering wheel. In some such cases, the controller directs the MDU to adjust steering at up to a maximum rate of +/−1.5 revolutions (i.e., 1275 counts) per second, with the sign indicating whether to turn clockwise or counterclockwise.
[0088] In some cases, the MDU may include additional features, characteristics, and capabilities known in the art. In various implementations the assisted steering device 104 is similar to or the same as one or more of the steering devices disclosed in U.S. application Ser. No. 17/323,649, entitled “Assisted Steering Apparatus and Associated Systems and Methods,” and filed May 18, 2021, the entire content of which is hereby incorporated herein by reference. Those skilled in the art will further understand various methods and techniques for determining a desired trajectory and corrective steering angle. In some cases the controller may implement one or more techniques as taught in U.S. Publ. No. 2021/000341, entitled “Apparatus, Systems and Methods for Automatic Steering Guidance and Visualization of Guidance Paths,” and filed Jul. 6, 2020, the entire content of which is hereby incorporated herein by reference.
[0089]
[0090] As shown in
[0091] According to various implementations, the controller 202 includes one or more processing and computing components for implementing various technologies disclosed herein and elsewhere. As shown in
[0092] It should be appreciated that the various controller, estimator, and other system components are in operational communication with one another via wired or wireless connections and are configured to perform processes and execute commands to implement operations and features described herein. Further, it should be appreciated that while depicted separately in
[0093] In various implementations, the automatic steering system 200 is also operationally integrated with a GNSS or GPS unit 220, such as a GPS 7500, such that the system 200 is configured to input positional data for use in defining boundaries, locating the vehicle, plotting guidance, and the like, as will be readily appreciated. As an example, in some cases the controller 202 (e.g., the controller itself and/or the estimator 211 and/or another component of the controller) is configured to determine (e.g., estimate) the current position and/or trajectory of the vehicle (e.g., a vehicle pose) using data from the GNSS/GPS unit 220 and/or the IMU 208.
[0094] As will be appreciated, the IMU 208 includes one or more sensors (e.g., a combination of accelerometers and gyroscopes) that measure and report sensor data that includes vehicle movement data such as specific forces, angular rates, and/or orientations of the vehicle. In some cases the automatic steering system may also or instead use on-vehicle camera systems such as stereo cameras, radar, LIDAR, or RGB cameras to estimate the true vehicle curvature (e.g., vehicle pose) through one or more methods such as, for example, optic flow or some other localization or simultaneous localization and mapping (SLAM) methodology.
[0095] In various implementations the system 200 also includes a communications component 230 configured for sending and receiving data to one or more cloud-based locations 240 for processing and storage. As examples, data may be transmitted to and from a remote server 242, database 244, and/or other cloud computing components readily understood in the art. Such connections by the communications component 230 can be made wirelessly via understood internet and/or cellular technologies such as Bluetooth, Wi-Fi, LTE, 3G, 4G, or 5G connections and the like. It is understood that in certain implementations, the communications component 230 and/or cloud 240 components comprise encryption or other data privacy components such as hardware, software, and/or firmware security aspects. In various implementations, the operator or enterprise manager or other third parties are able to receive notifications such as adjustment prompts and confirmation screens on their mobile devices, and in certain implementations can review the plotted guidance paths and make adjustments via their mobile phones.
[0096]
[0097] A first part of the method 400 involves determining whether any difference exists between the current, calibrated vehicle curvature and an estimate of the actual curvature of the vehicle. As shown in
[0098] In various implementations a steering system generates an estimate of the actual vehicle curvature using sensor data that includes positional data and/or data from onboard sensors. In the example in
[0099] According to various implementations, vehicle heading and vehicle velocity are two parts of the vehicle pose output by the filter analysis. The first derivative of the heading, known as the heading rate or yaw rate, is then used with the vehicle velocity, v, to determine the estimated curvature 408 of the vehicle according to the following relationship:
in which {dot over (ψ)} represents the heading rate (also referred to as heading rate-of-change or yaw rate), ν represents the vehicle's velocity, and κ.sub.est represents the estimated curvature 408.
[0100] Before comparing the estimated curvature 408 to the calibrated curvature currently indicated by the encoder, the steering system performs a transformation 410 to generate an estimated encoder position 412. The estimated encoder position 412 represents a physical orientation of the steering encoder that would result in the estimated curvature 408. As shown in
EncoderPos.sub.est=ComputeEncoder(κ.sub.est)
in which ComputeEncoder(κ.sub.est) represents the curvature-to-encoder transformation 410.
[0101] The curvature-to-encoder transformation 410 can be accomplished using a number of suitable linear and/or nonlinear conversions. According to various implementations, the transformation 410 is determined according to the following linear transformation:
in which EncoderPos.sub.max and EncoderPos.sub.min are the maximum and minimum positions of the encoder, respectively, and κ.sub.max and κ.sub.min are the maximum and minimum curvatures, respectively, achievable by the steering system. In some cases the estimated encoder position 412 is determined as a number of encoder counts.
[0102] Returning to
[0103] Once both the estimated encoder position 412 and the current encoder position 414 are determined, the steering system then compares 417 the positions to determine a difference 418 in encoder positions:
diff=EncoderPos.sub.cur−EncoderPos.sub.est
In some cases the difference 418 may be determined as a number of encoder counts. As previously noted, the difference 418 between the current and estimated encoder positions also represents the difference between the estimated vehicle curvature 408 and the current vehicle curvature.
[0104] According to various implementations, the steering system corrects the steering calibration by adjusting the range of the steering encoder. In some cases, the adjustment includes shifting the range of encoder values. The method 400, shown in the example of
Enc_Ref.sub.est=Enc_Ref.sub.cal+diff
[0105] According to some implementations, the estimated range reference 432 is processed by a filter 434 such as a Kalman filter to provide a filtered estimated range reference 436, Enc_Ref.sub.filtered In some cases, filtering in this manner can reduce the effects of noise on the computed value. Certain implementations can make use of a rolling average. As an example, in some cases the steering system computes an average of multiple values of the estimated range reference value to improve the accuracy of the estimate:
wherein a and b represent the first and last values collected over a period of time. While one example of a filter is discussed, it should be appreciated that implementations that filter the estimated encoder range value are not limited to any specific filter. Other types of data conditioning or filtering that may be used include, but are not limited to, a rolling buffer, a first, second, or n.sup.th order filter, a Kalman filter (e.g., such as the above example), and a linear-least squares filter.
[0106] After generating and filtering the estimated range reference, the method 400 includes adjusting or shifting 438 the calibrated encoder range to more closely match the estimated encoder range. Prior to the adjustment, the method includes determining the difference between the estimated range reference and the calibrated range reference. In various implementations the difference is represented as a number of encoder counts and/or encoder position values.
[0107] Assuming the calibrated range reference is different from the estimated range reference, the steering system adjusts 438 the calibrated range reference to be closer to, or the same as, the estimated range reference. In various implementations aligning the calibration range reference with the estimated range reference provides a simple and straightforward way to align the full range of encoder values. As an example, for a range of [−1500, Enc_Ref.sub.cal,1500], shifting the calibration range reference from Enc_Ref.sub.cal to Enc_Ref.sub.cal+1500 also shifts the range minimum, range maximum, and all points in between, resulting in a shifted range of [0, Enc_Ref.sub.cal+1500, 3000].
[0108] In various cases the system dynamically shifts the entire calibrated encoder range up or down so that the calibrated range reference is closer to the estimated range reference. In some cases the system shifts the calibrated encoder range so that the calibrated range reference is the same as the estimated range reference.
[0109] In some implementations, the steering system shifts the calibrated encoder range toward the estimated encoder range in a single, one-time adjustment. In various implementations, though, the system shifts the calibrated encoder range in a series of incremental steps over a period of time. For example, in some cases each incremental shift is limited to about 25% or less of the total encoder range. In some cases each incremental shift is limited to about 1% (e.g., 0.5-1.5%) of the total encoder range per step. Other values are also possible.
[0110] The shifts may occur at any suitable frequency. In some cases the incremental shifts occur at an operating frequency based on the period of communication between the motor drive unit and the steering system controller. As an example, in various implementations the calibration shifts occur at a rate of 50 Hz. In some cases the step size and/or update frequency is designed to limit degradation of an operator's experience while using the system. In some cases successive iterations of the method 400 at 50 Hz may correct a misalignment of the encoder range in 5 seconds or less depending upon the degree of initial misalignment. In some cases the correction may occur within 3 seconds or less at 50 Hz.
[0111] Such short correction times can also provide a feasible way to initialize a steering system without an absolute encoder. In some cases an initial calibration procedure involves the operator moving the steering-wheel from full right to full left (e.g., from end-stop to end-stop or between points in which the wheels stop turning). Monitoring encoder values during the movement provides a size and maximum value of the encoder range. In such a case, where there is no absolute encoder, each power up of the system reports back an encoder value of zero. Alternate implementations utilize an absolute encoder, as would be appreciated.
[0112] If the operator did not perfectly center the steering wheel before beginning the initial calibration, the true wheel angle will not match the calibrated expectation. In such a case, for example, the steering wheel might be turned 10° to the right but the motor drive unit reports an encoder value of 0, which normally corresponds to the center of the expected range. (In some cases a range of [−2000, 2000] encoder counts is used to correspond to [−0.2 0.2] values of curvature.)
[0113] In this type of situation, implementations of the disclosed calibration method could initialize the calibration by estimating the vehicle curvature based on, for example, GPS and inertial movement measurements and then adjusting the encoder range to match the estimated curvature. While this initial calibration may in some cases be off by several degrees, successive iterations can quickly reduce the error within an acceptable time frame. For example, in some cases an initialization of this type can occur as quickly (e.g., within about 3 seconds of movement) as an automatic steering system takes to generate an initial vehicle pose.
[0114] As noted elsewhere herein, in various implementations the calibrated range reference value (also referred to herein as the “encoder range reference value”) and the estimated range reference value can be any suitable corresponding values in the calibrated encoder range and estimated encoder range, respectively. In some cases the calibrated range reference and estimated range reference may each refer to a minimum, a center, a maximum, or any other desirable point within the respectively ranges.
[0115] Turning now to
[0116] A first part of the method 500 involves determining whether any difference exists between the current, calibrated vehicle curvature and an estimate of the actual curvature of the vehicle. As shown in
[0117] In various implementations a steering system generates an estimate of the actual vehicle curvature using positional data and data from onboard sensors. In the example in
[0118] According to various implementations, vehicle heading and vehicle velocity are two parts of the vehicle pose output by the filter analysis. The first derivative of the heading, known as the heading rate or yaw rate, is then used with the vehicle velocity, v, to determine the estimated curvature 508 of the vehicle according to the following relationship:
in which {dot over (ψ)} represents the heading rate (also referred to as heading rate-of-change or yaw rate), ν represents the vehicle's velocity, and κ.sub.est represents the estimated curvature 508.
[0119] Before comparing the estimated curvature 508 to the calibrated curvature currently indicated by the encoder, the steering system performs a transformation 510 to generate an estimated encoder position 512. The estimated encoder position 512 represents a physical orientation of the steering encoder that would result in the estimated curvature 508. As shown in
EncoderPos.sub.est=ComputeEncoder(κ.sub.est)
in which ComputeEncoder(κ.sub.est) represents the curvature-to-encoder transformation 510.
[0120] The curvature-to-encoder transformation 510 can be accomplished using a number of suitable linear and/or nonlinear conversions. According to various implementations, the transformation 510 is determined according to the following linear transformation:
[0121] in which EncoderPos.sub.max and EncoderPos.sub.min are the maximum and minimum positions of the encoder, respectively, and κ.sub.max and κ.sub.min are the maximum and minimum curvatures, respectively, achievable by the steering system. In some cases the estimated encoder position 512 is determined as a number of encoder counts.
[0122] Returning to
[0123] Once both the estimated encoder position 512 and the current encoder position 514 are determined, the steering system then compares 517 the positions to determine a difference 518 in encoder positions:
diff=EncoderPos.sub.cur−EncoderPos.sub.est
In some cases the difference 518 may be determined as a number of encoder counts. As previously noted, the difference 516 between the current and estimated encoder positions also represents the difference between the estimated vehicle curvature 508 and the current vehicle curvature.
[0124] According to various implementations, the steering system corrects the steering calibration by adjusting the range of the steering encoder. In some cases, the adjustment includes shifting the range of encoder values. The method 500, shown in the example of
Enc_Max.sub.est=Enc_Max.sub.cal+diff
[0125] According to some implementations, the estimated range maximum 532 is processed by a filter 534 such as a Kalman filter to provide a filtered estimated range maximum 536, Enc_Max.sub.filtered. In some cases, filtering in this manner can reduce the effects of noise on the computed value. Certain implementations can make use of a rolling average. As an example, in some cases the steering system computes an average of multiple values of the estimated range maximum to improve the accuracy of the estimate:
wherein a and b represent the first and last values collected over a period of time. While one example of a filter is discussed, it should be appreciated that implementations that filter the estimated encoder range maximum are not limited to any specific filter. Other types of data conditioning or filtering that may be used include, but are not limited to, a rolling buffer, a first, second, or n.sup.th order filter, a Kalman filter (e.g., such as the above example), and a linear-least squares filter.
[0126] After generating and filtering the estimated range maximum, the method 500 includes adjusting or shifting 538 the calibrated encoder range to more closely match the estimated encoder range. Prior to the adjustment, the method includes determining the difference between the estimated range maximum and the calibrated range maximum. In various implementations the difference is represented as a number of encoder counts and/or encoder position values.
[0127] Assuming the calibrated range maximum is different from the estimated range maximum, the steering system adjusts 538 the calibrated range maximum to be closer to, or the same as, the estimated range maximum. In various implementations aligning the calibration range maximum with the estimated range maximum provides a simple and straightforward way to align the full range of encoder values. As an example, for a range of [−1500, 1500], shifting the maximum 1500 to 3000 also shifts the range minimum and all points in between, resulting in a shifted range of [0, 3000].
[0128] In various cases the system dynamically shifts the entire calibrated encoder range up or down so that the calibrated range maximum is closer to the estimated range maximum. In some cases the system shifts the calibrated encoder range so that the calibrated range maximum is the same as the estimated range maximum.
[0129] In some implementations, the steering system shifts the calibrated encoder range toward the estimated encoder range in a single, one-time adjustment. In various implementations, though, the system shifts the calibrated encoder range in a series of incremental steps over a period of time. For example, in some cases each incremental shift is limited to about 25% or less of the total encoder range per step. In some cases each incremental shift is limited to 1%, or about 1% (e.g., 0.5-1.5%), of the total encoder range per step. Other values are also possible.
[0130] The shifts may occur at any suitable frequency. In some cases the incremental shifts occur at an operating frequency based on the period of communication between the motor drive unit and the steering system controller. As an example, in various implementations the calibration shifts occur at a rate of 50 Hz. In some cases the step size and/or update frequency is designed to limit degradation of an operator's experience while using the system. In some cases successive iterations of the method 400 at 50 Hz may correct a misalignment of the encoder range in 5 seconds or less depending upon the degree of initial misalignment. In some cases the correction may occur within 3 seconds or less at 50 Hz.
[0131] Such short correction times can also provide a feasible way to initialize a steering system without an absolute encoder. In some cases an initial calibration procedure involves the operator moving the steering-wheel from full right to full left (e.g., from end-stop to end-stop or between points in which the wheels stop turning). Monitoring encoder values during the movement provides a size and maximum value of the encoder range. In such a case, where there is no absolute encoder, each power up of the system reports back an encoder value of zero. Alternate implementations utilize an absolute encoder, as would be appreciated.
[0132] If the operator did not perfectly center the steering wheel before beginning the initial calibration, the true wheel angle will not match the calibrated expectation. In such a case, for example, the steering wheel might be turned 10° to the right but the motor drive unit reports an encoder value of 0, which normally corresponds to the center of the expected range. (In some cases a range of [−2000, 2000] encoder counts is used to correspond to [−0.2 0.2] values of curvature.)
[0133] In this type of situation, implementations of the disclosed calibration method could initialize the calibration by estimating the vehicle curvature based on GPS and inertial movement measurements and then adjusting the encoder range to match the estimated curvature. While this initial calibration may be off by several degrees, successive iterations can quickly reduce the error within an acceptable time frame. For example, in some cases an initialization of this type can occur as quickly (e.g., within about 3 seconds of movement) as an automatic steering system takes to generate an initial vehicle pose.
[0134] Although the disclosure has been described with reference to preferred embodiments, persons skilled in the art will recognize that changes may be made in form and detail without departing from the spirit and scope of the disclosed apparatus, systems and methods.