Patent Description:
In some instances, modern mobile agricultural machines have dramatically increased the efficiency of harvesting a variety of grain crops, including wheat, corn, oats, rye, barley, among others. Such machines may be guided in part by various cameras and sensors mounted to the machines, such as one or more global navigation satellite systems (GNSS) receivers which use wireless signals transmitted from medium Earth orbit (MEO) satellites to generate position estimates of the machines. The emergence of self-driving harvesting combines along with other row-guided farm vehicles has reduced the amount of row overlap, which has translated into reduced fuel costs and less wear to the vehicles. <CIT> discloses an agricultural tractor and sprayer combination wherein a first sensor is mounted on the sprayer boom and a second sensor is mounted to either a part fixedly connected to the tractor or on the tractor itself, the sensors serving to determine a deflection of the sprayer boom.

Despite the improvements to modern mobile machinery, new systems, methods, and techniques are still needed.

The following description relates broadly to techniques for reducing oscillations that occur when a mobile machine carrying an elongated implement is moving. Specifically, the present description relates to a technique in which sensors mounted to the agricultural sprayer capture sensor data indicative of the oscillations, the sensor data is analyzed to detect the oscillations, and a damping signal is generated and combined with an existing control signal to reduce the oscillations. While the present description is described primarily in reference to an agricultural machine with a sprayer boom, the description is applicable to a wide variety of agricultural machines, construction machines, mobile machinery, or heavy equipment.

The accompanying drawings, which are included to provide a further understanding of the disclosure, are incorporated in and constitute a part of this specification, illustrate embodiments of the disclosure and together with the detailed description serve to explain the principles of the disclosure. No attempt is made to show structural details of the disclosure in more detail than may be necessary for a fundamental understanding of the disclosure and various ways in which it may be practiced.

In the appended figures, similar components and/or features may have the same numerical reference label. Further, various components of the same type may be distinguished by following the reference label with a letter or by following the reference label with a dash followed by a second numerical reference label that distinguishes among the similar components and/or features. If only the first numerical reference label is used in the specification, the description is applicable to any one of the similar components and/or features having the same first numerical reference label, irrespective of the suffix.

Agricultural sprayers are mobile machinery that deploy long sprayer booms to deliver liquids at an agricultural site. The delivered liquids may contain fertilizer, herbicide, insecticide, plant food, water, among other possibilities, as well as various combinations thereof. Typically, the sprayer boom is attached to the tractor portion of the vehicle at a center portion along the boom, extending outward in either direction above the ground at a constant or near constant height. In some instances, the sprayer boom can be as long as <NUM> meters. To achieve such lengths, the sprayer boom may have high stiffness in the vertical direction and low stiffness in the horizontal direction (e.g., the fore-aft direction). The vertical stiffness may be achieved using a truss framework made from materials that attempt to make the sprayer boom strong yet lightweight.

During operation of the agricultural sprayer, the sprayer boom can experience structural oscillations that can lead to fatigue or extreme load failure. These oscillations can be exacerbated by high winds, vibrations caused by the vehicle, variations in vehicle speed, variations in terrain, among other possibilities. One approach to deal with the oscillations has been to design the sprayer boom with heavier and more expensive materials, such as steel. However, these materials both increase the cost of the sprayer boom and increase the amount of energy to move a vehicle having a greater mass.

Embodiments of the present invention relate to systems, methods, and other techniques for damping the oscillations caused by sprayer booms of agricultural sprayers using modified speed and/or steering commands. While the vehicle is moving, one or more sensors mounted to the agricultural sprayer may capture sensor data indicative of the structural oscillations. The sensor data may be analyzed by a control unit to detect (<NUM>) whether the oscillations include symmetric oscillations and/or asymmetric oscillations and (<NUM>) a corresponding frequency and phase (or multiple frequencies and phases) for the detected oscillations. Damping signals are then generated based on the detected oscillations and are combined with the existing speed signal and/or the existing steering signal. By modifying the speed and/or steering of the vehicle using the damping signals, the oscillations can be significantly reduced, resulting in improved performance of the agricultural sprayer.

Various benefits are achieved by way of the present invention. For example, combining fore-aft and yaw damping can allow damping of higher order modes and any combination of symmetric and asymmetric modes. With the right timing and amplitude of the generated damping signals, the signals can dampen any boom oscillation. The damping sinusoidal commands added on top of the existing guidance commands are beneficial in that they are small, have a mean value of zero, and are unnoticeable to the machine operator. This allows existing control schemes to be unaffected while the oscillation detection and damping module is running. Other benefits of the present invention will be readily apparent to those skilled in the art.

In the following description, various examples will be described. For purposes of explanation, specific configurations and details are set forth in order to provide a thorough understanding of the examples. However, it will also be apparent to one skilled in the art that the examples may be practiced without the specific details. Furthermore, well-known features may be omitted or simplified in order not to obscure the embodiments being described.

