# Patent

## Title
Software compensation for kinematically singular machines

## Abstract

A software compensation command is generated to command a linkage to move an end body in a work space. A manipulator Jacobian is computed given a nominal linkage command; and a normalized Jacobian is computed from the manipulator Jacobian, a joint space normalizing matrix Q, and an error space normalizing matrix E. The normalized Jacobian and the Q and E matrices are used to produce the software compensation command.

## Background
BACKGROUND
The aerospace industry uses numerically controlled (NC), multi-axis machine tools to fabricate high precision parts. A typical NC multi-axis machine tool includes a kinematic linkage for positioning and orienting a tool relative to a work piece. A 5-axis machine tool, for instance, can move a tool tip along x, y and z axes, and rotate the tool tip about the x and y axes.
These machine tools are now being specified and built to achieve a particular volumetric accuracy necessary to properly execute an intended process or job. For example, a machined part may have a surface location tolerance of ±0.010′′. A multi-axis machine tool would be required to position a tool tip to better than ±0.010′′ within a working volume. However, most machine tools do not have such mechanical accuracy built in. Therefore, software compensation is used to attain the required accuracy.
As the tool tip moves towards a singular region, the linkage might be commanded to produce large joint motions. This is problematic. The large joint motions might be physically unrealizable since machine joints have velocity and acceleration constraints. In addition, since the compensation is effectively unplanned motion, collisions with obstacles are risked.
Measures can be taken to avoid large joint motions. For example, the well known Linear-Quadratic Regulator (LQR) method of optimal control uses weighting matrices to minimize joint penalty far from the singular regions, and maximize joint and error penalty when close to a singular region, but only in the singular direction.
However, the weighting matrices are static. That is, they are designed ahead of time. Consequently, the LQR method can produce compensation that is heavily damped even though little damping is needed, or it can produce excessive joint motion when close to a singular region.
SUMMARY
According to an embodiment herein, a method of commanding a linkage to move an end body in a work space comprises computing a manipulator Jacobian given a nominal linkage command; computing a normalized Jacobian from the manipulator Jacobian, a joint space normalizing matrix Q, and an error space normalizing matrix E; and using the normalized Jacobian and the Q and E matrices to produce a software compensation command.
According to another embodiment herein, a method of commanding a linkage to move an end body in a space comprises computing a manipulator Jacobian Jn given a nominal linkage command q; computing a singular value decomposition of the Jacobian to produce a diagonal matrix of singular values; and calculating an approximation S† of the inverse of the S matrix, where




  
    
      S
      †
    
    =
    
      diag
      ⁡
      
        (
        
          
            σ
            i
            2
          
          
            
              σ
              i
              3
            
            +
            
              
                σ
                1
                3
              
              /
              w
            
          
        
        )
      
    
  
  ,




where σi is the ith singular value and σ1 is the largest singular value in the S matrix. The method further comprises using the approximation S† to produce a software compensation command.

According to another embodiment herein, a machine comprises a kinematic linage for moving an end body to a pose; and a controller for generating a software compensation command Δq for the kinematic linkage given a nominal linkage command q. Generating the software compensation command Δq includes computing a manipulator Jacobian Jn given the nominal linkage command q; computing a normalized Jacobian  from the manipulator Jacobian Jn, a joint space normalizing matrix Q, and an error space normalizing matrix E; identifying singular values, left singular vectors, and right singular vectors of the normalized Jacobian; and using the singular values, singular vectors, and the Q and E matrices to determine a software compensation command Δq for the linkage.
According to another embodiment herein, an article comprises a processor and memory encoded with data for causing the processor to generate a software compensation command given a nominal linkage command. Generating the software compensation command includes computing a manipulator Jacobian given a nominal linkage command; computing a normalized Jacobian from the manipulator Jacobian, a joint space normalizing matrix Q, and an error space normalizing matrix E; and using the normalized Jacobian and the Q and E matrices to produce a software compensation command.



BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is an illustration of a kinematically singular machine.
FIG. 2 is an illustration of error as a function of a nominal linkage command.
FIG. 3 is an illustration of a method of generating a software compensation command.
FIG. 4 is an illustration of a method of computing an approximation of the inverse of the diagonal matrix of singular values.
FIG. 5 is an illustration of a kinematic linkage for a 5-axis machine tool.
FIG. 6 is an illustration of scaling of error motion as a function of the ratio of singular values.



DETAILED DESCRIPTION
Reference is made to FIG. 1, which illustrates a kinematically singular machine 110 including a kinematic linkage 120 that moves an end body in a work space. The end body may be a body at the end of the linkage 120 (e.g., a tool), or it may refer to the end of the linkage 120. The kinematic linkage 120 has multiple degrees of freedom for changing the location and orientation (that is, pose) of the end body.
The machine 110 further includes a controller 130 for generating linkage commands q+Δq, which are sent to servo drives 140. In response to the linkage commands q+Δq, the servo drives 140 cause the linkage 120 to move the end body to a commanded pose. The vector q is a nominal linkage command, which describes the desired pose of the linkage 120 at a given time. The vector Δq is a software compensation command for achieving the desired end body pose within a required volumetric accuracy.
The controller 130 is not limited to any particular construction. For example, the controller 130 may include a processor 132 and memory 134 encoded with data 136 for causing the processor 132 to generate the software compensation commands q+Δq.
For a machine 110 with n axes positioning a rigid end body in space, the forward kinematic equations can be modeled as a function mapping joint commands to tool pose:

f(q,e(q)):RqnTx

where e(q) denotes a vector of errors associated with the nominal linkage command q, Rqn represents the linkage space, and x and Tx represents the pose of the end body. FIG. 2 provides an example of error e as a function of the nominal linkage command q.

The controller 130 determines a correction to the nominal linkage command that results in the machine 110 achieving a desired end body pose in the workspace of the end body. This correction is the software compensation command Δq. The workspace of the end body will be denoted by Tt. The end body space Tt is always at the end body and the Z axis is aligned to the axis of the end body. The X and Y axes are rather arbitrary. For example, if the end body is a tool tip that is oriented with respect to a workpiece, the X and Y axes can be chosen to align with the X and Y axes of the workpiece coordinate system when the linkage 120 is commanded to q=0.
From this, the pose vector x of the end body fully describes the transform TxTt. Thus, given a nominal pose of a linkage (xnom) and a desired pose of the linkage (xact), and representing xnom and xact as homogenous transform matrices Xnom and Xact, the error transformation E is E=Xnom−1Xact. The error transformation E is expressed with respect to the end body workspace Tt. Thus, the minimal set of error vectors e does not change with orientation of the end body. The error transformation E can be transformed back to a pose error vector e.
The controller 130 finds a compensation command Δq that maps to −e. The command q+Δq allows the machine 110 to achieve a particular volumetric accuracy.
Additional reference is made to FIG. 2. The compensation command Δq is derived from a linearized region L of the error e (FIG. 2 shows the linearized region L in dash). The linearized region L may be represented by a manipulator Jacobian, which provides a linear function that maps joint motion to end body motion as Δx=Jn(q)Δq and, therefore, maps the compensation command to −e (that is, Jn(q)Δq=−e).
The controller 130 computes the manipulator Jacobian. However, one problem with the manipulator Jacobian is that it treats the same error values for rotation and translation as equivalent, and it also treats the same error values for different scales as equivalent. For example, the manipulator Jacobian treats errors of 0.001 mm, 0.001 inches and 0.001 degrees as equivalent errors. Consider a value of 0.010 mm, along with a value of 0.005 degrees. A minimization of the sum of the squares will push the compensation command Δq towards one which minimizes the linear value at the expense of the angular value (0.0102=0.0001; and 0.0052=0.000025). Thus, the linear value penalizes the sum of the squares by four times as much as the angular error. Consequently, an extremely large joint motion might result in the direction of a singularity. Moreover, the condition number of the Jacobian may be larger for a given pose of the end body, and the resulting compensation command Δq may be heavily damped when little damping is needed.
To overcome this problem, the controller 130 computes a normalized Jacobian  from the manipulator Jacobian Jn. Normalizing the manipulator Jacobian Jn allows an accurate comparison of different types of joint motion (e.g., revolute versus prismatic). It also allows comparison of different units (e.g., millimeters vs. inches vs. degrees) and controls the relative accuracy of compensation against joint motion.
The controller 130 computes the compensation command Δq from the normalized Jacobian . The compensation command Δq is based on the general problem

