Defines a chain of joints for an arm and set of joints for a gripper. Simplifies operating with them. More...
#include <robot.h>
Public Member Functions | |
virtual | ~Manipulator () |
const ManipulatorInfo & | GetInfo () const |
return a serializable info holding everything to initialize a manipulator | |
virtual Transform | GetTransform () const |
Return the transformation of the manipulator frame. | |
virtual std::pair< Vector, Vector > | GetVelocity () const |
return the linear/angular velocity of the manipulator coordinate system | |
virtual Transform | GetEndEffectorTransform () const |
virtual const std::string & | GetName () const |
virtual RobotBasePtr | GetRobot () const |
virtual bool | SetIkSolver (IkSolverBasePtr iksolver) |
Sets the ik solver and initializes it with the current manipulator. | |
virtual IkSolverBasePtr | GetIkSolver () const |
Returns the currently set ik solver. | |
virtual LinkPtr | GetBase () const |
the base used for the iksolver | |
virtual LinkPtr | GetEndEffector () const |
the end effector link (used to define workspace distance) | |
virtual Transform | GetLocalToolTransform () const |
Return transform with respect to end effector defining the grasp coordinate system. | |
virtual void | SetLocalToolTransform (const Transform &t) |
Sets the local tool transform with respect to the end effector link. | |
virtual void | SetName (const std::string &name) |
new name for manipulator | |
virtual Transform | GetGraspTransform () const RAVE_DEPRECATED |
virtual const std::vector< int > & | GetGripperIndices () const |
Gripper indices of the joints that the manipulator controls. | |
virtual const std::vector< int > & | GetArmIndices () const |
Return the indices of the DOFs of the manipulator, which are used for inverse kinematics. | |
virtual const std::vector < dReal > & | GetClosingDirection () const |
return the normal direction to move joints to 'close' the hand | |
virtual void | SetLocalToolDirection (const Vector &direction) |
Sets the local tool direction with respect to the end effector link. | |
virtual Vector | GetLocalToolDirection () const |
direction of palm/head/manipulator used for approaching. defined inside the manipulator/grasp coordinate system | |
virtual Vector | GetDirection () const |
virtual bool | FindIKSolution (const IkParameterization ¶m, std::vector< dReal > &solution, int filteroptions) const |
Find a close solution to the current robot's joint values. | |
virtual bool | FindIKSolution (const IkParameterization ¶m, const std::vector< dReal > &vFreeParameters, std::vector< dReal > &solution, int filteroptions) const |
virtual bool | FindIKSolution (const IkParameterization ¶m, int filteroptions, IkReturnPtr ikreturn) const |
virtual bool | FindIKSolution (const IkParameterization ¶m, const std::vector< dReal > &vFreeParameters, int filteroptions, IkReturnPtr ikreturn) const |
virtual bool | FindIKSolutions (const IkParameterization ¶m, std::vector< std::vector< dReal > > &solutions, int filteroptions) const |
Find all the IK solutions for the given end effector transform. | |
virtual bool | FindIKSolutions (const IkParameterization ¶m, const std::vector< dReal > &vFreeParameters, std::vector< std::vector< dReal > > &solutions, int filteroptions) const |
virtual bool | FindIKSolutions (const IkParameterization ¶m, int filteroptions, std::vector< IkReturnPtr > &vikreturns) const |
virtual bool | FindIKSolutions (const IkParameterization ¶m, const std::vector< dReal > &vFreeParameters, int filteroptions, std::vector< IkReturnPtr > &vikreturns) const |
virtual IkParameterization | GetIkParameterization (IkParameterizationType iktype, bool inworld=true) const |
returns the parameterization of a given IK type for the current manipulator position. | |
virtual IkParameterization | GetIkParameterization (const IkParameterization &ikparam, bool inworld=true) const |
returns a full parameterization of a given IK type for the current manipulator position using an existing IkParameterization as the seed. | |
virtual void | GetChildJoints (std::vector< JointPtr > &vjoints) const |
Get all child joints of the manipulator starting at the pEndEffector link. | |
virtual void | GetChildDOFIndices (std::vector< int > &vdofndices) const |
Get all child DOF indices of the manipulator starting at the pEndEffector link. | |
virtual bool | IsChildLink (LinkConstPtr plink) const |
returns true if a link is part of the child links of the manipulator. | |
virtual void | GetChildLinks (std::vector< LinkPtr > &vlinks) const |
Get all child links of the manipulator starting at pEndEffector link. | |
virtual void | GetIndependentLinks (std::vector< LinkPtr > &vlinks) const |
Get all links that are independent of the arm and gripper joints. | |
virtual bool | CheckEndEffectorCollision (const Transform &tEE, CollisionReportPtr report=CollisionReportPtr()) const |
Checks collision with only the gripper given its end-effector transform and the rest of the environment. Ignores disabled links. | |
virtual bool | CheckEndEffectorSelfCollision (const Transform &tEE, CollisionReportPtr report=CollisionReportPtr()) const |
Checks self-collision with only the gripper given its end-effector transform with the rest of the robot. Ignores disabled links. | |
virtual bool | CheckEndEffectorCollision (const IkParameterization &ikparam, CollisionReportPtr report=CollisionReportPtr()) const |
Checks environment collisions with only the gripper given an IK parameterization of the gripper. | |
virtual bool | CheckEndEffectorSelfCollision (const IkParameterization &ikparam, CollisionReportPtr report=CollisionReportPtr()) const |
Checks self-collisions with only the gripper given an IK parameterization of the gripper. | |
virtual bool | CheckIndependentCollision (CollisionReportPtr report=CollisionReportPtr()) const |
Checks collision with the environment with all the independent links of the robot. Ignores disabled links. | |
virtual bool | IsGrabbing (KinBodyConstPtr body) const |
Checks collision with a target body and all the independent links of the robot. Ignores disabled links. | |
virtual void | CalculateJacobian (std::vector< dReal > &jacobian) const |
computes the jacobian of the manipulator arm indices of the current manipulator frame world position. | |
virtual void | CalculateJacobian (boost::multi_array< dReal, 2 > &jacobian) const |
calls std::vector version of CalculateJacobian internally, a little inefficient since it copies memory | |
virtual void | CalculateRotationJacobian (std::vector< dReal > &jacobian) const |
computes the quaternion jacobian of the manipulator arm indices from the current manipulator frame rotation. | |
virtual void | CalculateRotationJacobian (boost::multi_array< dReal, 2 > &jacobian) const |
calls std::vector version of CalculateRotationJacobian internally, a little inefficient since it copies memory | |
virtual void | CalculateAngularVelocityJacobian (std::vector< dReal > &jacobian) const |
computes the angule axis jacobian of the manipulator arm indices. | |
virtual void | CalculateAngularVelocityJacobian (boost::multi_array< dReal, 2 > &jacobian) const |
calls std::vector version of CalculateAngularVelocityJacobian internally, a little inefficient since it copies memory | |
virtual ConfigurationSpecification | GetArmConfigurationSpecification (const std::string &interpolation="") const |
return a copy of the configuration specification of the arm indices | |
virtual void | serialize (std::ostream &o, int options) const |
virtual const std::string & | GetStructureHash () const |
Return hash of just the manipulator definition. | |
virtual const std::string & | GetKinematicsStructureHash () const |
Return hash of all kinematics information that involves solving the inverse kinematics equations. | |
Protected Member Functions | |
virtual void | _ComputeInternalInformation () |
compute internal information from user-set info | |
Protected Attributes | |
ManipulatorInfo | _info |
user-set information | |
Defines a chain of joints for an arm and set of joints for a gripper. Simplifies operating with them.
|
virtual |
|
protectedvirtual |
compute internal information from user-set info
|
virtual |
computes the angule axis jacobian of the manipulator arm indices.
|
virtual |
calls std::vector version of CalculateAngularVelocityJacobian internally, a little inefficient since it copies memory
|
virtual |
computes the jacobian of the manipulator arm indices of the current manipulator frame world position.
The manipulator frame is computed from Manipulator::GetTransform()
|
virtual |
calls std::vector version of CalculateJacobian internally, a little inefficient since it copies memory
|
virtual |
computes the quaternion jacobian of the manipulator arm indices from the current manipulator frame rotation.
|
virtual |
calls std::vector version of CalculateRotationJacobian internally, a little inefficient since it copies memory
|
virtual |
Checks collision with only the gripper given its end-effector transform and the rest of the environment. Ignores disabled links.
tEE | the end effector transform | |
[out] | report | [optional] collision report |
|
virtual |
Checks environment collisions with only the gripper given an IK parameterization of the gripper.
Some IkParameterizations can fully determine the gripper 6DOF location. If the type is Transform6D or the manipulator arm DOF <= IkParameterization DOF, then this would be possible. In the latter case, an ik solver is required to support the ik parameterization. \param ikparam the ik parameterization determining the gripper transform \param[out] report [optional] collision report \return true if a collision occurred
/
openrave_exception | if the gripper location cannot be fully determined from the passed in ik parameterization. |
|
virtual |
Checks self-collision with only the gripper given its end-effector transform with the rest of the robot. Ignores disabled links.
tEE | the end effector transform | |
[out] | report | [optional] collision report |
|
virtual |
Checks self-collisions with only the gripper given an IK parameterization of the gripper.
Some IkParameterizations can fully determine the gripper 6DOF location. If the type is Transform6D or the manipulator arm DOF <= IkParameterization DOF, then this would be possible. In the latter case, an ik solver is required to support the ik parameterization. \param ikparam the ik parameterization determining the gripper transform \param[out] report [optional] collision report \return true if a collision occurred
/
openrave_exception | if the gripper location cannot be fully determined from the passed in ik parameterization. |
|
virtual |
Checks collision with the environment with all the independent links of the robot. Ignores disabled links.
[out] | report | [optional] collision report |
|
virtual |
Find a close solution to the current robot's joint values.
The function is a wrapper around the IkSolver interface. Note that the solution returned is not guaranteed to be the closest solution. In order to compute that, will have to compute all the ik solutions using FindIKSolutions.
param | The transformation of the end-effector in the global coord system | |
solution | Will be of size GetArmIndices().size() and contain the best solution | |
[in] | filteroptions | A bitmask of IkFilterOptions values controlling what is checked for each ik solution. |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
Find all the IK solutions for the given end effector transform.
param | The transformation of the end-effector in the global coord system | |
solutions | An array of all solutions, each element in solutions is of size GetArmIndices().size() | |
[in] | filteroptions | A bitmask of IkFilterOptions values controlling what is checked for each ik solution. |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
return a copy of the configuration specification of the arm indices
Note that the return type is by-value, so should not be used in iteration
|
inlinevirtual |
|
inlinevirtual |
|
virtual |
Get all child DOF indices of the manipulator starting at the pEndEffector link.
|
virtual |
Get all child joints of the manipulator starting at the pEndEffector link.
|
virtual |
Get all child links of the manipulator starting at pEndEffector link.
The child links do not include the arm links.
|
inlinevirtual |
|
inlinevirtual |
|
inlinevirtual |
|
inlinevirtual |
|
inlinevirtual |
|
inlinevirtual |
|
virtual |
returns the parameterization of a given IK type for the current manipulator position.
Ideally pluging the returned ik parameterization into FindIkSolution should return the a manipulator configuration such that a new call to GetIkParameterization returns the same values. In other words:
iktype | the type of parameterization to request |
inworld | if true will return the parameterization in the world coordinate system, otherwise in the base link (GetBase()) coordinate system |
|
virtual |
returns a full parameterization of a given IK type for the current manipulator position using an existing IkParameterization as the seed.
Custom data is copied to the new parameterization. Furthermore, some IK types like Lookat3D and TranslationLocalGlobal6D set constraints in the global coordinate system of the manipulator. Because these values are not stored in manipulator itself, they have to be passed in through an existing IkParameterization. Ideally pluging the returned ik parameterization into FindIkSolution should return the a manipulator configuration such that a new call to GetIkParameterization returns the same values.
ikparam | The parameterization to use as seed. |
inworld | if true will return the parameterization in the world coordinate system, otherwise in the base link (GetBase()) coordinate system |
|
virtual |
Returns the currently set ik solver.
|
virtual |
Get all links that are independent of the arm and gripper joints.
In other words, returns all links not on the path from the base to the end effector and not children of the end effector. The base and all links rigidly attached to it are also returned.
|
inline |
|
virtual |
Return hash of all kinematics information that involves solving the inverse kinematics equations.
This includes joint axes, joint positions, and final grasp transform. Hash is used to cache the solvers.
|
inlinevirtual |
|
inlinevirtual |
|
inlinevirtual |
|
inlinevirtual |
|
virtual |
Return hash of just the manipulator definition.
|
virtual |
Return the transformation of the manipulator frame.
The manipulator frame is defined by the the end effector link position * GetLocalToolTransform() All inverse kinematics and jacobian queries are specifying this frame.
return the linear/angular velocity of the manipulator coordinate system
|
virtual |
returns true if a link is part of the child links of the manipulator.
The child links do not include the arm links.
|
virtual |
Checks collision with a target body and all the independent links of the robot. Ignores disabled links.
[in] | the | body to check the independent links with |
[out] | report | [optional] collision report |
|
virtual |
|
virtual |
Sets the ik solver and initializes it with the current manipulator.
Due to complications with translation,rotation,direction,and ray ik, the ik solver should take into account the grasp transform (_info._tLocalTool) internally. The actual ik primitives are transformed into the base frame only.
|
virtual |
Sets the local tool direction with respect to the end effector link.
Because this call will change manipulator hash, it resets the loaded IK and sends the Prop_RobotManipulatorTool message.
|
virtual |
Sets the local tool transform with respect to the end effector link.
Because this call will change manipulator hash, it resets the loaded IK and sends the Prop_RobotManipulatorTool message.
|
virtual |
new name for manipulator
openrave_exception | if name is already used in another manipulator |
|
protected |