Journal article:

    Samuel R. Buss and Jin-Su Kim.
    "Selectively Damped Least Squares for Inverse Kinematics."
    In Journal of Graphics Tools, vol. 10, no. 3 (2005) 37-49.

    Download article: postscript or PDF

    Abstract: We introduce two methods for the inverse kinematics of multibodies with multiple end effectors. The first method clamps the distance of the target positions. Experiments show this is effective in reducing oscillation when target positions are unreachable. The second method is an extension of damped least squares called selectively damped least squares (SDLS) which adjusts the damping factor separately for each singular vector of the Jacobian singular value decomposition based on the difficulty of reaching the target positions. SDLS has advantages in converging in fewer iterations and in not requiring ad hoc damping constants.

    See below for downloadable software.

Survey article (unpublished):

    Samuel R. Buss.
    "Introduction to Inverse Kinematics with Jacobian Transpose, Pseudoinverse and Damped Least Squares methods."
    Unpublished survey.

    Download unpublished article: postscript or PDF

    Abstract: This is a introduction to the Jacobian transpose method, the pseudoinverse method, and the damped least squares methods for inverse kinematics (IK). The mathematical foundations of these methods are presented, with an analysis based on the singular value decomposition.

My thanks to Giovanni Saponaro for pointing out some typos in an earlier posted version.


Movies showing the double-Y shape are available in two formats.  Only one update is performed in each time step, so the end effectors do not exactly track the target positions.   (File sizes are 1.7MB to 3.0MB.)

  1. Selectively Damped Least Square (SDLS).   Quicktime(.mov) or AVI format.   This is the new method introduced in the paper.
  2. Damped Least Squares (DLS).    Quicktime(.mov) or AVI format.   A traditional method from robotics.
  3. Pseudoinverse method.    Quicktime(.mov) or AVI format.   An ill-conditioned method.  Includes clamps on the joint angle changes.  Oscillates badly and converges very poorly.
  4. Jacobian transpose method.     Quicktime(.mov) or AVI format.   As illustrated in the movie, it does not work well with multiple end effectors.  It freezes up and oscillates.


The source code is available in two formats:  PC format in .zip file and Unix format in a gzipped tar file.  You will need to have OpenGL, GLUT and GLUI header files and libraries to compile and run these.  The programs run very fast on my home machine in Visual C++.NET and very slow on my office computer with Visual C++.6.0 (don't ask me why!), so your mileage may vary.  Bug reports appreciated, but the software is not being supported.
Update as of 12/2014: As recently reported by Vikram Saran who implemented the code in Visual Studio 2013, the code works only with GLUI version 2.35, not 2.36, and it is necessary to add GLUT_BUILDING_LIB to the preprocessor definitions. My thanks for Vikram for reporting this!

Back to Sam Buss's publications page.