Esempio n. 1
0
 def __init__(self):
     self.sides = {
         'L': Cube_side('L', "orange"),
         'F': Cube_side('F', "green"),
         'R': Cube_side('R', "red"),
         'B': Cube_side('B', "blue"),
         'U': Cube_side('U', "white"),
         'D': Cube_side('D', "yellow")
     }
     self.turns = Rotate(self.sides)
Esempio n. 2
0
def main():
    rospy.init_node('main_node')
    waits = lambda k: k.wait_for_cb()

    move = lambda : waits(MovementManager(0.5))
    rotate = lambda: waits(Rotate(get_angle()))

    move_to_red = lambda: waits(MoveToRedObject(repeat=20))

    funcs = [move, rotate, object_detector, move_to_red, move_arm]

    stop = False
    while not stop:
        inp = prompt()
        try:
            clear()
            choice = int(inp) - 1
            (funcs[choice]())
            continue

        except ValueError:
            if inp == 'q':
                stop = True
                continue

        except IndexError:
            pass

        print('Invalid choice. try again')
Esempio n. 3
0
    def move_to_red(self):
        """
        :param msg: msg of type Float32, distance from red object
        """
        object_detector = ObjectDetector()
        res = object_detector.get_distance_from_red_object()
        if res is None:
            rospy.loginfo("Red object was not detected")
            return False

        distance, angle = res
        #if self.moving:
        #    self.force_close()
        #    return

        #distance = msg.data
        rospy.loginfo("distance from object : {}".format(distance/1000.0))
        distance = max(0, distance/1000.0-self.MAX_DISTANCE_FROM_OBJECT-self.ARM_LENGTH)
        rospy.loginfo("dis to red object : {}".format(distance))

        if angle > 180:
            angle = angle - 360
        
	if abs(angle) > 8:
	    Rotate(0.5*angle).wait_for_cb()
        self.moving=True
        MovementManager(distance, obstacle_threshold=0.4, check_obstacles=True, threshold_direction=True).wait_for_cb()
        return True
Esempio n. 4
0
def main():
    playTournament(
        numOfGames=200,
        players=[NN(),
                 Rotate(),
                 BeatPrevious(),
                 Probability(),
                 Conditional()])
Esempio n. 5
0
import numpy as np
import argparse
import cv2
import PIL
import PIL.Image
import math
import imutils
import pytesseract
import os
from matplotlib import pyplot as plt
pytesseract.pytesseract.tesseract_cmd = 'C:/Program Files (x86)/Tesseract-OCR/tesseract'
ext = Extract()
fc = Findcontours()
tp = Textprocessing()
rs = Resize()
rot = Rotate()
rot90 = Rotate90()


class final:
    def main(self, Input_image):
        rotated = rot.rotateImage(Input_image)
        bar = ext.barcode(rotated)
        text = tp.nlp(bar)
        rotated90 = rot90.rotateImage(Input_image)
        bar90 = ext.barcode(rotated90)
        text90 = tp.nlp(bar90)
        if (
                True
        ):  #if(len(text)==0 and len(text90)==0): there might be IDs other than barcode ID too
            res = rs.rsize(Input_image)
Esempio n. 6
0
def Compare(crdnt1, crdnt2):
    x1 = crdnt1[0]
    y1 = crdnt1[1]

    x2_1, y2_1 = Rotate(crdnt2)
    return [x1 - x2_1, y1 - y2_1]
