Aikido
aikido::planner::vectorfield::MoveEndEffectorOffsetVectorField Class Reference

Vector field for moving end-effector by a direction and distance. More...

#include <aikido/planner/vectorfield/MoveEndEffectorOffsetVectorField.hpp>

Inheritance diagram for aikido::planner::vectorfield::MoveEndEffectorOffsetVectorField:
aikido::planner::vectorfield::BodyNodePoseVectorField aikido::planner::vectorfield::VectorField

Public Member Functions

 MoveEndEffectorOffsetVectorField (aikido::statespace::dart::ConstMetaSkeletonStateSpacePtr stateSpace, ::dart::dynamics::MetaSkeletonPtr metaskeleton, ::dart::dynamics::ConstBodyNodePtr bn, const Eigen::Vector3d &direction, double minDistance, double maxDistance, double positionTolerance, double angularTolerance, double maxStepSize, double jointLimitPadding)
 Constructor. More...
 
bool evaluateCartesianVelocity (const Eigen::Isometry3d &pose, Eigen::Vector6d &cartesianVelocity) const override
 Evaluate Cartesian velocity by current pose of body node. More...
 
VectorFieldPlannerStatus evaluateCartesianStatus (const Eigen::Isometry3d &pose) const override
 Evaluate current pose to determine the status of planning. More...
 
- Public Member Functions inherited from aikido::planner::vectorfield::BodyNodePoseVectorField
 BodyNodePoseVectorField (aikido::statespace::dart::ConstMetaSkeletonStateSpacePtr metaSkeletonStateSpace, ::dart::dynamics::MetaSkeletonPtr metaSkeleton, ::dart::dynamics::ConstBodyNodePtr bodyNode, double maxStepSize, double jointLimitPadding, bool enforceJointVelocityLimits=false)
 Constructor. More...
 
bool evaluateVelocity (const aikido::statespace::StateSpace::State *state, Eigen::VectorXd &qd) const override
 Vectorfield callback function. More...
 
VectorFieldPlannerStatus evaluateStatus (const aikido::statespace::StateSpace::State *state) const override
 Vectorfield planning status callback function. More...
 
bool evaluateTrajectory (const aikido::trajectory::Trajectory &trajectory, const aikido::constraint::Testable *constraint, double evalStepSize, double &evalTimePivot, bool includeEndTime) const override
 Evaludate whether a trajectory satisfies a constraint. More...
 
aikido::statespace::dart::ConstMetaSkeletonStateSpacePtr getMetaSkeletonStateSpace () const
 Return const meta skeleton state space. More...
 
::dart::dynamics::MetaSkeletonPtr getMetaSkeleton ()
 Returns meta skeleton. More...
 
::dart::dynamics::ConstMetaSkeletonPtr getMetaSkeleton () const
 Returns const meta skeleton. More...
 
::dart::dynamics::ConstBodyNodePtr getBodyNode () const
 Returns const body node of end-effector. More...
 
- Public Member Functions inherited from aikido::planner::vectorfield::VectorField
 VectorField (aikido::statespace::ConstStateSpacePtr stateSpace)
 Constructor. More...
 
virtual ~VectorField ()=default
 Destructor. More...
 
aikido::statespace::ConstStateSpacePtr getStateSpace ()
 Returns state space. More...
 
aikido::statespace::ConstStateSpacePtr getStateSpace () const
 Returns const state space. More...
 

Protected Attributes

Eigen::Vector3d mDirection
 Movement direction. More...
 
double mMinDistance
 Minimum movement distance. More...
 
double mMaxDistance
 Maximum distance allowed to move. More...
 
double mPositionTolerance
 Tolerance of linear deviation error. More...
 
double mAngularTolerance
 Tolerance of angular error. More...
 
Eigen::Isometry3d mStartPose
 Start pose of the end-effector. More...
 
- Protected Attributes inherited from aikido::planner::vectorfield::BodyNodePoseVectorField
aikido::statespace::dart::ConstMetaSkeletonStateSpacePtr mMetaSkeletonStateSpace
 Meta skeleton state space. More...
 
::dart::dynamics::MetaSkeletonPtr mMetaSkeleton
 Meta Skeleton. More...
 
::dart::dynamics::ConstBodyNodePtr mBodyNode
 BodyNode. More...
 
double mMaxStepSize
 Maximum step size of integrator. More...
 
