国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

意法半導體LSM6DSV320X IMU傳感器在Linux平臺的驅動移植與姿態感知應用實現

意法半導體中國 ? 來源:意法半導體中國 ? 2025-12-11 14:31 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

????????感謝各位電子愛好者與行業伙伴們對ST板卡評測系列活動的持續關注!該系列活動通過ST中文論壇板卡申請用戶對各類板卡的真實體驗和評測文章分享,從多個維度、全方位深入剖析ST相關產品的性能表現與實際應用場景,為用戶了解和選用板卡提供極具實用價值的參考。

LSM6DSV320X+MEMS主板開發平臺STEVAL-MKI109D的板卡評測活動推出后,廣大網友踴躍參與,涌現出很多優秀的評測投稿。本期為大家分享論壇網友短笛君的精彩評測內容。

7a24fee0-d0a5-11f0-8c8f-92fbcf53809c.jpg

LSM6DSV320X+MEMS主板開發平臺STEVAL-MKI109D及其核心功能、應用場景、技術亮點及評測方向已在前期活動招募文中詳細說明,想快速了解細節的朋友,可回顧板卡評測|免費申請微型AI傳感器LSM6DSV320X,解鎖高精度運動跟蹤新體驗一文,這里不再贅述。本期我們聚焦論壇網友短笛君的實測體驗。他首先分享了MEMS上位機體驗并進行MLC數據預采集,隨后實現了LSM6DSV320X IMU傳感器在Linux平臺的驅動移植,并開發具備四元數和歐拉角解算的完整姿態感知應用,最后講解了如何在MEMS Studio上進行MLC的過程。

短笛君的評測內容

MEMS上位機體驗以及MLC數據采集

LSM6DSV320X是意法半導體推出的一款高性能、低功耗的6軸慣性測量單元,集成了3軸數字加速度計和3軸數字陀螺儀。它是ST傳感器產品線中的旗艦型號之一,專為需要高精度運動感知和復雜數據處理的先進應用而設計。實際效果,請在ST中文論壇了解。

7aecbd7c-d0a5-11f0-8c8f-92fbcf53809c.png

根據官網描述這顆陀螺儀傳感器內置雙量程加速度計,高g加速度計量程高達320g量程。

內置智能與機器學習核心:

●集成了可編程的有限狀態機和機器學習核心。

●FSM:允許用戶定義簡單的“如果-那么”邏輯規則,用于識別特定的運動模式(如單擊、雙擊、計步),無需喚醒主處理器,極大節省功耗。

●MLC:能夠直接在傳感器內部運行機器學習算法(如決策樹),用于識別更復雜的活動和情境(如跑步、駕駛、設備跌落),將分類結果直接輸出,極大減輕主處理器的計算負擔。

后續測試中實際體驗了MLC功能經過學習數據后,內置硬件邏輯可以在極低的功耗下運行基礎的傳感器融合算法,很方便的可以處理外部數據最大限度的節省功耗。

LSM6DSV320X支持自適應自配置(ASC)功能,能夠基于檢測到的特定運動模式,或基于MLC中配置的特定決策樹輸出,自動實時重新配置設備,無需主處理器的干預。

內置濾波器

該器件嵌入了一個專用加速度計傳感器,具有獨立通道和濾波功能,可進行高g加速度檢測,外部總線還支持拓展傳感器可以外界磁羅盤等數據進行融合算法的處理。

LSM6DSV320X還支持了I3C接口,通訊速率大幅提高。

MEMS-Studio

MEMS Studio是ST為MEMS傳感器平臺推出的一款一體化上位機傳感器通過載板和軟件配置可以實現傳感器配置實時數據可視化管理與調試。

本次測評也基于這個上位機平臺開展。

7b64ad3c-d0a5-11f0-8c8f-92fbcf53809c.png

將評估平臺插入電腦后軟件會自動讀取串口連接板卡。

7bcd9de2-d0a5-11f0-8c8f-92fbcf53809c.png

連接對應板卡。

7c2990fc-d0a5-11f0-8c8f-92fbcf53809c.png

成功連接后,進入傳感器配置界面,右側展示了三個傳感器的配置參數,分別是低g值加速度計的量程,操作模式以及數據輸出速度(ODR),高g加速度計的量程以及ODR和陀螺儀量程以及ODR,通過配置這三個參數來達到不同的性能組合,數據輸出速率越高消耗電流越大,三個傳感器的最高輸出速率均可達到7.68KHz。

7c935ac8-d0a5-11f0-8c8f-92fbcf53809c.png

