当前位置: 首页 > news >正文

如果esp_radar_train_stop()调用失败(比如训练未正常启动、持续时间不足、或其他配置未完成),那么:

重新详细分析差异后的关键问题:

结合你给出的两个文件代码进行更细致的分析,真正导致你打印阈值异常的根本原因是:

根本原因:

在你自己的例程(第二个文件)中的校准完成回调函数(calib_done_cb)里,你调用了:

esp_radar_train_stop(&someone_thr, &move_thr);

没有检查返回值,直接赋值:

g_console_input_config.predict_someone_threshold = someone_thr;
g_console_input_config.predict_move_threshold = move_thr;

为什么导致打印固定值?

如果esp_radar_train_stop()调用失败(比如训练未正常启动、持续时间不足、或其他配置未完成),那么:

  • 函数返回ESP_FAIL或其他非ESP_OK错误。

  • 传入的两个浮点指针someone_thrmove_thr的值不会被有效填充,导致它们保持未初始化的状态

  • 因为局部变量someone_thrmove_thr默认未初始化(编译器优化时会变成随机值或固定值,比如0.0000001.569380),直接打印就会看到这两个异常固定值。


正确的做法示例:

修改你的calib_done_cb函数,添加严格的错误检查:

static void calib_done_cb(TimerHandle_t t)
{ESP_LOGI(TAG, "校准完成倒计时 %d 秒...", g_start_countdown_left);if (--g_start_countdown_left == 0){xTimerStop(g_calib_timer, 0);xTimerDelete(g_calib_timer, 0);g_calib_timer = NULL;float someone_thr = 0.0f, move_thr = 0.0f;esp_err_t ret = esp_radar_train_stop(&someone_thr, &move_thr);if (ret != ESP_OK){ESP_LOGE(TAG, "校准失败!错误代码: %s", esp_err_to_name(ret));return;  // 出错后不要再继续执行}g_console_input_config.predict_someone_threshold = someone_thr;g_console_input_config.predict_move_threshold = move_thr;ESP_LOGI(TAG, "校准完成!有人阈值=%.6f,运动阈值=%.6f", someone_thr, move_thr);start_csi_radar();}
}

额外提醒:

  • 训练时长至少需要达到算法要求(一般官方要求至少10~30秒),确保调用esp_radar_train_start()后有足够的训练帧。

  • 严格按照官方例程执行状态机流程:

    • esp_radar_train_start()

    • 等待足够长时间后,再调用esp_radar_train_stop()取出阈值。

  • 确认配置的send_data_interval足够短(如100ms)确保足够数据帧输入训练。


最终结论

导致你打印固定异常阈值的问题就是:

  • 缺少esp_radar_train_stop()调用返回值的错误检查,导致未经初始化的变量被打印出来。

改进方法已经详细提供,按照上述建议调整即可解决问题。

http://www.xdnf.cn/news/1230841.html

相关文章:

  • 【相机】曝光时间长-->拖影
  • html5+css3+canvas长文转长图工具支持换行
  • sqli-labs:65个关卡的文章汇总
  • [BJDCTF2020]EasySearch
  • Python中元组,字典,集合的易错题(含解析)
  • C++音视频开发:基础面试题
  • C++ 指针常量 常量指针
  • Docker 镜像打包为 ZIP 文件便于分享和转发
  • 【python】转移本地安装的python包
  • C++ 模板初阶
  • 海洋大地测量基准与水下导航系列之九我国海洋PNT最新技术进展(下)
  • opencv学习(单模块匹配)
  • 初始C语言---第四讲(数组)
  • C# 的委托和事件 总结
  • kong网关集成Safeline WAF 插件
  • 【深度学习】【三维重建】windows11环境配置PyTorch3d详细教程
  • JAVA国际版同城服务同城信息同城任务发布平台APP源码Android + IOS
  • 【RK3568 RTC 驱动开发详解】
  • JP3-3-MyClub后台后端(三)
  • C语言输入安全10大边界漏洞解析与防御
  • PyTorch 中 Tensor 统计学函数及相关概念
  • 数据结构初学习、单向链表
  • chrome的数据采集插件chat4data的使用
  • Oracle 11g RAC集群部署手册(三)
  • 12:java学习笔记:多维数组1
  • 面试实战,问题二十二,Java JDK 17 有哪些新特性,怎么回答
  • JavaScript:Ajax(异步通信技术)
  • 用 JavaSwing 开发经典横版射击游戏:从 0 到 1 实现简易 Contra-like 游戏
  • Highly Compressed Tokenizer Can Generate Without Training
  • 【数据结构初阶】--排序(二)--直接选择排序,堆排序