发 帖  
原厂入驻New

[经验] 【uFun试用体验】使用陀螺仪姿态解算

2019-6-13 10:38:30  2757 陀螺仪 ufun ARM
分享
1
1.设置好陀螺仪后可以获取陀螺仪的三轴加速度数据 ,设置好量程 ,坐标轴既可以进行姿态解算。
  1. Accel_X  =  (i2c_buff[0]  << 8|i2c_buff[1])* -1;
  2.         Accel_Y  =  (i2c_buff[2]  << 8|i2c_buff[3] )* -1;
  3.         Accel_Z  =   ( i2c_buff[4]  << 8|i2c_buff[5]);
复制代码
上诉的-1为调整坐标轴方向。
2.将得到数据除以灵敏度得到各方向的加速度值,读取的数据最好进行滤波,如滑动平均滤波。
  1. Accel.X = (float)Accel_Xtempout / 8192.0; //835.918f;     ////8192 = 32768 /4  835.918
  2.         Accel.Y = (float)Accel_Ytempout / 8192.0; //835.918f;
  3.     Accel.Z = (float)Accel_Ztempout / 8192.0; //835.918f;
复制代码
8192 = 32768 /4 。其中32768是方向为正,量程为±4g时的最大值。正确的算法是 (读到的加速度值) / (量程最大值(注意最大值)) = (你需要的加速度值)/ 4。所以运算一下得到你需要的单位为g的加速度值。
3.得到三轴的加速度数据后即可进行姿态解算,由于缺少三轴陀螺仪数据,瞬间运动时姿态数据无法修正,所以并没有使用四元素算法解算,直接根据几何知识得出三个姿态角。
公式及原理参考知乎博主的文章
  1. https://zhuanlan.zhihu.com/p/20082486?columnSlug=devymex
复制代码
得到roll角
  1.    float fNorm = sqrt(read_acc[0] * read_acc[0] + read_acc[1] * read_acc[1] + read_acc[2] * read_acc[2]);
  2.                         float fNormXZ = sqrt(read_acc[0] * read_acc[0] + read_acc[2] * read_acc[2]);
  3.                         float fCos = fNormXZ / fNorm;
  4.                         float roll=  acosf(fCos)  * 57.3;
  5.                           IF read_acc[1] > 0) {
  6.                                     roll = -roll
  7.                            }
复制代码
得到pitch
  1. float fNormYZ = sqrt( read_acc[1] * read_acc[1] + read_acc[2] * read_acc[2]);
  2.           float fCos = fNormYZ / fNorm;
  3.         float pitch = acosf(fCos)  * 57.3 ;
  4.        if (read_acc[0] < 0) {
  5.           pitch = -pitch ;
  6.       }
复制代码
raw值
三轴加速度无法得到raw角度,六轴陀螺仪也只能得到Z轴上的加速度,积分得到raw角度,这个角度会一直偏移。要得到绝对的raw角度,要使用带地磁的九轴陀螺仪进行校正。

新手平衡小车的卡尔曼滤波算法总结.rar

下载积分: 积分 -1 分

30.84 KB, 下载次数: 0, 下载积分: 积分 -1 分

加速度计和陀螺仪指南.pdf

下载积分: 积分 -1 分

964.11 KB, 下载次数: 4, 下载积分: 积分 -1 分

相关经验

钟明亮 2019-7-27 18:30:30
全新原装ADI/亚德诺MEMS陀螺仪IC
(QQ:22300872)
ADXL357BEZ-RL7   
ADXL355BEZ-RL7  
ADIS16470AMLZ  
ADXL335BCPZ  
ADXL203CE-REEL
回复

举报

water198306 2019-7-30 08:20:24
{:1:}
回复

举报

评论

高级模式
您需要登录后才可以回帖 登录 | 注册

发经验
课程
    关闭

    站长推荐 上一条 /10 下一条

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