Robotics Library  0.6.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Public Types | 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]
Collaboration diagram for rl::kin::Kinematics:
Collaboration graph
[legend]

Public Types

enum  Type { TYPE_PRISMATIC, TYPE_REVOLUTE }

Public Member Functions

 Kinematics ()
virtual ~Kinematics ()
bool areColliding (const ::std::size_t &i, const ::std::size_t &j) const
virtual void clip (::rl::math::Vector &q) const
virtual Kinematicsclone () const
virtual ::rl::math::Real distance (const ::rl::math::Vector &q1, const ::rl::math::Vector &q2) const
virtual const
::rl::math::Transform
forwardPosition (const ::std::size_t &i=0) const
virtual void forwardForce (const ::rl::math::Vector &tau,::rl::math::Vector &f) const
virtual void forwardVelocity (const ::rl::math::Vector &qdot,::rl::math::Vector &xdot) const
::std::size_t getBodies () const
::std::size_t getDof () const
const ::rl::math::TransformgetFrame (const ::std::size_t &i) const
const ::rl::math::MatrixgetJacobian () const
const ::rl::math::MatrixgetJacobianInverse () const
::rl::math::Real getManipulabilityMeasure () const
::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
void getPosition (::rl::math::Vector &q) const
::rl::math::Real getSpeed (const ::std::size_t &i) const
void getSpeed (::rl::math::Vector &speed) const
Type getType (const ::std::size_t &i)
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
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 &iterations=1000)
virtual void inverseVelocity (const ::rl::math::Vector &xdot,::rl::math::Vector &qdot) const
bool isColliding (const ::std::size_t &i) const
virtual bool isSingular () const
virtual bool isValid (const ::rl::math::Vector &q) const
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)
void setColliding (const ::std::size_t &i, const ::std::size_t &j, const bool &doCollide)
void setPosition (const ::rl::math::Vector &q)
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 void updateFrames ()
virtual void updateJacobian ()
virtual void updateJacobianInverse (const ::rl::math::Real &lambda=0.0f, const bool &doSvd=true)
::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,::boost::shared_ptr
< Frame >,::boost::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, EdgeIterator
EdgeIteratorPair
typedef ::boost::graph_traits
< Tree >::in_edge_iterator 
InEdgeIterator
typedef ::std::pair
< InEdgeIterator,
InEdgeIterator
InEdgeIteratorPair
typedef ::boost::graph_traits
< Tree >::out_edge_iterator 
OutEdgeIterator
typedef ::std::pair
< OutEdgeIterator,
OutEdgeIterator
OutEdgeIteratorPair
typedef ::boost::graph_traits
< Tree >::vertex_descriptor 
Vertex
typedef ::boost::graph_traits
< Tree >::vertex_iterator 
VertexIterator
typedef ::std::pair
< VertexIterator,
VertexIterator
VertexIteratorPair

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

typedef ::boost::graph_traits< Tree >::edge_descriptor rl::kin::Kinematics::Edge
protected
typedef ::boost::graph_traits< Tree >::edge_iterator rl::kin::Kinematics::EdgeIterator
protected
typedef ::boost::graph_traits< Tree >::in_edge_iterator rl::kin::Kinematics::InEdgeIterator
protected
typedef ::boost::graph_traits< Tree >::out_edge_iterator rl::kin::Kinematics::OutEdgeIterator
protected
typedef ::boost::adjacency_list< ::boost::vecS, ::boost::vecS, ::boost::bidirectionalS, ::boost::shared_ptr< Frame >, ::boost::shared_ptr< Transform >, ::boost::no_property, ::boost::vecS > rl::kin::Kinematics::Tree
protected
typedef ::boost::graph_traits< Tree >::vertex_descriptor rl::kin::Kinematics::Vertex
protected
typedef ::boost::graph_traits< Tree >::vertex_iterator rl::kin::Kinematics::VertexIterator
protected

Member Enumeration Documentation

Enumerator:
TYPE_PRISMATIC 
TYPE_REVOLUTE 

Constructor & Destructor Documentation

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

Member Function Documentation

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.

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

Clip specified configuration to be within joint limits.

Parameters
q$ q $
Kinematics * rl::kin::Kinematics::clone ( ) const
virtual

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

Kinematics * rl::kin::Kinematics::create ( const ::std::string &  filename)
static
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
q1$ q_{1} $
q2$ q_{2} $
void rl::kin::Kinematics::forwardForce ( const ::rl::math::Vector tau,
::rl::math::Vector f 
) const
virtual

Calculate forward force kinematics.

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

Parameters
tau$ \tau $
f$ F $
Precondition
updateJacobian()
updateJacobianInverse()
const ::rl::math::Transform & rl::kin::Kinematics::forwardPosition ( const ::std::size_t &  i = 0) const
virtual

Get forward position kinematics.

Parameters
iend effector
Precondition
updateFrames()
void rl::kin::Kinematics::forwardVelocity ( const ::rl::math::Vector qdot,
::rl::math::Vector xdot 
) const
virtual

Calculate forward velocity kinematics.

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

Parameters
qdot$ \dot{q} $
xdot$ \dot{x} $
Precondition
updateJacobian()
std::size_t rl::kin::Kinematics::getBodies ( ) const

Get number of links.

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

