Aikido
|
TSRs describe end-effector constraint sets as subsets of SE(3). More...
#include <aikido/constraint/dart/TSR.hpp>
Public Member Functions | |
TSR (std::unique_ptr< common::RNG > _rng, const Eigen::Isometry3d &_T0_w=Eigen::Isometry3d::Identity(), const Eigen::Matrix< double, 6, 2 > &_Bw=Eigen::Matrix< double, 6, 2 >::Zero(), const Eigen::Isometry3d &_Tw_e=Eigen::Isometry3d::Identity(), double _testableTolerance=1e-6) | |
Constructor. More... | |
TSR (const Eigen::Isometry3d &_T0_w=Eigen::Isometry3d::Identity(), const Eigen::Matrix< double, 6, 2 > &_Bw=Eigen::Matrix< double, 6, 2 >::Zero(), const Eigen::Isometry3d &_Tw_e=Eigen::Isometry3d::Identity(), double _testableTolerance=1e-6) | |
Constructor with default random seed generator. More... | |
TSR (const TSR &other) | |
TSR (TSR &&other) | |
TSR & | operator= (const TSR &other) |
TSR & | operator= (TSR &&other) |
virtual | ~TSR ()=default |
statespace::ConstStateSpacePtr | getStateSpace () const override |
Gets the StateSpace that this constraint operates on. More... | |
std::shared_ptr< statespace::SE3 > | getSE3 () const |
Returns the SE3 which this TSR operates in. More... | |
std::unique_ptr< SampleGenerator > | createSampleGenerator () const override |
Creates a SampleGenerator for sampling from this constraint. More... | |
bool | isSatisfied (const statespace::StateSpace::State *_s, TestableOutcome *outcome=nullptr) const override |
Returns true if state satisfies this constraint. More... | |
std::unique_ptr< TestableOutcome > | createOutcome () const override |
Return an instance of DefaultTestableOutcome, since this class doesn't have a more specialized TestableOutcome derivative assigned to it. More... | |
void | validate () const |
Throws an invalid_argument exception if this TSR is invalid. More... | |
void | setRNG (std::unique_ptr< common::RNG > rng) |
Set the random number generator used by SampleGenerators for this TSR. More... | |
std::size_t | getConstraintDimension () const override |
Size of constraints. More... | |
void | getValue (const statespace::StateSpace::State *_s, Eigen::VectorXd &_out) const override |
Get the value of constraints at _s. More... | |
void | getJacobian (const statespace::StateSpace::State *_s, Eigen::MatrixXd &_out) const override |
Jacobian of TSR with respect to the se(3) tangent vector of _s. More... | |
std::vector< ConstraintType > | getConstraintTypes () const override |
Returns a vector of constraints' types, i-th element correspoinding to the type of i-th constraint. More... | |
bool | project (const statespace::StateSpace::State *_s, statespace::StateSpace::State *_out) const override |
Projection _s to _out. More... | |
double | getTestableTolerance () |
Get the testable tolerance used in isSatisfiable. More... | |
void | setTestableTolerance (double _testableTolerance) |
Set the testable tolerance used in isSatisfiable. More... | |
virtual void | getValueAndJacobian (const statespace::StateSpace::State *_s, Eigen::VectorXd &_val, Eigen::MatrixXd &_jac) const |
Get both Value and Jacobian. More... | |
![]() | |
virtual | ~Sampleable ()=default |
![]() | |
virtual | ~Differentiable ()=default |
Destructor. More... | |
virtual void | getValueAndJacobian (const statespace::StateSpace::State *_s, Eigen::VectorXd &_val, Eigen::MatrixXd &_jac) const |
Get both Value and Jacobian. More... | |
![]() | |
virtual | ~Testable ()=default |
![]() | |
virtual | ~Projectable ()=default |
virtual bool | project (statespace::StateSpace::State *_s) const |
Performs an in-place projection. More... | |
Public Attributes | |
Eigen::Isometry3d | mT0_w |
Transformation from origin frame into the TSR frame "w". More... | |
Eigen::Matrix< double, 6, 2 > | mBw |
Bounds on "wiggling" in x, y, z, roll, pitch, yaw . More... | |
Eigen::Isometry3d | mTw_e |
Transformation from "w" frame into end frame. More... | |
Private Attributes | |
double | mTestableTolerance |
Tolerance used in isSatisfied as a testable. More... | |
std::unique_ptr< common::RNG > | mRng |
std::shared_ptr< statespace::SE3 > | mStateSpace |
TSRs describe end-effector constraint sets as subsets of SE(3).
A TSR consists of three parts: T0_w: transform from the origin to the TSR frame w B_w: 6 × 2 matrix of bounds in the coordinates of w. Tw_e: end-effector offset transform in the coordinates of w See: Berenson, Dmitry, Siddhartha S. Srinivasa, and James Kuffner. "Task space regions: A framework for pose-constrained manipulation planning." IJRR 2001: http://repository.cmu.edu/cgi/viewcontent.cgi?article=2024&context=robotics
aikido::constraint::dart::TSR::TSR | ( | std::unique_ptr< common::RNG > | _rng, |
const Eigen::Isometry3d & | _T0_w = Eigen::Isometry3d::Identity() , |
||
const Eigen::Matrix< double, 6, 2 > & | _Bw = Eigen::Matrix< double, 6, 2 >::Zero() , |
||
const Eigen::Isometry3d & | _Tw_e = Eigen::Isometry3d::Identity() , |
||
double | _testableTolerance = 1e-6 |
||
) |
Constructor.
_rng | Random number generator used by SampleGenerators for this TSR. |
_T0_w | transform from the origin to the TSR frame w |
_Bw | 6 × 2 matrix of bounds in the coordinates of w. Top three rows bound translation, and bottom three rows bound rotation following Roll-Pitch-Yaw convention. _Bw(i, 0) should be less than or equal to _Bw(i, 1). |
_Tw_e | end-effector offset transform in the coordinates of w |
_testableTolerance | tolerance used in isSatisfiable as testable |
aikido::constraint::dart::TSR::TSR | ( | const Eigen::Isometry3d & | _T0_w = Eigen::Isometry3d::Identity() , |
const Eigen::Matrix< double, 6, 2 > & | _Bw = Eigen::Matrix< double, 6, 2 >::Zero() , |
||
const Eigen::Isometry3d & | _Tw_e = Eigen::Isometry3d::Identity() , |
||
double | _testableTolerance = 1e-6 |
||
) |
Constructor with default random seed generator.
_T0_w | transform from the origin to the TSR frame w |
_Bw | 6 × 2 matrix of bounds in the coordinates of w. Top three rows bound translation, and bottom three rows bound rotation following Roll-Pitch-Yaw convention. _Bw(i, 0) should be less than or equal to _Bw(i, 1). |
_Tw_e | end-effector offset transform in the coordinates of w |
_testableTolerance | tolerance used in isSatisfiable as testable |
aikido::constraint::dart::TSR::TSR | ( | const TSR & | other | ) |
aikido::constraint::dart::TSR::TSR | ( | TSR && | other | ) |
|
virtualdefault |
|
overridevirtual |
Return an instance of DefaultTestableOutcome, since this class doesn't have a more specialized TestableOutcome derivative assigned to it.
Implements aikido::constraint::Testable.
|
overridevirtual |
Creates a SampleGenerator for sampling from this constraint.
Implements aikido::constraint::Sampleable.
|
overridevirtual |
Size of constraints.
Implements aikido::constraint::Differentiable.
|
overridevirtual |
Returns a vector of constraints' types, i-th element correspoinding to the type of i-th constraint.
Implements aikido::constraint::Differentiable.
|
overridevirtual |
Jacobian of TSR with respect to the se(3) tangent vector of _s.
The jacobian is w.r.t. the origin frame. se(3) tangent vector follows dart convention: top 3 rows is the angle-axis representation of _s's rotation. bottom 3 rows represent the translation.
_s | State to be evaluated at. | |
[out] | _out | Jacobian, 6 x 6 matrix. |
Implements aikido::constraint::Differentiable.
std::shared_ptr<statespace::SE3> aikido::constraint::dart::TSR::getSE3 | ( | ) | const |
Returns the SE3 which this TSR operates in.
|
overridevirtual |
Gets the StateSpace that this constraint operates on.
Implements aikido::constraint::Differentiable.
double aikido::constraint::dart::TSR::getTestableTolerance | ( | ) |
Get the testable tolerance used in isSatisfiable.
|
overridevirtual |
Get the value of constraints at _s.
Should be 0 to satisfy equality constraints. Should be <=0 to satisfy inequality constraints.
_s | State to be evaluated at. | |
[out] | _out | Vector to store the value. Length should match the number of constraints. |
Implements aikido::constraint::Differentiable.
virtual void aikido::constraint::Differentiable::getValueAndJacobian |
Get both Value and Jacobian.
_s | State to be evaluated. | |
[out] | _val | Value of constraints. |
[out] | _jac | Jacoiban of constraints. |
|
overridevirtual |
Returns true if state satisfies this constraint.
[in] | _state | given state to test. |
[in] | outcome | pointer to TestableOutcome derivative instance that method will populate with useful information. Each derivative class of Testable may expect outcome to be a different derivative class of TestableOutcome (this casting and population is done under the hood). If this argument is missing, it is ignored. |
Implements aikido::constraint::Testable.
|
overridevirtual |
Projection _s to _out.
Returns false if projection cannot be done.
_s | state to be projected. |
_out | resulting projection. |
Implements aikido::constraint::Projectable.
void aikido::constraint::dart::TSR::setRNG | ( | std::unique_ptr< common::RNG > | rng | ) |
Set the random number generator used by SampleGenerators for this TSR.
void aikido::constraint::dart::TSR::setTestableTolerance | ( | double | _testableTolerance | ) |
Set the testable tolerance used in isSatisfiable.
_testableTolerance | Testable tolerance to set. |
void aikido::constraint::dart::TSR::validate | ( | ) | const |
Eigen::Matrix<double, 6, 2> aikido::constraint::dart::TSR::mBw |
Bounds on "wiggling" in x, y, z, roll, pitch, yaw
.
|
private |
|
private |
Eigen::Isometry3d aikido::constraint::dart::TSR::mT0_w |
Transformation from origin frame into the TSR frame "w".
"w" is usually centered at the origin of an object held by the hand or at a location on an object that is useful for grasping.
|
private |
Tolerance used in isSatisfied as a testable.
Eigen::Isometry3d aikido::constraint::dart::TSR::mTw_e |
Transformation from "w" frame into end frame.
This often represent an offset from "w" to the origin of the end-effector.