IK_GN.step
- IK_GN.step(ets, Tep, q)[source]
Performs a single iteration of the Gauss-Newton optimisation method
The next step is defined as
\[\begin{split}\vec{q}_{k+1} &= \vec{q}_k + \left( {\mat{J}(\vec{q}_k)}^\top \mat{W}_e \ {\mat{J}(\vec{q}_k)} \right)^{-1} \bf{g}_k \\ \bf{g}_k &= {\mat{J}(\vec{q}_k)}^\top \mat{W}_e \vec{e}_k\end{split}\]where \(\mat{J} = {^0\mat{J}}\) is the base-frame manipulator Jacobian. If \(\mat{J}(\vec{q}_k)\) is non-singular, and \(\mat{W}_e = \mat{1}_n\), then the above provides the pseudoinverse solution. However, if \(\mat{J}(\vec{q}_k)\) is singular, the above can not be computed and the GN solution is infeasible.
- Parameters:
- Raises:
numpy.LinAlgError – If a step is impossible due to a linear algebra error
- Return type:
- Returns:
E – The new error value
q – The new joint coordinate vector