<FIG> illustrates an example of one or more techniques of the present disclosure being implemented within an agricultural environment. Specifically, <FIG> shows a vehicle <NUM> being deployed at a site <NUM> and having the control thereof at least partially implemented by a control unit <NUM> which, in various embodiments, may be communicatively coupled to an inertial sensor <NUM> mounted to vehicle <NUM> through a wired and/or wireless connection. While site <NUM> is generally described herein as corresponding to an agricultural site such as a field, the present disclosure is applicable to a wide variety of construction, maintenance, or agricultural projects in which heavy equipment or mobile machinery are used. Similarly, while vehicle <NUM> is generally described herein as corresponding to an agricultural sprayer, the various techniques described herein are applicable to a wide variety of agricultural machines, construction machines, or heavy equipment such as graders, excavators, bulldozers, backhoes, pavers (e.g., concrete, asphalt, slipform, vibratory, etc.), compactors, scrapers, loaders, material handlers, combine harvesters, and the like.

In some embodiments, vehicle <NUM> may include a tractor with wheels, axles, and a gasoline-, diesel-, electric-, or steam-powered engine for providing power and traction to vehicle <NUM> to drive along a desired path, often at a constant speed. Vehicle <NUM> may be a tracked vehicle that incorporates a continuous track of treads or track plates that are driven by the vehicle's wheels. An operator of vehicle <NUM> may provide inputs to control unit <NUM> using various input devices such as levers, switches, buttons, pedals, steering wheels, and touch screens, which can cause various actuators to move vehicle <NUM>.

In some instances, vehicle <NUM> may include an implement <NUM>, which may have an elongated body that extends horizontally from both sides of vehicle <NUM> at a constant or near constant height. For example, at an agricultural site, implement <NUM> may be the boom sprayer of vehicle <NUM> that delivers liquids over a wide area as vehicle <NUM> moves along a row. As another example, implement <NUM> may be the header of a combine harvester. In other examples, at a construction site, implement <NUM> may be the blade of a bulldozer, the bucket of an excavator, or the drum of a compactor. As another example, at a road construction site, implement <NUM> may be the screed of an asphalt paver.

It should be appreciated that, in some embodiments, implement <NUM> and vehicle <NUM> may be considered to be separate bodies that have a semi-rigid coupling between them. The coupling is semi-rigid in that the bodies can move relative to each other but they can also be fixed at a given orientation. Some examples of semi-rigid couplings used on mobile machinery include c-frames, angle c-frames, push arms, L-shaped push arms, and the like.

In some embodiments, control unit <NUM> may receive sensor data from one or more sensors attached to vehicle <NUM>. The sensor data may include accelerometer data <NUM> captured by one or more accelerometers and/or gyro data <NUM> captured by one or more gyroscopes. The sensor data may be provided to an oscillation detection module <NUM> that analyzes the sensor data and extracts oscillation information, including a type of oscillation (symmetric and/or asymmetric) and a frequency and phase associated with the oscillation. The extracted oscillation information may be provided to a damping module <NUM> that generates a speed damping signal <NUM> and/or a steering damping signal <NUM> based on this oscillation information. These damping signals may be used to modify the existing speed and steering signals to reduce the oscillations and improve the performance of vehicle <NUM> while operating within site <NUM>.

<FIG> illustrate the different types of oscillations that may occur for a vehicle <NUM> when equipped with an implement <NUM>. In some instances, implement <NUM> may be considered to be attached to a tractor (or cab) portion of vehicle <NUM> at a center portion of implement <NUM> such that one half of implement <NUM> (e.g., the left half) is disposed on one side of the tractor portion of vehicle <NUM> and the other half of implement <NUM> (e.g., the right half) is disposed on the other side of the tractor portion of vehicle <NUM>.

<FIG> shows an example of symmetric oscillation, which occurs when both sides of implement <NUM> synchronously oscillate or oscillate in phase with each other. For example, during symmetric oscillation, the left side of implement <NUM> may reach a maximum deflection in the fore direction at the same time that the right side of implement <NUM> reaches a maximum deflection in the fore direction. Similarly, the left side of implement <NUM> may reach a maximum deflection in the aft direction at the same time that the right side of implement <NUM> reaches a maximum deflection in the aft direction. Damping of symmetric oscillation can be accomplished with speed commands that cause accelerations or decelerations in the fore-aft direction that counteract the symmetric oscillations.

<FIG> shows an example of asymmetric oscillation, which occurs when the sides of implement <NUM> oscillate with opposite phases. For example, during asymmetric oscillation, the left side of implement <NUM> may reach a maximum deflection in the fore direction at the same time that the right side of implement <NUM> reaches a maximum deflection in the aft direction. Similarly, the left side of implement <NUM> may reach a maximum deflection in the aft direction at the same time that the right side of implement <NUM> reaches a maximum deflection in the fore direction. Damping of asymmetric oscillation can be accomplished with steering commands that cause yaw movements that counteract the asymmetric oscillations.

<FIG> illustrates an example machine control system <NUM>, in accordance with some embodiments of the present disclosure. Machine control system <NUM> may include various input devices <NUM>, sensors <NUM>, actuators <NUM>, and computing devices for allowing one or more operators of the vehicle to complete a work-related task. The components of machine control system <NUM> may be mounted to or integrated with the components of the vehicle such that the vehicle may be considered to include machine control system <NUM>. The components of machine control system <NUM> may be communicatively coupled to each other via one or more wired and/or wireless connections.

