Robotics Library  0.7.0
Public Member Functions | Static Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | List of all members
rl::kin::Kinematics Class Reference

#include <Kinematics.h>

Inheritance diagram for rl::kin::Kinematics:
Inheritance graph
[legend]

Public Member Functions

 Kinematics ()
 
virtual ~Kinematics ()
 
bool areColliding (const ::std::size_t &i, const ::std::size_t &j) const
 See if specified bodies should be tested for collisions with each other. More...
 
virtual void clip (::rl::math::Vector &q) const
 Clip specified configuration to be within joint limits. More...
 
virtual Kinematicsclone () const
 
virtual ::rl::math::Real distance (const ::rl::math::Vector &q1, const ::rl::math::Vector &q2) const
 Calculate distance measure between specified configuration. More...
 
virtual const ::rl::math::TransformforwardPosition (const ::std::size_t &i=0) const
 Get forward position kinematics. More...
 
virtual void forwardForce (const ::rl::math::Vector &tau, ::rl::math::Vector &f) const
 Calculate forward force kinematics. More...
 
virtual void forwardVelocity (const ::rl::math::Vector &qdot, ::rl::math::Vector &xdot) const
 Calculate forward velocity kinematics. More...
 
::rl::math::Vector generatePositionGaussian (const ::rl::math::Vector &rand, const ::rl::math::Vector &mean, const ::rl::math::Vector &sigma) const
 
::rl::math::Vector generatePositionUniform (const ::rl::math::Vector &rand) const
 
::std::size_t getBodies () const
 Get number of links. More...
 
::std::size_t getDof () const
 Get number of degrees of freedom (DOF). More...
 
const ::rl::math::TransformgetFrame (const ::std::size_t &i) const
 Get link frame. More...
 
const ::rl::math::MatrixgetJacobian () const
 Get Jacobian. More...
 
const ::rl::math::MatrixgetJacobianInverse () const
 Get Jacobian-Inverse. More...
 
JointgetJoint (const ::std::size_t &i) const
 
::rl::math::Real getManipulabilityMeasure () const
 Get manipulability measure. More...
 
::std::string getManufacturer () const
 
::rl::math::Real getMaximum (const ::std::size_t &i) const
 
void getMaximum (::rl::math::Vector &max) const
 
::rl::math::Real getMinimum (const ::std::size_t &i) const
 
void getMinimum (::rl::math::Vector &min) const
 
::std::string getName () const
 
::std::size_t getOperationalDof () const
 Get number of end effectors. More...
 
void getPosition (::rl::math::Vector &q) const
 Get current joint position. More...
 
void getPositionUnits (::Eigen::Matrix< ::rl::math::Unit, ::Eigen::Dynamic, 1 > &units) const
 
void getSpeed (::rl::math::Vector &speed) const
 
void getSpeedUnits (::Eigen::Matrix< ::rl::math::Unit, ::Eigen::Dynamic, 1 > &units) const
 
virtual void interpolate (const ::rl::math::Vector &q1, const ::rl::math::Vector &q2, const ::rl::math::Real &alpha, ::rl::math::Vector &q) const
 
virtual void inverseForce (const ::rl::math::Vector &f, ::rl::math::Vector &tau) const
 Calculate inverse force kinematics. More...
 
virtual ::rl::math::Real inverseOfTransformedDistance (const ::rl::math::Real &d) const
 
virtual bool inversePosition (const ::rl::math::Transform &x, ::rl::math::Vector &q, const ::std::size_t &leaf=0, const ::rl::math::Real &delta=::std::numeric_limits< ::rl::math::Real >::infinity(), const ::rl::math::Real &epsilon=1.0e-3f, const ::std::size_t &iterations=1000)
 Calculate inverse position kinematics. More...
 
virtual void inverseVelocity (const ::rl::math::Vector &xdot, ::rl::math::Vector &qdot) const
 Calculate inverse velocity kinematics. More...
 
