找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1360|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

mpu6050如何求解自然軸的角度 附程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:967636 發(fā)表于 2022-4-5 16:39 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
原子的程序可以通過四元數(shù)的方式求出機(jī)體的俯仰角/橫滾角/航向角
/*
        q0 = quat[0] / q30;        //q30格式轉(zhuǎn)換為浮點數(shù)
                q1 = quat[1] / q30;
                q2 = quat[2] / q30;
                q3 = quat[3] / q30;
                //計算得到俯仰角/橫滾角/航向角
                *pitch = asin(-2 * q1 * q3 + 2 * q0* q2)* 57.3;        // pitch反正弦
                *roll  = atan2(2 * q2 * q3 + 2 * q0 * q1, -2 * q1 * q1 - 2 * q2* q2 + 1)* 57.3;        // roll反正切
                *yaw   = atan2(2*(q1*q2 + q0*q3),q0*q0+q1*q1-q2*q2-q3*q3) * 57.3;        //yaw反正切

*/
但是與自然軸的角度 怎么去求呢?
若使用下方的程序是需要每次使用前手動校準(zhǔn)嗎?還是通過四元數(shù)可以求出mpu6050的Z軸與重力的角度?
/*
short MPU6050_Get_Angle(float x,float y,float z,u8 dir)
{
        float temp;
        float res=0;
        switch(dir)
        {
                case 0://與自然Z軸的角度
                        temp=sqrt((x*x+y*y))/z;
                        res=atan(temp);
                        break;
                case 1://與自然X軸的角度
                        temp=x/sqrt((y*y+z*z));
                        res=atan(temp);
                        break;
                case 2://與自然Y軸的角度
                        temp=y/sqrt((x*x+z*z));
                        res=atan(temp);
                        break;
        }
        return res*1800/3.14;//把弧度轉(zhuǎn)換成角度
}
*/
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:967636 發(fā)表于 2022-4-5 16:42 | 只看該作者
使用的是DMP庫
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表