Machine control system <NUM> may include a control unit <NUM> that receives data from the various sensors and inputs and generates commands that are sent to the various actuators and output devices. In the illustrated example, control unit <NUM> receives input data <NUM> from input device(s) <NUM> and sensor data <NUM> from sensor(s) <NUM>, and generates control signal(s) <NUM>, which are sent to actuator(s) <NUM>. Control unit <NUM> may include one or more processors and an associated memory. In some embodiments, control unit <NUM> may be communicatively coupled to an external computing system <NUM> located external to machine control system <NUM> and the vehicle. External computing system <NUM> may send instructions to control unit <NUM> of the details of a work-related task. External computing system <NUM> may also send alerts and other general information to control unit <NUM>, such as traffic conditions, weather conditions, the locations and status of material transfer vehicles, and the like.

In some embodiments, input device(s) <NUM> may receive input data <NUM> that indicates a desired movement of the vehicle, a desired movement of the implement, a desired height of the implement, an activation of one or more mechanisms on the implement (e.g., sprayers, cutters, etc.), and the like. Input device(s) <NUM> may include a keyboard, a touchscreen, a touchpad, a switch, a lever, a button, a steering wheel, an acceleration pedal, a brake pedal, and the like. In some embodiments, input device(s) <NUM> may be mounted to any physical part of the vehicle, such as within the cab of the vehicle.

In some embodiments, sensor(s) <NUM> may include one or more position sensor(s) <NUM> and/or inertial sensor(s) <NUM>. Position sensor(s) <NUM> may be a combination of GNSS receivers, which determine position using wireless signals received from satellites, and total stations, which determine position by combining distance, vertical angle, and horizontal angle measurements. Inertial sensor(s) <NUM> may include one or more sensors that detect movement of the components of the vehicle to which they are rigidly attached. For example, inertial sensor(s) <NUM> may include one or more gyroscopes for detecting angular acceleration, angular rate and/or angular position, one or more accelerometers for detecting linear acceleration, linear velocity, and/or linear position, one or more inertial measurement units (IMUs) which may each include one or more accelerometers, one or more gyroscopes, and/or one or more magnetometers for detecting the above-listed types of data, among other possibilities. In some instances, sensor data <NUM> includes accelerometer data <NUM>, which is data captured by an accelerometer of inertial sensor(s) <NUM>, and/or gyro data <NUM>, which is data captured by a gyroscope of inertial sensor(s) <NUM>.

In some embodiments, inertial sensor(s) <NUM> may directly detect angular rate and may integrate to obtain angular position, or alternatively an inertial sensor may directly measure angular position and may determine a change in angular position (e.g., compute the derivative) to obtain angular rate. In many instances, inertial sensor(s) <NUM> can be used to determine the yaw angle (rotation angle with respect to a vertical axis), the pitch angle (rotation angle with respect to a transverse axis), and/or the roll angle (rotation angle with respect to a longitudinal axis) of the vehicle.

Control unit <NUM> may include various controllers and modules to assist in the generation of control signal(s) <NUM>. Each of the controllers and modules may include dedicated hardware and/or may be performed using the main processor and/or memory of control unit <NUM>. In some embodiments, control unit <NUM> includes an oscillation detection module <NUM> that extracts oscillation information <NUM> from accelerometer data <NUM> and gyro data <NUM> as well as a damping module <NUM> that generates a speed damping signal <NUM> and a steering damping signal <NUM> based on the oscillation information. Each of speed damping signal <NUM> and steering damping signal <NUM> may be used to generate control signal(s) <NUM> and/or may be used to modify existing control signal(s) <NUM>, such as an existing speed signal and an existing steering signal.

Control signal(s) <NUM> may include direct current (DC) or alternating current (AC) voltage signals, DC or AC current signals, and/or information-containing signals. In some instances, control signal(s) <NUM> include a pneumatic or hydraulic pressure. Upon receiving control signal(s) <NUM>, actuator(s) <NUM> may be caused to move in a specified manner, such as by extending, retracting, rotating, lifting, or lowering by a specified amount. Actuator(s) <NUM> may use various forms of power to provide movement to the components of the vehicle. For example, actuator(s) <NUM> may be electric, hydraulic, pneumatic, mechanical, or thermal, among other possibilities.

<FIG> illustrates an example oscillation detection module <NUM> and an example damping module <NUM>, in accordance with some embodiments of the present disclosure. <FIG> shows example actions <NUM>, <NUM>, <NUM>, and <NUM> that may be performed by modules <NUM> and <NUM> to produce a speed damping signal <NUM> and/or a steering damping signal <NUM> based on sensor data <NUM>, which may include accelerometer data <NUM> and/or gyro data <NUM>. Each of modules <NUM> and <NUM> may include dedicated hardware to perform actions <NUM>, <NUM>, <NUM>, and <NUM> or, in some embodiments, the actions may be performed using a general-purpose processor.

At action <NUM>, filtering and frequency analysis is performed by oscillation detection module <NUM> on sensor data <NUM>, which may include accelerometer data <NUM> and gyro data <NUM>. In some instances, the resulting data is referred to as oscillation information <NUM>, which may include symmetric oscillation information <NUM> and asymmetric oscillation information <NUM>. For example, performing action <NUM> may result in symmetric oscillation information <NUM> being extracted from accelerometer data <NUM> and asymmetric oscillation information <NUM> being extracted from gyro data <NUM>.

