update laser cabration
This commit is contained in:
85
main.py
85
main.py
@@ -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():
|
||||
"""主程序入口"""
|
||||
# ==================== 第一阶段:硬件初始化 ====================
|
||||
|
||||
Reference in New Issue
Block a user