armarx::RobotIKInterface
Overview
interface RobotIKInterface
Operation Index
- computeIKFramedPose
-
@brief Computes a single IK solution for the given robot node set and desired TCP pose.
- computeIKGlobalPose
-
@brief Computes a single IK solution for the given robot node set and desired global TCP pose.
- computeExtendedIKGlobalPose
-
@brief Computes a single IK solution, error and reachability for the given robot node set and desired global TCP pose.
- computeCoMIK
-
@brief Computes an IK solution for the given robot joints such that the center of mass lies above the
given point.
- computeHierarchicalDeltaIK
-
@brief Computes a configuration gradient in order to solve several tasks/constraints simultaneously.
- defineRobotNodeSet
-
@brief Defines a new robot node set.
- createReachabilitySpace
-
@brief Creates a new reachability space for the given robot node set.
- hasReachabilitySpace
-
@brief Returns whether this component has a reachability space for the given robot node set.
- loadReachabilitySpace
-
@brief Loads the reachability space from the given file.
- saveReachabilitySpace
-
@brief Saves a previously created reachability space of the given robot node set.
- isFramedPoseReachable
-
@brief Returns whether a given framed pose is currently reachable by the TCP of the given robot node set.
- isPoseReachable
-
@brief Returns whether a given global pose is currently reachable by the TCP of the given robot node set.
Operations
@brief Computes a single IK solution for the given robot node set and desired TCP pose.
@details The TCP pose can be defined in any frame and is converted internally to a global pose
according to the current robot state. The CartesianSelection
parameter defines which part of the target pose should be reached.
Parameters
- robotNodeSetName
-
The name of a robot node set (robot node set) that is either stored
within the robot model or has been defined via \ref defineRobotNodeSet.
- tcpPose
-
The framed target pose for the TCP.
- cs
-
Specifies which part of the pose needs to be reached by the IK, e.g. the position only,
the orientation only or all.
Return Value
A map that maps each joint name to its value in the found IK solution.
@brief Computes a single IK solution for the given robot node set and desired global TCP pose.
@details The TCP pose is assumed to be in the global frame. The CartesianSelection
parameter defines which part of the target pose should be reached.
Parameters
- robotNodeSetName
-
The name of a robot node set (robot node set) that is either stored
within the robot model or has been defined via \ref defineRobotNodeSet.
- tcpPose
-
The global target pose for the TCP.
- cs
-
Specifies which part of the pose needs to be reached by the IK, e.g. the position only,
the orientation only or all.
Return Value
A map that maps each joint name to its value in the found IK solution.
@brief Computes a single IK solution, error and reachability for the given robot node set and desired global TCP pose.
@details The TCP pose is assumed to be in the global frame. The CartesianSelection
parameter defines which part of the target pose should be reached.
Parameters
- robotNodeSetName
-
The name of a robot node set (robot node set) that is either stored
within the robot model or has been defined via \ref defineRobotNodeSet.
- tcpPose
-
The global target pose for the TCP.
- cs
-
Specifies which part of the pose needs to be reached by the IK, e.g. the position only,
the orientation only or all.
Return Value
A map that maps each joint name to its value in the found IK solution, the reachability and computational error.
@brief Computes an IK solution for the given robot joints such that the center of mass lies above the
given point.
@details
Parameters
- robotNodeSetJoints
-
Name of the robot node set that contains the joints you wish to compute the IK for.
- comIK
-
A center of mass description. Note that the priority field is relevant for this function as there
is only a single CoM of descriptor.
Return Value
The ik-solution. Returns an empty vector if there is no solution.
NameValueMap computeHierarchicalDeltaIK(string robotNodeSet, IKTasks diffIKs, CoMIKDescriptor comIKs, float stepSize, bool avoidJointLimits, bool enableCenterOfMass)
@brief Computes a configuration gradient in order to solve several tasks/constraints simultaneously.
@details This function allows you to use the HierarchicalIK solver provided by Simox.
It computes a configuration gradient for the given robot node set that minimizes the workspace errors
for multiple tasks simultaneously. You can specify IK tasks, a center of mass task and a joint limit avoidance task.
For details for the different type of tasks, see the parameter description. You must define a priority for each task.
The task with maximal priority is the first task to be solved. Each subsequent task is then solved
within the null space of the previous task. Note that this function returns a gradient and NOT
an absolute IK solution. The gradient is computed on the current configuration of the robot. <\b>.
The gradient is computed from the current robot configuration.
See @url http://simox.sourceforge.net/documentation/class_virtual_robot_1_1_hierarchical_i_k.html
and @url http://sourceforge.net/p/simox/wiki/VirtualRobot/#hierarchical-ik-solving for more information.
Parameters
- robotNodeSet
-
The robot node set (e.g. kinematic tree) you wish to compute the gradient for.
- diffIKs
-
A list of IK tasks. Each IK task specifies a TCP and a desired pose for this TCP.
- comIK
-
A center of mass tasks. Defines where the center should be and its priority. Is only used if the
CoM-task is enabled.
-
- avoidJointLimits
-
Set whether or not to avoid joint limits.
- enableCenterOfMass
-
Set whether or not to adjust the center of mass.
Return Value
A configuration gradient...
bool defineRobotNodeSet(string name, NodeNameList nodes, string tcpName, string rootNode)
@brief Defines a new robot node set.
@details Define a new robot node set with the given name that consists out of the given list of nodes with given
TCP and root frame. Iff the chain is successfully added or already exists, true is returned.
Parameters
- name
-
The name of the robot node set.
- nodes
-
The list of robot nodes that make up the robot node set.
- tcpName
-
The name of the TCP node.
- rootNode
-
The name of the kinematic root.
Return Value
True, iff chain was added or already exists. False, iff a different chain with similar name already exists.
bool createReachabilitySpace(string chainName, string coordinateSystem, float stepTranslation, float stepRotation, WorkspaceBounds minBounds, WorkspaceBounds maxBounds, int numSamples)
@brief Creates a new reachability space for the given robot node set.
@details If there is no reachability space for the given robot node set yet, a new one is created. This may take
some time. The function returns true iff a reachability space for the given robot node set exists after
execution of this function.
Parameters
- chainName
-
The name of a defined robot node set. This can be either a robot node set that is defined in the
robot model or a robot node set that has been manually defined calling \ref defineRobotNodeSet.
- coordinateSystem
-
The name of the robot node in whose coordinate system the reachability space shall be defined in. If you wish to choose the global coordinate system, pass an empty string. Note, however, that any reachability space defined in the global coordinate system gets invalidated once the robot moves.
- stepTranslation
-
The extend of a voxel dimension in translational dimensions (x,y,z) mm
- stepRotation
-
The extend of a voxel dimension in rotational dimensions (roll,pitch,yaw) rad
- minBounds
-
The minimum workspace poses (x,y,z,ro,pi,ya) given in the base node's coordinate system mm and rad
- maxBounds
-
The maximum workspace poses (x,y,z,ro,pi,ya) given in base node's coordinate system mm and rad
- numSamples
-
The number of tcp samples to take to create the reachability space (e.g 1000000)
Return Value
True iff the a reachability space for the given robot node set is available after execution of this function.
False in case of a failure, e.g. there is no chain with the given name.
bool hasReachabilitySpace(string chainName)
@brief Returns whether this component has a reachability space for the given robot node set.
@details True if there is a reachability space available, else false.
Parameters
- chainName
-
Name of the robot node set.
Return Value
True if there is a reachability space available, else false.
bool loadReachabilitySpace(string filename)
@brief Loads the reachability space from the given file.
@details If loading the reachability space succeeds, the reachability space is ready to be used after this function
terminates. A reachability space can only be loaded if there is no reachability space for the respective
robot node set yet.
Parameters
- filename
-
Binary file containing a reachability space. Ensure that the path is valid and accessible from
where this component is running.
Return Value
True iff loading the reachability space was successful.
bool saveReachabilitySpace(string robotNodeSet, string filename)
@brief Saves a previously created reachability space of the given robot node set.
@details A reachability space for a robot node set can only be saved, if actually is one.
You can check whether a reachability space is available by calling \ref hasReachabilitySpace(robotNodeSet).
Parameters
- robotNodeSet
-
The robot node set for which you wish to save the reachability space.
- filename
-
The filename if the file(must be an accessible path for this component) you wish to save the space in.
Return Value
True iff saving was successful.
bool isFramedPoseReachable(string chainName, FramedPoseBase framedPose)
@brief Returns whether a given framed pose is currently reachable by the TCP of the given robot node set.
@details To determine whether a pose is reachable a reachability space for the given robot node set is
required. If no such space exists, the function returns false<\it>.
Call \ref createReachabilitySpace first to ensure there is such a space.
Parameters
- chainName
-
A name of a robot node set either defined in the robot model or previously defined via
\ref defineRobotNodeSet.
- framedPose
-
A framed pose to check for reachability. The pose is transformed into a global pose using the
current robot state.
Return Value
True, if the pose is reachable by the TCP of the given chain. False, if it is not reachable or
there is no reachability space for the given chain available.
bool isPoseReachable(string chainName, PoseBase framedPose)
@brief Returns whether a given global pose is currently reachable by the TCP of the given robot node set.
@details To determine whether a pose is reachable a reachability space for the given robot node set is
required. If no such space exists, the function returns false<\it>.
Call \ref createReachabilitySpace first to ensure there is such a space.
Parameters
- chainName
-
A name of a robot node set either defined in the robot model or previously defined via
\ref defineRobotNodeSet.
- pose
-
A global pose to check for reachability.
Return Value
True, if the pose is reachable by the TCP of the given chain. False, if it is not reachable or
there is no reachability space for the given chain available.