Symmetric oscillation information <NUM> may include an extracted frequency and an extracted phase corresponding to the symmetric oscillations of the vehicle. In some examples, to obtain the extracted frequency and phase, oscillation detection module <NUM> may analyze an acceleration signal in the fore-aft direction of the vehicle contained in accelerometer data <NUM>. The acceleration signal may include positive and negative acceleration values expressed as a function of time. The acceleration signal may be filtered using a moving band-pass filter to find the frequency of the symmetric oscillations.

In some examples, the band-pass filter may have a constant bandwidth with moving lower and upper cutoff frequencies. The band-pass filter may begin at low frequencies (for the lower and upper cutoff frequencies) and may move upward toward high frequencies, stopping at a number of intermediate frequencies. At each of the intermediate frequencies, the power or amplitude in the acceleration signal may be calculated to determine whether it exceeds a threshold or whether a maximum power or amplitude is found. The intermediate frequency at which the power or amplitude exceeds the threshold (or is a maximum power or amplitude) is determined to be the extracted frequency. The corresponding phase is determined to be the extracted phase.

Alternatively or additionally, the same steps may be performed with the band-pass filter beginning at high frequencies (for the lower and upper cutoff frequencies) and moving downward toward low frequencies. In some examples, oscillation detection module <NUM> may use a previously determined extracted frequency for subsequent extractions of symmetric oscillation information <NUM>. For example, a particular implement of a particular vehicle can be expected to repeatedly symmetrically oscillate at the same frequency. Oscillation detection module <NUM> may thus look to the same extracted frequency to find the extracted phase and the power or amplitude of the acceleration signal.

Similar to that described above in reference to symmetric oscillation information <NUM>, asymmetric oscillation information <NUM> may include an extracted frequency and an extracted phase corresponding to the asymmetric oscillations of the vehicle. In some examples, to obtain the extracted frequency and phase, oscillation detection module <NUM> may analyze a yaw signal or gyro signal contained in gyro data <NUM>. The yaw signal may include positive and negative yaw values expressed as a function of time. The yaw signal may be filtered using a moving band-pass filter to find the frequency of the asymmetric oscillations.

In some examples, the band-pass filter may have a constant bandwidth with moving lower and upper cutoff frequencies. The band-pass filter may begin at low frequencies (for the lower and upper cutoff frequencies) and may move upward toward high frequencies, stopping at a number of intermediate frequencies. At each of the intermediate frequencies, the power or amplitude in the yaw signal may be calculated to determine whether it exceeds a threshold or whether a maximum power or amplitude is found. The intermediate frequency at which the power or amplitude exceeds the threshold (or is a maximum power or amplitude) is determined to be the extracted frequency. The corresponding phase is determined to be the extracted phase.

Alternatively or additionally, the same steps may be performed with the band-pass filter beginning at high frequencies (for the lower and upper cutoff frequencies) and moving downward toward low frequencies. In some examples, oscillation detection module <NUM> may use a previously determined extracted frequency for subsequent extractions of asymmetric oscillation information <NUM>. For example, a particular implement of a particular vehicle can be expected to repeatedly asymmetrically oscillate at a same frequency. Oscillation detection module <NUM> may thus look to the same extracted frequency to find the extracted phase and the power or amplitude of the yaw signal.

Alternatively or additionally, filtering and frequency analysis may be performed on sensor data <NUM> that includes data other than accelerometer data <NUM> and gyro data <NUM>. In some examples, sensor data <NUM> may include data that is directly indicative of the motion or bending of the implement. For example, on boom sensing may be employed by using a strain gauge that is integrated into the implement that captures data that is indicative of the strain on the implement. Such data may be analyzed to extract symmetric and/or asymmetric oscillation information that includes frequencies and phases, as described above. In some examples, sensor data <NUM> may include data captured by sensors that are mounted to the vehicle and are directed toward the implement. Such sensors may employ a number of technologies such as LiDAR, radar, and various image capture technologies (e.g., cameras). The captured data may be analyzed to extract oscillation information as described above.

In some implementations, asymmetric oscillation information <NUM> may be extracted from accelerometer data <NUM> instead of gyro data <NUM> or in addition to gyro data <NUM>. For example, multiple accelerometers may be attached to the implement and may capture data that is indicative of the asymmetric oscillations of the implement. In one example, two accelerometers may be attached at opposite ends of the implement and their captured acceleration signals may be analyzed to determine a yaw signal that includes positive and negative yaw values expressed as a function of time. Other possibilities are contemplated.

At action <NUM>, a phase lag or lead for each of the extracted frequencies is determined by damping module <NUM>. The determined phase lag or lead for symmetric oscillation information <NUM> is used for generating speed damping signal <NUM> and the determined phase lag or lead for asymmetric oscillation information <NUM> is used for generating steering damping signal <NUM>. For example, while the extracted frequency and phase corresponding to symmetric oscillations can be accurately identified by oscillation detection module <NUM>, the control signal that is generated to dampen such oscillations may incorporate a phase lag or lead based on the response time of the actuators of the vehicle as well as the physical characteristics of the vehicle. In some instances, damping module <NUM> may dynamically determine the phase lag or lead by varying its value until a maximum damping is obtained for each of the symmetric oscillations and asymmetric oscillations.

