feat: task-1

This commit is contained in:
havocrao 2025-08-18 22:38:52 +08:00
parent aab4628dcd
commit d26f233cea
2 changed files with 30 additions and 42 deletions

View File

@ -31,7 +31,6 @@ from task_2_5.task_2_5 import run_task_2_5, run_task_2_5_back
from task_4.task_4 import run_task_4, run_task_4_back from task_4.task_4 import run_task_4, run_task_4_back
from task_test.task_left_line import run_task_test from task_test.task_left_line import run_task_test
from task_5.task_5 import run_task_5 from task_5.task_5 import run_task_5
from task_4.pass_bar import pass_bar
from base_move.turn_degree import turn_degree, turn_degree_v2 from base_move.turn_degree import turn_degree, turn_degree_v2
from base_move.center_on_dual_tracks import center_on_dual_tracks from base_move.center_on_dual_tracks import center_on_dual_tracks
from base_move.go_to_xy import go_to_x_v2, go_to_y_v2 from base_move.go_to_xy import go_to_x_v2, go_to_y_v2
@ -52,14 +51,13 @@ def main():
Ctrl.base_msg.stand_up() Ctrl.base_msg.stand_up()
print('yuyin') print('yuyin')
# speak('nihao') # speak('nihao')
# Ctrl.base_msg.stop() # BUG 垃圾指令 for eat Ctrl.base_msg.stop() # BUG 垃圾指令 for eat
pass_bar(Ctrl, msg)
Ctrl.base_msg.stand_up() Ctrl.base_msg.stand_up()
# time.sleep(100) # TEST, # time.sleep(100) # TEST,
# run_task_1(Ctrl, msg, time_sleep=TIME_SLEEP) run_task_1(Ctrl, msg, time_sleep=TIME_SLEEP)
# arrow_direction = run_task_2(Ctrl, msg, xy_flag=False) # arrow_direction = run_task_2(Ctrl, msg, xy_flag=False)
# arrow_direction = 'right' # TEST # arrow_direction = 'right' # TEST

View File

@ -6,29 +6,20 @@ from sensor_msgs.msg import Image
from cv_bridge import CvBridge from cv_bridge import CvBridge
import cv2 import cv2
import os import os
from pyzbar import pyzbar
from threading import Thread, Lock from threading import Thread, Lock
import time import time
import queue import queue
from datetime import datetime from datetime import datetime
#from utils.log_helper import get_logger from utils.log_helper import get_logger
# 导入AI相机服务 # 导入AI相机服务
from protocol.srv import CameraService from protocol.srv import CameraService
# qrcode
from pyzbar import pyzbar
#!/usr/bin/env python3
import rclpy
from rclpy.node import Node
from sensor_msgs.msg import Image
from cv_bridge import CvBridge
import cv2
import os
import time
from datetime import datetime
from protocol.srv import CameraService
class ImageSubscriber(Node): class ImageSubscriber(Node):
def __init__(self): def __init__(self):
super().__init__('image_subscriber') super().__init__('ai_camera_demo')
# 初始化安全控制标志 # 初始化安全控制标志
self._shutdown_flag = False self._shutdown_flag = False
@ -205,13 +196,12 @@ class ImageProcessor:
def get_current_image(self): def get_current_image(self):
return self.image_subscriber.cv_image return self.image_subscriber.cv_image
def decode_qrcode(self, img=None): def decode_qrcodes(self, img=None):
"""使用pyzbar解码QR码""" """使用pyzbar解码QR码"""
if img is None: if img is None:
img = self.get_current_image() img = self.get_current_image()
if img is None:
if img is None: return None
return None
try: try:
# 使用pyzbar解码所有条形码/QR码 # 使用pyzbar解码所有条形码/QR码
@ -227,31 +217,31 @@ class ImageProcessor:
print(f"QR码解码错误: {str(e)}") print(f"QR码解码错误: {str(e)}")
return None return None
def decode_all_qrcodes(self, img=None): # def decode_all_qrcodes(self, img=None):
"""解码图像中的所有QR码/条形码""" # """解码图像中的所有QR码/条形码"""
if img is None: # if img is None:
img = self.get_current_image() # img = self.get_current_image()
if img is None: # if img is None:
return [] # return []
try: # try:
decoded_objects = pyzbar.decode(img) # decoded_objects = pyzbar.decode(img)
results = [] # results = []
for obj in decoded_objects: # for obj in decoded_objects:
result = { # result = {
'data': obj.data.decode('utf-8'), # 'data': obj.data.decode('utf-8'),
'type': obj.type, # 'type': obj.type,
'rect': obj.rect, # 位置信息 (x, y, width, height) # 'rect': obj.rect, # 位置信息 (x, y, width, height)
'polygon': obj.polygon # 多边形顶点 # 'polygon': obj.polygon # 多边形顶点
} # }
results.append(result) # results.append(result)
return results # return results
except Exception as e: # except Exception as e:
print(f"批量QR码解码错误: {str(e)}") # print(f"批量QR码解码错误: {str(e)}")
return [] # return []
def start_async_scan(self, interval=0.3): def start_async_scan(self, interval=0.3):
""" """