bool isColliding (const ::std::size_t &i) const
 See if specified body should be tested for collisions with the environment. More...
 
virtual bool isSingular () const
 Check if current configuration is singular. More...
 
virtual bool isValid (const ::rl::math::Vector &q) const
 Check if specified configuration is within joint limits. More...
 
virtual ::rl::math::Real maxDistanceToRectangle (const ::rl::math::Vector &q, const ::rl::math::Vector &min, const ::rl::math::Vector &max) const
 
virtual ::rl::math::Real minDistanceToRectangle (const ::rl::math::Vector &q, const ::rl::math::Vector &min, const ::rl::math::Vector &max) const
 
virtual ::rl::math::Real minDistanceToRectangle (const ::rl::math::Real &q, const ::rl::math::Real &min, const ::rl::math::Real &max, const ::std::size_t &cuttingDimension) const
 
virtual ::rl::math::Real newDistance (const ::rl::math::Real &dist, const ::rl::math::Real &oldOff, const ::rl::math::Real &newOff, const int &cuttingDimension) const
 
void setColliding (const ::std::size_t &i, const bool &doesCollide)
 Set if specified body should be tested for collisions with the environment. More...
 
void setColliding (const ::std::size_t &i, const ::std::size_t &j, const bool &doCollide)
 Set if specified bodies should be tested for collisions with each other. More...
 
void setPosition (const ::rl::math::Vector &q)
 Update current joint position. More...
 
virtual void step (const ::rl::math::Vector &q1, const ::rl::math::Vector &qdot, ::rl::math::Vector &q2) const
 
::rl::math::Transformtool (const ::std::size_t &i=0)
 
const ::rl::math::Transformtool (const ::std::size_t &i=0) const
 
virtual ::rl::math::Real transformedDistance (const ::rl::math::Real &d) const
 
virtual ::rl::math::Real transformedDistance (const ::rl::math::Vector &q1, const ::rl::math::Vector &q2) const
 
virtual ::rl::math::Real transformedDistance (const ::rl::math::Real &q1, const ::rl::math::Real &q2, const ::std::size_t &i) const
 
virtual void updateFrames ()
 Update frames. More...
 
virtual void updateJacobian ()
 Update Jacobian. More...
 
virtual void updateJacobianInverse (const ::rl::math::Real &lambda=0.0f, const bool &doSvd=true)
 Update Jacobian-Inverse. More...
 
::rl::math::Transformworld ()
 
const ::rl::math::Transformworld () const
 

Static Public Member Functions

static Kinematicscreate (const ::std::string &filename)
 

Protected Types

typedef ::boost::adjacency_list< ::boost::vecS, ::boost::vecS, ::boost::bidirectionalS, ::std::shared_ptr< Frame >, ::std::shared_ptr< Transform >, ::boost::no_property, ::boost::vecS > Tree
 
typedef ::boost::graph_traits< Tree >::edge_descriptor Edge
 
typedef ::boost::graph_traits< Tree >::edge_iterator EdgeIterator
 
typedef ::std::pair< EdgeIterator, EdgeIteratorEdgeIteratorPair
 
typedef ::boost::graph_traits< Tree >::in_edge_iterator InEdgeIterator
 
typedef ::std::pair< InEdgeIterator, InEdgeIteratorInEdgeIteratorPair
 
typedef ::boost::graph_traits< Tree >::out_edge_iterator OutEdgeIterator
 
typedef ::std::pair< OutEdgeIterator, OutEdgeIteratorOutEdgeIteratorPair
 
typedef ::boost::graph_traits< Tree >::vertex_descriptor Vertex
 
typedef ::boost::graph_traits< Tree >::vertex_iterator VertexIterator
 
typedef ::std::pair< VertexIterator, VertexIteratorVertexIteratorPair
 

Protected Member Functions

void update ()
 
void update (Vertex &u)
 