接下來就是配置寄存器,由于之前寫過默認配置文件,所以寄存器這里已經是配置好的狀態,用戶依然可以在上位機中自由讀寫這幾個寄存器,數量太多可以自行查看。

這個功能對于軟件開發人員來說很方便!沒有載板平臺時,開發者只能通過編寫代碼來讀寫寄存器,十分的麻煩,現在上位機可以一鍵配置、讀取,十分方便。

7ceb125e-d0a5-11f0-8c8f-92fbcf53809c.png

數據保存界面可以將傳感器的原始數據一鍵打log保存到csv文件內對后面MLC也是十分方便。

7d4ea6de-d0a5-11f0-8c8f-92fbcf53809c.png

7da6e6c8-d0a5-11f0-8c8f-92fbcf53809c.png

7e1578a4-d0a5-11f0-8c8f-92fbcf53809c.png

7e762140-d0a5-11f0-8c8f-92fbcf53809c.png

7e762140-d0a5-11f0-8c8f-92fbcf53809c.png

幾個數據查看面板做的效果是非常直觀的用戶可以從圖表中直接觀察到傳感器的數據輸出。

7f3762e2-d0a5-11f0-8c8f-92fbcf53809c.png

高級功能中主要是針對FSM(有限狀態機)以及MLC這兩個流程評估的后續將會更新MLC的評估。

7f9a3c8c-d0a5-11f0-8c8f-92fbcf53809c.png

在數據分析界面中主要是針對先前提到的數據保存功能保存下來的log數據進行分析。

7ff4094c-d0a5-11f0-8c8f-92fbcf53809c.png

如上圖將原始數據載入后可以一鍵標注數據。

8059cd5e-d0a5-11f0-8c8f-92fbcf53809c.png

上位機根據不同的數據行為會區分不同標簽,用戶將打過標簽的數據輸出到MLC這一步即可完成機器學習的模型訓練,無需MCU介入傳感器自己就可以識別不同的行為模式。

80b90a08-d0a5-11f0-8c8f-92fbcf53809c.png

最后一項是類似NoDe-RED的基于流的開發工具,用戶可以根據不同的節點來創建自動化任務以及應用程序,無需編輯代碼即可快速評估傳感器。極大地縮短了產品開發流程;此外,產品功耗表明,九軸配置時實際測量電流約為800ua。

811fb96a-d0a5-11f0-8c8f-92fbcf53809c.jpg

關閉所有傳感器待機。

817dc186-d0a5-11f0-8c8f-92fbcf53809c.jpg

符合手冊中的描述,另外IO可編程電壓也實際測試了一下,這個功能是為了適配不同MCU間通信,例如部分SOC通信信號引腳電平耐受1.1V就可以改變電平信號電壓。

81e1c32a-d0a5-11f0-8c8f-92fbcf53809c.jpg

8238cbc0-d0a5-11f0-8c8f-92fbcf53809c.jpg

LSM6DSV320X不僅僅是一個運動傳感器,更是一個高度集成的“智能傳感中心”。它將高性能的加速度計和陀螺儀與獨特的嵌入式智能(FSM、MLC)技術相結合,為設備制造商提供了:

●系統級節能:通過邊緣計算將決策任務下放到傳感器,大幅降低主處理器負載和整體系統功耗。

●增強的功能性:能夠實現更復雜、更直觀的用戶交互和情境感知。

●設計的簡化:高集成度減少了對外部元件的需求,簡化了硬件和軟件設計。

Linux平臺驅動移植與姿態感知應用實現

本文將帶你從零實現LSM6DSV320X IMU傳感器在Linux平臺的驅動移植,并開發具備四元數和歐拉角解算的完整姿態感知應用。

項目背景

LSM6DSV320X是一款高端、低噪聲、低功耗小型IMU,集成16g三軸數字低g加速度計、320g三軸數字高g加速度計及三軸數字陀螺儀,提供最佳IMU傳感器性能,采用四個單獨通道(用戶界面、OIS、EIS和高g加速度計數據通道)獨立處理加速度與角速率數據,具有專用配置、處理和濾波功能,并配備專用高g傳感器實現高g沖擊與汽車碰撞檢測。

雖然在STM32生態中有完善的HAL驅動支持,但在Linux平臺的資料相對較少。本項目成功將官方驅動移植到Linux環境,并實現了實時姿態感知功能。

第一次寫Linux驅動的項目,可能有許多筆誤,還希望各位大佬多多包涵。有錯誤幫忙指出。

之所以選擇樹莓派是因為其底層IIC驅動已經相對完善,一致起來節省時間。

硬件準備

