Пример #1
0
    def Main(self):
        rospy.sleep(2)
        msgPattern = MsgPattern()

        # Publish a goto(0,0) pattern message, and wait for the end effector to initialize.
        msgPattern.frameidPosition = 'Stage'
        msgPattern.frameidAngle = 'Stage'
        msgPattern.shape = 'constant'
        msgPattern.hzPattern = 1.0
        msgPattern.hzPoint = rospy.get_param('actuator/hzPoint', 100.0)
        msgPattern.count = 1
        msgPattern.size = Point(x=0,y=0)
        msgPattern.points = []
        msgPattern.preempt = True
        msgPattern.param = 0
        self.pubSetPattern.publish (msgPattern)
        rospy.sleep(2)
        self.initialized = True

        # Publish the calibration pattern.
        msgPattern.frameidPosition = 'Stage'
        msgPattern.frameidAngle = 'Stage'
        msgPattern.shape = rospy.get_param('calibration/shape', 'spiral')
        if msgPattern.shape=='spiral':
            msgPattern.hzPattern = 0.008
        else:
            msgPattern.hzPattern = 0.1
        msgPattern.count = -1
        msgPattern.points = []
        msgPattern.size = Point(x=0.9*rospy.get_param('arena/radius_inner', 25.4), y=0)
        msgPattern.preempt = True
        msgPattern.param = 0.0
        msgPattern.direction = 1
        self.pubSetPattern.publish (msgPattern)

        rospy.spin()
        
        # Publish a goto(0,0) pattern message.
        msgPattern.frameidPosition = 'Stage'
        msgPattern.frameidAngle = 'Stage'
        msgPattern.shape = 'constant'
        msgPattern.hzPattern = 1.0
        msgPattern.count = 1
        msgPattern.size = Point(x=0,y=0)
        msgPattern.points = []
        msgPattern.preempt = True
        msgPattern.param = 0
        self.pubSetPattern.publish (msgPattern)
Пример #2
0
    def Main(self):
        msgPattern = MsgPattern()

        # Publish a goto(0,0) pattern message, and wait for the end effector to initialize.
        msgPattern.mode = 'byshape'
        msgPattern.shape = 'constant'
        msgPattern.points = []
        msgPattern.frame = 'Stage'
        msgPattern.hzPattern = 1.0
        msgPattern.hzPoint = rospy.get_param('actuator/hzPoint', 100.0)
        msgPattern.count = 1
        msgPattern.radius = 0.0
        msgPattern.preempt = True
        self.pubPatternGen.publish (msgPattern)
        while not self.initialized_endeffector:
            rospy.sleep(0.5)
        rospy.sleep(2)
        self.initialized = True

        # Publish the spiral pattern message.
        msgPattern.mode = 'byshape'
        msgPattern.shape = rospy.get_param('calibration/shape', 'spiral')
        msgPattern.points = []
        msgPattern.frame = 'Stage'
        msgPattern.count = -1
        msgPattern.radius = 0.8 * rospy.get_param('arena/radius_inner', 25.4)
        msgPattern.preempt = True
        if msgPattern.shape=='spiral':
            msgPattern.hzPattern = 0.01
        else:
            msgPattern.hzPattern = 0.1
        self.pubPatternGen.publish (msgPattern)

        try:
            rospy.spin()
        except KeyboardInterrupt:
            print "Shutting down"
            # Publish a goto(0,0) pattern message.
            msgPattern.mode = 'byshape'
            msgPattern.shape = 'constant'
            msgPattern.points = []
            msgPattern.frame = 'Stage'
            msgPattern.hz = 1.0
            msgPattern.count = 1
            msgPattern.radius = 0.0
            msgPattern.preempt = True
            self.pubPatternGen.publish (msgPattern)
Пример #3
0
 def OnShutdown_callback(self):
     if self.initialized:
         msgPattern = MsgPattern()
         msgPattern.mode = 'byshape'
         msgPattern.shape = 'constant'
         msgPattern.points = []
         msgPattern.frame = 'Stage'
         msgPattern.hzPattern = 1.0
         msgPattern.hzPoint = 100
         msgPattern.count = 1
         msgPattern.radius = 0.0
         msgPattern.preempt = True
         self.pubPatternGen.publish (msgPattern)
Пример #4
0
 def OnShutdown_callback(self):
     if self.initialized:
         msgPattern = MsgPattern()
         msgPattern.shape = 'constant'
         msgPattern.points = []
         msgPattern.frameidPosition = 'Stage'
         msgPattern.frameidAngle = 'Stage'
         msgPattern.hzPattern = 1.0
         msgPattern.hzPoint = 100
         msgPattern.count = 1
         msgPattern.size = Point(x=0,y=0)
         msgPattern.preempt = True
         msgPattern.param = 0
         self.pubSetPattern.publish (msgPattern)
Пример #5
0
 def SendInputPoints(self):
     pattern = MsgPattern()
     pattern.mode       = 'bypoints'
     pattern.shape      = 'constant'
     pattern.frame_id   = 'Plate'
     pattern.hzPattern  = 1.0
     pattern.hzPoint    = 100.0
     pattern.count      = 1
     pattern.points     = self.pointsInput
     pattern.radius     = 20.0
     pattern.preempt    = False
 
     command = MsgGalvoCommand()
     command.frameid_target_list = ['Plate',]
     command.pattern_list = [pattern,]
     command.units = 'volts' #'millimeters' # 'volts' #
     self.pubGalvoCommand.publish(command)
