加速度计校准
我正在使用加速计在屏幕上沿 X/Y 方向移动某些物体。
如果手机一开始平放在桌子上,这很容易。
我想出了一些办法,试图能够从任何给定的位置开始,并从那里开始工作。但这似乎并不自然。
如何校准才能获得与起点的方向差异?
cursorX -= accelerometerCalibrationY - getAccelerometerY();
cursorY += accelerometerCalibrationX - getAccelerometerX();
这对于平放在桌子上和某些起始位置非常有效。变量只是开始时的 getAccelerometerXY。
I'm using the accelerometer to move something around in X/Y on the screen.
This is easy if the phone starts flat on the table.
I've come up with something in an attempt to be able to start at any given position, and work from there. But it doesn't seem to work naturally.
How do I calibrate things so I can get the difference in orientation from the starting point?
cursorX -= accelerometerCalibrationY - getAccelerometerY();
cursorY += accelerometerCalibrationX - getAccelerometerX();
This works fine for flat on the table, and SOME starting positions. The variables are just getAccelerometerXY at the start.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
你需要做一些数学计算。使用 getRotationMatrix 确定当前手机方向矩阵 (M)。使用M,您可以计算设备局部坐标系中的向量g(重力)。然后从传感器获取加速度(Accel)。 Calc Ans = 加速度-重力矢量。 Ans 的 x/y 分量正是您所需要的。对其进行过滤以获得更好的结果。
这是另一种简单的方法。获取加速矢量。使用高通滤波器对其进行滤波以消除直流分量,并使用低通滤波器对其进行滤波以消除不必要的噪声(您将花费一些时间寻找合适的滤波器参数)。过滤后的 x/y 分量正是您所需要的。
You need to do some math. Use getRotationMatrix to determine current phone orientation Matrix (M). Using M, you can calc vector g (Gravity) in device local coordinate system. Then get accel (Accel) from sensor. Calc Ans = Accel-Gravity vector. Ans' x/y components is what you need. Filter it to get better results.
Here is another easy way. Get Accel vector. Filter it with high-pass filter to remove DC component and low-pass to remove unnecessary noise (you will spent some time looking for appropriate filter params). Filtered x/y components is what you need.
加速度计为您提供一个矢量 - 因此只需在活动开始时计算一些合理的平均值并将其用作起点即可。将差值转换为坐标转向值非常简单。
Accelerometer delivers you an vector - so just compute some reasonable average on start of your activity and use it as staring point. Converting difference to coordinate steering values is straightforward.
您还需要陀螺仪,加速度计值是相对于手机坐标系的
You Need Gyroscope also ,accelerometer values are with respect to Phone coordinate system