那曲檬骨新材料有限公司

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

驅(qū)動(dòng)LSM6DS3TR-C實(shí)現(xiàn)高效運(yùn)動(dòng)檢測(cè)與數(shù)據(jù)采集(10)----融合磁力計(jì)進(jìn)行姿態(tài)解算

嵌入式單片機(jī)MCU開(kāi)發(fā) ? 來(lái)源:嵌入式單片機(jī)MCU開(kāi)發(fā) ? 作者:嵌入式單片機(jī)MCU開(kāi) ? 2024-08-02 15:50 ? 次閱讀

概述

MotionFX庫(kù)包含用于校準(zhǔn)陀螺儀、加速度計(jì)和磁力計(jì)傳感器的例程。 將磁力計(jì)的數(shù)據(jù)與加速度計(jì)和陀螺儀的數(shù)據(jù)融合,可以大幅提高姿態(tài)估計(jì)的精度。三軸加速度計(jì)提供設(shè)備的傾斜信息,陀螺儀提供角速度信息,而磁力計(jì)提供方位信息,三者結(jié)合可以提供更加準(zhǔn)確和穩(wěn)定的三維方向和姿態(tài)信息。

需要樣片的可以加群申請(qǐng):615061293 。

視頻教學(xué)

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

樣品申請(qǐng)

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

源碼下載

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

硬件準(zhǔn)備

首先需要準(zhǔn)備一個(gè)開(kāi)發(fā)板,這里我準(zhǔn)備的是自己繪制的開(kāi)發(fā)板,需要的可以進(jìn)行申請(qǐng)。
主控為STM32H503CB,陀螺儀為L(zhǎng)SM6DS3TR-C,磁力計(jì)為L(zhǎng)IS2MDL。

DataLogFusion

這里參考ST提供的DataLogFusion程序,DataLogFusion示例應(yīng)用展示了如何使用STMicroelectronics開(kāi)發(fā)的MotionFX中間件庫(kù)進(jìn)行實(shí)時(shí)運(yùn)動(dòng)傳感器數(shù)據(jù)融合。

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

磁力計(jì)校準(zhǔn)過(guò)程

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

初始化磁力計(jì)

調(diào)用 MotionFX_MagCal_init 或 MotionFX_CM0P_MagCal_init 函數(shù)。這里通過(guò)調(diào)用 MotionFX_MagCal_init,確保磁力計(jì)校準(zhǔn)模塊處于準(zhǔn)備就緒狀態(tài),能夠正確處理和校準(zhǔn)磁力計(jì)數(shù)據(jù)。
通過(guò)初始化磁力計(jì)校準(zhǔn)庫(kù),并定期調(diào)用校準(zhǔn)函數(shù),可以確保磁力計(jì)數(shù)據(jù)的準(zhǔn)確性,從而提高姿態(tài)估計(jì)的精度。

頻率定義。

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

添加到初始化中進(jìn)行調(diào)用。

文檔中提到的磁力計(jì)數(shù)據(jù)要除以50,這是因?yàn)镸otionFX庫(kù)使用的單位是微特斯拉(μT)/50。

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

#define FROM_MGAUSS_TO_UT50     (0.1f/50.0f)

MFX_Arithmetic_Init

MFX_Arithmetic_Init 的作用是初始化 MotionFX 算法庫(kù),并進(jìn)行相關(guān)參數(shù)設(shè)置和配置。 由于現(xiàn)在是9軸解析,需要新定義用于保存 MotionFX 算法狀態(tài)的數(shù)組。

static uint8_t mfxstate_9x[FX_STATE_SIZE];

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

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


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

    /* 獲取當(dāng)前的內(nèi)部結(jié)構(gòu)參數(shù) */
    MotionFX_getKnobs(mfxstate_9x, ipKnobs);

    /* 設(shè)置傳感器 */
    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;

    /* 未知作用操作,數(shù)據(jù)定向? */
    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;  

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

    /* 設(shè)置內(nèi)部結(jié)構(gòu)參數(shù) */
    MotionFX_setKnobs(mfxstate_9x, ipKnobs);

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

卡爾曼濾波算法

運(yùn)行卡爾曼濾波傳播算法MotionFX_propagate。
根據(jù)需要更新卡爾曼濾波器MotionFX_update。
需要注意的是這2各算法非常吃資源,需要注意MCU算力分配。

函數(shù)結(jié)構(gòu)如下所示。

演示

和指南針一個(gè)方向。

偏移90度。

偏移180度。

偏移270度。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    驅(qū)動(dòng)LSM6DS3TR-C實(shí)現(xiàn)高效運(yùn)動(dòng)檢測(cè)數(shù)據(jù)采集(1)----獲取ID

    本文將介紹如何驅(qū)動(dòng)和利用LSM6DS3TR-C傳感器,實(shí)現(xiàn)精確的運(yùn)動(dòng)感應(yīng)功能。LSM6DS3TR-C是一款先進(jìn)的
    的頭像 發(fā)表于 11-13 15:45 ?2398次閱讀
    <b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>LSM6DS3TR-C</b><b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>高效</b><b class='flag-5'>運(yùn)動(dòng)檢測(cè)</b>與<b class='flag-5'>數(shù)據(jù)采集</b>(1)----獲取ID

    驅(qū)動(dòng)LSM6DS3TR-C實(shí)現(xiàn)高效運(yùn)動(dòng)檢測(cè)數(shù)據(jù)采集(6)----FIFO數(shù)據(jù)讀取與配置

    LSM6DS3TR-C是STMicroelectronics公司推出的iNEMO慣性模塊,集成了三軸加速度計(jì)和三軸陀螺儀,具備低功耗、強(qiáng)大的運(yùn)動(dòng)檢測(cè)功能。該傳感器支持多種操作模式,并內(nèi)置FIFO
    的頭像 發(fā)表于 07-18 10:58 ?1784次閱讀
    <b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>LSM6DS3TR-C</b><b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>高效</b><b class='flag-5'>運(yùn)動(dòng)檢測(cè)</b>與<b class='flag-5'>數(shù)據(jù)采集</b>(<b class='flag-5'>6</b>)----FIFO<b class='flag-5'>數(shù)據(jù)</b>讀取與配置

    驅(qū)動(dòng)LSM6驅(qū)動(dòng)LSM6DS3TR-C實(shí)現(xiàn)高效運(yùn)動(dòng)檢測(cè)數(shù)據(jù)采集(7)----MotionFX庫(kù)解析空間坐標(biāo)DS3TR-C實(shí)現(xiàn)高效運(yùn)動(dòng)檢測(cè)數(shù)據(jù)

    本文將探討如何使用MotionFX庫(kù)解析空間坐標(biāo)。MotionFX庫(kù)是一種用于傳感器融合的強(qiáng)大工具,可以將加速度計(jì)、陀螺儀和磁力計(jì)數(shù)據(jù)融合
    的頭像 發(fā)表于 07-18 11:02 ?1221次閱讀
    <b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>LSM6</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>LSM6DS3TR-C</b><b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>高效</b><b class='flag-5'>運(yùn)動(dòng)檢測(cè)</b>與<b class='flag-5'>數(shù)據(jù)采集</b>(7)----MotionFX庫(kù)解析空間坐標(biāo)<b class='flag-5'>DS3TR-C</b><b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>高效</b><b class='flag-5'>運(yùn)動(dòng)檢測(cè)</b>與<b class='flag-5'>數(shù)據(jù)</b>采

    陀螺儀LSM6DSV16X與AI集成(11)----融合磁力計(jì)進(jìn)行姿態(tài)

    MotionFX庫(kù)包含用于校準(zhǔn)陀螺儀、加速度計(jì)磁力計(jì)傳感器的例程。 將磁力計(jì)數(shù)據(jù)與加速度計(jì)和陀螺儀的
    的頭像 發(fā)表于 09-06 16:57 ?2118次閱讀
    陀螺儀<b class='flag-5'>LSM6</b>DSV16X與AI集成(11)----<b class='flag-5'>融合</b><b class='flag-5'>磁力計(jì)</b><b class='flag-5'>進(jìn)行</b><b class='flag-5'>姿態(tài)</b><b class='flag-5'>解</b><b class='flag-5'>算</b>

    lsm6ds3tr-c傳感器集合模式無(wú)法使用的原因?

    );/*讀取外掛磁力計(jì)代碼*///禁用I2C直通,禁用內(nèi)部上拉,禁用I2Cbsp_spi_write(LSM6DS3TR_MASTER_CONFIG, 0x00, 2);//關(guān)閉加速度計(jì)
    發(fā)表于 03-07 06:26

    請(qǐng)問(wèn)LSM6DS3TRLSM6DS3TR-C兩個(gè)型號(hào)能否完全兼容?

    LSM6DS3TR停產(chǎn)買(mǎi)不到了,準(zhǔn)備切換LSM6DS3TR-C型號(hào)使用。 請(qǐng)問(wèn)兩者有什么差別?能否直接替換?有成功替換案例嗎?
    發(fā)表于 03-14 06:40

    LSM6DS3TR-C數(shù)據(jù)讀取異常是安利的問(wèn)題?怎么處理?

    我在使用lsm6ds3tr-c 6軸傳感器時(shí)發(fā)現(xiàn),讀取的溫度以及角速度值異常,配置為官方lsm6ds3tr_c_read_data_polling.c文件中
    發(fā)表于 03-19 08:15

    LSM6DS3TR-C的低功耗模式和高性能模式有什么區(qū)別

    如果我只在 12.5Hz 下操作加速度計(jì)LSM6DS3TR-C 的低功耗模式和高性能模式有什么區(qū)別?
    發(fā)表于 12-09 06:47

    LSM6DS3的應(yīng)用筆記

    專(zhuān)門(mén)設(shè)計(jì),可在硬件上實(shí)現(xiàn)大幅運(yùn)動(dòng)檢測(cè)、傾斜度檢測(cè)、硬件計(jì)步功能、時(shí)間戳,并支持對(duì)外部磁力計(jì)數(shù)據(jù)采集
    發(fā)表于 09-13 08:23

    驅(qū)動(dòng)LSM6DS3TR-C實(shí)現(xiàn)高效運(yùn)動(dòng)檢測(cè)數(shù)據(jù)采集(2)----配置濾波器

    LSM6DS3TR-C中,加速度計(jì)和陀螺儀可以獨(dú)立地開(kāi)啟/關(guān)閉,并且可以擁有不同的ODR和功耗模式。 LSM6DS3TR-C有三種可用的操作模式: ● 僅加速度計(jì)活動(dòng),陀螺儀處于
    的頭像 發(fā)表于 11-14 09:45 ?1217次閱讀
    <b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>LSM6DS3TR-C</b><b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>高效</b><b class='flag-5'>運(yùn)動(dòng)檢測(cè)</b>與<b class='flag-5'>數(shù)據(jù)采集</b>(2)----配置濾波器

    驅(qū)動(dòng)LSM6DS3TR-C實(shí)現(xiàn)高效運(yùn)動(dòng)檢測(cè)數(shù)據(jù)采集(3)----獲取傳感器數(shù)據(jù)

    一旦傳感器被正確初始化,可以通過(guò)SPI或I2C接口向傳感器發(fā)送讀取命令,并接收傳感器返回的數(shù)據(jù)。這個(gè)讀取過(guò)程包括獲取LSM6DS3TR傳感器提供的加速度計(jì)和陀螺儀
    的頭像 發(fā)表于 11-14 09:59 ?956次閱讀
    <b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>LSM6DS3TR-C</b><b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>高效</b><b class='flag-5'>運(yùn)動(dòng)檢測(cè)</b>與<b class='flag-5'>數(shù)據(jù)采集</b>(<b class='flag-5'>3</b>)----獲取傳感器<b class='flag-5'>數(shù)據(jù)</b>

    驅(qū)動(dòng)LSM6DS3TR-C實(shí)現(xiàn)高效運(yùn)動(dòng)檢測(cè)數(shù)據(jù)采集(4)----上報(bào)匿名上位機(jī)實(shí)現(xiàn)可視化

    LSM6DS3TR-C是單芯片“3軸陀螺儀 + 3軸加速度計(jì)”的慣性 測(cè)量單元(IMU), 五種種可選滿(mǎn)量程的陀螺儀(125/250/500/1000/2000 dps)和加速度
    的頭像 發(fā)表于 11-14 10:05 ?1017次閱讀
    <b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>LSM6DS3TR-C</b><b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>高效</b><b class='flag-5'>運(yùn)動(dòng)檢測(cè)</b>與<b class='flag-5'>數(shù)據(jù)采集</b>(4)----上報(bào)匿名上位機(jī)<b class='flag-5'>實(shí)現(xiàn)</b>可視化

    驅(qū)動(dòng)LSM6DS3TR-C實(shí)現(xiàn)高效運(yùn)動(dòng)檢測(cè)數(shù)據(jù)采集(5)----姿態(tài)

    lsm6ds3trc包含三軸陀螺儀與三軸加速度計(jì)姿態(tài)有多種數(shù)學(xué)表示方式,常見(jiàn)的是四元數(shù),歐拉角,矩陣和軸角。他們各自有其自身的優(yōu)點(diǎn),在不同的領(lǐng)域使用不同的表示方式。在四軸飛行器中使用到了四元數(shù)
    的頭像 發(fā)表于 11-14 10:11 ?939次閱讀
    <b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>LSM6DS3TR-C</b><b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>高效</b><b class='flag-5'>運(yùn)動(dòng)檢測(cè)</b>與<b class='flag-5'>數(shù)據(jù)采集</b>(5)----<b class='flag-5'>姿態(tài)</b><b class='flag-5'>解</b><b class='flag-5'>算</b>

    驅(qū)動(dòng)LSM6DS3TR-C實(shí)現(xiàn)高效運(yùn)動(dòng)檢測(cè)數(shù)據(jù)采集(8)----中斷獲取FIFO數(shù)據(jù)并應(yīng)用MotionFX庫(kù)解析空間坐標(biāo)

    本文將探討如何使用中斷機(jī)制獲取FIFO數(shù)據(jù)并應(yīng)用MotionFX庫(kù)解析空間坐標(biāo)。MotionFX庫(kù)是一種用于傳感器融合的強(qiáng)大工具,可以將加速度計(jì)、陀螺儀和磁力計(jì)
    的頭像 發(fā)表于 07-21 10:02 ?782次閱讀
    <b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>LSM6DS3TR-C</b><b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>高效</b><b class='flag-5'>運(yùn)動(dòng)檢測(cè)</b>與<b class='flag-5'>數(shù)據(jù)采集</b>(8)----中斷獲取FIFO<b class='flag-5'>數(shù)據(jù)</b>并應(yīng)用MotionFX庫(kù)解析空間坐標(biāo)

    驅(qū)動(dòng)LSM6DS3TR-C實(shí)現(xiàn)高效運(yùn)動(dòng)檢測(cè)數(shù)據(jù)采集(11)----磁力計(jì)校準(zhǔn)

    磁力計(jì)校準(zhǔn)的基本概念,掌握使用MotionFX庫(kù)進(jìn)行校準(zhǔn)的步驟和方法,并學(xué)會(huì)如何在實(shí)際項(xiàng)目中實(shí)現(xiàn)磁力計(jì)的校準(zhǔn),以獲得高精度的磁場(chǎng)測(cè)量數(shù)據(jù)
    的頭像 發(fā)表于 08-23 09:57 ?725次閱讀
    <b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>LSM6DS3TR-C</b><b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>高效</b><b class='flag-5'>運(yùn)動(dòng)檢測(cè)</b>與<b class='flag-5'>數(shù)據(jù)采集</b>(11)----<b class='flag-5'>磁力計(jì)</b>校準(zhǔn)
    大发888娱乐场下载新澳博| 百家乐赌场视频| 百家乐官网开户优惠多的平台是哪家| 大发888注册网址| 时时博百家乐娱乐城| 百家乐官网任你博娱乐场开户注册 | 百家乐官网3珠路法| 达州市| 大发888游戏软件下载| 百家乐西园出售| 新锦江百家乐官网的玩法技巧和规则 | 百家乐官网风云论坛| 大发888在线娱乐合作伙伴| 百家乐真人娱乐城陈小春| 在线百家乐官网下| 百家乐官网平台要多少钱| 博狗足球开户| 威尼斯人娱乐城首选802com| 真人百家乐软件博彩吧| 一筒百家乐官网的玩法技巧和规则| 百家乐官网娱乐城返水| 优博信誉| 大发888娱乐场下载iypu rd| 博之道百家乐技巧| 百家乐官网赌博代理荐| 百家乐官网包赢技巧| 新澳门娱乐城官网| 威尼斯人娱乐平台代理| 百家乐韩泰阁| 百家乐视频官网| 百家乐官网龙虎桌布| 百家乐官网注码论坛| 赌场风云下载| 博雅德州扑克下载| 澳门百家乐是怎样赌| 真人百家乐来博| 百家乐官网必赢术| 单机百家乐官网在线小游戏| 平阴县| 奇博| 巴登娱乐城真人娱乐|