예제 #1
0
    def addNao(self, name, adresseIP, port, naoqi_ver):
        #nao management
        naoId = len(self.list_of_nao)
        nao = Nao(adresseIP, name, naoId, naoqi_ver)
        self.list_of_nao.append(nao)
        self.selection1.append(False)
        self.selection2.append(False)
        self.selectionGlobal.append(False)

        #gui management
        self.layoutNao.addWidget(nao, 3, naoId, QtCore.Qt.AlignCenter)
        checkBox1 = QtGui.QCheckBox("1")
        checkBox1.setStyleSheet("background-color:darkCyan")
        checkBox2 = QtGui.QCheckBox("2")
        checkBox2.setStyleSheet("background-color:darkYellow")
        checkBoxGlobal = QtGui.QCheckBox("Global")
        checkBoxGlobal.setStyleSheet("background-color:darkRed")
        checkBox1.clicked.connect(
            lambda: self.addselect(1, checkBox1.isChecked(), naoId))
        checkBox2.clicked.connect(
            lambda: self.addselect(2, checkBox2.isChecked(), naoId))
        checkBoxGlobal.clicked.connect(
            lambda: self.addselect(0, checkBoxGlobal.isChecked(), naoId))
        self.list_of_selectionCheckBox1.append(checkBox1)
        self.list_of_selectionCheckBox2.append(checkBox2)
        self.list_of_selectionCheckBoxGlobal.append(checkBoxGlobal)
        self.layoutNao.addWidget(checkBox1, 0, naoId, QtCore.Qt.AlignCenter)
        self.layoutNao.addWidget(checkBox2, 1, naoId, QtCore.Qt.AlignCenter)
        self.layoutNao.addWidget(checkBoxGlobal, 2, naoId,
                                 QtCore.Qt.AlignCenter)
예제 #2
0
    def __init__(self, classifier_path, preprocessor_path, response_mapping):
        self.response_mapping = response_mapping
        self.robot = Nao()
        self.camera_controller = CameraController()

        self.frame_preprocessor = pickle.load(open(preprocessor_path, 'rb'))
        self.classifier = pickle.load(open(classifier_path, 'rb'))

        self._flusher = Thread(target=self._flush, daemon=True)
        self._flusher.start()
예제 #3
0
 def build(self):
     self.label = Label(text="server started\n")
     self.factory = EchoFactory(self)
     reactor.listenTCP(8000, self.factory)
     rospy.init_node('twisted_node')
     rospy.Subscriber("to_twisted", String, self.transmit_msg)
     if STUDY_SITE == 'MIT':
         self.publishers['tega'] = Tega(self)
     elif STUDY_SITE == 'MIT-JIBO':
         self.publishers['jibo'] = Jibo(self)
     elif STUDY_SITE == 'TAU':
         self.publishers['nao'] = Nao(self)
     return self.label