Пример #6
0
 def TrackFly1(self):
     pattern = MsgPattern()
     pattern.mode       = 'byshape'
     pattern.shape      = 'grid'
     pattern.frame_id   = 'Fly1'
     pattern.hzPattern  = 40.0
     pattern.hzPoint    = 1000.0
     pattern.count      = 1
     pattern.points     = []
     pattern.radius     = 5
     pattern.preempt    = False
 
     command = MsgGalvoCommand()
     command.frameid_target_list = ['Plate',]
     command.pattern_list = [pattern,]
     command.units = 'millimeters' # 'millimeters' or 'volts'
     self.pubGalvoCommand.publish(command)
Пример #7
0
 def SendInputPoints(self):
     pattern = MsgPattern()
     pattern.frameidPosition = 'Arena'
     pattern.frameidAngle    = 'Arena'
     pattern.shape      = 'bypoints'
     pattern.hzPattern  = 1.0
     pattern.hzPoint    = 100.0
     pattern.count      = 1
     pattern.points     = self.pointsInput
     pattern.size.x     = 20.0
     pattern.size.y     = 20.0
     pattern.preempt    = False
     pattern.param      = 0.0
     pattern.direction  = 1
 
     command = MsgGalvoCommand()
     command.pattern_list = [pattern,]
     command.units = 'volts' #'millimeters' # 'volts' #
     self.pubGalvoCommand.publish(command)
Пример #8
0
    def SendPoint(self, point):
        pattern = MsgPattern()
        pattern.frameidPosition = 'Arena'
        pattern.frameidAngle    = 'Arena'
        pattern.shape      = 'bypoints'
        pattern.hzPattern  = 1.0
        pattern.hzPoint    = 100.0
        pattern.count      = 1
        pattern.points     = [point,]
        pattern.size.x     = 0.0
        pattern.size.y     = 0.0
        pattern.preempt    = False
        pattern.param      = 0.0
        pattern.direction  = 1
    
        command = MsgGalvoCommand()
        command.enable_laser = True
        command.pattern_list = [pattern,]
        command.units = 'volts' #'millimeters' # 'volts' #

        self.pubGalvoCommand.publish(command)
Пример #9
0
    def MovePattern (self):
                    
        msgPattern = MsgPattern()

        # Publish the pattern message.
        msgPattern.shape = self.paramsIn.robot.move.pattern.shape
        msgPattern.points = []
        msgPattern.frameidPosition = self.paramsIn.robot.move.pattern.frameidPosition
        msgPattern.frameidAngle = self.paramsIn.robot.move.pattern.frameidAngle
        msgPattern.hzPattern = self.paramsIn.robot.move.pattern.hzPattern
        msgPattern.hzPoint = self.paramsIn.robot.move.pattern.hzPoint
        msgPattern.count = self.paramsIn.robot.move.pattern.count
        msgPattern.size = self.paramsIn.robot.move.pattern.size
        msgPattern.preempt = True
        msgPattern.param = 0.0#self.paramsIn.robot.move.pattern.param
        msgPattern.direction = self.paramsIn.robot.move.pattern.direction
        self.pubPatternGen.publish (msgPattern)
                

        rv = 'aborted'
        while not rospy.is_shutdown():
            if self.preempt_requested():
                rospy.loginfo('preempt requested: MovePattern()')
                self.service_preempt()
                rv = 'preempt'
                break

            
            #if self.paramsIn.robot.move.timeout != -1:
            #    if (rospy.Time.now().to_sec()-self.timeStart.to_sec()) > self.paramsIn.robot.move.timeout:
            #        rv = 'timeout'
            #        break
            
            self.rosrate.sleep()


            # Handle commands.
            if (self.commandExperiment=='continue'):
                pass
            
            if (self.commandExperiment=='pause_now'):
                while (self.commandExperiment=='pause_now'):
                    rospy.sleep(0.5)

            if (self.commandExperiment=='pause_after_trial'):
                pass
            
            if (self.commandExperiment=='exit_after_trial'):
                pass
            
            if (self.commandExperiment=='exit_now'):
                rv = 'aborted'
                break


        # Turn off the pattern
        msgPattern.shape = self.paramsIn.robot.move.pattern.shape
        msgPattern.points = []
        msgPattern.frameidPosition = self.paramsIn.robot.move.pattern.frameidPosition
        msgPattern.frameidAngle = self.paramsIn.robot.move.pattern.frameidAngle
        msgPattern.hzPattern = self.paramsIn.robot.move.pattern.hzPattern
        msgPattern.hzPoint = self.paramsIn.robot.move.pattern.hzPoint
        msgPattern.count = 0
        msgPattern.size = self.paramsIn.robot.move.pattern.size
        msgPattern.preempt = True
        msgPattern.param = 0.0#self.paramsIn.robot.move.pattern.param
        msgPattern.direction = self.paramsIn.robot.move.pattern.direction
        self.pubPatternGen.publish (msgPattern)

        return rv