RobWorkProject  23.9.11-
Public Member Functions | List of all members
SE3Device Class Reference

A Cartesian 6-Dof device. More...

#include <SE3Device.hpp>

Inherits Device.

Public Member Functions

 SE3Device (const std::string &name, rw::core::Ptr< rw::kinematics::Frame > base, rw::kinematics::MovableFrame *mframe)
 Constructor. More...
 
void setQ (const rw::math::Q &q, rw::kinematics::State &state) const
 Sets configuration vector \( \mathbf{q} \in \mathbb{R}^n \). More...
 
rw::math::Q getQ (const rw::kinematics::State &state) const
 Gets configuration vector \( \mathbf{q}\in \mathbb{R}^n \). More...
 
std::pair< rw::math::Q, rw::math::QgetBounds () const
 Returns the upper \( \mathbf{q}_{min} \in \mathbb{R}^n \) and lower \( \mathbf{q}_{max} \in \mathbb{R}^n \) bounds of the joint space. More...
 
rw::kinematics::FramegetBase ()
 get base of the device More...
 
const rw::kinematics::FramegetBase () const
 get base of the device More...
 
rw::kinematics::FramegetEnd ()
 get end of the device More...
 
const rw::kinematics::FramegetEnd () const
 get end of the device More...
 
rw::math::Jacobian baseJend (const rw::kinematics::State &state) const
 Calculates the jacobian matrix of the end-effector described in the robot base frame \( ^b_e\mathbf{J}_{\mathbf{q}}(\mathbf{q}) \). More...
 
rw::core::Ptr< rw::models::JacobianCalculatorbaseJCframes (const std::vector< rw::kinematics::Frame * > &frames, const rw::kinematics::State &state) const
 DeviceJacobian for a sequence of frames.
 
size_t getDOF () const
 Returns number of active joints. More...
 
virtual void setBounds (const QBox &bounds)
 set outer bound of the device More...
 
virtual rw::math::Q getVelocityLimits () const
 get the Joint velocity limit More...
 
virtual void setVelocityLimits (const rw::math::Q &vellimits)
 set the Joint velocity limit More...
 
rw::math::Q getAccelerationLimits () const
 get the Joint Acceleration limit More...
 
void setAccelerationLimits (const rw::math::Q &acclimits)
 set the Joint Acceleration limit More...
 
- Public Member Functions inherited from Device
 Device (const std::string &name)
 
virtual ~Device ()
 Virtual destructor.
 
const std::string & getName () const
 Returns the name of the device. More...
 
void setName (const std::string &name)
 Sets the name of the Device. More...
 
rw::math::Transform3D< double > baseTframe (rw::core::Ptr< const rw::kinematics::Frame > f, const rw::kinematics::State &state) const
 Calculates the homogeneous transform from base to a frame f \( \robabx{b}{f}{\mathbf{T}} \). More...
 
rw::math::Transform3D< double > baseTend (const rw::kinematics::State &state) const
 Calculates the homogeneous transform from base to the end frame \( \robabx{base}{end}{\mathbf{T}} \). More...
 
rw::math::Transform3D< double > worldTbase (const rw::kinematics::State &state) const
 Calculates the homogeneous transform from world to base \( \robabx{w}{b}{\mathbf{T}} \). More...
 
virtual rw::math::Jacobian baseJframe (rw::core::Ptr< const rw::kinematics::Frame > frame, const rw::kinematics::State &state) const
 Calculates the jacobian matrix of a frame f described in the robot base frame \( ^{base}_{frame}\mathbf{J}_{\mathbf{q}}(\mathbf{q}) \). More...
 
virtual rw::math::Jacobian baseJframes (const std::vector< rw::kinematics::Frame * > &frames, const rw::kinematics::State &state) const
 The Jacobian for a sequence of frames. More...
 
virtual rw::core::Ptr< rw::models::JacobianCalculatorbaseJCend (const rw::kinematics::State &state) const
 DeviceJacobian for the end frame. More...
 
