コード例 #1
0
 def identify_color(self, robot):
     """
     Identifica a média, o centro e a maior área do creeper com base na visão do robô
     :param self, robot:
     :return media, centro, maior_area:
     """
     media, centro, maior_area = visao_module.identifica_cor(
         robot.getImage(), self.getColor())
     return media, centro, maior_area
コード例 #2
0
def roda_todo_frame(imagem):
    global cv_image
    global media
    global centro
    global maior_area
    global viu_linhas
    global viu_linha1
    global viu_linha2
    global resultados
    global achou_obj
    global centro_detect
    global x_objeto
    global area_objeto

    now = rospy.get_rostime()
    imgtime = imagem.header.stamp
    lag = now - imgtime  # calcula o lag
    delay = lag.nsecs
    # print("delay ", "{:.3f}".format(delay/1.0E9))
    if delay > atraso and check_delay == True:
        #  print("Descartando por causa do delay do frame:", delay)
        return
    try:
        antes = time.clock()
        cv_image = bridge.compressed_imgmsg_to_cv2(imagem, "bgr8")

        media, centro, maior_area = visao_module.identifica_cor(cv_image)

        # Note que os resultados já são guardados automaticamente na variável
        # chamada resultados
        centro_detect, imagem, resultados = visao_module.processa(cv_image)
        vc_temp = visao_module.find_circles(cv_image)
        if vc_temp == 0:
            viu_linhas = True
        elif vc_temp == 1:
            viu_linha1 = True
        elif vc_temp == 2:
            viu_linha2 = True
        for r in resultados:
            if r[0] == visao_module.instrucoes["base"]:
                achou_obj = True
                x_objeto = (r[2][0] + r[3][0]) / 2
                area_objeto = (r[3][0] - r[2][0]) * (r[3][1] - r[2][1])

            #print(r)
            # (CLASSES[idx], confidence*100, (startX, startY),(endX, endY)
            pass

        depois = time.clock()

    except CvBridgeError as e:
        print('ex', e)
コード例 #3
0
def roda_todo_frame(imagem):
    global cv_image
    global media
    global centro

    global resultados
    global cx
    global bx
    global maior_contorno_area
    global cor
    global fecha_creeper
    global lista_detect
    global img_detect
    global lista_objects
    global achou_objeto
    global x_detect

    now = rospy.get_rostime()
    imgtime = imagem.header.stamp
    lag = now - imgtime
    delay = lag.nsecs

    try:
        antes = time.clock()
        cv_image = bridge.compressed_imgmsg_to_cv2(imagem, "bgr8")
        temp_image = bridge.compressed_imgmsg_to_cv2(imagem, "bgr8")

        cx = point_fuga.image_callback(temp_image)
        bx = point_fuga2.image_callback(temp_image)
        centro, img, resultados = visao_module.processa(cv_image)

        media, maior_contorno_area = visao_module.identifica_cor(
            cv_image, goal[0])

        img_detect, lista_detect = mobilenet_simples.detect(cv_image)

        for objeto in lista_detect:
            if objeto[0] == goal[2]:
                x_detect = (objeto[2][0] + objeto[3][0]) / 2
                achou_objeto = True

        # print(lista_detect)
        # fecha_creeper = tutorial.close_gripper()

        depois = time.clock()

        cv2.imshow("Camera", img_detect)
        cv2.waitKey(1)

    except CvBridgeError as e:
        print('ex', e)
コード例 #4
0
def roda_todo_frame(imagem):
    global cv_image
    global media
    global centro
    global maior_area
    global resultados
    global pink
    global red
    global green
    global bx
    global reconheceu
    # global imagem

    now = rospy.get_rostime()
    imgtime = imagem.header.stamp
    lag = now - imgtime  # calcula o lag
    delay = lag.nsecs
    # print("delay ", "{:.3f}".format(delay/1.0E9))
    if delay > atraso and check_delay == True:
        print("Descartando por causa do delay do frame:", delay)
        return
    try:
        antes = time.clock()
        cv_image = bridge.compressed_imgmsg_to_cv2(imagem, "bgr8")
        # Note que os resultados já são guardados automaticamente na variável
        # chamada resultados
        green = "green"
        red = "red"
        pink = "pink"
        bicycle = "bicycle"
        dog = "dog"
        cat = "cat"
        bird = "bird"
        centro, imagem, resultados, reconheceu = visao_module.processa(
            cv_image, bicycle)
        maior_area, bx = visao_module.identifica_cor(cv_image, pink)

        #qualquer, centro, maior_area, media =  visao_module.identifica_cor(cv_image)

        for r in resultados:
            # print(r) - print feito para documentar e entender
            # o resultado
            pass

        depois = time.clock()
        # Desnecessário - Hough e MobileNet já abrem janelas
        # cv2.imshow("Camera", cv_image)
        #cv2.waitKey(2)

    except CvBridgeError as e:
        print('ex', e)
