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 JacobianCalculatorPtr
baseJCframes(FrameVector frames, State state)
DeviceJacobian for a sequence of frames.Jacobian
baseJend(State state)
void
delete()
Q
getAccelerationLimits()
get the Joint Acceleration limitFrame
getBase()
get base of the devicePairQ
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 inputsstatic long
getCPtr(SE3Device obj)
long
getDOF()
This method always returns the value 6Frame
getEnd()
get end of the deviceQ
getQ(State state)
Gets configuration vector \mathbf{q}\in \mathbb{R}^n
Q
getVelocityLimits()
get the Joint velocity limitvoid
setAccelerationLimits(Q acclimits)
set the Joint Acceleration limitvoid
setBounds(PairQ bounds)
set outer bound of the devicevoid
setQ(Q q, State state)
void
setVelocityLimits(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:Device
Gets 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:Device
DeviceJacobian for a sequence of frames.- Overrides:
baseJCframes
in 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:
getVelocityLimits
in classDevice
- Returns:
- the velocity limit as Q
-
setVelocityLimits
public void setVelocityLimits(Q vellimits)
set the Joint velocity limit- Overrides:
setVelocityLimits
in classDevice
- Parameters:
vellimits
- [in] the velocity limit as Q
-
getAccelerationLimits
public Q getAccelerationLimits()
get the Joint Acceleration limit- Overrides:
getAccelerationLimits
in classDevice
- Returns:
- the Acceleration limit as Q
-
setAccelerationLimits
public void setAccelerationLimits(Q acclimits)
set the Joint Acceleration limit- Overrides:
setAccelerationLimits
in classDevice
- Parameters:
acclimits
- [in] the acceleration limit as Q
-
-