It depends on which solver you're talking about.
Of the solvers listed here, there are "IK velocity" solvers and "IK position" solvers. There's only really one type of "position" solver listed (with variants that do and do not enforce joint limits). This is the Newton-Raphson solver (ChainIKSolverPos_NR_*
). This is an iterative solver which requires a way to compute the gradient of the jacobian at each iteration. This gradient is computed by one of the several "velocity" solvers (ChainIKSolverVel_*
) and each solver computes this gradient in a different way. You can see how the Newton-Raphson "position solver" calls the "velocity solver" here (I'm linking to a fork of mine for the sake of syntax hilighting via github).
Not listed there, however, is the Levenberg-Marquardt solver (ChainIKSolverPos_LMA
), the source of which can be seen here (header) and here (source).
This primer gives a pretty good overview of some of these methods: http://math.ucsd.edu/~sbuss/ResearchWeb/ikmethods/iksurvey.pdf