At action <NUM>, speed damping signal <NUM>-<NUM> and steering damping signal <NUM>-<NUM> are generated by damping module <NUM>. In some instances, each of the damping signals may be sinusoidal having a frequency equal to the extracted frequency and a phase based on the extracted phase and/or the determined phase lag or lead. The amplitude of each of the damping signals may be determined based on the amplitude or power of either the acceleration signal or the yaw signal (e.g., the amplitude or power after filtering the acceleration and yaw signals).

For example, the frequency of speed damping signal <NUM>-<NUM> may be equal to the extracted frequency contained in symmetric oscillation information <NUM> and the phase of speed damping signal <NUM>-<NUM> may be equal to the extracted phase contained in symmetric oscillation information <NUM> combined with (e.g., added to) the phase lag or lead determined at action <NUM> for reducing symmetric oscillations. Similarly, the frequency of steering damping signal <NUM>-<NUM> may be equal to the extracted frequency contained in asymmetric oscillation information <NUM> and the phase of steering damping signal <NUM>-<NUM> may be equal to the extracted phase contained in asymmetric oscillation information <NUM> combined with (e.g., added to) the phase lag or lead determined at action <NUM> for reducing asymmetric oscillations.

At action <NUM>, speed damping signal <NUM>-<NUM> and steering damping signal <NUM>-<NUM> are generated by damping module <NUM> by limiting the maximum amplitude of speed damping signal <NUM>-<NUM> and steering damping signal <NUM>-<NUM>, respectively. Limiting the maximum amplitude can prevent the system from overcorrecting and causing excessive movement of the actuators, which can damage the vehicle. In some instances, action <NUM> can be performed simultaneously or concurrently with action <NUM>.

<FIG> illustrates various plots showing an example of the described techniques being implemented to reduce asymmetric oscillations of an implement, in accordance with some embodiments of the present disclosure. In the upper plot, a yaw signal (or gyro signal) is shown as a function of time for a first scenario in which there are no oscillations and also for a second scenario in which there are asymmetric oscillations.

In the middle plot, extracted asymmetric oscillation information is shown in the form of an extracted signal having an extracted frequency and an extracted phase. In some embodiments, the extracted signal is obtained by applying a band-pass filter to the yaw signal with asymmetric oscillations, the band-pass filter having a lower cutoff frequency near and below the extracted frequency and an upper cutoff frequency near and above the extracted frequency. The fluctuations of the amplitude of the extracted signal (the envelope of the extracted signal) demonstrate how the system is able to reduce the asymmetric oscillations each time they arise.

In the lower plot, the steering signal is shown for the first scenario with no oscillations and the second scenario with asymmetric oscillations. When the asymmetric oscillations are present, the steering signal is modified using a steering damping signal, which is generated based on the extracted signal shown in the middle plot. The steering damping signal may be generated by time shifting the extracted signal by a phase lead or lag and by scaling the extracted signal with a multiplier.

<FIG> illustrates a method <NUM> of damping oscillations of an implement (e.g., implements <NUM>, <NUM>) of a vehicle (e.g., vehicles <NUM>, <NUM>) while the vehicle is moving, in accordance with some embodiments of the present disclosure. One or more steps of method <NUM> may be omitted during performance of method <NUM>, and steps of method <NUM> need not be performed in the order shown. One or more steps of method <NUM> may be performed by one or more processors, such as those included in a control unit (e.g., control unit <NUM>) of a machine control system (e.g., machine control system <NUM>). Method <NUM> may be implemented as a computer-readable medium or computer program product comprising instructions which, when the program is executed by one or more computers, cause the one or more computers to carry out the steps of method <NUM>.

At step <NUM>, sensor data (e.g., sensor data <NUM>, <NUM>) is captured using one or more sensors (e.g., sensors <NUM>) that are attached to the vehicle. The one or more sensors may include one or more inertial sensors (e.g., inertial sensors <NUM>, <NUM>). For example, the one or more sensors may include an accelerometer, a gyroscope, and/or an IMU. The sensor data may include accelerometer data (e.g., accelerometer data <NUM>, <NUM>, <NUM>) captured by the accelerometer and/or gyro data (e.g., gyro data <NUM>, <NUM>, <NUM>) captured by the gyroscope. The accelerometer data may include an acceleration signal that includes time-referenced acceleration values in the fore-aft direction of the vehicle. The gyro data may include a yaw signal that includes time-referenced yaw values with respect to a vertical axis of the vehicle. The one or more sensors may be attached to (e.g., mounted to) the implement or to another component of the vehicle, such as the tractor or cab of the vehicle. In one implementation, the accelerometer and the gyroscope may be included in an IMU that is mounted to the tractor or cab of the vehicle. In some implementations, the one or more sensors may be not be attached to the vehicle, and may instead be positioned at the site and directed toward the vehicle. For example, the one or more sensors may include a camera and/or a LiDAR sensor, among other possibilities.