82a027a2-d0a5-11f0-8c8f-92fbcf53809c.png

樹莓派的硬件pinout如上,我們使用的是IIC接口,所以需要使用GPIO2 GPIO3兩個引腳。

EVM板硬件連接

82f7cd0e-d0a5-11f0-8c8f-92fbcf53809c.jpg

主板側面引出排針直接連接IIC接口就可以。

8366bf0c-d0a5-11f0-8c8f-92fbcf53809c.jpg

需要注意的一點是板卡的供電,由于樹莓派接口使用的是3V3通信的電平,因此我們需將傳感器板的供電冒取下,改為右側兩個針并聯,再將樹莓派的3V3連接到VDD上,這樣就完成了在無需軟件修改主板供電的情況下給傳感器供電,(主板給傳感器的電壓默認為1.1V,如果用Typec給主板供電,可能會出現通信問題和電流倒灌)。

連接完成后,我們使用I2C工具探測連接。

83c1224e-d0a5-11f0-8c8f-92fbcf53809c.png

如圖所示,出現0X6A,即為傳感器已經被Linux板卡識別到,接下來可使用i2cget工具讀取who am i寄存器。

8420e382-d0a5-11f0-8c8f-92fbcf53809c.png

出現0x73即linux與傳感器通信正常。

軟件準備

