This commit is contained in:
2025-11-17 00:05:40 +08:00
parent f860c5a216
commit e3ecd0550f
55 changed files with 3204 additions and 528 deletions

View File

@ -8,7 +8,7 @@ from hardware.relay import RelayController
from hardware.inverter import InverterController
from hardware.transmitter import TransmitterController
from hardware.RFID.rfid_service import rfid_service
from vision.camera import CameraController
from vision.camera import DualCameraController
from vision.detector import VisionDetector
from feeding.controller import FeedingController
@ -28,9 +28,15 @@ class FeedingControlSystem:
self.transmitter_controller = TransmitterController(self.relay_controller)
# 初始化视觉系统
self.camera_controller = CameraController()
self.camera_controller = DualCameraController(settings.camera_configs)
self.vision_detector = VisionDetector(settings)
# 初始化RFID控制器
self.rfid_controller = rfid_service(
host=settings.rfid_host,
port=settings.rfid_port
)
# 初始化下料控制器
self.feeding_controller = FeedingController(
self.relay_controller,
@ -43,11 +49,7 @@ class FeedingControlSystem:
settings
)
# 初始化RFID控制器
self.rfid_controller = rfid_service(
host=settings.rfid_host,
port=settings.rfid_port
)
# 线程管理
self.monitor_thread = None
@ -60,39 +62,38 @@ class FeedingControlSystem:
print("初始化控制系统...")
# 设置摄像头配置
self.camera_controller.set_config(
camera_type=self.settings.camera_type,
ip=self.settings.camera_ip,
port=self.settings.camera_port,
username=self.settings.camera_username,
password=self.settings.camera_password,
channel=self.settings.camera_channel
)
# self.camera_controller.set_config(
# camera_type=self.settings.camera_type,
# ip=self.settings.camera_ip,
# port=self.settings.camera_port,
# username=self.settings.camera_username,
# password=self.settings.camera_password,
# channel=self.settings.camera_channel
# )
# 初始化摄像头
if not self.camera_controller.setup_capture():
raise Exception("摄像头初始化失败")
# # 初始化摄像头
# if not self.camera_controller.setup_capture():
# raise Exception("摄像头初始化失败")
# 加载视觉模型
if not self.vision_detector.load_models():
raise Exception("视觉模型加载失败")
# if not self.vision_detector.load_models():
# raise Exception("视觉模型加载失败")
if not self.settings.debug_feeding:
if not self.check_device_connectivity():
raise Exception("设备连接失败")
self.camera_controller.start_cameras()
# 启动系统监控(要料,破拱)线程
self.start_monitoring()
if not self.check_device_connectivity():
raise Exception("设备连接失败")
# 启动视觉控制(角度、溢出)线程
self.start_visual_control()
# 启动系统监控
self.start_monitoring()
# 启动对齐检查线程
self.start_alignment_check()
# 启动视觉控制
self.start_visual_control()
# 启动对齐检查
self.start_alignment_check()
# 启动下料轮询线程
# 启动下料线程
self.start_lower_feeding()
print("控制系统初始化完成")
def start_monitoring(self):
@ -126,7 +127,8 @@ class FeedingControlSystem:
"""视觉控制循环"""
while self.state.running:
try:
current_frame = self.camera_controller.capture_frame()
print('visual_control')
current_frame = self.camera_controller.get_single_latest_frame()
if current_frame is not None:
# 执行视觉控制逻辑
self.feeding_controller.visual_control(current_frame)
@ -148,13 +150,15 @@ class FeedingControlSystem:
while self.state.running:
try:
if self.state._lower_feeding_stage == 4: # 等待对齐阶段
current_frame = self.camera_controller.capture_frame()
current_frame = self.camera_controller.get_single_latest_frame()
if current_frame is not None:
self.state.vehicle_aligned = self.vision_detector.detect_vehicle_alignment(current_frame)
if self.state.vehicle_aligned:
print("检测到模具车对齐")
else:
print("模具车未对齐")
else:
print('未检测到图像')
time.sleep(self.settings.alignment_check_interval)
except Exception as e:
print(f"对齐检查循环错误: {e}")