Difference between revisions of "Motion Dynamics"
(12 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
+ | {{Languages|Motion_Dynamics}} | ||
= Introduction = | = Introduction = | ||
− | This | + | |
+ | This article describes the inverse dynamic model (IDM) feature is used to compensate friction and dynamic effects for motion elements, otherwise leading to positioning errors and suboptimal settling behavior. | ||
The motivation of the IDM feature is to use additional knowledge about the motion than just the position – i.e. velocity and torque – to offset the command values of the torque controller in order to make them react faster and thereby reduce the final positioning error and improve the settling behavior. | The motivation of the IDM feature is to use additional knowledge about the motion than just the position – i.e. velocity and torque – to offset the command values of the torque controller in order to make them react faster and thereby reduce the final positioning error and improve the settling behavior. | ||
− | The term ''inverse dynamic model'' (IDM) means that the softMC takes a cartesian motion of a motion element and not only computes the joint position for the next Cartesian setpoint, but also the joint torque required for the motion. | + | The term ''inverse dynamic model'' (IDM) means that the softMC takes a cartesian motion of a motion element and not only computes the joint position for the next Cartesian setpoint, but also the joint torque required for the motion. In order to be able to do that, it needs a dynamic model – i.e., a model of the masses and inertias – of the motion element. The joint velocity and torque are then sent to the drives as additional torque command data. |
− | In order to be able to do that, it needs a dynamic model – i.e., a model of the masses and inertias – of the motion element. | ||
− | The joint velocity and torque are then sent to the drives as additional torque command data. | ||
== Available Models == | == Available Models == | ||
− | The page '''[[ | + | |
+ | The page '''[[Dynamic_Models|Dynamic Models]]''' lists all available dynamic models and also describes all necessary parameters. | ||
== Axis / Robot Motions == | == Axis / Robot Motions == | ||
+ | |||
To understand the difference in behavior between single axes and robot dynamics it is necessary to first understand the way these objects are implemented in the softMC firmware. | To understand the difference in behavior between single axes and robot dynamics it is necessary to first understand the way these objects are implemented in the softMC firmware. | ||
− | After the ''reset all'' command there are only axes objects active in the softMC. | + | After the ''reset all'' command there are only axes objects active in the softMC. That means that the position, velocity and other drive commands are calculated cyclically by these axes objects, no matter if an axis is moving or if it is standing. Also the additional torque command is calculated cyclically according to the dynamic models of the axes, which for a standing axis can be a constant value for gravity compensation. |
− | That means that the position, velocity and other drive commands are calculated cyclically by these axes objects, no matter if an axis is moving or if it is standing. | ||
− | Also the additional torque command is calculated cyclically according to the dynamic models of the axes, which for a standing axis can be a constant value for gravity compensation. | ||
− | Groups or robots objects instead only become active in the moment they are ''attached'' and are deactivated again on ''detach''. | + | Groups or robots objects instead only become active in the moment they are ''attached'' and are deactivated again on ''detach''. As soon as a group is activated, it takes over the control of all axes, which belong to it. That means that the position, velocity and other drive commands are now calculated by the group object, which also includes computation of dynamics. Note: When a group motion command is issued at the terminal, the corresponding group is automatically attached to the terminal for the time period of motion. |
− | As soon as a group is activated, it takes over the control of all axes, which belong to it. | ||
− | That means that the position, velocity and other drive commands are now calculated by the group object, which also includes computation of dynamics. | ||
− | Note: When a group motion command is issued at the terminal, the corresponding group is automatically attached to the terminal for the time period of motion. | ||
− | As a conclusion of this design, axes of groups with gravity compensation need special treatment. | + | As a conclusion of this design, axes of groups with gravity compensation need special treatment. Because at drive power enable the axis object computes the torque command, the gravity compensated axis need single axis dynamics configured. On the other hand, during group motion, the group to which the axis belong to need group dynamics enabled. |
− | Because at drive power enable the axis object computes the torque command, the gravity compensated axis need single axis dynamics configured. | ||
− | On the other hand, during group motion, the group to which the axis belong to need group dynamics enabled. | ||
= Single Axes Dynamics = | = Single Axes Dynamics = | ||
− | |||
− | |||
− | |||
− | |||
− | <!-- In '''[[Control:Assist|aico.assist]]''' the following defines configure single axes dynamics: | + | Dynamic computation for a single axis is activated by assigning an [[Dynamic_Models|available model]] to the property [[MC-Basic:element.DYNAMICMODEL|DynamicModel]]. The corresponding dynamic parameters are provided to the array [[MC-Basic:element.DYNAMICPARAMETER|DynamicParameter]]. Friction parameters are handled separately by the properties [[MC-Basic:axis.VISCOUSFRICTION|axis.ViscousFriction]] and [[MC-Basic:axis.COULOMBFRICTION|axis.CoulombFriction]]. {{Note|With the property [[MC-Basic:axis.AXISTYPE|axis.AxisType]] rotary and linear axes are distinguished by the Firmware.}} <!-- In '''[[Control:Assist|aico.assist]]''' the following defines configure single axes dynamics: |
* [[Control:Assist:DYNAMIC_MODEL(Axis)]] | * [[Control:Assist:DYNAMIC_MODEL(Axis)]] | ||
* [[Control:Assist:DYNAMIC_PARAMETER_xx(Axis)]] | * [[Control:Assist:DYNAMIC_PARAMETER_xx(Axis)]] | ||
Line 41: | Line 32: | ||
= Robot Dynamics = | = Robot Dynamics = | ||
− | |||
− | |||
− | + | To activate dynamics for a robot, a [[Dynamic_Models|dynamic model]] have to be assigned to [[MC-Basic:element.DYNAMICMODEL|DynamicModel]]. The model parameters are set in the array [[MC-Basic:element.DYNAMICPARAMETER|DynamicParameter]]. | |
− | |||
− | + | Friction parameters for all the axes belonging to the robot are set in the axes friction properties [[MC-Basic:axis.VISCOUSFRICTION|axis.ViscousFriction]] and [[MC-Basic:axis.COULOMBFRICTION|axis.CoulombFriction]]. To consider friction compensation in robot dynamics, it is not necessary to select a dynamic model for its axes. | |
− | |||
− | |||
− | |||
− | <!-- In '''[[Control:Assist|aico.assist]]''' the following defines configure robot dynamics: | + | A special case in robot/group dynamics is the '''axes based dynamics'''. When selected, the robot/group computes its dynamics according to the [[Dynamic_Models|dynamic models]] of its axes. The main purpose of this mode is to enable dynamics for non robot groups and Cartesian robots. Axes based dynamics is activated by assigning <code>-1</code> to [[MC-Basic:element.DYNAMICMODEL|DynamicModel]]. <!-- In '''[[Control:Assist|aico.assist]]''' the following defines configure robot dynamics: |
* [[Control:Assist:DYNAMIC_MODEL(Group)]] | * [[Control:Assist:DYNAMIC_MODEL(Group)]] | ||
* [[Control:Assist:DYNAMIC_PARAMETER_xx(Group)]] | * [[Control:Assist:DYNAMIC_PARAMETER_xx(Group)]] | ||
Line 59: | Line 44: | ||
= Payload Handling = | = Payload Handling = | ||
− | |||
− | |||
− | <!-- | + | Robot/Axis payload significantly influences the motion dynamics and is considered in all [[Dynamic_Models|dynamic models]]. Applications should adjust the values in [[MC-Basic:element.PAYLOADMASS|PayloadMass]] and [[MC-Basic:axis.PAYLOADINERTIA|axis.PayloadInertia]] each time the payload changes. <!-- |
In '''[[Control:Assist|aico.assist]]''' <u>constant</u> payload can be configured with the following defines: | In '''[[Control:Assist|aico.assist]]''' <u>constant</u> payload can be configured with the following defines: | ||
* [[Control:Assist:PAYLOAD_INERTIA(MotionDevice)]] | * [[Control:Assist:PAYLOAD_INERTIA(MotionDevice)]] | ||
Line 69: | Line 52: | ||
= Torque Error Monitoring = | = Torque Error Monitoring = | ||
+ | |||
[[File:Torque error monitoring - Torque command, feedback, error (Joint 1 of Delta robot).png|thumb|Comparison between torque command and feedback]] | [[File:Torque error monitoring - Torque command, feedback, error (Joint 1 of Delta robot).png|thumb|Comparison between torque command and feedback]] | ||
− | Collision detection is a very important topic in the field of modern robotics. | + | Collision detection is a very important topic in the field of modern robotics. Servotronix offers [[Dynamic_Models|dynamic models]] for several kinematic types, which compute needed joint torques during robot motion. |
− | Servotronix offers [[ | ||
− | On the other side joint drives provide actually needed torque feedback. | + | On the other side joint drives provide actually needed torque feedback. The idea is to compute the [[MC-Basic:axis.TORQUEERROR|torque error]] by comparing [[MC-Basic:axis.TORQUEADDCOMMAND|commanded torque feedforward]] with returned [[MC-Basic:element.TORQUEFEEDBACK|torque feedback]] to detect abnormal behavior. |
− | The idea is to compute the [[MC-Basic:axis.TORQUEERROR|torque error]] by comparing [[MC-Basic:axis.TORQUEADDCOMMAND|commanded torque feedforward]] with returned [[MC-Basic: | ||
Torque error monitoring is activated axis-wise by enabling [[MC-Basic:axis.TORQUEERRORENABLE|axis.TorqueErrorEnable]] and setting the [[MC-Basic:axis.TORQUEERRORMAX|axis.TorqueErrorMax]] value. | Torque error monitoring is activated axis-wise by enabling [[MC-Basic:axis.TORQUEERRORENABLE|axis.TorqueErrorEnable]] and setting the [[MC-Basic:axis.TORQUEERRORMAX|axis.TorqueErrorMax]] value. | ||
− | On axes with very noisy [[MC-Basic: | + | On axes with very noisy [[MC-Basic:element.TORQUEFEEDBACK|torque feedback]] the torque error can be filtered. The parameter for the '''low-pass filter''' is specified by [[MC-Basic:axis.TORQUEERRORFILTER|axis.TorqueEerrorFilter]]. |
− | The parameter for the '''low-pass filter''' is specified by [[MC-Basic:axis.TORQUEERRORFILTER|axis.TorqueEerrorFilter]]. | ||
− | The torque error exception is thrown in the instant the [[MC-Basic:axis.TORQUEERROR|torque error]] exceeds [[MC-Basic:axis.TORQUEERRORMAX|axis.TorqueErrorMax]]. | + | The torque error exception is thrown in the instant the [[MC-Basic:axis.TORQUEERROR|torque error]] exceeds [[MC-Basic:axis.TORQUEERRORMAX|axis.TorqueErrorMax]]. The '''stopping behavior''' in this case is configured with the properties [[MC-Basic:axis.TORQUEERRORSTOPTYPE|axis.TorqueErrorStopType]] and [[MC-Basic:axis.TORQUEERRORDISABLETYPE|axis.TorqueErrorDisableType]]. <!-- |
− | The '''stopping behavior''' in this case is configured with the properties [[MC-Basic:axis.TORQUEERRORSTOPTYPE|axis.TorqueErrorStopType]] and [[MC-Basic:axis.TORQUEERRORDISABLETYPE|axis.TorqueErrorDisableType]]. | ||
− | |||
− | <!-- | ||
In '''[[Control:Assist|aico.assist]]''' torque error monitoring is configured with the following defines: | In '''[[Control:Assist|aico.assist]]''' torque error monitoring is configured with the following defines: | ||
* [[Control:Assist:IDM_TORQUEERROR_EN(Axis)]] | * [[Control:Assist:IDM_TORQUEERROR_EN(Axis)]] | ||
Line 94: | Line 72: | ||
= Model Parameters Identification = | = Model Parameters Identification = | ||
− | |||
− | |||
− | |||
− | |||
+ | Dynamic model parameters can be obtained manually using <!-- identification methods. | ||
+ | * IDM Tools of aico.control provide a teach pendant user interface for the identification routine. --> the [[MC-Basic:IdentificationStart|IdentificationStart]] and [[MC-Basic:IdentificationFinish|IdentificationFinish]] routines. | ||
+ | |||
+ | = See Also = | ||
+ | *[[MC-Basic:axis.TORQUEADDCOMMAND|TORQUEADDCOMMAND]] | ||
+ | *[[Inverse_Dynamic_Model|Inverse Dynamic Model]] | ||
[[Category:Motion Dynamics]] | [[Category:Motion Dynamics]] |
Latest revision as of 15:05, 12 November 2020
Language: | English • 中文(简体) |
---|
Contents
Introduction
This article describes the inverse dynamic model (IDM) feature is used to compensate friction and dynamic effects for motion elements, otherwise leading to positioning errors and suboptimal settling behavior.
The motivation of the IDM feature is to use additional knowledge about the motion than just the position – i.e. velocity and torque – to offset the command values of the torque controller in order to make them react faster and thereby reduce the final positioning error and improve the settling behavior.
The term inverse dynamic model (IDM) means that the softMC takes a cartesian motion of a motion element and not only computes the joint position for the next Cartesian setpoint, but also the joint torque required for the motion. In order to be able to do that, it needs a dynamic model – i.e., a model of the masses and inertias – of the motion element. The joint velocity and torque are then sent to the drives as additional torque command data.
Available Models
The page Dynamic Models lists all available dynamic models and also describes all necessary parameters.
Axis / Robot Motions
To understand the difference in behavior between single axes and robot dynamics it is necessary to first understand the way these objects are implemented in the softMC firmware.
After the reset all command there are only axes objects active in the softMC. That means that the position, velocity and other drive commands are calculated cyclically by these axes objects, no matter if an axis is moving or if it is standing. Also the additional torque command is calculated cyclically according to the dynamic models of the axes, which for a standing axis can be a constant value for gravity compensation.
Groups or robots objects instead only become active in the moment they are attached and are deactivated again on detach. As soon as a group is activated, it takes over the control of all axes, which belong to it. That means that the position, velocity and other drive commands are now calculated by the group object, which also includes computation of dynamics. Note: When a group motion command is issued at the terminal, the corresponding group is automatically attached to the terminal for the time period of motion.
As a conclusion of this design, axes of groups with gravity compensation need special treatment. Because at drive power enable the axis object computes the torque command, the gravity compensated axis need single axis dynamics configured. On the other hand, during group motion, the group to which the axis belong to need group dynamics enabled.
Single Axes Dynamics
Dynamic computation for a single axis is activated by assigning an available model to the property DynamicModel. The corresponding dynamic parameters are provided to the array DynamicParameter. Friction parameters are handled separately by the properties axis.ViscousFriction and axis.CoulombFriction.NOTE | |
With the property axis.AxisType rotary and linear axes are distinguished by the Firmware. |
Robot Dynamics
To activate dynamics for a robot, a dynamic model have to be assigned to DynamicModel. The model parameters are set in the array DynamicParameter.
Friction parameters for all the axes belonging to the robot are set in the axes friction properties axis.ViscousFriction and axis.CoulombFriction. To consider friction compensation in robot dynamics, it is not necessary to select a dynamic model for its axes.
A special case in robot/group dynamics is the axes based dynamics. When selected, the robot/group computes its dynamics according to the dynamic models of its axes. The main purpose of this mode is to enable dynamics for non robot groups and Cartesian robots. Axes based dynamics is activated by assigning -1
to DynamicModel.
Payload Handling
Robot/Axis payload significantly influences the motion dynamics and is considered in all dynamic models. Applications should adjust the values in PayloadMass and axis.PayloadInertia each time the payload changes.
Torque Error Monitoring
Collision detection is a very important topic in the field of modern robotics. Servotronix offers dynamic models for several kinematic types, which compute needed joint torques during robot motion.
On the other side joint drives provide actually needed torque feedback. The idea is to compute the torque error by comparing commanded torque feedforward with returned torque feedback to detect abnormal behavior.
Torque error monitoring is activated axis-wise by enabling axis.TorqueErrorEnable and setting the axis.TorqueErrorMax value.
On axes with very noisy torque feedback the torque error can be filtered. The parameter for the low-pass filter is specified by axis.TorqueEerrorFilter.
The torque error exception is thrown in the instant the torque error exceeds axis.TorqueErrorMax. The stopping behavior in this case is configured with the properties axis.TorqueErrorStopType and axis.TorqueErrorDisableType.
Model Parameters Identification
Dynamic model parameters can be obtained manually using the IdentificationStart and IdentificationFinish routines.