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 recognize_card(self):
        redBlob = None
        greenBlob = None
        blueBlob = None
        blobs = None

        self.balloonmode.logger.logevent(CardState.LOGGER_NAME, "Bezig met zoeken", Logger.MESSAGE)

        #img = Image("C:\\cards\\realCard1.jpg")
        #img = Image("C:\\muur\\card.jpg")

        #Blobs uit de afbeelding herkennen
        blobs = BalloonVision.recognize_card()

        #Zolang er geen blobs zijn gevonden en we alive zijn. Door blijven zoeken
        while not blobs[0] or not blobs[1] or not blobs[2] and self.balloonmode.alive:

            blobs = BalloonVision.recognize_card()

        #Voorbij de while, kaart wordt voorgehouden. Of niet meer alive
        if not self.balloonmode.alive:
            return False

        #Blobs in variabelen zetten
        redBlob, greenBlob, blueBlob = blobs

        self.balloonmode.logger.logevent(CardState.LOGGER_NAME, "Gevonden.", Logger.MESSAGE)
        #Blobs sorteren op y (hoogte)
        blobs.sort(key=lambda x: x.y)

        return [blobs[0].Name, blobs[1].Name, blobs[2].Name]
Exemplo n.º 4
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.º 5
0
    def get_balloon_order(self):
        if not self.balloonmode.alive:
            return False

        #Alle balonnen kunnen gezien worden
        img = BalloonVision.get_image()

        red = BalloonVision.find_red_balloon(img)[1]
        green = BalloonVision.find_green_balloon(img)[1]
        blue = BalloonVision.find_blue_balloon(img)[1]

        while (red is None or green is None or blue is None) and self.balloonmode.alive:
            img = BalloonVision.get_image()
            red = BalloonVision.find_red_balloon(img)[1]
            green = BalloonVision.find_green_balloon(img)[1]
            blue = BalloonVision.find_blue_balloon(img)[1]

        if not self.balloonmode.alive:
            return False

        red.Name = "red"
        green.Name = "green"
        blue.Name = "blue"

        balloonOrder = [red, green, blue]

        balloonOrder.sort(key=lambda x: x.x)

        balloonOrder = [balloonOrder[0].Name, balloonOrder[1].Name, balloonOrder[2].Name]

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

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