virtual rw::core::Ptr< rw::models::JacobianCalculatorbaseJCframe (rw::core::Ptr< const rw::kinematics::Frame > frame, const rw::kinematics::State &state) const
 DeviceJacobian for a particular frame. More...
 
const rw::core::PropertyMapgetPropertyMap () const
 Miscellaneous properties of the device. More...
 
rw::core::PropertyMapgetPropertyMap ()
 Miscellaneous properties of the device. More...
 
- Public Member Functions inherited from Stateless
virtual ~Stateless ()
 destructor
 
virtual void registerIn (State &state)
 initialize this stateless data to a specific state More...
 
virtual void registerIn (StateStructure::Ptr state)
 register this stateless object in a statestructure.
 
virtual void unregister ()
 unregisters all state data of this stateless object
 
StateStructure::Ptr getStateStructure ()
 Get the state structure. More...
 
const StateStructure::Ptr getStateStructure () const
 Get the state structure. More...
 
bool isRegistered ()
 Check if object has registered its state. More...
 

Additional Inherited Members

- Public Types inherited from Device
typedef rw::core::Ptr< DevicePtr
 smart pointer type to this class
 
typedef rw::core::Ptr< const DeviceCPtr
 const smart pointer type to this class
 
typedef std::pair< rw::math::Q, rw::math::QQBox
 Lower and upper corner of a box shaped configuration space.
 
- Public Types inherited from Stateless
typedef rw::core::Ptr< StatelessPtr
 Smart pointer type for Stateless.
 
- Protected Member Functions inherited from Stateless
 Stateless ()
 constructor
 
template<class T >
void add (StatelessData< T > &data)
 implementations of sensor should add all their stateless data on initialization
 
void add (StateData *data)
 Add data. More...
 
void add (rw::core::Ptr< StateData > data)
 implementations of sensor should add all their state data on initialization
 
- Protected Attributes inherited from Stateless
bool _registered
 True if object has registered its state.
 
std::vector< rw::core::Ptr< StateData > > _datas
 Data.
 
StateStructure::Ptr _stateStruct
 The state structure.
 

Detailed Description

A Cartesian 6-Dof device.

The SE3Device is a 6-dof device with 6 independent inputs that enables the device to place its end-effector anywhere in the workspace.

The \( \mathbf{q}\in \mathbb{R}^6 \) input vector maps directly to the end-effector pose \( \robabx{b}{e}{\mathbf{x}} \), thus:

\[ \robabx{b}{e}{\mathbf{x}} = \left[ \begin{array}{c} x\\ y\\ z\\ \theta k_x\\ \theta k_y\\ \theta k_z \end{array} \right] = \left[ \begin{array}{c} q_1\\ q_2\\ q_3\\ q_4\\ q_5\\ q_6 \end{array} \right] = \mathbf{q} \]

It is easily seen that the jacobian \( {^b_6}\mathbf{J}_{\mathbf{q}}(\mathbf{q}) = \frac{\partial ^b\mathbf{x}_6}{\partial \mathbf{q}} \) equals the \( 6\times 6 \) identity matrix \( \mathbf{I}^{6\times 6} \)

The device can be seen as a "perfect" robot, it has no singularities anywhere in the task space, no kinematic or dynamic limits (it can instantaneous move anywhere at any time). The device is interesting in simulations where performance and stability of closed-loop control systems (for instance visual-servoing systems) must be evaluated - if a closed-loop control system does not perform well with a "perfect" robot it will probably not perform well with a real robot either.

Constructor & Destructor Documentation

◆ SE3Device()

SE3Device ( const std::string &  name,
rw::core::Ptr< rw::kinematics::Frame base,
rw::kinematics::MovableFrame mframe 
)

Constructor.

Parameters
name[in] device name
basedocumentation missing !
mframedocumentation missing !

Member Function Documentation

◆ baseJend()

rw::math::Jacobian baseJend ( const rw::kinematics::State state) const
virtual

Calculates the jacobian matrix of the end-effector described in the robot base frame \( ^b_e\mathbf{J}_{\mathbf{q}}(\mathbf{q}) \).