예제 #4
0
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('--ip', help='addresse ip du nao')
    parser.add_argument('--port', help='port du nao', type=int)

    args = parser.parse_args()

    nao = Nao(args.ip, args.port)

    # FSM
    states = ['idle', 'end', 'leftward', 'rightward', 'rest',
              'forward', 'backward','shooting','shouting',
              'lateralShuffelLeftward','lateralShuffelRightward']


    machine = Machine(model=nao, states=states, transitions=[],
                      initial='idle', ignore_invalid_triggers=True)
    
    # Ajout des états par états de destination
    
    # Destination idle
    sourceIdle = ['idle', 'leftward', 'rightward', 'rest', 'forward',
                  'backward', 'rest', 'joyMove', 
                  'lateralShuffelLeftward', 'lateralShuffelRightward']
    machine.add_transition(trigger='sleep', sourceIdle, dest='idle',
                           before='doSleep')
    # Destination end
    sourceEnd = ['idle', 'end', 'leftward', 'rightward','rest', 'forward',
                 'backward', 'joyMove', 'lateralShuffelLeftward',
                 'lateralShuffelRightward']
    machine.add_transition(trigger='quit', sourceEnd, dest='end', 
                           before='doQuit')
    # Destination 'leftward'
    sourceLeftward = ['leftward', 'rest', 'rightward', 'forward', 'backward',
            'lateralShuffelLeftward', 'lateralShuffelRightward', 'joyMove']
    machine.add_transition(trigger='left', sourceLeftward, dest='leftward',
                           before='doLeft')
    # Destination 'rightward'
    sourceRightward = ['leftward', 'rightward', 'rest', 'forward', 'backward',
            'lateralShuffelLeftward', 'lateralShuffelRightward', 'joyMove']
    machine.add_transition(trigger='right', sourceRightward, dest='rightward',
                           before='doRight')
    # Destination 'rest'
    sourceRest=['idle', 'leftward', 'rightward', 'rest', 'forward', 'backward',
               'shooting','shouting', 'lateralShuffelLeftward',
               'lateralShuffelRightward', 'joyMove']
    machine.add_transition(trigger='standby', sourceRest, dest='rest',
                           before='doStandby')
    # Destination 'forward'
    sourceForward = ['leftward', 'rightward', 'rest', 'forward', 'backward',
            'lateralShuffelLeftward', 'lateralShuffelRightward', 'joyMove']
    machine.add_transition(trigger='go', sourceForward, dest='forward',
                           before='doGo')
    # Destination backward
    sourceBackward = ['leftward', 'rightward', 'rest', 'forward', 'backward',
            'lateralShuffelLeftward', 'lateralShuffelRightward', 'joyMove']
    machine.add_transition(trigger='goback', sourceBackward, dest='backward',
                           before='doGoback')
    # Destination 'shooting'
    sourceShooting = ['leftward', 'rightward', 'rest', 'forward', 'backward',
            'lateralShuffelLeftward', 'lateralShuffelRightward', 'joyMove']
    machine.add_transition(trigger='shoot',  sourceShooting, dest='shooting',
                           before='doShoot')
    # Destination 'shouting'
    sourceShouting = ['rest']
    machine.add_transition(trigger='shout',  sourceShouting, dest='shouting',
                           before='doShout')
    # Destination 'lateralShuffelLeftward'
    sourceLateralShuffelLeftward = ['leftward', 'rightward', 'rest',
                                    'forward','backward',
                                    'lateralShuffelLeftward',
                                    'lateralShuffelRightward']
    machine.add_transition(trigger='lateralShuffelLeft',
                           sourceLateralShuffelLeftward,
                           dest='lateralShuffelLeftward',
                           before='doLateralShuffelLeft')
    # Destination 'lateralShuffelRightward'
    sourceLateralShuffelRightward = ['leftward', 'rightward', 'rest',
                                     'forward','backward',
                                     'lateralShuffelLeftward',
                                     'lateralShuffelRightward', 'joyMove']
    machine.add_transition(trigger='lateralShuffelRight',
                           sourceLateralShuffelRightward ,
                           dest='lateralShuffelRightward',
                           before='doLateralShuffelRight')

    # Destination 'joyMove'
    sourceJoystick = ['backward', 'foreward', 'joyMove',
                      'lateralShuffelLeftward', 'lateralShuffelRightward',
                      'leftward', 'rest', 'rightward']
    machine.add_transition('joystick', sourceJoystick, 'joyMove',
                           before='doJoyMove')

    # IHM
    xref, yref, _ = nao.get_pos()
    scale = 50
    window_width = 640
    window_height = 480
    pg.init()
    window = pg.display.set_mode((window_width, window_height))

    detect_obstacle = True

    pg.joystick.init()
    jTolerance = 0.2

    for i in range(pg.joystick.get_count()):
        pg.joystick.Joystick(i).init()

    run = True
    while run:
        for event in pg.event.get():
            if event.type == JOYAXISMOTION:
                if event.axis == 0:
                    if abs(event.value) < jTolerance:
                        nao.set_y_speed(0)
                    else:
                        nao.set_y_speed(event.value)
                    nao.joystick()

                if event.axis == 1:
                    if abs(event.value) < jTolerance:
                        nao.set_x_speed(0)
                    else:
                        nao.set_x_speed(-event.value)
                    nao.joystick()

                if event.axis == 2:
                    if abs(event.value) < jTolerance:
                        nao.set_rotation_speed(0)
                    else:
                        nao.set_rotation_speed(-event.value)
                    nao.joystick()

            if event.type == JOYBUTTONDOWN:
                if event.button == 0:
                    nao.shoot()

            if event.type == KEYDOWN:
                if event.key == K_DOWN:
                    nao.goback()

                elif event.key == K_UP:
                    nao.go()

                elif event.key == K_LEFT:
                    nao.left()

                elif event.key == K_RIGHT:
                    nao.right()

                elif event.key == K_SPACE:
                    nao.shoot()

                elif event.key == K_q:
                    nao.quit()

                elif event.key == K_RETURN:
                    nao.standby()

                elif event.key == K_s:
                    nao.sleep()

                elif event.key == K_o:
                    detect_obstacle = not detect_obstacle

        if nao.state == 'end':
            run = False
        if nao.state == 'forward' and detect_obstacle:
            nao.avoid_obstacle()

        x, y, theta = nao.get_pos()
        x = int((x-xref)*scale)+window_width/2
        y = -int((y-yref)*scale)+window_height/2
        window.fill((0, 255, 0))
        pg.draw.circle(window, (0, 0, 255), (x, y), 6)

        pg.display.flip()
        pg.time.delay(100)

    pg.quit()
    exit()
