Exemplo n.º 1
0
    def find_balloon(self, color):
        if not self.balloonmode.alive:
            return False

        self.balloonmode.logger.logevent(SearchState.LOGGER_NAME, "Zoeken naar ballon " + color, Logger.MESSAGE)

        img = BalloonVision.get_image()

        search = BalloonVision.find_balloon(color, img)

        while not search[0] and self.balloonmode.alive:
            if self.moveTo:
                #Beweeg naar links
                self.balloonmode.movementHandler.move_one_turn(True)
                #self.balloonmode.movementHandler.move(0, 0, 180, 100)
                #time.sleep(self.balloonmode.movementHandler.TIME_TURN * 5)
                #self.balloonmode.movementHandler.move(0, 0, 0, 0)

            elif not self.moveTo:
                #Beweeg naar rechts
                self.balloonmode.movementHandler.move_one_turn(False)
                # self.balloonmode.movementHandler.move(0, 0, 181, 100)
                # time.sleep(self.balloonmode.movementHandler.TIME_TURN * 5)
                # self.balloonmode.movementHandler.move(0, 0, 0, 0)

            img = BalloonVision.get_image()
            search = BalloonVision.find_balloon(color, img)

        if not self.balloonmode.alive:
            return False

        return search[1]
Exemplo n.º 2
0
    def move_balloon_to_center(self, blob, center, color):
        self.balloonmode.logger.logevent(MoveState.LOGGER_NAME, "Ballon " + color + " naar het midden bewegen", Logger.MESSAGE)
        verschil = self.diff_to_center(blob, center)
        while abs(verschil) > 100 and self.balloonmode.alive: #100 px marge voor het midden
            print "Blob nog niet in het midden"
            if verschil > 0:
                #naar links draaien
                self.balloonmode.movementHandler.move_one_turn(True)
                #self.balloonmode.movementHandler.move(0, 0, 181, 100)
                #time.sleep(self.balloonmode.movementHandler.TIME_TURN)
                #self.balloonmode.movementHandler.move(0, 0, 0, 0)
            else:
                #naar rechts draaien
                self.balloonmode.movementHandler.move_one_turn(False)
                #self.balloonmode.movementHandler.move(0, 0, 180, 100)
                #time.sleep(self.balloonmode.movementHandler.TIME_TURN)
                #self.balloonmode.movementHandler.move(0, 0, 0, 0)

            img = BalloonVision.get_image()
            search = BalloonVision.find_balloon(color, img)

            blob = search[1]

            if search[0]:
                verschil = self.diff_to_center(blob, center)

        if not self.balloonmode.alive:
            return False

        return True
Exemplo n.º 3
0
    def move_to_balloon(self, color, blob):
        self.balloonmode.logger.logevent(MoveState.LOGGER_NAME, "Naar ballon " + color + " lopen", Logger.MESSAGE)

        #Midden van het beeld
        center = 640 / 2

        #Draaien zodat de ballon in het midden van de camera staat
        move = self.move_balloon_to_center(blob, center, color)

        if not move:
            return False

        #loop naar de ballon
        self.balloonmode.logger.logevent(MoveState.LOGGER_NAME, "Vooruit lopen", Logger.MESSAGE)

        #Max area = 640*480 = 307200
        area = 0
        not_found_count = 0

        #vooruit lopen
        for i in xrange(0, 5):
            self.balloonmode.movementHandler.move_one_step()

        #self.balloonmode.movementHandler.move(0, 100, 0, 0)
        #time.sleep(self.balloonmode.movementHandler.TIME_MOVE_ONE_STEP * 5)
        #self.balloonmode.movementHandler.move(0, 0, 0, 0)

        while area < 300000 and self.balloonmode.alive:
            if not_found_count >= 5:
                self.balloonmode.logger.logevent(MoveState.LOGGER_NAME, color + " ballon kwijt, wat nu?!", Logger.MESSAGE)
                return False

            img = BalloonVision.get_image()
            search = BalloonVision.find_balloon(color, img, True)

            if search[0]:
                #Ballon als nodig naar het midden krijgen.
                move = self.move_balloon_to_center(search[1], center, color)
                if not move:
                    return False
                
                area = search[1].area()
                for i in xrange(0,5):
                    self.balloonmode.movementHandler.move_one_step()

                #self.balloonmode.movementHandler.move(0, 100, 0, 0)
                #time.sleep(self.balloonmode.movementHandler.TIME_MOVE_ONE_STEP * 5)
                #self.balloonmode.movementHandler.move(0, 0, 0, 0)

            else:
                not_found_count += 1

        if not self.balloonmode.alive:
            return False

        return True
Exemplo n.º 4
0
    def balloon_alive(self, color):
        #Afbeelding ophalen
        img = BalloonVision.get_image()

        #Blob vinden
        return BalloonVision.find_balloon(color, img, True)[0]