论坛» DIY与开源设计» 电子DIY

求助mpu6050各轴除去重力加速度问题

菜鸟
2015-07-24 10:31 1楼
标题:求助mpu6050各轴除去重力加速度问题
内容:各位大侠好,学生最近也开始学着使用mpu6050了,我们的应用主要想测量X,Y,Z轴上面的真实加速度!最近我也查了许多资料,发现直接读取出来的加速度是包含了重力加速度的,我想咨询一下如何才能将各轴的重力加速度减掉,望大侠多多指点一 二,不吝赐教!谢谢!我的邮箱mtd527@163.com
菜鸟
2015-07-24 10:44 2楼

参考【讨论帖】姿态解算相关知识储备http://forum.eepw.com.cn/thread/250804/1中的算法,我是否可以理解为:

下面代码中的ax是X轴包含了重力加速度的加速度值!!!

exX轴重力加速度的值!!!

ax - ex 所得的值就是X轴上面除去重力加速度后的真实加速度值???

请大家多多指教!谢谢!

void IMUupdate(float gx, float gy, float gz, float ax, float ay, float az) {
float norm;
float vx, vy, vz;
float ex, ey, ez;

// normalise the measurements
norm = sqrt(ax*ax + ay*ay + az*az);
ax = ax / norm;
ay = ay / norm;
az = az / norm;
把加计的三维向量转成单位向量。

// estimated direction of gravity
vx = 2*(q1*q3 - q0*q2);
vy = 2*(q0*q1 + q2*q3);
vz = q0*q0 - q1*q1 - q2*q2 + q3*q3;

这是把四元数换算成《方向余弦矩阵》中的第三列的三个元素。
根据余弦矩阵和欧拉角的定义,地理坐标系的重力向量,转到机体坐标系,正好是这三个元素。
所以这里的vx\y\z,其实就是当前的欧拉角(即四元数)的机体坐标参照系上,换算出来的重力单位向量。


// error is sum of cross product between reference direction of field and direction measured by sensor
ex = (ay*vz - az*vy);
ey = (az*vx - ax*vz);
ez = (ax*vy - ay*vx);

axyz是机体坐标参照系上,加速度计测出来的重力向量,也就是实际测出来的重力向量。
axyz是测量得到的重力向量,vxyz是陀螺积分后的姿态来推算出的重力向量,它们都是机体坐标参照系上的重力向量。

菜鸟
2015-07-24 10:46 3楼
请大家多多帮忙,谢谢
菜鸟
2015-07-27 10:21 4楼
请大家多多帮忙,谢谢
高工
2015-08-07 19:52 5楼

先补充一下理论知识吧

不要着急得到答案

菜鸟
2015-10-11 12:34 6楼
ex,ey,ez是误差吧
菜鸟
2015-10-11 12:35 7楼
ax-vx-ex才是实际加速度的值吧
菜鸟
2015-10-16 08:33 8楼
说实话我也是一知半解;是不是应该先初始化开启高低通滤波,之后再用过滤后的数据求得实际各轴的加速度!
菜鸟
2015-10-16 08:36 9楼
大家一起探讨,学习吧,谢谢大家!
共9条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]