Returns
the \( 6*ndof \) jacobian matrix: \( {^b_e}\mathbf{J}_{\mathbf{q}}(\mathbf{q}) \)

Where:

\[ {^b_n}\mathbf{J}_{\mathbf{q}}(\mathbf{q}) = \mathbf{I}^{6\times 6} = \left[ \begin{array}{cccccc} 1 & 0 & 0 & 0 & 0 & 0\\ 0 & 1 & 0 & 0 & 0 & 0\\ 0 & 0 & 1 & 0 & 0 & 0\\ 0 & 0 & 0 & 1 & 0 & 0\\ 0 & 0 & 0 & 0 & 1 & 0\\ 0 & 0 & 0 & 0 & 0 & 1\\ \end{array} \right] \]

Implements Device.

◆ getAccelerationLimits()

rw::math::Q getAccelerationLimits ( ) const
virtual

get the Joint Acceleration limit

Returns
the Acceleration limit as Q

Implements Device.

◆ getBase() [1/2]

rw::kinematics::Frame* getBase ( )
inlinevirtual

get base of the device

Returns
base Frame

Implements Device.

◆ getBase() [2/2]

const rw::kinematics::Frame* getBase ( ) const
inlinevirtual

get base of the device

Returns
base Frame

Implements Device.

◆ getBounds()

std::pair<rw::math::Q, rw::math::Q> getBounds ( ) const
virtual

Returns the upper \( \mathbf{q}_{min} \in \mathbb{R}^n \) and lower \( \mathbf{q}_{max} \in \mathbb{R}^n \) bounds of the joint space.

Returns
std::pair containing \( (\mathbf{q}_{min}, \mathbf{q}_{max}) \)

Since the SE3Device robot is unconstrained and can move anywhere whithin the taskspace each of the 6 input's are unbounded ( \( [-\inf, \inf] \)) in practice the inputs are limited to the numerical limits of the real datatype, thus this method returns the range ([DBL_MIN, DBL_MAX]) for each of the 6 inputs

Implements Device.

◆ getDOF()

size_t getDOF ( ) const
inlinevirtual

Returns number of active joints.

Returns
number of active joints \( n \)

This method always returns the value 6

Implements Device.

◆ getEnd() [1/2]

rw::kinematics::Frame* getEnd ( )
inlinevirtual

get end of the device

Returns
end Frame

Implements Device.

◆ getEnd() [2/2]

const rw::kinematics::Frame* getEnd ( ) const
inlinevirtual

get end of the device

Returns
end Frame

Implements Device.

◆ getQ()

rw::math::Q getQ ( const rw::kinematics::State state) const
virtual

Gets configuration vector \( \mathbf{q}\in \mathbb{R}^n \).

Parameters
state[in] state from which which to get \( \mathbf{q} \)
Returns
configuration vector \( \mathbf{q} \)

Implements Device.

◆ getVelocityLimits()

virtual rw::math::Q getVelocityLimits ( ) const
virtual

get the Joint velocity limit

Returns
the velocity limit as Q

Implements Device.

◆ setAccelerationLimits()

void setAccelerationLimits ( const rw::math::Q acclimits)
virtual

set the Joint Acceleration limit

Parameters
acclimits[in] the acceleration limit as Q

Implements Device.

◆ setBounds()

virtual void setBounds ( const QBox bounds)
virtual

set outer bound of the device

Parameters
bounds[in] the minimum Q and the maximum Q

Implements Device.

◆ setQ()

void setQ ( const rw::math::Q q,
rw::kinematics::State state 
) const
virtual

Sets configuration vector \( \mathbf{q} \in \mathbb{R}^n \).

Parameters
q[in] configuration vector \( \mathbf{q} \)
state[in] state into which to set \( \mathbf{q} \)
Precondition
q.size() == getDOF()
q.size() == 6

Implements Device.

◆ setVelocityLimits()

virtual void setVelocityLimits ( const rw::math::Q vellimits)
virtual

set the Joint velocity limit

Parameters
vellimits[in] the velocity limit as Q

Implements Device.


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