def MoveL(self, pose, dynamic=None, overlap=None):
        '''
        Linear moves
        :param pose: A position (joints, quaternion, euler)
        :type pose: RmiPos
        :param dynamic: Dynamic containing velo/accel
        :type dynamic: RmiVelo
        :param overlap: Blending
        :type overlap: RmiBlending
        '''

        #self.num_commands += 1

        cmd = rmi_msg.Command()
        cmd.command_type = "LIN"

        assert isinstance(pose, RmiPos)
        pose.SetCmd(cmd)

        if isinstance(dynamic, RmiVelo):
            dynamic.SetCmd(cmd)

        if isinstance(overlap, RmiBlending):
            overlap.SetCmd(cmd)

        if (len(cmd.pose_type) < 1):
            pass
        else:
            self.AddCommand(cmd)
    def Tool(self, frame):
        '''

        :param frame: the tool frame
        :type frame: RmiFrame
        '''

        cmd = rmi_msg.Command()
        cmd.command_type = 'FRAME'
        cmd.pose_reference = 'TOOL'
        cmd.pose = frame.frame
        self.AddCommand(cmd)
    def WaitIsFinished(self):
        '''
        Call WaitIsFinished()
        '''

        #self.num_commands += 1

        cmd = rmi_msg.Command()
        cmd.command_type = 'WAIT'
        cmd.pose_type = 'IS_FINISHED'

        self.AddCommand(cmd)
    def Abort(self):
        '''
        Immediately sends an ABORT message.  It will call ProgStart, add the ABORT command, then call ProgRun
        '''

        self.ProgStart()
        self.cmd_list.replace_previous_commands = True

        cmd = rmi_msg.Command()
        cmd.command_type = 'ABORT'
        self.AddCommand(cmd)

        self.ProgRun()
    def Settings(self, dynamic=None, overlap=None):
        '@type dynamic: RmiVelo'
        '@type overlap: RmiBlending'

        #self.num_commands += 1

        # Give me something
        assert (dynamic is not None or overlap is not None)

        cmd = rmi_msg.Command()
        cmd.command_type = "SETTING"

        if (isinstance(dynamic, RmiVelo)):
            dynamic.SetCmd(cmd)

        if isinstance(overlap, RmiBlending):
            overlap.SetCmd(cmd)

        self.AddCommand(cmd)
 def IoOut(self, value):
     cmd = rmi_msg.Command()
     cmd.command_type = 'IO_OUT'
     cmd.pose_reference = 'DO'
     cmd.pose = value
     self.AddCommand(cmd)