我需要计算安卓设备移动的速度。我感兴趣的是短距离的情况下,设备往往会返回到起点(如当用户在办公椅上旋转时,手臂伸出,同时拿着手机),所以GPS可能不适用于我的情况。我如何使用加速度计?
我当时在想:
double delta_t = current_time - previous_time
double delta_v_x = a_x * delta_t
double delta_v_y = a_y * delta_t
double delta_v_z = a_z * delta_t
current_v_x += delta_v_x
current_v_y += delta_v_y
current_v_z += delta_v_z
double v = Math.sqrt(Math.pow(current_v_x, 2) + Math.pow(current_v_y, 2) + Math.pow(current_v_z, 2))
- 它能按预期工作吗?
- 我也要考虑重力吗?如果设备的方向可以改变,该怎么做?
- 我是否必须首先消除加速度测量中的噪声?
- 高通滤波器能同时解决噪声和重力问题吗?
1条答案
按热度按时间rjee0c151#
以防有人会有类似的问题。对于重力问题,我使用了Sensor.TYPE_LINEAR_ACCELERATION而不是Sensor.TYPE_ACCELEROMETER。对于噪声,我使用了Apache Commons Math的卡尔曼滤波器。