概述
MEMS-Studio是一套完整的桌面軟件解決方案,專為開發嵌入式AI功能、評估嵌入式庫、分析數據,以及為整個MEMS傳感器產品組合設計無代碼算法而設計。這款獨特的軟件解決方案提供了多功能的開發環境,支持評估和編程所有MEMS傳感器,此外還推出了新一代解決方案,以擴展Unico-GUI、Unicleo-GUI和AlgoBuilder等成熟應用程序的功能。
最近在弄ST的課程,需要樣片的可以加群申請:615061293 。
MEMS-Studio可簡化在STM32微控制器上使用圖形界面實現概念驗證的過程,無需編寫代碼。此解決方案支持配置傳感器和嵌入式AI(機器學習和神經網絡),可充分利用機器學習內核 (MLC)、ISPU的神經網絡以及有限狀態機 (FSM)。它會重復使用嵌入式軟件庫,將多種功能組合到一個項目中,并使用繪圖和顯示功能實時可視化數據。
MEMS-Studio提供以下用戶體驗:
● 針對MEMS產品組合中運動、環境和紅外傳感器進行評估
● 配置和測試傳感器內的各項功能,如有限狀態機 (FSM)、機器學習內核 (MLC) 和智能傳感器處理單元 (ISPU)
● 實時和離線數據分析
● 無代碼圖形化算法設計
視頻教學
[https://www.bilibili.com/video/BV1624VeAEAG/]
樣品申請
[https://www.wjx.top/vm/OhcKxJk.aspx#]
源碼下載
[https://download.csdn.net/download/qq_24312945/89843512]
硬件準備
首先需要準備一個開發板,這里我準備的是自己繪制的開發板,需要的可以進行申請。
主控為STM32H503CB,陀螺儀為LSM6DSV16X,磁力計為LIS2MDL。
選擇MEMS
使用 MEMS Studio 的 MLC(Machine Learning Core)進行訓練, "Sensor" 字段選擇要配置的傳感器 。
導入數據
點擊“Browse”選擇采集到的數據,給該類數據命名后下載。
將所有采集到的數據都導入進去,下載成功如圖所示。
配置窗口長度和量程
MLC ODR(輸出數據速率):已設置為 240Hz,這是 MLC 處理數據的速率。
時間窗口長度(Window length):設置的窗口長度為 60,表示 MLC 每 60個樣本計算一次統計特征。
加速度計(Accelerometer):
● 量程(Full Scale):設置為 ±2g,表示能夠測量的最大加速度為 ±2g。
● ODR(數據速率):設置為 480Hz,表示加速度計的采樣頻率為 480Hz。
陀螺儀(Gyroscope):
● 量程(Full Scale):設置為 ±125 dps,表示最大旋轉速度為 ±125 度/秒。
● ODR(數據速率):設置為 480Hz,表示陀螺儀的采樣頻率為 480Hz。
配置濾波器
● filter_1:應用于 HP_Acc_XYZ,表示這是一個 高通濾波器(HP,High-Pass Filter),用于對加速度計的 X、Y、Z 軸的三維數據進行濾波。
● HP_Acc_XYZ:此濾波器將過濾掉加速度數據中低頻成分,保留高頻部分。這可能是為了消除像重力這樣的低頻信號干擾,保留運動的快速變化部分。
● filter_2:應用于 HP_Gyr_XYZ,這是一個 高通濾波器,用于對陀螺儀的 X、Y、Z 軸數據進行濾波。
● HP_Gyr_XYZ:此濾波器將過濾掉陀螺儀數據中的低頻部分,保留高頻的旋轉變化信息,適合檢測快速旋轉或角速度的變化。
● filter_3:應用于 HP_Acc_V2,也是一個 高通濾波器,用于處理加速度矢量平方值(即組合了 X、Y 和 Z 軸的加速度數據)。
● HP_Acc_V2:此濾波器將對加速度矢量平方值的低頻信號進行過濾,保留高頻部分,幫助識別運動的劇烈變化。
● filter_4:應用于 HP_Gyr_V2,是一個 高通濾波器,用于處理陀螺儀矢量平方值(即組合了 X、Y 和 Z 軸的角速度數據)。
● HP_Gyr_V2:此濾波器將對陀螺儀矢量平方值的低頻部分進行過濾,保留高頻部分,幫助識別旋轉運動中的快速變化。
選擇特征數據
MLC(Machine Learning Core) 的 特征選擇(Features Selection) 區域可以為傳感器數據選擇要計算的統計特征,并將其作為機器學習的輸入。
MEAN:均值,表示在給定的時間窗口內計算的傳感器數據的平均值。
VARIANCE:方差,表示數據的分散程度,反映數據在給定時間窗口內的變化。
ENERGY(能量): 計算信號在給定時間窗口內的總能量。它反映了信號強度,通常用于識別較強或較弱的活動。
PEAK_TO_PEAK(峰峰值):峰峰值特征計算的是信號在給定時間窗口內的最大值和最小值之間的差異。這個特征可以幫助檢測信號的最大振幅,是評估運動強度和突發變化的有力指標。
設備樹生成
生成的設備樹文件為 arff 文件。
決策樹生成
點擊 "Generate Decision Tree" 按鈕以生成決策樹。這個按鈕基于之前通過 ARFF 文件加載的數據和特征生成了一個分類模型(決策樹),用于識別不同的動作或狀態。
Kappa 統計量 是一種用于衡量分類器在考慮偶然因素時的準確性度量。這里顯示為 0.307479,雖然分類準確度高,但 Kappa 值可能表明結果受到數據分布或樣本量的影響。
● 0.81 - 1.00:幾乎完美的分類一致性。
● 0.61 - 0.80:很好的分類一致性。
● 0.41 - 0.60:中等分類一致性。
● 0.21 - 0.40:較低的分類一致性。
● 0.00 - 0.20:幾乎沒有一致性(接近隨機猜測)。
查看分析信息。
F1_MEAN_on_ACC_X <= 0.0360312
| F1_MEAN_on_ACC_X <= -0.88916: other (65.0)
| F1_MEAN_on_ACC_X > -0.88916: Steady (52.0)
F1_MEAN_on_ACC_X > 0.0360312
| F7_ENERGY_on_GY_X <= 0.241577: Idle (62.0)
| F7_ENERGY_on_GY_X > 0.241577: Writing (68.0)
Number of Leaves : 4
Size of the tree : 7
class:
= > Idle, Writing, other, Steady,
features:
= > F1_MEAN_on_ACC_X, F2_MEAN_on_ACC_Y, F3_MEAN_on_ACC_Z, F4_MEAN_on_ACC_V2, F5_VAR_on_ACC_V2, F6_VAR_on_GY_V2, F7_ENERGY_on_GY_X, F8_ENERGY_on_GY_Y, F9_ENERGY_on_GY_Z, F10_ENERGY_on_GY_V2, F11_PeakToPeak_on_ACC_V2, F12_PeakToPeak_on_GY_V2,
Mean absolute error 1
Root mean squared error 1
======= Whole data training with Confidence Factor: 0.9 =========
===== Confusion Matrix =====
Idle Writing other Steady -- classified as
Idle 62 0 0 0
Writing 0 68 0 0
other 0 0 65 0
Steady 0 0 0 52
Total Number of Instances : 247
Correctly Classified Instances : 247
Incorrectly Classified Instances : 0
Kappa Statistic: 0.252373
Accuracy: 100%
Report : precision recall support
Idle 1 1 62
Writing 1 1 68
other 1 1 65
Steady 1 1 52
avg/total 1 1 247
根節點判斷條件:
● F1_MEAN_on_ACC_X <= 0.0360312:
○ 如果 X 軸加速度的均值小于或等于 0.0360312:
■ 如果 F1_MEAN_on_ACC_X <= -0.88916,則分類為 other(65 個樣本)。
■ 如果 F1_MEAN_on_ACC_X > -0.88916,則分類為 Steady(52 個樣本)。
○ 如果 X 軸加速度的均值大于 0.0360312:
■ 如果 F7_ENERGY_on_GY_X <= 0.241577,則分類為 Idle(62 個樣本)。
■ 如果 F7_ENERGY_on_GY_X > 0.241577,則分類為 Writing(68 個樣本)。
● 混淆矩陣 顯示模型在每一類的分類結果:
○ Idle:62 個樣本被正確分類。
○ Writing:68 個樣本被正確分類。
○ other:65 個樣本被正確分類。
○ Steady:52 個樣本被正確分類。
● Kappa Statistic:0.252373。盡管分類準確度為 100%,但 Kappa 值較低,表明不同類別之間可能存在某些重疊或類別分布不均衡。
該決策樹模型在當前的小型數據集上表現良好,分類準確度為 100%,沒有任何錯誤分類的實例。然而,Kappa 統計量(0.252373) 表明類別之間可能存在數據不平衡,導致模型雖然能夠準確分類,但泛化能力可能較差。
參考程序
[https://github.com/STMicroelectronics/STMems_Machine_Learning_Core/tree/master/application_examples/lsm6dsv16x]
轉換UCF文件
類輸出值可以根據自己的需求修改,然后點擊“Generate Config File”生成ucf文件。
將得到的UCF文件存放到LSM6DSV16X的程序中。
在初始化中添加MLC檢測功能。
for( uint32_t i=0; i< (sizeof(lsm6dsv16x_activity_recognition) /
sizeof(ucf_line_t) ); i++ )
{
lsm6dsv16x_write_reg(&dev_ctx, lsm6dsv16x_activity_recognition[i].address,
(uint8_t *)&lsm6dsv16x_activity_recognition[i].data, 1);
}
在主函數中獲取狀態值,查詢類的輸出值,編譯程序。
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
lsm6dsv16x_mlc_handler();
if (event_catched != 0)
{
printf("event_catched=%d",event_catched);
// 握(0) 拍(1) 揮(2) 拍(3) 靜(4) 止(5)
switch(event_catched)
{
case 2:
event_catched = 0;
printf("閑置(Idle)rn");
break;
case 4:
event_catched = 0;
printf("書寫(Writing)rn");
break;
case 8:
event_catched = 0;
printf("其他(other)rn");
break;
case 12:
event_catched = 0;
printf("靜止(Steady)rn");
break;
default:break;
}
event_catched = 0;
}
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
演示 靜止狀態如下。
閑置狀態如下,手抓筆靜止。
書寫狀態如下,移動筆進行識別判定。
其他如下,筆倒置。
審核編輯 黃宇
-
嵌入式
+關注
關注
5082文章
19123瀏覽量
305150 -
mems
+關注
關注
129文章
3931瀏覽量
190623 -
AI
+關注
關注
87文章
30887瀏覽量
269065 -
MLC
+關注
關注
0文章
41瀏覽量
17304 -
智能筆
+關注
關注
1文章
15瀏覽量
5368
發布評論請先 登錄
相關推薦
評論