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

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

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

mpu6050姿態(tài)解算原理_mpu6050姿態(tài)解算程序

姚小熊27 ? 來源:網(wǎng)絡(luò)整理 ? 2018-03-09 09:15 ? 次閱讀

關(guān)于MPU6050姿態(tài)解算原理

mpu6050常用作提供飛控運(yùn)行時(shí)的姿態(tài)測(cè)量和計(jì)算,在在姿態(tài)結(jié)算中有幾個(gè)重要的概念,歐拉角、四元數(shù)等。

歐拉角:用來表征三維空間中運(yùn)動(dòng)物體繞著坐標(biāo)軸旋轉(zhuǎn)的情況。即物體的每時(shí)每秒的姿態(tài)可以由歐拉角表出。

四元數(shù):超復(fù)數(shù),q=(q0,q1,q2,q3),q0位實(shí)數(shù),q1,q2,q3為虛部的實(shí)數(shù)。簡單的可以理解為四維空間,就是原有的三維空間加入一個(gè)旋轉(zhuǎn)角。而四元數(shù)可以表征歐拉角,并且計(jì)算方便,故采用四元數(shù)來計(jì)算。在此還要提到加速度和磁力計(jì)補(bǔ)償原理,可以參照http://blog.csdn.net/nemol1990/article/details/21870197?utm_source=tuicool&utm_medium=referral博客中提到的原理與基本概念。在此再啰嗦一下:補(bǔ)償?shù)哪康氖鞘箖蓚€(gè)坐標(biāo)系世界坐標(biāo)系和剛體坐標(biāo)系能夠完全重合,在此基礎(chǔ)上,計(jì)算補(bǔ)償值來修正旋轉(zhuǎn)矩陣,即四元數(shù)矩陣。最終的結(jié)果是解算出四元數(shù)的姿態(tài),就是四元數(shù)矩陣的各個(gè)元素的值。按照上述博客中的程序解算四元數(shù)的時(shí)候,用到了Kp和Ki兩個(gè)參數(shù),兩個(gè)參數(shù)的作用是用來控制矯正剛體坐標(biāo)系速度的。即調(diào)節(jié)加速度和磁力計(jì)補(bǔ)償?shù)乃俣龋ㄕ{(diào)節(jié)誤差的生成速度,進(jìn)而調(diào)節(jié)剛體坐標(biāo)系和世界坐標(biāo)系的重合度)

加速計(jì)補(bǔ)償?shù)睦斫猓?/p>

由于重力加速度的原因,加速計(jì)只能補(bǔ)償X-Y軸的偏差,即經(jīng)過解算后的坐標(biāo)中世界坐標(biāo)XOY和剛體坐標(biāo)XOY能夠重合,但是無法補(bǔ)償航向角。

在此基礎(chǔ)上,利用磁力計(jì)進(jìn)行補(bǔ)償,因?yàn)楫?dāng)?shù)卮艌鍪且粋€(gè)橢圓,所以我們把世界坐標(biāo)系的X-AIXS軸對(duì)準(zhǔn)真實(shí)世界的北方,這樣,磁場園只能在XOZ的平面圓里面,所以磁力計(jì)在世界坐標(biāo)系中的分量是[I,0,k],即在Y軸沒有分量,因?yàn)?0度的夾角余弦為0.但此時(shí)i和k的值并不確定是多少。在剛體坐標(biāo)系中磁力計(jì)的輸出為[a,b,c,],旋轉(zhuǎn)到和世界坐標(biāo)系中,計(jì)算出i和k,然后,在經(jīng)過旋轉(zhuǎn)把其旋轉(zhuǎn)到剛體坐標(biāo)系中,然后計(jì)算誤差修正旋轉(zhuǎn)矩陣,此時(shí)得到精確的旋轉(zhuǎn)矩陣。

mpu6050姿態(tài)解算程序

08.MPU6050\Hardware\ioi2c.c

08.MPU6050\Hardware\ioi2c.h

08.MPU6050\Hardware\mpu6050.c

08.MPU6050\Hardware\mpu6050.h

08.MPU6050\Hardware\nrf24l01.c

08.MPU6050\Hardware\nrf24l01.h

08.MPU6050\Hardware\spi.c

08.MPU6050\Hardware\spi.h

08.MPU6050\Libraries\CMSIS\CMSISENDUSERLICENCEAGREEMENT.pdf

08.MPU6050\Libraries\CMSIS\Device\ST\STM32F4xx\Include\stm32f4xx.h

08.MPU6050\Libraries\CMSIS\Device\ST\STM32F4xx\Include\system_stm32f4xx.h

08.MPU6050\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f4xx.s

08.MPU6050\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\gcc_ride7\startup_stm32f4xx.s

