amoBBS 阿莫电子论坛

 找回密码
 注册
搜索
bottom↓
查看: 8142|回复: 17

MPU6050 DMP出来了欧拉角和四元数,都是以初始位置为参考?

[复制链接]
发表于 2014-6-23 15:19:52 | 显示全部楼层 |阅读模式
本帖最后由 zcan 于 2014-6-23 15:24 编辑

今天移植了一下MPU6050的DMP到飞思卡尔M0上,输出的四元数欧拉角什么的都是以初始状态为参照的吗?我斜着放置,再上电的话读出来的数据Pitch Roll Yaw都是0附近的数,我怎么才能得到真实的值呢,真实的位置或是角度值?
怎么才能以地面为参照输出真实情况值?
发表于 2014-6-26 14:47:52 | 显示全部楼层
在自测函数里面改,run_self_test函数在上电的时候会执行,传感器会读取静止时的陀螺仪和加速度值,作为静态误差,输出的时候会减去这个静态误差再输出,所以你斜着放的时候读回来的数据也是0附近

我解决的方法是,把传感器放水平了,读取10次左右陀螺仪和加速度的值,算出平均值,在自测函数里面直接把刚才算出来的陀螺仪和加速度的平均值写入到传感器里面,这样无论你怎么放传感器,输出的时候都会减去这个你最初设定的在水平位置的值(水平位置的静态误差)就可以避免你说的这种的情况。。。。。。仅供参考。。不知道还有没有其他更好的方法。。。
 楼主| 发表于 2014-6-27 10:28:01 | 显示全部楼层
qzrzq 发表于 2014-6-26 14:47
在自测函数里面改,run_self_test函数在上电的时候会执行,传感器会读取静止时的陀螺仪和加速度值,作为静 ...

初始时候的静态误差读取是dmp_set_gyro_bias 与dmp_set_accel_bias 这两个函数里吗?具体修改哪里 你设置的修改多少呀?我程序看的一头雾水的
发表于 2014-6-27 10:42:09 | 显示全部楼层
俯仰和滚转是通过加速度计对准的,是真实的,偏航是以初始角度为0度 但是没有磁阻传感器,零偏稳定性很差,跑得很严重,没有参考价值
发表于 2014-6-27 11:43:24 | 显示全部楼层
隐藏了这么好的东西。。
发表于 2014-6-29 18:42:09 | 显示全部楼层
在selftest函数里面,
mpu_run_self_test(gyro, accel);这个函数会把你初始状态加速度值和陀螺仪值读取回来,放到gyro和accel两个数组里面,作为静态误差,并且返回result,
如果result为3,说明测试自测通过,就会把刚才读回来的gyro和accel数组里面的数据乘以分辨率(由mpu_get_gyro_sens(&sens)获得),最后把结果通过dmp_set_gyro_bias(gyro)函数
和dmp_set_accel_bias(accel)函数写入到dmp。。。
我是在dmp_set_accel_bias(accel)函数前把accel数组里面的值改了。。改成我再水平状态下测到的值
发表于 2014-7-5 16:11:45 | 显示全部楼层
qzrzq 发表于 2014-6-29 18:42
在selftest函数里面,
mpu_run_self_test(gyro, accel);这个函数会把你初始状态加速度值和陀螺仪值读取回来 ...

终于碰到个大神。。。请教一下初始坐标的问题,gyro_orientation[9]这个数组的值,MPU6050水平放的时候,赋值成{-1,0,0,0,-1,0,0,0,-1},这个时候Z轴对应YAW轴,Y轴对应PITCH轴,X轴对应ROLL轴,没问题!我现在需要芯片立起来,Y轴与地面水平,怎么设置这个数组?我试过N种,好像都不行。
发表于 2014-7-8 21:55:30 | 显示全部楼层
xyq665513 发表于 2014-7-5 16:11
终于碰到个大神。。。请教一下初始坐标的问题,gyro_orientation[9]这个数组的值,MPU6050水平放的时候, ...


    MPU默认的安装方向如图a,若要让芯片立起来,则相当于MPU的安装方向绕Y轴旋转了+90度,如图b。此时欧拉转动的轴的顺序发生了改变,应该为"Z轴(俯仰)-->Y轴(滚转)-->X轴(偏航)",而不是默认的XYZ。由inv_orientation_matrix_to_scalar()函数可知,当转动顺序为ZYX时,scalar的值为000_001_010,由inv_row_2_scale()函数反推,既可得到gyro_orientation[]的值为{0 0 1, 0 1 0, 1 0 0}。
    板子不在身边,@xyq665513可以先试一下。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2014-7-8 21:57:12 | 显示全部楼层
楼主的情况可以直接注释掉run_self_test()函数中的:
    /* 这里注释掉了加速度计校准的部分,防止写入加速度计的偏置,以得到真正的重力方向 */
//    mpu_get_accel_sens(&accel_sens);
//    accel[0] *= accel_sens;
//    accel[1] *= accel_sens;
//    accel[2] *= accel_sens;
//    dmp_set_accel_bias(accel);
 楼主| 发表于 2014-7-8 23:38:24 | 显示全部楼层
claytoncn 发表于 2014-7-8 21:57
楼主的情况可以直接注释掉run_self_test()函数中的:
    /* 这里注释掉了加速度计校准的部分,防止写入加 ...

嗯 明天试试
 楼主| 发表于 2014-7-18 14:15:33 | 显示全部楼层
claytoncn 发表于 2014-7-8 21:57
楼主的情况可以直接注释掉run_self_test()函数中的:
    /* 这里注释掉了加速度计校准的部分,防止写入加 ...

嗯 很好
发表于 2014-10-23 11:26:42 | 显示全部楼层
赞一个!
发表于 2015-3-13 16:47:23 | 显示全部楼层
不错!!!
发表于 2015-3-16 20:05:56 | 显示全部楼层
学习了,用adis16405做的姿态解算都没考虑这个。
发表于 2018-11-23 10:45:13 | 显示全部楼层
mark  正在学习!
发表于 2018-11-23 11:26:23 | 显示全部楼层
收藏一下,感觉会用的上!
发表于 2018-12-26 20:26:53 | 显示全部楼层
学习下,赞一个
发表于 2018-12-31 19:22:08 来自手机 | 显示全部楼层
学习了,谢谢
友情提示:标题不合格、重复发帖,将会被封锁ID。详情请参考:论坛通告:封锁ID、获得注册邀请码、恢复被封ID、投诉必读
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|阿莫电子论坛(原ourAVR/ourDEV) ( 公安备案:44190002001997(交互式论坛) 工信部备案:粤ICP备09047143号 )

GMT+8, 2019-5-21 16:10

阿莫电子论坛, 原"中国电子开发网"

© 2004-2018 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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