搜索
bottom↓
回复: 7

关于IMU里面的ROll和Pitch角度解算的疑惑,求高手帮忙

[复制链接]

出0入0汤圆

发表于 2015-7-31 10:18:03 | 显示全部楼层 |阅读模式
这是一个开源云台的代码里面在IMU中关于ROll和Pitch角的解算的部分

// Rotate Estimated vector(s), ROLL
  deltaGyroAngle  = gyroADC[ROLL] * scale;
  EstG.V.Z =  scos(deltaGyroAngle) * EstG.V.Z - ssin(deltaGyroAngle) * EstG.V.X;
  EstG.V.X =  ssin(deltaGyroAngle) * EstG.V.Z + scos(deltaGyroAngle) * EstG.V.X;
// Rotate Estimated vector(s), PITCH
  deltaGyroAngle  = gyroADC[PITCH] * scale;
  EstG.V.Y =  scos(deltaGyroAngle) * EstG.V.Y + ssin(deltaGyroAngle) * EstG.V.Z;
  EstG.V.Z = -ssin(deltaGyroAngle) * EstG.V.Y + scos(deltaGyroAngle) * EstG.V.Z;
// Rotate Estimated vector(s), YAW
  deltaGyroAngle  = gyroADC[YAW] * scale;
  EstG.V.X =  scos(deltaGyroAngle) * EstG.V.X - ssin(deltaGyroAngle) * EstG.V.Y;
  EstG.V.Y =  ssin(deltaGyroAngle) * EstG.V.X + scos(deltaGyroAngle) * EstG.V.Y;
// Attitude of the estimated vector
  angle[ROLL]  =  _atan2(EstG.V.X, EstG.V.Z) ;
  angle[PITCH] =  _atan2(EstG.V.Y, EstG.V.Z) ;

群里有高手能帮我说明这段代码的意思吗,计算Pitch和Roll的角度应该是用X,Y,Z轴的加速度分量做反正切,但为什么加速度分量使用gyro的数据来算的呢

出0入0汤圆

发表于 2015-8-1 11:24:23 | 显示全部楼层
这是求估计值,应该还有一个测量值,测量值应该是你说的加速度计直接的求解出来的ROLL 和PITCH,最后测量值和估计值做互补还是EKF,滤波算法基本上都是这个思路

出0入0汤圆

 楼主| 发表于 2015-8-1 16:24:03 | 显示全部楼层
小憨不傻 发表于 2015-8-1 11:24
这是求估计值,应该还有一个测量值,测量值应该是你说的加速度计直接的求解出来的ROLL 和PITCH,最后测量值 ...

恩,这个我昨天大致弄明白了,deltaGyroAngle=GyroADC*GyroScale是用来求陀螺仪测量的角度,然后用小角度近似赋给了sin(delta)和cos(delta),最后把正弦余弦代入转置矩阵求解加速度分量,再求解偏转角度。现在在了解代码中关于互补滤波的部分。但是有问题我还没弄清楚,这部分代码可以用反正切函数求解ROll和PITCH的角度,但是YAW的角度怎么求解呢。

出0入0汤圆

发表于 2015-8-3 08:54:39 | 显示全部楼层
forwinry 发表于 2015-8-1 16:24
恩,这个我昨天大致弄明白了,deltaGyroAngle=GyroADC*GyroScale是用来求陀螺仪测量的角度,然后用小角度 ...

yaw的求解是一样,通过四元数转欧拉角的,DCM(方向余弦矩阵),可求得Yaw,但是这个Yaw是陀螺仪估计出来的,还需要一个传感器提供测量值进行修正,加速度计是没法修正Yaw。通常采用磁力计修正yaw。

出0入0汤圆

发表于 2015-8-3 10:25:45 | 显示全部楼层
IMU里面的ROll和Pitch角度解算

出0入0汤圆

 楼主| 发表于 2015-8-3 11:08:21 | 显示全部楼层
小憨不傻 发表于 2015-8-3 08:54
yaw的求解是一样,通过四元数转欧拉角的,DCM(方向余弦矩阵),可求得Yaw,但是这个Yaw是陀螺仪估计出来的 ...

那是不是意味如果没有磁力计做修正的话,yaw轴的角度解算就是直接从陀螺仪读取的值,类似 yaw轴的角度就是 deltaGyroAngle[Yaw] 。

出0入0汤圆

发表于 2015-8-3 11:15:11 | 显示全部楼层
forwinry 发表于 2015-8-3 11:08
那是不是意味如果没有磁力计做修正的话,yaw轴的角度解算就是直接从陀螺仪读取的值,类似 yaw轴的角度就 ...

嗯,是的,没有磁力计的情况下,就只有估计值,没有测量值来修正。
因此偏航角必定会飘。
不过飘的速度看你的估计算法,如果直接采用Z轴陀螺仪输出值直接积分的话,飘的速度会很快。
采用四元数积分的话,漂移的速度,就不会那么快能过飞个十几二十分钟,没问题!

出0入0汤圆

 楼主| 发表于 2015-8-3 11:56:12 | 显示全部楼层
小憨不傻 发表于 2015-8-3 11:15
嗯,是的,没有磁力计的情况下,就只有估计值,没有测量值来修正。
因此偏航角必定会飘。
不过飘的速度看 ...

谢谢你,我是打算做云台的,所以就不用磁力计,相比较飞行器,云台的yaw轴直接用陀螺仪的输出值,感觉应该问题不大。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-5 12:06

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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