Package org.robwork.sdurw_invkin
Class PieperSolver
- java.lang.Object
-
- org.robwork.sdurw_invkin.InvKinSolver
-
- org.robwork.sdurw_invkin.ClosedFormIK
-
- org.robwork.sdurw_invkin.PieperSolver
-
public class PieperSolver extends ClosedFormIK
Calculates the closed form inverse kinematics of
a device using Piepers method
To use Piepers method it is required that the device has
6 DOF revolute joints, and that last three axis intersects.
In this implementation it will be assumed that the that
rotation of these last three axis are equivalent to an
Euler ZYZ or Z(-Y)Z rotation.
See Introduction to Robotics Mechanics and Control, by
John J. Craig for further information about the algorithm.
-
-
Constructor Summary
Constructors Constructor Description PieperSolver(long cPtr, boolean cMemoryOwn)
PieperSolver(DHParameterSetVector dhparams, Transform3D joint6Tend)
ConstructorPieperSolver(DHParameterSetVector dhparams, Transform3D joint6Tend, Transform3D baseTdhRef)
ConstructorPieperSolver(SerialDevice dev, Transform3D joint6Tend, State state)
Constructor - the DH parameters is expected to be on each joint
in the serial device.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
delete()
static long
getCPtr(PieperSolver obj)
FrameCPtr
getTCP()
Returns the Tool Center Point (TCP) used when solving the IK problem.
void
setCheckJointLimits(boolean check)
Specifies whether to check joint limits before returning a solution.
VectorQ
solve(Transform3D baseTend, State state)
Calculates the inverse kinematics
Given a desired \robabx{}{desired}{\mathbf{T}}
and the current state, the method solves the inverse kinematics
problem.
If the algorithm is able to identify multiple solutions (e.g.-
Methods inherited from class org.robwork.sdurw_invkin.ClosedFormIK
getCPtr, make
-
Methods inherited from class org.robwork.sdurw_invkin.InvKinSolver
getCPtr
-
-
-
-
Constructor Detail
-
PieperSolver
public PieperSolver(long cPtr, boolean cMemoryOwn)
-
PieperSolver
public PieperSolver(DHParameterSetVector dhparams, Transform3D joint6Tend, Transform3D baseTdhRef)
Constructor- Parameters:
dhparams
- [in] DH-parameters corresponding to the devicejoint6Tend
- [in] transform from the 6th joint to the end of the devicebaseTdhRef
- [in] Transformation between the robot base and the reference frame for
the DH-parameters.
-
PieperSolver
public PieperSolver(DHParameterSetVector dhparams, Transform3D joint6Tend)
Constructor- Parameters:
dhparams
- [in] DH-parameters corresponding to the devicejoint6Tend
- [in] transform from the 6th joint to the end of the device
-
PieperSolver
public PieperSolver(SerialDevice dev, Transform3D joint6Tend, State state)
Constructor - the DH parameters is expected to be on each joint
in the serial device. When specifying the DH params in the workcell file
this constructor can be used.- Parameters:
dev
- [in] the device for which to extract the DH parameters.joint6Tend
- [in] transform from the 6th joint to the end of the devicestate
- [in] State using which the transformation between robot base and the
DH-parameters reference frame are calculated.
Note: throws an exception if the device has no DH params
-
-
Method Detail
-
getCPtr
public static long getCPtr(PieperSolver obj)
-
delete
public void delete()
- Overrides:
delete
in classClosedFormIK
-
solve
public VectorQ solve(Transform3D baseTend, State state)
Description copied from class:InvKinSolver
Calculates the inverse kinematics
Given a desired \robabx{}{desired}{\mathbf{T}}
and the current state, the method solves the inverse kinematics
problem.
If the algorithm is able to identify multiple solutions (e.g. elbow
up and down) it will return all of these. Before returning a solution,
they may be checked to be within the bounds of the configuration space.
(See setCheckJointLimits(bool) )
- Overrides:
solve
in classInvKinSolver
- Parameters:
baseTend
- [in] Desired base to end transformation \robabx{}{desired}{\mathbf{T}}
state
- [in] State of the device from which to start the
iterations
- Returns:
- List of solutions. Notice that the list may be empty.
Note: The targets baseTend must be defined relative to the base of the
robot/device.
-
setCheckJointLimits
public void setCheckJointLimits(boolean check)
Description copied from class:InvKinSolver
Specifies whether to check joint limits before returning a solution.
- Overrides:
setCheckJointLimits
in classInvKinSolver
- Parameters:
check
- [in] If true the method should perform a check that joints are within
bounds.
-
getTCP
public FrameCPtr getTCP()
Description copied from class:InvKinSolver
Returns the Tool Center Point (TCP) used when solving the IK problem.
- Overrides:
getTCP
in classInvKinSolver
- Returns:
- The TCP Frame used when solving the IK.
-
-