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
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)
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)
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)
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)
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()
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")