Edge Impulse编译未生成Arduino加速度计持续采集代码问题咨询
解决Edge Impulse导出无加速度计持续采集文件的问题
原因排查与修复步骤
确认导出模式选择
导出模型时,必须在部署页面选中*"Continuous motion recognition"*(持续运动识别)模式,而非单次分类模式。Edge Impulse近期调整了导出逻辑,只有明确指定持续识别模式,才会生成带_continuous后缀的采集+推理代码文件。手动移植持续采集逻辑
若确认导出选项无误但仍无对应文件,可手动从旧版nano_ble_accelerometer_continuous文件中提取核心逻辑,适配到新导出的库中:- 核心逻辑:持续读取加速度计数据并填充特征缓冲区,当缓冲区达到设定窗口大小后触发推理
- 关键代码示例:
void loop() { ei_printf("Sampling...\n"); ei_accelerometer_sample(); if (ei_inference_triggered()) { ei_printf("Running inference...\n"); ei_impulse_result_t result = { 0 }; run_classifier(&result); // 处理推理结果 for (size_t ix = 0; ix < EI_CLASSIFIER_LABEL_COUNT; ix++) { ei_printf(" %s: %.5f\n", result.classification[ix].label, result.classification[ix].value); } } delay(10); } - 确保新库中的
ei_accelerometer_sample()和ei_inference_triggered()函数正常调用,这两个函数负责数据采集和缓冲区状态判断。
检查项目脉冲配置
进入项目的*"Impulse design"*页面,确认窗口大小和滑动窗口步长的设置符合持续采集要求(步长需小于窗口大小)。如果步长等于窗口大小,系统会判定为单次采集模式,导出时不会生成持续采集代码。
Arduino Nano RP2040适配注意事项
- 由于使用Nano BLE的库,需确保
ei_config.h中的硬件配置正确,比如加速度计引脚、I2C地址等,避免采集失败。 - 若出现编译错误,可替换库中
ei_accelerometer.cpp的硬件初始化代码,适配RP2040的内置加速度计(若使用板载传感器)。
内容的提问来源于stack exchange,提问作者Jatin kadge
相关产品推荐
相关产品推荐

