找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 919|回复: 1
打印 上一主题 下一主题
收起左侧

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

[复制链接]
跳转到指定楼层
楼主
ID:967636 发表于 2022-4-5 16:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
原子的程序可以通过四元数的方式求出机体的俯仰角/横滚角/航向角
/*
        q0 = quat[0] / q30;        //q30格式转换为浮点数
                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反正切

*/
但是与自然轴的角度 怎么去求呢?
若使用下方的程序是需要每次使用前手动校准吗?还是通过四元数可以求出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;//把弧度转换成角度
}
*/
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:967636 发表于 2022-4-5 16:42 | 只看该作者
使用的是DMP库
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表