AI-on-the-edge-device 智能读数扩展分辨率参数ExtendedResolution完整指南【免费下载链接】AI-on-the-edge-deviceEasy to use device for connecting old measuring units (water, power, gas, ...) to the digital world项目地址: https://gitcode.com/GitHub_Trending/ai/AI-on-the-edge-device导读NUMBER.ExtendedResolution是 AI-on-the-edge-device 项目用于将水表、电表、气表等老式计量表接入数字世界的 ESP32 方案在 PostProcessing 后处理流程 中用于提升读数精度的关键开关开启后系统会把最后一个模拟表盘analog counter的十进制位一并纳入最终数值让读数多一位小数。本文将从参数语义、配置文件写法、底层实现原理到测试验证完整讲解这一参数的使用边界与实战配置。参数概览默认值与核心语义NUMBER.ExtendedResolution属于后处理PostProcessing阶段、按数字序列NUMBER独立生效的参数其官方定义如下项目值参数名NUMBER.ExtendedResolution默认值false所属配置段[PostProcessing]作用域每个NUMBERROI 中定义的数字序列各自独立核心语义默认情况下最后一位模拟表盘的读数只用于整数位判定将本参数设为true后系统会使用最后一个模拟计数器的十进制位来获得更高精度Use the decimal place of the last analog counter for increased accuracy。从源码结构看这一参数的影响链路清晰可见配置解析后写入每个数字序列的结构体字段isExtendedResolution见 ClassFlowDefineTypes.hisExtendedResolution; // extendResolution; Adds the decimal place of the least significant analog ROI to the value在正式读取阶段ReturnRawValue的组装会根据该标志调用对应的读数接口详见下文底层实现原理。适用模型限制*-class*与*-const模型文档明确给出了一个硬性约束该参数仅支持*-class*与*-const系列模型其他模型类型上该参数不生效或不被支持。这与源码实现完全吻合在 ClassFlowCNNGeneral.cpp 中isExtendedResolution()的实现直接按模型类型分流bool ClassFlowCNNGeneral::isExtendedResolution(int _number) { if (CNNType Digit) { return false; } return true; }对于Digit类型的 CNN 网络即纯数字识别模型扩展分辨率恒为关闭对于模拟表盘/常量analog / const类型的 CNN扩展分辨率始终可用。关于模型命名与选择可进一步参考 Analog 模型参数 与 Digits 模型参数。仓库自带的模型文件也印证了这一约束——例如 sd-card/config 中使用的ana-cont_*analog constant与dig-class*digit classify系列即属于支持范围。配置方法Web UI 与手动编辑 config.ini方式一Web 界面配置在设备 Web 界面进入后处理PostProcessing编辑页找到 Extended Resolution 下拉框将其从false切换为true即可。对应界面实现在 edit_config_template.html其读取/写入逻辑见 readconfigparam.js。方式二手动编辑配置文件关键注意点由于该参数对每个数字序列独立生效手动编辑config.ini时必须使用NUMBER.前缀即NUMBER.ExtendedResolution而不是裸写ExtendedResolution[PostProcessing] ; 示例对名为 main 的数字序列启用扩展分辨率 main.ExtendedResolution true仓库真实配置示例默认出厂配置 sd-card/config/config.inimain.ExtendedResolution false演示配置 sd-card/demo/config.inimain.ExtendedResolution true为什么必须带前缀从源码解析逻辑看handleDecimalExtendedResolution会先解析参数名中点号前的部分作为目标数字序列名无前缀时视为default作用于所有数字序列再把布尔值写入对应NUMBERS[j]-isExtendedResolution见 ClassFlowPostProcessing.cpp。同时后处理配置解析器只识别[PostProcessing]段内带EXTENDEDRESOLUTION名字的条目见 ClassFlowPostProcessing.cpp。配置迁移提醒早期版本曾存在不带前缀的全局ExtendedResolution参数固件升级时会自动将其标记为;UNUSED_PARAMETER见 main.cpp因此升级后请改用NUMBER.ExtendedResolution写法旧的 Analog/ExtendedResolution 参数页也明确标注为废弃unused并指向本参数。底层实现原理扩展分辨率如何参与读数组装1. 读数阶段把标志传给 getReadout在每个处理周期内后处理会按数字序列依次组装原始读数isExtendedResolution标志被显式传给模拟与数字两个读数通道见 ClassFlowPostProcessing.cpp// 有模拟 ROI模拟读数带上扩展分辨率标志 NUMBERS[j]-ReturnRawValue flowAnalog-getReadout(j, NUMBERS[j]-isExtendedResolution); // 纯数字无模拟表盘扩展分辨率仅在无模拟小数位时启用 NUMBERS[j]-ReturnRawValue flowDigit-getReadout(j, NUMBERS[j]-isExtendedResolution, previous_value);2. 小数位重算DecimalShift 与 Nachkomma 的联动启用扩展分辨率后最终值的小数位Nachkomma与小数点移位DecimalShift会相应调整这部分逻辑集中在UpdateNachkommaDecimalShift()见 ClassFlowPostProcessing.cpp纯数字序列DecimalShift在扩展分辨率开启时减 1使最终读数多一位小数纯模拟序列同样DecimalShift-1Nachkomma -DecimalShift数字 模拟混合序列Nachkomma加 1把模拟表盘的十进制位纳入小数部分。3. 边界情况与 AllowNegativeRates 的交互扩展分辨率带来更高精度的同时也让数值抖动更容易触发负速率误判。源码专门针对开启扩展分辨率的场景增加了诊断日志参见 issue 相关处理见 ClassFlowPostProcessing.cpp当检测到负速率时会打印value、preValue及容差上限便于排查微小波动导致的误报。若遇到此类问题可同时关注 AllowNegativeRates 参数的设置。测试验证如何确认该参数生效仓库的单元测试框架基于 Unity位于 test 目录提供了针对后处理逻辑的辅助函数用于在测试环境直接注入扩展分辨率标志test_flow_postrocess_helper.cppsetExtendedResolution()遍历所有数字序列将isExtendedResolution置为true相关测试用例位于 test_flow_postrocess_helper.h 与 test_flowpostprocessing.cpp 等文件可通过 PlatformIO 测试任务运行验证。从源码结构可以推断该标志贯穿配置解析 → 结构体存储 → getReadout 读数 → Nachkomma 重算的完整链路因此确认配置生效最简单的方式是观察读数输出的小数位数是否比关闭时多一位例如开启前1234.5开启后1234.56。实战配置建议与限制汇总仅在支持模型上使用确认模型属于*-class*/*-const系列如仓库自带的ana-cont_*、dig-class*纯 Digit 模型下该参数会被源码强制忽略。务必带NUMBER.前缀手动编辑 config.ini 时写main.ExtendedResolution true无前缀写法仅用于同时作用于所有数字序列等价于default且旧版裸参数在升级后会被自动废弃。配合 DecimalShift 理解输出最终小数位是DecimalShift、模拟 ROI 数量与扩展分辨率三者共同决定的结果开启后读数精度提升一位。留意精度提升带来的误判更高精度下读数微抖更易触发负速率/速率超限检查必要时结合 ChangeRateThreshold、MaxRateValue 等参数放宽容差。【免费下载链接】AI-on-the-edge-deviceEasy to use device for connecting old measuring units (water, power, gas, ...) to the digital world项目地址: https://gitcode.com/GitHub_Trending/ai/AI-on-the-edge-device创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