Protected Attributes

::std::vector< Element * > elements
 
::std::vector< Frame * > frames
 
::std::vector< Vertexleaves
 
::std::vector< Link * > links
 
::rl::math::Matrix jacobian
 
::rl::math::Matrix jacobianInverse
 
::std::vector< Joint * > joints
 
::std::string manufacturer
 
::std::string name
 
Vertex root
 
::std::vector< Edgetools
 
::std::vector< Transform * > transforms
 
Tree tree
 

Member Typedef Documentation

◆ Edge

typedef ::boost::graph_traits<Tree>::edge_descriptor rl::kin::Kinematics::Edge
protected

◆ EdgeIterator

typedef ::boost::graph_traits<Tree>::edge_iterator rl::kin::Kinematics::EdgeIterator
protected

◆ EdgeIteratorPair

◆ InEdgeIterator

typedef ::boost::graph_traits<Tree>::in_edge_iterator rl::kin::Kinematics::InEdgeIterator
protected

◆ InEdgeIteratorPair

◆ OutEdgeIterator

typedef ::boost::graph_traits<Tree>::out_edge_iterator rl::kin::Kinematics::OutEdgeIterator
protected

◆ OutEdgeIteratorPair

◆ Tree

typedef ::boost::adjacency_list< ::boost::vecS, ::boost::vecS, ::boost::bidirectionalS, ::std::shared_ptr<Frame>, ::std::shared_ptr<Transform>, ::boost::no_property, ::boost::vecS > rl::kin::Kinematics::Tree
protected

◆ Vertex

typedef ::boost::graph_traits<Tree>::vertex_descriptor rl::kin::Kinematics::Vertex
protected

◆ VertexIterator

typedef ::boost::graph_traits<Tree>::vertex_iterator rl::kin::Kinematics::VertexIterator
protected

◆ VertexIteratorPair

Constructor & Destructor Documentation

◆ Kinematics()

rl::kin::Kinematics::Kinematics ( )

◆ ~Kinematics()

rl::kin::Kinematics::~Kinematics ( )
virtual

Member Function Documentation

◆ areColliding()

bool rl::kin::Kinematics::areColliding ( const ::std::size_t &  i,
const ::std::size_t &  j 
) const

See if specified bodies should be tested for collisions with each other.

◆ clip()

void rl::kin::Kinematics::clip ( ::rl::math::Vector q) const
virtual

Clip specified configuration to be within joint limits.

Parameters
[out]q\(\vec{q}\)

◆ clone()

Kinematics * rl::kin::Kinematics::clone ( ) const
virtual

Reimplemented in rl::kin::Rhino, and rl::kin::Puma.

◆ create()

Kinematics * rl::kin::Kinematics::create ( const ::std::string &  filename)
static

◆ distance()

rl::math::Real rl::kin::Kinematics::distance ( const ::rl::math::Vector q1,
const ::rl::math::Vector q2 
) const

Calculate distance measure between specified configuration.

Parameters
[in]q1\(\vec{q}_{1}\)
[in]q2\(\vec{q}_{2}\)

◆ forwardForce()

void rl::kin::Kinematics::forwardForce ( const ::rl::math::Vector tau,
::rl::math::Vector f 
) const
virtual

Calculate forward force kinematics.

\[ \vec{F} = \matr{J}^{-\mathrm{T}} \vec{\tau} \]

Parameters
[in]tau\(\vec{\tau}\)
[out]f\(\vec{F}\)
Precondition
updateJacobian()
updateJacobianInverse()

◆ forwardPosition()

const ::rl::math::Transform & rl::kin::Kinematics::forwardPosition ( const ::std::size_t &  i = 0) const
virtual

Get forward position kinematics.

Parameters
[in]iEnd effector
Precondition
updateFrames()

◆ forwardVelocity()