At step <NUM>, the sensor data is analyzed to extract one or both of symmetric oscillation information (e.g., symmetric oscillation information <NUM>) or asymmetric oscillation information (e.g., asymmetric oscillation information <NUM>). Extracting the symmetric oscillation information may include extracting a frequency and a phase corresponding to symmetric oscillations of the vehicle. The symmetric oscillation information may be extracted from the accelerometer data, which may include an acceleration signal. The frequency and the phase corresponding to symmetric oscillations may be extracted from the acceleration signal by filtering the acceleration signal with a band-pass filter. Extracting the asymmetric oscillation information may include extracting a frequency and a phase corresponding to asymmetric oscillations of the vehicle. The asymmetric oscillation information may be extracted from the gyro data, which may include a yaw signal. The frequency and the phase corresponding to asymmetric oscillations may be extracted from the yaw signal by filtering the yaw signal with a band-pass filter.

At step <NUM>, one or both of a speed damping signal (e.g., speed damping signals <NUM>, <NUM>, <NUM>) or a steering damping signal (e.g., steering damping signals <NUM>, <NUM>, <NUM>) are generated based on analyzing the sensor data. The speed damping signal may be generated based on and in response to extracting the symmetric oscillation information. The speed damping signal may be generated using the frequency and the phase corresponding to the symmetric oscillations. In some examples, the speed damping signal may be a sinusoid having a frequency equal to the frequency corresponding to the symmetric oscillations. The steering damping signal may be generated based on and in response to extracting the asymmetric oscillation information. The steering damping signal may be generated using the frequency and the phase corresponding to the asymmetric oscillations. In some examples, the steering damping signal may be a sinusoid having a frequency equal to the frequency corresponding to the asymmetric oscillations.

At step <NUM>, a movement of the vehicle is modified using one or both of the speed damping signal or the steering damping signal. The movement of the vehicle may be modified by modifying one or more control signals (e.g., control signals <NUM>) that are sent to one or more actuators (e.g., actuators <NUM>) of the vehicle. The one or more control signals may include a speed signal that controls the speed/velocity of the vehicle and/or a steering signal that controls the steering of the vehicle (e.g., rotational movement, left/right steering). The movement of the vehicle may be modified by combining the speed damping signal with an existing speed signal and/or by combining the steering damping signal with an existing steering signal. The speed damping signal can be combined with the existing speed signal by adding, subtracting, multiplying, or averaging the two signals, among other possibilities. The steering damping signal can be combined with the existing steering signal by adding, subtracting, multiplying, or averaging the two signals, among other possibilities.

<FIG> illustrates an example computer system <NUM> comprising various hardware elements, in accordance with some embodiments of the present disclosure. Computer system <NUM> may be incorporated into or integrated with devices described herein and/or may be configured to perform some or all of the steps of the methods provided by various embodiments. For example, in various embodiments, computer system <NUM> may be incorporated into control unit <NUM> and/or may be configured to perform method <NUM>. It should be noted that <FIG> is meant only to provide a generalized illustration of various components, any or all of which may be utilized as appropriate. <FIG>, therefore, broadly illustrates how individual system elements may be implemented in a relatively separated or relatively more integrated manner.

In the illustrated example, computer system <NUM> includes a communication medium <NUM>, one or more processor(s) <NUM>, one or more input device(s) <NUM>, one or more output device(s) <NUM>, a communications subsystem <NUM>, and one or more memory device(s) <NUM>. Computer system <NUM> may be implemented using various hardware implementations and embedded system technologies. For example, one or more elements of computer system <NUM> may be implemented as a field-programmable gate array (FPGA), such as those commercially available by XILINX®, INTEL®, or LATTICE SEMICONDUCTOR®, a system-on-a-chip (SoC), an application-specific integrated circuit (ASIC), an application-specific standard product (ASSP), a microcontroller, and/or a hybrid device, such as an SoC FPGA, among other possibilities.

The various hardware elements of computer system <NUM> may be coupled via communication medium <NUM>. While communication medium <NUM> is illustrated as a single connection for purposes of clarity, it should be understood that communication medium <NUM> may include various numbers and types of communication media for transferring data between hardware elements. For example, communication medium <NUM> may include one or more wires (e.g., conductive traces, paths, or leads on a printed circuit board (PCB) or integrated circuit (IC), microstrips, striplines, coaxial cables), one or more optical waveguides (e.g., optical fibers, strip waveguides), and/or one or more wireless connections or links (e.g., infrared wireless communication, radio communication, microwave wireless communication), among other possibilities.

In some embodiments, communication medium <NUM> may include one or more buses connecting pins of the hardware elements of computer system <NUM>. For example, communication medium <NUM> may include a bus connecting processor(s) <NUM> with main memory <NUM>, referred to as a system bus, and a bus connecting main memory <NUM> with input device(s) <NUM> or output device(s) <NUM>, referred to as an expansion bus. The system bus may consist of several elements, including an address bus, a data bus, and a control bus. The address bus may carry a memory address from processor(s) <NUM> to the address bus circuitry associated with main memory <NUM> in order for the data bus to access and carry the data contained at the memory address back to processor(s) <NUM>. The control bus may carry commands from processor(s) <NUM> and return status signals from main memory <NUM>. Each bus may include multiple wires for carrying multiple bits of information and each bus may support serial or parallel transmission of data.

Processor(s) <NUM> may include one or more central processing units (CPUs), graphics processing units (GPUs), neural network processors or accelerators, digital signal processors (DSPs), and/or the like. A CPU may take the form of a microprocessor, which is fabricated on a single IC chip of metal-oxide-semiconductor field-effect transistor (MOSFET) construction. Processor(s) <NUM> may include one or more multi-core processors, in which each core may read and execute program instructions simultaneously with the other cores.

