给定一个9自由度的加速度计(加速度计、陀螺仪和磁强计),我想消除/补偿加速度计读数中重力的影响(加速度计可以自由旋转)。传感器以四元数表示方式给出相对于(磁)北、西和上参考坐标系的方向。
我找到这个了http://www.varesano.net/blog/fabio/simple-gravity-compensation-9-dom-imus但无法理解给定方程的基础。
我怎样才能实现上述信息?
我假设你的加速度计读数在传感器主体框架内。首先,我们需要相对于惯性系表示加速度计数据,然后减去重力。如果你直接使用欧拉角而不是四元数,那么你需要计算旋转矩阵
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
代表侧倾角度,theta
pitch,psi
当您应用矩阵乘法运算时,现在您需要从< code>z
方向减去重力,以便消除静态加速度,即重力。
你需要将加速度计的读数按四元数旋转到地球参照系中(如果你喜欢,可以旋转到房间的坐标系中),然后减去重力。剩余的加速度是地球参照系中传感器的加速度,通常称为线性加速度或用户加速度。
在伪代码中,像这样的东西
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