Files
archery/config.py
gcw_4spBpAfv 0a1c7cff5c update config
2026-05-11 18:05:37 +08:00

338 lines
21 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
系统配置常量
这些值在程序运行期间基本不变,或只在配置时改变
"""
from version import VERSION
# ==================== 应用配置 ====================
APP_VERSION = VERSION
APP_DIR = "/maixapp/apps/t11"
LOCAL_FILENAME = APP_DIR + "/main_tmp.py"
# ==================== 相机配置 ====================
# 相机初始化分辨率CameraManager / main.py 使用)
CAMERA_WIDTH = 640
CAMERA_HEIGHT = 480
# 三角形检测缩图比例:默认按相机最长边缩到 1/2性能更稳可按需调整
# 取值范围建议 (0.25 ~ 1.0]1.0 表示不缩图
TRIANGLE_DETECT_SCALE = 0.4
# ==================== 服务器配置 ====================
# SERVER_IP = "stcp.shelingxingqiu.com"
SERVER_IP = "www.shelingxingqiu.com"
SERVER_PORT = 50005
HEARTBEAT_INTERVAL = 15 # 心跳间隔(秒)
# WiFi 质量评估(开机先尝试 WiFi质量差且 4G 可用则切到 4G本次上电直至关机锁定 4G
WIFI_QUALITY_RTT_SAMPLES = 3 # 到业务服务器 TCP 建连耗时采样次数,取中位数
WIFI_QUALITY_RTT_BAD_MS = 600.0 # 中位数超过此值认为延迟过高
WIFI_QUALITY_RTT_WARN_MS = 350.0 # 与 RSSI 联合:超过此值且信号弱也判为差
WIFI_QUALITY_RSSI_BAD_DBM = -80.0 # 低于此 dBm更负更差视为信号弱
WIFI_QUALITY_USE_RSSI = True # 是否把 RSSI 纳入综合判定
# WiFi 热点配网(手机连设备 AP浏览器提交路由器 SSID/密码;仅 GET/POST标准库 socket
WIFI_CONFIG_AP_FALLBACK = True # # WiFi 配网失败时,是否退回热点模式,并等待重新配网
WIFI_AP_FALLBACK_WAIT_SEC = 5 # 等待5秒后再检测STA/4G
WIFI_CONFIG_AP_TIMEOUT = 5 # 热点模式超时时间(秒)
WIFI_CONFIG_AP_ENABLED = True # True=启动时开热点并起迷你 HTTP 配网服务
WIFI_CONFIG_AP_SSID = "ArcherySetup" # 设备发出的热点名称
WIFI_CONFIG_AP_PASSWORD = "12345678" # 热点密码WPA2 通常至少 8 位)
WIFI_CONFIG_HTTP_HOST = "0.0.0.0" # HTTP 监听地址
WIFI_CONFIG_HTTP_PORT = 8080 # 默认 8080避免占用 80 需 root
WIFI_CONFIG_AP_IP = "192.168.66.1" # 与 MaixPy Wifi.start_ap 默认一致,手机访问 http://192.168.66.1:8080/
# 这个地址需要和 /boot/wifi.ipv4_prefix 配合,才能正确访问。
# 比如说 /boot/wifi.ipv4_prefix 需要写成 192.168.66
# ===== TCP over SSL(TLS) 配置 =====
USE_TCP_SSL = True # True=按手册走 MSSLCFG/MIPCFG 绑定 SSL
TCP_LINK_ID = 2 #
TCP_SSL_PORT = 50006 # TLS 端口(不一定必须 443以服务器为准
# SSL profile
SSL_ID = 1 # ssl_id=1
SSL_AUTH_MODE = 1 # 1=单向认证验证服务器2=双向
SSL_VERIFY_MODE = 1 # 0=不验仅测试用1=写入并使用 CA 证书
SSL_CERT_FILENAME = "server.pem" # 模组里证书名MSSLCERTWR / MSSLCFG="cert" 用)
SSL_CERT_PATH = APP_DIR + "/server.pem" # 设备文件系统里 CA 证书路径(你自己放进去)
# MIPOPEN 末尾的参数在不同固件里含义可能不同;按你手册例子保留
MIPOPEN_TAIL = ",,0"
# ==================== 文件路径配置 ====================
CONFIG_FILE = "/root/laser_config.json"
LOG_FILE = APP_DIR + "/app.log"
BACKUP_BASE = APP_DIR + "/backups"
# ==================== 硬件配置 ====================
# UART配置
UART4G_DEVICE = "/dev/ttyS2"
UART4G_BAUDRATE = 115200
DISTANCE_SERIAL_DEVICE = "/dev/ttyS1"
DISTANCE_SERIAL_BAUDRATE = 9600
# I2C板载 WiFi 方案固定 I2C5引脚 A15(SCL) / A27(SDA),供 INA226 等
I2C_BUS_NUM = 5
INA226_ADDR = 0x40
# False=完全不访问 INA226无电源计量板或未供电时避免 ~2.5s writeto 重试与底层 write failed 日志);量产有芯片时设为 True
INA226_ENABLE = True
# True=整总线 I2C scan 探测 INA226在部分平台上极慢可达 ~90s+False=仅对 INA226_ADDR 快速探测writeto 空写)
INA226_PROBE_FULL_BUS_SCAN = False
REG_CONFIGURATION = 0x00
REG_BUS_VOLTAGE = 0x02
REG_CURRENT = 0x04 # 电流寄存器
REG_CALIBRATION = 0x05
CALIBRATION_VALUE = 0x1400
# ==================== 空气传感器配置 ====================
ADC_TRIGGER_THRESHOLD = 2700 # TODO:4096只是用于测试因为最大值是4095这个值是永远不会触发的最终需要改为正常值
AIR_PRESSURE_lOG = False # TODO: 在正式环境中关闭
AIR_PRESSURE_HARDWARE_MAX = 10
# ADC配置
ADC_CHANNEL = 0
ADC_LASER_THRESHOLD = 3000
# ==================== 激光配置 ====================
MODULE_ADDR = 0x00
LASER_ON_CMD = bytes([0xAA, MODULE_ADDR, 0x01, 0xBE, 0x00, 0x01, 0x00, 0x01, 0xC1])
LASER_OFF_CMD = bytes([0xAA, MODULE_ADDR, 0x01, 0xBE, 0x00, 0x01, 0x00, 0x00, 0xC0])
DISTANCE_QUERY_CMD = bytes([0xAA, MODULE_ADDR, 0x00, 0x20, 0x00, 0x01, 0x00, 0x00, 0x21]) # 激光测距查询命令
DISTANCE_RESPONSE_LEN = 13 # 激光测距响应数据长度(字节)
DEFAULT_LASER_POINT = (320, 245) # 默认激光中心点
# 硬编码激光点配置
HARDCODE_LASER_POINT = True # 是否使用硬编码的激光点True=使用硬编码值False=使用校准值)
HARDCODE_LASER_POINT_VALUE = (320, 296) # 硬编码的激光点坐标(315, 245) # # 硬编码的激光点坐标 (x, y)
# 激光点检测配置
LASER_DETECTION_THRESHOLD = 140 # 红色通道阈值默认120可调整范围建议100-150
LASER_RED_RATIO = 1.5 # 红色相对于绿色/蓝色的倍数要求默认1.5可调整范围建议1.3-2.0
LASER_SEARCH_RADIUS = 50 # 搜索半径像素从图像中心开始搜索默认20限制激光点不能偏离中心太远
LASER_MAX_DISTANCE_FROM_CENTER = 50 # 激光点距离中心的最大允许距离像素超过此距离则拒绝默认20
LASER_OVEREXPOSED_THRESHOLD = 200 # 过曝红色判断阈值默认200接近白色时的阈值
LASER_OVEREXPOSED_DIFF = 10 # 过曝红色时r 与 g/b 的最小差值默认10
LASER_REQUIRE_IN_ELLIPSE = False # 是否要求激光点必须在黄心椭圆内True=必须False=不要求)
LASER_USE_ELLIPSE_FITTING = True # 是否使用椭圆拟合方法查找激光点True=椭圆拟合更准确False=最亮点方法)
LASER_MIN_AREA = 5 # 激光点区域的最小面积像素小于此值认为是噪声默认5
LASER_DRAW_ELLIPSE = True # 是否在图像上绘制激光点的拟合椭圆True=绘制False=不绘制)
# ==================== 视觉检测配置 ====================
FOCAL_LENGTH_PIX = 2250.0 # 焦距(像素)
REAL_RADIUS_CM = 20 # 靶心实际半径(厘米)
# 图像清晰度检测配置
IMAGE_SHARPNESS_THRESHOLD = 100.0 # 清晰度阈值,低于此值认为图像模糊
# 清晰图像通常 > 200模糊图像通常 < 100
# 激光与摄像头物理位置配置
LASER_CAMERA_OFFSET_CM = 1.4 # 激光在摄像头下方的物理距离(厘米),正值表示激光在摄像头下方
IMAGE_CENTER_X = 320 # 图像中心 X 坐标
IMAGE_CENTER_Y = 240 # 图像中心 Y 坐标
# ==================== 三角形四角标记:单应性偏移 + PnP 估距 ====================
# 依赖 cameraParameters.xml相机内参与 triangle_positions.json四角物方坐标厘米或毫米见 JSON 约定)。
# 部署时请把这两个文件放到 APP_DIR与 main 同应用目录),或改下面路径为设备上的实际绝对路径。
USE_TRIANGLE_OFFSET = True # False 时仅走黄心圆/椭圆 + 半径估距,不使用三角形路径
CAMERA_CALIB_XML = APP_DIR + "/cameraParameters.xml"
TRIANGLE_POSITIONS_JSON = APP_DIR + "/triangle_positions.json"
# 检测到的三角形边长在图像中的像素范围,分辨率或靶纸占比变化时可微调
TRIANGLE_SIZE_RANGE = (8, 500)
# PnP 距离合理性检查(可选):超出范围时认为本次检测有误,回退圆心算法
# 设为 0 表示不启用(主要防线是单应矩阵 sx/sy 比值检查,无需提前知道距离)
# 如果射箭距离很固定,可设具体范围(如 min=2.5, max=6.0)作为额外保险
TRIANGLE_DISTANCE_MIN_M = 0.0 # 0=不启用下限检查
TRIANGLE_DISTANCE_MAX_M = 0.0 # 0=不启用上限检查
# 三角形检测兜底增强CLAHE更鲁棒但更慢。颜色阈值修复后通常不需要保持关闭以优先速度。
TRIANGLE_ENABLE_CLAHE_FALLBACK = False
# 三角形检测调试:保存 Otsu 二值化图像(临时调试用,定位后关闭)
TRIANGLE_SAVE_DEBUG_IMAGE = False
# 三角形颜色过滤阈值(三角形内部灰度判定)
# 如果三角形标记印刷较浅/环境较亮,可放宽:
# max_interior_gray: 三角形内部平均灰度上限越大越宽松90→130 适应浅色印刷)
# dark_pixel_gray: "暗像素"灰度判定阈值越大越宽松80→130
# min_dark_ratio: 暗像素占比下限越小越宽松0.70→0.30
TRIANGLE_MAX_INTERIOR_GRAY = 130
TRIANGLE_DARK_PIXEL_GRAY = 130
TRIANGLE_MIN_DARK_RATIO = 0.30
# 三角形相对对比度阈值内部比周围暗多少灰度值才认为有效0=禁用相对对比度)
TRIANGLE_MIN_CONTRAST_DIFF = 15
# 三角形形状约束容差(等腰直角判定松紧度)
# 增大可容忍轮廓轻微变形(印刷不均、阴影局部切角),减少"差一点点就失败"的漏检
# 建议范围0.20(原始/严格) ~ 0.30(宽松);超过 0.35 容易误检非三角形
TRIANGLE_SHAPE_LEG_TOLERANCE = 0.25 # 两直角边长度比例容差(原 0.20
TRIANGLE_SHAPE_HYP_TOLERANCE = 0.25 # 斜边与期望长度比例容差(原 0.20
TRIANGLE_SHAPE_COS_TOLERANCE = 0.25 # 直角余弦绝对值上限(原 0.20,越小越严格)
# 三角形检测主超时毫秒join 等待子线程的最长时间。
# 整段 try_triangle_scoring 含「多路径二值化 + C(n,4) 四角评分 + 单应性 + PnP」往往比黄心圆检测慢。
# 建议设为实测最坏耗时的 1.2 倍;超时后圆心检测仍会并行跑完,跑完后若三角形已结束则优先用三角形。
TRIANGLE_TIMEOUT_MS = 1500
# True=打印各阶段耗时(ms),用于定位瓶颈;稳定后可 False 减少日志
TRIANGLE_TIMING_LOG = True
# True=Stage2 每个子框内传统三角失败时打一条统计Otsu/Adaptive 下轮廓数与各拒绝原因计数)
TRIANGLE_LOG_STAGE2_PATCH_REJECT = True
# 仅检出 3 个真实三角时:是否在预测位置附近做小 ROIOtsu/adaptive再搜第 4 个真实三角。
# False=跳过该搜索,直接用几何推算的虚拟第 4 点offset_method=triangle_homography_3pt省 ~10~120ms若实测偏移可接受可关。
TRIANGLE_FOURTH_ROI_SEARCH_ENABLE = False
# ── 轻量锐化Unsharp Mask──────────────────────────────────────────────────
# 目的:轻度/中度模糊时增强边缘,让三角形轮廓更易被 approxPolyDP 检出。
# 严重运动模糊时反而会放大噪声,建议搭配 sharpness 检测自动触发(见下)。
# YOLO 裁切后图已较清晰时可 False省去 Unsharp 开销并减轻振铃。
TRIANGLE_SHARPEN_ENABLE = False # False=关闭锐化(彻底跳过计算,最省时)
# 仅当帧清晰度Laplacian 方差)低于此值时才锐化;高于此值说明图片本身够清晰,不动
# 0=总是锐化;建议 50~150对应日志中 [TRI] sharpness=xxx
TRIANGLE_SHARPEN_THRESHOLD = 0.0 # 0=总是锐化(不做 Laplacian 判断,省去计算)
# Unsharp Mask 高斯核 sigma越大锐化越强通常 1.0~3.0
TRIANGLE_SHARPEN_SIGMA = 2.0
# Unsharp Mask 强度系数(越大锐化越猛,通常 1.2~2.0>2 易产生振铃)
TRIANGLE_SHARPEN_STRENGTH = 1.5
# 三角形检测用灰度来源ROI 裁切、缩放到 img_det 之后;与 vision 一致按 RGB 输入)
# rgb — 常规 cv2.cvtColor RGB2GRAY
# v_suppress — HSV 的 V亮度 >= TRIANGLE_HSV_V_SUPPRESS_ABOVE 的像素灰度强制为 255压制黄/红/蓝等亮环后再走原有 Otsu 流水线
# fallback_v_suppress — 先用 rgb 跑 detect若检出三角形 <3再用 v_suppress 重跑一遍(省平均耗时,坏帧可多救一点)
# try_both — rgb 与 v_suppress 各完整跑一遍 detect_triangle_markers取检出数更多一侧平局保留 rgb耗时约 2 倍,用于对比效果
TRIANGLE_GRAY_MODE = "v_suppress"
TRIANGLE_HSV_V_SUPPRESS_ABOVE = 200 # 0~255偏高则环残留多偏低则可能伤到暗三角边缘建议 180~220 扫一圈
# 三角形检测性能/鲁棒性参数(偏向速度的默认值)
# 说明:
# - Otsu 是最快的全局阈值adaptiveThreshold 更鲁棒但更慢
# - filtered 候选过多时,枚举 C(n,4) 会变慢,需限幅
TRIANGLE_EARLY_EXIT_CANDIDATES = 3 # 找到3个候选即停第4个由几何推算原来4需跑完全adaptive
TRIANGLE_ADAPTIVE_BLOCK_SIZES = (11,) # 只用1个block_size原(11,21)跑两遍adaptive
TRIANGLE_MAX_FILTERED_FOR_COMBO = 10 # 参与四点组合评分的最大候选数(超过则截断到最可能的一部分)
# ROI 局部阈值:四个象限各自 Otsu+ 可选 ROI 内 adaptive再合并候选。
# 顺序:紧接在全局 Otsu 之后、整图 adaptive 之前(见 triangle_target.detect_triangle_markers
# 用途:阴阳脸/大阴影下往往比「先整图 adaptive」更省时间且更稳整图 adaptive 最慢,作补充。
#
# YOLO 已裁到靶区时,整幅小图上单一全局 Otsu 容易把环与四角揉在一个阈值里;可跳过第一轮「全局轮廓提取」,
# 直接进入下面四象限 ROI Otsu仍会算全局 b_otsu 供 relaxed approxPolyDP 回退)。整图模式勿开。
TRIANGLE_SKIP_GLOBAL_OTSU_EXTRACT_ON_YOLO_ROI = True
TRIANGLE_ROI_ENABLED = False
TRIANGLE_ROI_MIN_CANDIDATES = 3 # 候选数低于此值时启用 ROI 局部阈值(需至少 3 个点才能三角解算)
TRIANGLE_ROI_OVERLAP_RATIO = 0.08 # 象限 ROI 的重叠比例(避免角标落在分割边界被切断)
TRIANGLE_ROI_USE_ADAPTIVE = False # ROI 内关闭 adaptive只跑ROI Otsu省去4×adaptive遇到阴阳脸再开
# 多路径融合不同二值化路径若得到相近中心dedup 格点),累加 path_votes后续优先参与四点组合。
TRIANGLE_MULTI_PATH_VOTE = True
# 失败回退(仍不足 TRIANGLE_FALLBACK_MIN_CANDIDATES 时按序尝试,每条仅在前序仍不足时执行)
TRIANGLE_FALLBACK_MIN_CANDIDATES = 3
# 对同一幅 Otsu 二值图用更宽松的 approxPolyDP找回被“切角”的轮廓
TRIANGLE_FALLBACK_RELAXED_EPS = True
TRIANGLE_RELAXED_POLY_EPS_SCALE = 1.65
# Black-hat顶帽逆突出比周围暗的斑块再 Otsu对阴影/照度不均往往有效,略慢于纯 Otsu
TRIANGLE_FALLBACK_BLACKHAT = True
TRIANGLE_BLACKHAT_KERNEL_FRAC = 0.018 # 核大小 ≈ min(h,w)*frac取奇数范围约 [7, 31]
# ── YOLO(NPU) 靶环 ROI → 裁剪后再跑三角形(减小 CPU 处理面积)──────────────────
# 日志里 net_in=W×H 来自 .mud 模型det.input_width/height不是这里配置的。
TRIANGLE_YOLO_ROI_ENABLE = True
TRIANGLE_YOLO_MODEL_PATH = APP_DIR + "/model_270139.mud"
# 参与 ROI 的类别:多类时只填「整靶/靶环」的 id不要填角标类否则 union 仍可对,但 largest 会偏小。
TRIANGLE_YOLO_RING_CLASS_IDS = (0,)
TRIANGLE_YOLO_CONF_TH = 0.7
TRIANGLE_YOLO_IOU_TH = 0.45
# YOLO 首次/临界帧可能在高阈值下 0 框;启用后仅在 0 候选时用较低阈值重试一次。
# 后续仍会经过 min_box_side、ROI aspect、三角形几何校验避免直接放大假阳性。
TRIANGLE_YOLO_RETRY_ON_EMPTY = True
TRIANGLE_YOLO_RETRY_CONF_TH = 0.5
TRIANGLE_YOLO_ROI_MARGIN_FRAC = 0.11
# union: 所有候选框外接矩形(一类多框:环+四角largest: 只取面积最大的框
TRIANGLE_YOLO_ROI_MERGE_MODE = "union"
# native: Maix 已将框映射到相机分辨率letterbox: 框在网络输入坐标需逆变换(重复映射会出细条 ROI
TRIANGLE_YOLO_COORD_MODE = "native"
# 参与 ROI 合并前丢弃过小的框(低 conf 时边角 1×1 假阳性)
TRIANGLE_YOLO_MIN_BOX_SIDE_PX = 8
TRIANGLE_YOLO_REJECT_BAD_ROI = True
# try_triangle_scoring 收到 ROI 后裁剪的最小边长(像素),过小则退回整图
TRIANGLE_CROP_ROI_MIN_SIDE_PX = 64
# 射箭保存图 / 预览上绘制 YOLO 靶环 ROI 矩形 (x0,y0,x1,y1),核对是否裁准;不需要时改 False
TRIANGLE_YOLO_DRAW_ROI_ON_SHOT = True
# 开机阶段预加载 YOLO detectordetect 使用 dual_buff=False避免返回上一帧结果。
TRIANGLE_YOLO_PRELOAD_ON_BOOT = True
# ── 第二段 YOLO仅在 Stage1 裁切出的靶环图上推理(与合成 stage2 训练数据一致)→ 子框内传统算法取直角点 ──
# Stage1 靶环裁切内如何找黑三角标记(对比耗时时可切换):
# "yolo" — 调 Stage2 黑三角模型得子框,再子框内传统提取(需 TRIANGLE_BLACK_YOLO_ENABLE=True
# "traditional" — 不调 Stage2 模型;仅在 Stage1 ROI 整幅上跑传统 detect_triangle_markers与 yolo 路径对比用)。
TRIANGLE_BLACK_TRIANGLE_LOCATE_MODE = "traditional"
# True 时每箭另打一枪端到端耗时yolo_ring + yolo_black + try_triangle_scoring 墙钟(毫秒)
TRIANGLE_LOG_E2E_TIMING = True
TRIANGLE_BLACK_YOLO_ENABLE = True
TRIANGLE_BLACK_YOLO_MODEL_PATH = APP_DIR + "/model_270820.mud"
TRIANGLE_BLACK_YOLO_CLASS_IDS = (0,)
TRIANGLE_BLACK_YOLO_CONF_TH = 0.5
TRIANGLE_BLACK_YOLO_IOU_TH = 0.45
# Maix YOLOv5 detect 返回的框已映射到传入的 Stage1 裁切图坐标contain/letterbox 是模型内部预处理。
TRIANGLE_BLACK_YOLO_COORD_MODE = "native"
# 子框相对 YOLO 框的扩展(在靶环裁切图坐标系下),利于传统算法取边
TRIANGLE_BLACK_YOLO_BOX_MARGIN_FRAC = 0.08
TRIANGLE_BLACK_YOLO_MIN_BOX_SIDE_PX = 6.0
# 子框传统检测不足 3 个时是否回退为「整幅靶环 ROI」上的原 detect_triangle_markers
TRIANGLE_BLACK_YOLO_FALLBACK_ON_PATCH_FAIL = True
# Stage2 子框内传统提取使用的灰度(有缩略时默认在 Stage1 全分辨率灰度上切片):
# "rgb" — 仅用 RGB→灰度不再做 Unsharp、不做 V 抑制),最省 CPU推荐子框已对准黑三角时
# "global" — 与整幅 ROI 三角流程同一张 gray含 TRIANGLE_GRAY_MODE 的 v_suppress 与锐化);更稳但更耗时。
TRIANGLE_BLACK_YOLO_PATCH_GRAY_SOURCE = "rgb"
# Stage2 子框内轮廓→三角形approxPolyDP 的 ε=周长×FRAC×mult。边模糊时略增大 FRAC 或保留多级 mult。
TRIANGLE_PATCH_APPROXPOLY_FRAC = 0.055
TRIANGLE_PATCH_APPROXPOLY_RELAX_MULTS = (1.0, 1.3, 1.65)
# Otsu/Adaptive 前对子框灰度轻模糊0=关闭3 或 5=Gaussian ksize须为奇数压锯齿利于收成 3 顶点
TRIANGLE_PATCH_PRE_BLUR_KSIZE = 0
TRIANGLE_BLACK_YOLO_PRELOAD_ON_BOOT = True
# 每箭是否在日志中打印黑三角 detect 统计raw/类过滤/是否在环内);调通后可 False 减日志
TRIANGLE_BLACK_YOLO_LOG_EACH_SHOT = True
# True=每次射箭将 Stage1 裁切图(黑三角模型输入)存为 JPEG调试用量产请 False
TRIANGLE_BLACK_YOLO_SAVE_ROI_CROP = True
# 存盘目录;空字符串表示使用 PHOTO_DIR + "/stage2_roi"
TRIANGLE_BLACK_YOLO_ROI_CROP_DIR = ""
# 存盘 JPEG 上绘制 Stage2黑三角 YOLO最终子框绿框 + s2_0… 标签)
TRIANGLE_BLACK_YOLO_SAVE_ROI_DRAW_BOXES = True
FLASH_LASER_WHILE_SHOOTING = False # 是否在拍摄时闪一下激光True=闪False=不闪)
FLASH_LASER_DURATION_MS = 1000 # 闪一下激光的持续时间(毫秒)
# ==================== 显示配置 ====================
LASER_COLOR = (0, 255, 0) # RGB颜色
LASER_THICKNESS = 1
LASER_LENGTH = 2
# ==================== 图像保存配置 ====================
SAVE_IMAGE_ENABLED = True # 是否保存图像True=保存False=不保存)
PHOTO_DIR = "/root/phot" # 照片存储目录
MAX_IMAGES = 1000
# Stage2 调试目录(默认 PHOTO_DIR/stage2_roi内 JPEG 最多保留张数None 表示与 MAX_IMAGES 相同
TRIANGLE_BLACK_YOLO_STAGE2_ROI_MAX_IMAGES = None
SHOW_CAMERA_PHOTO_WHILE_SHOOTING = False # 是否在拍摄时显示摄像头图像True=显示False=不显示建议在连着USB测试过程中打开
# ==================== OTA配置 ====================
MAX_BACKUPS = 5
LOG_MAX_BYTES = 10 * 1024 * 1024 # 10MB
LOG_BACKUP_COUNT = 5
# ==================== 引脚映射配置(板载 WiFiI2C5====================
PIN_MAPPINGS = {
"A18": "UART1_RX",
"A19": "UART1_TX",
"A29": "UART2_RX",
"A28": "UART2_TX",
"A15": "I2C5_SCL",
"A27": "I2C5_SDA",
"A24": "GPIOA24", # 电源板关机控制
}
# ==================== 电源配置 ====================
AUTO_POWER_OFF_IN_SECONDS = 10 * 60 # 自动关机时间0表示不自动关机
BATTERY_SOC_LPF_ALPHA = 0.5
BATTERY_SOC_AVG_WINDOW = 5