예제 #5
0
def main():
    """A simple main"""
    parser = argparse.ArgumentParser()
    # Ottengo da terminale ip e porta
    parser.add_argument(
        "--ip",
        type=str,
        default="192.168.11.3",
        help="Robot IP address. On robot or Local Naoqi: use '192.168.11.3'.")
    parser.add_argument("--port",
                        type=int,
                        default=9559,
                        help="Naoqi port number")
    args = parser.parse_args()
    # Instanzio Nao, la connessione avviene automaticamente
    global nao
    nao = Nao(args.ip, args.port)
    nao.hello()
    # Inizializzo il microfono
    print Fore.GREEN + "### INIT SPEECH-TO-TEXT ###"
    print Style.RESET_ALL
    stt.init()
    # Apro un file strips di riferimento e quello che poi utlizzer per il planner
    # Inizio la routine: ascolto comando-> ottengo il piano -> eseguo il piano
    while True:
        print Fore.GREEN + "### SESSION ###"
        print Style.RESET_ALL
        source_strips = open("strips_nao_example.txt", "r")
        my_strips = open("strips_nao_test.txt", "w")
        # Inizializzo il file strips con Initial State e Goal State
        for index, line in enumerate(source_strips.readlines()):
            if index == 0:
                init_state_line = "Initial state: At(A)"
                posture = nao.get_posture()
                if posture == "Standing":
                    # potrebbe essere anche in un altra posizione
                    posture_line = "Posture(high)"
                else:
                    posture_line = "Posture(low)"
                init_state_line = init_state_line + "," + posture_line
                hand_full = nao.hand_full()
                if hand_full:
                    hand_line = "Hand(full),Bring(ball)"
                else:
                    hand_line = "Hand(empty)"
                init_state_line = init_state_line + "," + hand_line
                print init_state_line
                my_strips.write(init_state_line + "\n")
            elif index == 1:
                print(Fore.GREEN + "### SPEECH_TO_TEXT ###")
                print(Style.RESET_ALL)
                error = True
                while error:
                    error = False
                    try:
                        speech = stt.listen()
                    except Exception as e:
                        print "Something was wrong with speech recognizing.Retrying.."
                        error = True
                #speech = "prendi la palla"
                print Fore.GREEN + "### TEXT ANALYSIS ###"
                print Style.RESET_ALL
                goals = tt.strips_goals(speech)
                goal_state_line = "Goal state: "
                if goals != "":
                    goal_state_line += goals
                    print goal_state_line

                my_strips.write(goal_state_line)

            else:
                my_strips.write(line)

        my_strips.flush()
        source_strips.flush()
        my_strips.close()
        source_strips.close()
        # Ottengo il piano(lista di stringhe)
        print Fore.GREEN + "### STRIPS_PLANNER ###"
        print Style.RESET_ALL
        plan = sp.main()
        print Fore.GREEN + "### NAO CLASS ###"
        print Style.RESET_ALL
        # elaborare il piano ()
        try:
            if plan != None:
                for command in plan:
                    caratteri = list(command)
                    count = 0
                    for x in caratteri:
                        if x != "(":
                            count += 1
                        else:
                            break
                    # invoca un comando alla volta
                    nao.switcher(command[:count])
            else:
                pass

        except KeyboardInterrupt:
            print
            print "Interrupted by user"
            print "Stopping..."
            nao.disconnect()
        finally:
            print Fore.GREEN + "### END SESSION ###"
            print "\n"
            print Style.RESET_ALL
예제 #6
0
from nao import Nao

nao = Nao()

while True:
    input()
    print(nao.getPos())