void rl::kin::Kinematics::forwardVelocity ( const ::rl::math::Vector qdot,
::rl::math::Vector xdot 
) const
virtual

Calculate forward velocity kinematics.

\[ \dot{\vec{x}} = \matr{J} \dot{\vec{q}} \]

Parameters
[in]qdot\(\dot{\vec{q}}\)
[out]xdot\(\dot{\vec{x}}\)
Precondition
updateJacobian()

◆ generatePositionGaussian()

rl::math::Vector rl::kin::Kinematics::generatePositionGaussian ( const ::rl::math::Vector rand,
const ::rl::math::Vector mean,
const ::rl::math::Vector sigma 
) const

◆ generatePositionUniform()

rl::math::Vector rl::kin::Kinematics::generatePositionUniform ( const ::rl::math::Vector rand) const

◆ getBodies()

std::size_t rl::kin::Kinematics::getBodies ( ) const

Get number of links.

◆ getDof()

std::size_t rl::kin::Kinematics::getDof ( ) const

Get number of degrees of freedom (DOF).

◆ getFrame()

const ::rl::math::Transform & rl::kin::Kinematics::getFrame ( const ::std::size_t &  i) const

Get link frame.

Precondition
updateFrames()

◆ getJacobian()

const ::rl::math::Matrix & rl::kin::Kinematics::getJacobian ( ) const

Get Jacobian.

Precondition
updateJacobian()

◆ getJacobianInverse()

const ::rl::math::Matrix & rl::kin::Kinematics::getJacobianInverse ( ) const

Get Jacobian-Inverse.

Precondition
updateJacobianInverse()

◆ getJoint()

Joint * rl::kin::Kinematics::getJoint ( const ::std::size_t &  i) const

◆ getManipulabilityMeasure()

rl::math::Real rl::kin::Kinematics::getManipulabilityMeasure ( ) const

Get manipulability measure.

Precondition
updateJacobian()

◆ getManufacturer()

std::string rl::kin::Kinematics::getManufacturer ( ) const

◆ getMaximum() [1/2]

void rl::kin::Kinematics::getMaximum ( ::rl::math::Vector max) const

◆ getMaximum() [2/2]

rl::math::Real rl::kin::Kinematics::getMaximum ( const ::std::size_t &  i) const

◆ getMinimum() [1/2]

void rl::kin::Kinematics::getMinimum ( ::rl::math::Vector min) const

◆ getMinimum() [2/2]

rl::math::Real rl::kin::Kinematics::getMinimum ( const ::std::size_t &  i) const

◆ getName()

std::string rl::kin::Kinematics::getName ( ) const

◆ getOperationalDof()

std::size_t rl::kin::Kinematics::getOperationalDof ( ) const

Get number of end effectors.

◆ getPosition()

void rl::kin::Kinematics::getPosition ( ::rl::math::Vector q) const

Get current joint position.

Parameters
[out]q\(\vec{q}\)

◆ getPositionUnits()

void rl::kin::Kinematics::getPositionUnits ( ::Eigen::Matrix< ::rl::math::Unit, ::Eigen::Dynamic, 1 > &  units) const

◆ getSpeed()

void rl::kin::Kinematics::getSpeed ( ::rl::math::Vector speed) const

◆ getSpeedUnits()

void rl::kin::Kinematics::getSpeedUnits ( ::Eigen::Matrix< ::rl::math::Unit, ::Eigen::Dynamic, 1 > &  units) const

◆ interpolate()

void rl::kin::Kinematics::interpolate ( const ::rl::math::Vector q1,
const ::rl::math::Vector q2,
const ::rl::math::Real alpha,
::rl::math::Vector q 
) const
virtual

◆ inverseForce()

void rl::kin::Kinematics::inverseForce ( const ::rl::math::Vector f,
::rl::math::Vector tau 
) const
virtual

Calculate inverse force kinematics.

\[ \vec{\tau} = \matr{J}^{\mathrm{T}} \vec{F} \]