訪問ST官網查找其傳感器驅動庫(鏈接:https://github.com/STMicroelectronics/lsm6dsv320x-pid.git),clone下來驅動庫,我們只需要重新實現在Linux平臺下的IIC讀寫操作即可。

項目結構說明

84785888-d0a5-11f0-8c8f-92fbcf53809c.png

reg結尾是ST官方驅動庫函數,其中包括了傳感器的初始化、寄存器地址及配置枚舉變量,我們直接引用即可。rpi是我們的應用文件,這三個文件要放在同一個目錄之下,否側GCC編譯會報錯。

項目流程

項目初始化流程如下所示:主要是初始化變量以及打開IIC總線,并設置IIC從設備地址(0X6A)和異常處理,正常打開計入后,將句柄傳入ST驅動庫提供的句柄中,進行初始化驅動上下文。

84da8a44-d0a5-11f0-8c8f-92fbcf53809c.png

IIC總線打開正常后,會讀取傳感器的WHO_AM_I寄存器并驗證,讀取并驗證無誤后復位一次傳感器,開始配置傳感器參數(ACC:120Hz ±4g,陀螺儀:120Hz ±2000dps,BDU啟用),并獲取一次時間戳。參數設置原理可以參考使用MEMS_Studio的Easy Config配置傳感器。

8530249a-d0a5-11f0-8c8f-92fbcf53809c.png

傳感器參數配置完成后,就開始整個應用邏輯:

1. 計算時間間隔(dt) ↓

2. 檢查數據就緒狀態 ↓

3. 如果數據就緒:

●讀取加速度計數據 → 轉換為mg和g

●讀取陀螺儀數據 → 轉換為mdps和dps

●計算四元數姿態

●計算歐拉角 ↓

4. 顯示所有數據 ↓

5. 延遲50ms ↓

6. 返回步驟1

85957778-d0a5-11f0-8c8f-92fbcf53809c.png

數據輸出格式為四種:

原始加速度:[x,y,z] // 16位原始數據

物理加速度:[ax,ay,az] // 毫克單位

姿態四元數:[w,x,y,z] // 歸一化四元數

歐拉角度:[橫滾,俯仰,偏航] // 度單位

由于是先行評估驗證,關于歐拉角的偏航角積分偏移問題還沒有處理,所以在代碼中并未進行轉換,輸出數據一直為0,后續可以移植AHRS的參考算法進行磁力計糾偏。

應用層代碼解析

作者之前也不是linux開發者,目前只是新手,下文中如有錯誤還請多多海涵。

這個操作框架設計如下:

85ec4382-d0a5-11f0-8c8f-92fbcf53809c.png

I2C驅動層實現

首先需要實現Linux平臺的I2C讀寫接口:

staticint32_trpi_i2c_write(void*handle,uint8_treg,
             constuint8_t*buf,uint16_tlen)
{
 intfd = *(int*)handle;
 structi2c_msgmsg;
 structi2c_rdwr_ioctl_dataioctl_data;
 // 構建發送緩沖區(寄存器地址+數據)
 uint8_t*tx_buf =malloc(len +1);
  tx_buf[0] = reg;
 memcpy(&tx_buf[1], buf, len);
 // 配置I2C消息
  msg.addr = LSM6DSV320X_I2C_ADD;
  msg.flags =0; // 寫操作
  msg.len = len +1;
  msg.buf = tx_buf;
 // 執行IOCTL調用
 if(ioctl(fd, I2C_RDWR, &ioctl_data) 

關于ioctl子系統的相關內容,可以在bilibili搜索MP157 Ioctl子系統相關視頻。

傳感器初始化配置

// 設備檢測和初始化
intfd =open("/dev/i2c-1", O_RDWR);
ioctl(fd, I2C_SLAVE,0x6A); // 設置傳感器地址
// 初始化驅動上下文
stmdev_ctx_tdev_ctx;
dev_ctx.write_reg = rpi_i2c_write;
dev_ctx.read_reg = rpi_i2c_read;
dev_ctx.handle = &fd;
// 驗證設備ID
uint8_twho_am_i;
lsm6dsv320x_device_id_get(&dev_ctx, &who_am_i);
printf("設備ID: 0x%02X
", who_am_i);
// 傳感器配置
lsm6dsv320x_xl_data_rate_set(&dev_ctx, LSM6DSV320X_ODR_AT_120Hz); // 加速度計120Hz
lsm6dsv320x_gy_data_rate_set(&dev_ctx, LSM6DSV320X_ODR_AT_120Hz); // 陀螺儀120Hz
lsm6dsv320x_xl_full_scale_set(&dev_ctx, LSM6DSV320X_4g);     // ±4g量程
lsm6dsv320x_gy_full_scale_set(&dev_ctx, LSM6DSV320X_2000dps);   // ±2000dps量程

這里實現的關鍵一步是

// 設備檢測和初始化
intfd =open("/dev/i2c-1", O_RDWR);
ioctl(fd, I2C_SLAVE,0x6A); // 設置傳感器地址
// 初始化驅動上下文
stmdev_ctx_tdev_ctx;
dev_ctx.write_reg = rpi_i2c_write;
dev_ctx.read_reg = rpi_i2c_read;
dev_ctx.handle = &fd;

Linux中可以將文件視作操作的最小單位,這里IIC1總線視作文件打開,并將上文中實現的操作接口函數以指針的形式賦值給ST驅動接口平臺。

打開文件對應Linux內核中通過VFS訪問IIC驅動。

ioctl工作原理

// ioctl調用流程:
用戶空間 → 系統調用 → 內核VFS → I2C核心層 → I2C適配器驅動
// 在內核中的實現大致如下:
staticlongi2c_dev_ioctl(structfile*file, unsignedintcmd, unsignedlongarg)
{
 switch(cmd) {
 caseI2C_SLAVE:
   // 設置從設備地址到i2c_client結構體
    client->addr = arg;
   break;
  }
}

其次是初始化一個接口體對象,這部分在ST驅動代碼中,我們直接引用

stmdev_ctx_t dev_ctx;

結構體的定義:

typedefstruct{
 int32_t(*write_reg)(void*handle,uint8_treg,constuint8_t*buf,uint16_tlen);
 int32_t(*read_reg)(void*handle,uint8_treg,uint8_t*buf,uint16_tlen);
 void*handle;
 void(*mdelay)(uint32_tmillisec);
}stmdev_ctx_t;
//write_reg:函數指針,指向寄存器寫函數
//read_reg:函數指針,指向寄存器讀函數
//handle:泛型指針,用于傳遞平臺特定數據
//mdelay:函數指針,指向延遲函數(可選)

我們的設計模式是將IIC操作統一成抽象的接口,即上文中實現的rpi的IIC驅動層實現。這樣就可以在不同平臺中復用相同業務邏輯的代碼,只需要移植驅動層函數即可,所以在rpi驅動實現中,保持了和ST一樣的參數。

// ST驅動期望的函數簽名
int32_t(*write_reg)(void*handle,uint8_treg,constuint8_t*buf,uint16_tlen);
int32_t(*read_reg)(void*handle,uint8_treg,uint8_t*buf,uint16_tlen);
// 我們的平臺實現必須匹配這個簽名
staticint32_trpi_i2c_write(void*handle,uint8_treg,constuint8_t*buf,uint16_tlen);
staticint32_trpi_i2c_read(void*handle,uint8_treg,uint8_t*buf,uint16_tlen);

通過以上實現思路,我們即可在Linux系統下完成通過IIC讀寫傳感器寄存器的操作。

傳感器的初始化操作

實現了寄存器的訪問后,應用層上編寫邏輯就和STM32這類MCU相差不大,就是封裝函數在寫入即可,具體封裝實現邏輯可以在ST中文論壇獲取。

// 設備檢測和初始化
intfd =open("/dev/i2c-1", O_RDWR);
ioctl(fd, I2C_SLAVE,0x6A); // 設置傳感器地址
// 初始化驅動上下文
stmdev_ctx_tdev_ctx;
dev_ctx.write_reg = rpi_i2c_write;
dev_ctx.read_reg = rpi_i2c_read;
dev_ctx.handle = &fd;
// 驗證設備ID
uint8_twho_am_i;
lsm6dsv320x_device_id_get(&dev_ctx, &who_am_i);
printf("設備ID: 0x%02X
", who_am_i);
// 傳感器配置
lsm6dsv320x_xl_data_rate_set(&dev_ctx, LSM6DSV320X_ODR_AT_120Hz); // 加速度計120Hz
lsm6dsv320x_gy_data_rate_set(&dev_ctx, LSM6DSV320X_ODR_AT_120Hz); // 陀螺儀120Hz
lsm6dsv320x_xl_full_scale_set(&dev_ctx, LSM6DSV320X_4g);     // ±4g量程
lsm6dsv320x_gy_full_scale_set(&dev_ctx, LSM6DSV320X_2000dps);   // ±2000dps量程

姿態解算

本項目實現了基于互補濾波的實時姿態解算:

// 四元數計算函數
static void calculate_quaternion(float accel[3], float gyro[3],
               float dt, floatq[4])
{
 //加速度計數據歸一化
  float norm =sqrt(accel[0]*accel[0] + accel[1]*accel[1] + accel[2]*accel[2]);
 if(norm >0.0f) {
    accel[0] /= norm; accel[1] /= norm; accel[2] /= norm;
  }
  // 陀螺儀數據轉換(度/秒 → 弧度/秒)
  float gx = gyro[0] * M_PI /180.0f;
  float gy = gyro[1] * M_PI /180.0f;
  float gz = gyro[2] * M_PI /180.0f;
 //互補濾波誤差校正
  float vx =2.0f * (q_prev[1]*q_prev[3] - q_prev[0]*q_prev[2]);
  float vy =2.0f * (q_prev[0]*q_prev[1] + q_prev[2]*q_prev[3]);
  float vz = q_prev[0]*q_prev[0] - q_prev[1]*q_prev[1]
       - q_prev[2]*q_prev[2] + q_prev[3]*q_prev[3];
 //誤差積分和反饋校正
  float ex = (accel[1]*vz - accel[2]*vy);
  float ey = (accel[2]*vx - accel[0]*vz);
  float ez = (accel[0]*vy - accel[1]*vx);
 //四元數微分方程數值積分
  float qdot[4];
  qdot[0] =0.5f * (-q_prev[1]*gx - q_prev[2]*gy - q_prev[3]*gz);
  qdot[1] =0.5f * (q_prev[0]*gx + q_prev[2]*gz - q_prev[3]*gy);
 //... 其他分量計算
  // 積分和歸一化
 for(inti =0; i 

四元數轉歐拉角:

static void quaternion_to_euler(floatq[4], float euler[3])
{
  float w =q[0],x=q[1],y=q[2], z =q[3];
 //橫滾角 (Roll)
  float sinr_cosp =2.0f * (w *x+y* z);
  float cosr_cosp =1.0f -2.0f * (x*x+y*y);
  euler[0] =atan2(sinr_cosp, cosr_cosp) *180.0f / M_PI;
 //俯仰角 (Pitch)
  float sinp =2.0f * (w *y- z *x);
 if(fabs(sinp) >=1.0f)
    euler[1] = copysign(90.0f, sinp);
 else
    euler[1] = asin(sinp) *180.0f / M_PI;
 //偏航角 (Yaw)
  float siny_cosp =2.0f * (w * z +x*y);
  float cosy_cosp =1.0f -2.0f * (y*y+ z * z);
  euler[2] =atan2(siny_cosp, cosy_cosp) *180.0f / M_PI;
}

該部分參考可以參照哈爾濱工程大學創夢之翼戰隊,韭菜的菜開源。

●四元數EKF姿態更新算法 - 知乎

RoboMaster機器人姿態解算方案開源 - 知乎

代碼編譯

先前已經說了,驅動庫和APP要放在一個目錄下。

gcc -o lsm6dsv320x_test lsm6dsv320x_rpi.c lsm6dsv320x_reg.c -lm
./lsm6dsv320x_test

864a1728-d0a5-11f0-8c8f-92fbcf53809c.png

執行效果如上。

使用MEMS Studio訓練數據并使用MLC功能進行識別

MLC(Machine Learning Core)功能可以將一些跑在MCU上的算法(如TinyML)在傳感器端實現,從而實現MCU休眠時傳感器可以持續檢測某一特定動作組,這個學習處理的過程依靠決策邏輯樹構成,具體的信息可以參考ST官網資料。

鏈接:https://www.st.com/content/st_com/en/MEMS-Sensors-Ecosystem-for-Machine-Learning.html

本文主要講解如何在MEMS Studio上進行MLC過程。首先選擇我們使用的板卡,具體配置過程可以參考前邊的內容。

869fe1bc-d0a5-11f0-8c8f-92fbcf53809c.png

配置完傳感器之后,使用MEMS Studio的數據采集功能,分別采集兩種不同動作的數據,每個動作保存3組。記得打上時間戳,后面有用。

保存好的數據如下圖:

8703bf0c-d0a5-11f0-8c8f-92fbcf53809c.png

shake和standby分別對應抖動時候和靜止板卡時候的數據,用戶可以根據自己不同的情況多定制幾種不同的功能。

875f78d8-d0a5-11f0-8c8f-92fbcf53809c.png

電機advance feature里面的MLC選項卡,分別導入我們的數據,注意是分別導入。

我們先點擊browse,將我們的數據加載進選項框中,然后再右面輸入欄中輸入我們的數據標簽,然后再點擊load。這樣我們對于某一個動作的數據集就會被加載進去了,不要一股腦的選中所有數據全部加載進去。

87c712c2-d0a5-11f0-8c8f-92fbcf53809c.png

881ce580-d0a5-11f0-8c8f-92fbcf53809c.png

加載完數據之后,我們開始配置窗口長度以及量程,配置的選項可以參考我們在初始化時侯的選項,每一項對應著選擇就好。

88812662-d0a5-11f0-8c8f-92fbcf53809c.png

接著,我們點擊下面的AREF generation,配置我們的濾波器(filters),這個濾波器是重要的,可以對我們的原始信號就行處理。

88df390a-d0a5-11f0-8c8f-92fbcf53809c.png

濾波器一般會配置每個軸,可以選擇平均值濾波,高通低通濾波器等,一般選擇平均值濾波可以平滑擾動信號。

濾波器配置完成之后,我們就可以選擇我們的特征數據(features)了,MLC的特征數據選擇可以選擇某幾個統計學特征,如:

MEAN:均值,表示在給定的時間窗口內計算的傳感器數據的平均值。

VARIANCE:方差,表示數據的分散程度,反映數據在給定時間窗口內的變化。

ENERGY(能量):計算信號在給定時間窗口內的總能量。它反映了信號強度,通常用于識別較強或較弱的活動。

PEAK_TO_PEAK(峰峰值):峰峰值特征計算的是信號在給定時間窗口內的最大值和最小值之間的差異。這個特征可以幫助檢測信號的最大振幅。

88df390a-d0a5-11f0-8c8f-92fbcf53809c.png

上述選項配置完成后,我們確定生成設備樹arrf文件。

899c472a-d0a5-11f0-8c8f-92fbcf53809c.png

然后點擊“Generate Decision Tree”按鈕以生成決策樹。這個按鈕基于之前通過ARFF文件加載的數據和特征生成了一個分類模型(決策樹),用于識別不同的動作或狀態。

89fe8d5e-d0a5-11f0-8c8f-92fbcf53809c.png

這個界面有一個關鍵的參數即Kappa統計量,它是一種用于衡量分類器在考慮偶然因素時的準確性度量。這里顯示為0.307479,雖然分類準確度高,但Kappa值可能表明結果受到數據分布或樣本量的影響。

● 0.81 - 1.00:幾乎完美的分類一致性。

● 0.61 - 0.80:很好的分類一致性。

● 0.41 - 0.60:中等分類一致性。

● 0.21 - 0.40:較低的分類一致性。

● 0.00 - 0.20:幾乎沒有一致性(接近隨機猜測)。

我們可以查看決策樹模型:

8a6bc02c-d0a5-11f0-8c8f-92fbcf53809c.png

這個模型清晰的展示了不同行為執行的動作,還可以查看模型輸出信息。

8ac9251e-d0a5-11f0-8c8f-92fbcf53809c.png

還記得之前我們說的錄log時候要打上時間戳嗎?我們在debug界面中導入我們錄制的log數據,導入傳感器配置文件。

8b1dfc10-d0a5-11f0-8c8f-92fbcf53809c.png

耐心等待一會加載完成,就可以在我們剛剛訓練好的模型上面運行記錄的log數據,并查看分類效果,類似我們在煉丹時候的訓練集和驗證集,來驗證我們模型的識別效果。

8b8049e2-d0a5-11f0-8c8f-92fbcf53809c.png

由于剛才我們的MLC模型只訓練了兩種狀態,所以MLC_OUT的輸出只有0X00和0XFF兩種狀態。

總的來說,MEMS Studio給我們提供了一套非常完成且簡單易用的傳感器解決方案,方便用戶來評估功能以及分析數據,無代碼開箱即用的設計大大縮減了開發進程,并且支持非常多的傳感器。

另外,ST提供的跨平臺開發驅動包也很好用,類似Linux驅動的設計框架可以很方便的讓我們把驅動移植到各個平臺中使用,而不僅僅是限制于MCU平臺。

ST工程師總結:

短笛君這篇對LSM6DSV320X的測評精準聚焦于ST工具鏈的完整性與易用性,評測視角非常地全面,過程也很細致!從LSM6DSV32X延伸到開發工具,再落到實際開發體驗,形成了從硬件到產品的完整分析鏈條。確實,ST廣受贊譽的生態系統提供完善易用的開發工具套件和驅動代碼,可以很方便的實現跨平臺的移植和開發調試。對于MLC,ST的MEMS STUDIO可以大幅度減少開發人員的工作量,進一步優化產品開發周期

歡迎關注ST中文論壇了解更多不同產品系列板塊的測評活動。

文章所有圖片來源于:ST中文論壇

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

    關注

    2574

    文章

    54499

    瀏覽量

    786869
  • mems
    +關注

    關注

    129

    文章

    4396

    瀏覽量

    197890
  • 意法半導體
    +關注

    關注

    31

    文章

    3341

    瀏覽量

    111177
  • 移植
    +關注

    關注

    1

    文章

    408

    瀏覽量

    29242

原文標題:評測分享|LSM6DSV320X:驅動移植+姿態解算+MLC實操全記錄

文章出處:【微信號:STMChina,微信公眾號:意法半導體中國】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    半導體發布四款新型500萬像素圖像傳感器

    半導體(ST)發布了一個新系列500萬像素CMOS圖像傳感器,包括VD1943、VB1943、VD5943和VB5943等。
    的頭像 發表于 11-08 14:07 ?1160次閱讀
    <b class='flag-5'>意</b><b class='flag-5'>法</b><b class='flag-5'>半導體</b>發布四款新型500萬像素圖像<b class='flag-5'>傳感器</b>

    LSM6DSV16BX:集成機器學習核心與Qvar感應的先進慣性測量單元

    加速度、角速度和Qvar檢測數據。它具有專用配置、處理和濾波功能。LSM6DSV16BX緊湊型封裝 (2.5mm x 3.0mm x 0.71mm) 中集成了UI
    的頭像 發表于 10-28 13:45 ?316次閱讀
    <b class='flag-5'>LSM6DSV</b>16BX:集成機器學習核心與Qvar感應的先進慣性測量單元

    LSM6DSV16X:集成機器學習與靜電感應的高性能慣性測量單元

    。它具有專用配置、處理和濾波功能。LSM6DSV16X高性能模式下提升性能(0.65mA時),具有不間斷低功耗特性,實現最佳的消費者運動體驗。
    的頭像 發表于 10-28 11:52 ?416次閱讀
    <b class='flag-5'>LSM6DSV16X</b>:集成機器學習與靜電感應的高性能慣性測量單元

    LSM6DSV16B:面向TWS與可穿戴設備的6IMU,融合傳感與低功耗智能

    于提供精確的加速度和角速度感測數據處理。 LSM6DSV16B具有專用于運動跟蹤、設備電源管理、游戲3D頭部跟蹤和增強音頻體驗的雙通道,提供無與倫比的多用性和功能。該器件還具有單獨通道,用于通過專用配置、處理和濾波實現振動檢測進行骨傳導。
    的頭像 發表于 10-25 14:28 ?868次閱讀
    <b class='flag-5'>LSM6DSV</b>16B:面向TWS與可穿戴設備的<b class='flag-5'>6</b>軸<b class='flag-5'>IMU</b>,融合<b class='flag-5'>傳感</b>與低功耗智能

    LSM6DSV32X:高性能6IMU,賦能下一代智能運動感知應用

    三通道架構的IMU傳感器,通過專用的配置、處理和濾波功能處理三個獨立通道(用戶界面、OIS和EIS)上的加速度和角速度數據。LSM6DSV32X利用嵌入式高級專用特性支持邊緣計算過程,例如用于可配置運動追蹤的有限狀態機 (FSM
    的頭像 發表于 10-23 15:00 ?516次閱讀
    <b class='flag-5'>LSM6DSV32X</b>:高性能<b class='flag-5'>6</b>軸<b class='flag-5'>IMU</b>,賦能下一代智能運動<b class='flag-5'>感知</b>應用

    LSM6DSV320X:面向高端應用的智能6軸慣性測量單元

    。STMicroelectronics IMU設計用于提供精確的運動檢測和傳感器融合功能,因此非常適合用于汽車碰撞檢測、運動監控和物聯網 (IoT) 設備。LSM6DSV320X采用四通道架構,可在四個獨立通道上處理加速度和角
    的頭像 發表于 10-21 14:34 ?367次閱讀
    <b class='flag-5'>LSM6DSV320X</b>:面向高端應用的智能<b class='flag-5'>6</b>軸慣性測量單元

    詳解半導體LSM6DSV320X傳感器開發平臺性能

    ST又一新品力作,LSM6DSV320X傳感器,并且得到STEVAL-MKI109D主板的支持,使用配套的上位機可以實現豐富的產品體驗和開發輔助。本文主要在不詳細閱讀用戶手冊的情況下進行一番盲操。
    的頭像 發表于 10-18 09:45 ?3903次閱讀
    詳解<b class='flag-5'>意</b><b class='flag-5'>法</b><b class='flag-5'>半導體</b><b class='flag-5'>LSM6DSV320X</b><b class='flag-5'>傳感器</b>開發<b class='flag-5'>平臺</b>性能

    LSM6DSV80X 6軸慣性測量單元技術解析

    STMicroelectronics LSM6DSV80X 6軸慣性測量單元 (IMU) 單個元件中集成了兩個加速度計結構,可實現16g
    的頭像 發表于 10-15 17:42 ?601次閱讀
    <b class='flag-5'>LSM6DSV80X</b> <b class='flag-5'>6</b>軸慣性測量單元技術解析

    半導體擬收購恩智浦MEMS傳感器業務

    服務多重電子應用領域、全球排名前列的半導體公司半導體(簡稱ST)宣布,擬收購恩智浦半導體(簡稱NXP)的MEMS
    的頭像 發表于 07-30 16:01 ?745次閱讀

    Yole分析:半導體并購恩智浦MEMS傳感器業務有何影響?

    的MEMS傳感器業務,將僅次于博世,成為全球第二大MEMS傳感器廠商,同時由于業務汽車、消費電子等領域的高度重疊,將增強博世與
    的頭像 發表于 07-28 18:24 ?5.2w次閱讀
    Yole分析:<b class='flag-5'>意</b><b class='flag-5'>法</b><b class='flag-5'>半導體</b>并購恩智浦MEMS<b class='flag-5'>傳感器</b>業務有何影響?

    半導體推出全新AI MEMS傳感器LSM6DSV320X

    半導體(簡稱ST)日前宣布了一款一個節省空間的封裝內集成運動跟蹤傳感器和高重力沖擊測量傳感器
    的頭像 發表于 05-26 09:55 ?1186次閱讀

    LSM6DSV16X內置的傳感器融合算法SFLP,輸出的四元數是自身坐標系下的還是全局坐標系下的?

    請問各位大佬,LSM6DSV16X內置的傳感器融合算法SFLP,輸出的四元數是自身坐標系下的還是全局坐標系下的?以及輸出的陀螺儀偏置是實時更新的嗎?謝謝!
    發表于 03-14 07:22

    使用LSM6DSV16XLSM6DSO16IS,請問下有沒有內置濾波調整的接口?

    最近在使用LSM6DSV16XLSM6DSO16IS這兩款傳感器,請問下有沒有內置濾波調整的接口?另外求一份AN4650那樣的應用手冊
    發表于 03-07 07:17

    ST LSM6DSV80XIMU集成先進的二合一MEMS加速計,用于可穿戴設備和跟蹤中的高強度沖擊感應

    IMU單封裝集成16g/80g雙量程感測和邊緣處理功能,為價格實惠的可穿戴設備帶來先進的運動監測功能,真正做到“像職業運動員一樣的訓練! 半導體創新的慣性測量單元
    的頭像 發表于 03-06 10:49 ?1289次閱讀

    半導體STGAP3S系列電隔離柵極驅動器概述

    半導體的STGAP3S系列碳化硅(SiC)和 IGBT功率開關柵極驅動器集成了
    的頭像 發表于 01-09 14:48 ?1238次閱讀