min Φ=(Δq+e)TQ(ΔQ+e)+(Δq)TG(Δq)

where Q and G represent cost penalties for error and joint motion. An error minimization algorithm (e.g., LQR) is used to minimize Φ.

The controller 130 computes software compensation commands such that G and Q are adaptive, wherein damping is minimized when the end body is far from a singular region, and joint motion is minimized when the end body approaches a singular region. Contrast this to conventional LQR, where G and Q are static.
Reference is made to FIG. 3, which illustrates a method of computing a software compensation command Δq. At block 310, a manipulator Jacobian Jn is computed given a nominal linkage command q. The subscript n indicates that Jn is the Jacobian of the body-space, not the work-space.
At block 320, a normalized Jacobian  is computed from the manipulator Jacobian Jn, a joint space normalizing matrix Q, and an error space normalizing matrix E. For example, the normalized Jacobian  is computed as =EJnQ−1. The Q matrix represents the smallest resolvable step for each axis. The E matrix represents error values that are normalized for the different error directions so that errors which create one linear unit of error in the end body have a normalized value of one.
At block 330, singular values, left singular vectors, and right singular vectors of the normalized Jacobian  are identified. This step may include computing a singular value decomposition (SVD) of the normalized Jacobian  to produce USVT, where U and V are orthogonal matrices of the left and right singular vectors and where S is a diagonal matrix of singular values. This step orthogonalizes the software compensation. The end body motion is mapped into a space whose axes are scaled by the singular values of the S matrix. Thus, at a singularity σi=0, the ith axis in the orthogonal space will be annihilated. The right singular vectors are the orthogonal basis vectors for joint motion. The left singular vectors are the orthogonal basis set for end-body motion.
At block 340, the singular values, singular vectors, and the Q and E matrices are used to determine the software compensation command Δq. The compensation command Δq may be computed as

Δq=−Q−1VS†UTEe,

where e is the tool tip pose error and S† is the approximation of the inverse of the S matrix. The approximation S† may have inverse singular values that penalize singular directions in joint motion more heavily than singular directions in error. The inverse singular values may be adaptively weighted such that the joint motion along the right singular vectors decays along increasingly singular directions. The decay may be the inverse of a cubic function.

Reference is now made to FIG. 4, which illustrates a method of computing the approximation S†. At block 410, a manipulator Jacobian Jn is computed, given a nominal linkage command q. At block 420, a singular value decomposition (SVD) of the Jacobian is computed to produce a diagonal matrix of singular values.
At block 430, an approximation S† to the inverse of the S matrix is computed. The approximation S† is computed as




  
    
      S
      †
    
    =
    
      diag
      ⁡
      
        (
        
          
            σ
            i
            2
          
          
            
              σ
              i
              3
            
            +
            
              1
              /
              λ
            
          
        
        )
      
    
  
  ,




where σi is the ith singular value and σ1 is the largest singular value in the S matrix. The deviation of S† from S is a function of the ratio of the ith singular value and the largest singular value.

In some embodiments,




  
    
      1
      λ
    
    =
    
      
        σ
        1
        3
      
      /
      w
    
  
  ,
  
    
      whereby
      ⁢
      
        
      
      ⁢
      
        S
        †
      
    
    =
    
      
        diag
        ⁡
        
          (
          
            
              σ
              i
              2
            
            
              
                σ
                i
                3
              
              +
              
                
                  σ
                  1
                  3
                
                /
                w
              
            
          
          )
        
      
      .
    
  




The value w is a design constant. The advantage is that only a single design variable is required. This design variable can be chosen as an order of magnitude estimate. Different values of w can change the asymptotic decay in motion along increasingly singular directions. See, for example, FIG. 6.