08.MPU6050\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\iar\startup_stm32f4xx.s

08.MPU6050\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\system_stm32f4xx.c

08.MPU6050\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\TASKING\cstart_thumb2.asm

08.MPU6050\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\TrueSTUDIO\startup_stm32f4xx.s

08.MPU6050\Libraries\CMSIS\Documentation\CMSIS-SVD_Schema_1_0.xsd

08.MPU6050\Libraries\CMSIS\Documentation\CMSIS_Logo_Final.jpg

08.MPU6050\Libraries\CMSIS\Include\arm_common_tables.h

08.MPU6050\Libraries\CMSIS\Include\arm_math.h

08.MPU6050\Libraries\CMSIS\Include\core_cm0.h

08.MPU6050\Libraries\CMSIS\Include\core_cm3.h

08.MPU6050\Libraries\CMSIS\Include\core_cm4.h

08.MPU6050\Libraries\CMSIS\Include\core_cm4_simd.h

08.MPU6050\Libraries\CMSIS\Include\core_cmFunc.h

08.MPU6050\Libraries\CMSIS\Include\core_cmInstr.h

08.MPU6050\Libraries\CMSIS\README.txt

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\inc\misc.h

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\inc\stm32f4xx_adc.h

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\inc\stm32f4xx_can.h

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\inc\stm32f4xx_crc.h

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\inc\stm32f4xx_cryp.h

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\inc\stm32f4xx_dac.h

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\inc\stm32f4xx_dbgmcu.h

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\inc\stm32f4xx_dcmi.h

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\inc\stm32f4xx_dma.h

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\inc\stm32f4xx_exti.h

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\inc\stm32f4xx_flash.h

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\inc\stm32f4xx_fsmc.h

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\inc\stm32f4xx_gpio.h

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\inc\stm32f4xx_hash.h

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\inc\stm32f4xx_i2c.h

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\inc\stm32f4xx_iwdg.h

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\inc\stm32f4xx_pwr.h

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\inc\stm32f4xx_rcc.h

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\inc\stm32f4xx_rng.h

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\inc\stm32f4xx_rtc.h

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\inc\stm32f4xx_sdio.h

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\inc\stm32f4xx_spi.h

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\inc\stm32f4xx_syscfg.h

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\inc\stm32f4xx_tim.h

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\inc\stm32f4xx_usart.h

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\inc\stm32f4xx_wwdg.h

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\src\misc.c

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_adc.c

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_can.c

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_crc.c

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_cryp.c

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_cryp_aes.c

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_cryp_des.c

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_cryp_tdes.c

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_dac.c

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_dbgmcu.c

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_dcmi.c

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_dma.c

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_exti.c

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_flash.c

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_fsmc.c

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_gpio.c

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_hash.c

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_hash_md5.c

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_hash_sha1.c

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_i2c.c

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_iwdg.c

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_pwr.c

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_rcc.c

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_rng.c

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_rtc.c

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_sdio.c

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_spi.c

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_syscfg.c

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_tim.c

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_usart.c

08.MPU6050\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_wwdg.c

08.MPU6050\Output\Obj\STM32F4-TEST.hex

08.MPU6050\Project\JLinkSettings.ini

08.MPU6050\Project\STM32F4-TEST.uvgui.XiaoWei

08.MPU6050\Project\STM32F4-TEST.uvopt

08.MPU6050\Project\STM32F4-TEST.uvproj

08.MPU6050\System\delay.c

08.MPU6050\System\delay.h

08.MPU6050\System\led.c

08.MPU6050\System\led.h

08.MPU6050\System\sys.c

08.MPU6050\System\sys.h

08.MPU6050\System\timer2.c

08.MPU6050\System\timer2.h

08.MPU6050\System\uart.c

