概述
MLC 是“機(jī)器學(xué)習(xí)核心”(Machine Learning Core)的縮寫。在 LSM6DSV16X 傳感器 中,MLC 是一種嵌入式功能,它使傳感器能夠直接運(yùn)行基于決策樹的機(jī)器學(xué)習(xí)算法。通過這種功能,傳感器可以獨(dú)立完成諸如活動(dòng)識別、運(yùn)動(dòng)強(qiáng)度檢測和誤報(bào)過濾等任務(wù),而無需將數(shù)據(jù)處理轉(zhuǎn)交給外部的微控制器。MLC 通過處理來自加速度計(jì)、陀螺儀或外部傳感器的數(shù)據(jù),計(jì)算統(tǒng)計(jì)參數(shù)、應(yīng)用濾波器,并將分類結(jié)果輸出到專用寄存器中(AN5804)。
最近在弄ST的課程,需要樣片的可以加群申請:615061293 。
視頻教學(xué)
[https://www.bilibili.com/video/BV14V45eyEh9/]
樣品申請
[https://www.wjx.top/vm/OhcKxJk.aspx#]
源碼下載
[https://download.csdn.net/download/qq_24312945/89838597]
輸出速率
在 AN5804 文檔的 Table 1. Machine learning core output data rates 中,表格列出了機(jī)器學(xué)習(xí)核心(MLC)的輸出數(shù)據(jù)速率(ODR),用于配置 MLC 數(shù)據(jù)生成的頻率。
具體來說,MLC 的輸出數(shù)據(jù)速率決定了機(jī)器學(xué)習(xí)核心處理傳感器數(shù)據(jù)并輸出結(jié)果的頻率。不同的應(yīng)用場景可能需要不同的速率來平衡功耗和性能。這個(gè)表格的目的是讓用戶根據(jù)應(yīng)用需求選擇合適的輸出數(shù)據(jù)速率。
執(zhí)行流程
根據(jù) AN5804 第三頁的描述,LSM6DSV16X 傳感器的 機(jī)器學(xué)習(xí)核心(MLC) 的流程可以分為以下幾個(gè)步驟:
- 收集傳感器數(shù)據(jù):
- ○ MLC 從內(nèi)置的加速度計(jì)、陀螺儀以及通過 I2C 接口連接的外部傳感器(如磁力計(jì))中收集三軸傳感器數(shù)據(jù)。這些數(shù)據(jù)包括 X、Y、Z 軸的加速度和角速度。
- 處理傳感器數(shù)據(jù)(計(jì)算塊):
- ○ 在這一階段,傳感器數(shù)據(jù)經(jīng)過預(yù)處理。MLC 會(huì)應(yīng)用一些濾波器(如高通、低通或帶通濾波器),并計(jì)算出用戶配置的統(tǒng)計(jì)特征(例如均值、方差、能量、峰值等)。這些特征基于用戶定義的時(shí)間窗口(window length)進(jìn)行計(jì)算,時(shí)間窗口的長度決定了統(tǒng)計(jì)數(shù)據(jù)的覆蓋范圍。
- 構(gòu)建決策樹:
- ○ 處理后的特征作為輸入被傳遞到?jīng)Q策樹。決策樹是一個(gè)二叉樹結(jié)構(gòu),在每個(gè)節(jié)點(diǎn)中,特征值被與某個(gè)閾值進(jìn)行比較,以決定繼續(xù)走向下一節(jié)點(diǎn)的哪一條路徑。這個(gè)過程會(huì)在決策樹的各個(gè)節(jié)點(diǎn)中重復(fù),直到生成最終的分類結(jié)果(例如:靜止、行走、跑步等)。
- 輸出分類結(jié)果:
- ○ 當(dāng)決策樹到達(dá)葉節(jié)點(diǎn)時(shí),它會(huì)輸出一個(gè)分類結(jié)果,這個(gè)結(jié)果表示所檢測的動(dòng)作或狀態(tài)。結(jié)果會(huì)被存儲(chǔ)在 MLC 的專用輸出寄存器中,供外部微處理器讀取。
- 可選的元分類器過濾:
- ○ 輸出的分類結(jié)果還可以通過一種稱為 meta-classifier(元分類器) 的過濾器進(jìn)行處理。元分類器會(huì)根據(jù)多個(gè)分類結(jié)果的統(tǒng)計(jì)情況,減少短時(shí)的錯(cuò)誤分類或不穩(wěn)定的輸出。例如,如果短時(shí)間內(nèi)結(jié)果頻繁變化,元分類器會(huì)穩(wěn)定輸出。
速率設(shè)置
設(shè)置了加速度計(jì)和陀螺儀的輸出數(shù)據(jù)速率(ODR)為480Hz,這將使傳感器以較高的速率采樣數(shù)據(jù)。這種設(shè)置適用于需要高動(dòng)態(tài)精度的應(yīng)用場景,比如需要精確跟蹤快速運(yùn)動(dòng)的應(yīng)用。
lsm6dsv16x_xl_data_rate_set(&dev_ctx, LSM6DSV16X_ODR_AT_480Hz);
lsm6dsv16x_gy_data_rate_set(&dev_ctx, LSM6DSV16X_ODR_AT_480Hz);
量程設(shè)置
量程和分辨率的平衡:較大的量程適合高速動(dòng)態(tài)的應(yīng)用,但會(huì)降低測量的分辨率。如果你需要檢測較小的變化或在低動(dòng)態(tài)場景下使用,建議選擇較小的量程,以獲得更高的精度。
與MLC配合使用:如果你使用這些數(shù)據(jù)進(jìn)行機(jī)器學(xué)習(xí)核心(MLC)的處理,確保量程設(shè)置適當(dāng),以便捕捉到足夠的動(dòng)態(tài)數(shù)據(jù),同時(shí)保持?jǐn)?shù)據(jù)的分辨率。
lsm6dsv16x_xl_full_scale_set(&dev_ctx, LSM6DSV16X_2g);
lsm6dsv16x_gy_full_scale_set(&dev_ctx, LSM6DSV16X_125dps);
檢測狀態(tài)
鉛筆運(yùn)動(dòng)檢測應(yīng)用的構(gòu)建,檢測的四種不同場景(類別)。
- 靜止(Steady):筆在桌子上,不在手中。
- 閑置(Idle):筆在手中但未書寫。
- 書寫(Writing):筆在手中并在書寫。
- 其他(other):未被其他類別覆蓋的情況。
數(shù)據(jù)單位
加速度計(jì) 的數(shù)據(jù)單位為 mg。
陀螺儀 的數(shù)據(jù)單位為 dps。
陀螺儀數(shù)據(jù)也可以導(dǎo)入mdps。
采集數(shù)據(jù)
輪詢獲取數(shù)據(jù),使用串口打印傳感器的數(shù)據(jù),依次是ACC_X、ACC_Y 、ACC_Z、GYR_X、GYR_Y、GYR_Z。
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
lsm6dsv16x_data_ready_t drdy;
/* Read output only if new xl value is available */
lsm6dsv16x_flag_data_ready_get(&dev_ctx, &drdy);
if (drdy.drdy_xl & drdy.drdy_gy)
{
memset(data_raw_acceleration, 0x00, 3 * sizeof(int16_t));
memset(data_raw_angular_rate, 0x00, 3 * sizeof(int16_t));
lsm6dsv16x_acceleration_raw_get(&dev_ctx, data_raw_acceleration);
lsm6dsv16x_angular_rate_raw_get(&dev_ctx, data_raw_angular_rate);
acceleration_mg[0] = lsm6dsv16x_from_fs2_to_mg(data_raw_acceleration[0]);
acceleration_mg[1] = lsm6dsv16x_from_fs2_to_mg(data_raw_acceleration[1]);
acceleration_mg[2] = lsm6dsv16x_from_fs2_to_mg(data_raw_acceleration[2]);
angular_rate_mdps[0] = lsm6dsv16x_from_fs125_to_mdps(data_raw_angular_rate[0]);
angular_rate_mdps[1] = lsm6dsv16x_from_fs125_to_mdps(data_raw_angular_rate[1]);
angular_rate_mdps[2] = lsm6dsv16x_from_fs125_to_mdps(data_raw_angular_rate[2]);
printf("%4.2ft%4.2ft%4.2ft%4.2ft%4.2ft%4.2ftrn",
acceleration_mg[0], acceleration_mg[1], acceleration_mg[2],
angular_rate_mdps[0], angular_rate_mdps[1], angular_rate_mdps[2]);
}
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
將采集到的數(shù)據(jù)保存。
靜止(Steady)
器件放置在桌子上。
最好多幾個(gè)方向。
這里采集4組數(shù)據(jù)。
閑置(Idle)
器件在手中不動(dòng)。
采集多幾個(gè)方位數(shù)據(jù)。
這里采集4組數(shù)據(jù)。
書寫(Writing)
筆在手中并在書寫。
這里采集4組數(shù)據(jù)。
其他(other)
未被其他類別覆蓋的情況。
可以采集例如逆時(shí)針數(shù)據(jù)。
這里采集4組數(shù)據(jù)。
審核編輯 黃宇
-
數(shù)據(jù)采集
+關(guān)注
關(guān)注
38文章
5795瀏覽量
113403 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8343瀏覽量
132286 -
MLC
+關(guān)注
關(guān)注
0文章
37瀏覽量
17272
發(fā)布評論請先 登錄
相關(guān)推薦
評論