double mJointLimitPadding
 Padding of joint limits. More...
 
Eigen::VectorXd mVelocityLowerLimits
 Joint velocities lower limits. More...
 
Eigen::VectorXd mVelocityUpperLimits
 Joint velocities upper limits. More...
 
bool mEnforceJointVelocityLimits
 Enfoce joint velocity limits. More...
 
- Protected Attributes inherited from aikido::planner::vectorfield::VectorField
aikido::statespace::ConstStateSpacePtr mStateSpace
 State space. More...
 

Detailed Description

Vector field for moving end-effector by a direction and distance.

It defines a vector field in meta-skeleton state space that moves an end-effector a desired offset with move-hand-straight constraint. The move-hand-straight constraint is defined by the direction and distance range [minimum distance, maximum distance). Movement less than minimum distance will return failure. The motion will not move further than maximum distance.

This class defines two callback functions for vectorfield planner. One for generating joint velocity in MetaSkeleton state space, and one for determining vectorfield planner status.

Constructor & Destructor Documentation

◆ MoveEndEffectorOffsetVectorField()

aikido::planner::vectorfield::MoveEndEffectorOffsetVectorField::MoveEndEffectorOffsetVectorField ( aikido::statespace::dart::ConstMetaSkeletonStateSpacePtr  stateSpace,
::dart::dynamics::MetaSkeletonPtr  metaskeleton,
::dart::dynamics::ConstBodyNodePtr  bn,
const Eigen::Vector3d &  direction,
double  minDistance,
double  maxDistance,
double  positionTolerance,
double  angularTolerance,
double  maxStepSize,
double  jointLimitPadding 
)

Constructor.

Parameters
[in]stateSpaceMetaSkeleton state space.
[in]metaskeletonMetaSkeleton to plan with
[in]bnBody node of end-effector.
[in]directionUnit vector in the direction of motion.
[in]minDistanceMinimum distance in meters.
[in]maxDistanceMaximum distance in meters. Maximum distance should be larger than minimum distance so that a feasible solution could be found.
[in]positionToleranceConstraint tolerance in meters.
[in]angularToleranceConstraint tolerance in radians.
[in]maxStepSizeThe maximum step size used to guarantee that the integrator does not step out of joint limits.
[in]jointLimitPaddingIf less then this distance to joint limit, velocity is bounded in that direction to 0.

Member Function Documentation

◆ evaluateCartesianStatus()

VectorFieldPlannerStatus aikido::planner::vectorfield::MoveEndEffectorOffsetVectorField::evaluateCartesianStatus ( const Eigen::Isometry3d &  pose) const
overridevirtual

Evaluate current pose to determine the status of planning.

Parameters
[in]poseCurrent pose of body node.
Returns
Status of planner.

Implements aikido::planner::vectorfield::BodyNodePoseVectorField.

◆ evaluateCartesianVelocity()

bool aikido::planner::vectorfield::MoveEndEffectorOffsetVectorField::evaluateCartesianVelocity ( const Eigen::Isometry3d &  pose,
Eigen::Vector6d &  cartesianVelocity 
) const
overridevirtual

Evaluate Cartesian velocity by current pose of body node.

Parameters
[in]poseCurrent pose of body node.
[out]cartesianVelocityCartesian velocity defined in se(3).

Implements aikido::planner::vectorfield::BodyNodePoseVectorField.

Member Data Documentation

◆ mAngularTolerance

double aikido::planner::vectorfield::MoveEndEffectorOffsetVectorField::mAngularTolerance
protected

Tolerance of angular error.

◆ mDirection

Eigen::Vector3d aikido::planner::vectorfield::MoveEndEffectorOffsetVectorField::mDirection
protected

Movement direction.

◆ mMaxDistance

double aikido::planner::vectorfield::MoveEndEffectorOffsetVectorField::mMaxDistance
protected

Maximum distance allowed to move.

◆ mMinDistance

double aikido::planner::vectorfield::MoveEndEffectorOffsetVectorField::mMinDistance
protected

Minimum movement distance.

◆ mPositionTolerance

double aikido::planner::vectorfield::MoveEndEffectorOffsetVectorField::mPositionTolerance
protected

Tolerance of linear deviation error.

◆ mStartPose

Eigen::Isometry3d aikido::planner::vectorfield::MoveEndEffectorOffsetVectorField::mStartPose
protected

Start pose of the end-effector.