I’ve never seen or looked into an inverse kinematics library that uses Levenberg-Marquardt with geodesic acceleration, but it would depend a lot on the implementation. The QuIK method is an application of Halley’s method, which uses 3rd-order derivative information to improve the computation of the step. It is effectively a third-order extension of the second-order Levenberg-Marquardt (also called damped Newton’s) methods. The geodesic acceleration part (as I understand it) usually attempts to correct for curvature in the error surface, but typically its implemented through approximations (estimating curvature through subsequent Hessian evaluations, or through finite difference calculations). The QuIK method computes this curvature exactly.

It’s a bit confusing because there are two classes of inverse kinematics methods: Jacobian-based methods, and optimization-based methods. In Jacobian-based methods, the kinematic Jacobian is used similarly to the optimization Hessian in optimization methods, but the Jacobian is a first derivative whereas the optimization Hessian is second-order. The QuIK method computes the derivative of the kinematic Jacobian w.r.t the joint angles, so this is called the kinematic Hessian and it is a 3rd-order tensor (6xDOFxDOF), but it shouldn’t be confused with the optimization Hessian (DOFxDOF): it’s effectively one order of derivation further. I explain this more in the paper, it’s a bit confusing when people say second-order or third-order because it can mean different things.

TLDR:

  • Levenburg-Marquardt is a second-order method, geodesic acceleration corrections are usually approximations. This approximately means that, within the basin of convergence, the number of correct digits approximately doubles at each iteration. The amount of help the acceleration terms give depends on how accurate they are.
  • QuIK is a third-order method, and within the basin of convergence, the number of correct digits approximately triples at each step.

For your questions:

  • Non-DH parametrizations are possible, actually all you would need to do is re-implement the forward kinematics function in the quik::Robot class. The computations of the kinematic Jacobian, and Hessian, all follow from that. The downside, however, is that the DH-based forward kinematics is really efficient, and since it needs to be called many times during an inverse kinematics call, it would slow down the function. Could be worthwhile to do nonetheless.
  • Parallel kinematics: Definitely possible, but more work would be needed. I would add that in simple cases parallel kinematics problems can be reduced to multiple serial inverse kinematics calls or turned into a single serial kinematics problem by reframing the problem. Not true in general, however.
1 Like