0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

LSM6DSV16X基于MLC智能筆動作識別(2)----MLC數據采集

嵌入式單片機MCU開發(fā) ? 來源:嵌入式單片機MCU開發(fā) ? 作者:嵌入式單片機MCU開 ? 2024-10-22 10:02 ? 次閱讀

概述

MLC 是“機器學習核心”(Machine Learning Core)的縮寫。在 LSM6DSV16X 傳感器 中,MLC 是一種嵌入式功能,它使傳感器能夠直接運行基于決策樹的機器學習算法。通過這種功能,傳感器可以獨立完成諸如活動識別、運動強度檢測和誤報過濾等任務,而無需將數據處理轉交給外部的微控制器。MLC 通過處理來自加速度計、陀螺儀或外部傳感器的數據,計算統(tǒng)計參數、應用濾波器,并將分類結果輸出到專用寄存器中(AN5804)。

最近在弄ST的課程,需要樣片的可以加群申請:615061293 。

視頻教學

[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 中,表格列出了機器學習核心(MLC)的輸出數據速率(ODR),用于配置 MLC 數據生成的頻率。

具體來說,MLC 的輸出數據速率決定了機器學習核心處理傳感器數據并輸出結果的頻率。不同的應用場景可能需要不同的速率來平衡功耗和性能。這個表格的目的是讓用戶根據應用需求選擇合適的輸出數據速率。

執(zhí)行流程

根據 AN5804 第三頁的描述,LSM6DSV16X 傳感器的 機器學習核心(MLC) 的流程可以分為以下幾個步驟:

  1. 收集傳感器數據:
    1. ○ MLC 從內置的加速度計、陀螺儀以及通過 I2C 接口連接的外部傳感器(如磁力計)中收集三軸傳感器數據。這些數據包括 X、Y、Z 軸的加速度和角速度。
  2. 處理傳感器數據(計算塊):
    1. ○ 在這一階段,傳感器數據經過預處理。MLC 會應用一些濾波器(如高通、低通或帶通濾波器),并計算出用戶配置的統(tǒng)計特征(例如均值、方差、能量、峰值等)。這些特征基于用戶定義的時間窗口(window length)進行計算,時間窗口的長度決定了統(tǒng)計數據的覆蓋范圍。
  3. 構建決策樹:
    1. ○ 處理后的特征作為輸入被傳遞到決策樹。決策樹是一個二叉樹結構,在每個節(jié)點中,特征值被與某個閾值進行比較,以決定繼續(xù)走向下一節(jié)點的哪一條路徑。這個過程會在決策樹的各個節(jié)點中重復,直到生成最終的分類結果(例如:靜止、行走、跑步等)。
  4. 輸出分類結果:
    1. ○ 當決策樹到達葉節(jié)點時,它會輸出一個分類結果,這個結果表示所檢測的動作或狀態(tài)。結果會被存儲在 MLC 的專用輸出寄存器中,供外部微處理器讀取。
  5. 可選的元分類器過濾:
    1. ○ 輸出的分類結果還可以通過一種稱為 meta-classifier(元分類器) 的過濾器進行處理。元分類器會根據多個分類結果的統(tǒng)計情況,減少短時的錯誤分類或不穩(wěn)定的輸出。例如,如果短時間內結果頻繁變化,元分類器會穩(wěn)定輸出。

速率設置

設置了加速度計和陀螺儀的輸出數據速率(ODR)為480Hz,這將使傳感器以較高的速率采樣數據。這種設置適用于需要高動態(tài)精度的應用場景,比如需要精確跟蹤快速運動的應用。

lsm6dsv16x_xl_data_rate_set(&dev_ctx, LSM6DSV16X_ODR_AT_480Hz);
  lsm6dsv16x_gy_data_rate_set(&dev_ctx, LSM6DSV16X_ODR_AT_480Hz);

量程設置

量程和分辨率的平衡:較大的量程適合高速動態(tài)的應用,但會降低測量的分辨率。如果你需要檢測較小的變化或在低動態(tài)場景下使用,建議選擇較小的量程,以獲得更高的精度。

與MLC配合使用:如果你使用這些數據進行機器學習核心(MLC)的處理,確保量程設置適當,以便捕捉到足夠的動態(tài)數據,同時保持數據的分辨率。

lsm6dsv16x_xl_full_scale_set(&dev_ctx, LSM6DSV16X_2g);
  lsm6dsv16x_gy_full_scale_set(&dev_ctx, LSM6DSV16X_125dps);

檢測狀態(tài)

鉛筆運動檢測應用的構建,檢測的四種不同場景(類別)。

  1. 靜止(Steady):筆在桌子上,不在手中。
  2. 閑置(Idle):筆在手中但未書寫。
  3. 書寫(Writing):筆在手中并在書寫。
  4. 其他(other):未被其他類別覆蓋的情況。

數據單位

加速度計 的數據單位為 mg。

陀螺儀 的數據單位為 dps。

陀螺儀數據也可以導入mdps。

采集數據

輪詢獲取數據,使用串口打印傳感器的數據,依次是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 */

將采集到的數據保存。

靜止(Steady)

器件放置在桌子上。

最好多幾個方向。

這里采集4組數據。

閑置(Idle)

器件在手中不動。

采集多幾個方位數據。

這里采集4組數據。

書寫(Writing)

筆在手中并在書寫。

這里采集4組數據。

其他(other)

未被其他類別覆蓋的情況。

可以采集例如逆時針數據。

這里采集4組數據。

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • 數據采集
    +關注

    關注

    39

    文章

    6090

    瀏覽量

    113646
  • 機器學習
    +關注

    關注

    66

    文章

    8416

    瀏覽量

    132619
  • MLC
    MLC
    +關注

    關注

    0

    文章

    41

    瀏覽量

    17304
收藏 人收藏

    評論

    相關推薦

    陀螺儀LSM6DSV16X與AI集成(1)----輪詢獲取陀螺儀數據

    本文將介紹如何使用 LSM6DSV16X 傳感器來讀取數據。主要步驟包括初始化傳感器接口、驗證設備ID、配置傳感器的數據輸出率和濾波器,以及通過輪詢方式持續(xù)讀取加速度、角速率和溫度數據
    的頭像 發(fā)表于 12-18 10:49 ?1724次閱讀
    陀螺儀<b class='flag-5'>LSM6DSV16X</b>與AI集成(1)----輪詢獲取陀螺儀<b class='flag-5'>數據</b>

    陀螺儀LSM6DSV16X與AI集成(2)----姿態(tài)解算

    LSM6DSV16X包含三軸陀螺儀與三軸加速度計。
    的頭像 發(fā)表于 12-18 10:51 ?2232次閱讀
    陀螺儀<b class='flag-5'>LSM6DSV16X</b>與AI集成(<b class='flag-5'>2</b>)----姿態(tài)解算

    陀螺儀LSM6DSV16X與AI集成(3)----讀取融合算法輸出的四元數

    LSM6DSV16X 特性涉及到的是一種低功耗的傳感器融合算法(Sensor Fusion Low Power, SFLP). 低功耗傳感器融合(SFLP)算法:
    的頭像 發(fā)表于 12-18 10:53 ?1217次閱讀
    陀螺儀<b class='flag-5'>LSM6DSV16X</b>與AI集成(3)----讀取融合算法輸出的四元數

    陀螺儀LSM6DSV16X與AI集成(7)----FIFO數據讀取與配置

    LSM6DSV16X是一款高性能、低功耗的6軸IMU傳感器,集成了3軸加速度計和3軸陀螺儀。本文將詳細介紹如何配置和讀取LSM6DSV16X傳感器的FIFO數據,包括初始化、配置以及
    的頭像 發(fā)表于 07-18 10:40 ?1527次閱讀
    陀螺儀<b class='flag-5'>LSM6DSV16X</b>與AI集成(7)----FIFO<b class='flag-5'>數據</b>讀取與配置

    LSM6DSV16X基于MLC智能動作識別(3)----MEMS Studio訓練數據

    MEMS-Studio是一套完整的桌面軟件解決方案,專為開發(fā)嵌入式AI功能、評估嵌入式庫、分析數據,以及為整個MEMS傳感器產品組合設計無代碼算法而設計。這款獨特的軟件解決方案提供了多功能的開發(fā)環(huán)境
    的頭像 發(fā)表于 11-25 11:28 ?513次閱讀
    <b class='flag-5'>LSM6DSV16X</b>基于<b class='flag-5'>MLC</b><b class='flag-5'>智能</b><b class='flag-5'>筆</b><b class='flag-5'>動作</b><b class='flag-5'>識別</b>(3)----MEMS Studio訓練<b class='flag-5'>數據</b>

    陀螺儀LSM6DSV16X與AI集成(13)----中斷獲取SFLP四元數

    本文將介紹如何通過中斷機制獲取 LSM6DSV16X 傳感器的 SFLP(Sensor Fusion Low Power)四元數數據LSM6DSV16X 是一款高性能的 6 軸慣性傳
    的頭像 發(fā)表于 11-25 11:44 ?576次閱讀
    陀螺儀<b class='flag-5'>LSM6DSV16X</b>與AI集成(13)----中斷獲取SFLP四元數

    陀螺儀LSM6DSV16X與AI集成(14)----上報匿名上位機

    本文介紹了如何將 LSM6DSV16X 傳感器的姿態(tài)數據通過匿名通信協議上報到上位機。通過獲取傳感器的四元數數據,并將其轉換為歐拉角(Roll、Pitch、Yaw),然后按照協議格式化數據
    的頭像 發(fā)表于 11-25 11:53 ?644次閱讀
    陀螺儀<b class='flag-5'>LSM6DSV16X</b>與AI集成(14)----上報匿名上位機

    LSM6DSO32X每次收到中斷后讀取MLC結果寄存器數值為00,怎么解決?

    慣性模塊是LSM6DSO32X,使用官方開發(fā)板在Unioc-GUI上可以看到MLC結果寄存器是有數值的(無論是官方例程還是自己的程序),在自己設計的板子上使用了LSM6DSO32X,MLC
    發(fā)表于 03-20 07:55

    請問lsm6dsv16x可以直接讀取觸摸手勢嗎?

    已經讀出來了LSM6DSV16x的QVRmv值,也寫出了單擊的狀態(tài)機。但是在寫觸摸滑動手勢時沒有找到好的計算方式。請問是不是有直接讀出這些手勢的函數?
    發(fā)表于 07-02 08:14

    求助,是否有在LSM6DSV16X中使用傳感器融合低功耗算法的示例

    你好我想知道是否有在 LSM6DSV16X 中使用傳感器融合低功耗算法的示例。我想檢索當前的 Heading、Pitch 和 Roll 信息?;蛘呶乙埠芨吲d有一個例子解釋如何從 SFLP 中獲取四元
    發(fā)表于 02-03 09:12

    如何識別slc和mlc芯片及slc mlc區(qū)別

    如何識別slc和mlc芯片及slc mlc區(qū)別 slc mlc區(qū)別:     MLC(Mu
    發(fā)表于 07-17 10:01 ?6799次閱讀

    LSM6DSOX MLC狀態(tài)識別

    電子發(fā)燒友網站提供《LSM6DSOX MLC狀態(tài)識別.pdf》資料免費下載
    發(fā)表于 07-31 15:14 ?0次下載
    <b class='flag-5'>LSM6</b>DSOX <b class='flag-5'>MLC</b>狀態(tài)<b class='flag-5'>識別</b>

    ST LSM6DSV16X iNEMO慣性模塊相關的使用信息和應用提示

    AN5763,LSM6DSV16X是一款ST的3 軸加速度計和 3 軸陀螺儀; LSM6DSV16X 是系統(tǒng)級封裝的 3 軸數字加速度計和 3 軸數字陀螺儀,具有數字 I2C、SPI 和 MIPI
    發(fā)表于 08-31 11:12 ?0次下載

    LSM6DSV16X基于MLC智能動作識別(1)----輪詢獲取陀螺儀數據

    本文將介紹如何使用 LSM6DSV16X 傳感器來讀取數據。主要步驟包括初始化傳感器接口、驗證設備ID、配置傳感器的數據輸出率和濾波器,以及通過輪詢方式持續(xù)讀取加速度、角速率和溫度數據
    的頭像 發(fā)表于 10-16 10:38 ?375次閱讀
    <b class='flag-5'>LSM6DSV16X</b>基于<b class='flag-5'>MLC</b><b class='flag-5'>智能</b><b class='flag-5'>筆</b><b class='flag-5'>動作</b><b class='flag-5'>識別</b>(1)----輪詢獲取陀螺儀<b class='flag-5'>數據</b>

    LSM6DSV16X基于MLC智能動作識別(4)----中斷獲取智能狀態(tài)

    LSM6DSV16X 支持通過中斷(INT)輸出 MLC(機器學習核)識別動作。具體來說,MLC 可以配置為在滿足某些條件或機器學習分類結
    的頭像 發(fā)表于 11-25 11:39 ?178次閱讀
    <b class='flag-5'>LSM6DSV16X</b>基于<b class='flag-5'>MLC</b><b class='flag-5'>智能</b><b class='flag-5'>筆</b><b class='flag-5'>動作</b><b class='flag-5'>識別</b>(4)----中斷獲取<b class='flag-5'>智能</b><b class='flag-5'>筆</b>狀態(tài)