Scaling other than 1/λ=σ13/w may be used. In one embodiment, setting S†=1/σi a for all σi greater than some threshold will provide a numerically stable form of pseudo inverse (ordinary least squares). In another embodiment, setting




  
    S
    †
  
  =
  
    diag
    ⁡
    
      (
      
        
          σ
          i
        
        
          
            σ
            i
            2
          
          +
          λ
        
      
      )
    
  




provides a form for damped least squares.

In some embodiments of FIG. 4, the SVD of the non-normalized Jacobian may be taken.
There is no need to identify all the kinematic singularities of the machine 110 ahead of time because the singularities are those poses where one of the singular values becomes zero. The real-time implementation doesn't need a switching clause (if near singularity . . . else . . . ), as singular and non-singular poses are handled in exactly the same way. Thus, there is no need to identify the singular poses ahead of time for some if-else clause in the control. This is advantageous if the machine 110 has complicated singularities.
The machine 110 is not limited to any particular kinematic linkage. Some embodiments might include a single chain machine, while other embodiments might include a branched manipulator having multiple endpoints. No a priori knowledge of the machine's kinematic structure is required beyond the nominal axis motion stackup, as all components can be calculated at run time in a real-time environment.
The machine 110 is especially useful for multi-axis machine tools that are controlled in real time. For example, the machine could be adapted for a 5-axis machine tool. Volumetric accuracy is the positioning accuracy of the tool tip in a coordinate system that is fixed with respect to the workpiece.
Reference is now made to FIG. 5, which illustrates a linkage 510 for a 5-axis milling machine having an XYZCA geometry. The linkage 510 can move and orient a tool tip 520 relative to five degrees of freedom: translation in the X, Y and Z directions along three linear axes (x, y and z axes) and rotation in the A and C directions (about the y and z axes). The tool tip 520 is shown as being positioned at a singular point 530 since rotation of the tool tip 520 in the C rotational direction cannot change a position or orientation of the tool tip 520. Accordingly, the five-axis assembly 510 loses a degree of freedom when the tool tip 520 is positioned at the singular point 530.
The nominal linkage command q for the kinematic linkage 510 of FIG. 5 is denoted by q=[qx, qy, qz, qa, qc], where subscripts x, y and z denote translational motion and subscripts a and c denote rotational motion. The corresponding pose error for an asymmetric machine is denoted by e=[ex, ey, ez, ea, ec]T.
The vectors Δq and e are scaled so that unit changes in each dimension have physical meaning. Let Δ{circumflex over (q)}={circumflex over (Q)}Δq and Δê=ÊΔe
In a normalized Δq, a one-unit change in compensation value is equal to the smallest resolvable step for that axis. In some embodiments, joint resolution and the smallest resolvable step are considered to be the same. In other embodiments, measurements of the smallest resolvable step are made.
Consider a machine that will be face milling with a 150 mm cutter. The X and Y directions have a resolution of 0.001/μm. The Z-direction has a resolution of 0.005 mm. The C and A directions have joint resolutions of 0.002 degrees. The normalizing matrix for Δq is:




  
    Δ
    ⁢
    
      
    
    ⁢
    
      q
      ^
    
  
  =
  
    
      [
      
        
          
            1000
          
          
            0
          
          
            0
          
          
            0
          
          
            0
          
        
        
          
            0
          
          
            1000
          
          
            0
          
          
            0
          
          
            0
          
        
        
          
            0
          
          
            0
          
          
            200
          
          
            0
          
          
            0
          
        
        
          
            0
          
          
            0
          
          
            0
          
          
            500
          
          
            0
          
        
        
          
            0
          
          
            0
          
          
            0
          
          
            0
          
          
            500
          
        
      
      ]
    
    ⁢
    Δ
    ⁢
    
      
    
    ⁢
    q
  




Now joint motions equivalent to the motion resolution of the axis have a magnitude of 1.