Esempio n. 7
0
    def run(self):
        self.tracker1.getVideo(self.Video1)
        self.tracker2.getVideo(self.Video2)
        self.db.connect()
        self._id = 0
        self.idChecker = CamId()

        while True:
            if self.stopC == 1:
                break

            center1 = self.tracker1.trackFrame()
            center2 = self.tracker2.trackFrame()

            if center1 == -1 or center2 == -1:
                break

            if center1 == None:
                scaledCenter = Transformation(
                    center2, self.trapezium.getTrapeziumBaseLarge(),
                    self.trapezium.getTrapeziumBaseSmall(),
                    self.trapezium.getTrapeziumHeight(),
                    self.trapezium.getZeroPointPosition())
                self.center = Rotate(scaledCenter)
                delta = None
                self.camInd = "Вторая"
            elif center2 == None:
                scaledCenter = Transformation(
                    center1, self.trapezium.getTrapeziumBaseLarge(),
                    self.trapezium.getTrapeziumBaseSmall(),
                    self.trapezium.getTrapeziumHeight(),
                    self.trapezium.getZeroPointPosition())
                self.center = scaledCenter
                delta = None
                self.camInd = "Первая"
            else:
                scaledCenter1 = Transformation(
                    center1, self.trapezium.getTrapeziumBaseLarge(),
                    self.trapezium.getTrapeziumBaseSmall(),
                    self.trapezium.getTrapeziumHeight(),
                    self.trapezium.getZeroPointPosition())
                scaledCenter2 = Transformation(
                    center2, self.trapezium.getTrapeziumBaseLarge(),
                    self.trapezium.getTrapeziumBaseSmall(),
                    self.trapezium.getTrapeziumHeight(),
                    self.trapezium.getZeroPointPosition())

                delta = Compare(scaledCenter1, scaledCenter2)
                self.center = ([
                    int((scaledCenter1[0] + scaledCenter2[0]) / 2),
                    int((scaledCenter1[1] + scaledCenter2[1]) / 2)
                ])
                delta = [int(delta[0]), int(delta[1])]
                self.camInd = "Обе"

            self.center = [int(self.center[0]), int(self.center[1])]

            if not self.idChecker.isCurrent(self.center):
                self._id = self._id + 1

            self.GetNewCoordinatesInt.emit(self.center[0], self.center[1])
            self.GetNewCoordinatesStr.emit("Позиция = " + str(self.center) +
                                           "  Камера: " + self.camInd +
                                           "  Объект: " + str(self._id))

            self.db.vrite(self.center, delta, self.camInd, self._id)
            if self.runIndicator != 1:
                self.runIndicator = 1

        self.db.commit()
        self.db.disconnect()
        self.tracker1.stop()
        self.tracker2.stop()
        if self.stopC != 0:
            self.stopC = 0
        if self.runIndicator != 0:
            self.runIndicator = 0
Esempio n. 8
0
from rotate import Rotate

rotate=Rotate([1,3,5,7,8,9,10,12],2)
rotate.leftrotateone()
Esempio n. 9
0
class Cube:
    def __init__(self):
        self.sides = {
            'L': Cube_side('L', "orange"),
            'F': Cube_side('F', "green"),
            'R': Cube_side('R', "red"),
            'B': Cube_side('B', "blue"),
            'U': Cube_side('U', "white"),
            'D': Cube_side('D', "yellow")
        }
        self.turns = Rotate(self.sides)

    def draw(self, x, y, size):
        window = turtle.Screen()
        turtle.speed(0)
        turtle.pensize(2)
        turtle.tracer(0, 0)
        side_size = size * 3
        self.sides['L'].draw_side(x, y, size)
        self.sides['F'].draw_side(x + side_size, y, size)
        self.sides['R'].draw_side(x + (2 * side_size), y, size)
        self.sides['B'].draw_side(x + (3 * side_size), y, size)
        self.sides['U'].draw_side(x + side_size, y + side_size, size)
        self.sides['D'].draw_side(x + side_size, y - side_size, size)
        turtle.hideturtle()
        turtle.update()

    def turn(self, operation):
        rows = "U U' U2 U2' Uw u u' D D' D2 D2' Dw d d'B B'B2 B2' Bw b b' E E'"
        column = "R R'R2 R2' Rw r r' L L'L2 L2' Lw l l' M M'"
        special = "F F' F2 F2' Fw f f' B B'B2 B2' Bw b b' S S'"
        if operation in rows:
            self.turns.rows_operations(operation)
        if operation in column:
            self.turns.column_operations(operation)
        if operation in special:
            self.turns.special_operations(operation)
        turtle.update()

    def random_display(self, x, y, size, operations):
        rows = "U U' U2 U2' Uw u u' D D' D2 D2' Dw d d'B B'B2 B2' Bw b b' E E'"
        column = "R R'R2 R2' Rw r r' L L'L2 L2' Lw l l' M M'"
        special = "F F' F2 F2' Fw f f' B B'B2 B2' Bw b b' S S'"
        for i in range(15):
            operation = random.choice(operations)
            if operation in rows:
                self.turns.rows_operations(operation)
            if operation in column:
                self.turns.column_operations(operation)
            if operation in special:
                self.turns.special_operations(operation)