Input device(s) <NUM> may include one or more of various user input devices such as a mouse, a keyboard, a microphone, as well as various sensor input devices, such as an image capture device, a pressure sensor (e.g., barometer, tactile sensor), a temperature sensor (e.g., thermometer, thermocouple, thermistor), a movement sensor (e.g., accelerometer, gyroscope, tilt sensor), a light sensor (e.g., photodiode, photodetector, charge-coupled device), and/or the like. Input device(s) <NUM> may also include devices for reading and/or receiving removable storage devices or other removable media. Such removable media may include optical discs (e.g., Blu-ray discs, DVDs, CDs), memory cards (e.g., CompactFlash card, Secure Digital (SD) card, Memory Stick), floppy disks, Universal Serial Bus (USB) flash drives, external hard disk drives (HDDs) or solid-state drives (SSDs), and/or the like.

Output device(s) <NUM> may include one or more of various devices that convert information into human-readable form, such as without limitation a display device, a speaker, a printer, and/or the like. Output device(s) <NUM> may also include devices for writing to removable storage devices or other removable media, such as those described in reference to input device(s) <NUM>. Output device(s) <NUM> may also include various actuators for causing physical movement of one or more components. Such actuators may be hydraulic, pneumatic, electric, and may be provided with control signals by computer system <NUM>.

Communications subsystem <NUM> may include hardware components for connecting computer system <NUM> to systems or devices that are located external computer system <NUM>, such as over a computer network. In various embodiments, communications subsystem <NUM> may include a wired communication device coupled to one or more input/output ports (e.g., a universal asynchronous receiver-transmitter (UART)), an optical communication device (e.g., an optical modem), an infrared communication device, a radio communication device (e.g., a wireless network interface controller, a BLUETOOTH® device, an IEEE <NUM> device, a Wi-Fi device, a Wi-Max device, a cellular device), among other possibilities.

Memory device(s) <NUM> may include the various data storage devices of computer system <NUM>. For example, memory device(s) <NUM> may include various types of computer memory with various response times and capacities, from faster response times and lower capacity memory, such as processor registers and caches (e.g., L0, L1, L2), to medium response time and medium capacity memory, such as random access memory, to lower response times and lower capacity memory, such as solid state drives and hard drive disks. While processor(s) <NUM> and memory device(s) <NUM> are illustrated as being separate elements, it should be understood that processor(s) <NUM> may include varying levels of on-processor memory, such as processor registers and caches that may be utilized by a single processor or shared between multiple processors.

Memory device(s) <NUM> may include main memory <NUM>, which may be directly accessible by processor(s) <NUM> via the memory bus of communication medium <NUM>. For example, processor(s) <NUM> may continuously read and execute instructions stored in main memory <NUM>. As such, various software elements may be loaded into main memory <NUM> to be read and executed by processor(s) <NUM> as illustrated in <FIG>. Typically, main memory <NUM> is volatile memory, which loses all data when power is turned off and accordingly needs power to preserve stored data. Main memory <NUM> may further include a small portion of non-volatile memory containing software (e.g., firmware, such as BIOS) that is used for reading other software stored in memory device(s) <NUM> into main memory <NUM>. In some embodiments, the volatile memory of main memory <NUM> is implemented as random-access memory (RAM), such as dynamic RAM (DRAM), and the non-volatile memory of main memory <NUM> is implemented as read-only memory (ROM), such as flash memory, erasable programmable read-only memory (EPROM), or electrically erasable programmable read-only memory (EEPROM).

Computer system <NUM> may include software elements, shown as being currently located within main memory <NUM>, which may include an operating system, device driver(s), firmware, compilers, and/or other code, such as one or more application programs, which may include computer programs provided by various embodiments of the present disclosure. Merely by way of example, one or more steps described with respect to any methods discussed above, might be implemented as instructions <NUM>, executable by computer system <NUM>. In one example, such instructions <NUM> may be received by computer system <NUM> using communications subsystem <NUM> (e.g., via a wireless or wired signal carrying instructions <NUM>), carried by communication medium <NUM> to memory device(s) <NUM>, stored within memory device(s) <NUM>, read into main memory <NUM>, and executed by processor(s) <NUM> to perform one or more steps of the described methods. In another example, instructions <NUM> may be received by computer system <NUM> using input device(s) <NUM> (e.g., via a reader for removable media), carried by communication medium <NUM> to memory device(s) <NUM>, stored within memory device(s) <NUM>, read into main memory <NUM>, and executed by processor(s) <NUM> to perform one or more steps of the described methods.

