update laser cabration

This commit is contained in:
huangzhenwei2
2026-01-13 00:01:39 +08:00
parent a0019b8b0e
commit 83fe0776eb
3 changed files with 333 additions and 11 deletions

85
main.py
View File

@@ -23,17 +23,91 @@ from logger_manager import logger_manager
from time_sync import sync_system_time_from_4g
from power import init_ina226, get_bus_voltage, voltage_to_percent
from laser_manager import laser_manager
from vision import detect_circle_v3, estimate_distance, compute_laser_position, save_shot_image
from vision import detect_circle_v3, estimate_distance, compute_laser_position, save_shot_image, save_calibration_image
from network import network_manager
from ota_manager import ota_manager
from hardware import hardware_manager
# def laser_calibration_worker():
# """后台线程:持续检测是否需要执行激光校准"""
# from maix import camera
# from laser_manager import laser_manager
# from ota_manager import ota_manager
# logger = logger_manager.logger
# if logger:
# logger.info("[LASER] 激光校准线程启动")
# while True:
# try:
# try:
# if ota_manager.ota_in_progress:
# time.sleep_ms(200)
# continue
# except Exception as e:
# logger = logger_manager.logger
# if logger:
# logger.error(f"[LASER] OTA检查异常: {e}")
# time.sleep_ms(200)
# continue
# if laser_manager.calibration_active:
# cam = None
# try:
# cam = camera.Camera(640, 480)
# start = time.ticks_ms()
# timeout_ms = 8000
# while laser_manager.calibration_active and time.ticks_diff(time.ticks_ms(), start) < timeout_ms:
# frame = cam.read()
# pos = laser_manager.find_red_laser(frame)
# if pos:
# laser_manager.set_calibration_result(pos)
# laser_manager.stop_calibration()
# laser_manager.save_laser_point(pos)
# logger = logger_manager.logger
# if logger:
# logger.info(f"✅ 后台校准成功: {pos}")
# break
# time.sleep_ms(60)
# except Exception as e:
# logger = logger_manager.logger
# if logger:
# logger.error(f"[LASER] calibration error: {e}")
# import traceback
# logger.error(traceback.format_exc())
# time.sleep_ms(200)
# finally:
# try:
# if cam is not None:
# del cam
# except Exception as e:
# logger = logger_manager.logger
# if logger:
# logger.error(f"[LASER] 释放相机资源异常: {e}")
# if laser_manager.calibration_active:
# time.sleep_ms(300)
# else:
# time.sleep_ms(50)
# except Exception as e:
# # 线程顶层异常捕获,防止线程静默退出
# logger = logger_manager.logger
# if logger:
# logger.error(f"[LASER] 校准线程异常: {e}")
# import traceback
# logger.error(traceback.format_exc())
# else:
# print(f"[LASER] 校准线程异常: {e}")
# import traceback
# traceback.print_exc()
# time.sleep_ms(1000) # 等待1秒后继续
def laser_calibration_worker():
"""后台线程:持续检测是否需要执行激光校准"""
from maix import camera
from laser_manager import laser_manager
from ota_manager import ota_manager
from vision import save_calibration_image # 添加导入
logger = logger_manager.logger
if logger:
@@ -62,6 +136,14 @@ def laser_calibration_worker():
frame = cam.read()
pos = laser_manager.find_red_laser(frame)
if pos:
# 保存校准图像(带标注)
try:
save_calibration_image(frame, pos)
except Exception as e:
logger = logger_manager.logger
if logger:
logger.error(f"[LASER] 保存校准图像失败: {e}")
laser_manager.set_calibration_result(pos)
laser_manager.stop_calibration()
laser_manager.save_laser_point(pos)
@@ -103,7 +185,6 @@ def laser_calibration_worker():
traceback.print_exc()
time.sleep_ms(1000) # 等待1秒后继续
def cmd_str():
"""主程序入口"""
# ==================== 第一阶段:硬件初始化 ====================