Package org.robwork.sdurw
Class MobileDevice
- java.lang.Object
-
- org.robwork.sdurw.Device
-
- org.robwork.sdurw.MobileDevice
-
public class MobileDevice extends Device
Provides a differential controlled mobile device
The MobileDevice class provides a differential controlled mobile device
with non-holonomic constraints. The x direction is defined as
straight forward and z vertically up. The wheels are assumed to be
positioned summetrically around the base and have 0 x
component.
When using setQ it takes 2 parameters, which corresponds to the distances
travelled by the wheels. Based on this input and the current pose of the
device it calcualtes a new pose as.
-
-
Constructor Summary
Constructors Constructor Description MobileDevice(long cPtr, boolean cMemoryOwn)MobileDevice(MovableFrame base, RevoluteJoint wheel1, RevoluteJoint wheel2, State state, java.lang.String name)Constructs a mobile device
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description JacobianCalculatorPtrbaseJCframes(FrameVector frames, State state)
Not implemented.JacobianbaseJend(State state)Calculates the jacobian matrix of the end-effector described
in the robot base frame ^{base}_{end}\mathbf{J}_{\mathbf{q}}(\mathbf{q})
JacobianbaseJframe(Frame frame, State state)
Not implemented.JacobianbaseJframes(FrameVector frames, State state)
Not implemented.voiddelete()QgetAccelerationLimits()Returns the maximal acceleration of the joints
\mathbf{\ddot{q}}_{max}\in \mathbb{R}^n
It is assumed that \ddot{\mathbf{q}}_{min}=-\ddot{\mathbf{q}}_{max}
FramegetBase()a method to return the frame of the base of the device.PairQgetBounds()Returns the upper \mathbf{q}_{min} \in \mathbb{R}^n and
lower \mathbf{q}_{max} \in \mathbb{R}^n bounds of the joint space
static longgetCPtr(MobileDevice obj)longgetDOF()Returns number of active jointsFramegetEnd()a method to return the frame of the end of the deviceQgetQ(State state)Gets configuration vector \mathbf{q}\in \mathbb{R}^n
QgetVelocityLimits()Returns the maximal velocity of the joints
\mathbf{\dot{q}}_{max}\in \mathbb{R}^n
It is assumed that \dot{\mathbf{q}}_{min}=-\dot{\mathbf{q}}_{max}
voidsetAccelerationLimits(Q acclimits)Sets the maximal acceleration of the joints
\mathbf{\ddot{q}}_{max}\in \mathbb{R}^n
It is assumed that \ddot{\mathbf{q}}_{min}=-\ddot{\mathbf{q}}_{max}
voidsetBounds(PairQ bounds)Sets the upper \mathbf{q}_{min} \in \mathbb{R}^n and
lower \mathbf{q}_{max} \in \mathbb{R}^n bounds of the joint space
voidsetDevicePose(Transform3Dd transform, State state)Sets the position and orientation of the base
This operation moves the base of the robot, without considering
the non-holonomic constraints of the devicevoidsetQ(Q q, State state)Sets configuration vector \mathbf{q} \in \mathbb{R}^n
voidsetVelocityLimits(Q vellimits)Sets the maximal velocity of the joints
\mathbf{\dot{q}}_{max}\in \mathbb{R}^n
It is assumed that \dot{\mathbf{q}}_{min}=-\dot{\mathbf{q}}_{max}
-
Methods inherited from class org.robwork.sdurw.Device
baseTend, baseTframe, getCPtr, getName, getPropertyMap, setName, worldTbase
-
-
-
-
Constructor Detail
-
MobileDevice
public MobileDevice(long cPtr, boolean cMemoryOwn)
-
MobileDevice
public MobileDevice(MovableFrame base, RevoluteJoint wheel1, RevoluteJoint wheel2, State state, java.lang.String name)
Constructs a mobile device- Parameters:
base- [in] the base of the devicewheel1- [in] the left wheelwheel2- [in] the right wheelstate- [in] the state of the devicename- [in] name of device
-
-
Method Detail
-
getCPtr
public static long getCPtr(MobileDevice obj)
-
setDevicePose
public void setDevicePose(Transform3Dd transform, State state)
Sets the position and orientation of the base
This operation moves the base of the robot, without considering
the non-holonomic constraints of the device- Parameters:
transform- [in] new base transformstate- [in] state to write change to
-
setQ
public void setQ(Q q, State state)
Description copied from class:DeviceSets configuration vector \mathbf{q} \in \mathbb{R}^n
-
getQ
public Q getQ(State state)
Description copied from class:DeviceGets configuration vector \mathbf{q}\in \mathbb{R}^n
-
getBounds
public PairQ getBounds()
Description copied from class:DeviceReturns the upper \mathbf{q}_{min} \in \mathbb{R}^n and
lower \mathbf{q}_{max} \in \mathbb{R}^n bounds of the joint space
-
setBounds
public void setBounds(PairQ bounds)
Description copied from class:DeviceSets the upper \mathbf{q}_{min} \in \mathbb{R}^n and
lower \mathbf{q}_{max} \in \mathbb{R}^n bounds of the joint space
-
getVelocityLimits
public Q getVelocityLimits()
Description copied from class:DeviceReturns the maximal velocity of the joints
\mathbf{\dot{q}}_{max}\in \mathbb{R}^n
It is assumed that \dot{\mathbf{q}}_{min}=-\dot{\mathbf{q}}_{max}
- Overrides:
getVelocityLimitsin classDevice- Returns:
- the maximal velocity
-
setVelocityLimits
public void setVelocityLimits(Q vellimits)
Description copied from class:DeviceSets the maximal velocity of the joints
\mathbf{\dot{q}}_{max}\in \mathbb{R}^n
It is assumed that \dot{\mathbf{q}}_{min}=-\dot{\mathbf{q}}_{max}
- Overrides:
setVelocityLimitsin classDevice- Parameters:
vellimits- [in] rw::math::Q with the maximal velocity
-
getAccelerationLimits
public Q getAccelerationLimits()
Description copied from class:DeviceReturns the maximal acceleration of the joints
\mathbf{\ddot{q}}_{max}\in \mathbb{R}^n
It is assumed that \ddot{\mathbf{q}}_{min}=-\ddot{\mathbf{q}}_{max}
- Overrides:
getAccelerationLimitsin classDevice- Returns:
- the maximal acceleration
-
setAccelerationLimits
public void setAccelerationLimits(Q acclimits)
Description copied from class:DeviceSets the maximal acceleration of the joints
\mathbf{\ddot{q}}_{max}\in \mathbb{R}^n
It is assumed that \ddot{\mathbf{q}}_{min}=-\ddot{\mathbf{q}}_{max}
- Overrides:
setAccelerationLimitsin classDevice- Parameters:
acclimits- [in] the maximal acceleration
-
getDOF
public long getDOF()
Description copied from class:DeviceReturns number of active joints
-
getBase
public Frame getBase()
Description copied from class:Devicea method to return the frame of the base of the device.
-
getEnd
public Frame getEnd()
Description copied from class:Devicea method to return the frame of the end of the device
-
baseJend
public Jacobian baseJend(State state)
Description copied from class:DeviceCalculates the jacobian matrix of the end-effector described
in the robot base frame ^{base}_{end}\mathbf{J}_{\mathbf{q}}(\mathbf{q})
- Overrides:
baseJendin classDevice- Parameters:
state- [in] State for which to calculate the Jacobian
- Returns:
- the 6*ndof jacobian matrix:
{^{base}_{end}}\mathbf{J}_{\mathbf{q}}(\mathbf{q})
This method calculates the jacobian relating joint velocities ( \mathbf{\dot{q}} ) to the end-effector velocity seen from
base-frame ( \nu^{ase}_{end} )
\nu^{base}_{end} = {^{base}_{end}}\mathbf{J}_\mathbf{q}(\mathbf{q})\mathbf{\dot{q}}
The jacobian matrix {^{base}_n}\mathbf{J}_{\mathbf{q}}(\mathbf{q})
is defined as:
{^{base}_n}\mathbf{J}_{\mathbf{q}}(\mathbf{q}) = \frac{\partial ^{base}\mathbf{x}_n}{\partial \mathbf{q}}
Where:
{^{base}_n}\mathbf{J}_{\mathbf{q}}(\mathbf{q}) = \left[ \begin{array}{cccc} {^{base}_1}\mathbf{J}_{\mathbf{q}}(\mathbf{q}) {^{base}_2}\mathbf{J}_{\mathbf{q}}(\mathbf{q}) \cdots {^b_n}\mathbf{J}_{\mathbf{q}}(\mathbf{q}) \\ \end{array} \right]
where {^{base}_i}\mathbf{J}_{\mathbf{q}}(\mathbf{q}) is defined by
{^{base}_i}\mathbf{J}_{\mathbf{q}}(\mathbf{q}) = \begin{array}{cc} \left[ \begin{array}{c} {^{base}}\mathbf{z}_i \times {^{i}\mathbf{p}_n} \\ {^{base}}\mathbf{z}_i \\ \end{array} \right] \textrm{revolute joint} \end{array}
{^{base}_i}\mathbf{J}_{\mathbf{q}}(\mathbf{q}) = \begin{array}{cc} \left[ \begin{array}{c} {^{base}}\mathbf{z}_i \\ \mathbf{0} \\ \end{array} \right] \textrm{prismatic joint} \\ \end{array}
By default the method forwards to baseJframe().
-
baseJframe
public Jacobian baseJframe(Frame frame, State state)
Not implemented.- Overrides:
baseJframein classDevice- Parameters:
frame- [in] Frame for which to calculate the Jacobianstate- [in] State for which to calculate the Jacobian
- Returns:
- the 6*ndof jacobian matrix:
{^{base}_{frame}}\mathbf{J}_{\mathbf{q}}(\mathbf{q})
This method calculates the jacobian relating joint velocities ( \mathbf{\dot{q}} ) to the frame f velocity seen from base-frame
( \nu^{base}_{frame} )
\nu^{base}_{frame} = {^{base}_{frame}}\mathbf{J}_\mathbf{q}(\mathbf{q})\mathbf{\dot{q}}
The jacobian matrix {^{base}_n}\mathbf{J}_{\mathbf{q}}(\mathbf{q})
is defined as:
{^{base}_n}\mathbf{J}_{\mathbf{q}}(\mathbf{q}) = \frac{\partial ^{base}\mathbf{x}_n}{\partial \mathbf{q}}
By default the method forwards to baseJframes().
-
baseJframes
public Jacobian baseJframes(FrameVector frames, State state)
Not implemented.- Overrides:
baseJframesin classDevice- Parameters:
frames- [in] the frames to calculate the frames fromstate- [in] the state to calculate in- Returns:
- the jacobian
-
baseJCframes
public JacobianCalculatorPtr baseJCframes(FrameVector frames, State state)
Not implemented.
-
-