Parameters
[in]f\(\vec{F}\)
[out]tau\(\vec{\tau}\)
Precondition
updateJacobian()

◆ inverseOfTransformedDistance()

rl::math::Real rl::kin::Kinematics::inverseOfTransformedDistance ( const ::rl::math::Real d) const

◆ inversePosition()

bool rl::kin::Kinematics::inversePosition ( const ::rl::math::Transform x,
::rl::math::Vector q,
const ::std::size_t &  leaf = 0,
const ::rl::math::Real delta = ::std::numeric_limits< ::rl::math::Real>::infinity(),
const ::rl::math::Real epsilon = 1.0e-3f,
const ::std::size_t &  iterations = 1000 
)
virtual

Calculate inverse position kinematics.

Reimplemented in rl::kin::Rhino, and rl::kin::Puma.

◆ inverseVelocity()

void rl::kin::Kinematics::inverseVelocity ( const ::rl::math::Vector xdot,
::rl::math::Vector qdot 
) const
virtual

Calculate inverse velocity kinematics.

\[ \dot{\vec{q}} = \matr{J}^{\dagger} \dot{\vec{x}} \]

Parameters
[in]xdot\(\dot{\vec{x}}\)
[out]qdot\(\dot{\vec{q}}\)
Precondition
updateJacobianInverse()

◆ isColliding()

bool rl::kin::Kinematics::isColliding ( const ::std::size_t &  i) const

See if specified body should be tested for collisions with the environment.

◆ isSingular()

bool rl::kin::Kinematics::isSingular ( ) const
virtual

Check if current configuration is singular.

Reimplemented in rl::kin::Puma.

◆ isValid()

bool rl::kin::Kinematics::isValid ( const ::rl::math::Vector q) const
virtual

Check if specified configuration is within joint limits.

Parameters
[in]q\(\vec{q}\)

◆ maxDistanceToRectangle()

rl::math::Real rl::kin::Kinematics::maxDistanceToRectangle ( const ::rl::math::Vector q,
const ::rl::math::Vector min,
const ::rl::math::Vector max 
) const

◆ minDistanceToRectangle() [1/2]

rl::math::Real rl::kin::Kinematics::minDistanceToRectangle ( const ::rl::math::Real q,
const ::rl::math::Real min,
const ::rl::math::Real max,
const ::std::size_t &  cuttingDimension 
) const

◆ minDistanceToRectangle() [2/2]

rl::math::Real rl::kin::Kinematics::minDistanceToRectangle ( const ::rl::math::Vector q,
const ::rl::math::Vector min,
const ::rl::math::Vector max 
) const

◆ newDistance()

rl::math::Real rl::kin::Kinematics::newDistance ( const ::rl::math::Real dist,
const ::rl::math::Real oldOff,
const ::rl::math::Real newOff,
const int &  cuttingDimension 
) const

◆ setColliding() [1/2]

void rl::kin::Kinematics::setColliding ( const ::std::size_t &  i,
const ::std::size_t &  j,
const bool &  doCollide 
)

Set if specified bodies should be tested for collisions with each other.

◆ setColliding() [2/2]

void rl::kin::Kinematics::setColliding ( const ::std::size_t &  i,
const bool &  doesCollide 
)

Set if specified body should be tested for collisions with the environment.

◆ setPosition()

void rl::kin::Kinematics::setPosition ( const ::rl::math::Vector q)

Update current joint position.

Parameters
[in]q\(\vec{q}\)

◆ step()

void rl::kin::Kinematics::step ( const ::rl::math::Vector q1,
const ::rl::math::Vector qdot,
::rl::math::Vector q2 
) const
virtual

◆ tool() [1/2]

rl::math::Transform & rl::kin::Kinematics::tool ( const ::std::size_t &  i = 0)

◆ tool() [2/2]

const ::rl::math::Transform & rl::kin::Kinematics::tool ( const ::std::size_t &  i = 0) const

