RobWorkProject
24.12.4-
|
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::Q > | getBounds () 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::Frame * | getBase () |
get base of the device More... | |
const rw::kinematics::Frame * | getBase () const |
get base of the device More... | |
rw::kinematics::Frame * | getEnd () |
get end of the device More... | |
const rw::kinematics::Frame * | getEnd () 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::JacobianCalculator > | baseJCframes (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 (const 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::JacobianCalculator > | baseJCend (const rw::kinematics::State &state) const |
DeviceJacobian for the end frame. More... | |
virtual rw::core::Ptr< rw::models::JacobianCalculator > | baseJCframe (rw::core::Ptr< const rw::kinematics::Frame > frame, const rw::kinematics::State &state) const |
DeviceJacobian for a particular frame. More... | |
const rw::core::PropertyMap & | getPropertyMap () const |
Miscellaneous properties of the device. More... | |
rw::core::PropertyMap & | getPropertyMap () |
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< Device > | Ptr |
smart pointer type to this class | |
typedef rw::core::Ptr< const Device > | CPtr |
const smart pointer type to this class | |
typedef std::pair< rw::math::Q, rw::math::Q > | QBox |
Lower and upper corner of a box shaped configuration space. | |
Public Types inherited from Stateless | |
typedef rw::core::Ptr< Stateless > | Ptr |
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. | |
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.
SE3Device | ( | const std::string & | name, |
rw::core::Ptr< rw::kinematics::Frame > | base, | ||
rw::kinematics::MovableFrame * | mframe | ||
) |
Constructor.
name | [in] device name |
base | documentation missing ! |
mframe | documentation missing ! |
|
virtual |
Calculates the jacobian matrix of the end-effector described in the robot base frame \( ^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.
|
virtual |
|
inlinevirtual |
|
inlinevirtual |
|
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.
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.
|
inlinevirtual |
Returns number of active joints.
This method always returns the value 6
Implements Device.
|
inlinevirtual |
|
inlinevirtual |
|
virtual |
Gets configuration vector \( \mathbf{q}\in \mathbb{R}^n \).
state | [in] state from which which to get \( \mathbf{q} \) |
Implements Device.
|
virtual |
|
virtual |
|
virtual |
set outer bound of the device
bounds | [in] the minimum Q and the maximum Q |
Implements Device.
|
virtual |
|
virtual |