WO2013158849A2 - Method for automatically estimating inertia in a mechanical system and for generating a motion profile - Google Patents

Method for automatically estimating inertia in a mechanical system and for generating a motion profile Download PDF

Info

Publication number
WO2013158849A2
WO2013158849A2 PCT/US2013/037122 US2013037122W WO2013158849A2 WO 2013158849 A2 WO2013158849 A2 WO 2013158849A2 US 2013037122 W US2013037122 W US 2013037122W WO 2013158849 A2 WO2013158849 A2 WO 2013158849A2
Authority
WO
WIPO (PCT)
Prior art keywords
velocity
motion
profile
acceleration
inertia
Prior art date
Application number
PCT/US2013/037122
Other languages
French (fr)
Other versions
WO2013158849A3 (en
WO2013158849A4 (en
Inventor
Gang Tian
Original Assignee
Linestream Technologies
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US13/451,924 external-priority patent/US8710777B2/en
Priority claimed from US13/474,919 external-priority patent/US9041337B2/en
Application filed by Linestream Technologies filed Critical Linestream Technologies
Publication of WO2013158849A2 publication Critical patent/WO2013158849A2/en
Publication of WO2013158849A3 publication Critical patent/WO2013158849A3/en
Publication of WO2013158849A4 publication Critical patent/WO2013158849A4/en

Links

Classifications

    • HELECTRICITY
    • H02GENERATION; CONVERSION OR DISTRIBUTION OF ELECTRIC POWER
    • H02PCONTROL OR REGULATION OF ELECTRIC MOTORS, ELECTRIC GENERATORS OR DYNAMO-ELECTRIC CONVERTERS; CONTROLLING TRANSFORMERS, REACTORS OR CHOKE COILS
    • H02P23/00Arrangements or methods for the control of AC motors characterised by a control method other than vector control
    • H02P23/14Estimation or adaptation of motor parameters, e.g. rotor time constant, flux, speed, current or voltage
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/18Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form
    • G05B19/404Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form characterised by control arrangements for compensation, e.g. for backlash, overshoot, tool offset, tool wear, temperature, machine construction errors, load, inertia
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/37Measurements
    • G05B2219/37388Acceleration or deceleration, inertial measurement
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/41Servomotor, servo controller till figures
    • G05B2219/41163Adapt gain to friction, weight, inertia
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/41Servomotor, servo controller till figures
    • G05B2219/41381Torque disturbance observer to estimate inertia

Definitions

  • This disclosure generally relates to motion control, and specifically to estimation of inertias and friction coefficients for use as parameters in a motion control system and generation of constraint-based, time-optimal motion profiles.
  • motion control systems to control machine position and speed.
  • Such motion control systems typically include one or more motors or similar actuating devices operating under the guidance of a controller, which sends position and speed control instructions to the motor in accordance with a user-defined control algorithm or program.
  • Some motion control systems operate in a closed-loop configuration, whereby the controller instructs the motor to move to a target position or to transition to a target velocity (a desired state) and receives feedback information indicating an actual state of the motor.
  • the controller monitors the feedback information to determine whether the motor has reached the target position or velocity, and adjusts the control signal to correct errors between the actual state and the desired state.
  • instructing the motor to move at a lower torque may increase the accuracy of the initial state transition and reduce or eliminate machine oscillation, but will increase the amount of time required to place the machine in the desired position.
  • the controller gain coefficients should be selected to optimize the trade-off between speed of the state transition and system stability. The process of selecting suitable gain coefficients for the controller is known as tuning.
  • the response of a controlled mechanical system to a signal from a controller having a given set of controller gain coefficients depends on physical characteristics of the mechanical system, including the inertia and the friction coefficient.
  • the inertia represents the resistance of the motion system to acceleration or deceleration.
  • the friction coefficient represents a friction seen by the motor, such as the friction between the rotor and the shaft.
  • motion profiles are often used to facilitate transition between position or velocity states. For example, when the controller determines that the motion system must move to a new position or alter its velocity (e.g., in accordance with the control algorithm or a user request), the controller must calculate a position or velocity trajectory - referred to as a motion profile - for transitioning the motion system from its current position/velocity to the target position/velocity.
  • the motion profile defines the motion system's velocity, acceleration, and/or position over time as the system moves from the current state to the target state. Once this motion profile is calculated, the controller translates the motion profile into appropriate control signaling for moving the motion system through the trajectory defined by the profile.
  • the various segments (or stages) of the motion profile are calculated based on predetermined user-defined constraints (e.g., maximum velocity, maximum acceleration, etc.), where the defined constraints may correspond to mechanical limitations of the motion system. Given these constraints and the desired target position and/or velocity, the controller will calculate the motion profile used to carry out the desired move or velocity change.
  • the resultant motion profile is also a function of the type of profile the controller is configured to generate - typically either a
  • trapezoidal profile or an S-curve profile.
  • the controller will calculate the motion profile according to three distinct stages- an acceleration stage, a constant velocity stage, and a deceleration stage. Such a profile results in a trapezoidal velocity curve.
  • the S-curve profile type modifies the trapezoidal profile by adding four additional stages corresponding to these transitions. These additional stages allow gradual transitions between the constant (or zero) velocity stages and the constant
  • acceleration/deceleration stages providing smoother motion and affording a finer degree of control over the motion profile.
  • the trapezoidal profile always accelerates or decelerates at the maximum defined acceleration rate, this profile type tends to achieve faster point-to-point motion relative to S-curve profiles.
  • the trapezoidal curve may cause excessive system jerk at these transitions.
  • there is greater risk of overshooting the target position or velocity when using a trapezoidal motion profile which can reduce accuracy or cause the controller to expend additional work and settling time bringing the motion device back to the desired target.
  • the S- curve profile can yield greater accuracy due to the more gradual transitions between the constant velocity and acceleration/deceleration phases, but at the cost of additional time spent on the initial point-to-point move.
  • an inertia estimating system can instruct a controller to send a torque control signal to a motor, where the torque control signal varies continuously over time between defined maximum and minimum torque values.
  • This torque control signal can be controlled based on a testing sequence defined in the inertia estimating system.
  • the testing sequence can specify that the torque control signal will increase gradually at a defined rate of increase, causing the motor to accelerate.
  • the torque control signal can gradually decrease back to zero, causing the motor to decelerate to a rest state.
  • the inertia estimating system can measure and record the velocity of the motor over time in response to the torque control signal.
  • An inertia component can then determine one or both of an estimated inertia and an estimated friction coefficient for the mechanical system based on the time-varying torque signal and the measured velocity curve.
  • the estimated inertia and/or the friction coefficient can subsequently be used by the controller to facilitate
  • a profile generator deployed within a controller can leverage a mathematical algorithm to solve for constraint-based, time-optimal point-to-point motion in real-time and to calculate trajectories based on the solution.
  • the profile generator can calculate the trajectory based on an ST-curve profile type, which generates profiles having a continuous jerk reference over time for at least one acceleration or deceleration segment of the profile.
  • the profile generator of the present disclosure can yield smoother and more stable motion compared to traditional trapezoidal or S-curve profiles.
  • the ST-curve profiles generated by the profile generator can support asymmetric acceleration and deceleration phases. Conventionally, asymmetric acceleration and deceleration is supported only by trapezoidal profiles, but not by the smoother S-curve profiles.
  • the ST-curves generated according to the techniques described herein can allow asymmetric acceleration and deceleration to be used with smoother motion profiles.
  • the profile generator described herein may also generate S-curve profiles that support asymmetric acceleration and deceleration.
  • one or more embodiments of the profile generator described herein can improve calculation efficiency by omitting calculations for trajectory segments that will not be used in the final trajectory. That is, rather than calculating profile data for all seven profile stages even in cases for which one or more of the segments will not be used, the profile generator described herein may calculate only those profile stages that will be used in the final motion profile for a given trajectory, reducing computational overhead within the controller. The profile generator can automatically determine which segment(s) of the motion profile may be skipped for a given point-to-point move and calculate the remaining segments accordingly.
  • one or more embodiments of the profile generator described herein can further improve the accuracy and efficiency of a point-to-point move by forcing the total profile time to be a multiple of the motion controller's sample time.
  • the profile generator can calculate a time-optimal solution for a given point-to- point move, determine the time durations of the respective segments of the resultant profile, and round these durations to be multiples of the sample time.
  • the profile generator can then recalculate the jerk, acceleration/deceleration, velocity and/or position references for the profile to be consistent with these rounded profile times.
  • the trajectory outputs can be aligned with the sample points, mitigating the need to compensate for small differences introduced when the total profile time falls between two sample times.
  • FIG. 1 is a block diagram of a simplified closed-loop motion control architecture.
  • FIG. 2 is a block diagram of an exemplary non-limiting inertia estimating system.
  • FIG. 3 is a block diagram illustrating the inputs and outputs associated with the inertia estimator.
  • FIG. 4 is a block diagram depicting the interactions between the inertia estimator and a motion control system during an exemplary test sequence.
  • FIG. 5 illustrates an exemplary torque command (t) and corresponding velocity feedback v(t) graphed over time.
  • FIG. 6 is. a block diagram depicting an inertia estimator having an inertia component and friction coefficient component.
  • FIG. 7 is a block diagram of an exemplary configuration in which an inertia estimator operates as an independent component relative to a motion controller.
  • FIG. 8 illustrates an exemplary motion control tuning application that utilizes the estimated inertia and friction coefficient generated by the inertia estimator.
  • FIG. 9 is a flowchart of an example methodology for estimating an inertia and a friction coefficient for a controlled mechanical system.
  • FIG. 10 is a flowchart of an example methodology for executing a testing sequence on a motion control system in order to estimate the inertia and friction coefficient.
  • FIG. 11 is a block diagram of an exemplary motion profile generating system capable of generating motion profiles in a motion control system.
  • FIG. 12 is a block diagram of exemplary motion controller that utilizes a profile generator.
  • FIG. 13 is a block diagram illustrating the inputs and outputs of an exemplary position profile generator.
  • FIG. 14 is a block diagram illustrating the inputs and outputs of an exemplary velocity profile generator.
  • FIG. 15 is a graphical comparison of an exemplary ST-curve profile with traditional trapezoidal and S-curve profiles.
  • FIG. 16 illustrates an exemplary S-curve profile that utilizes all seven stages.
  • FIG. 17 illustrates an exemplary S-curve motion profile that skips the constant velocity stage.
  • FIG. 18 illustrates an example S-curve profile that skips the constant acceleration and constant deceleration stages.
  • FIG. 19 illustrates an example S-curve profile that skips the constant acceleration, constant velocity, and constant deceleration stages.
  • FIG. 20 is a flowchart of an example methodology for calculating a motion profile for a point-to-point move in a motion control system.
  • FIG. 21 is a flowchart of an example methodology for calculating a constraint-based time-optimal motion profile that conforms to a sample time of a motion controller.
  • FIG. 22 is a flowchart of an example methodology for calculating a motion profile for a point-to-point move using segment skipping.
  • FIG. 23 is a block diagram representing an exemplary networked or distributed computing environment for implementing one or more embodiments described herein.
  • FIG. 24 is a block diagram representing an exemplary computing system or operating environment for implementing one or more embodiments described herein.
  • Systems and methods described herein relate to techniques for generating estimated inertia and friction coefficients for controlled mechanical systems.
  • One or more embodiments of the present disclosure can estimate these parameters in a substantially automated fashion by running the mechanical system through a testing sequence to be defined in more detail herein. Results of this testing sequence can be used to generate accurate inertia and friction coefficient estimates for the system. These estimated parameters can subsequently be used to facilitate simplified and accurate tuning and control of the motion system.
  • FIG. 1 depicts a simplified closed-loop motion control architecture.
  • Controller 102 is programmed to control motor 104, which drives mechanical load 06.
  • Controller 102, motor 104, and load 06 comprise the primary components of an exemplary motion control system.
  • load 106 can represent an axis of a single- or multi- axis robot or positioning system.
  • controller 102 sends control signal 108 instructing the motor 104 to move the load 106 to a desired position at a desired speed.
  • the control signal 108 can be provided directly to the motor 104, or to a motor drive (not shown) that controls the power delivered to the motor 104 (and consequently the speed and direction of the motor).
  • Feedback signal 110 indicates a current state (e.g., position, velocity, etc.) of the motor 104 and/or load 106 in substantially real-time.
  • feedback signal 110 can be generated, for example, by an encoder or resolver (not shown) that tracks an absolute or relative position of the motor.
  • the feedback signal can be provided by a speed/position estimator.
  • the controller monitors feedback signal 1 10 to ensure that the load 106 has accurately reached the target position.
  • the controller 102 compares the actual position of the load as indicated by the feedback signal 1 10 with the target position, and adjusts the control signal 108 as needed to reduce or eliminate error between the actual and target positions.
  • load 106 can represent a spinning load (e.g. , a pump, a washing machine, a centrifuge, efc.) driven by motor 104, in which controller 102 controls the rotational velocity of the load.
  • controller 102 provides an instruction to motor 104 (via control signal 08) to transition from a first velocity to a second velocity, and makes necessary adjustments to the control signal 108 based on feedback signal 110.
  • control signal 08 controls the rotational velocity of the load.
  • the control signal output generated by the controller 102 in response to an error between the desired position or velocity and the target position or velocity (as reported by the feedback signal 110) depends on the gain coefficients for the control loop. Design engineers must often employ a trial-and-error approach to identifying suitable gain coefficients (i.e. tuning the control loop), since suitable gain selection depends on physical characteristics of the mechanical system being controlled. For example, mechanical systems with a high inertia (resistance to acceleration or deceleration) may require relatively high initial torque to initiate a move to a new position or velocity, particularly if the application requires rapid convergence on the target position/velocity.
  • Non-optimal gain settings can result in undesired mechanical oscillations as the system performs multiple corrective iterations before settling on the target position or velocity. Such oscillations can introduce instability, cause system delays, and consume. excessive power as a result of the additional work required to bring the system to a stable state.
  • the friction of the motor can also affect how the mechanical system responds to a given control signal, and is therefore a factor to be considered when tuning the control system.
  • Control system tuning can be simplified if accurate estimates of the mechanical system's inertia and friction coefficient are known. Knowledge of these parameters can also improve performance of the system during operation. Accordingly, one or more embodiments of the present application can accurately estimate a controlled mechanical system's inertia and friction coefficient in a substantially automated fashion.
  • FIG. 2 is a block diagram of an exemplary non-limiting inertia estimating system capable of generating estimated values of a mechanical system's inertia and friction coefficient.
  • Inertia estimator 202 can include a torque command generator 204, a velocity monitoring component 206, an inertia component 208, a friction coefficient component 210, an interface component 212, one or more processors 214, and memory 216.
  • one or more of the torque command generator 204, velocity monitoring component 206, inertia component 208, friction coefficient component 210, interface component 212, the one or more processors 214, and memory 218 can be electrically and/or communicatively coupled to one another to perform one or more of the functions of the inertia estimator 202.
  • components 204, 206, 208, 210, and 212 can comprise software instructions stored on memory 216 and executed by processor(s) 214.
  • the inertia estimator 202 may also interact with other hardware and/or software components not depicted in FIG. 2.
  • processor(s) 214 may interact with one or more external user interface device, such as a keyboard, a mouse, a display monitor, a touchscreen, or other such interface devices.
  • Interface component 212 can be configured to receive user input and to render output to the user in any suitable format (e.g., visual, audio, tactile, etc.).
  • User input can be, for example, user-entered parameters used by the inertia estimator when executing an inertia estimation sequence (to be described in more detail below).
  • Torque command generator 204 can be configured to output a torque control command that various continuously over time according to a defined testing sequence.
  • Velocity monitoring component 206 can receive velocity data for the mechanical system for use in calculating the inertia and friction coefficient. In some embodiments, the velocity monitoring component 206 can measure and record the velocity of the motor over time in response to the applied torque control command generated by the torque command generator 204.
  • the velocity monitoring component 206 can receive the measured velocity data from separate measuring instrumentation.
  • Inertia component 208 and friction coefficient component 210 can be configured to calculate an inertia and a friction coefficient, respectively, based on the time-varying torque command generated by torque command generator 204 and the measured velocity curve acquired by the velocity monitoring component 206.
  • the one or more processors 214 can perform one or more of the functions described herein with reference to the systems and/or methods disclosed.
  • Memory 216 can be a computer-readable storage medium storing computer-executable
  • the inertia estimator can generate estimates for a mechanical system's inertia and friction coefficient by running the system through a testing sequence and calculating the estimates based on the results.
  • FIG. 3 is a block diagram illustrating the inputs and outputs associated with inertia estimator 302 (similar to inertia estimator 202).
  • Inertia estimator 302 can generate a torque command 310, which instructs a motor driving the motion system to rotate in a specified direction at a given torque.
  • inertia estimator 302 can control torque command 310 such that the torque value varies continuously over time between a maximum and minimum torque value. Inertia estimator 302 controls the torque value issued via torque command 310 in accordance with a testing sequence having user-defined parameters, as will be discussed in more detail below.
  • inertia estimator 302 can control torque command 310 as a function of the velocity feedback 304 and one or more user-defined setpoints.
  • the user-defined setpoints can include one or more torque limits 306 defining the upper and lower bounds of the torque command signal, and/or one or more velocity checkpoints 308 defining trigger velocity valves used to control the torque command 310 and generate the estimates.
  • inertia estimator 302 Upon completion of the testing sequence, inertia estimator 302 generates an estimate of the motion system's inertia 312 and/or an estimate of the motion system's friction coefficient 314. Inertia estimator 302 determines these estimates based on the torque command 310 that was issued to the motion system and the corresponding velocity feedback 304. In one or more embodiments, inertia estimator 302 can integrate selected portions of the torque curve (corresponding to torque command 310) and the velocity curve (corresponding to velocity feedback 304) over time, and calculate the inertia estimate 312 and the friction coefficient estimate 314 as functions of these integrals.
  • FIG. 4 illustrates the interactions between inertia estimator and a motion control system during an exemplary testing sequence.
  • motion system 424 comprises a motor 424, which responds to control signaling 420 provided by controller 418.
  • Motor 424 is used to drive a load (not shown), such as a positioning axis, a rotational component of a machine, or other motor-driven load.
  • Controller 418 also monitors feedback 422, which provides substantially real-time state data for the motor 424 (e.g., position, speed, etc.).
  • inertia estimator 402 is depicted as a separate element from controller 418 for clarity.
  • inertia estimator 402 can exchange data with controller 418 or other elements of the motion system 424 via any suitable communications means, including but not limited to wired or wireless networking, hardwired data links, or other such communication means.
  • inertia estimator 402 can be an integrated component of controller 418.
  • inertia estimator 402 can be a functional component of the controller's operating system and/or control software executed by one or more processors residing on the controller 418.
  • Inertia estimator 402 can also be a hardware component residing within controller 418, such as a circuit board or integrated circuit, that exchanges data with other functional elements of the controller 418.
  • Other suitable implementations of inertia estimator 402 are within the scope of certain embodiments of the present disclosure.
  • one or more user-defined parameters 412 are provided to inertia estimator 402 via interface component 406 (similar to interface component 212 described in connection with FIG. 2). These parameters can include a maximum torque u max and a minimum torque u min defining upper and lower limits on the torque command to be generated by torque command generator 408 (similar to torque command generator 204 of FIG. 2).
  • the inertia estimator 402 may only require the maximum torque u max to be defined by the user, and can use the magnitude of the defined maximum torque as a limiting value for both the forward and reverse directions.
  • inertia estimator 402 may accept values for both u max and u min , allowing for different torque setpoints for the forward and reverse directions, respectively.
  • the values selected for u max and u min can correspond to the expected operational limits of the motion system 424, thereby allowing the inertia and friction coefficient to be determined based on characteristics of the motion system 424 over the system's entire torque profile.
  • User-defined parameters 412 can also include one or more velocity checkpoints (v1 , v2, v3...) defining critical velocities used to define stages of the test sequence, as will be described in more detail below.
  • Interface component provides torque command generator 408 with the user-defined parameters 412.
  • torque command generator 408 When testing is initiated, torque command generator 408 outputs a torque command 414 to the motion system 424. Torque command 414 is represented as u t), since the torque command generator 408 will vary the torque command continuously over time.
  • inertia estimator 402 sends torque command 414 to controller 418, which in turn instructs the motor 424 (via control signaling 420) to rotate in the indicated direction at the indicated torque.
  • velocity monitoring component 410 reads velocity data 416 from controller 418 (which itself measures the velocity of the motor 424 via feedback 422). The measured velocity 416 over time is represented as v(t).
  • torque command generator 408 can vary the torque command 414 in accordance with a predefined testing sequence, wherein phases of the testing sequence are triggered by the velocity feedback 416 relative to the user-define parameters 412.
  • FIG. 5 illustrates an exemplary torque command u(t) and corresponding velocity feedback v(t) graphed over time.
  • the torque command signal u(t) is bounded by u max and ⁇ 1 ⁇ 2 ⁇ .
  • Velocity checkpoints v1 , v2, and v3, shown on velocity graph 504 will determine phase transitions of the testing sequence.
  • the values of ⁇ 1 ⁇ 2 ⁇ , Um in , v1 , v2, and v3 can be defined by the user prior to testing (e.g., as user-defined parameters 412 of FIG. 4).
  • the rate at which torque command is decreased or increased can be configured as a user-defined parameter of the inertia estimator 402 (e.g., via interface component 406).
  • the torque command generator gradually increases the torque command u(t) until either the motor velocity v(t) reaches velocity checkpoint v3 or the torque command u(t) reaches the torque setpoint u max .
  • the inertia estimator can initiate a suitable timeout handling routine.
  • This timeout handling routine can comprise, for example, aborting the testing sequence and displaying an error message via interface component 406.
  • Velocity checkpoint v2 is set to be greater than zero and less than v3, and is used to delineate the beginning of the acceleration phase of the testing sequence and the end of the deceleration phase, as will be discussed in more detail below.
  • the inertia estimator has the data it requires to calculate estimates for the inertia and friction coefficient for the mechanical system.
  • testing sequence described above in connection with FIG. 5 is only intended to represent an exemplary, non-limiting testing sequence. It is to be understood that any suitable testing sequence that continuously varies the torque command over time and measures a corresponding velocity profile for the motion system is within the scope of certain embodiments of this disclosure.
  • the foregoing example describes the torque command as changing direction in response to the velocity reaching the respective velocity checkpoints
  • some test sequences may include phases in which the torque command only changes its rate of increase or decrease when the velocity checkpoint is reached, without altering the direction of the torque command (e.g., an increasing torque command may continue to increase in response to v ®> reaching a phase checkpoint, but at a slower rate).
  • the inertia estimator 402 records both the torque command signal generated by torque command generator 408 and the corresponding motor velocity read by the velocity monitoring component 410. These torque and velocity curves characterize the motion system 424 such that accurate estimates of the inertia and friction coefficient can be calculated based on the curves. In one or more embodiments, inertia estimator calculates these estimates based on integrals of and . The following illustrates an exemplary, non- limiting technique for leveraging integrals of and to derive estimates for the inertia and friction coefficient for a motion system.
  • J is the inertia
  • B is the friction coefficient
  • u t) is the torque command signal
  • v(t) is the corresponding velocity of the motion system in response to the torque signal u(t) (e.g., u(t) and v(t) described above in connection with FIGs. 4 and 5).
  • u acc (t) and v acc (t) are portions of u(t) and v(t), respectively, corresponding to the acceleration phase of the testing sequence
  • u dec (t) and v dec (t) are portions of u(t) and u(t), respectively
  • Equations (2) and (3) can be solved to yield estimates of the inertia J and friction coefficient S:
  • the velocity of the motion system at the end of this acceleration phase is recorded as v4 (as indicated on graph 504).
  • the inertia estimator 402 can be configured to recognize these acceleration and deceleration phase delineations in order to derive the estimated inertia and friction coefficient based on equations (4) and (5) above. It is to be appreciated that other criteria for delineating the acceleration and deceleration phases are also within the scope at certain embodiments of this disclosure.
  • Equations (12) and (13) are exemplary, non-limiting formulas for calculating an estimated inertia and friction coefficient for a motion system based on continuous torque and velocity data. It is to be appreciated that any suitable formula for calculating these parameters through integration of a continuous torque signal and a corresponding velocity curve are within the scope of certain embodiments of this disclosure.
  • FIG. 6 is a block diagram depicting an inertia estimator 602 having an inertia component 606 and friction coefficient component 608 according to one or more embodiments of the present disclosure.
  • inertia estimator 602 is depicted as including both an inertia component 606 and a friction coefficient component 608, it is to be appreciated that some embodiments of the inertia estimator 602 may include only one of these components without deviating from the scope of the present disclosure. That is, the inertia estimator 602 may be configured to calculate one or both of the inertia or the friction coefficient.
  • the torque command generator 604 (similar to torque command generator 408 and 204) provides the torque data to inertia component 606 and friction coefficient component 608 (similar to inertia component 208 and friction coefficient component 210, respectively, of FIG. 2).
  • the velocity monitoring component 606 can provide the acquired velocity data v(t) to inertia component 606 and friction coefficient component 608.
  • inertia estimator 602 can segregate the torque and velocity data into acceleration phase data (u acc (t) and v acc (t)) and deceleration phase data ( dec (t) and v dec (t)) so that values can be derived for U acc , U dec , V acci and V dec according to equations (6)-(9) above.
  • Inertia component 606 can integrate u acc (t), u dec (t), v acc (t), and v dec t) and calculate the estimated inertia J 610 as a function of the integrals (e.g., based on equation (12) or variation thereof).
  • friction coefficient component 608 can calculate the estimated friction coefficient B 616 as a function of the integrals (e.g., based on equation (13)).
  • Inertia estimator 602 can then output the estimated inertia J 610 and friction coefficient B 612 according to the requirements of a particular application in which the inertia estimator operates.
  • inertia estimator 602 may provide inertia J 610 and friction coefficient B 612 to a motion controller 614, which can use the values of J and B to facilitate tuning one or more gain coefficients. Inertia estimator 602 may also output the estimated values for J and B to a display (e.g., via interface component 212) so that the values can be viewed and entered manually into a separate motion control or tuning application. Accurate estimates of the motion system's inertia J 610 and friction coefficient B 612 can simplify the tuning process and facilitate accurate parameter tuning, resulting in precise and energy-efficient machine motion.
  • the inertia estimator calculates values for J and B based on data collected over the motion system's entire torque profile (rather than extrapolating based on the system's response to one or more constant torque commands), the inertia and friction coefficient estimates derived by the inertia estimator are more likely to be accurate over the full operational range of the motion system.
  • FIG. 7 illustrates an architecture in which inertia estimator 706 operates as an independent separate component from controller 702.
  • inertia estimator 706 is capable of generating its own torque command signal independently of controller 702.
  • the motor 704 being tested and controlled can receive its torque command signal 708 from either controller 702 or inertia estimator 706 depending on the state of switch 712.
  • the velocity feedback 710 from the motor 704 can be provided to both the controller 702 and inertia estimator 706.
  • switch 712 can be set to convey the torque command u(t) from inertia estimator 706. Testing can proceed as described in previous examples, such that inertia estimator 706 generates estimated values for the inertia J and friction coefficient B for the motion system. Inertia estimator 706 can then provide the estimated values for J and B to the controller 702, which can use these values to determine suitable controller gain coefficients or other control parameters. Once the controller parameters have been set, switch 712 can be positioned to provide torque command 708 from controller 702 to the motor 704, and normal operation of the motion system can be carried out using the controller gain coefficients derived based on J and B.
  • FIG. 8 illustrates an exemplary motion control tuning application that utilizes the estimated inertia and friction coefficient generated by the inertia estimator.
  • a tuning application 804 is used to tune the controller gains for controller 806, where the controller 806 controls operation of a motor-driven motion system (not shown).
  • Inertia estimator 802 can generate estimates of the motion system's inertia J 808 arid friction coefficient B 810 according to the techniques described above. Specifically, inertia estimator 802 instructs controller 806 to send a continuous torque command to the motions system's motor, where the torque command varies
  • the inertia estimator 802 can generate and send its own continuous torque command to the motion system.
  • the testing sequence can include acceleration and deceleration phases, during which the inertia estimator 802 monitors and records the velocity of the motion system in response to the applied torque command.
  • inertia estimator 802 can calculate estimates of inertia J 808 and friction coefficient B 810 based on integrals of the time-varying torque command signal and the corresponding time-varying motion system velocity (e.g., based on equations (12) and (13)).
  • Inertia estimator 802 can then provide inertia J 808 and friction coefficient B 810 to the tuning application 804. Alternatively, inertia estimator 802 can render the values of J and B on a user interface, allowing a user to manually enter the estimated inertia and friction coefficients into the tuning application 804. Knowledge of J and/or B can allow the tuning application 804 to generate suitable estimates for one or more controller gains 812 based on the mechanical properties of the motion system.
  • Tuning application 804 can generate suitable values for controller gains 812 as a function of the inertia J and/or friction coefficient B 810, as well as control system bandwidth (e.g., crossover frequency) 814, which can be manually adjusted by the user via interface 816 to achieve desired motion characteristics.
  • control system bandwidth e.g., crossover frequency
  • the inertia estimator described herein can be used to generate reliable estimates of a motion system's inertia J and friction coefficient B during initial deployment of the motion control system, prior to normal operation.
  • the inertia estimator can be used in connection with configuring and tuning the controller parameters (e.g., controller gain coefficients) prior to runtime. Once set, these parameters typically remain fixed after system startup, unless it is decided to re-tune the system at a later time.
  • the inertia estimator can be configured to automatically recalculate values for J and B periodically or continuously during runtime.
  • controller parameters that are based on estimates of J and B can be dynamically adjusted during normal operation, substantially in real-time, to compensate for gradual changes to the motion system's mechanical properties (e.g., as a result of mechanical wear and tear, changes to the load seen by a motor, etc.).
  • FIGS. 9-10 illustrate various methodologies in accordance with certain disclosed aspects. While, for purposes of simplicity of explanation, the methodologies are shown and described as a series of acts, it is to be understood and appreciated that the disclosed aspects are not limited by the order of acts, as some acts may occur in different orders and/or concurrently with other acts from that shown and described herein. For example, those skilled in the art will understand and appreciate that a methodology can alternatively be represented as a series of interrelated states or events, such as in a state diagram. Moreover, not all illustrated acts may be required to implement a methodology in accordance with certain disclosed aspects.
  • FIG. 9 illustrates an example methodology 900 for estimating an inertia and a friction coefficient for a controlled mechanical system.
  • a continuous torque command u(t) is sent to a controller of a motion system, where torque command u(t) varies over time between defined maximum and minimum torque setpoints.
  • the torque command (t) can accord to a predefined testing sequence, such that the output of u(t) depends on the phase of the testing sequence and the response of the mechanical system relative to one or more user-defined setpoints.
  • the test sequence can comprise both acceleration and
  • the torque commend (t) can vary between positive and negative torque values during the testing sequence, causing the motion system to accelerate in both directions during the test.
  • estimates for at least one of the inertia or the friction coefficient of the motion system are calculated based on integrals of the torque curve u t) and the velocity curve v(t).
  • the curves for u(t) and v(t) can be divided into an acceleration phase and a deceleration phase, and the inertia and the friction coefficient can be calculated based on respective integrals of the acceleration and deceleration phases (e.g., using equations (12) and (13) above, or other suitable equation).
  • one or more parameters for the motion system are set as a function of the estimated inertia and/or friction coefficient calculated at step 906.
  • one or more controller gain coefficients can be set based on the estimated inertia and/or friction coefficient calculated according to steps 902-906.
  • FIG. 10 illustrates an example methodology 1000 for executing a testing sequence on a motion control system in order to estimate the inertia and friction coefficient.
  • a torque command to the motion system is continuously increased until the torque command reaches a maximum torque setpoint or until the motion system accelerates to a first velocity checkpoint (e.g., velocity checkpoint v3 of FIG. 5) in response to the applied torque command.
  • the maximum torque setpoint and first velocity checkpoint can correspond to upper operational bounds for the motion system, and can be set prior to testing (e.g. , a maximum torque and velocity expected during normal operation of the motion system).
  • the rate at which the torque command is increased can also be defined by the user.
  • the torque command can be held at the maximum torque value until the motion system accelerates to the first velocity checkpoint. If the velocity of the motion system does not reach the first velocity checkpoint within a defined timeout period, an appropriate timeout handling sequence can be initiated.
  • the velocity checkpoint As the motion system accelerates from rest toward the first velocity checkpoint, the velocity will pass through a second velocity checkpoint (e.g., velocity checkpoint v2 of FIG. 5), where the second velocity checkpoint is greater than zero and less than the first velocity checkpoint.
  • the acceleration phase of the test is initiated when the velocity initially reaches this second velocity checkpoint.
  • the torque command can be continuously decreased at 904, until the torque command reaches a minimum torque setpoint or until the motion system decelerates back to the first velocity checkpoint.
  • the velocity will continue to increase beyond the first velocity checkpoint for some time after the torque signal begins decreasing in step 1004.
  • the decreasing torque command signal will subsequently cause the motion system to decelerate back to the first velocity checkpoint.
  • the rate at which the torque command is decreased can be configured as a user-defined parameter.
  • the torque command decreases to zero prior to the motion system returns to the first velocity checkpoint, and continues to decrease in the negative direction until the minimum torque setpoint is reached or until the motion system decelerates to the first velocity checkpoint. That is, the torque command crosses zero during this phase of the testing sequence. This signals the end of the acceleration phase and the beginning of the deceleration phase of the test. Similar to step 1002, if the torque command decreases to the minimum torque setpoint before the motion system reaches the first velocity checkpoint, the torque command will be held at the minimum torque value until the first velocity checkpoint is reached.
  • the torque command value at the time the first velocity checkpoint was reached is maintained as a constant value at 1006 until the motion system decelerates back to the second velocity checkpoint. This triggers the end of the deceleration phase of the test.
  • the time at which the torque command crossed zero during step 1004 is determined.
  • This time designated TCROSSOVER
  • integrations are performed on the acceleration phase portions of the torque command curve and corresponding velocity curve of the motion system. That is, the torque command data is integrated from time TO to TCROSSOVER, where TO represents the start time for the acceleration phase (the time at which the velocity initially crossed the second velocity checkpoint; e.g., time t3 of FIG. 4). The result of this acceleration phase integration of the torque command is designated as U ACC .
  • the continuous velocity data measured from the motion control system in response to the applied torque command is integrated from time TO to TCROSSOVER to yield an integrated velocity result V ACC for the acceleration phase.
  • the estimated inertia and/or friction coefficient for the motion system is calculated based on the integrals U acc , V acc , U dec , and V dec .
  • the estimated inertia and friction coefficient may be calculated based on equations (12) and (13), respectively, or a variation thereof.
  • FIG. 11 is a block diagram of an exemplary non-limiting motion profile generating system capable of generating motion profiles for point-to- point moves of a motion control system.
  • Motion profile generating system 1102 can include a position profile generator 1104, a velocity profile generator 1106, an interface component 1108, one or more processors 11 10, and memory 11 12.
  • one or more of the position profile generator 1 104, velocity profile generator 1 106, interface component 1108, the one or more processors 1 1 10, and memory 1 1 12 can be electrically and/or communicatively coupled to one another to perform one or more of the functions of the motion profile generating system 1 102.
  • the position profile generator 1 104, velocity profile generator 1 106, interface component 1108, the one or more processors 1 1 10, and memory 1 1 12 can be electrically and/or communicatively coupled to one another to perform one or more of the functions of the motion profile generating system 1 102.
  • components 1104, 1106, and 1 108 can comprise software instructions stored on memory 1112 and executed by processor(s) 11 10.
  • the motion profile generating system 1102 may also interact with other hardware and/or software components not depicted in FIG. 11.
  • processor(s) 1 110 may interact with one or more external user interface devices, such as a keyboard, a mouse, a display monitor, a touchscreen, or other such interface devices.
  • Interface component 1108 can be configured to receive user input and to render output to the user in any suitable format (e.g., visual, audio, tactile, efc).
  • User input can be, for example, user-entered constraints (e.g., maximum acceleration, maximum velocity, etc.) used by the motion profile generating system 1102 to calculate a motion profile (to be described in more detail below).
  • Position profile generator 1104 can be configured to receive an indication of a desired target position for a motion system and calculate a motion profile for transitioning to the target position within the parameters of the user-defined constraints.
  • velocity profile component 1106 can receive an indication of a desired target velocity for the motion control system and generate a motion profile for transitioning the motion system from a current velocity to the target velocity in conformance with the defined constraints. While FIG. 1 depicts the motion profile generating system as including both the position profile generator 1104 and the velocity profile generator 1106, It is to be appreciated that some embodiments of the motion profile generating system 1102 may include only one of the position profile generator 1104 or the velocity profile generator 1106 without deviating from the scope of this disclosure.
  • the one or more processors 1110 can perform one or more of the functions described herein with reference to the systems and/or methods disclosed.
  • Memory 1112 can be a computer-readable storage medium storing computer-executable instructions and/or information for performing the functions described herein with reference to the systems and/or methods disclosed.
  • the profile generator described herein can be an integrated component of a motion controller.
  • FIG. 12 illustrates an exemplary motion control system 1200 comprising a master controller 1202 that utilizes a profile generator 206 according to one or more embodiments of this disclosure.
  • Master controller 1202 can be, for example, a
  • profile generator 1206 can be a functional component of the controller's operating system and/or control software executed by one or more processors residing on the controller 1202.
  • Profile generator 1206 can also be a hardware component residing within controller 1202, such as a circuit board or integrated circuit, that exchanges data with other functional elements of the controller 1208.
  • Other suitable implementations of profile generator 1206 are also within the scope of certain embodiments of this disclosure. For example, although profile generator 1206 is illustrated in FIG.
  • the profile generator 1206 may be a separate element from controller 1202 in some embodiments.
  • profile generator 1206 can exchange data with controller 1202 or other elements of the motion system via any suitable communications means, including but not limited to wired or wireless networking, hardwired data links, or other such communication means.
  • Exemplary motion control system 1200 also comprises a motor drive 1222, which includes a motion controller 1214 for controlling a motion device (e.g., a motor, not shown) in accordance with a motion profile 1212 provided by master controller 1202.
  • the motion profile 1212 defines a trajectory for transitioning the motion device from a current position or velocity to a target position or velocity, where the trajectory is defined in terms of one or more of a position reference, a velocity reference, an acceleration reference, and/or a jerk reference.
  • motor controller 1214 will translate the motion profile 1212 into control signaling 1216, which is sent to the motion device to effect transitioning of the motion device to the target position or velocity.
  • motor controller 1214 will also monitor a feedback signal 1220 indicating an actual state of the motion device (e.g., the real-time position, velocity, etc.) as the control signaling 1216 is being applied. Based on this feedback signal 1220, the motor controller 1214 will adjust the control signaling 1216 as necessary to ensure that the motion device moves in accordance with the motion profile 1212 as closely as possible. Alternatively, if the motor controller 1214 is an open-loop controller, the motor controller 1214 will still generate control signaling 1216 based on motion profile 1212, but will not monitor the feedback signal 1220 during the resulting move.
  • a feedback signal 1220 indicating an actual state of the motion device (e.g., the real-time position, velocity, etc.) as the control signaling 1216 is being applied. Based on this feedback signal 1220, the motor controller 1214 will adjust the control signaling 1216 as necessary to ensure that the motion device moves in accordance with the motion profile 1212 as closely as possible.
  • the motor controller 1214 is an open-loop controller, the motor
  • master controller 1202 controls the system in accordance with a control program 1210, which is stored and executed on the controller 1202.
  • control program 1210 may require that the motion device move to a new position, or transition to a new velocity.
  • the destination position or velocity 1208 is provided to profile generator 1206, which calculates a motion profile 1212 that defines a trajectory for the move.
  • Profile generator 1206 calculates the motion profile 1212 as a function of one or more motion constraints 1204, which can represent mechanical constraints of the motion system or user preferences regarding operation of the motion device.
  • Motion constraints 1204 can be provided by the user prior to operation (e.g., via interface component 1108 of FIG. 11).
  • profile generator 1206 can also calculate the motion profile 1212 based additionally on the sample time 1218 of the controller 1202, to ensure that the profile segments align with the controller's sample points, as will be discussed in more detail below.
  • motion profile 1212 can define the trajectory of the point-to-point move over time in terms of one or more of a position reference, a velocity reference, an acceleration reference, and a jerk reference. These references represent functions calculated by the motion profile generator 1206 defining how the respective motion attributes will be controlled as a function of time for a given point-to- point move. These references are mathematically related to one another as derivatives. That is, jerk is the derivative of acceleration, acceleration is the derivative of velocity, and velocity is the derivative of position. Profile generator 1206 can calculate these references for respective stages of the trajectory profile, as will be discussed in more detail below.
  • profile generator 1206 provides the motion profile 1212 to the motor controller 1214, which translates the motion profile 1212 into control signaling 1216 that instructs the motion device to perform the desired point-to-point move in accordance with the motion profile 1212.
  • control signaling 1216 will be a function of the motion profile 1212 as well as feedback signal 1220, which informs the motor controller 1214 of the actual state of the motion device in real-time.
  • the control signaling 1216 will be a function only of the motion profile 1212.
  • master controller 1202 may be a self-contained controller that includes integrated motor control capabilities. In such applications, the controller 1202 may itself translate the motion profile 1212 into a suitable control signal 316 and send this control signal 1216 to the motion device, rather than providing the motion profile 1212 to a separate motor drive 1222.
  • profile generator 1206 may be an integrated component of motor drive 1222.
  • Profile generator 1206 can be one or both of a position profile generator or a velocity profile generator. These two types of profile
  • position profile generator 1302 receives as inputs a set of constraints 1304, which can represent mechanical constraints of the controlled system or user preferences regarding behavior of the motion system. These constraints can include upper limits on the velocity, acceleration, deceleration, and jerk, as well as a sample time representing an update period of the controller's control signal (typically measured in milliseconds). These constraint values may be set by the user (e.g., via interface component 1108 of FIG. 11 ), although in some embodiments the position profile generator 1302 may determine the controller's sample time automatically. These constraints 1304 may be set once during deployment of the motion control system, or may be reconfigured for each move. Position profile generator 1302 allows the acceleration and deceleration limits to be configured individually to
  • the sample time is used by the profile generator 1302 to improve accuracy of the motion profile, as will be described in more detail below.
  • the position profile generator 1302 will receive a position step command 1308 specifying a new target position for the motion system.
  • Position step command 1308 may be generated by the control program executing on the controller (e.g., control program 1210 of FIG. 12), or may be a move instruction manually input by a user.
  • position profile generator calculates a constraint-based, time-optimal motion profile 1306 defining a trajectory for moving the load from its current position to the target position defined by the position step command 1308.
  • the motion profile 1306 comprises one or more of a jerk reference, an acceleration reference, a velocity reference, or a position reference (which are mathematically related to each other as derivatives).
  • Position profile generator 1302 defines these references as functions of time for each of a set of defined motion profile stages or segments. Table 1 summarizes the seven segments of a point-to-point motion profile.
  • the acceleration increases continuously from zero to a constant acceleration. In some scenarios, this constant acceleration will be the maximum acceleration defined by constrains 1304. However, for relatively short position steps this the position profile generator 1302 may determine that a smaller acceleration would result in a more accurate transition to the target position.
  • the second stage ACCJHOLD
  • the acceleration is held at the constant rate.
  • the third stage ACC_DEC
  • the acceleration is gradually decreased until the constant velocity is reached.
  • this constant velocity is held during the fourth stage (VELJHOLD) as the system approaches the target position.
  • the trajectory enters the fifth stage (DECJNC), during which the system begins decelerating at a gradually increasing rate from zero to a target deceleration defined by the motion profile.
  • DEC_HOLD the sixth stage
  • the deceleration is gradually decreased until the system reaches zero velocity, ending the move sequence.
  • position profile generator 1302 determines which of these seven profile segments are required for a time-optimal motion profile, and calculates one or more of a time varying jerk reference, acceleration reference, velocity reference, or position reference for each segment deemed necessary for the move.
  • the calculated references for the respective stages are combined to yield a complete motion profile, which can be used by an open-loop or closed-loop motion controller (e.g., a motor drive) to drive the motion system through the trajectory defined by the motion profile.
  • an open-loop or closed-loop motion controller e.g., a motor drive
  • FIG. 14 illustrates an exemplary velocity profile generator 1402 according to one or more embodiments.
  • Velocity profile generator 1402 is similar to position profile generator 1302, but is used to calculate motion profiles in response to a desired change in velocity rather than a change in position. That is, velocity profile generator 1402 calculates a time-optimal motion profile 1406 for transitioning a motion system from a current velocity to a target velocity specified by velocity setpoint 1408. Since transition to a desired velocity setpoint is typically indifferent to the motion system's position, the constraints 1404 defined for the velocity profile generator 1402 may omit the position limit. Likewise, the motion profile 1406 generated by velocity profile generator 1402 may omit a position reference, and define the motion profile exclusively in terms of a time varying jerk reference, acceleration reference and/or velocity reference.
  • motion controllers generate one of either trapezoidal motion profiles or S-curve motion profiles.
  • the profile generator of the present disclosure can generate profiles according to a third profile type, referred to herein as an ST-curve profile.
  • FIG. 15 compares an exemplary ST-curve profile with traditional trapezoidal and S-curve profiles.
  • the time graphs illustrated in FIG. 15 plot the position, velocity, acceleration, and jerk for a given motion trajectory between position 0 (the start position) and position 2.5 (the target position, as may be defined by position step command 1308 of FIG. 13).
  • the plotted values are mathematically related to one another as derivatives. That is, velocity is the derivative of position (i.e., the rate of change of position), acceleration is the derivative of velocity, and jerk is the derivative of acceleration.
  • the acceleration curve for this profile steps abruptly between constant values, as illustrated by the dotted line on the acceleration graph.
  • the rate of deceleration is twice that of acceleration, so the acceleration curve for the trapezoidal case steps to 0.5 during the acceleration stage, 0 for the constant velocity stage, and -1.0 for the deceleration stage.
  • the jerk curve (representing the rate of change of acceleration/deceleration) pulses briefly during moments of transition (not plotted) and remains at zero when acceleration or deceleration remains constant, as shown by the dotted line on the jerk graph of FIG. 15.
  • the trapezoidal profile Since the trapezoidal profile always accelerates and decelerates at a constant rate without gradual transitioning to and from the constant velocity stage, the trapezoidal curve profile can traverse the distance between the current position and the target position relatively quickly. However, the sudden transitions between acceleration/deceleration and constant (or zero) velocity can introduce undesirable mechanical turbulence in the system. Additionally, since the deceleration does not decrease gradually as the motion system approaches the target position, but instead maintains constant deceleration until the target position is reached before suddenly shifting to zero velocity, the trapezoidal motion profile has a high likelihood of overshooting the target position at the end of the initial traversal, requiring the controller to apply a compensatory control signal to bring the load back to the target position. This process may need to be iterated several times before the system settles on the target position, introducing undesirable system oscillations.
  • the S-curve position profile shows a smoother transition between the initial position and the target position, though at the expense of additional time required to reach the target.
  • One or more embodiments of the profile generator described herein can support generation of S-curve motion profiles.
  • the profile generator described herein can support S-curve motion profiles having asymmetrical acceleration and deceleration. This is illustrated on the acceleration graph of FIG. 15, which depicts the S-curve as having a limit of 0.5 during acceleration, and a limit of -1 during deceleration.
  • the profile generator can allow separate acceleration and deceleration limits to be configured as system constraints (see, e.g., constraints 1304 of FIG. 13), and calculate the motion profile in view of these constraints.
  • acceleration/deceleration increases and decreases during stages 1 , 3, 5, and 7 of the motion profile for the S-curve case are always constant. That is, the jerk is always a constant value for any given stage of the motion profile - either 1 , 0, or -1 in the present example. This can result in sharp transitions between the increasing/decreasing acceleration (or deceleration) stages and constant acceleration stages, as illustrated on the acceleration graph.
  • one or more embodiments of the profile generator described herein can calculate motion profiles that accord to the ST-curve profile type.
  • An exemplary ST-curve profile is represented as the dark solid line on the graphs of FIG. 15.
  • the ST-curve profile gradually varies the jerk continuously over time during the stages of increasing and decreasing acceleration and deceleration. This can result in the smoother acceleration transitions illustrated on the acceleration graph of FIG. 15, and the corresponding smoother velocity and position curves shown in the respective velocity and position graphs.
  • ST-curve profiles can support asymmetrical acceleration and deceleration (that is, the profile generator can calculate profiles having rates of acceleration that differ from the rates of deceleration for a given motion profile). Deriving a mathematical trajectory expression as a function of time while simultaneously finding a time-optimal solution can be challenging when using asymmetric acceleration/deceleration.
  • one or more embodiments of the profile generator described herein can employ an algorithm that leverages a relationship between acceleration and deceleration, and between acceleration jerk and deceleration jerk, and substitute these relationships during the derivation, making it possible to derive the analytical expressions of the trajectories and then find the time-optimal solution.
  • f-i , t 2 , £, and f 5 are the respective durations of the ACCJNC, ACCJHOLD, VEL_HOLD, DECJNC, and DEC_HOLD stages of the motion profile (see Table 1 above).
  • ACCJNC and ACCJDEC are equal in duration, and thus is the duration of both the ACCJNC and ACCJDEC stages.
  • DECJNC is assumed to be equal in duration to DECJ3EC, so is the duration for both DECJNC and DECJDEC.
  • A is the maximum acceleration
  • Solving inequalities (33)-(36) yields appropriate values for V, A, D, J, and / (the maximum values for velocity, acceleration, deceleration, acceleration jerk, and deceleration jerk, respectively).
  • the profile generator can calculate a suitable ST-curve motion profile for a given point-to- point move. It is recognized, however, that the values initially calculated for , t 2 , £, , and t 5 may not be multiples of the controller's sample time, and consequently may not align with the sample points of the motion controller. When a profile segment duration falls between two controller sample points, it may be necessary for the controller to compensate for small differences between the desired control signal output and the actual control signal output.
  • one or more embodiments of the profile generator described herein can perform an additional computation after the maximum values V, A, D, J, and / and the segment durations , t 2 , t 3 , , and f 5 have been derived as described above.
  • each of these duration values can be upper-rounded to the nearest sample time to yield f-iNew, fcNew, feNew, fcwew, and ieNew- This rounding step can be based on the sample time provided to the profile generator as one of the constraints 1304 or 1404.
  • the profile generator can then calculate new values for V, A, D, J, and / using the rounded duration values i 1New . feNew.
  • one or more embodiments of the profile generator described herein is capable of generating S-curve profiles having asymmetric acceleration
  • deceleration see, e.g., the exemplary S-curve trajectory of FIG. 15.
  • An exemplary S-curve profile having asymmetric acceleration and deceleration is derived below.
  • One or more embodiments of the profile generator described herein can generate motion profile references based on the following derivations or variants thereof.
  • # , # , # , and ⁇ are jerk, acceleration, velocity, and position, respectively.
  • t 2 , t 3 , U and fe are the respective durations of the ACCJNC, ACC_HOLD, VELJHOLD,
  • DECJNC DEC_HOLD stages of the motion profile (see Table 1 above).
  • ACCJNC and ACC_DEC are equal in duration, and thus is the duration of both the ACCJNC and ACCJDEC stages.
  • DECJNC is assumed to be equal in duration to DECJDEC, so U is the duration for both DECJNC and DECJDEC.
  • J is the maximum acceleration jerk
  • / is the maximum deceleration jerk
  • A is the maximum acceleration
  • V is the maximum velocity
  • Equations (47)-(51) can yield values for , t 2 , h, , and t 5 (the durations of the respective segments of the S-curve motion profile).
  • the values for V, A, D, J, /, , t 2 , h, f 4 , and t 5 derived according to equations (37) - (56) above can produce an S-curve profile having asymmetrical acceleration and deceleration, and that operates within the defined mechanical constraints or user demands.
  • the profile generator can adapt the resultant S-curve motion profile to the sample time of the controller by way of an additional calculation similar to that described above in connection with the ST-curve profile. That is, after calculating , t 2 , t 3 , U, and t 5 according to the above derivations, the profile generator can upper-round these durations to the nearest sample time to yield new duration values f-iNew, fe ew, h New , t ⁇ ew, and f 5 New- The profile generator can then calculate new values for V, A, D, J, and / using the rounded duration values fiNew, feNew, 3 ⁇ 4 ew, knew, and f 5Ne w- [00145] While motion profiles typically comprise the seven stages listed in Table 1 above, some point-to-point moves may not require all seven segments. For example, if the distance between the current state of the motion system and the target state is relatively small, the VELJHOLD
  • one or more embodiments of the profile generator described herein may support automatic or intelligent segment skipping. That is, rather than perform calculations for all seven stages of the profile, even if one or more of the stages will not be used in the final trajectory, some embodiments of the profile generator described herein can calculate only those stages that will be used in the final trajectory for a given point-to-point move.
  • the motion profile can automatically determine which segments can be skipped during calculation of the motion profile when a new move command is received.
  • the profile generator may determine which segments may be skipped based in part on the total distance between the current position and the target position (in the case of a position change), or the difference between the current velocity and the target velocity (in the case of a velocity change), where smaller differences between the current and target state may suggest elimination of certain segments of the motion profile.
  • the difference between the current and target states may be compared with a set of defined difference ranges, where each defined difference range is associated with one or more segments that may be omitted from a corresponding motion profile.
  • One or more embodiments of the profile generator described herein may also infer which segments may be skipped based on historical motion data.
  • the profile generator may record a history of issued move commands and corresponding trajectory data (e.g., position, velocity, acceleration, and/or jerk over time) for the moves performed in response to the commands.
  • the profile generator can analyze this historical data to make an inference regarding which segments may be omitted for a particular type of move.
  • the profile generator can infer which segments may be skipped based on the shape of trajectories performed in response to past move commands having similar characteristics (e.g., similar distances to traverse, similar speeds at the time the move command was received, etc.).
  • FIGs. 16-19 illustrate segment skipping for exemplary seven- stage position profiles.
  • FIG. 16 illustrates an exemplary S-curve profile that utilizes all seven stages.
  • FIG. 17 illustrates a profile that skips segment 4 (the constant velocity stage).
  • Profile generator may calculate such a profile in cases for which the position or velocity step to be traversed is small enough that the constant velocity stage will not be reached before the target position or velocity is reached. Upon receipt of such a position step or velocity setpoint command, the profile generator can make this determination prior to performing the profile calculations for the desired move, and will only perform calculations on stages 1-3 and 5-7.
  • FIG. 18 illustrates an example profile that skips segments 2 and 6
  • FIG. 19 illustrates an example profile that skips segments 2, 4, and 6.
  • FIGS. 20-22 illustrate various methodologies in accordance with certain disclosed aspects. While, for purposes of simplicity of explanation, the methodologies are shown and described as a series of acts, it is to be understood and appreciated that the disclosed aspects are not limited by the order of acts, as some acts may occur in different orders and/or concurrently with other acts from that shown and described herein. For example, those skilled in the art will understand and appreciate that a methodology can alternatively be represented as a series of interrelated states or events, such as in a state diagram. Moreover, not all illustrated acts may be required to implement a methodology in accordance with certain disclosed aspects.
  • FIG. 20 illustrates an example methodology 2000 for calculating a motion profile for a point-to-point move in a motion control system.
  • a set of motion constraints are defined for a motion control system. These constraints can represent physical constraints of a mechanical system controlled by the motion control system, and can include limits on velocity, acceleration, deceleration, and jerk. The constraints can also include a definition of the sample time for the motion controller used to control the mechanical system.
  • a command to transition the controlled mechanical system to a new position or velocity is received. This command can originate from a motion control program executed by the motion controller, or can be a manual move command entered by a user. The command can be received by a profile generator associated with the motion controller (e.g., profile generator 1206, 1302, or 1402 described above).
  • a motion profile can be calculated for moving the mechanical system from its current position or velocity to the new position or velocity indicated by the command.
  • the profile generator can calculate this motion profile to include a continuous jerk reference defined as a function of time for at least one of the segments of the motion profile.
  • the motion profile can be calculated as an ST-curve according to the derivations described above in connection with equations (14)-(36).
  • Such a motion profile can yield a jerk reference having the general format depicted by the dark solid line of the jerk graph illustrated in FIG. 15, in which the jerk gradually varies over time between a maximum and minimum value according to the calculated jerk function.
  • the controlled mechanical system is instructed to traverse from its current position or velocity to the new position or velocity according to the motion profile defined at step 2006.
  • This can entail, for example, providing the motion profile calculated at step 2006 to a motor drive, which controls a motor that drives the mechanical system in accordance with the motion profile and (in the case of closed-loop control) a feedback signal providing measured real-time state data for the mechanical system.
  • FIG. 21 illustrates an example methodology 2100 for calculating a constraint-based time-optimal motion profile that conforms to a sample time of a motion controller.
  • a set of motion constrains for a controlled mechanical system are defined. As in previous examples, these can include limits on velocity, acceleration, deceleration, and jerk, as well as the sample time of the controller. These constraints can be provided to a profile generator associated with the controller (e.g., profile generator 1206, 1302, or 1402 described above).
  • a command to transition the mechanical system from a current position or velocity to a new position or velocity is received (e.g., by the profile generator).
  • a motion profile for controlling the trajectory of the mechanical system in response to the command is generated by calculating at least one of the maximum
  • step 2106 it is determined whether all profile segment durations calculated at step 2106 are multiples of the sample time of the controller. If all segments have durations that are multiples of the sample time, the method moves to step 2 14, where a motion profile is generated based on the profile segment durations and the values of J, I, A, D, and V calculated at step 2106.
  • step 21 if one or more of the profile segments are not an even multiple of the cycle time, the method moves to step 21 0, where all profile segment durations are upper-rounded to the nearest multiple of the sample time.
  • step 2112 the values of one or more of J, I, A, D, and V are recalculated based on the rounded profile segment durations derived at step 2110. Based on the rounded profile segment durations and the recalculated values of J, I, A, D, and/or V, a motion profile is generated at 2114.
  • FIG. 22 illustrates an example methodology 2200 for efficiently calculating a motion profile for a point-to-point move using segment skipping.
  • a command to transition a controlled mechanical system to a new position or new velocity is received (e.g., at profile generator 1206, 1302, or 1402).
  • a determination can be made regarding which of the seven segments of the motion profile are required to perform the requested point-to- point move. This determination can be made automatically by the profile generator based, for example, on a determination of the distance that must be traversed between the current position and the desired position (in the case of a position change) or the difference between the current velocity and the desired velocity (in the case of a velocity change).
  • step 2210 a motion profile is generated for the point-to-point move by performing profile calculations for all seven segments.
  • step 2208 a motion profile is generated for the point-to-point move by performing calculations only for the required segments, as determined at step 2204.
  • the various embodiments described herein can be implemented in connection with any computer or other client or server device, which can be deployed as part of a computer network or in a distributed computing environment, and can be connected to any kind of data store where media may be found.
  • the various embodiments of the video editing system described herein can be implemented in any computer system or environment having any number of memory or storage units (e.g., memory 216 of FIG. 2 or 1112 of FIG. 11), and any number of applications and processes occurring across any number of storage units. This includes, but is not limited to, an environment with server computers and client computers deployed in a network environment or a distributed computing environment, having remote or local storage. For example, with reference to FIG.
  • the torque command generator 204, velocity monitoring component 206, inertia component 208, friction coefficient component 210, and interface component 212 can be stored on a single memory 216 associated with a single device, or can be distributed among multiple memories associated with respective multiple devices.
  • torque command generator 204, velocity monitoring component 206, inertia component 208, friction coefficient component 210, and interface component . 212 can be executed by a single processor 214, or by multiple distributed processors associated with multiple devices.
  • Distributed computing provides sharing of computer resources and services by communicative exchange among computing devices and systems. These resources and services include the exchange of information, cache storage and disk storage for objects. These resources and services can also include the sharing of processing power across multiple processing units for load balancing, expansion of resources, specialization of processing, and the like. Distributed computing takes advantage of network connectivity, allowing clients to leverage their collective power to benefit the entire enterprise. In this regard, a variety of devices may have applications, objects or resources that may participate in the various embodiments of this disclosure.
  • FIG. 23 provides a schematic diagram of an exemplary networked or distributed computing environment.
  • the distributed computing environment includes computing objects 2310, 2312, etc. and computing objects or devices 2320, 2322, 2324, 2326, 2328, etc., which may include programs, methods, data stores, programmable logic, etc., as represented by applications 2330, 2332, 2334, 2336, 2338.
  • computing objects 2310, 2312, etc. and computing objects or devices 2320, 2322, 2324, 2326, 2328, etc. may comprise different devices, such as personal digital assistants (PDAs), audio/video devices, mobile phones, MP3 players, personal computers, laptops, tablets, etc., where embodiments of the inertia estimator described herein may reside on or interact with such devices.
  • PDAs personal digital assistants
  • Each computing object 2310, 2312, etc. and computing objects or devices 2320, 2322, 2324, 2326, 2328, etc. can communicate with one or more other computing objects 1110, 1112, etc. and computing objects or devices 2320, 2322, 2324, 2326, 2328, efc. by way of the communications network 2340, either directly or indirectly.
  • communications network 2340 may comprise other computing objects and computing devices that provide services to the system of FIG. 23, and/or may represent multiple interconnected networks, which are not shown.
  • applications 2330, 2332, 2334, 2336, 2338 e.g., inertia estimator 202, motion profile generating system 1102, or components thereof
  • applications 2330, 2332, 2334, 2336, 2338 e.g., inertia estimator 202, motion profile generating system 1102, or components thereof
  • an API or other object, software, firmware and/or hardware, suitable for communication with or implementation of various embodiments of this disclosure.
  • computing systems can be connected together by wired or wireless systems, by local networks or widely distributed networks.
  • networks are coupled to the Internet, which provides an infrastructure for widely distributed computing and encompasses many different networks, though any suitable network infrastructure can be used for exemplary communications made incident to the systems as described in various embodiments herein.
  • client/server peer-to-peer
  • hybrid architectures a host of network topologies and network infrastructures, such as client/server, peer-to-peer, or hybrid architectures.
  • the "client” is a member of a class or group that uses the services of another class or group.
  • a client can be a computer process, e.g., roughly a set of instructions or tasks, that requests a service provided by another program or process.
  • a client process may utilize the requested service without having to "know" all working details about the other program or the service itself.
  • a client can be a computer that accesses shared network resources provided by another computer, e.g., a server.
  • a server e.g., a server
  • computing objects or devices 2320, 2322, 2324, 2326, 2328, etc. can be thought of as clients and computing objects 2310, 2312, etc. can be thought of as servers where computing objects 2310, 2312, etc.
  • any computer can be considered a client, a server, or both, depending on the circumstances. Any of these computing devices may be processing data, or requesting transaction services or tasks that may implicate the techniques for systems as described herein for one or more embodiments.
  • a server is typically a remote computer system accessible over a remote or local network, such as the Internet or wireless network
  • the client process may be active in a first computer system, and the server process may be active in a second computer system, communicating with one another over a communications medium, thus providing distributed functionality and allowing multiple clients to take advantage of the information-gathering capabilities of the server.
  • Any software objects utilized pursuant to the techniques described herein can be provided standalone, or distributed across multiple computing devices or objects.
  • the computing objects 2310, 2312, etc. can be Web servers, file servers, media servers, ete. with which the client computing objects or devices 2320, 2322, 2324, 2326, 2328, ete.
  • Computing objects 2310, 2312, ete. may also serve as client computing objects or devices 2320, 2322, 2324, 2326, 2328, ete., as may be characteristic of a distributed computing environment.
  • HTTP hypertext transfer protocol
  • a suitable server can include one or more aspects of the below computer, such as a media server or other media management server components.
  • embodiments can partly be implemented via an operating system, for use by a developer of services for a device or object, and/or included within application software that operates to perform one or more functional aspects of the various embodiments described herein.
  • Software may be described in the general context of computer executable instructions, such as program modules, being executed by one or more computers, such as client workstations, servers or other devices.
  • computers such as client workstations, servers or other devices.
  • client workstations such as client workstations, servers or other devices.
  • FIG. 24 thus illustrates an example of a suitable computing system environment 2400 in which one or aspects of the embodiments described herein can be implemented, although as made clear above, the computing system environment 2400 is only one example of a suitable computing environment and is not intended to suggest any limitation as to scope of use or functionality. Neither is the computing system environment 2400 be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary computing system environment 2400.
  • FIG. 24 an exemplary computing device for implementing one or more embodiments in the form of a computer 2410 is depicted.
  • Components of computer 2410 may include, but are not limited to, a processing unit 2420, a system memory 2430, and a system bus 2422 that couples various system components including the system memory to the processing unit 2420.
  • Processing unit 2420 may, for example, perform functions associated with processor(s) 214 of inertia estimator 202, while system memory 2430 may perform functions associated with memory 216.
  • Computer 2410 typically includes a variety of computer readable media and can be any available media that can be accessed by computer 2410.
  • the system memory 2430 may include computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) and/or random access memory (RAM).
  • system memory 2430 may also include an operating system, application programs, other program modules, and program data.
  • a user can enter commands and information into the computer 2410 through input devices 2440, non-limiting examples of which can include a keyboard, keypad, a pointing device, a mouse, stylus, touchpad, touchscreen, trackball, motion detector, camera, microphone, joystick, game pad, scanner, or any other device that allows the user to interact with computer 2410.
  • a monitor or other type of display device is also connected to the system bus 2422 via an interface, such as output interface 2450.
  • computers can also include other peripheral output devices such as speakers and a printer, which may be connected through output interface 2450.
  • input devices 2440 can provide user input to interface component 212, while output interface 2450 can receive information relating to operations of inertia estimator 202 from interface component 212.
  • the computer 2410 may operate in a networked or distributed environment using logical connections to one or more other remote computers, such as remote computer 2470.
  • the remote computer 2470 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, or any other remote media consumption or transmission device, and may include any or all of the elements described above relative to the computer 2410.
  • the logical connections depicted in FIG. 24 include a network 2472, such local area network (LAN) or a wide area network (WAN), but may also include other networks/buses e.g., cellular networks.
  • Computing devices typically include a variety of media, which can include computer-readable storage media ⁇ e.g., memory 216 or 1112) and/or communications media, in which these two terms are used herein differently from one another as follows.
  • Computer-readable storage media can be any available storage media that can be accessed by the computer, is typically of a non-transitory nature, and can include both volatile and nonvolatile media, removable and non-removable media.
  • Computer-readable storage media can be implemented in connection with any method or technology for storage of information such as computer-readable instructions, program modules, structured data, or unstructured data.
  • Computer-readable storage media can include, but are not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disk (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or other tangible and/or non-transitory media which can be used to store desired information.
  • Computer-readable storage media can be accessed by one or more local or remote computing devices, e.g., via access requests, queries or other data retrieval protocols, for a variety of operations with respect to the information stored by the medium.
  • communications media typically embody computer-readable instructions, data structures, program modules or other structured or unstructured data in a data signal such as a modulated data signal, e.g., a carrier wave or other transport mechanism, and includes any information delivery or transport media.
  • modulated data signal or signals refers to a signal that has one or more of its characteristics set or changed in such a manner as to encode information in one or more signals.
  • communication media include wired media, such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media.
  • a component may be, but is not limited to being, a process running on a processor, a processor, an object, an executable, a thread of execution, a program, and/or a computer.
  • a component may be, but is not limited to being, a process running on a processor, a processor, an object, an executable, a thread of execution, a program, and/or a computer.
  • an application running on computer and the computer can be a component.
  • One or more components may reside within a process and/or thread of execution and a component may be localized on one computer and/or distributed between two or more computers.
  • a “device” can come in the form of specially designed hardware; generalized hardware made specialized by the execution of software thereon that enables the hardware to perform specific function (e.g., coding and/or decoding); software stored on a computer readable medium; or a combination thereof.
  • components described herein can examine the entirety or a subset of the data to which it is granted access and can provide for reasoning about or infer states of the system, environment, etc. from a set of observations as captured via events and/or data.
  • Inference can be employed to identify a specific context or action, or can generate a probability distribution over states, for example.
  • the inference can be probabilistic - that is, the computation of a probability distribution over states of interest based on a consideration of data and events.
  • Inference can also refer to techniques employed for composing higher-level events from a set of events and/or data.
  • Such inference can result in the construction of new events or actions from a set of observed events and/or stored event data, whether or not the events are correlated in close temporal proximity, and whether the events and data come from one or several event and data sources.
  • Various classification (explicitly and/or implicitly trained) schemes and/or systems e.g., support vector machines, neural networks, expert systems, Bayesian belief networks, fuzzy logic, data fusion engines, etc. can be employed in connection with performing automatic and/or inferred action in connection with the claimed subject matter.
  • Such classification can employ a probabilistic and/or statistical-based analysis (e.g., factoring into the analysis utilities and costs) to prognose or infer an action that a user desires to be automatically performed.
  • a support vector machine (SVM) is an example of a classifier that can be employed. The SVM operates by finding a hyper-surface in the space of possible inputs, where the hyper-surface attempts to split the triggering criteria from the non-triggering events. Intuitively, this makes the classification correct for testing data that is near, but not identical to training data.
  • Other directed and undirected model classification approaches include, e.g., naive Bayes, Bayesian networks, decision trees, neural networks, fuzzy logic models, and probabilistic classification models providing different patterns of independence can be employed. Classification as used herein also is inclusive of statistical regression that is utilized to develop models of priority.

Landscapes

  • Engineering & Computer Science (AREA)
  • Power Engineering (AREA)
  • Human Computer Interaction (AREA)
  • Manufacturing & Machinery (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Automation & Control Theory (AREA)
  • Control Of Electric Motors In General (AREA)
  • Feedback Control In General (AREA)
  • Control Of Position Or Direction (AREA)
  • Testing Of Devices, Machine Parts, Or Other Structures Thereof (AREA)

Abstract

Systems and methods for estimating an inertia and a friction coefficient for a controlled mechanical system are provided. In one or more embodiments, an inertia estimator can generate a torque command signal that varies continuously over time during a testing sequence. The velocity of a motion system in response to the time-varying torque command signal is measured and recorded during the testing sequence. The inertia estimator then estimates the inertia and/or the friction coefficient of the motion system based on the torque command data sent to the motion system and the measured velocity data. Systems and methods are also provided for generating a constraint-based, time-optimal motion profile for controlling the trajectory of a point-to-point move in a motion control system. In one or more embodiments, a profile generator can calculate an ST-curve motion profile that includes a jerk reference that varies continuously over time for at least one of the motion profile segments, thereby producing a smooth, time-optimal trajectory.

Description

METHOD FOR AUTOMATICALLY ESTIMATING INERTIA IN A MECHANICAL SYSTEM AND FOR GENERATING A MOTION PROFILE
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application claims the benefit of priority U.S. Application Serial No. 13/451 ,924 filed April 20, 2012 and U.S. Application Serial No. 13/474,919 filed May 18, 2012, the entire contents of both applications are incorporated herein by reference.
TECHNICAL FIELD
[0002] This disclosure generally relates to motion control, and specifically to estimation of inertias and friction coefficients for use as parameters in a motion control system and generation of constraint-based, time-optimal motion profiles.
BACKGROUND
[0003] Many automation applications employ motion control systems to control machine position and speed. Such motion control systems typically include one or more motors or similar actuating devices operating under the guidance of a controller, which sends position and speed control instructions to the motor in accordance with a user-defined control algorithm or program. Some motion control systems operate in a closed-loop configuration, whereby the controller instructs the motor to move to a target position or to transition to a target velocity (a desired state) and receives feedback information indicating an actual state of the motor. The controller monitors the feedback information to determine whether the motor has reached the target position or velocity, and adjusts the control signal to correct errors between the actual state and the desired state.
[0004] Designers of motion control systems seek to achieve an optimal trade-off between motion speed and system stability. For example, if the controller commands the motor to transition a mechanical component to a target position at a high torque, the machine may initially close the distance between the current position and the desired position at high speed (and thus in a time-efficient manner), but is likely to overshoot the desired position because of the high torque. Consequently, the controller must apply a corrective signal to bring the machine back to the desired position. It may take several such iterations before the motion system converges on the desired position, resulting in undesired machine oscillations. Conversely, instructing the motor to move at a lower torque may increase the accuracy of the initial state transition and reduce or eliminate machine oscillation, but will increase the amount of time required to place the machine in the desired position. Ideally, the controller gain coefficients should be selected to optimize the trade-off between speed of the state transition and system stability. The process of selecting suitable gain coefficients for the controller is known as tuning.
[0005] The response of a controlled mechanical system to a signal from a controller having a given set of controller gain coefficients depends on physical characteristics of the mechanical system, including the inertia and the friction coefficient. The inertia represents the resistance of the motion system to acceleration or deceleration. The friction coefficient represents a friction seen by the motor, such as the friction between the rotor and the shaft. Accurate estimates for the inertia and friction coefficient of a controlled mechanical system can simplify the tuning process and improve performance of the system. However, identifying accurate values for these parameters for a given mechanical system can be difficult. In some cases, the inertia is estimated using manual calculations based on the rated motor data and physical data (weight, dimensions, etc.) of the components comprising the load. Such calculations can be cumbersome and time consuming, and may not yield accurate values for these important parameters.
[0006] In another aspect of motion control, motion profiles are often used to facilitate transition between position or velocity states. For example, when the controller determines that the motion system must move to a new position or alter its velocity (e.g., in accordance with the control algorithm or a user request), the controller must calculate a position or velocity trajectory - referred to as a motion profile - for transitioning the motion system from its current position/velocity to the target position/velocity. The motion profile defines the motion system's velocity, acceleration, and/or position over time as the system moves from the current state to the target state. Once this motion profile is calculated, the controller translates the motion profile into appropriate control signaling for moving the motion system through the trajectory defined by the profile.
[0007] In some applications, the various segments (or stages) of the motion profile are calculated based on predetermined user-defined constraints (e.g., maximum velocity, maximum acceleration, etc.), where the defined constraints may correspond to mechanical limitations of the motion system. Given these constraints and the desired target position and/or velocity, the controller will calculate the motion profile used to carry out the desired move or velocity change. The resultant motion profile is also a function of the type of profile the controller is configured to generate - typically either a
trapezoidal profile or an S-curve profile. For a trapezoidal profile, the controller will calculate the motion profile according to three distinct stages- an acceleration stage, a constant velocity stage, and a deceleration stage. Such a profile results in a trapezoidal velocity curve. The S-curve profile type modifies the trapezoidal profile by adding four additional stages corresponding to these transitions. These additional stages allow gradual transitions between the constant (or zero) velocity stages and the constant
acceleration/deceleration stages, providing smoother motion and affording a finer degree of control over the motion profile.
[0008] Since the trapezoidal profile always accelerates or decelerates at the maximum defined acceleration rate, this profile type tends to achieve faster point-to-point motion relative to S-curve profiles. However, since the transitions between the constant (or zero) velocity and the acceleration stages are abrupt, the trapezoidal curve may cause excessive system jerk at these transitions. Moreover, there is greater risk of overshooting the target position or velocity when using a trapezoidal motion profile, which can reduce accuracy or cause the controller to expend additional work and settling time bringing the motion device back to the desired target. Alternatively, the S- curve profile can yield greater accuracy due to the more gradual transitions between the constant velocity and acceleration/deceleration phases, but at the cost of additional time spent on the initial point-to-point move.
[0009] The above-described is merely intended to provide an overview of some of the challenges facing conventional motion control systems. Other challenges with conventional systems and contrasting benefits of the various non-limiting embodiments described herein may become further apparent upon review of the following description.
SUMMARY
[0010] The following presents a simplified summary of one or more embodiments in order to provide a basic understanding of such embodiments. This summary is not an extensive overview of all contemplated embodiments, and is intended to neither identify key or critical elements of all embodiments nor delineate the scope of any or all embodiments. Its purpose is to present some concepts of one or more embodiments in a simplified form as a prelude to the more detailed description that is presented later.
[0011] One or more embodiments of the present disclosure relate to systems and methods for automatically estimating inertia and friction coefficients for controlled mechanical systems. To this end, an inertia estimating system can instruct a controller to send a torque control signal to a motor, where the torque control signal varies continuously over time between defined maximum and minimum torque values. This torque control signal can be controlled based on a testing sequence defined in the inertia estimating system. In a non-limiting example, the testing sequence can specify that the torque control signal will increase gradually at a defined rate of increase, causing the motor to accelerate. In response to a defined trigger, the torque control signal can gradually decrease back to zero, causing the motor to decelerate to a rest state.
[0012] During these acceleration and deceleration phases, the inertia estimating system can measure and record the velocity of the motor over time in response to the torque control signal. An inertia component can then determine one or both of an estimated inertia and an estimated friction coefficient for the mechanical system based on the time-varying torque signal and the measured velocity curve. The estimated inertia and/or the friction coefficient can subsequently be used by the controller to facilitate
identification of appropriate controller gains for the system. [0013] Other aspects of the present disclosure relate to systems and methods for efficiently generating constraint-based, time-optimal motion profiles. To this end, a profile generator deployed within a controller can leverage a mathematical algorithm to solve for constraint-based, time-optimal point-to-point motion in real-time and to calculate trajectories based on the solution. To achieve smooth and accurate point-to-point motion, the profile generator can calculate the trajectory based on an ST-curve profile type, which generates profiles having a continuous jerk reference over time for at least one acceleration or deceleration segment of the profile. By calculating motion profiles that includes a time-varying jerk reference, the profile generator of the present disclosure can yield smoother and more stable motion compared to traditional trapezoidal or S-curve profiles.
[0014] The ST-curve profiles generated by the profile generator can support asymmetric acceleration and deceleration phases. Conventionally, asymmetric acceleration and deceleration is supported only by trapezoidal profiles, but not by the smoother S-curve profiles. The ST-curves generated according to the techniques described herein can allow asymmetric acceleration and deceleration to be used with smoother motion profiles. In some embodiments, the profile generator described herein may also generate S-curve profiles that support asymmetric acceleration and deceleration.
[0015] In another aspect, one or more embodiments of the profile generator described herein can improve calculation efficiency by omitting calculations for trajectory segments that will not be used in the final trajectory. That is, rather than calculating profile data for all seven profile stages even in cases for which one or more of the segments will not be used, the profile generator described herein may calculate only those profile stages that will be used in the final motion profile for a given trajectory, reducing computational overhead within the controller. The profile generator can automatically determine which segment(s) of the motion profile may be skipped for a given point-to-point move and calculate the remaining segments accordingly.
[00 6] According to another aspect, one or more embodiments of the profile generator described herein can further improve the accuracy and efficiency of a point-to-point move by forcing the total profile time to be a multiple of the motion controller's sample time. In an exemplary technique, the profile generator can calculate a time-optimal solution for a given point-to- point move, determine the time durations of the respective segments of the resultant profile, and round these durations to be multiples of the sample time. The profile generator can then recalculate the jerk, acceleration/deceleration, velocity and/or position references for the profile to be consistent with these rounded profile times. Thus, the trajectory outputs can be aligned with the sample points, mitigating the need to compensate for small differences introduced when the total profile time falls between two sample times.
[0017] The following description and the annexed drawings set forth herein detail certain illustrative aspects of the one or more embodiments. These aspects are indicative, however, of but a few of the various ways in which the principles of various embodiments can be employed, and the described embodiments are intended to include all such aspects and their equivalents.
BRIEF DESCRIPTION OF THE DRAWINGS
[0018] FIG. 1 is a block diagram of a simplified closed-loop motion control architecture.
[0019] FIG. 2 is a block diagram of an exemplary non-limiting inertia estimating system.
[0020] FIG. 3 is a block diagram illustrating the inputs and outputs associated with the inertia estimator.
[0021] FIG. 4 is a block diagram depicting the interactions between the inertia estimator and a motion control system during an exemplary test sequence.
[0022] FIG. 5 illustrates an exemplary torque command (t) and corresponding velocity feedback v(t) graphed over time.
[0023] FIG. 6 is. a block diagram depicting an inertia estimator having an inertia component and friction coefficient component.
[0024] FIG. 7 is a block diagram of an exemplary configuration in which an inertia estimator operates as an independent component relative to a motion controller. [0025] FIG. 8 illustrates an exemplary motion control tuning application that utilizes the estimated inertia and friction coefficient generated by the inertia estimator.
[0026] FIG. 9 is a flowchart of an example methodology for estimating an inertia and a friction coefficient for a controlled mechanical system.
[0027] FIG. 10 is a flowchart of an example methodology for executing a testing sequence on a motion control system in order to estimate the inertia and friction coefficient.
[0028] FIG. 11 is a block diagram of an exemplary motion profile generating system capable of generating motion profiles in a motion control system.
[0029] FIG. 12 is a block diagram of exemplary motion controller that utilizes a profile generator.
[0030] FIG. 13 is a block diagram illustrating the inputs and outputs of an exemplary position profile generator.
[0031] FIG. 14 is a block diagram illustrating the inputs and outputs of an exemplary velocity profile generator.
[0032] FIG. 15 is a graphical comparison of an exemplary ST-curve profile with traditional trapezoidal and S-curve profiles.
[0033] FIG. 16 illustrates an exemplary S-curve profile that utilizes all seven stages.
[0034] FIG. 17 illustrates an exemplary S-curve motion profile that skips the constant velocity stage.
[0035] FIG. 18 illustrates an example S-curve profile that skips the constant acceleration and constant deceleration stages.
[0036] FIG. 19 illustrates an example S-curve profile that skips the constant acceleration, constant velocity, and constant deceleration stages.
[0037] FIG. 20 is a flowchart of an example methodology for calculating a motion profile for a point-to-point move in a motion control system.
[0038] FIG. 21 is a flowchart of an example methodology for calculating a constraint-based time-optimal motion profile that conforms to a sample time of a motion controller.
[0039] FIG. 22 is a flowchart of an example methodology for calculating a motion profile for a point-to-point move using segment skipping. [0040] FIG. 23 is a block diagram representing an exemplary networked or distributed computing environment for implementing one or more embodiments described herein.
[0041] FIG. 24 is a block diagram representing an exemplary computing system or operating environment for implementing one or more embodiments described herein.
DETAILED DESCRIPTION
[0042] Various embodiments are now described with reference to the drawings, wherein like reference numerals refer to like elements throughout. In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide an understanding of this disclosure. It is to be understood, however, that such embodiments may be practiced without these specific details, or with other methods, components, materials, etc. In other instances, structures and devices are shown in block diagram form to facilitate describing one or more embodiments.
[0043] Systems and methods described herein relate to techniques for generating estimated inertia and friction coefficients for controlled mechanical systems. One or more embodiments of the present disclosure can estimate these parameters in a substantially automated fashion by running the mechanical system through a testing sequence to be defined in more detail herein. Results of this testing sequence can be used to generate accurate inertia and friction coefficient estimates for the system. These estimated parameters can subsequently be used to facilitate simplified and accurate tuning and control of the motion system.
[0044] Inertia and Friction Coefficient Estimation
[0045] FIG. 1 depicts a simplified closed-loop motion control architecture. Controller 102 is programmed to control motor 104, which drives mechanical load 06. Controller 102, motor 104, and load 06 comprise the primary components of an exemplary motion control system. In an exemplary non-limiting application, load 106 can represent an axis of a single- or multi- axis robot or positioning system. In such applications, controller 102 sends control signal 108 instructing the motor 104 to move the load 106 to a desired position at a desired speed. The control signal 108 can be provided directly to the motor 104, or to a motor drive (not shown) that controls the power delivered to the motor 104 (and consequently the speed and direction of the motor). Feedback signal 110 indicates a current state (e.g., position, velocity, etc.) of the motor 104 and/or load 106 in substantially real-time. In servo- driven systems, feedback signal 110 can be generated, for example, by an encoder or resolver (not shown) that tracks an absolute or relative position of the motor. In sensorless systems lacking a velocity sensor, the feedback signal can be provided by a speed/position estimator. During a move operation, the controller monitors feedback signal 1 10 to ensure that the load 106 has accurately reached the target position. The controller 102 compares the actual position of the load as indicated by the feedback signal 1 10 with the target position, and adjusts the control signal 108 as needed to reduce or eliminate error between the actual and target positions.
[0046] In another exemplary application, load 106 can represent a spinning load (e.g. , a pump, a washing machine, a centrifuge, efc.) driven by motor 104, in which controller 102 controls the rotational velocity of the load. In this example, controller 102 provides an instruction to motor 104 (via control signal 08) to transition from a first velocity to a second velocity, and makes necessary adjustments to the control signal 108 based on feedback signal 110. It is to be appreciated that the parameter estimation techniques of the present application are not limited to use with the exemplary types of motion control systems described above, but are applicable for any suitable motion control application.
[0047] The control signal output generated by the controller 102 in response to an error between the desired position or velocity and the target position or velocity (as reported by the feedback signal 110) depends on the gain coefficients for the control loop. Design engineers must often employ a trial-and-error approach to identifying suitable gain coefficients (i.e. tuning the control loop), since suitable gain selection depends on physical characteristics of the mechanical system being controlled. For example, mechanical systems with a high inertia (resistance to acceleration or deceleration) may require relatively high initial torque to initiate a move to a new position or velocity, particularly if the application requires rapid convergence on the target position/velocity. However, high torque commands increase the possibility of overshoot, necessitating a reverse correction to bring the system back to the target. Non-optimal gain settings can result in undesired mechanical oscillations as the system performs multiple corrective iterations before settling on the target position or velocity. Such oscillations can introduce instability, cause system delays, and consume. excessive power as a result of the additional work required to bring the system to a stable state. The friction of the motor can also affect how the mechanical system responds to a given control signal, and is therefore a factor to be considered when tuning the control system.
[0048] Control system tuning can be simplified if accurate estimates of the mechanical system's inertia and friction coefficient are known. Knowledge of these parameters can also improve performance of the system during operation. Accordingly, one or more embodiments of the present application can accurately estimate a controlled mechanical system's inertia and friction coefficient in a substantially automated fashion.
[0049] FIG. 2 is a block diagram of an exemplary non-limiting inertia estimating system capable of generating estimated values of a mechanical system's inertia and friction coefficient. Inertia estimator 202 can include a torque command generator 204, a velocity monitoring component 206, an inertia component 208, a friction coefficient component 210, an interface component 212, one or more processors 214, and memory 216. In various embodiments, one or more of the torque command generator 204, velocity monitoring component 206, inertia component 208, friction coefficient component 210, interface component 212, the one or more processors 214, and memory 218 can be electrically and/or communicatively coupled to one another to perform one or more of the functions of the inertia estimator 202. In some embodiments, components 204, 206, 208, 210, and 212 can comprise software instructions stored on memory 216 and executed by processor(s) 214. The inertia estimator 202 may also interact with other hardware and/or software components not depicted in FIG. 2. For example, processor(s) 214 may interact with one or more external user interface device, such as a keyboard, a mouse, a display monitor, a touchscreen, or other such interface devices.
[0050] Interface component 212 can be configured to receive user input and to render output to the user in any suitable format (e.g., visual, audio, tactile, etc.). User input can be, for example, user-entered parameters used by the inertia estimator when executing an inertia estimation sequence (to be described in more detail below). Torque command generator 204 can be configured to output a torque control command that various continuously over time according to a defined testing sequence. Velocity monitoring component 206 can receive velocity data for the mechanical system for use in calculating the inertia and friction coefficient. In some embodiments, the velocity monitoring component 206 can measure and record the velocity of the motor over time in response to the applied torque control command generated by the torque command generator 204. Alternatively, the velocity monitoring component 206 can receive the measured velocity data from separate measuring instrumentation. Inertia component 208 and friction coefficient component 210 can be configured to calculate an inertia and a friction coefficient, respectively, based on the time-varying torque command generated by torque command generator 204 and the measured velocity curve acquired by the velocity monitoring component 206. The one or more processors 214 can perform one or more of the functions described herein with reference to the systems and/or methods disclosed. Memory 216 can be a computer-readable storage medium storing computer-executable
instructions and/or information for performing the functions described herein with reference to the systems and/or methods disclosed.
[0051] The inertia estimator can generate estimates for a mechanical system's inertia and friction coefficient by running the system through a testing sequence and calculating the estimates based on the results. FIG. 3 is a block diagram illustrating the inputs and outputs associated with inertia estimator 302 (similar to inertia estimator 202). Inertia estimator 302 can generate a torque command 310, which instructs a motor driving the motion system to rotate in a specified direction at a given torque. Rather than issuing one or more constant torque commands that transition between constant torque values in sudden steps (resulting in a step-shaped torque output), inertia estimator 302 can control torque command 310 such that the torque value varies continuously over time between a maximum and minimum torque value. Inertia estimator 302 controls the torque value issued via torque command 310 in accordance with a testing sequence having user-defined parameters, as will be discussed in more detail below.
[0052] The motion system will accelerate or decelerate in accordance with the torque command 310 issued by inertia estimator 302, and velocity feedback 304 from the motion control system is provided to inertia estimator 302. Velocity feedback 304 represents the velocity of the motion system over time in response to application of torque command 310. In an exemplary testing sequence, inertia estimator 302 can control torque command 310 as a function of the velocity feedback 304 and one or more user-defined setpoints. The user-defined setpoints can include one or more torque limits 306 defining the upper and lower bounds of the torque command signal, and/or one or more velocity checkpoints 308 defining trigger velocity valves used to control the torque command 310 and generate the estimates.
[0053] Upon completion of the testing sequence, inertia estimator 302 generates an estimate of the motion system's inertia 312 and/or an estimate of the motion system's friction coefficient 314. Inertia estimator 302 determines these estimates based on the torque command 310 that was issued to the motion system and the corresponding velocity feedback 304. In one or more embodiments, inertia estimator 302 can integrate selected portions of the torque curve (corresponding to torque command 310) and the velocity curve (corresponding to velocity feedback 304) over time, and calculate the inertia estimate 312 and the friction coefficient estimate 314 as functions of these integrals.
[0054] FIG. 4 illustrates the interactions between inertia estimator and a motion control system during an exemplary testing sequence. In this example, motion system 424 comprises a motor 424, which responds to control signaling 420 provided by controller 418. Motor 424 is used to drive a load (not shown), such as a positioning axis, a rotational component of a machine, or other motor-driven load. Controller 418 also monitors feedback 422, which provides substantially real-time state data for the motor 424 (e.g., position, speed, etc.). [0055] In the illustrated example, inertia estimator 402 is depicted as a separate element from controller 418 for clarity. For such configurations, inertia estimator 402 can exchange data with controller 418 or other elements of the motion system 424 via any suitable communications means, including but not limited to wired or wireless networking, hardwired data links, or other such communication means. In other embodiments, inertia estimator 402 can be an integrated component of controller 418. For example, inertia estimator 402 can be a functional component of the controller's operating system and/or control software executed by one or more processors residing on the controller 418. Inertia estimator 402 can also be a hardware component residing within controller 418, such as a circuit board or integrated circuit, that exchanges data with other functional elements of the controller 418. Other suitable implementations of inertia estimator 402 are within the scope of certain embodiments of the present disclosure.
[0056] Prior to testing, one or more user-defined parameters 412 are provided to inertia estimator 402 via interface component 406 (similar to interface component 212 described in connection with FIG. 2). These parameters can include a maximum torque umax and a minimum torque umin defining upper and lower limits on the torque command to be generated by torque command generator 408 (similar to torque command generator 204 of FIG. 2). In some embodiments, the inertia estimator 402 may only require the maximum torque umax to be defined by the user, and can use the magnitude of the defined maximum torque as a limiting value for both the forward and reverse directions. In other embodiments, inertia estimator 402 may accept values for both umax and umin, allowing for different torque setpoints for the forward and reverse directions, respectively. The values selected for umax and umin can correspond to the expected operational limits of the motion system 424, thereby allowing the inertia and friction coefficient to be determined based on characteristics of the motion system 424 over the system's entire torque profile. User-defined parameters 412 can also include one or more velocity checkpoints (v1 , v2, v3...) defining critical velocities used to define stages of the test sequence, as will be described in more detail below. [0057] Interface component provides torque command generator 408 with the user-defined parameters 412. When testing is initiated, torque command generator 408 outputs a torque command 414 to the motion system 424. Torque command 414 is represented as u t), since the torque command generator 408 will vary the torque command continuously over time. In the configuration depicted in FIG. 4, inertia estimator 402 sends torque command 414 to controller 418, which in turn instructs the motor 424 (via control signaling 420) to rotate in the indicated direction at the indicated torque. As the motor is rotating, velocity monitoring component 410 reads velocity data 416 from controller 418 (which itself measures the velocity of the motor 424 via feedback 422). The measured velocity 416 over time is represented as v(t).
[0058] As testing proceeds, torque command generator 408 can vary the torque command 414 in accordance with a predefined testing sequence, wherein phases of the testing sequence are triggered by the velocity feedback 416 relative to the user-define parameters 412. An exemplary testing sequence is now explained with reference to FIG. 5, which illustrates an exemplary torque command u(t) and corresponding velocity feedback v(t) graphed over time. As shown on torque graph 502, the torque command signal u(t) is bounded by umax and ι½έη. Velocity checkpoints v1 , v2, and v3, shown on velocity graph 504, will determine phase transitions of the testing sequence. The values of ι½αχ, Umin, v1 , v2, and v3 can be defined by the user prior to testing (e.g., as user-defined parameters 412 of FIG. 4).
[0059] When testing begins at time t = 0, the applied torque signal u(t) and the motor velocity v(t) are both zero. Initially, torque command generator sends a negative torque signal to the motion system, causing the motion system to accelerate in the negative direction. For the first phase of this exemplary test, the torque command generator gradually decreases the torque command u(t) until the velocity of the motor v(t) reaches v1 or until the torque command it(t) reaches umin. In the present example, the motor velocity v (t) reaches v1 at time t = t1 , triggering the second phase of the test. As shown on graph 502, the torque command u(t) is decreased continuously at a substantially constant rate between time t = 0 and t = t1. In one or more embodiments, the rate at which torque command is decreased or increased (that is, the slope of u t)) can be configured as a user-defined parameter of the inertia estimator 402 (e.g., via interface component 406).
[0060] For the second phase of the test (starting at time t = t1), the torque command generator gradually increases the torque command u(t) until either the motor velocity v(t) reaches velocity checkpoint v3 or the torque command u(t) reaches the torque setpoint umax. In the present example, the torque command u(t) reaches the upper limit umax before the motor velocity v(t) reaches velocity checkpoint v3. Since the motor is still accelerating at this time, the torque command generator maintains the torque command signal at umax until the velocity v(t) reaches v3. As illustrated on velocity graph 504, the motor velocity reaches v3 at time t = t4. If the velocity v(t) does not reach velocity checkpoint v3 within a defined timeout period after torque command signal has reached umax (e.g., if velocity checkpoint v3 was inadvertently set higher than the physical velocity limit of the motion system), the inertia estimator can initiate a suitable timeout handling routine. This timeout handling routine can comprise, for example, aborting the testing sequence and displaying an error message via interface component 406.
[0061] As the motion system is accelerating toward v3 during this phase, the velocity passes through velocity checkpoint v2, which denotes the acceleration phase of the testing sequence. Velocity checkpoint v2 is set to be greater than zero and less than v3, and is used to delineate the beginning of the acceleration phase of the testing sequence and the end of the deceleration phase, as will be discussed in more detail below.
[0062] Upon determining that the motor velocity has reached v3, the torque command generator begins the third phase of the test at time t = t4 by gradually decreasing the torque command u(t). As the torque command u(t) is decreased, the motor will continue to accelerate for a brief time until the value of the torque command u(t) becomes less than the friction force of the motion system, at which time the motor will begin to decelerate. Since the motor was still accelerating when the velocity reached v3 at time t = t3, the velocity will continue past v3 for some time after the torque command begins decreasing. In accordance with the testing sequence definition, the torque command generator continues to decrease until the motor velocity returns to velocity checkpoint v3 (at time t = t6), and thereafter holds constant until the motor velocity returns to velocity checkpoint v2 (at time t = t7). At this point, the inertia estimator has the data it requires to calculate estimates for the inertia and friction coefficient for the mechanical system. The torque command generator therefore brings the torque command signal back to zero (at t = t8), allowing the motion system to coast to a resting state, as illustrated on graph 504 by the tapering end of the curve.
[0063] The testing sequence described above in connection with FIG. 5 is only intended to represent an exemplary, non-limiting testing sequence. It is to be understood that any suitable testing sequence that continuously varies the torque command over time and measures a corresponding velocity profile for the motion system is within the scope of certain embodiments of this disclosure. For example, although the foregoing example describes the torque command as changing direction in response to the velocity reaching the respective velocity checkpoints, some test sequences may include phases in which the torque command only changes its rate of increase or decrease when the velocity checkpoint is reached, without altering the direction of the torque command (e.g., an increasing torque command may continue to increase in response to v®> reaching a phase checkpoint, but at a slower rate).
[0064] As the foregoing testing sequence is performed, the inertia estimator 402 records both the torque command signal generated by torque command generator 408 and the corresponding motor velocity read by the velocity monitoring component 410. These torque and velocity curves characterize the motion system 424 such that accurate estimates of the inertia and friction coefficient can be calculated based on the curves. In one or more embodiments, inertia estimator calculates these estimates based on integrals of and . The following illustrates an exemplary, non- limiting technique for leveraging integrals of and to derive estimates for the inertia and friction coefficient for a motion system.
[0065] A motion system can be described by the differential equation: [0066] Jv(t) = -Bv(t) + u(t) (1)
[0067] where J is the inertia, B is the friction coefficient, u t) is the torque command signal, and v(t) is the corresponding velocity of the motion system in response to the torque signal u(t) (e.g., u(t) and v(t) described above in connection with FIGs. 4 and 5).
[0068] Integrating both sides of equation (1) for respective acceleration and deceleration stages yields:
[0069] JAvacc{t) (2)
[0070] JAvdec(t) (3)
Figure imgf000018_0001
[0071] where uacc(t) and vacc(t) are portions of u(t) and v(t), respectively, corresponding to the acceleration phase of the testing sequence, and udec(t) and vdec(t) are portions of u(t) and u(t), respectively,
corresponding to the deceleration phase.
[0072] Equations (2) and (3) can be solved to yield estimates of the inertia J and friction coefficient S:
Figure imgf000018_0002
^dec(t) vacc(t)-Avacc(t) vd t)
[0075] For the exemplary torque and velocity curves depicted in FIG. 4, the acceleration phase is taken to be the period starting when velocity v(t) reaches velocity checkpoint v2 for the first time (at time t = t3) and ending when torque signal u(t) crosses zero (at time t = t5). The velocity of the motion system at the end of this acceleration phase is recorded as v4 (as indicated on graph 504). The deceleration phase is taken to be the period starting when torque signal u(t) crosses zero (at time t = t5) and ending when velocity v(t) returns to v2 (at time t = t7). The inertia estimator 402 can be configured to recognize these acceleration and deceleration phase delineations in order to derive the estimated inertia and friction coefficient based on equations (4) and (5) above. It is to be appreciated that other criteria for delineating the acceleration and deceleration phases are also within the scope at certain embodiments of this disclosure.
[0076] Given these acceleration and deceleration phase definitions, the integrals of uacc(t) and udec(t) are represented by the shaded regions of graph 502 labeled Uacc and Udec, respectively, and the integrals of vacc(t) and vdec(t) are represented as the shaded regions of graph 504 labeled Vacc and Vdec, respectively. Accordingly, Uacc, Udec, Vacc, and Vdec are defined as follows:
Figure imgf000019_0001
[0081] Substituting equations (6) - (9) into equations (4) and (5), the inertia J and friction coefficient B can be represented as:
Tj ij
______ r— dec v - acc acc v' dec
[0082] -^ w ^wZ <12)
[0083] > W- -toJfPt. <13)
[0084] where the velocity deltas Auacc(t) and Avdec t) are defined as: [0085] A¾cc(t) = v4 - v2 (10) [0086] Avdec t) = v2 - v4 (11)
[0087] Equations (12) and (13) are exemplary, non-limiting formulas for calculating an estimated inertia and friction coefficient for a motion system based on continuous torque and velocity data. It is to be appreciated that any suitable formula for calculating these parameters through integration of a continuous torque signal and a corresponding velocity curve are within the scope of certain embodiments of this disclosure.
[0088] Upon completion of the testing sequence described above in connection with FIGs. 4 and 5, the inertia estimator can apply equations (12) and (13) (or other suitable formulas) to the continuous torque data u(t) and motor velocity data v(t) acquired by the test to derive estimates for the inertia and friction coefficient. FIG. 6 is a block diagram depicting an inertia estimator 602 having an inertia component 606 and friction coefficient component 608 according to one or more embodiments of the present disclosure. Although inertia estimator 602 is depicted as including both an inertia component 606 and a friction coefficient component 608, it is to be appreciated that some embodiments of the inertia estimator 602 may include only one of these components without deviating from the scope of the present disclosure. That is, the inertia estimator 602 may be configured to calculate one or both of the inertia or the friction coefficient.
[0089] After the torque data (t) and velocity data v(t) have been obtained, the torque command generator 604 (similar to torque command generator 408 and 204) provides the torque data to inertia component 606 and friction coefficient component 608 (similar to inertia component 208 and friction coefficient component 210, respectively, of FIG. 2). Similarly, the velocity monitoring component 606 can provide the acquired velocity data v(t) to inertia component 606 and friction coefficient component 608. According to one or more embodiments, inertia estimator 602 can segregate the torque and velocity data into acceleration phase data (uacc(t) and vacc(t)) and deceleration phase data ( dec(t) and vdec(t)) so that values can be derived for Uacc, Udec, Vacci and Vdec according to equations (6)-(9) above.
[0090] Inertia component 606 can integrate uacc(t), udec(t), vacc(t), and vdec t) and calculate the estimated inertia J 610 as a function of the integrals (e.g., based on equation (12) or variation thereof). Similarly, friction coefficient component 608 can calculate the estimated friction coefficient B 616 as a function of the integrals (e.g., based on equation (13)). Inertia estimator 602 can then output the estimated inertia J 610 and friction coefficient B 612 according to the requirements of a particular application in which the inertia estimator operates. For example, inertia estimator 602 may provide inertia J 610 and friction coefficient B 612 to a motion controller 614, which can use the values of J and B to facilitate tuning one or more gain coefficients. Inertia estimator 602 may also output the estimated values for J and B to a display (e.g., via interface component 212) so that the values can be viewed and entered manually into a separate motion control or tuning application. Accurate estimates of the motion system's inertia J 610 and friction coefficient B 612 can simplify the tuning process and facilitate accurate parameter tuning, resulting in precise and energy-efficient machine motion. Moreover, since the inertia estimator calculates values for J and B based on data collected over the motion system's entire torque profile (rather than extrapolating based on the system's response to one or more constant torque commands), the inertia and friction coefficient estimates derived by the inertia estimator are more likely to be accurate over the full operational range of the motion system.
[0091] While the preceding examples have described the inertia estimator as sending the torque command u(t) and receiving velocity feedback v t) via the motion controller (e.g., controller 418 of FIG. 4), either as a separate component operating through the controller or as an integrated component of the controller, other configurations are within the scope of certain embodiments of this disclosure. For example, FIG. 7 illustrates an architecture in which inertia estimator 706 operates as an independent separate component from controller 702. In this exemplary architecture, inertia estimator 706 is capable of generating its own torque command signal independently of controller 702. The motor 704 being tested and controlled can receive its torque command signal 708 from either controller 702 or inertia estimator 706 depending on the state of switch 712. The velocity feedback 710 from the motor 704 can be provided to both the controller 702 and inertia estimator 706. During the testing sequence, switch 712 can be set to convey the torque command u(t) from inertia estimator 706. Testing can proceed as described in previous examples, such that inertia estimator 706 generates estimated values for the inertia J and friction coefficient B for the motion system. Inertia estimator 706 can then provide the estimated values for J and B to the controller 702, which can use these values to determine suitable controller gain coefficients or other control parameters. Once the controller parameters have been set, switch 712 can be positioned to provide torque command 708 from controller 702 to the motor 704, and normal operation of the motion system can be carried out using the controller gain coefficients derived based on J and B.
[0092] FIG. 8 illustrates an exemplary motion control tuning application that utilizes the estimated inertia and friction coefficient generated by the inertia estimator. In this example, a tuning application 804 is used to tune the controller gains for controller 806, where the controller 806 controls operation of a motor-driven motion system (not shown). Inertia estimator 802 can generate estimates of the motion system's inertia J 808 arid friction coefficient B 810 according to the techniques described above. Specifically, inertia estimator 802 instructs controller 806 to send a continuous torque command to the motions system's motor, where the torque command varies
continuously over time according to a predefined testing sequence.
Alternatively, for embodiments in which inertia estimator 802 operates independently of controller 806 (as in the exemplary configuration depicted in FIG. 7), the inertia estimator 802 can generate and send its own continuous torque command to the motion system. The testing sequence can include acceleration and deceleration phases, during which the inertia estimator 802 monitors and records the velocity of the motion system in response to the applied torque command. At the conclusion of the testing sequence, inertia estimator 802 can calculate estimates of inertia J 808 and friction coefficient B 810 based on integrals of the time-varying torque command signal and the corresponding time-varying motion system velocity (e.g., based on equations (12) and (13)).
[0093] Inertia estimator 802 can then provide inertia J 808 and friction coefficient B 810 to the tuning application 804. Alternatively, inertia estimator 802 can render the values of J and B on a user interface, allowing a user to manually enter the estimated inertia and friction coefficients into the tuning application 804. Knowledge of J and/or B can allow the tuning application 804 to generate suitable estimates for one or more controller gains 812 based on the mechanical properties of the motion system. Tuning application 804 can generate suitable values for controller gains 812 as a function of the inertia J and/or friction coefficient B 810, as well as control system bandwidth (e.g., crossover frequency) 814, which can be manually adjusted by the user via interface 816 to achieve desired motion characteristics.
[0094] In typical applications, the inertia estimator described herein can be used to generate reliable estimates of a motion system's inertia J and friction coefficient B during initial deployment of the motion control system, prior to normal operation. Specifically, the inertia estimator can be used in connection with configuring and tuning the controller parameters (e.g., controller gain coefficients) prior to runtime. Once set, these parameters typically remain fixed after system startup, unless it is decided to re-tune the system at a later time. However, in some embodiments, the inertia estimator can be configured to automatically recalculate values for J and B periodically or continuously during runtime. Using such configurations, controller parameters that are based on estimates of J and B can be dynamically adjusted during normal operation, substantially in real-time, to compensate for gradual changes to the motion system's mechanical properties (e.g., as a result of mechanical wear and tear, changes to the load seen by a motor, etc.).
[0095] FIGS. 9-10 illustrate various methodologies in accordance with certain disclosed aspects. While, for purposes of simplicity of explanation, the methodologies are shown and described as a series of acts, it is to be understood and appreciated that the disclosed aspects are not limited by the order of acts, as some acts may occur in different orders and/or concurrently with other acts from that shown and described herein. For example, those skilled in the art will understand and appreciate that a methodology can alternatively be represented as a series of interrelated states or events, such as in a state diagram. Moreover, not all illustrated acts may be required to implement a methodology in accordance with certain disclosed aspects.
Additionally, it is to be further appreciated that the methodologies disclosed hereinafter and throughout this disclosure are capable of being stored on an article of manufacture to facilitate transporting and transferring such
methodologies to computers.
[0096] FIG. 9 illustrates an example methodology 900 for estimating an inertia and a friction coefficient for a controlled mechanical system. At 902, a continuous torque command u(t) is sent to a controller of a motion system, where torque command u(t) varies over time between defined maximum and minimum torque setpoints. In one or more embodiments, the torque command (t) can accord to a predefined testing sequence, such that the output of u(t) depends on the phase of the testing sequence and the response of the mechanical system relative to one or more user-defined setpoints. The test sequence can comprise both acceleration and
deceleration phases, corresponding to increasing and decreasing motor speeds, respectively. For two-directional testing, the torque commend (t) can vary between positive and negative torque values during the testing sequence, causing the motion system to accelerate in both directions during the test.
[0097] At 904, the velocity v(t) of the motion system in response to the torque command u(t) is recorded. Thus, upon completion of the testing sequence, data curves for both the applied torque command u(t) and the resultant motion system velocity v(t) are obtained for t = 0 - tend, where tend is the duration of the test sequence.
[0098] At 906, estimates for at least one of the inertia or the friction coefficient of the motion system are calculated based on integrals of the torque curve u t) and the velocity curve v(t). In one or more embodiments, the curves for u(t) and v(t) can be divided into an acceleration phase and a deceleration phase, and the inertia and the friction coefficient can be calculated based on respective integrals of the acceleration and deceleration phases (e.g., using equations (12) and (13) above, or other suitable equation). At 908, one or more parameters for the motion system are set as a function of the estimated inertia and/or friction coefficient calculated at step 906. In a non-limiting example, one or more controller gain coefficients can be set based on the estimated inertia and/or friction coefficient calculated according to steps 902-906.
[0099] FIG. 10 illustrates an example methodology 1000 for executing a testing sequence on a motion control system in order to estimate the inertia and friction coefficient. At 1002, a torque command to the motion system is continuously increased until the torque command reaches a maximum torque setpoint or until the motion system accelerates to a first velocity checkpoint (e.g., velocity checkpoint v3 of FIG. 5) in response to the applied torque command. The maximum torque setpoint and first velocity checkpoint can correspond to upper operational bounds for the motion system, and can be set prior to testing (e.g. , a maximum torque and velocity expected during normal operation of the motion system). The rate at which the torque command is increased can also be defined by the user. In one or more embodiments, if the torque setpoint reaches the maximum torque setpoint before the velocity of the motion system reaches the first velocity checkpoint, the torque command can be held at the maximum torque value until the motion system accelerates to the first velocity checkpoint. If the velocity of the motion system does not reach the first velocity checkpoint within a defined timeout period, an appropriate timeout handling sequence can be initiated.
[00100] As the motion system accelerates from rest toward the first velocity checkpoint, the velocity will pass through a second velocity checkpoint (e.g., velocity checkpoint v2 of FIG. 5), where the second velocity checkpoint is greater than zero and less than the first velocity checkpoint. The acceleration phase of the test is initiated when the velocity initially reaches this second velocity checkpoint.
[00101] Upon determining that the motion system has accelerated to the first velocity checkpoint, the torque command can be continuously decreased at 904, until the torque command reaches a minimum torque setpoint or until the motion system decelerates back to the first velocity checkpoint. In this regard, since the motion system was accelerating at the time the first velocity checkpoint was reached at step 1002, the velocity will continue to increase beyond the first velocity checkpoint for some time after the torque signal begins decreasing in step 1004. The decreasing torque command signal will subsequently cause the motion system to decelerate back to the first velocity checkpoint. As in step 1002, the rate at which the torque command is decreased can be configured as a user-defined parameter. In the present example, the torque command decreases to zero prior to the motion system returns to the first velocity checkpoint, and continues to decrease in the negative direction until the minimum torque setpoint is reached or until the motion system decelerates to the first velocity checkpoint. That is, the torque command crosses zero during this phase of the testing sequence. This signals the end of the acceleration phase and the beginning of the deceleration phase of the test. Similar to step 1002, if the torque command decreases to the minimum torque setpoint before the motion system reaches the first velocity checkpoint, the torque command will be held at the minimum torque value until the first velocity checkpoint is reached.
[00102] When the motion system velocity has returned to the first velocity checkpoint, the torque command value at the time the first velocity checkpoint was reached is maintained as a constant value at 1006 until the motion system decelerates back to the second velocity checkpoint. This triggers the end of the deceleration phase of the test.
[00103] At 1008, the time at which the torque command crossed zero during step 1004 is determined. This time, designated TCROSSOVER, can be used to demarcate the acceleration phase and deceleration phase of the test sequence (in the example described above in connection with FIG. 4, TCROSSOVER = t5). At 1010, integrations are performed on the acceleration phase portions of the torque command curve and corresponding velocity curve of the motion system. That is, the torque command data is integrated from time TO to TCROSSOVER, where TO represents the start time for the acceleration phase (the time at which the velocity initially crossed the second velocity checkpoint; e.g., time t3 of FIG. 4). The result of this acceleration phase integration of the torque command is designated as UACC. Likewise, the continuous velocity data measured from the motion control system in response to the applied torque command is integrated from time TO to TCROSSOVER to yield an integrated velocity result VACC for the acceleration phase.
[00104] At 1012, similar integrations are performed for the deceleration portions of the torque and velocity data. That is, the torque and velocity data are integrated from time TCROSSOVER to TFINAL, where TFINAL is the end time for the deceleration phase, corresponding to the time at which the motion system has decelerated back to the second velocity checkpoint at step 1006 (in the example described above in connection with FIG. 4, TFINAL = t7). The results of these deceleration phase integrations for the torque and velocity data are designated as Udec and Vdec, respectively.
[00105] At 1014, the estimated inertia and/or friction coefficient for the motion system is calculated based on the integrals Uacc, Vacc, Udec, and Vdec. For example, the estimated inertia and friction coefficient may be calculated based on equations (12) and (13), respectively, or a variation thereof.
[00106] Motion Profile Generator
[00107] FIG. 11 is a block diagram of an exemplary non-limiting motion profile generating system capable of generating motion profiles for point-to- point moves of a motion control system. Motion profile generating system 1102 can include a position profile generator 1104, a velocity profile generator 1106, an interface component 1108, one or more processors 11 10, and memory 11 12. In various embodiments, one or more of the position profile generator 1 104, velocity profile generator 1 106, interface component 1108, the one or more processors 1 1 10, and memory 1 1 12 can be electrically and/or communicatively coupled to one another to perform one or more of the functions of the motion profile generating system 1 102. In some
embodiments, components 1104, 1106, and 1 108 can comprise software instructions stored on memory 1112 and executed by processor(s) 11 10. The motion profile generating system 1102 may also interact with other hardware and/or software components not depicted in FIG. 11. For example, processor(s) 1 110 may interact with one or more external user interface devices, such as a keyboard, a mouse, a display monitor, a touchscreen, or other such interface devices.
[00108] Interface component 1108 can be configured to receive user input and to render output to the user in any suitable format (e.g., visual, audio, tactile, efc). User input can be, for example, user-entered constraints (e.g., maximum acceleration, maximum velocity, etc.) used by the motion profile generating system 1102 to calculate a motion profile (to be described in more detail below). Position profile generator 1104 can be configured to receive an indication of a desired target position for a motion system and calculate a motion profile for transitioning to the target position within the parameters of the user-defined constraints. Similarly, velocity profile component 1106 can receive an indication of a desired target velocity for the motion control system and generate a motion profile for transitioning the motion system from a current velocity to the target velocity in conformance with the defined constraints. While FIG. 1 depicts the motion profile generating system as including both the position profile generator 1104 and the velocity profile generator 1106, It is to be appreciated that some embodiments of the motion profile generating system 1102 may include only one of the position profile generator 1104 or the velocity profile generator 1106 without deviating from the scope of this disclosure. The one or more processors 1110 can perform one or more of the functions described herein with reference to the systems and/or methods disclosed. Memory 1112 can be a computer-readable storage medium storing computer-executable instructions and/or information for performing the functions described herein with reference to the systems and/or methods disclosed.
[00109] In some embodiments, the profile generator described herein can be an integrated component of a motion controller. FIG. 12 illustrates an exemplary motion control system 1200 comprising a master controller 1202 that utilizes a profile generator 206 according to one or more embodiments of this disclosure. Master controller 1202 can be, for example, a
programmable logic controller (PLC) or other such controller that monitors and controls a system (e.g., an industrial process, an automation system, a batch process, ete.) that includes one or more motion devices. In this example, profile generator 1206 can be a functional component of the controller's operating system and/or control software executed by one or more processors residing on the controller 1202. Profile generator 1206 can also be a hardware component residing within controller 1202, such as a circuit board or integrated circuit, that exchanges data with other functional elements of the controller 1208. Other suitable implementations of profile generator 1206 are also within the scope of certain embodiments of this disclosure. For example, although profile generator 1206 is illustrated in FIG. 12 as being an integrated component of controller 1202, the profile generator 1206 may be a separate element from controller 1202 in some embodiments. For such configurations, profile generator 1206 can exchange data with controller 1202 or other elements of the motion system via any suitable communications means, including but not limited to wired or wireless networking, hardwired data links, or other such communication means.
[00110] Exemplary motion control system 1200 also comprises a motor drive 1222, which includes a motion controller 1214 for controlling a motion device (e.g., a motor, not shown) in accordance with a motion profile 1212 provided by master controller 1202. The motion profile 1212 defines a trajectory for transitioning the motion device from a current position or velocity to a target position or velocity, where the trajectory is defined in terms of one or more of a position reference, a velocity reference, an acceleration reference, and/or a jerk reference. In response to receiving motion profile data from master controller 1202, motor controller 1214 will translate the motion profile 1212 into control signaling 1216, which is sent to the motion device to effect transitioning of the motion device to the target position or velocity. If the motor controller 1214 is a closed-loop controller, motor controller 1214 will also monitor a feedback signal 1220 indicating an actual state of the motion device (e.g., the real-time position, velocity, etc.) as the control signaling 1216 is being applied. Based on this feedback signal 1220, the motor controller 1214 will adjust the control signaling 1216 as necessary to ensure that the motion device moves in accordance with the motion profile 1212 as closely as possible. Alternatively, if the motor controller 1214 is an open-loop controller, the motor controller 1214 will still generate control signaling 1216 based on motion profile 1212, but will not monitor the feedback signal 1220 during the resulting move.
[00111] In the present example, master controller 1202 controls the system in accordance with a control program 1210, which is stored and executed on the controller 1202. During operation, control program 1210 may require that the motion device move to a new position, or transition to a new velocity. The destination position or velocity 1208 is provided to profile generator 1206, which calculates a motion profile 1212 that defines a trajectory for the move. Profile generator 1206 calculates the motion profile 1212 as a function of one or more motion constraints 1204, which can represent mechanical constraints of the motion system or user preferences regarding operation of the motion device. Motion constraints 1204 can be provided by the user prior to operation (e.g., via interface component 1108 of FIG. 11). In some embodiments, profile generator 1206 can also calculate the motion profile 1212 based additionally on the sample time 1218 of the controller 1202, to ensure that the profile segments align with the controller's sample points, as will be discussed in more detail below.
[00112] As will be described in more detail below, motion profile 1212 can define the trajectory of the point-to-point move over time in terms of one or more of a position reference, a velocity reference, an acceleration reference, and a jerk reference. These references represent functions calculated by the motion profile generator 1206 defining how the respective motion attributes will be controlled as a function of time for a given point-to- point move. These references are mathematically related to one another as derivatives. That is, jerk is the derivative of acceleration, acceleration is the derivative of velocity, and velocity is the derivative of position. Profile generator 1206 can calculate these references for respective stages of the trajectory profile, as will be discussed in more detail below.
[00113] Once the motion profile 1212 for the move is calculated, profile generator 1206 provides the motion profile 1212 to the motor controller 1214, which translates the motion profile 1212 into control signaling 1216 that instructs the motion device to perform the desired point-to-point move in accordance with the motion profile 1212. As described above, if the motor controller 1214 is a closed-loop controller, control signaling 1216 will be a function of the motion profile 1212 as well as feedback signal 1220, which informs the motor controller 1214 of the actual state of the motion device in real-time. For open-loop control systems, the control signaling 1216 will be a function only of the motion profile 1212.
[00114] It is to be understood that the architecture depicted in FIG. 122 is only intended to be an exemplary context in which profile generator 1206 may operate, and that other operating contexts are within the scope of this disclosure. For example, in some scenarios, master controller 1202 may be a self-contained controller that includes integrated motor control capabilities. In such applications, the controller 1202 may itself translate the motion profile 1212 into a suitable control signal 316 and send this control signal 1216 to the motion device, rather than providing the motion profile 1212 to a separate motor drive 1222. In another exemplary architecture, profile generator 1206 may be an integrated component of motor drive 1222.
[00115] Profile generator 1206 can be one or both of a position profile generator or a velocity profile generator. These two types of profile
generators are illustrated in FIGs. 13 and 14, respectively. As shown in FIG. 13, position profile generator 1302 receives as inputs a set of constraints 1304, which can represent mechanical constraints of the controlled system or user preferences regarding behavior of the motion system. These constraints can include upper limits on the velocity, acceleration, deceleration, and jerk, as well as a sample time representing an update period of the controller's control signal (typically measured in milliseconds). These constraint values may be set by the user (e.g., via interface component 1108 of FIG. 11 ), although in some embodiments the position profile generator 1302 may determine the controller's sample time automatically. These constraints 1304 may be set once during deployment of the motion control system, or may be reconfigured for each move. Position profile generator 1302 allows the acceleration and deceleration limits to be configured individually to
accommodate profiles having asymmetrical acceleration and deceleration. The sample time is used by the profile generator 1302 to improve accuracy of the motion profile, as will be described in more detail below.
[00116] During operation, the position profile generator 1302 will receive a position step command 1308 specifying a new target position for the motion system. Position step command 1308 may be generated by the control program executing on the controller (e.g., control program 1210 of FIG. 12), or may be a move instruction manually input by a user. In response to the position step command 1308, position profile generator calculates a constraint-based, time-optimal motion profile 1306 defining a trajectory for moving the load from its current position to the target position defined by the position step command 1308. The motion profile 1306 comprises one or more of a jerk reference, an acceleration reference, a velocity reference, or a position reference (which are mathematically related to each other as derivatives). Position profile generator 1302 defines these references as functions of time for each of a set of defined motion profile stages or segments. Table 1 summarizes the seven segments of a point-to-point motion profile.
Figure imgf000032_0001
Table 1
[00117] Initially, during the first stage (ACCJNC), the acceleration increases continuously from zero to a constant acceleration. In some scenarios, this constant acceleration will be the maximum acceleration defined by constrains 1304. However, for relatively short position steps this the position profile generator 1302 may determine that a smaller acceleration would result in a more accurate transition to the target position. During the second stage (ACCJHOLD), the acceleration is held at the constant rate. As the system approaches the target velocity calculated by the position profile generator 1302, the third stage (ACC_DEC) is entered, during which the acceleration is gradually decreased until the constant velocity is reached. When the constant velocity has been achieved, this constant velocity is held during the fourth stage (VELJHOLD) as the system approaches the target position. When the system is near the target position, the trajectory enters the fifth stage (DECJNC), during which the system begins decelerating at a gradually increasing rate from zero to a target deceleration defined by the motion profile. When the target deceleration is reached, this deceleration is held during the sixth stage (DEC_HOLD). Finally, during the seventh stage (DECJDEC), the deceleration is gradually decreased until the system reaches zero velocity, ending the move sequence.
[00118] When provided with a position step command 1308, position profile generator 1302 determines which of these seven profile segments are required for a time-optimal motion profile, and calculates one or more of a time varying jerk reference, acceleration reference, velocity reference, or position reference for each segment deemed necessary for the move. The calculated references for the respective stages are combined to yield a complete motion profile, which can be used by an open-loop or closed-loop motion controller (e.g., a motor drive) to drive the motion system through the trajectory defined by the motion profile.
[00119] FIG. 14 illustrates an exemplary velocity profile generator 1402 according to one or more embodiments. Velocity profile generator 1402 is similar to position profile generator 1302, but is used to calculate motion profiles in response to a desired change in velocity rather than a change in position. That is, velocity profile generator 1402 calculates a time-optimal motion profile 1406 for transitioning a motion system from a current velocity to a target velocity specified by velocity setpoint 1408. Since transition to a desired velocity setpoint is typically indifferent to the motion system's position, the constraints 1404 defined for the velocity profile generator 1402 may omit the position limit. Likewise, the motion profile 1406 generated by velocity profile generator 1402 may omit a position reference, and define the motion profile exclusively in terms of a time varying jerk reference, acceleration reference and/or velocity reference.
[00120] In some motion control applications, motion controllers generate one of either trapezoidal motion profiles or S-curve motion profiles. In addition to or instead of these profile types, the profile generator of the present disclosure can generate profiles according to a third profile type, referred to herein as an ST-curve profile. FIG. 15 compares an exemplary ST-curve profile with traditional trapezoidal and S-curve profiles. The time graphs illustrated in FIG. 15 plot the position, velocity, acceleration, and jerk for a given motion trajectory between position 0 (the start position) and position 2.5 (the target position, as may be defined by position step command 1308 of FIG. 13). As is generally understood, the plotted values are mathematically related to one another as derivatives. That is, velocity is the derivative of position (i.e., the rate of change of position), acceleration is the derivative of velocity, and jerk is the derivative of acceleration.
[00121] Trapezoidal motion profiles only employ three of the seven profile stages described above - constant acceleration (stage 2), constant velocity (stage 4), and constant deceleration (stage 6). This results in the trapezoidal velocity profile depicted by the dotted line of the velocity curve in FIG. 15. The abrupt transitions between the constant
acceleration/deceleration stages and the constant velocity stage results in sharp corners at the top of the trapezoidal velocity curve. Since the acceleration and deceleration phases of the trapezoidal profile are always constant, the acceleration curve for this profile steps abruptly between constant values, as illustrated by the dotted line on the acceleration graph. In the present example, the rate of deceleration is twice that of acceleration, so the acceleration curve for the trapezoidal case steps to 0.5 during the acceleration stage, 0 for the constant velocity stage, and -1.0 for the deceleration stage. Also, the jerk curve (representing the rate of change of acceleration/deceleration) pulses briefly during moments of transition (not plotted) and remains at zero when acceleration or deceleration remains constant, as shown by the dotted line on the jerk graph of FIG. 15.
[00122] Since the trapezoidal profile always accelerates and decelerates at a constant rate without gradual transitioning to and from the constant velocity stage, the trapezoidal curve profile can traverse the distance between the current position and the target position relatively quickly. However, the sudden transitions between acceleration/deceleration and constant (or zero) velocity can introduce undesirable mechanical turbulence in the system. Additionally, since the deceleration does not decrease gradually as the motion system approaches the target position, but instead maintains constant deceleration until the target position is reached before suddenly shifting to zero velocity, the trapezoidal motion profile has a high likelihood of overshooting the target position at the end of the initial traversal, requiring the controller to apply a compensatory control signal to bring the load back to the target position. This process may need to be iterated several times before the system settles on the target position, introducing undesirable system oscillations.
[00123] In contrast to the trapezoidal profile, the S-curve profile
(depicted as the light solid line in the graphs of FIG. 15) utilizes all the continuous acceleration/deceleration stages of the seven profile stages, thereby allowing gradual transitions between the constant (or zero) velocity phases and the constant acceleration/deceleration stages. These gradual acceleration transitions can be seen clearly on the acceleration graph. Rather than starting at a constant acceleration from time 0, as does the trapezoidal profile, the acceleration for the S-curve profile ramps gradually to constant acceleration starting at time 0. When the velocity has reached maximum (between 1s and 2s), the acceleration gradually decreases to zero to achieve constant velocity, rather than stepping down abruptly to zero as in the trapezoidal case. Similar gradual changes in acceleration can be seen during the later deceleration stages for the S-curve profile. The effect of these gradual acceleration changes on the velocity and position curves can be seen on the respective velocity and position graphs. In particular, the corners of the S-curve velocity profile are rounder relative to those of the trapezoidal curve, representing a smoother transition between the
acceleration/deceleration stages and the constant velocity stages. Likewise, the S-curve position profile shows a smoother transition between the initial position and the target position, though at the expense of additional time required to reach the target.
[00124] One or more embodiments of the profile generator described herein can support generation of S-curve motion profiles. Conventionally, motion control systems that utilize S-curve motion profiles only support symmetrical acceleration and deceleration; that is, the absolute values of the constant acceleration and the constant deceleration stages are equal. By contrast, the profile generator described herein can support S-curve motion profiles having asymmetrical acceleration and deceleration. This is illustrated on the acceleration graph of FIG. 15, which depicts the S-curve as having a limit of 0.5 during acceleration, and a limit of -1 during deceleration. To provide for such asymmetric acceleration and deceleration, the profile generator can allow separate acceleration and deceleration limits to be configured as system constraints (see, e.g., constraints 1304 of FIG. 13), and calculate the motion profile in view of these constraints.
[00125] As illustrated on the jerk graph, the rate at which the
acceleration/deceleration increases and decreases during stages 1 , 3, 5, and 7 of the motion profile for the S-curve case are always constant. That is, the jerk is always a constant value for any given stage of the motion profile - either 1 , 0, or -1 in the present example. This can result in sharp transitions between the increasing/decreasing acceleration (or deceleration) stages and constant acceleration stages, as illustrated on the acceleration graph.
[00126] To facilitate smoother motion than that offered by the trapezoidal and S-curve profiles of conventional motion control systems while achieving time-optimal transition between positions, one or more embodiments of the profile generator described herein can calculate motion profiles that accord to the ST-curve profile type. An exemplary ST-curve profile is represented as the dark solid line on the graphs of FIG. 15. In contrast to the trapezoidal and S-curve profiles, the ST-curve profile gradually varies the jerk continuously over time during the stages of increasing and decreasing acceleration and deceleration. This can result in the smoother acceleration transitions illustrated on the acceleration graph of FIG. 15, and the corresponding smoother velocity and position curves shown in the respective velocity and position graphs.
[00127] Moreover, ST-curve profiles can support asymmetrical acceleration and deceleration (that is, the profile generator can calculate profiles having rates of acceleration that differ from the rates of deceleration for a given motion profile). Deriving a mathematical trajectory expression as a function of time while simultaneously finding a time-optimal solution can be challenging when using asymmetric acceleration/deceleration. To address this concern, one or more embodiments of the profile generator described herein can employ an algorithm that leverages a relationship between acceleration and deceleration, and between acceleration jerk and deceleration jerk, and substitute these relationships during the derivation, making it possible to derive the analytical expressions of the trajectories and then find the time-optimal solution.
[00128] An exemplary ST-curve position profile is derived below. One or more embodiments of the profile generator described herein can generate motion profile references based on the following derivations. However, it is to be understood that the profile generator described herein is not limited to this technique for generating motion profiles based on ST-curves, and that any suitable algorithm that yields a continuous jerk curve defined as a function of time is within the scope of this disclosure.
[00129] In the following equations, # , , ^ , and #are jerk,
acceleration, velocity, and position, respectively, f-i , t2, £3, and f5 are the respective durations of the ACCJNC, ACCJHOLD, VEL_HOLD, DECJNC, and DEC_HOLD stages of the motion profile (see Table 1 above). In the present example, it is assumed that ACCJNC and ACCJDEC are equal in duration, and thus is the duration of both the ACCJNC and ACCJDEC stages. Likewise, DECJNC is assumed to be equal in duration to DECJ3EC, so is the duration for both DECJNC and DECJDEC. K is a gain value to be determined for each stage of the motion profile for each of the jerk, acceleration, velocity, and position, according to the following equations (where, for each of the seven stages, t = 0 represents the start time of the respective stage):
Figure imgf000037_0001
Figure imgf000038_0001
Figure imgf000039_0001
[00130] Given these relationships, the maximum acceleration jerk, maximum deceleration jerk, maximum acceleration, maximum deceleration, and maximum velocity can be described in terms of the segment durations:
12
K = P (18)
tf (t1+t2)(t5+2t4+2t3+2i:1+t2)
J = P (19)
ti(t1+t2)(t5 + 2t4+2t3+2t1+t2) l = P (20)
t4(t +ts)(t5+2t4+2t3+2t1+t2)
A = P (21)
(t1+t2)(ts+2t4+2t3+2t1+t2)
D = P (22)
(t4+t5)(ts+2t4+2t3+2t1+t2)
V = P (23)
(ts+2t4+2t3+2t1+t2)
where: P is the position step,
J is the maximum acceleration jerk,
/ is the maximum deceleration jerk,
A is the maximum acceleration,
D is the maximum deceleration, and
Vis the maximum velocity.
[00131] The relationships among P, V, A, D, J, I, , t2, h, , and t5 can now be obtained: ti(ti + t2) = tf(t4 + ts) (24)
3A
= (25)
2/
3D
(26)
21
3A
(27)
V 3D
(28)
D 2/
¾ =£_ _ -Η_ϋ (29)
V 4J 2A 4/ 2D
(30)
[00132] Given that f-i, fe, is, it, and t5 should all be greater than or equal to zero, and assuming that
D
1 = P (3D. 2
= P3 (32)
J the following set of inequalities can be established:
Figure imgf000041_0001
V≥-D2 (34)
21 ≥ Lp-,D + P L + lD + ll (35)
V 41 2 D 41 2 D
-≥ (p-^ + l) -D + - (p + l) - (36)
V V J 41 2 V D
[00133] Solving inequalities (33)-(36) yields appropriate values for V, A, D, J, and / (the maximum values for velocity, acceleration, deceleration, acceleration jerk, and deceleration jerk, respectively).
[00134] Substituting these maximum values into equations (25)-(29) can yield values for f-i, f2, fe, , and t5 (the durations of the respective segments of the motion profile). The values for V, A, D, J, I, , t2, t3, U, and t5 derived according to equations (14) - (36) above can produce a smooth, time-optimal trajectory that operates within the defined mechanical constraints or user demands.
[00135] Based on the relationships described above, the profile generator can calculate a suitable ST-curve motion profile for a given point-to- point move. It is recognized, however, that the values initially calculated for , t2, £3, , and t5 may not be multiples of the controller's sample time, and consequently may not align with the sample points of the motion controller. When a profile segment duration falls between two controller sample points, it may be necessary for the controller to compensate for small differences between the desired control signal output and the actual control signal output. To address this issue, one or more embodiments of the profile generator described herein can perform an additional computation after the maximum values V, A, D, J, and / and the segment durations , t2, t3, , and f5 have been derived as described above.
[00136] Specifically, after the profile generator has calculated , f2, h, U, and t5 according to the above derivations, each of these duration values can be upper-rounded to the nearest sample time to yield f-iNew, fcNew, feNew, fcwew, and ieNew- This rounding step can be based on the sample time provided to the profile generator as one of the constraints 1304 or 1404. The profile generator can then calculate new values for V, A, D, J, and / using the rounded duration values i1New. feNew. ¾ ew, ^ ew, and i5New- This recalculation yields a final motion profile comprising segment durations that are multiples of the sample time, which can ensure that the control signal output by the controller is aligned with the controller's sample points, thereby mitigating the need to compensate for the small difference introduced when the motion profile times fall between two sample points.
[00137] Alternatively or in addition to the ST-curves described above, one or more embodiments of the profile generator described herein is capable of generating S-curve profiles having asymmetric acceleration and
deceleration (see, e.g., the exemplary S-curve trajectory of FIG. 15). An exemplary S-curve profile having asymmetric acceleration and deceleration is derived below. One or more embodiments of the profile generator described herein can generate motion profile references based on the following derivations or variants thereof.
[00138] As in the ST-curve equations derived above, # , # , # , and Θ are jerk, acceleration, velocity, and position, respectively. , t2, t3, U and fe are the respective durations of the ACCJNC, ACC_HOLD, VELJHOLD,
DECJNC, and DEC_HOLD stages of the motion profile (see Table 1 above). As in the ST-curve example, it is assumed that ACCJNC and ACC_DEC are equal in duration, and thus is the duration of both the ACCJNC and ACCJDEC stages. Likewise, DECJNC is assumed to be equal in duration to DECJDEC, so U is the duration for both DECJNC and DECJDEC. K is a gain value to be determined for each stage of the motion profile for each of the jerk, acceleration, velocity, and position, according to the following equations (where, for each of the seven stages, t = 0 represents the start time of the respective stage):
Figure imgf000043_0001
Figure imgf000043_0002
Figure imgf000043_0003
0<t<t,
→ι3+→ι(' + 'ι) , 0 < t < t2
1(t2+t1)(t2+2t) + i( 0<t<tx 1
0(0 = κ i,(t, +i2)(2t, + t2 +2t), 0<t<t3 t1(i1+t2)(2t1+t2+2t3+2i)-it3, 0<t<
o
tx (t, +t2)(2t, +t2 +2t3 +2t4 + 2t)--t] --tt--t , 0<t<t5
6 2 2
1
tl(tl+t2)(2tl+t2+2t3+2t^+t5)— (t4-t) , 0<t<t4
6
[00139] Given these relationships, the maximum acceleration jerk, maximum deceleration jerk, maximum acceleration, maximum deceleration, and maximum velocity can be described in terms of the segment durations:
K = P (41)
tl(tl + t2)(t5+2t4+2t3+2ti + t2)
J = I = K (42)
(t1+t2)(t5+2t4+2t3+2t1+t2)
(t4+t5)(ts+2t4+2t3+2t1+t2)
ts+2t4+2t3+2t1+t2 where:
P is the position step,
J is the maximum acceleration jerk, / is the maximum deceleration jerk,
A is the maximum acceleration,
D is the maximum deceleration, and
V is the maximum velocity.
[00140] The relationships among P, V, A, D, J, I, , t2, t3l U, and fe can now be obtained: ti (ti + t2) = t4(t4 + t5) (46) = (47) v
= (48)
t (49)
V_ _ D
(50)
D J
ό V 2] 2A 2] 2D v '
[00141] Given that , t2, t3, , and t5 should all be greater than or equal to zero, and assuming that = P (52) the following set of inequalities can be established:
V≥ = _ D2 (53)
/ Jp2 V≥ - D2 (54)
J
Figure imgf000046_0001
- > (p-1 + l) - + i (p + l) - (56)
V J 21 2 J D
[00142] Solving inequalities (53)-(56) yields appropriate values for V, A D, J, and / (the maximum values for velocity, acceleration, deceleration, acceleration jerk, and deceleration jerk, respectively) for the S-curve profile.
[00143] Substituting these maximum values into equations (47)-(51) can yield values for , t2, h, , and t5 (the durations of the respective segments of the S-curve motion profile). The values for V, A, D, J, /, , t2, h, f4, and t5 derived according to equations (37) - (56) above can produce an S-curve profile having asymmetrical acceleration and deceleration, and that operates within the defined mechanical constraints or user demands.
[00144] In some embodiments, the profile generator can adapt the resultant S-curve motion profile to the sample time of the controller by way of an additional calculation similar to that described above in connection with the ST-curve profile. That is, after calculating , t2, t3, U, and t5 according to the above derivations, the profile generator can upper-round these durations to the nearest sample time to yield new duration values f-iNew, fe ew, hNew, t^ew, and f5New- The profile generator can then calculate new values for V, A, D, J, and / using the rounded duration values fiNew, feNew, ¾ ew, knew, and f5New- [00145] While motion profiles typically comprise the seven stages listed in Table 1 above, some point-to-point moves may not require all seven segments. For example, if the distance between the current state of the motion system and the target state is relatively small, the VELJHOLD
(constant velocity) segment of the motion profile may be eliminated.
Accordingly, one or more embodiments of the profile generator described herein may support automatic or intelligent segment skipping. That is, rather than perform calculations for all seven stages of the profile, even if one or more of the stages will not be used in the final trajectory, some embodiments of the profile generator described herein can calculate only those stages that will be used in the final trajectory for a given point-to-point move.
[00146] The motion profile can automatically determine which segments can be skipped during calculation of the motion profile when a new move command is received. In some embodiments, the profile generator may determine which segments may be skipped based in part on the total distance between the current position and the target position (in the case of a position change), or the difference between the current velocity and the target velocity (in the case of a velocity change), where smaller differences between the current and target state may suggest elimination of certain segments of the motion profile. In such embodiments, the difference between the current and target states may be compared with a set of defined difference ranges, where each defined difference range is associated with one or more segments that may be omitted from a corresponding motion profile.
[00147] One or more embodiments of the profile generator described herein may also infer which segments may be skipped based on historical motion data. For example, the profile generator may record a history of issued move commands and corresponding trajectory data (e.g., position, velocity, acceleration, and/or jerk over time) for the moves performed in response to the commands. The profile generator can analyze this historical data to make an inference regarding which segments may be omitted for a particular type of move. Thus, when a new point-to-point move command is received, prior to calculating the motion profile for the move, the profile generator can infer which segments may be skipped based on the shape of trajectories performed in response to past move commands having similar characteristics (e.g., similar distances to traverse, similar speeds at the time the move command was received, etc.).
[00148] FIGs. 16-19 illustrate segment skipping for exemplary seven- stage position profiles. FIG. 16 illustrates an exemplary S-curve profile that utilizes all seven stages. FIG. 17 illustrates a profile that skips segment 4 (the constant velocity stage). Profile generator may calculate such a profile in cases for which the position or velocity step to be traversed is small enough that the constant velocity stage will not be reached before the target position or velocity is reached. Upon receipt of such a position step or velocity setpoint command, the profile generator can make this determination prior to performing the profile calculations for the desired move, and will only perform calculations on stages 1-3 and 5-7. Similarly, FIG. 18 illustrates an example profile that skips segments 2 and 6, and FIG. 19 illustrates an example profile that skips segments 2, 4, and 6.
[00149] FIGS. 20-22 illustrate various methodologies in accordance with certain disclosed aspects. While, for purposes of simplicity of explanation, the methodologies are shown and described as a series of acts, it is to be understood and appreciated that the disclosed aspects are not limited by the order of acts, as some acts may occur in different orders and/or concurrently with other acts from that shown and described herein. For example, those skilled in the art will understand and appreciate that a methodology can alternatively be represented as a series of interrelated states or events, such as in a state diagram. Moreover, not all illustrated acts may be required to implement a methodology in accordance with certain disclosed aspects.
Additionally, it is to be further appreciated that the methodologies disclosed hereinafter and throughout this disclosure are capable of being stored on an article of manufacture to facilitate transporting and transferring such methodologies to computers.
[00150] FIG. 20 illustrates an example methodology 2000 for calculating a motion profile for a point-to-point move in a motion control system. At 2002, a set of motion constraints are defined for a motion control system. These constraints can represent physical constraints of a mechanical system controlled by the motion control system, and can include limits on velocity, acceleration, deceleration, and jerk. The constraints can also include a definition of the sample time for the motion controller used to control the mechanical system. At 2002, a command to transition the controlled mechanical system to a new position or velocity is received. This command can originate from a motion control program executed by the motion controller, or can be a manual move command entered by a user. The command can be received by a profile generator associated with the motion controller (e.g., profile generator 1206, 1302, or 1402 described above).
[00151] At 2006, in response to receipt of the command received at step 2004, a motion profile can be calculated for moving the mechanical system from its current position or velocity to the new position or velocity indicated by the command. The profile generator can calculate this motion profile to include a continuous jerk reference defined as a function of time for at least one of the segments of the motion profile. In some embodiments, the motion profile can be calculated as an ST-curve according to the derivations described above in connection with equations (14)-(36). Such a motion profile can yield a jerk reference having the general format depicted by the dark solid line of the jerk graph illustrated in FIG. 15, in which the jerk gradually varies over time between a maximum and minimum value according to the calculated jerk function. At 2008, the controlled mechanical system is instructed to traverse from its current position or velocity to the new position or velocity according to the motion profile defined at step 2006. This can entail, for example, providing the motion profile calculated at step 2006 to a motor drive, which controls a motor that drives the mechanical system in accordance with the motion profile and (in the case of closed-loop control) a feedback signal providing measured real-time state data for the mechanical system.
[00152] FIG. 21 illustrates an example methodology 2100 for calculating a constraint-based time-optimal motion profile that conforms to a sample time of a motion controller. At 2102, a set of motion constrains for a controlled mechanical system are defined. As in previous examples, these can include limits on velocity, acceleration, deceleration, and jerk, as well as the sample time of the controller. These constraints can be provided to a profile generator associated with the controller (e.g., profile generator 1206, 1302, or 1402 described above). At 2104, a command to transition the mechanical system from a current position or velocity to a new position or velocity is received (e.g., by the profile generator). At 2106, a motion profile for controlling the trajectory of the mechanical system in response to the command is generated by calculating at least one of the maximum
acceleration jerk (J), maximum deceleration jerk (/), maximum acceleration (A), maximum deceleration (D), and maximum velocity (V) as functions of time for each segment of the motion profile (where the profile can comprise up to seven segments as defined in Table 1 above). In addition, the durations for each segment of the profile are calculated (for example, using the techniques described above in connection with equations (14)-(36)). [00153] At 2108, it is determined whether all profile segment durations calculated at step 2106 are multiples of the sample time of the controller. If all segments have durations that are multiples of the sample time, the method moves to step 2 14, where a motion profile is generated based on the profile segment durations and the values of J, I, A, D, and V calculated at step 2106. Alternatively, if one or more of the profile segments are not an even multiple of the cycle time, the method moves to step 21 0, where all profile segment durations are upper-rounded to the nearest multiple of the sample time. At 2112, the values of one or more of J, I, A, D, and V are recalculated based on the rounded profile segment durations derived at step 2110. Based on the rounded profile segment durations and the recalculated values of J, I, A, D, and/or V, a motion profile is generated at 2114.
[00154] FIG. 22 illustrates an example methodology 2200 for efficiently calculating a motion profile for a point-to-point move using segment skipping. At 2202, a command to transition a controlled mechanical system to a new position or new velocity is received (e.g., at profile generator 1206, 1302, or 1402). At 2204, a determination can be made regarding which of the seven segments of the motion profile are required to perform the requested point-to- point move. This determination can be made automatically by the profile generator based, for example, on a determination of the distance that must be traversed between the current position and the desired position (in the case of a position change) or the difference between the current velocity and the desired velocity (in the case of a velocity change).
[00155] At 2206, a determination is made as to whether all seven profile segments are required to carry out the desired move, based on the
determination made at 2204. If all profile segments are required, the method moves to step 2210, where a motion profile is generated for the point-to-point move by performing profile calculations for all seven segments. Alternatively, if it is determined at step 2206 that one or more profile segments are not required, the method moves to step 2208, where a motion profile is generated for the point-to-point move by performing calculations only for the required segments, as determined at step 2204. Segment skipping according to methodology 2200 can facilitate more efficient calculation of a constraint- based, time-optimal motion profile by reducing unnecessary processing overhead associated with calculating unnecessary profile segments.
EXEMPLARY NETWORKED AND DISTRIBUTED ENVIRONMENTS
[00156] One of ordinary skill in the art can appreciate that the various embodiments described herein can be implemented in connection with any computer or other client or server device, which can be deployed as part of a computer network or in a distributed computing environment, and can be connected to any kind of data store where media may be found. In this regard, the various embodiments of the video editing system described herein can be implemented in any computer system or environment having any number of memory or storage units (e.g., memory 216 of FIG. 2 or 1112 of FIG. 11), and any number of applications and processes occurring across any number of storage units. This includes, but is not limited to, an environment with server computers and client computers deployed in a network environment or a distributed computing environment, having remote or local storage. For example, with reference to FIG. 2, the torque command generator 204, velocity monitoring component 206, inertia component 208, friction coefficient component 210, and interface component 212 can be stored on a single memory 216 associated with a single device, or can be distributed among multiple memories associated with respective multiple devices. Similarly, torque command generator 204, velocity monitoring component 206, inertia component 208, friction coefficient component 210, and interface component . 212 can be executed by a single processor 214, or by multiple distributed processors associated with multiple devices.
[00 57] Distributed computing provides sharing of computer resources and services by communicative exchange among computing devices and systems. These resources and services include the exchange of information, cache storage and disk storage for objects. These resources and services can also include the sharing of processing power across multiple processing units for load balancing, expansion of resources, specialization of processing, and the like. Distributed computing takes advantage of network connectivity, allowing clients to leverage their collective power to benefit the entire enterprise. In this regard, a variety of devices may have applications, objects or resources that may participate in the various embodiments of this disclosure.
[00158] FIG. 23 provides a schematic diagram of an exemplary networked or distributed computing environment. The distributed computing environment includes computing objects 2310, 2312, etc. and computing objects or devices 2320, 2322, 2324, 2326, 2328, etc., which may include programs, methods, data stores, programmable logic, etc., as represented by applications 2330, 2332, 2334, 2336, 2338. It can be appreciated that computing objects 2310, 2312, etc. and computing objects or devices 2320, 2322, 2324, 2326, 2328, etc. may comprise different devices, such as personal digital assistants (PDAs), audio/video devices, mobile phones, MP3 players, personal computers, laptops, tablets, etc., where embodiments of the inertia estimator described herein may reside on or interact with such devices.
[00159] Each computing object 2310, 2312, etc. and computing objects or devices 2320, 2322, 2324, 2326, 2328, etc. can communicate with one or more other computing objects 1110, 1112, etc. and computing objects or devices 2320, 2322, 2324, 2326, 2328, efc. by way of the communications network 2340, either directly or indirectly. Even though illustrated as a single element in FIG. 23, communications network 2340 may comprise other computing objects and computing devices that provide services to the system of FIG. 23, and/or may represent multiple interconnected networks, which are not shown. Each computing object 2310, 2312, efc. or computing objects or devices 2320, 2322, 2324, 2326, 2328, etc. can also contain an application, such as applications 2330, 2332, 2334, 2336, 2338 (e.g., inertia estimator 202, motion profile generating system 1102, or components thereof), that might make use of an API, or other object, software, firmware and/or hardware, suitable for communication with or implementation of various embodiments of this disclosure.
[00 60] There are a variety of systems, components, and network configurations that support distributed computing environments. For example, computing systems can be connected together by wired or wireless systems, by local networks or widely distributed networks. Currently, many networks are coupled to the Internet, which provides an infrastructure for widely distributed computing and encompasses many different networks, though any suitable network infrastructure can be used for exemplary communications made incident to the systems as described in various embodiments herein.
[00161] Thus, a host of network topologies and network infrastructures, such as client/server, peer-to-peer, or hybrid architectures, can be utilized. The "client" is a member of a class or group that uses the services of another class or group. A client can be a computer process, e.g., roughly a set of instructions or tasks, that requests a service provided by another program or process. A client process may utilize the requested service without having to "know" all working details about the other program or the service itself.
[00162] In a client/server architecture, particularly a networked system, a client can be a computer that accesses shared network resources provided by another computer, e.g., a server. In the illustration of FIG. 23, as a non- limiting example, computing objects or devices 2320, 2322, 2324, 2326, 2328, etc. can be thought of as clients and computing objects 2310, 2312, etc. can be thought of as servers where computing objects 2310, 2312, etc. provide data services, such as receiving data from client computing objects or devices 2320, 2322, 2324, 2326, 2328, etc., storing of data, processing of data, transmitting data to client computing objects or devices 2320, 2322, 2324, 2326, 2328, efc, although any computer can be considered a client, a server, or both, depending on the circumstances. Any of these computing devices may be processing data, or requesting transaction services or tasks that may implicate the techniques for systems as described herein for one or more embodiments.
[00163] A server is typically a remote computer system accessible over a remote or local network, such as the Internet or wireless network
infrastructures. The client process may be active in a first computer system, and the server process may be active in a second computer system, communicating with one another over a communications medium, thus providing distributed functionality and allowing multiple clients to take advantage of the information-gathering capabilities of the server. Any software objects utilized pursuant to the techniques described herein can be provided standalone, or distributed across multiple computing devices or objects.
[00164] In a network environment in which the communications network/bus 2340 is the Internet, for example, the computing objects 2310, 2312, etc. can be Web servers, file servers, media servers, ete. with which the client computing objects or devices 2320, 2322, 2324, 2326, 2328, ete.
communicate via any of a number of known protocols, such as the hypertext transfer protocol (HTTP). Computing objects 2310, 2312, ete. may also serve as client computing objects or devices 2320, 2322, 2324, 2326, 2328, ete., as may be characteristic of a distributed computing environment.
EXEMPLARY COMPUTING DEVICE
[00165] As mentioned, advantageously, the techniques described herein can be applied to any suitable device. It is to be understood, therefore, that handheld, portable and other computing devices and computing objects of all kinds are contemplated for use in connection with the various embodiments. Accordingly, the below computer described below in FIG. 24 is but one example of a computing device. Additionally, a suitable server can include one or more aspects of the below computer, such as a media server or other media management server components.
[00166] Although not required, embodiments can partly be implemented via an operating system, for use by a developer of services for a device or object, and/or included within application software that operates to perform one or more functional aspects of the various embodiments described herein. Software may be described in the general context of computer executable instructions, such as program modules, being executed by one or more computers, such as client workstations, servers or other devices. Those skilled in the art will appreciate that computer systems have a variety of configurations and protocols that can be used to communicate data, and thus, no particular configuration or protocol is to be considered limiting.
[00167] FIG. 24 thus illustrates an example of a suitable computing system environment 2400 in which one or aspects of the embodiments described herein can be implemented, although as made clear above, the computing system environment 2400 is only one example of a suitable computing environment and is not intended to suggest any limitation as to scope of use or functionality. Neither is the computing system environment 2400 be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary computing system environment 2400.
[00168] With reference to FIG. 24, an exemplary computing device for implementing one or more embodiments in the form of a computer 2410 is depicted. Components of computer 2410 may include, but are not limited to, a processing unit 2420, a system memory 2430, and a system bus 2422 that couples various system components including the system memory to the processing unit 2420. Processing unit 2420 may, for example, perform functions associated with processor(s) 214 of inertia estimator 202, while system memory 2430 may perform functions associated with memory 216.
[00169] Computer 2410 typically includes a variety of computer readable media and can be any available media that can be accessed by computer 2410. The system memory 2430 may include computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) and/or random access memory (RAM). By way of example, and not limitation, system memory 2430 may also include an operating system, application programs, other program modules, and program data.
[00170] A user can enter commands and information into the computer 2410 through input devices 2440, non-limiting examples of which can include a keyboard, keypad, a pointing device, a mouse, stylus, touchpad, touchscreen, trackball, motion detector, camera, microphone, joystick, game pad, scanner, or any other device that allows the user to interact with computer 2410. A monitor or other type of display device is also connected to the system bus 2422 via an interface, such as output interface 2450. In addition to a monitor, computers can also include other peripheral output devices such as speakers and a printer, which may be connected through output interface 2450. In one or more embodiments, input devices 2440 can provide user input to interface component 212, while output interface 2450 can receive information relating to operations of inertia estimator 202 from interface component 212.
[00171] The computer 2410 may operate in a networked or distributed environment using logical connections to one or more other remote computers, such as remote computer 2470. The remote computer 2470 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, or any other remote media consumption or transmission device, and may include any or all of the elements described above relative to the computer 2410. The logical connections depicted in FIG. 24 include a network 2472, such local area network (LAN) or a wide area network (WAN), but may also include other networks/buses e.g., cellular networks.
[00172] As mentioned above, while exemplary embodiments have been described in connection with various computing devices and network architectures, the underlying concepts may be applied to any network system and any computing device or system in which it is desirable to publish or consume media in a flexible way.
[00173] Also, there are multiple ways to implement the same or similar functionality, e.g., an appropriate API, tool kit, driver code, operating system, control, standalone or downloadable software object, etc. which enables applications and services to take advantage of the techniques described herein. Thus, embodiments herein are contemplated from the standpoint of an API (or other software object), as well as from a software or hardware object that implements one or more aspects described herein. Thus, various embodiments described herein can have aspects that are wholly in hardware, partly in hardware and partly in software, as well as in software.
[00174] The word "exemplary" is used herein to mean serving as an example, instance, or illustration. For the avoidance of doubt, the aspects disclosed herein are not limited by such examples. In addition, any aspect or design described herein as "exemplary" is not necessarily to be construed as preferred or advantageous over other aspects or designs, nor is it meant to preclude equivalent exemplary structures and techniques known to those of ordinary skill in the art. Furthermore, to the extent that the terms "includes," "has," "contains," and other similar words are used in either the detailed description or the claims, for the avoidance of doubt, such terms are intended to be inclusive in a manner similar to the term "comprising" as an open transition word without precluding any additional or other elements.
[00175] Computing devices typically include a variety of media, which can include computer-readable storage media {e.g., memory 216 or 1112) and/or communications media, in which these two terms are used herein differently from one another as follows. Computer-readable storage media can be any available storage media that can be accessed by the computer, is typically of a non-transitory nature, and can include both volatile and nonvolatile media, removable and non-removable media. By way of example, and not limitation, computer-readable storage media can be implemented in connection with any method or technology for storage of information such as computer-readable instructions, program modules, structured data, or unstructured data. Computer-readable storage media can include, but are not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disk (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or other tangible and/or non-transitory media which can be used to store desired information. Computer-readable storage media can be accessed by one or more local or remote computing devices, e.g., via access requests, queries or other data retrieval protocols, for a variety of operations with respect to the information stored by the medium.
[00176] On the other hand, communications media typically embody computer-readable instructions, data structures, program modules or other structured or unstructured data in a data signal such as a modulated data signal, e.g., a carrier wave or other transport mechanism, and includes any information delivery or transport media. The term "modulated data signal" or signals refers to a signal that has one or more of its characteristics set or changed in such a manner as to encode information in one or more signals. By way of example, and not limitation, communication media include wired media, such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media.
[00177] As mentioned, the various techniques described herein may be implemented in connection with hardware or software or, where appropriate, with a combination of both. As used herein, the terms "component," "system" and the like are likewise intended to refer to a computer-related entity, either hardware, a combination of hardware and software, software, or software in execution. For example, a component may be, but is not limited to being, a process running on a processor, a processor, an object, an executable, a thread of execution, a program, and/or a computer. By way of illustration, both an application running on computer and the computer can be a component. One or more components may reside within a process and/or thread of execution and a component may be localized on one computer and/or distributed between two or more computers. Further, a "device" can come in the form of specially designed hardware; generalized hardware made specialized by the execution of software thereon that enables the hardware to perform specific function (e.g., coding and/or decoding); software stored on a computer readable medium; or a combination thereof.
[00178] The aforementioned systems have been described with respect to interaction between several components. It can be appreciated that such systems and components can include those components or specified subcomponents, some of the specified components or sub-components, and/or additional components, and according to various permutations and combinations of the foregoing. Sub-components can also be implemented as components communicatively coupled to other components rather than included within parent components (hierarchical). Additionally, it is to be noted that one or more components may be combined into a single component providing aggregate functionality or divided into several separate sub-components, and that any one or more middle layers, such as a management layer, may be provided to communicatively couple to such subcomponents in order to provide integrated functionality. Any components described herein may also interact with one or more other components not specifically described herein but generally known by those of skill in the art.
[00179] In order to provide for or aid in the numerous inferences described herein (e.g. inferring audio segments), components described herein can examine the entirety or a subset of the data to which it is granted access and can provide for reasoning about or infer states of the system, environment, etc. from a set of observations as captured via events and/or data. Inference can be employed to identify a specific context or action, or can generate a probability distribution over states, for example. The inference can be probabilistic - that is, the computation of a probability distribution over states of interest based on a consideration of data and events. Inference can also refer to techniques employed for composing higher-level events from a set of events and/or data. [00180] Such inference can result in the construction of new events or actions from a set of observed events and/or stored event data, whether or not the events are correlated in close temporal proximity, and whether the events and data come from one or several event and data sources. Various classification (explicitly and/or implicitly trained) schemes and/or systems (e.g., support vector machines, neural networks, expert systems, Bayesian belief networks, fuzzy logic, data fusion engines, etc.) can be employed in connection with performing automatic and/or inferred action in connection with the claimed subject matter.
[00181] A classifier can map an input attribute vector, x = (x1 , x2, x3, x4, xn), to a confidence that the input belongs to a class, as by f(x) =
confidence(class). Such classification can employ a probabilistic and/or statistical-based analysis (e.g., factoring into the analysis utilities and costs) to prognose or infer an action that a user desires to be automatically performed. A support vector machine (SVM) is an example of a classifier that can be employed. The SVM operates by finding a hyper-surface in the space of possible inputs, where the hyper-surface attempts to split the triggering criteria from the non-triggering events. Intuitively, this makes the classification correct for testing data that is near, but not identical to training data. Other directed and undirected model classification approaches include, e.g., naive Bayes, Bayesian networks, decision trees, neural networks, fuzzy logic models, and probabilistic classification models providing different patterns of independence can be employed. Classification as used herein also is inclusive of statistical regression that is utilized to develop models of priority.
[00182] In view of the exemplary systems described above,
methodologies that may be implemented in accordance with the described subject matter will be better appreciated with reference to the flowcharts of the various figures (e.g., FIGs. 9, 10, and 20-22). While for purposes of simplicity of explanation, the methodologies are shown and described as a series of blocks, it is to be understood and appreciated that the claimed subject matter is not limited by the order of the blocks, as some blocks may occur in different orders and/or concurrently with other blocks from what is depicted and described herein. Where non-sequential, or branched, flow is illustrated via flowchart, it can be appreciated that various other branches, flow paths, and orders of the blocks, may be implemented which achieve the same or a similar result. Moreover, not all illustrated blocks may be required to implement the methodologies described hereinafter.
[00183] In addition to the various embodiments described herein, it is to be understood that other similar embodiments can be used or modifications and additions can be made to the described embodiment(s) for performing the same or equivalent function of the corresponding embodiment(s) without deviating there from. Still further, multiple processing chips or multiple devices can share the performance of one or more functions described herein, and similarly, storage can be effected across a plurality of devices. Accordingly, the invention is not to be limited to any single embodiment, but rather can be construed in breadth, spirit and scope in accordance with the appended claims.

Claims

CLAIMS What is claimed is:
1. A method for estimating parameters of a motion system, comprising: generating a torque command signal that varies continuously over time;
measuring velocity data for a motion device representing a velocity of the motion system in response to the torque command signal; and
determining at least one of an inertia or a friction coefficient of the motion system based at least in part on the velocity data and the torque command signal.
2. The method of claim 1 , wherein the determining comprises determining the at least one of the inertia or the friction coefficient based at least in part on one or more integrals of the velocity data over a time range and one or more integrals of the torque command signal over the time range.
3. The method of claim 1 , wherein the generating the torque command signal comprises adjusting the torque command signal in accordance with a predefined testing sequence, wherein the adjusting includes changing at least one of a direction or a rate of change of the torque command signal in response to the velocity of the motion system reaching a predefined velocity checkpoint.
4. The method of claim 2, wherein the determining comprises:
designating a first segment of the time range as an acceleration phase; designating a second segment of the time range as a deceleration phase;
integrating the torque command signal and the velocity data over the acceleration phase to yield Uacc and Vacc, respectively;
integrating the torque command signal and the velocity data over the deceleration phase to yield Udec and Vdec, respectively; and
determining the at least one of the inertia or the friction coefficient as a function of Uacc, Vacc, Udec, and VdeCt where:
Uacc= jwacc( ,
Figure imgf000062_0001
Udec= udec(t) , Vdec= lVdec(t) ,
Wacc(t) is a portion of the torque command signal corresponding to the acceleration phase,
^acc(t) is a portion of the velocity data corresponding to the acceleration phase,
"decC is a portion of the torque command signal corresponding to the deceleration phase, and
^dec(t) is a portion of the velocity data corresponding to the deceleration phase.
5. The method of claim 4, wherein the determining the at least one of the inertia or the friction coefficient comprises at least one of determining the inertia according to:
U γ -Tj V
J dec acc acc dec
" ^dec(tWacc -^acc(tWdec ' or determining the friction coefficient according to:
B_ &Vdec(t)Uacc- vaccUdec
^dec(t)Vacc - Vacc{t)Vdec' where:
J is the inertia,
B is the friction coefficient,
Avacc(t) is a difference between a velocity of the motion system at an end of the acceleration phase and a velocity of the motion system at a beginning of the acceleration phase, and
&vdec t) is a difference between a velocity of the motion system at an end of the deceleration phase and a velocity of the motion system at a beginning of the deceleration phase.
6. The method of claim 1 , further comprising determining at least one controller gain coefficient for the motion system based on the at least one of the inertia or the friction coefficient.
7. A system for estimating mechanical parameters of a motion system, comprising:
a memory;
a processor configured to execute computer-executable components stored on the memory, the computer-executable components comprising:
a torque command generator configured to generate a torque command signal that varies continuously over time during a testing sequence;
a velocity monitoring component configured to obtain velocity data representing a velocity of a motion system over time in response to the torque command signal; and
at least one of:
an inertia component configured to estimate an inertia of the motion system based on the torque command signal and the velocity data, or
a friction coefficient component configured to estimate a friction coefficient of the motion system based on the torque command signal and the velocity data.
8. The system of claim 7, wherein the at least one of the inertia
component or the friction coefficient component is further configured to estimate the inertia or the friction coefficient, respectively, based at least in part on one or more integrals of the velocity data over a time range and one or more integrals of the torque command signal over the time range, wherein the time range is at least a portion of a duration of the testing sequence.
9. The system of claim 7, wherein the torque command generator is further configured to control the torque command signal in accordance with a torque function u t), where (t) is based on a set of predefined instructions associated with respective phases of the testing sequence, and wherein the respective phases are triggered in response to the velocity of the motion system reaching respective defined velocity checkpoint values.
10. The system of claim 8, wherein the at least one of the inertia component or the friction coefficient component is further configured to estimate the inertia as a function of UacCi Vacc, Udec, and Vdec,
where:
Figure imgf000064_0001
"accC is a portion of the torque command signal corresponding to acceleration phase of the testing sequence,
¾cc(X) is a portion of the velocity data corresponding to the acceleration phase,
"dec(t) is a portion of the torque command signal corresponding to deceleration phase of the testing sequence, and
Vdec(t) is a portion of the velocity data corresponding to the deceleration phase.
11. The system of claim 10, wherein the inertia component is further configured to estimate the inertia based on: dec acc acc dec
J =
vdec(t)Vacc - Avacc(t)Va dec where:
J is the inertia,
&vacc(t) is a difference between a velocity of the motion system at an end of the acceleration phase and a velocity of the motion system at a beginning of the acceleration phase, and
&vdec(t) is a difference between a velocity of the motion system at an end of the deceleration phase and a velocity of the motion system at a beginning of the deceleration phase.
12. The system of claim 10, wherein the friction coefficient component is further configured to estimate the friction coefficient based on: vdec(t)Vacc - Avacc(t)Vdec ' where, β is the friction coefficient,
Avacc(t) i a difference between a velocity of the motion system at an end of the acceleration phase and a velocity of the motion system at a beginning of the acceleration phase, and
At7dec(t) is a difference between a velocity of the motion system at an end of the deceleration phase and a velocity of the motion system at a beginning of the deceleration phase.
13. The system of claim 7, further comprising a tuning component configured to generate at least one controller gain coefficient as a function of at least one of the inertia or the friction coefficient.
14. A method for generating a motion profile, comprising:
receiving a setpoint indicating at least one of a target position or a target velocity for a motion device; and
generating a motion profile for transitioning the motion device to the at least one of the target position or the target velocity, the motion profile defining a jerk reference that varies continuously as a function of time for at least one segment of the motion profile.
15. The method of claim 14, wherein the generating the motion profile includes defining, as a function of time, at least one of an acceleration reference, a velocity reference, or a position reference for the at least one segment of the motion profile.
16. The method of claim 14, wherein the generating comprises:
calculating at least one of the jerk reference, an acceleration reference, a velocity reference, or a position reference for respective segments of the motion profile;
calculating time durations for the respective segments of the motion profile;
rounding the time durations to respective nearest multiples of a sample time of a motion controller to yield rounded time durations; and
recalculating at least one of the jerk reference, the acceleration reference, the deceleration reference, or the velocity reference using the rounded time durations.
17. The method of claim 14, wherein the generating comprises generating the motion profile according to the relationships: ti3 (ti + t2) = t4 3 (t4 + t5) ,
V _ 3A
A 2J Y. _—
D 21 '
— L————————
3 ~ V 4/ 2A 41 2D'
Figure imgf000067_0001
V≥— = 2
4 D<
2] 2/p3
Figure imgf000067_0002
7≥(p"'+ 1)^D +^', + 1) and
/ ? where:
P is a position of the motion device,
J is a maximum acceleration jerk,
/ is a maximum deceleration jerk,
A is a maximum acceleration,
D is a maximum deceleration,
V is a maximum velocity,
is a duration of an increasing acceleration stage and a decreasing acceleration stage of the motion profile,
tz is a duration of a constant acceleration stage of the motion profile, h is a duration of a constant velocity stage of the motion profile, is a duration of an increasing deceleration stage and a decreasing deceleration stage of the motion profile,
t5 is a duration of a constant deceleration stage of the motion profile, and
D
P = A -
18. A system for generating a motion profile, comprising:
a memory;
a processor configured to execute computer-executable components stored on the memory, the computer-executable components comprising:
a motion profile generator configured to generate, in response to receipt of a target position or a target velocity for a motion device, a motion profile having a continuous jerk reference that varies continuously over time for at least one stage of the motion profile, wherein the motion profile defines a trajectory for transitioning the motion device to the target position or the target velocity.
19. The system of claim 18, wherein the motion profile generator is further configured to generate the motion profile as a function of at least one defined constraint, wherein the at least one defined constraint includes at least one of a sample time, a velocity limit, an acceleration limit, a jerk limit, or a deceleration limit.
20. The system of claim 18, wherein the motion profile generator is further configured to generate the motion profile according to the relationships:
3A
27'
Figure imgf000069_0001
i — _ M _ _L _ H _ JL
3 ~~ 7 4/ 2. 4/ 2D'
Figure imgf000069_0002
Figure imgf000069_0003
V >-£>2,
2/
Figure imgf000069_0004
-≥ (p~3 + l)-D +-(p + l)~, and
V \ J 41 2 J D'
I where:
P is a position of the motion device,
J is a maximum acceleration jerk,
/ is a maximum deceleration jerk,
A is a maximum acceleration,
D is a maximum deceleration,
V is a maximum velocity,
is a duration of an increasing acceleration stage and a decreasing acceleration stage of the motion profile, tz is a duration of a constant acceleration stage of the motion profile, t3 is a duration of- a constant velocity stage of the motion profile, is a duration of an increasing deceleration stage and a decreasing deceleration stage of the motion profile,
t5 is a duration of a constant deceleration stage of the motion profile, and
D
PCT/US2013/037122 2012-04-20 2013-04-18 Method for automatically estimating inertia in a mechanical system and for generating a motion profile WO2013158849A2 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US13/451,924 US8710777B2 (en) 2012-04-20 2012-04-20 Method for automatically estimating inertia in a mechanical system
US13/451,924 2012-04-20
US13/474,919 2012-05-18
US13/474,919 US9041337B2 (en) 2012-05-18 2012-05-18 Motion profile generator

Publications (3)

Publication Number Publication Date
WO2013158849A2 true WO2013158849A2 (en) 2013-10-24
WO2013158849A3 WO2013158849A3 (en) 2013-12-12
WO2013158849A4 WO2013158849A4 (en) 2014-01-30

Family

ID=49384229

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2013/037122 WO2013158849A2 (en) 2012-04-20 2013-04-18 Method for automatically estimating inertia in a mechanical system and for generating a motion profile

Country Status (4)

Country Link
JP (2) JP2013225284A (en)
KR (1) KR101378824B1 (en)
TW (1) TWI498701B (en)
WO (1) WO2013158849A2 (en)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017044537A1 (en) * 2015-09-11 2017-03-16 Linestream Technologies Method for automatically estimating inertia, coulomb friction, and viscous friction in a mechanical system
CN107408909A (en) * 2015-03-31 2017-11-28 西门子公司 The drive device assessed with rotary inertia
EP3258331A1 (en) * 2016-06-16 2017-12-20 Schneider Electric Industries SAS Method for monitoring a machine
WO2018048641A1 (en) * 2016-09-06 2018-03-15 X Development Llc Velocity control of position-controlled motor controllers
CN108513651A (en) * 2017-06-27 2018-09-07 深圳市大疆灵眸科技有限公司 Hand-held cradle head device and its control method and computer readable storage medium
CN109472058A (en) * 2018-10-16 2019-03-15 成都泰隆游乐实业有限公司 A kind of water slide trajectory analysis method
CN111198561A (en) * 2019-12-05 2020-05-26 浙江大华技术股份有限公司 Motion control method and device for target tracking, computer equipment and storage medium
WO2020210238A1 (en) * 2019-04-08 2020-10-15 Boston Scientific Scimed, Inc. Atherectomy system with excess torque protection
US20210183184A1 (en) * 2018-05-17 2021-06-17 Arcus Technology, Inc. Motion system health management using multidimensional modeling using motor operational parameters
CN113821006A (en) * 2020-05-07 2021-12-21 牧今科技 Method and computing system for determining values of error parameters indicative of robot calibration quality
CN113962138A (en) * 2020-07-21 2022-01-21 腾讯科技(深圳)有限公司 Method, device and equipment for determining parameter value of mobile platform and storage medium

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105814506B (en) * 2013-12-06 2019-01-15 三菱电机株式会社 Friction identification method and Friction identification device
KR101642198B1 (en) 2014-12-11 2016-07-29 포항공과대학교 산학협력단 Apparatus for generating motion effects and computer readable medium for the same
US10033308B2 (en) * 2015-03-17 2018-07-24 Intuitive Surgical Operations, Inc. Systems and methods for motor torque compensation
WO2021009976A1 (en) * 2019-07-18 2021-01-21 株式会社安川電機 Control system, control device, and control method
US12053029B1 (en) 2020-04-21 2024-08-06 Data Science International, Inc. Systems and methods for testing one or more smoking articles
TWI721872B (en) * 2020-04-23 2021-03-11 德律科技股份有限公司 Automatic control system and method for automatic machine having conveyer

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5159254A (en) * 1990-04-09 1992-10-27 Mitsubishi Denki K.K. Numerical control unit for estimating movement parameters using a model
US6294755B1 (en) * 1997-12-02 2001-09-25 Lacent Technologies, Inc. Gantry-mounted laser nozzle and method for controlling laser positioning
EP0827265B1 (en) * 1995-05-17 2002-04-10 Kabushiki Kaisha Yaskawa Denki Apparatus for determination of control constant
US6495791B2 (en) * 2000-05-16 2002-12-17 General Scanning, Inc. Method and subsystem for generating a trajectory to be followed by a motor-driven stage when processing microstructures at a laser-processing site
US7449857B2 (en) * 2004-07-27 2008-11-11 Kabushiki Kaisha Yaskawa Denki Servo control device
US8146402B2 (en) * 2006-05-30 2012-04-03 Surface Control Limited Dynamic coefficient of friction measuring device having a track with an arcuate portion

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3341305B2 (en) * 1992-06-30 2002-11-05 ソニー株式会社 Acceleration / deceleration pattern generation apparatus, acceleration / deceleration pattern generation method, and method for solving inverse kinematics problem and time axis correction method used for the same
US6320345B1 (en) * 1998-03-05 2001-11-20 Nikon Corporation Command trajectory for driving a stage with minimal vibration
JP2000040658A (en) * 1998-07-24 2000-02-08 Nikon Corp Stage control method and scanning aligner
JP3654049B2 (en) * 1999-05-21 2005-06-02 松下電器産業株式会社 Motor control device
JP2006074896A (en) * 2004-09-01 2006-03-16 Yaskawa Electric Corp Motor control device
JP4594165B2 (en) * 2005-05-24 2010-12-08 株式会社日立産機システム Mechanical system parameter estimation method and system for motor controller
JP4602921B2 (en) * 2006-03-07 2010-12-22 株式会社日立産機システム Motor control device and motor control method
JP5169836B2 (en) * 2006-12-21 2013-03-27 株式会社安川電機 Position control device
US7622881B2 (en) * 2007-02-28 2009-11-24 Rockwell Automation Technologies, Inc. Method and apparatus for estimating system inertia where number of motor rotations are restricted
JP4335286B2 (en) 2008-02-08 2009-09-30 ファナック株式会社 Robot control apparatus and robot control method having component protection function
US8232758B2 (en) 2009-08-28 2012-07-31 Fanuc Ltd Controller of electric motor having function of estimating inertia and friction simultaneously
KR101121474B1 (en) * 2010-12-01 2012-03-13 대성전기공업 주식회사 Method for determining moment of inertia and friction coefficient of dc servo motor system

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5159254A (en) * 1990-04-09 1992-10-27 Mitsubishi Denki K.K. Numerical control unit for estimating movement parameters using a model
EP0827265B1 (en) * 1995-05-17 2002-04-10 Kabushiki Kaisha Yaskawa Denki Apparatus for determination of control constant
US6294755B1 (en) * 1997-12-02 2001-09-25 Lacent Technologies, Inc. Gantry-mounted laser nozzle and method for controlling laser positioning
US6495791B2 (en) * 2000-05-16 2002-12-17 General Scanning, Inc. Method and subsystem for generating a trajectory to be followed by a motor-driven stage when processing microstructures at a laser-processing site
US7449857B2 (en) * 2004-07-27 2008-11-11 Kabushiki Kaisha Yaskawa Denki Servo control device
US8146402B2 (en) * 2006-05-30 2012-04-03 Surface Control Limited Dynamic coefficient of friction measuring device having a track with an arcuate portion

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107408909B (en) * 2015-03-31 2019-03-08 西门子公司 Driving device with rotary inertia assessment
CN107408909A (en) * 2015-03-31 2017-11-28 西门子公司 The drive device assessed with rotary inertia
US10044308B2 (en) 2015-03-31 2018-08-07 Siemens Aktiengesellschaft Drive apparatus with moment of inertia estimation
US20170074753A1 (en) * 2015-09-11 2017-03-16 Linestream Technologies Method for automatically estimating inertia, coulomb friction, and viscous friction in a mechanical system
WO2017044537A1 (en) * 2015-09-11 2017-03-16 Linestream Technologies Method for automatically estimating inertia, coulomb friction, and viscous friction in a mechanical system
CN108027651A (en) * 2015-09-11 2018-05-11 莱恩斯特里姆技术有限公司 Inertia, Coulomb friction and the method for viscous friction in automatic estimation mechanical system
CN108027651B (en) * 2015-09-11 2020-12-22 丹佛斯电力电子有限公司 Method for automatically estimating inertia, coulomb friction and viscous friction in a mechanical system
US10126202B2 (en) 2015-09-11 2018-11-13 Linestream Technologies Method for automatically estimating inertia, coulomb friction, and viscous friction in a mechanical system
EP3258331A1 (en) * 2016-06-16 2017-12-20 Schneider Electric Industries SAS Method for monitoring a machine
WO2018048641A1 (en) * 2016-09-06 2018-03-15 X Development Llc Velocity control of position-controlled motor controllers
CN108513651A (en) * 2017-06-27 2018-09-07 深圳市大疆灵眸科技有限公司 Hand-held cradle head device and its control method and computer readable storage medium
US20210183184A1 (en) * 2018-05-17 2021-06-17 Arcus Technology, Inc. Motion system health management using multidimensional modeling using motor operational parameters
US11615659B2 (en) * 2018-05-17 2023-03-28 Arcus Technology, Inc. Motion system health management using multidimensional modeling using motor operational parameters
CN109472058A (en) * 2018-10-16 2019-03-15 成都泰隆游乐实业有限公司 A kind of water slide trajectory analysis method
WO2020210238A1 (en) * 2019-04-08 2020-10-15 Boston Scientific Scimed, Inc. Atherectomy system with excess torque protection
CN111198561A (en) * 2019-12-05 2020-05-26 浙江大华技术股份有限公司 Motion control method and device for target tracking, computer equipment and storage medium
CN113821006A (en) * 2020-05-07 2021-12-21 牧今科技 Method and computing system for determining values of error parameters indicative of robot calibration quality
CN113962138A (en) * 2020-07-21 2022-01-21 腾讯科技(深圳)有限公司 Method, device and equipment for determining parameter value of mobile platform and storage medium
CN113962138B (en) * 2020-07-21 2023-11-03 腾讯科技(深圳)有限公司 Method, device, equipment and storage medium for determining parameter value of mobile platform

Also Published As

Publication number Publication date
TWI498701B (en) 2015-09-01
WO2013158849A3 (en) 2013-12-12
TW201351082A (en) 2013-12-16
WO2013158849A4 (en) 2014-01-30
JP2017062824A (en) 2017-03-30
KR101378824B1 (en) 2014-03-27
KR20130122704A (en) 2013-11-08
JP2013225284A (en) 2013-10-31

Similar Documents

Publication Publication Date Title
US9268316B2 (en) Method for automatically estimating a friction coefficient in a mechanical system
WO2013158849A2 (en) Method for automatically estimating inertia in a mechanical system and for generating a motion profile
US9041337B2 (en) Motion profile generator
US10126202B2 (en) Method for automatically estimating inertia, coulomb friction, and viscous friction in a mechanical system
EP3175306B1 (en) Optimized parameterization of active disturbance rejection control
US9690261B2 (en) Method for automatically setting responsiveness parameters for motion control systems
US9776640B1 (en) Automatic determination of maximum acceleration for motion profiles
US10386808B2 (en) System parameter identificatino method based on rate-limited relay with hysteresis and sinusoidal injection
US20180067086A1 (en) Method for automatically identifying resonance
JP5623757B2 (en) Motor control method and apparatus
US10684594B2 (en) Machine learning device, servo motor controller, servo motor control system, and machine learning method
JP2014174842A (en) S-shaped acceleration/deceleration control program, operation control program, recording medium, controller, s-shaped acceleration/deceleration control calculation method, and work operation control system
JP7558456B1 (en) MOTOR CONTROL DEVICE AND MOTOR CONTROL METHOD
CN117411374B (en) Motor control method, system, device and electronic equipment
US20240210964A1 (en) Automatic adjustment of parameter for motor control
CN118859935A (en) Equipment motion control method, device and medium
CN117978024A (en) Servo motor position control method, device, medium, processor and servo system
CN116149259A (en) Control method and system for phase deviation of master shaft and slave shaft and related components
CN112540630A (en) Method and device for processing motor speed signal, robot and storage medium

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 13778047

Country of ref document: EP

Kind code of ref document: A2

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 13778047

Country of ref document: EP

Kind code of ref document: A2