◆ transformedDistance() [1/3]

rl::math::Real rl::kin::Kinematics::transformedDistance ( const ::rl::math::Real d) const

◆ transformedDistance() [2/3]

rl::math::Real rl::kin::Kinematics::transformedDistance ( const ::rl::math::Real q1,
const ::rl::math::Real q2,
const ::std::size_t &  i 
) const

◆ transformedDistance() [3/3]

rl::math::Real rl::kin::Kinematics::transformedDistance ( const ::rl::math::Vector q1,
const ::rl::math::Vector q2 
) const

◆ update() [1/2]

void rl::kin::Kinematics::update ( )
protected

◆ update() [2/2]

void rl::kin::Kinematics::update ( Vertex u)
protected

◆ updateFrames()

void rl::kin::Kinematics::updateFrames ( )
virtual

Update frames.

\[ {_{0}^{n}\matr{T}} = {_{0}^{1}\matr{T}} \, {_{0}^{1}\matr{T}} \, \ldots \, {_{n-1}^{n}\matr{T}} \]

Precondition
setPosition()

◆ updateJacobian()

void rl::kin::Kinematics::updateJacobian ( )
virtual

Update Jacobian.

\[ {^{0}\matr{J}} = \begin{pmatrix} {^{0}\matr{J}_{1}} & {^{0}\matr{J}_{2}} & \cdots & {^{0}\matr{J}_{n}} \end{pmatrix} \]

Precondition
updateFrames()

◆ updateJacobianInverse()

void rl::kin::Kinematics::updateJacobianInverse ( const ::rl::math::Real lambda = 0.0f,
const bool &  doSvd = true 
)
virtual

Update Jacobian-Inverse.

\[ \matr{J}^{\dagger}(\vec{q}) = \sum_{i = 1}^{r} \frac{ \sigma_{i} }{ \sigma_{i}^{2} + \lambda^{2} } \, \vec{v}_{i} \, \vec{u}_{i}^{\mathrm{T}} \]

\[ \matr{J}^{\dagger}(\vec{q}) = \matr{J}^{\mathrm{T}}(\vec{q}) \, \bigl( \matr{J}(\vec{q}) \, \matr{J}^{\mathrm{T}}(\vec{q}) + \lambda^{2} \, \matr{1} \bigr)^{-1} \]

Parameters
[in]lambdaDamping factor \(\lambda\)
[in]doSvdUse singular value decomposition or damped least squares
Precondition
updateJacobian()

◆ world() [1/2]

rl::math::Transform & rl::kin::Kinematics::world ( )

◆ world() [2/2]

const ::rl::math::Transform & rl::kin::Kinematics::world ( ) const

Member Data Documentation

◆ elements

::std::vector<Element*> rl::kin::Kinematics::elements
protected

◆ frames

::std::vector<Frame*> rl::kin::Kinematics::frames
protected

◆ jacobian

::rl::math::Matrix rl::kin::Kinematics::jacobian
protected

◆ jacobianInverse

::rl::math::Matrix rl::kin::Kinematics::jacobianInverse
protected

◆ joints

::std::vector<Joint*> rl::kin::Kinematics::joints
protected

◆ leaves

::std::vector<Vertex> rl::kin::Kinematics::leaves
protected

◆ links

::std::vector<Link*> rl::kin::Kinematics::links
protected

◆ manufacturer

::std::string rl::kin::Kinematics::manufacturer
protected

◆ name

::std::string rl::kin::Kinematics::name
protected

◆ root

Vertex rl::kin::Kinematics::root
protected

◆ tools

::std::vector<Edge> rl::kin::Kinematics::tools
protected

◆ transforms

::std::vector<Transform*> rl::kin::Kinematics::transforms
protected

◆ tree

Tree rl::kin::Kinematics::tree
protected

The documentation for this class was generated from the following files: