当前位置: 首页 > 知识库问答 >
问题:

加速度计数据中的重力补偿

山煜祺
2023-03-14

给定一个9自由度的加速度计(加速度计、陀螺仪和磁强计),我想消除/补偿加速度计读数中重力的影响(加速度计可以自由旋转)。传感器以四元数表示方式给出相对于(磁)北、西和上参考坐标系的方向。

我找到这个了http://www.varesano.net/blog/fabio/simple-gravity-compensation-9-dom-imus但无法理解给定方程的基础。

我怎样才能实现上述信息?

共有2个答案

朱通
2023-03-14

我假设你的加速度计读数在传感器主体框架内。首先,我们需要相对于惯性系表示加速度计数据,然后减去重力。如果你直接使用欧拉角而不是四元数,那么你需要计算旋转矩阵

R = [
    ctheta*cpsi,
    -cphi*spsi + sphi*stheta*cpsi,
    sphi*spsi + cphi*stheta*cpsi;
    ctheta*spsi, cphi*cpsi + sphi*stheta*spsi,
    -sphi*cpsi + cphi*stheta*spsi;
    -stheta, sphi*ctheta, cphi*ctheta
]

(用MATLAB符号表示)。这里phi代表侧倾角度,thetapitch,psi

当您应用矩阵乘法运算时,现在您需要从< code>z方向减去重力,以便消除静态加速度,即重力。

傅阿苏
2023-03-14

你需要将加速度计的读数按四元数旋转到地球参照系中(如果你喜欢,可以旋转到房间的坐标系中),然后减去重力。剩余的加速度是地球参照系中传感器的加速度,通常称为线性加速度或用户加速度。

在伪代码中,像这样的东西

acceleration = [ax, ay, ay]  // accelerometer reading

q                            // quaternion corresponding to the orientation

gravity = [0, 0, -9.81]      // gravity on Earth in m/s^2

a_rotated = rotate(acceleration, q) // rotate the measured acceleration into
                                    // the Earth frame of reference

user_acceleration = a_rotated - gravity

你说你可以通过API得到q。唯一不平凡的步骤是实现 rotate() 函数。

要计算向量 v 在旋转 q 时的图像,应应用以下公式:旋转 v = qvq-1。要用浮点数计算它,你需要自己计算公式;它们在使用四元数旋转处可用。

据我所知,你提供的链接就是这样做的,你可以看到那里的扩展公式,现在你知道它们是从哪里来的了。此外,链接的内容似乎以g为单位测量重力,也就是说,重力是[0,0,-1]。

注意符号约定(无论您是否考虑重力[0,0,-1]或[0,0,1])和坐标系的手性!

 类似资料:
  • 所以我在做一个程序,在这里你可以有两个对象(圆)。我希望它们像行星一样围绕彼此运行,但只能是二维的。 我知道用牛顿万有引力定律,我可以得到两个物体之间的力。我也知道A=F/m,我的问题是我如何从前面的方程中得到A并把它变成一个向量?

  • 我正在使用IMU(3轴加速度计、3轴陀螺仪、3轴磁力计),我想从加速度计数据中获取线性加速度。我知道传感器融合和使用陀螺仪数据(并获取方向)获取重力矢量的能力,从而消除其对相应轴的影响。 我走在正确的道路上吗?如果可以的话,你能帮忙吗?

  • 采集设备在x、y、z方向上的动作。 方法: accelerometer.getCurrentAcceleration accelerometer.watchAcceleration accelerometer.clearWatch 参数: accelerometerSuccess accelerometerError accelerometerOptions 对象(只读): Acceleratio

  • 背压有问题。使用发布主题获取发射时的传感器事件,并需要在事务中订阅主题时将数据保存到数据库。 我一直在尝试使用。窗口(100)操作符,这样每当我连续收到100个传感器事件时,我就可以批量插入,但一次只能收到一个项目。订阅 不希望使用缓冲区运算符删除事件。正确的处理方法是什么?

  • 问题内容: 是否可以使用加速度计检测高度?例如,如果我手持手机,然后举起手臂来检测身高? 谢谢 问题答案: 假设您的意思是要检测手机从其凝视点起的高度,是的。android加速度计可测量力,有关如何使用它的更多信息,请参见此处 。请记住,加速度计并不是一个完美的设备,因此您的结果将是手机实际移动了多少的近似值。

  • 我目前正在开发一个应用程序,它应该通过设备的加速度来计算速度。为了实现这一点,我使用传感套件。应用程序记录用户运动的数据并将其保存到本地存储器。当用户停止记录时,可以按时间以速度绘制收集的加速度(加速度计的每个轴有三个曲线图)。 检测工具包使用CMMotionManager的startAccelerometerUpdates获取加速度。为了计算速度,我做了一些信号处理和加速度的积分(然后乘以9.8