In some embodiments of the present disclosure, instructions <NUM> are stored on a computer-readable storage medium, or simply computer-readable medium. Such a computer-readable medium may be non-transitory, and may therefore be referred to as a non-transitory computer-readable medium. In some cases, the non-transitory computer-readable medium may be incorporated within computer system <NUM>. For example, the non-transitory computer-readable medium may be one of memory device(s) <NUM>, as shown in <FIG>, with instructions <NUM> being stored within memory device(s) <NUM>. In some cases, the non-transitory computer-readable medium may be separate from computer system <NUM>. In one example, the non-transitory computer-readable medium may a removable media provided to input device(s) <NUM>, such as those described in reference to input device(s) <NUM>, as shown in <FIG>, with instructions <NUM> being provided to input device(s) <NUM>. In another example, the non-transitory computer-readable medium may a component of a remote electronic device, such as a mobile phone, that may wirelessly transmit a data signal carrying instructions <NUM> to computer system <NUM> using communications subsystem <NUM>, as shown in <FIG>, with instructions <NUM> being provided to communications subsystem <NUM>.

Instructions <NUM> may take any suitable form to be read and/or executed by computer system <NUM>. For example, instructions <NUM> may be source code (written in a human-readable programming language such as Java, C, C++, C#, Python), object code, assembly language, machine code, microcode, executable code, and/or the like. In one example, instructions <NUM> are provided to computer system <NUM> in the form of source code, and a compiler is used to translate instructions <NUM> from source code to machine code, which may then be read into main memory <NUM> for execution by processor(s) <NUM>. As another example, instructions <NUM> are provided to computer system <NUM> in the form of an executable file with machine code that may immediately be read into main memory <NUM> for execution by processor(s) <NUM>. In various examples, instructions <NUM> may be provided to computer system <NUM> in encrypted or unencrypted form, compressed or uncompressed form, as an installation package or an initialization for a broader software deployment, among other possibilities.

In one aspect of the present disclosure, a system (e.g., computer system <NUM>) is provided to perform methods in accordance with various embodiments of the present disclosure. For example, some embodiments may include a system comprising one or more processors (e.g., processor(s) <NUM>) that are communicatively coupled to a non-transitory computer-readable medium (e.g., memory device(s) <NUM> or main memory <NUM>). The non-transitory computer-readable medium may have instructions (e.g., instructions <NUM>) stored therein that, when executed by the one or more processors, cause the one or more processors to perform the methods described in the various embodiments.

In another aspect of the present disclosure, a computer-program product that includes instructions (e.g., instructions <NUM>) is provided to perform methods in accordance with various embodiments of the present disclosure. The computer-program product may be tangibly embodied in a non-transitory computer-readable medium (e.g., memory device(s) <NUM> or main memory <NUM>). The instructions may be configured to cause one or more processors (e.g., processor(s) <NUM>) to perform the methods described in the various embodiments.

In another aspect of the present disclosure, a non-transitory computer-readable medium (e.g., memory device(s) <NUM> or main memory <NUM>) is provided. The non-transitory computer-readable medium may have instructions (e.g., instructions <NUM>) stored therein that, when executed by one or more processors (e.g., processor(s) <NUM>), cause the one or more processors to perform the methods described in the various embodiments.

Specific details are given in the description to provide a thorough understanding of exemplary configurations including implementations. However, configurations may be practiced without these specific details. For example, well-known circuits, processes, algorithms, structures, and techniques have been shown without unnecessary detail in order to avoid obscuring the configurations. This description provides example configurations only, and does not limit the scope, applicability, or configurations of the claims. Rather, the preceding description of the configurations will provide those skilled in the art with an enabling description for implementing described techniques.

Having described several example configurations, various modifications, alternative constructions, and equivalents may be used. For example, the above elements may be components of a larger system, wherein other rules may take precedence over or otherwise modify the application of the technology. Also, a number of steps may be undertaken before, during, or after the above elements are considered.

As used herein, the singular forms "a", "an", and "the" include plural references unless the context clearly dictates otherwise. Thus, for example, reference to "a user" includes reference to one or more of such users, and reference to "a processor" includes reference to one or more processors and equivalents thereof known to those skilled in the art, and so forth.

Also, the words "comprise," "comprising," "contains," "containing," "include," "including," and "includes," when used in this specification, are intended to specify the presence of stated features, integers, components, or steps, but they do not preclude the presence or addition of one or more other features, integers, components, steps, acts, or groups.

Claim 1:
A method of damping oscillations of an implement of a vehicle while the vehicle is moving (<NUM>), the method comprising:
capturing sensor data using one or more sensors that are attached to the vehicle (<NUM>), wherein capturing the sensor data includes capturing accelerometer data using an accelerometer attached to the vehicle and capturing gyro data using a gyroscope attached to the vehicle;
analyzing the sensor data to extract symmetric oscillation information and asymmetric oscillation information (<NUM>), wherein extracting the symmetric oscillation information includes extracting, from the accelerometer data, a frequency and a phase corresponding to symmetric oscillations of the vehicle caused by both sides of the implement oscillating in phase with each other in a fore-aft direction of the vehicle, and wherein extracting the asymmetric oscillation information includes extracting, from the gyro data, a frequency and a phase corresponding to asymmetric oscillations of the vehicle caused by the sides of the implement oscillating with opposite phases in the fore-aft direction of the vehicle;
generating a speed damping signal (<NUM>) and a steering damping signal (<NUM>) based on analyzing the sensor data (<NUM>), wherein the speed damping signal is generated in response to extracting the symmetric oscillation information and the steering damping signal is generated in response to extracting the asymmetric oscillation information; and
modifying a movement of the vehicle using one or both of the speed damping signal and the steering damping signal (<NUM>).