ETS.ikine_QP
- ETS.ikine_QP(Tep, q0=None, ilimit=30, slimit=100, tol=1e-06, mask=None, joint_limits=True, seed=None, kj=1.0, ks=1.0, kq=0.0, km=0.0, ps=0.0, pi=0.3, **kwargs)[source]
Quadratic Programming Numerical Inverse Kinematics Solver
A method that provides functionality to perform numerical inverse kinematics (IK) using a quadratic progamming approach.
See the Inverse Kinematics Docs Page for more details and for a tutorial on numerical IK, see here.
- Parameters:
q0 (
Union
[ndarray
,List
[float
],Tuple
[float
],Set
[float
],None
]) – The initial joint coordinate vectorilimit (
int
) – How many iterations are allowed within a search before a new search is startedslimit (
int
) – How many searches are allowed before being deemed unsuccessfultol (
float
) – Maximum allowed residual error Emask (
Union
[ndarray
,List
[float
],Tuple
[float
],Set
[float
],None
]) – A 6 vector which assigns weights to Cartesian degrees-of-freedom error priorityjoint_limits (
bool
) – Reject solutions with joint limit violationsseed (
Optional
[int
]) – A seed for the private RNG used to generate random joint coordinate vectorskj – A gain for joint velocity norm minimisation
ks – A gain which adjusts the cost of slack (intentional error)
kq (
float
) – The gain for joint limit avoidance. Setting to 0.0 will remove this completely from the solutionkm (
float
) – The gain for maximisation. Setting to 0.0 will remove this completely from the solutionps (
float
) – The minimum angle/distance (in radians or metres) in which the joint is allowed to approach to its limitpi (
Union
[ndarray
,float
]) – The influence angle/distance (in radians or metres) in null space motion becomes active
- Raises:
ImportError – If the package
qpsolvers
is not installed
Synopsis
Each iteration uses the following approach
where the QP is defined as
with
where
is the slack vector, is a gain term which adjusts the cost of the norm of the slack vector in the optimiser, are the minimum and maximum joint velocities, and are the minimum and maximum slack velocities.Examples
The following example gets the
ets
of apanda
robot object, makes a goal poseTep
, and then solves for the joint coordinates which result in the poseTep
using theikine_QP
method.ImportError: the package qpsolvers is required for this class. Install using 'pip install qpsolvers'
Notes
When using the this method, the initial joint coordinates
, should correspond to a non-singular manipulator pose, since it uses the manipulator Jacobian.This class supports null-space motion to assist with maximising manipulability and avoiding joint limits. These are enabled by setting kq and km to non-zero values.
References
J. Haviland, and P. Corke. “Manipulator Differential Kinematics Part I: Kinematics, Velocity, and Applications.” arXiv preprint arXiv:2207.01796 (2022).
J. Haviland, and P. Corke. “Manipulator Differential Kinematics Part II: Acceleration and Advanced Applications.” arXiv preprint arXiv:2207.01794 (2022).
See also
Changed in version 1.0.4: Added the Quadratic Programming IK solver method on the
ETS
class