Home Previous Up Next Index

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

NameValueMap computeIKFramedPose(string robotNodeSetName, FramedPoseBase tcpPose, CartesianSelection cs)

@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.

NameValueMap computeIKGlobalPose(string robotNodeSetName, PoseBase tcpPose, CartesianSelection cs)

@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.

ExtendedIKResult computeExtendedIKGlobalPose(string robotNodeSetName, PoseBase tcpPose, CartesianSelection cs)

@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.

NameValueMap computeCoMIK(string robotNodeSetJoints, CoMIKDescriptor comIK)

@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.


Home Previous Up Next Index