コード例 #5
0
def roda_todo_frame(imagem):
    #print("frame")
    global cv_image
    global media
    global centro
    global resultados
    global maior_area
    global central
    global mostra_visao

    now = rospy.get_rostime()
    imgtime = imagem.header.stamp
    lag = now - imgtime  # calcula o lag
    delay = lag.nsecs
    # print("delay ", "{:.3f}".format(delay/1.0E9))
    if delay > atraso and check_delay == True:
        print("Descartando por causa do delay do frame:", delay)
        return
    try:
        antes = time.clock()
        temp_image = bridge.compressed_imgmsg_to_cv2(imagem, "bgr8")
        # Note que os resultados já são guardados automaticamente na variável
        # chamada resultados
        centro, saida_net, resultados = visao_module.processa(temp_image)
        media, central, maior_area, mostra_visao = visao_module.identifica_cor(
            temp_image)
        #print("IDENTIFICA {0} {1}".format(maior_area, central))

        #results =  visao_module.identifica_cor(cv_image)

        for r in resultados:
            #print(r) - print feito para documentar e entender
            # o resultado
            pass

        depois = time.clock()
        #print("CENTRO {0}".format(centro))
        # Desnecessário - Hough e MobileNet já abrem janelas
        cv_image = saida_net.copy()
    except CvBridgeError as e:
        print('ex', e)
コード例 #6
0
    image_sub = rospy.Subscriber('/camera/rgb/image_raw', Image,
                                 image_callback)
    cmd_vel_pub = rospy.Publisher('/cmd_vel', Twist, queue_size=3)
    twist = Twist()

    recebe_scan = rospy.Subscriber("/scan", LaserScan, scaneou)

    odom = rospy.Subscriber(
        "/odom", Odometry,
        odometria)  #Baseado no codigo do gabarito da questao 3 da prova 1

    while not rospy.is_shutdown():

        if image is not None:
            cv2.imshow("window", image)
            media, centro, maior_area = visao_module.identifica_cor(
                image, goal[0])

            cv2.waitKey(3)

            #print(x_inicial)
            #print(y_inicial)
            #print(x)
            #print(y)
            if dist <= 0.25 and dist > 0:
                bateu = True
                print("Bateu")
            if maior_area > 3000:
                perto = True
                print("perto")
            if media[0] < 400 and media[0] > 0 and perto and bateu == False:
                centraliza_creeper()
コード例 #7
0
                                              Vector3(0, 0, 0))
                            velocidade_saida.publish(vel_trans)
                            rospy.sleep(0.2)

                    at_base = True

                if at_base == True and tracking == False:
                    print("at base")

                    tracking = True
                    at_base = False
                    final = True

                if tracking:  #tracking or creeper_acquired:

                    ymedia, ycenter, yma, yframe = visao_module.identifica_cor(
                        frame, "yellow")

                    #if len(media) != 0 and len(centro0) !=0 and maior_area > 500:

                    if (ymedia[0] > ycenter[0]):
                        vel = Twist(Vector3(0.2, 0, 0), Vector3(0, 0, -0.1))
                        velocidade_saida.publish(vel)
                    if (ymedia[0] < ycenter[0]):
                        vel = Twist(Vector3(0.2, 0, 0), Vector3(0, 0, 0.1))
                        velocidade_saida.publish(vel)
                    #if ymedia[0] <= 0:
                    #vel = Twist(Vector3(0,0,0), Vector3(0,0,0.1))

                if final and tracking:
                    ymedia, ycenter, yma, yframe = visao_module.identifica_cor(
                        frame, "yellow")