Difference between revisions of "AXY:Basics of joint parameters identification"
m (→Derivative without phase shift) |
|||
| Line 16: | Line 16: | ||
Hereby the numeric derivative is spline-interpolated and values at original sampling times are taken. | Hereby the numeric derivative is spline-interpolated and values at original sampling times are taken. | ||
| + | <!-- | ||
Interpolated derivative is implemented in [[Control:aico.motionAnalyzer|aico.motionAnalyser]] by the function [[signal_deriveInterp]]. | Interpolated derivative is implemented in [[Control:aico.motionAnalyzer|aico.motionAnalyser]] by the function [[signal_deriveInterp]]. | ||
| + | --> | ||
== Mathematical derivation == | == Mathematical derivation == | ||
Revision as of 11:40, 31 March 2014
Model based control can bring great benefit to robot control, but it requires exact model parameters. This document describes how these parameters can be identified (automatically).
Contents
Record identification motion profile
The motion profile should provoke all motion states described by the model. Ideally it should move over the whole position range of the joint, have plenty accelerations/decelerations and have different constant velocity phases.
The recorded file must contain the position feedback along with the torque feedback.
Derivative without phase shift
For parameter identification joint velocity and acceleration is needed. Standard numeric derivative of position feedback leads to phase shift, which impairs the identification. To avoid the phase shift interpolated derivative should be used instead. Hereby the numeric derivative is spline-interpolated and values at original sampling times are taken.
Mathematical derivation
In a simple case an actuating joint can be described with the following motion equation:
Here the symbols are:
Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle \tau} Torque (feedback) Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle \dot{x}, \ddot{x}} Velocity and acceleration (feedback) Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle \Theta} Moment of inertia Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle \rho_v} Viscous friction coefficient Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle \rho_c} Coulomb friction coefficient
It is assumed that the joints position, velocity and acceleration feedbacks together with the torque feedback are known (recorded). The unknown model parameters are Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle \Theta} , Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle \rho_v} and Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle \rho_c} .
The recorded value tuples can be represented as a over-determined linear equation system:
- Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle \begin{array}{lcl} \tau_1 & = & \Theta \cdot \ddot{x}_1 + \rho_v \cdot \dot{x}_1 + \rho_c \cdot sign(\dot{x}_1) \\ \tau_2 & = & \Theta \cdot \ddot{x}_2 + \rho_v \cdot \dot{x}_2 + \rho_c \cdot sign(\dot{x}_2) \\ \tau_3 & = & \Theta \cdot \ddot{x}_3 + \rho_v \cdot \dot{x}_3 + \rho_c \cdot sign(\dot{x}_3) \\ & & \vdots \\ \tau_n & = & \Theta \cdot \ddot{x}_n + \rho_v \cdot \dot{x}_n + \rho_c \cdot sign(\dot{x}_n) \\ \end{array} }
These n equations can also be written as a single matrix equation:
- Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle \begin{bmatrix} \tau_1 \\ \tau_2 \\ \tau_3 \\ \vdots \\ \tau_n \end{bmatrix} = \begin{bmatrix} \ddot{x}_1 & \dot{x}_1 & sign(\dot{x}_1) \\ \ddot{x}_2 & \dot{x}_2 & sign(\dot{x}_2) \\ \ddot{x}_3 & \dot{x}_3 & sign(\dot{x}_3) \\ \vdots & \vdots & \vdots \\ \ddot{x}_n & \dot{x}_n & sign(\dot{x}_n) \\ \end{bmatrix} \cdot \begin{bmatrix} \Theta \\ \rho_v \\ \rho_c \\ \end{bmatrix} \qquad \Rightarrow \boldsymbol{\tau} = \mathbf{X} \cdot \mathbf{p} \qquad \mathrm{(2)} }
One solution of this system of equations can be obtained by using the pseudoinverse of Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle \mathbf{X}} .
- Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle \mathbf{p} = \left ( \mathbf{X}^T \cdot \mathbf{X} \right )^{-1} \cdot \mathbf{X}^T \cdot \boldsymbol{\tau} \qquad \mathrm{(3)} }
HowTo identify joint parameters
- Use AF function IDM_IdentParamsJoint to move an identification profile and create a record.
- Process the obtained record with the aico.motionAnalyser function joint_identDynamics.
Verification
See verification page.