예제 #7
0
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('--ip', help='addresse ip du nao')
    parser.add_argument('--port', help='port du nao', type=int)

    args = parser.parse_args()

    nao = Nao(args.ip, args.port)

    # FSM
    states = ['idle', 'end', 'leftward', 'rightward', 'rest',
              'forward', 'backward','shooting']

    transitions = [#état de départ idle
            {'trigger': 'sleep', 'source': 'idle', 'dest': 'idle',
                'before': 'doSleep'},
			{'trigger': 'quit', 'source': 'idle', 'dest': 'end',
                'before': 'doQuit'},
			{'trigger': 'standby', 'source': 'idle', 'dest': 'rest',
                'before': 'doWakeUp'},

      #état de départ end,on ne peut pas sortir de l'état end
			{'trigger': 'quit', 'source': 'end', 'dest': 'end',
                'before': 'doQuit'}, 

      #état de départ leftward	
			{'trigger': 'left', 'source': 'leftward', 'dest': 'leftward',
                'before': 'doLeft'},
			{'trigger': 'right', 'source': 'leftward', 'dest': 'rightward',
                'before': 'doRight'},
			{'trigger': 'standby', 'source': 'leftward', 'dest': 'rest',
                'before': 'doStandby'},
			{'trigger': 'go', 'source': 'leftward', 'dest': 'forward',
                'before': 'doGo'},
			{'trigger': 'goback', 'source': 'leftward', 'dest': 'backward',
                'before': 'doGoback'},
			{'trigger': 'shoot', 'source': 'leftward', 'dest': 'shooting',
                'before': 'doShoot'},
			{'trigger': 'sleep', 'source': 'leftward', 'dest': 'idle',
                'before': 'doSleep'},
			{'trigger': 'quit', 'source': 'leftward', 'dest': 'end',
                'before': 'doQuit'},
      
      #état de départ rightward			
			{'trigger': 'right', 'source': 'rightward', 'dest': 'rightward',
                'before': 'doRight'},
			{'trigger': 'standby', 'source': 'rightward', 'dest': 'rest',
                'before': 'doStandby'},
			{'trigger': 'go', 'source': 'rightward', 'dest': 'forward',
                'before': 'doGo'},
			{'trigger': 'goback', 'source': 'rightward', 'dest': 'backward',
                'before': 'doGoback'},
			{'trigger': 'shoot', 'source': 'rightward', 'dest': 'shooting',
                'before': 'doShoot'},
			{'trigger': 'sleep', 'source': 'rightward', 'dest': 'idle',
                'before': 'doSleep'},
			{'trigger': 'quit', 'source': 'rightward', 'dest': 'end',
                'before': 'doQuit'},
			{'trigger': 'left', 'source': 'rightward', 'dest': 'leftward',
                'before': 'doLeft'},

      #état de départ rest			
			{'trigger': 'standby', 'source': 'rest', 'dest': 'rest',
                'before': 'doStandby'},
			{'trigger': 'go', 'source': 'rest', 'dest': 'forward',
                'before': 'doGo'},
			{'trigger': 'goback', 'source': 'rest', 'dest': 'backward',
                'before': 'doGoback'},
			{'trigger': 'shoot', 'source': 'rest', 'dest': 'shooting',
                'before': 'doShoot'},
			{'trigger': 'sleep', 'source': 'rest', 'dest': 'idle',
                'before': 'doSleep'},
			{'trigger': 'quit', 'source': 'rest', 'dest': 'end',
                'before': 'doQuit'},
			{'trigger': 'left', 'source': 'rest', 'dest': 'leftward',
                'before': 'doLeft'},
			{'trigger': 'right', 'source': 'rest', 'dest': 'rightward',
                'before': 'doRight'},

      #état de départ forward			
			{'trigger': 'go', 'source': 'forward', 'dest': 'forward',
                'before': 'doGo'},
			{'trigger': 'goback', 'source': 'forward', 'dest': 'backward',
                'before': 'doGoback'},
			{'trigger': 'shoot', 'source': 'forward', 'dest': 'shooting',
                'before': 'doShoot'},
			{'trigger': 'sleep', 'source': 'forward', 'dest': 'idle',
                'before': 'doSleep'},
			{'trigger': 'quit', 'source': 'forward', 'dest': 'end',
                'before': 'doQuit'},
			{'trigger': 'left', 'source': 'forward', 'dest': 'leftward',
                'before': 'doLeft'},
			{'trigger': 'right', 'source': 'forward', 'dest': 'rightward',
                'before': 'doRight'},
			{'trigger': 'standby', 'source': 'forward', 'dest': 'rest',
                'before': 'doStandby'},

      #état de départ backward
			{'trigger': 'goback', 'source': 'backward', 'dest': 'backward',
                'before': 'doGoback'},
			{'trigger': 'shoot', 'source': 'backward', 'dest': 'shooting',
                'before': 'doShoot'},
			{'trigger': 'sleep', 'source': 'backward', 'dest': 'idle',
                'before': 'doSleep'},
			{'trigger': 'quit', 'source': 'backward', 'dest': 'end',
                'before': 'doQuit'},
			{'trigger': 'left', 'source': 'backward', 'dest': 'leftward',
                'before': 'doLeft'},
			{'trigger': 'right', 'source': 'backward', 'dest': 'rightward',
                'before': 'doRight'},
			{'trigger': 'standby', 'source': 'backward', 'dest': 'rest',
                'before': 'doStandby'},
			{'trigger': 'go', 'source': 'backward', 'dest': 'forward',
                'before': 'doGo'},

      #état de départ shooting, après le tire le nao se remet droit 
			#et laisse la main au joueur
		  {'trigger': 'standby', 'source': 'shooting', 'dest': 'rest',
                'before': 'doStandby'}]
			

    machine = Machine(model=nao, states=states, transitions=transitions,
                      initial='idle', ignore_invalid_triggers=True)

    xref, yref, _ = nao.get_pos()
    scale = 50
    l = 640
    h = 480
    pg.init()
    window = pg.display.set_mode((l, h))

    detect_obstacle = True

    run = True
    while run:
        for event in pg.event.get():
            if event.type == KEYDOWN:
                if event.key == K_DOWN:
                    nao.goback()

                elif event.key == K_UP:
                    nao.go()

                elif event.key == K_LEFT:
                    nao.left()

                elif event.key == K_RIGHT:
                    nao.right()

                elif event.key == K_SPACE:
                    nao.shoot()

                elif event.key == K_q:
                    nao.quit()

                elif event.key == K_RETURN:
                    nao.standby()

                elif event.key == K_s:
                    nao.sleep()

                elif event.key == K_o:
                    detect_obstacle = !detect_obstacle

        if nao.state == 'end':
            run = False
        if nao.state == 'forward' and detect_obstacle:
            nao.avoid_obstacle()

        x, y, theta = nao.get_pos()
        x = int((x-xref)*scale)+l/2 
        y = -int((y-yref)*scale)+h/2
        window.fill((0,255,0))
        pg.draw.circle(window, (0,0,255), (x,y), 6)

        pg.display.flip()
        pg.time.delay(100)

    pg.quit()
    exit()
