Class 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 Detail

      • SE3Device

        public SE3Device​(long cPtr,
                         boolean cMemoryOwn)
      • SE3Device

        public SE3Device​(java.lang.String name,
                         Frame base,
                         MovableFrame mframe)
        Constructor

        Parameters:
        name - [in] device name
        base - documentation missing !
        mframe - documentation missing !
    • Method Detail

      • getCPtr

        public static long getCPtr​(SE3Device obj)
      • delete

        public void delete()
        Overrides:
        delete in class Device
      • setQ

        public void setQ​(Q q,
                         State state)


        Overrides:
        setQ in class Device
        Parameters:
        q - [in] configuration vector \mathbf{q}
        state - [in] state into which to set \mathbf{q}

      • getQ

        public Q getQ​(State state)
        Description copied from class: Device
        Gets configuration vector \mathbf{q}\in \mathbb{R}^n

        Overrides:
        getQ in class Device
        Parameters:
        state - [in] state from which which to get \mathbf{q}
        Returns:
        configuration vector \mathbf{q}
      • 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
        Overrides:
        getBounds in class Device
        Returns:
        std::pair containing (\mathbf{q}_{min}, \mathbf{q}_{max})
      • getBase

        public Frame getBase()
        get base of the device
        Overrides:
        getBase in class Device
        Returns:
        base Frame
      • getEnd

        public Frame getEnd()
        get end of the device
        Overrides:
        getEnd in class Device
        Returns:
        end Frame
      • baseJend

        public Jacobian baseJend​(State state)
        Calculates the jacobian matrix of the end-effector described
        in the robot base frame ^b_e\mathbf{J}_{\mathbf{q}}(\mathbf{q})

        Overrides:
        baseJend in class Device
        Parameters:
        state - [in] State for which to calculate the Jacobian

        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]
      • getDOF

        public long getDOF()


        This method always returns the value 6
        Overrides:
        getDOF in class Device
        Returns:
        number of active joints n
      • setBounds

        public void setBounds​(PairQ bounds)
        set outer bound of the device
        Overrides:
        setBounds in class Device
        Parameters:
        bounds - [in] the minimum Q and the maximum Q
      • getVelocityLimits

        public Q getVelocityLimits()
        get the Joint velocity limit
        Overrides:
        getVelocityLimits in class Device
        Returns:
        the velocity limit as Q
      • setVelocityLimits

        public void setVelocityLimits​(Q vellimits)
        set the Joint velocity limit
        Overrides:
        setVelocityLimits in class Device
        Parameters:
        vellimits - [in] the velocity limit as Q
      • getAccelerationLimits

        public Q getAccelerationLimits()
        get the Joint Acceleration limit
        Overrides:
        getAccelerationLimits in class Device
        Returns:
        the Acceleration limit as Q
      • setAccelerationLimits

        public void setAccelerationLimits​(Q acclimits)
        set the Joint Acceleration limit
        Overrides:
        setAccelerationLimits in class Device
        Parameters:
        acclimits - [in] the maximal acceleration