In a normalized error vector e, the error vector e is blended with distance. Consider milling with a face mill having a radius of 75 mm. An angular error of 1/75 radians will cause a mislocation of the edge of the tool equivalent to a translation error of 1. Thus, the relative scale between translation and rotation depends on the size of the object being controlled.
A single unit of error should in some way be comparable to the positioning uncertainty in the kinematic model. If the error is reduced to four times smaller than the model uncertainty, for instance, then further reductions are unlikely to make meaningful impact on the positioning accuracy of the machine.
To choose a normalizing matrix for the error vector e, suppose the machine with the 150 mm cutter has an estimated model uncertainty of about 0.004 mm. The normalizing matrix will be:




  
    e
    ^
  
  =
  
    
      [
      
        
          
            1000
          
          
            0
          
          
            0
          
          
            0
          
          
            0
          
        
        
          
            0
          
          
            1000
          
          
            0
          
          
            0
          
          
            0
          
        
        
          
            0
          
          
            0
          
          
            1000
          
          
            0
          
          
            0
          
        
        
          
            0
          
          
            0
          
          
            0
          
          
            150000
          
          
            0
          
        
        
          
            0
          
          
            0
          
          
            0
          
          
            0
          
          
            150000
          
        
      
      ]
    
    ⁢
    e
  




so that errors which create 1/μm of error have a normalized value of 1.

The Jacobian in normalized coordinates is defined by

Jn({circumflex over (Q)}−1Δ{circumflex over (q)})=−Ê−1ê

=(ÊJn{circumflex over (Q)}−1)

{circumflex over (q)}=−ê

Using the SVD of the normalized Jacobian

=USVT

S(VTΔ{circumflex over (q)})=−(UTê)

The minimization problem can now be expressed in normalized, orthogonalized coordinates:

Φ=(S(VTΔ{circumflex over (q)})+UTê)TQ(S(VTΔ{circumflex over (q)})+UTê)+(VTΔ{circumflex over (q)}TG(VTΔ{circumflex over (q)})

The orthogonalized problem space implies that the elements of VTΔ{circumflex over (q)} and UTê are independent of each other and meaningfully equal in value. That is, changes in the ith element of VTΔ{circumflex over (q)} only cause changes in the ith element of UTê. Thus, Q and G are set to be diagonal.

Let G=S−1. The more singular the error direction, the larger the penalty on G, up to the point that when σi=0 the penalty is effectively infinite.
Let Q=λl, where l is a scaled identity matrix. Motion in the orthogonal space is treated with equivalent penalty.
The following known minimal solution to Φ may be used:

Δ{circumflex over (q)}=−V(SQS+G)−1SQUTê

Substituting in the chosen values for Q and G, and recognizing that S, Q, and G are all diagonal gives:




  
    Δ
    ⁢
    
      
    
    ⁢
    
      q
      ^
    
  
  =
  
    
      -
      
        V
        ⁡
        
          (
          
            diag
            ⁡
            
              (
              
                
                  σ
                  i
                  2
                
                
                  
                    σ
                    i
                    3
                  
                  +
                  
                    1
                    /
                    λ
                  
                
              
              )
            
          
          )
        
      
    
    ⁢
    
      U
      T
    
    ⁢
    
      e
      ^
    
  




where diag (xi) indicates a diagonal matrix with terms xi.

Denormalizing the equation above gives




  
    Δ
    ⁢
    
      
    
    ⁢
    q
  
  =
  
    
      -
      
        
          Q
          ^
        
        
          -
          1
        
      
    
    ⁢
    
      V
      ⁡
      
        (
        
          diag
          ⁡
          
            (
            
              
                σ
                i
                2
              
              
                
                  σ
                  i
                  3
                
                +
                
                  1
                  /
                  λ
                
              
            
            )
          
        
        )
      
    
    ⁢
    
      U
      T
    
    ⁢
    
      E
      ^
    
    ⁢
    e
  




Let λ=w/σ13. This leaves a single design variable, w.
Additional reference is made to FIG. 6, which shows an asymptotic decay in motion along increasingly singular directions. The decay changes as the inverse of a cubic function. The decay is shown for different values of w: 10, 100, 1000, and 10,000. For example, w=1000 can produce scaling of 50% when σi/σ1 is about 1/10. In other words, a singular value is preserved to at least 90% of its full compensation as long as σi/σ1>1/5. The choice of w=1000 has been found to provide a good balance between damping and accuracy far from a singularity.

## Claims

1. A method of commanding a linkage to move an end body in a work space, the method comprising using a machine-based controller to:
compute a manipulator Jacobian given a nominal linkage command;
compute a normalized Jacobian from the manipulator Jacobian, a joint space normalizing matrix Q, and an error space normalizing matrix E; and
use the normalized Jacobian and the Q and E matrices to produce a software compensation command to command a linkage to move an end body in a work space.

2. The method of claim 1, wherein using the normalized Jacobian and the Q and E matrices includes:
identifying singular values, left singular vectors for end body motion, and right singular vectors for joint motion from a singular value decomposition of the nominalized Jacobian; and
using the singular values, the singular vectors, and the Q and E matrices to determine the software compensation command for the linkage.

3. The method of claim 2, wherein identifying the singular values includes computing a singular value decomposition (SVD) of the normalized Jacobian to produce USVT, where U and V are orthogonal matrices of the left and right singular vectors and where S is a diagonal matrix of the singular values.

4. The method of claim 3, wherein the software compensation command minimizes damping in directions of the right singular vectors that are associated with large singular values; and minimizes joint motion in the direction of the right singular vectors that are associated with small singular values.

5. The method of claim 3, wherein using the singular values includes calculating an approximation S† to the inverse of the S matrix, where a deviation of the approximation S† from the S matrix is a function of the ith singular value in the S matrix and a largest singular value.

6. The method of claim 5, wherein the approximation is adaptively weighted such that the joint motion along the right singular vectors decays along increasingly singular directions.

7. The method of claim 6, wherein the decay is the inverse of a cubic function.

8. The method of claim 5, wherein




  
    
      S
      †
    
    =
    
      diag
      ⁡
      
        (
        
          
            σ
            i
            2
          
          
            
              σ
              i
              3
            
            +
            
              1
              /
              λ
            
          
        
        )
      
    
  
  ,




where σi is the ith singular value in the diagonal of the S matrix.

9. The method of claim 5, wherein




  
    
      S
      †
    
    =
    
      diag
      ⁡
      
        (
        
          
            σ
            i
            2
          
          
            
              σ
              i
              3
            
            +
            
              
                σ
                1
                3
              
              /
              w
            
          
        
        )
      
    
  
  ,




where σi is the ith singular value in the diagonal of the S matrix and σ1 is the largest singular value in the S matrix.

10. The method of claim 9, wherein compensation in the direction of the ith singular vector is attenuated by 50% when σi/σ1 is substantially 1/10.

11. The method of claim 5, wherein the nominal linkage command describes a desired pose of the linkage; and wherein the software compensation command is computed as Δq=−Q−1VS†UTEe, where e is pose error of the end body.

12. The method of claim 1, wherein the normalized Jacobian is computed as =EJnQ−1.

13. The method of claim 1, wherein the E matrix normalizes error of an end body motion along translation and rotation axes of the end body.

14. The method of claim 1, wherein the Q matrix represents one or more smallest resolvable steps of the joint motion.

15. The method of claim 1, wherein the normalized Jacobian allows an accurate comparison of different types of joint motion, a comparison of different units, and controls relative accuracy of compensation against joint motion.

16. A method of commanding a linkage to move an end body in a space, the method comprising:
computing a manipulator Jacobian Jn given a nominal linkage command q;
computing a singular value decomposition (SVD) of the Jacobian to produce a diagonal matrix of singular values;
calculating an approximation S† of the inverse of the diagonal matrix of singular values, where





  
    
      S
      †
    
    =
    
      diag
      ⁡
      
        (
        
          
            σ
            i
            2
          
          
            
              σ
              i
              3
            
            +
            
              
                σ
                1
                3
              
              /
              w
            
          
        
        )
      
    
  
  ,




where σi is the ith singular value and σ1 is a largest singular value in the diagonal matrix;
using the approximation S† to produce a software compensation command; and
moving the linkage according to the nominal linkage and software compensation commands.

17. The method of claim 16, wherein the SVD produces singular vectors, and wherein compensation in the direction of the ith singular vector is attenuated by 50% when σi/σ1 is substantially 1/10.

18. A machine comprising a kinematic linage for moving an end body to a pose; and a controller for generating a software compensation command Δq for the kinematic linkage given a nominal linkage command q, wherein generating the software compensation command Δq includes:
computing a manipulator Jacobian Jn given the nominal linkage command q;
computing a normalized Jacobian from the manipulator Jacobian Jn, a joint space normalizing matrix Q, and an error space normalizing matrix E;
identifying singular values, left singular vectors, and right singular vectors from a singular value decomposition of the normalized Jacobian ; and
using the singular values, the singular vectors, and the Q and E matrices to determine the software compensation command Δq for the linkage.

19. The machine of claim 18, wherein the singular value decomposition of the normalized Jacobian produces USVT, where U and V are orthogonal matrices of the left and right singular vectors and where S is a diagonal matrix of the singular values.

20. The machine of claim 19, wherein using the singular values includes calculating an approximation S† to the inverse of the S matrix, and computing a deviation of the approximation S† from the S matrix as a function of the ith singular value in the S matrix and a largest singular value.

21. An article comprising a processor and memory encoded with data for causing the processor to generate a software compensation command given a nominal linkage command, wherein generating the software compensation command includes:
computing a manipulator Jacobian given a nominal linkage command;
computing a normalized Jacobian from the manipulator Jacobian, a joint space normalizing matrix Q, and an error space normalizing matrix E; and
using the normalized Jacobian and the Q and E matrices to produce the software compensation command.

22. The article of claim 21, wherein using the normalized Jacobian and the Q and E matrices includes:
identifying singular values, left singular vectors, and right singular vectors from a singular value decomposition of the normalized Jacobian; and
using the singular values, singular vectors, and the Q and E matrices to determine the software compensation command.

23. The article of claim 22, wherein identifying the singular values includes computing a singular value decomposition (SVD) of the normalized Jacobian to produce USVT, where U and V are orthogonal matrices of the left and right singular vectors and where S is a diagonal matrix of the singular values.

24. The article of claim 23, wherein the software compensation command minimizes damping in directions of the right singular vectors that are associated with large singular values; and minimizes motion in the direction of the right singular vectors that are associated with small singular values.

25. The article of claim 23, wherein using the singular values includes calculating an approximation S\ to the inverse of the S matrix, where a deviation of the approximation S† from the S matrix is a function of the ith singular value in the S matrix and a largest singular value.

26. The article of claim 25, wherein the approximation is adaptively weighted such that motion along the right singular vectors decays along increasingly singular directions.

27. The article of claim 26, wherein the decay is the inverse of a cubic function.

28. The article of claim 25, wherein




  
    
      S
      †
    
    =
    
      diag
      ⁡
      
        (
        
          
            σ
            i
            2
          
          
            
              σ
              i
              3
            
            +
            
              1
              /
              λ
            
          
        
        )
      
    
  
  ,




where σi is the ith singular value in the diagonal of the S matrix.

29. The article of claim 25, wherein




  
    
      S
      †
    
    =
    
      diag
      ⁡
      
        (
        
          
            σ
            i
            2
          
          
            
              σ
              i
              3
            
            +
            
              
                σ
                1
                3
              
              /
              w
            
          
        
        )
      
    
  
  ,




where σis the ith singular value in the diagonal of the S matrix and σi is a largest singular value in the S matrix.

30. The article of claim 29, wherein compensation in the direction of the ith singular vector is attenuated by 50% when σi/σi is substantially 1/10.

31. The article of claim 25, wherein the nominal linkage command describes a desired pose of a linkage; and wherein the software compensation command is computed as Δq=−Q−1VS†UTEe, where e is pose error of an end body.

32. The article of claim 21, wherein the normalized Jacobian is computed as =EJnQ−1.

33. The article of claim 21, wherein the E matrix normalizes error of end body motion along translation and rotation axes of the end body.

34. The article of claim 21, wherein the Q matrix represents one or more smallest resolvable steps of the joint motion.