예제 #8
0
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('--ip', help='addresse ip du nao')
    parser.add_argument('--port', help='port du nao', type=int)

    args = parser.parse_args()

    nao = Nao(args.ip, args.port)

    # FSM
    states = ['idle', 'end', 'turning_left', 'turning_right', 'rest',
              'walking', 'walking_back']

    transitions = [
            {'trigger': 'go', 'source': 'idle', 'dest': 'walking',
                'before': 'walk'},
            {'trigger': 'wait', 'source': 'walking', 'dest': 'idle',
                'before': 'stop_move'},
            {'trigger': 'turn_left', 'source': 'idle', 'dest': 'turning_left',
                'before': 'rotate_left'},
            {'trigger': 'wait', 'source': 'turning_left', 'dest': 'idle',
                'before': 'stop_move'},
            {'trigger': 'turn_right', 'source': 'idle',
                'dest': 'turning_right', 'before': 'rotate_right'},
            {'trigger': 'wait', 'source': 'turning_right', 'dest': 'idle',
                'before': 'stop_move'},
            {'trigger': 'back', 'source': 'idle', 'dest': 'walking_back',
                'before': 'walk_back'},
            {'trigger': 'wait', 'source': 'walking_back', 'dest': 'idle',
                'before': 'stop_move'},
            {'trigger': 'stop', 'source': 'rest', 'dest': 'end'},
            {'trigger': 'rest', 'source': 'idle', 'dest': 'rest',
                'before': 'crouch'},
            {'trigger': 'go', 'source': 'rest', 'dest': 'idle',
                'before': 'wake_up'}
            ]

    machine = Machine(model=nao, states=states, transitions=transitions,
                      initial='idle', ignore_invalid_triggers=True)

    pg.init()
    window = pg.display.set_mode((640, 480))

    run = True
    while run:
        for event in pg.event.get():
            if event.type == KEYDOWN:
                if event.key == K_b:
                    nao.back()

                elif event.key == K_c:
                    nao.rest()

                elif event.key == K_g:
                    nao.go()

                elif event.key == K_l:
                    nao.turn_left()

                elif event.key == K_r:
                    nao.turn_right()

                elif event.key == K_s:
                    nao.stop()

                elif event.key == K_w:
                    nao.wait()

        if nao.state == 'end':
            run = False
        if nao.state == 'walking':
            nao.avoid_obstacle()
        time.sleep(0.1)