cmvr_edge_ai/server/gauge/worker
2026-07-22 15:17:34 +08:00
..
bootstrap.sh refactor edge ai server and add onnx models 2026-07-22 15:17:34 +08:00
pyproject.toml refactor edge ai server and add onnx models 2026-07-22 15:17:34 +08:00
README.md refactor edge ai server and add onnx models 2026-07-22 15:17:34 +08:00
uv.lock refactor edge ai server and add onnx models 2026-07-22 15:17:34 +08:00

Analog Gauge 隔离运行环境

ethz-asl/analog_gauge_reader 依赖 Python 3.8、Torch 2.0 和为 CPython 3.8 预编译的 MMCV 2.0 wheel不能安全地安装进本项目的 Python 3.10 主环境。本目录是一个 独立的 uv project只服务 gauge.analog_reader@1 子进程。

创建环境

运行:

bash server/gauge/worker/bootstrap.sh

脚本安装 uv 管理的 Python 3.8,并按照本目录的 uv.lock 创建 .venv。不会改动根目录 .venv。MMCV URL 是 Linux x86_64、CPython 3.8、Torch 2.0 CPU 的专用 wheel因此 当前部署配置不支持其他平台。

进程协议

主进程由 gauge.analog_reader@1 自动启动 worker无需手工常驻。worker 使用 cmvr.external-worker/v14 字节大端 JSON header 长度、JSON header随后按 blob_lengths 顺序传输 raw blob。图像不做 base64 二次复制。

worker 启动后首先返回 ready;每个请求使用一个 JPEG/PNG blob响应包含标量读数、 单位、耗时、诊断和可选 annotated blob。Ultralytics/MMOCR 和上游项目的 stdout 已被 重定向到 stderr协议流单独持有启动时复制的 stdout FD日志不会污染二进制帧。 worker 会先解析图片头并按 --max-pixels 检查 width * height,超限时不会创建临时 输入文件,也不会进入 Pillow/OpenCV 或上游 pipeline。

明确的“未检测到仪表、OCR 数字不足、椭圆拟合失败、未找到指针”属于业务无结果,返回 no_result。checkpoint 不兼容、依赖缺失和其他推理/部署异常返回相关联的 failed response帧本身损坏时无法继续可靠解析边界进程会退出并由主框架在下一次请求时重建。

版本基线来自上游项目Torch 2.0.0、Torchvision 0.15.1、MMCV 2.0.0、MMEngine 0.7.2、MMDetection 3.0.0、MMOCR 1.0.0、Ultralytics 8.0.66 和 scikit-learn 1.2.2。NumPy/OpenCV/SciPy 额外固定在仍支持 Python 3.8 且已知兼容的版本, 避免未来解析得到 NumPy 2 或停止支持 Python 3.8 的 wheel。Setuptools 固定为 75.3.2,因为旧版 Ultralytics 启动时仍会导入其中的 pkg_resources