08.MPU6050\System\uart.h

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

    關(guān)注

    39

    文章

    307

    瀏覽量

    71403
  • 姿態(tài)解算
    +關(guān)注

    關(guān)注

    0

    文章

    49

    瀏覽量

    8264
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    mpu6050姿態(tài)問題

    如題,我在用互補(bǔ)濾波和四元數(shù)算法mpu6050的角度姿態(tài)。但是現(xiàn)在的問題是,一旦我的mpu6050轉(zhuǎn)動(dòng)速度一快,輸出的數(shù)據(jù)就會(huì)出現(xiàn)問題。
    發(fā)表于 05-09 18:33

    MPU6050模塊自己寫 卡爾曼濾波和姿態(tài) 難嗎?

    MPU6050模塊自己寫 卡爾曼濾波和姿態(tài) 難嗎? 大概多久能搞出來?
    發(fā)表于 12-22 17:35

    請(qǐng)問MPU6050的軟件姿態(tài)和DMP姿態(tài)各自的優(yōu)缺點(diǎn)是什么?

    MPU6050有軟件姿態(tài)和DMP姿態(tài),他們各
    發(fā)表于 05-29 04:36

    請(qǐng)問誰有mpu6050姿態(tài)的歐拉角?

    我想要一個(gè)mpu6050姿態(tài)歐拉角的完整程序
    發(fā)表于 08-01 04:35

    MPU6050姿態(tài)的原理是什么

    MPU6050姿態(tài)的原理是什么?MPU6050姿態(tài)
    發(fā)表于 12-17 07:14

    使用MPU6050硬件DMP姿態(tài)

    使用MPU6050硬件DMP姿態(tài)是非常簡單的,下面介紹由三軸陀螺儀和加速度計(jì)的值來使用四元數(shù)軟件
    發(fā)表于 02-10 06:20

    MPU6050姿態(tài)融合的相關(guān)資料推薦

    mpu6050是一個(gè)六軸傳感器包括三軸陀螺儀和三軸加速度,分別可以測(cè)得三軸的角速度、加速度。但是一般傳感器的原始數(shù)據(jù)都不能直接直接拿來用,都需要濾波和姿態(tài)融合。對(duì)于初學(xué)者來說卡爾曼
    發(fā)表于 02-10 06:25

    MPU6050使用詳解及DMP姿態(tài)

    1、MPU6050使用詳解及DMP姿態(tài)MPU-60X0 是世界上第一款集成 6 軸 MotionTracking 設(shè)備。它集成了 3 軸
    發(fā)表于 04-14 16:04

    Mpu6050 姿態(tài)

    程序是基于Mpu6050,所做的四元數(shù)結(jié)算 相當(dāng)穩(wěn),希望對(duì)大家有所幫助
    發(fā)表于 08-17 10:36 ?91次下載

    mpu6050姿態(tài)原理分析及程序設(shè)計(jì)

    本文主要介紹了mpu6050姿態(tài)原理分析及程序設(shè)計(jì),MPU6050硬件DMP
    發(fā)表于 12-11 13:51 ?4.3w次閱讀
    <b class='flag-5'>mpu6050</b><b class='flag-5'>姿態(tài)</b><b class='flag-5'>解</b><b class='flag-5'>算</b>原理分析及<b class='flag-5'>程序</b>設(shè)計(jì)

    基于MPU6050的四軸硬件姿態(tài)研究

    針對(duì)四軸飛行器姿態(tài)信息的實(shí)時(shí)準(zhǔn)確獲取問題,對(duì)四軸飛行器的姿態(tài)方面進(jìn)行了研究。在分析姿態(tài)表示的四元數(shù)法和歐拉角法基礎(chǔ)上,以成熟的Mahon
    發(fā)表于 03-08 09:19 ?7次下載
    基于<b class='flag-5'>MPU6050</b>的四軸硬件<b class='flag-5'>姿態(tài)</b><b class='flag-5'>解</b><b class='flag-5'>算</b>研究

    MPU6050的四元數(shù)姿態(tài)方法

    使用MPU6050硬件DMP姿態(tài)是非常簡單的,下面介紹由三軸陀螺儀和加速度計(jì)的值來使用四元數(shù)軟件
    發(fā)表于 12-06 12:36 ?24次下載
    <b class='flag-5'>MPU6050</b>的四元數(shù)<b class='flag-5'>解</b><b class='flag-5'>算</b><b class='flag-5'>姿態(tài)</b>方法

    畢業(yè)設(shè)計(jì)之 - 教程:MPU6050姿態(tài)

    介紹一個(gè)學(xué)長做的單片機(jī)項(xiàng)目教程:MPU6050姿態(tài)大家可用于 課程設(shè)計(jì) 或 畢業(yè)設(shè)計(jì)技術(shù)解答畢設(shè)幫助:<Q>7468760412 M
    發(fā)表于 12-06 12:51 ?15次下載
    畢業(yè)設(shè)計(jì)之 - 教程:<b class='flag-5'>MPU6050</b><b class='flag-5'>姿態(tài)</b><b class='flag-5'>解</b><b class='flag-5'>算</b>

    MPU6050姿態(tài)融合(DMP)

    MPU6050姿態(tài)融合(DMP)
    發(fā)表于 12-06 13:21 ?39次下載
    <b class='flag-5'>MPU6050</b><b class='flag-5'>姿態(tài)</b>融合<b class='flag-5'>解</b><b class='flag-5'>算</b>(DMP)

    MPU6050使用互補(bǔ)濾波與卡爾曼濾波算法進(jìn)行姿態(tài)

    MPU6050使用互補(bǔ)濾波與卡爾曼濾波算法進(jìn)行姿態(tài)
    發(fā)表于 08-07 15:46 ?10次下載