【瑞萨AI挑战赛】部署AI识别
## 传感器由于没有买到官方示例的传感器,我采用了bmi270来识别传感器数据。
## 示例匹配
```
void hal_entry(void)
{
#if BSP_TZ_SECURE_BUILD
/* Enter non-secure code */
R_BSP_NonSecureEnter();
#endif
int8_t rslt;
fsp_err_t err = FSP_SUCCESS;
float acc_x, acc_y, acc_z;
float gyr_x, gyr_y, gyr_z;
APP_PRINT("HAL Entry: Starting BMI270 Demo...\r\n");
/* Enable access to the PFS registers */
APP_PRINT("HAL Entry: Enable pin access\r\n");
R_BSP_PinAccessEnable();
APP_PRINT("HAL Entry: Write LED1 LOW\r\n");
R_BSP_PinWrite(LED1_GREEN, BSP_IO_LEVEL_LOW);
/* Init I2C communication */
APP_PRINT("HAL Entry: Calling init_i2c_comm\r\n");
init_i2c_comm();
/* Initialize BMI270 sensor */
APP_PRINT("HAL Entry: Calling BMI270_init\r\n");
rslt = BMI270_init();
if (rslt != 0) {
APP_PRINT("BMI270 init failed! rslt=%d\r\n", rslt);
R_BSP_PinWrite(LED2_GREEN, BSP_IO_LEVEL_HIGH);
__BKPT(0);
}
APP_PRINT("BMI270 initialized successfully\r\n");
#if DATA_COLLECTION_EN
err = RM_RAI_DATA_COLLECTOR_Open(&g_rai_data_collector0_ctrl, &g_rai_data_collector0_cfg);
err = RM_RAI_DATA_SHIPPER_Open(&g_rai_data_shipper0_ctrl, &g_rai_data_shipper0_cfg);
RM_RAI_DATA_COLLECTOR_BufferReset(&g_rai_data_collector0_ctrl);
err = RM_RAI_DATA_COLLECTOR_ChannelBufferGet(&g_rai_data_collector0_ctrl, 0, (void*)data_x);
err = RM_RAI_DATA_COLLECTOR_ChannelBufferGet(&g_rai_data_collector0_ctrl, 1, (void*)data_y);
err = RM_RAI_DATA_COLLECTOR_ChannelBufferGet(&g_rai_data_collector0_ctrl, 2, (void*)data_z);
#endif
APP_PRINT("Starting data collection loop...\r\n");
while (true)
{
/* Read raw sensor data for debug */
int16_t raw_acc_x, raw_acc_y, raw_acc_z;
rslt = BMI270_get_raw_accel(&raw_acc_x, &raw_acc_y, &raw_acc_z);
// if (rslt == 0) {
// char buf;
// sprintf(buf, "Acc Raw: X:%6d Y:%6d Z:%6d\r\n", raw_acc_x, raw_acc_y, raw_acc_z);
// SEGGER_RTT_WriteString(0, buf);
// }
/* Read processed sensor data */
rslt = BMI270_get_accel_gyro(&acc_x, &acc_y, &acc_z, &gyr_x, &gyr_y, &gyr_z);
if (rslt == 0) {
/* Continue to accumulate samples */
if(count < BUFF_LEN){
data_x = acc_x;
data_y = acc_y;
data_z = acc_z;
#if DATA_COLLECTION_EN==0
inputData = acc_x;
inputData = acc_y;
inputData = acc_z;
#endif
count++;
}
else{
#if DATA_COLLECTION_EN
err = RM_RAI_DATA_COLLECTOR_ChannelWrite(&g_rai_data_collector0_ctrl, 0, data_x, BUFF_LEN);
err = RM_RAI_DATA_COLLECTOR_ChannelWrite(&g_rai_data_collector0_ctrl, 1, data_y, BUFF_LEN);
err = RM_RAI_DATA_COLLECTOR_ChannelWrite(&g_rai_data_collector0_ctrl, 2, data_z, BUFF_LEN);
rai_data_shipper_write_params_t arg;
arg.diagnostic_data_len = 0;
arg.events = g_events;
arg.p_diagnostic_data = NULL;
arg.p_sensor_data = &g_callback_args;
g_dc_callback = false;
err = RM_RAI_DATA_SHIPPER_Write(&g_rai_data_shipper0_ctrl, &arg);
g_dc_callback = false;
#else
AIC = arm_predict(inputData);
/* Decode classification event using class names */
switch(AIC){
case(arm_no_results):
break;
case(arm_drop):
SEGGER_RTT_WriteString(0,
RTT_CTRL_TEXT_RED "arm_drop.\r\n");
R_BSP_PinWrite(LED1_GREEN, BSP_IO_LEVEL_HIGH);
break;
case(arm_normal):
SEGGER_RTT_WriteString(0,
RTT_CTRL_TEXT_GREEN "arm_normal.\r\n");
break;
case(arm_shake):
SEGGER_RTT_WriteString(0,
RTT_CTRL_TEXT_YELLOW "arm_shake.\r\n");
break;
};
#endif
count = 0;
}
}
}
}
```
## AI配置
1、打开AI data tool:
!(https://www.eefocus.com/forum/data/attachment/forum/202603/14/132434vrwr2ponumbpzfou.png)
2、连接串口:
!(https://www.eefocus.com/forum/data/attachment/forum/202603/14/132518bpdfdpci9rrcrrid.png)
3、选择数据存放的地方:
!(https://www.eefocus.com/forum/data/attachment/forum/202603/14/132613imhh3udwuu4uabam.png)
4、数据查看:
!(https://www.eefocus.com/forum/data/attachment/forum/202603/14/132702bt02084ki8z8iv9i.png)
5、设置三个状态:
normal、snake、drop
然后选择Start new capture
依次录制三个状态,然后在数据区域看到有三个文件:
!(https://www.eefocus.com/forum/data/attachment/forum/202603/14/132844h1lex7dihzex22ph.png)
最后选上传数据到服务器。
6、数据训练
!(https://www.eefocus.com/forum/data/attachment/forum/202603/14/132928v2smd7mgg9aemhg7.png)
7、数据训练截图:
!(https://www.eefocus.com/forum/data/attachment/forum/202603/14/132952kgncm6amdmmlcllz.png)
8、生成模型:
!(https://www.eefocus.com/forum/data/attachment/forum/202603/14/133011tu2u3i3i0mxiixm0.png)
9、下载到本地后,将模型解压后替换掉src/rai下的文件:
!(https://www.eefocus.com/forum/data/attachment/forum/202603/14/133107qsxvujs9pl9h4v2v.png)
10、修改识别的宏:
#define DATA\_COLLECTION\_EN (0)
11、进入debug后,在RTTView中就可以看到识别效果了:
!(https://www.eefocus.com/forum/data/attachment/forum/202603/14/133232abuyhgyoif2xr22r.png)
【总结】
RA的AI生态现在非常好了,有好多网友给出了非常详细的教程。
页:
[1]