女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

3天內不再提示

陀螺儀LSM6DSV16X與AI集成(11)----融合磁力計進行姿態解算

嵌入式單片機MCU開發 ? 來源:嵌入式單片機MCU開發 ? 作者:嵌入式單片機MCU開 ? 2024-09-06 16:57 ? 次閱讀

概述

MotionFX庫包含用于校準陀螺儀、加速度計和磁力計傳感器的例程。 將磁力計的數據與加速度計和陀螺儀的數據融合,可以大幅提高姿態估計的精度。三軸加速度計提供設備的傾斜信息,陀螺儀提供角速度信息,而磁力計提供方位信息,三者結合可以提供更加準確和穩定的三維方向和姿態信息。

需要樣片的可以加群申請:615061293 。

視頻教學

[https://www.bilibili.com/video/BV1oTsJeTErb/]

樣品申請

[https://www.wjx.top/vm/OhcKxJk.aspx#]

源碼下載

[https://download.csdn.net/download/qq_24312945/89682989]

硬件準備

首先需要準備一個開發板,這里我準備的是自己繪制的開發板,需要的可以進行申請。

主控為STM32H503CB,陀螺儀為LSM6DSOW,磁力計為LIS2MDL。

DataLogFusion

這里參考ST提供的DataLogFusion程序,DataLogFusion示例應用展示了如何使用STMicroelectronics開發的MotionFX中間件庫進行實時運動傳感器數據融合。

DataLogFusion的主要執行流程包括初始化硬件和傳感器、中間件庫(MotionFX)的配置與初始化、傳感器數據的采集、實時數據融合以及結果的輸出。

磁力計校準過程

MotionFX庫的磁力計校準庫用于補償硬鐵失真。磁力計校準可以以比傳感器融合輸出數據速率更慢的頻率進行(例如25 Hz)。
● 初始化磁力計校準庫:
● 調用 MotionFX_MagCal_init 或 MotionFX_CM0P_MagCal_init 函數。
● 定期調用校準函數:
● 調用 MotionFX_MagCal_run 或 MotionFX_CM0P_MagCal_run 函數,直到校準成功完成。
● 檢查校準是否成功:
● 調用 MotionFX_MagCal_getParams 或 MotionFX_CM0P_MagCal_getParams 函數。如果函數返回 mag_data_out.cal_quality = MFX_MAGCALGOOD 或 MFX_CM0P_CALQSTATUSBEST,則校準成功。

初始化磁力計

調用 MotionFX_MagCal_init 或 MotionFX_CM0P_MagCal_init 函數。這里通過調用 MotionFX_MagCal_init,確保磁力計校準模塊處于準備就緒狀態,能夠正確處理和校準磁力計數據。
通過初始化磁力計校準庫,并定期調用校準函數,可以確保磁力計數據的準確性,從而提高姿態估計的精度。

頻率定義。

#define ALGO_FREQ  100U /* Algorithm frequency 100Hz */
#define ALGO_PERIOD  (1000U / ALGO_FREQ) /* Algorithm period [ms] */

添加到初始化中進行調用。

文檔中提到的磁力計數據要除以50,這是因為MotionFX庫使用的單位是微特斯拉(μT)/50。

在lsm6ds3tr-c_app.h中添加定義。

#define FROM_MGAUSS_TO_UT50     (0.1f/50.0f)

MFX_Arithmetic_Init

MFX_Arithmetic_Init 的作用是初始化 MotionFX 算法庫,并進行相關參數設置和配置。

由于現在是9軸解析,需要新定義用于保存 MotionFX 算法狀態的數組。

static uint8_t mfxstate_9x[FX_STATE_SIZE];

函數功能:
● 初始化 MotionFX 算法庫。
● 配置傳感器的偏置值和方向。
● 設置輸出參考模式。
● 啟用或禁用 6 軸和 9 軸 MotionFX 引擎。

void MFX_Arithmetic_Init(void)
{
    MFX_knobs_t iKnobs;
    MFX_knobs_t *ipKnobs = &iKnobs;


    /* 初始化 MotionFX 算法庫,參考自 AlgoBuilded 生成代碼 */
    /* 初始化 MotionFX 引擎 */
    MotionFX_initialize((MFXState_t *)mfxstate_9x);

    /* 獲取當前的內部結構參數 */
    MotionFX_getKnobs(mfxstate_9x, ipKnobs);

    /* 設置傳感器 */
    ipKnobs- >gbias_acc_th_sc = GBIAS_ACC_TH_SC_9X;
    ipKnobs- >gbias_gyro_th_sc = GBIAS_GYRO_TH_SC_9X;
    ipKnobs- >gbias_mag_th_sc = GBIAS_MAG_TH_SC_9X;

    /* 未知作用操作,數據定向? */
    ipKnobs- >acc_orientation[0] = ACC_ORIENTATION_X;
    ipKnobs- >acc_orientation[1] = ACC_ORIENTATION_Y;
    ipKnobs- >acc_orientation[2] = ACC_ORIENTATION_Z;

    ipKnobs- >gyro_orientation[0] = GYR_ORIENTATION_X;
    ipKnobs- >gyro_orientation[1] = GYR_ORIENTATION_Y;
    ipKnobs- >gyro_orientation[2] = GYR_ORIENTATION_Z;

    ipKnobs- >mag_orientation[0] = MAG_ORIENTATION_X;
    ipKnobs- >mag_orientation[1] = MAG_ORIENTATION_Y;
    ipKnobs- >mag_orientation[2] = MAG_ORIENTATION_Z;  

    /* 設置輸出參考模式,數據參考系 */
    ipKnobs- >output_type = MFX_ENGINE_OUTPUT_ENU;
    ipKnobs- >LMode = 1;
    /* modx 代表 MotionFX_update 函數調用頻率,
     *    modx = 1,每調用 MotionFX_propagate 函數一次,可調用 MotionFX_update 函數一次,適用于STM32F4系列處理器,
     *    modx = 2,每調用 MotionFX_propagate 函數兩次,可調用 MotionFX_update 函數一次,適用于STM32F1系列處理器。
     */
    ipKnobs- >modx = 1;

    /* 設置內部結構參數 */
    MotionFX_setKnobs(mfxstate_9x, ipKnobs);

    /* 使能6軸 MotionFX 引擎*/
    MotionFX_enable_6X(mfxstate_9x, MFX_ENGINE_DISABLE);
    /* 關閉9軸 MotionFX 引擎*/
    MotionFX_enable_9X(mfxstate_9x, MFX_ENGINE_ENABLE);
}

卡爾曼濾波算法

運行卡爾曼濾波傳播算法MotionFX_propagate。

根據需要更新卡爾曼濾波器MotionFX_update。

需要注意的是這2各算法非常吃資源,需要注意MCU算力分配。

函數結構如下所示。

演示

和指南針一個方向。

偏移90度。

偏移180度。

偏移270度。

審核編輯 黃宇

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

    關注

    44

    文章

    828

    瀏覽量

    99671
  • AI
    AI
    +關注

    關注

    87

    文章

    34146

    瀏覽量

    275298
  • 磁力計
    +關注

    關注

    1

    文章

    71

    瀏覽量

    21266
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    陀螺儀LSM6DSV16XAI集成(1)----輪詢獲取陀螺儀數據

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

    陀螺儀LSM6DSV16XAI集成(2)----姿態

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

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

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

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

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

    陀螺儀LSM6DSV16XAI集成(8)----MotionFX庫解析空間坐標

    本文將探討如何使用MotionFX庫解析空間坐標。MotionFX庫是一種用于傳感器融合的強大工具,可以將加速度陀螺儀磁力計的數據融合
    的頭像 發表于 07-18 10:43 ?1699次閱讀
    <b class='flag-5'>陀螺儀</b><b class='flag-5'>LSM6DSV16X</b>與<b class='flag-5'>AI</b><b class='flag-5'>集成</b>(8)----MotionFX庫解析空間坐標

    驅動LSM6DS3TR-C實現高效運動檢測與數據采集(10)----融合磁力計進行姿態

    MotionFX庫包含用于校準陀螺儀、加速度磁力計傳感器的例程。 將磁力計的數據與加速度陀螺儀
    的頭像 發表于 08-02 15:50 ?2954次閱讀
    驅動<b class='flag-5'>LSM6</b>DS3TR-C實現高效運動檢測與數據采集(10)----<b class='flag-5'>融合</b><b class='flag-5'>磁力計</b><b class='flag-5'>進行</b><b class='flag-5'>姿態</b><b class='flag-5'>解</b><b class='flag-5'>算</b>

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

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

    陀螺儀LSM6DSV16XAI集成(14)----上報匿名上位機

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

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

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

    【CANNON申請】姿態

    申請理由:這款開發板的硬件非常適合我現在在做姿態設計,再加上自有的mpu6050 gps,可以用來測試姿態
    發表于 01-26 13:58

    【uFun試用體驗】使用陀螺儀姿態

    1.設置好陀螺儀后可以獲取陀螺儀的三軸加速度數據 ,設置好量程 ,坐標軸既可以進行姿態。[c
    發表于 06-13 10:38

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

    AN5763,LSM6DSV16X是一款ST的3 軸加速度和 3 軸陀螺儀LSM6DSV16X 是系統級封裝的 3 軸數字加速度
    發表于 08-31 11:12 ?0次下載

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

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

    十軸姿態傳感器模塊 | 集成加速度、陀螺儀、磁力計,自帶BLE5.0藍牙

    電子全新推出的一款十軸姿態傳感器模塊,模塊集成高精度的加速度、陀螺儀磁力計,采用高性能微處理器和先進的濾波算法,能夠快速
    的頭像 發表于 01-06 12:47 ?818次閱讀
    十軸<b class='flag-5'>姿態</b>傳感器模塊 | <b class='flag-5'>集成</b>加速度<b class='flag-5'>計</b>、<b class='flag-5'>陀螺儀</b>、<b class='flag-5'>磁力計</b>,自帶BLE5.0藍牙

    零知開源——ESP8266結合ICM20948實現高精度姿態

    IMU慣性測量單元,融合加速度陀螺儀磁力計的核心傳感器,實現高精度姿態
    的頭像 發表于 03-07 14:09 ?762次閱讀
    零知開源——ESP8266結合ICM20948實現高精度<b class='flag-5'>姿態</b><b class='flag-5'>解</b><b class='flag-5'>算</b>