Implement travel prediction for a work machine

A controller may identify a command to move an implement in a particular direction and an amount of time for the implement to move in the particular direction. The controller may determine an estimated velocity of the implement moving in the particular direction. The controller may determine a predicted travel distance of the implement in the particular direction. The controller may cause, based on a stop position associated with the particular direction and the predicted travel distance of the implement in the particular direction, the implement to move from a current position to a reset position. The controller may cause the command to be executed to cause the implement to move, in the particular direction and for the amount of time, from the reset position to another position without hitting the stop position associated with the particular direction.

TECHNICAL FIELD

The present disclosure relates generally to calibrating an implement of a work machine and to predicting implement travel to facilitate calibration of the implement.

BACKGROUND

Various types of machines used, for example, in the construction industry, include implements, such as a blade, a bucket, and/or the like to perform one or more operations. An operator of the machine may interact with operator controls of the machine to cause the implement to move in a particular direction (e.g., up, down, to the right, to the left). However, the operator may cause the implement to move too far in the particular direction and cause the implement to hit a stop position (e.g., a position associated with a full extension of the implement). This may cause the implement to suddenly stop and/or may damage the implement. Further, the implement hitting the stop position may cause the implement and/or the machine to vibrate, which may impact a performance of the implement and/or the machine.

One attempt to prevent an implement from hitting a stop position is disclosed in Japanese Patent Application Publication No. JP2019052499 published on Apr. 4, 2010 (“the '499 publication”). In particular, the '499 publication discloses decelerating a cylinder of an implement of a work machine when the cylinder approaches a stroke end of the cylinder to prevent the cylinder from hitting the stroke end. While the '499 publication may be effective to reduce a speed of the cylinder of the implement to prevent the cylinder of the implement from hitting a stroke end, the '499 publication does not disclose any way to prevent the cylinder from hitting the stroke end without reducing the cylinder's speed. The system of the present disclosure solves one or more of the problems set forth above and/or other problems in the art.

SUMMARY

According to some implementations, a method may include identifying a command to move an implement of a work machine in a particular direction and an amount of time for the implement to move in the particular direction; determining, based on a previously determined velocity of the implement moving in the particular direction, an estimated velocity of the implement moving in the particular direction; determining, based on the amount of time and the estimated velocity, a predicted travel distance of the implement in the particular direction; causing, based on a stop position associated with the particular direction and the predicted travel distance of the implement in the particular direction, the implement to move from a current position to a reset position; and causing the command to be executed to cause the implement to move, in the particular direction and for the amount of time, from the reset position to another position without hitting the stop position associated with the particular direction.

According to some implementations, a controller may include one or more memories; and one or more processors, communicatively coupled to the one or more memories, configured to: identify a command to move an implement of a work machine in a particular direction and an amount of time to move the implement in the particular direction; determine, based on previously moving the implement in the particular direction, an estimated velocity of the implement moving in the particular direction; determine, based on the amount of time and the estimated velocity, a predicted travel distance of the implement in the particular direction; cause, based on the predicted travel distance of the implement in the particular direction, the implement to move from a current position to a reset position; and cause the command to be executed to cause the implement to move, in the particular direction and for the amount of time, from the reset position to another position without hitting a stop position associated with the particular direction.

According to some implementations, an implement calibration system may comprise an implement associated with a work machine and configured to move in a first direction and a second direction, wherein the first direction is opposite of the second direction; an implement control device configured to control the implement; and a controller configured to: obtain, from the implement control device, a command to move the implement in the first direction; determine, based on a power level of the command and a calibration map associated with the implement, an estimated velocity of the implement moving in the first direction; determine, based on an amount of time to move the implement in the first direction and the estimated velocity, a predicted travel distance of the implement in the first direction; cause, based on the predicted travel distance of the implement in the first direction, the implement to move in the second direction from a current position to a reset position; cause the command to be executed to cause the implement to move, in the first direction and for the amount of time, from the reset position to another position without hitting a stop position associated with the first direction; determine, based on causing the command to be executed, a maximum velocity of the implement when moving in the first direction from the reset position to the other position; and cause the calibration map associated with the implement to be updated to indicate an association between the power level of the command and the determined maximum velocity of the implement.

DETAILED DESCRIPTION

FIG.1is a diagram of an example machine100described herein. The term “machine” or “work machine” may refer to any machine that performs an operation associated with an industry such as, for example, mining, construction, farming, transportation, or any other industry. For example, the machine100may include a mobile machine, such as a track type tractor shown inFIG.1, or any other type of mobile machine.

As shown inFIG.1, the machine100includes a frame102that supports an engine104, a drive system106, a drive shaft108, and a traction system110. The machine100further includes operator controls112that interact with a control device114to control an implement116.

The engine104is configured to supply power to the machine100. The engine104may be an internal combustion engine (for example, a compression ignition engine), but in general, the engine104may be any prime mover that provides power to various systems of the machine100. The engine104may be fueled by such fuels as distillate diesel fuel, biodiesel, dimethyl ether, gaseous fuels (such as hydrogen, natural gas, and propane), alcohol, ethanol, and/or any combination thereof.

The engine104is configured to provide operating power for operation of the implement116via, for example, the drive system106, the drive shaft108, and/or the like. The engine104is operably arranged to receive control information from the control device114. Additionally, the engine104is operably arranged with the implement116to operate the implement116according to the control information received from the control device114.

The drive system106is movably connected to the engine104via the drive shaft108to operate the implement116and to propel the machine100(e.g., via the traction system110). The traction system110includes a track-drive system, a wheel-drive system, or any other type of drive system configured to propel the machine100.

The operator controls112are operably connected to the control device114and are configured to generate one or more commands to move the implement116, as further described herein in relation toFIG.2. The control device114is configured to generate control information to control movement of the implement116, as further described herein in relation toFIG.2.

The implement116is operably arranged with the engine104such that the implement116is movable through control information transmitted from the control device114to the engine104. The illustrated implement116is a blade that can move up and down, left and right, and/or the like. Other embodiments can include any other suitable implement for performing a variety of tasks, including, for example, ripping, dozing, brushing, compacting, grading, lifting, loading, plowing, and/or the like. Example implements116include rippers, augers, buckets, breakers/hammers, brushes, compactors, cutters, forked lifting devices, grader bits and end bits, grapples, and/or the like.

The implement116is associated with one or more stop positions118(e.g., shown inFIG.1as stop position118-1and stop position118-2). A stop position may be a position associated with a full extension of the implement116in a particular direction. For example, as shown inFIG.1, the stop position118-1is a position associated with a full extension of the implement116in an upward direction and the stop position118-2is a position associated with a full extension of the implement116in a downward direction. Accordingly, the implement116has a full range of motion120(e.g., a distance between stop positions118-1and118-2).

Additionally, or alternatively, the implement116may be associated with one or more soft stop positions122(e.g., shown inFIG.1as soft stop position122-1and soft stop position122-2). A soft stop position may be a position associated with a less than full extension of the implement116in a particular direction (e.g., a maximum allowed position in the particular direction to avoid the implement116hitting a stop position in the particular direction). A soft stop position associated with a particular direction may be a particular distance (e.g., in millimeters, centimeters, meters, and/or the like) away from a stop position associated with the particular direction (e.g., in an opposite direction of the particular direction). For example, the soft stop position122-1associated with the upward direction is a particular distance away (e.g., in a downward direction) from the stop position118-1associated with the upward direction. As another example, the soft stop position122-2associated with the downward direction is the particular distance away (e.g., in an upward direction) from the stop position118-2associated with the downward direction. The particular distance may be based on the full range of motion120of the implement116. For example, the particular distance may be a percentage of the full range of motion120of the implement116(e.g., 5%, 10%, 12%, and/or the like of the full range of motion120of the implement116).

As indicated above,FIG.1is provided as an example. Other examples are possible and may differ from what was described in connection withFIG.1.

FIG.2is a diagram of an example environment200in which systems and/or methods described herein may be implemented. As shown inFIG.2, environment200includes the operator controls112, the control device114, one or more sensing devices202, and/or the like. Devices of environment200may interconnect via wired connections, wireless connections, or a combination of wired and wireless connections.

The operator controls112may include one or more implement control devices, such as a dial, a knob, a slider, a joystick, and/or the like to control movement of the implement116. The operator controls112are configured to generate one or more commands to move the implement116and send (e.g., directly or via one or more other components or devices of the machine100, such as a different control device) the one or more commands to the control device114(e.g., on a scheduled basis, on a triggered basis, on an on-demand basis, and/or the like).

The control device114may be a controller, an electronic control unit (ECU), and/or the like of the machine100. The control device114may be implemented as a processor, such as a central processing unit (CPU), a graphics processing unit (GPU), an accelerated processing unit (APU), a microprocessor, a microcontroller, a digital signal processor (DSP), a field-programmable gate array (FPGA), an application-specific integrated circuit (ASIC), and/or another type of processing component. The processor may be implemented in hardware, firmware, and/or a combination of hardware and software. The control device114may include one or more processors capable of being programmed to perform a function. One or more memories, including a random-access memory (RAM), a read only memory (ROM), and/or another type of dynamic or static storage device (e.g., a flash memory, a magnetic memory, and/or an optical memory) may store information and/or instructions for use by the control device114. The control device114may include a memory (e.g., a non-transitory computer-readable medium) capable of storing instructions that, when executed, cause the processor to perform one or more processes and/or methods described herein. The control device114is configured to control movement of the implement116.

The one or more sensing devices202(referred to singularly as “sensing device202” and collectively as “sensing devices202”) include any type of sensor configured to measure a position of the implement116. For example, the sensing devices202may include a global positioning system (GPS) device, a local positioning system (LPS) device, an inertial measurement unit (IMU) device, and/or the like to detect a position of the implement116. The sensing devices202are configured to send (e.g., directly or via one or more other components or devices of the machine100, such as a different control device) position information concerning the implement116to the control device114(e.g., on a scheduled basis, on a triggered basis, on an on-demand basis, and/or the like).

In a first scenario, such as a scenario to initiate calibration of the implement116, an operator of the operator controls112interacts with (e.g., moves, slides, rolls, pushes, and/or the like) the one or more implement control devices of the operator controls112. For example, the operator may interact with the one or more implement control devices of the operator controls112to generate a command to move (e.g., to change a position of) the implement116. Additionally, or alternatively, the control device114may generate (e.g., automatically generate, based on an algorithm) the command.

The command may indicate a particular direction in which to move the implement116, a power level (e.g., an amount of power (e.g., in terms of a percentage of maximum power) that the engine104is to supply to the drive system106and/or the drive shaft108to move the implement116in the particular direction), and/or the like. For example, the operator may interact with the one or more implement control devices to generate a command to move the implement116(e.g., up, down, right, left, and/or the like), at a maximum power level (e.g., a 100% power level that indicates 100% power of the engine).

In some implementations, the operator controls112may send (e.g., when the operator controls112generate the command) the command to the control device114. The control device114may process (e.g., parse) the command to identify and/or determine the particular direction, the power level, and/or the like indicated by the command.

The control device114may cause the command to be executed to cause the implement116to move in the particular direction until the implement116hits a stop position associated with the particular direction. For example, the control device114may send control information to the engine104to cause the engine104to supply an amount of power indicated by the power level to the drive system106and/or the drive shaft108to move the implement116in the particular direction from a starting position to the stop position associated with the particular direction.

After causing the command to be executed, the control device114may determine and/or identify the stop position associated with the particular direction. For example, when the particular direction is upward, the control device114may determine and/or identify the stop position118-1(e.g., as shown inFIG.1). As another example, when the particular direction is downward, the control device114may determine and/or identify the stop position118-2(e.g., as shown inFIG.1).

Similarly, the control device114may determine and/or identify a soft position associated with the particular direction. For example, when the particular direction is upward, the control device114may determine and/or identify the soft stop position122-1(e.g., as shown inFIG.1). As another example, when the particular direction is downward, the control device114may determine and/or identify the soft stop position122-2(e.g., as shown inFIG.1). In some implementations, to determine and/or identify the soft position associated with the particular direction, the control device114may calculate a particular distance (e.g., based on the full range of motion120of the implement116) and determine and/or identify a position that is the particular distance away (e.g., in an opposite direction of the particular direction) from the stop position associated with the particular direction. Accordingly, the control device114may determine that the soft stop position is the position that is the particular distance away from the stop position associated with the particular direction (e.g., as described in relation toFIG.1).

Additionally, or alternatively, after causing the command to be executed, the control device114may determine a velocity of the implement116moving in the particular direction at the power level. The determined velocity of the implement116may be an average velocity (e.g., a mean velocity, a median velocity, and/or the like), a maximum velocity, and/or the like. For example, the control device114may determine (e.g., based on position information obtained from the sensing devices202) the starting position of the implement116and the stop position associated with the particular direction and may determine a travel distance of the implement116(e.g., by comparing the starting position of the implement116and the stop position associated with the particular direction). The control device114may divide the travel distance by an amount of time to travel from the starting position of the implement116to the stop position associated with the particular direction to determine the velocity (e.g., a mean velocity) of the implement116moving in the particular direction at the power level.

The control device114may store the power level, the particular direction, the determined velocity of the implement116moving in the particular direction, and/or the like as an entry in a calibration map. The calibration map includes information concerning respective relationships between representative velocities of the implement116and representative power levels. For example, the calibration map may include one or more entries, where each entry may indicate a representative power level; a direction of movement associated with the representative power level; a representative velocity of the implement116, moving in the direction of movement, associated with the representative power level; and/or the like. In some implementations, the calibration map includes additional information, such as information identifying the one or more stop positions118associated with the implement116, the one or more soft stop positions122associated with the implement116, the full range of motion120of the implement116, and/or the like. The calibration map is stored in a data structure (e.g., that is included in the control device114and/or that is accessible to the control device114).

In a second scenario, such as a scenario to further calibrate the implement116after calibration of the implement116has been initiated (e.g., as described herein in relation to the first scenario), the operator may interact with the one or more implement control devices of the operator controls112to generate an additional command or the control device114may generate the additional command to move (e.g., to change a position of) the implement116in a similar manner as described herein (e.g., in relation to the first scenario).

The additional command may indicate a particular direction in which to move the implement116, a power level, and/or the like. For example, the operator may interact with the one or more implement control devices to generate an additional command to move the implement116(e.g., up, down, right, left, and/or the like), at a power level that is less than the maximum power level (e.g., a 50%, a 75%, a 90% and/or the like power level).

In some implementations, the operator controls112may send (e.g., when the operator controls112generate the additional command) the command to the control device114. The control device114may process (e.g., parse) the additional command to identify and/or determine the particular direction, the power level, and/or the like indicated by the additional command.

In some implementations, the control device114may determine an amount of time to move the implement116in the particular direction. For example, the control device114may access a time map (e.g., stored in the data structure that is included in the control device114and/or that is accessible to the control device114) to determine the amount of time to move the implement116in the particular direction. The time map includes information concerning respective relationships between a particular direction in which to move the implement116, a power level at which to move the implement116, and/or an amount of time to move the implement116(e.g., which may be associated with an amount of time for implement116to reach a steady or maximum velocity). The control device114may search the time map, based on the particular direction in which to move the implement116and/or the power level at which to move the implement116, to determine the amount of time to move the implement116in the particular direction.

Before causing the additional command to be executed, the control device114may determine an estimated velocity of the implement116moving in the particular direction (e.g., based on the determined amount of time and/or the particular direction, the power level, and/or the like indicated by the additional command). The control device114may access the calibration map (e.g., stored in the data structure that is included in the control device114and/or that is accessible to the control device114) to determine the estimated velocity of the implement116moving in the particular direction.

For example, the control device114may search the calibration map to identify an entry that includes a representative power level that is greater than or equal to the power level indicated by the additional command (e.g., when the power level is a 60% power level, the control device114may search the calibration map for a representative power level that is greater than or equal to 60%) and/or a direction of movement associated with the representative power level that is the same as the particular direction indicated by the additional command (e.g., when the particular direction is upward the control device114may search the calibration map for an upward direction of movement associated with the representative power level). The entry may include a representative velocity of the implement116moving in the particular direction (e.g., that may be a velocity of the implement116moving in the particular direction that was previously determined by the control device114, as described above in the first scenario). The control device114may identify and/or determine the representative velocity and may cause the estimated velocity to be based on the representative velocity. For example, the control device114may cause the estimated velocity to be a percentage of the representative velocity (e.g., 90%, 100%, 115%, and/or the like of the representative velocity).

Further, the control device114may determine a predicted travel distance of the implement116in the particular direction (e.g., based on the estimated velocity). For example, the control device114may determine the predicted travel distance of the implement116in the particular direction by multiplying the amount of time (e.g., indicated by the time map) by the estimated velocity.

In some implementations, the control device114may determine a current position (e.g., based on position information obtained from the sensing devices202) of the implement116and may determine a maximum remaining travel distance of the implement116in the particular direction. The maximum remaining travel distance is a distance between the current position and an end position (e.g., the distance that the implement116can travel in the particular direction before hitting the end position). The end position may be the stop position in the particular direction. Additionally, or alternatively, the end position may be the soft stop position in the particular direction.

The control device114determines whether the predicted travel distance is less than or equal to the maximum remaining travel distance. When the control device114determines that the predicted travel distance is less than or equal to the maximum remaining travel distance, which may indicate that implement116may move in the particular direction (e.g., per the additional command) without hitting the end position in the particular direction, the control device114causes the additional command to be executed to cause the implement116to move in the particular direction and for the amount of time. In this way, the control device114may cause the implement116to move from the current position to another position without hitting the end position (e.g., the stop position associated with the particular direction or the soft stop position associated with the particular direction).

When the control device114determines that the predicted travel distance is greater than the maximum remaining travel distance, which may indicate that implement116may hit the end position when moving in the particular direction (e.g., per the additional command), the control device114determines and/or identifies a reset position and causes the implement116to move from the current position to the reset position. The reset position is in an opposite direction of the particular direction from the current position. The reset position may be: a position that is greater than or equal to the predicted travel distance away from the end position (e.g., in the opposite direction); a soft stop position associated with the opposite direction (e.g., a maximum allowed position of the implement116in the opposite direction); a stop position associated with the opposite direction (e.g., a position associated with a full extension of the implement116in the opposite direction); and/or the like. In this way, the control device114may cause the reset position to be a distance away from the end position that is greater than or equal to the predicted travel distance of the implement116(e.g., to ensure that that implement116may move in the particular direction without hitting the end position when causing the command to be executed).

To cause the implement116to move from the current position to the reset position (e.g., in the opposite direction), the control device114generates a reset command. The reset command may indicate a default power level (e.g., a constant power level for resetting implement116) (e.g., a 15% power level, a 50% power level, a 60% power level, and/or the like) for the implement116to move in the opposite direction of the particular direction, a reset travel distance (e.g., a distance to travel to the reset position), and/or the like. The reset travel distance may be a difference between the predicted travel distance and the maximum remaining travel distance; a difference between the current position and a soft stop position associated with the opposite direction; a difference between the current position and a stop position associated with the opposite direction; and/or the like The control device114may cause the reset command to be executed to cause the implement116to move, in the opposite direction of the particular direction (e.g., at the particular power level), from the current position to the reset position.

After causing the implement116to move to the reset position, the control device114causes the additional command to be executed to cause the implement116to move in the particular direction at the power level and for the amount of time (e.g., indicated by the time map) (e.g., in a similar manner as described herein). In this way, the control device114causes the implement116to move from the reset position to another position without hitting the end position (e.g., the stop position associated with the particular direction or the soft stop position associated with the particular direction).

In some implementations, after causing the additional command to be executed, the control device114determines a velocity of the implement116when the implement116is moving in the particular direction (e.g., from the current position to a first other position or from the reset position to a second other position). The determined velocity of the implement116may be an average velocity (e.g., a mean velocity, a median velocity, and/or the like), a maximum velocity, and/or the like. For example, the control device114may determine a travel distance of the implement116(e.g., by comparing the current position and the first other position or by comparing the reset position and the second other position) and divide the travel distance by the amount of time (e.g., indicated by the time map) to determine the velocity (e.g., mean velocity) of the implement116moving in the particular direction for the amount of time.

The control device114causes the calibration map to be updated based on the additional command and the determined velocity of the implement116. For example, the control device114may store the power level, the particular direction, the determined velocity of the implement116moving in the particular direction, and/or the like as an entry in the calibration map (e.g., in a similar manner as described herein in relation the first scenario).

As indicated above,FIG.2is provided as an example. Other examples are possible and may differ from what was described in connection withFIG.2.

FIG.3is a diagram illustrating an example operation of the implement116by the control device114(e.g., to calibrate the implement116and/or to test a calibration of the implement116without hitting a stop position). As shown inFIG.3, the implement116is associated with a stop position302in the upward direction and a stop position304in the downward direction. A full range of motion306is defined by the stop position302and the stop position304. The implement116is at a current position308.

The control device114obtains a command to move the implement116in the upward direction. The control device114determines a predicted travel distance310of the implement116in the upward direction (e.g., based on an estimated velocity of the implement116moving in the upward direction indicated by a calibration map and/or an amount of time for the implement116to move in the upward direction). The control device114determines that a maximum remaining travel distance312(e.g., a distance between the current position308and the stop position302) is less than the predicted travel distance310and causes the implement116to move to a reset position314(e.g., a position that is a distance away, in the downward direction, from the stop position302that is greater than or equal to the predicted travel distance310). After causing the implement116to move to the reset position314, the control device114causes the command to be executed to cause the implement116to move in the upward direction and for the amount of time (e.g., in a similar manner as described herein in relation toFIG.2). In this way, the control device114causes the implement116to move from the reset position314to another position in the upward direction without hitting the stop position302.

As indicated above,FIG.3is provided as an example. Other examples are possible and may differ from what was described in connection withFIG.3.

FIG.4is a diagram illustrating an example operation of the implement116by the control device114(e.g., to calibrate the implement116and/or to test a calibration of the implement116without hitting a soft stop position). As shown inFIG.4, the implement116is associated with a stop position402in the upward direction and a stop position404in the downward direction. A full range of motion406is defined by the stop position402and the stop position404. The implement116is at a current position408.

The control device114obtains a command to move the implement116in the downward direction. The control device114determines a predicted travel distance410of the implement116in the downward direction (e.g., based on an estimated velocity of the implement116moving in the downward direction indicated by a calibration map and/or an amount of time for the implement116to move in the downward direction). The control device114determines that a maximum remaining travel distance412(e.g., a distance between the current position408and a soft stop position414in the downward direction) is less than the predicted travel distance410and causes the implement116to move to a reset position416(e.g., a position that is a distance away, in the upward direction, from the soft stop position414that is greater than or equal to the predicted travel distance410). After causing the implement116to move to the reset position416, the control device114causes the command to be executed to cause the implement116to move in the downward direction and for the amount of time indicated by the command (e.g., in a similar manner as described herein in relation toFIG.2). In this way, the control device114causes the implement116to move from the reset position416to another position in the downward direction without hitting the soft stop position414.

As indicated above,FIG.4is provided as an example. Other examples are possible and may differ from what was described in connection withFIG.4.

FIG.5is a flowchart of an example process500for implement travel prediction for a work machine. One or more process blocks ofFIG.5may be performed by a control device (e.g., control device114). In some implementations, one or more process blocks ofFIG.5may be performed by another device or a group of devices separate from or including the controller, such as operator controls (e.g., operator controls112), sensing devices (e.g., sensing devices202), and/or the like.

As shown inFIG.5, process500may include identifying a command to move an implement of a work machine in a particular direction and an amount of time for the implement to move in the particular direction (block510). For example, the control device may identify a command to move an implement of a work machine in a particular direction and an amount of time for the implement to move in the particular direction, as described above.

As further shown inFIG.5, process500may include determining, based on previously moving the implement in the particular direction, an estimated velocity of the implement moving in the particular direction (block520). For example, the control device may determine, based on previously moving the implement in the particular direction, an estimated velocity of the implement moving in the particular direction, as described above.

As further shown inFIG.5, process500may include determining, based on the amount of time and the estimated velocity, a predicted travel distance of the implement in the particular direction (block530). For example, the control device may determine, based on the amount of time and the estimated velocity, a predicted travel distance of the implement in the particular direction, as described above.

As further shown inFIG.5, process500may include causing, based on the predicted travel distance of the implement in the particular direction, the implement to move from a current position to a reset position (block540). For example, the control device may cause, based on the predicted travel distance of the implement in the particular direction, the implement to move from a current position to a reset position, as described above.

As further shown inFIG.5, process500may include causing the command to be executed to cause the implement to move, in the particular direction and for the amount of time, from the reset position to another position without hitting a stop position associated with the particular direction (block550). For example, the control device may cause the command to be executed to cause the implement to move, in the particular direction and for the amount of time, from the reset position to another position without hitting a stop position associated with the particular direction, as described above.

INDUSTRIAL APPLICABILITY

The disclosed control device (e.g., the control device114) may be used with any implement of any work machine where preventing the implement from hitting an end position when moving in a particular direction is needed. The control device is able to identify a command to move an implement of a work machine in a particular direction and determine a predicted travel distance of the implement in the particular direction based on the command. If the predicted travel distance is greater than or equal to a maximum remaining travel distance available to the implement before hitting an end position (e.g., a stop position or a soft stop position) associated with the particular direction, the control device causes the implement to move to a reset position that is a particular distance away from the end position that is greater than the predicted travel distance. The control device then may cause the command to be executed to cause the implement to move in the particular direction without hitting the end position.

In this way, by moving the implement to a reset position before causing the command to be executed, the control device prevents the implement from hitting the end position associated with the particular direction when the command is executed. This prevents potential damage to the implement from hitting a stop position and/or prevents vibrations that affect a performance of the implement and/or the work machine from being created by the implement hitting the stop position.

Further, the control device may be used to facilitate calibration of the implement. In one calibration process, an implement may be alternately moved between two opposite directions at different power levels to generation a calibration map associated with the implement. For example, the calibration process may require the implement move in a first direction at a 100% power level (e.g., until the implement hits a stop position as described herein), then move in a second direction at a 100% power level (e.g., until the implement hits a stop position as described herein), then move in the first direction at a 90% power level for a first period of time (e.g., as described herein), then move in the second direction at a 90% power level for a second period of time (e.g., as described herein), and/or the like. The control device114may automate this calibration process and may automatically adjust the implement to a reset position when a predicted travel distance is greater than or equal to a maximum remaining travel distance available to the implement before hitting an end position. This may ensure that the implement is able to fully move in the first direction or the second direction according to the calibration process, which may produce more accurate velocity determinations regarding the implement moving in either direction and at different power levels for the period of time. The more accurate velocity determinations may be stored in the calibration map, which may be used to improve a performance of the implement (e.g., after the calibration process is completed).