Package org.robwork.sdurw_models
Class SE3Device
- java.lang.Object
-
- org.robwork.sdurw_kinematics.Stateless
-
- org.robwork.sdurw_models.Device
-
- org.robwork.sdurw_models.SE3Device
-
public class SE3Device extends Device
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 Summary
Constructors Constructor Description SE3Device(long cPtr, boolean cMemoryOwn)SE3Device(java.lang.String name, FramePtr base, MovableFrame mframe)Constructor
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description JacobianCalculatorPtrbaseJCframes(FrameVector frames, State state)DeviceJacobian for a sequence of frames.JacobianbaseJend(State state)voiddelete()QgetAccelerationLimits()get the Joint Acceleration limitFramegetBase()get base of the devicePairQgetBounds()
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 inputsstatic longgetCPtr(SE3Device obj)longgetDOF()
This method always returns the value 6FramegetEnd()get end of the deviceQgetQ(State state)Gets configuration vector \mathbf{q}\in \mathbb{R}^n
QgetVelocityLimits()get the Joint velocity limitvoidsetAccelerationLimits(Q acclimits)set the Joint Acceleration limitvoidsetBounds(PairQ bounds)set outer bound of the devicevoidsetQ(Q q, State state)
voidsetVelocityLimits(Q vellimits)set the Joint velocity limit-
Methods inherited from class org.robwork.sdurw_models.Device
baseJCend, baseJCframe, baseJframe, baseJframes, baseTend, baseTframe, getCPtr, getName, getPropertyMap, setName, toString, worldTbase
-
Methods inherited from class org.robwork.sdurw_kinematics.Stateless
getCPtr, getStateStructure, isRegistered, registerIn, registerIn, unregister
-
-
-
-
Constructor Detail
-
SE3Device
public SE3Device(long cPtr, boolean cMemoryOwn)
-
SE3Device
public SE3Device(java.lang.String name, FramePtr base, MovableFrame mframe)Constructor
- Parameters:
name- [in] device namebase- documentation missing !mframe- documentation missing !
-
-
Method Detail
-
getCPtr
public static long getCPtr(SE3Device obj)
-
getQ
public Q getQ(State state)
Description copied from class:DeviceGets configuration vector \mathbf{q}\in \mathbb{R}^n
-
getBounds
public PairQ getBounds()
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
-
getBase
public Frame getBase()
get base of the device
-
getEnd
public Frame getEnd()
get end of the device
-
baseJCframes
public JacobianCalculatorPtr baseJCframes(FrameVector frames, State state)
Description copied from class:DeviceDeviceJacobian for a sequence of frames.- Overrides:
baseJCframesin classDevice
-
getDOF
public long getDOF()
This method always returns the value 6
-
setBounds
public void setBounds(PairQ bounds)
set outer bound of the device
-
getVelocityLimits
public Q getVelocityLimits()
get the Joint velocity limit- Overrides:
getVelocityLimitsin classDevice- Returns:
- the velocity limit as Q
-
setVelocityLimits
public void setVelocityLimits(Q vellimits)
set the Joint velocity limit- Overrides:
setVelocityLimitsin classDevice- Parameters:
vellimits- [in] the velocity limit as Q
-
getAccelerationLimits
public Q getAccelerationLimits()
get the Joint Acceleration limit- Overrides:
getAccelerationLimitsin classDevice- Returns:
- the Acceleration limit as Q
-
setAccelerationLimits
public void setAccelerationLimits(Q acclimits)
set the Joint Acceleration limit- Overrides:
setAccelerationLimitsin classDevice- Parameters:
acclimits- [in] the acceleration limit as Q
-
-