Get number of degrees of freedom (DOF).

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

Get link frame.

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

Get Jacobian.

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

Get Jacobian-Inverse.

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

Get manipulability measure.

Precondition
updateJacobian()
std::string rl::kin::Kinematics::getManufacturer ( ) const
rl::math::Real rl::kin::Kinematics::getMaximum ( const ::std::size_t &  i) const
void rl::kin::Kinematics::getMaximum ( ::rl::math::Vector max) const
rl::math::Real rl::kin::Kinematics::getMinimum ( const ::std::size_t &  i) const
void rl::kin::Kinematics::getMinimum ( ::rl::math::Vector min) const
std::string rl::kin::Kinematics::getName ( ) const
std::size_t rl::kin::Kinematics::getOperationalDof ( ) const

Get number of end effectors.

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

Get current joint position.

Parameters
q$ q $
rl::math::Real rl::kin::Kinematics::getSpeed ( const ::std::size_t &  i) const
void rl::kin::Kinematics::getSpeed ( ::rl::math::Vector speed) const
Kinematics::Type rl::kin::Kinematics::getType ( const ::std::size_t &  i)
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
void rl::kin::Kinematics::inverseForce ( const ::rl::math::Vector f,
::rl::math::Vector tau 
) const
virtual

Calculate inverse force kinematics.

\[ \tau = J^{T} F \]

Parameters
f$ F $
tau$ \tau $
Precondition
updateJacobian()
rl::math::Real rl::kin::Kinematics::inverseOfTransformedDistance ( const ::rl::math::Real d) const
bool rl::kin::Kinematics::inversePosition ( const ::rl::math::Transform x,
::rl::math::Vector q,
const ::std::size_t &  iterations = 1000 
)
virtual

Calculate inverse position kinematics.

Parameters
xcartesian position
qjoint configuration (initial guess and result)
Side Effects:
setPosition()

updateFrames()

updateJacobian()

updateJacobianInverse()

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

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

Calculate inverse velocity kinematics.

\[ \dot{q} = J^{\dag} \dot{x} \]

Parameters
xdot$ \dot{x} $
qdot$ \dot{q} $
Precondition
updateJacobianInverse()
bool rl::kin::Kinematics::isColliding ( const ::std::size_t &  i) const

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

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

Check if current configuration is singular.

Reimplemented in rl::kin::Puma.

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

Check if specified configuration is within joint limits.

Parameters
q$ q $
rl::math::Real rl::kin::Kinematics::maxDistanceToRectangle ( const ::rl::math::Vector q,
const ::rl::math::Vector min,
const ::rl::math::Vector max 
) const
rl::math::Real rl::kin::Kinematics::minDistanceToRectangle ( const ::rl::math::Vector q,
const ::rl::math::Vector min,
const ::rl::math::Vector max 
) const
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
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
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.

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.

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

Update current joint position.

Parameters
q$ q $
void rl::kin::Kinematics::step ( const ::rl::math::Vector q1,
const ::rl::math::Vector qdot,
::rl::math::Vector q2 
) const
virtual
rl::math::Transform & rl::kin::Kinematics::tool ( const ::std::size_t &  i = 0)
const ::rl::math::Transform & rl::kin::Kinematics::tool ( const ::std::size_t &  i = 0) const
rl::math::Real rl::kin::Kinematics::transformedDistance ( const ::rl::math::Real d) const
rl::math::Real rl::kin::Kinematics::transformedDistance ( const ::rl::math::Vector q1,
const ::rl::math::Vector q2 
) const
void rl::kin::Kinematics::update ( )
protected
void rl::kin::Kinematics::update ( Vertex u)
protected
void rl::kin::Kinematics::updateFrames ( )
virtual

Update frames.

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

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

Update Jacobian.

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

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

Update Jacobian-Inverse.

Singular value decomposition:

\[ J^{\dag} = \sum_{i = 1}^{r} \frac{ \sigma_{i} }{ \sigma_{i}^{2} + \lambda^{2} } v_{i} u_{i}^{T} \]

Damped least squares:

\[ J^{\dag} = J^{T} \left( J J^{T} + \lambda^{2} I \right)^{-1} \]

Parameters
lambdadamping factor
svdsingular value decomposition
Precondition
updateJacobian()
rl::math::Transform & rl::kin::Kinematics::world ( )
const ::rl::math::Transform & rl::kin::Kinematics::world ( ) const

Member Data Documentation

::std::vector< Element* > rl::kin::Kinematics::elements
protected
::std::vector< Frame* > rl::kin::Kinematics::frames
protected
::rl::math::Matrix rl::kin::Kinematics::jacobian
protected
::rl::math::Matrix rl::kin::Kinematics::jacobianInverse
protected
::std::vector< Joint* > rl::kin::Kinematics::joints
protected
::std::vector< Vertex > rl::kin::Kinematics::leaves
protected
::std::vector< Link* > rl::kin::Kinematics::links
protected
::std::string rl::kin::Kinematics::manufacturer
protected
::std::string rl::kin::Kinematics::name
protected
Vertex rl::kin::Kinematics::root
protected
::std::vector< Edge > rl::kin::Kinematics::tools
protected
::std::vector< Transform* > rl::kin::Kinematics::transforms
protected
Tree rl::kin::Kinematics::tree
protected

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