Android线性加速度:负值
我正在编程一个加速计来测量距离。我已经读到积分两倍加速度,误差是非常大的,但我不在乎,我有足够的精度来做我想做的事情。 问题是我在x轴上的位置总是负值,我不知道它来自何处,因为我将手机向各个方向移动,但仍然有负值 这是我从互联网上挑选和整理的代码:Android线性加速度:负值,android,accelerometer,android-sensors,Android,Accelerometer,Android Sensors,我正在编程一个加速计来测量距离。我已经读到积分两倍加速度,误差是非常大的,但我不在乎,我有足够的精度来做我想做的事情。 问题是我在x轴上的位置总是负值,我不知道它来自何处,因为我将手机向各个方向移动,但仍然有负值 这是我从互联网上挑选和整理的代码: @Override public void onSensorChanged(SensorEvent event){ if(last_values != null){ float dt = (event.timestamp -
@Override
public void onSensorChanged(SensorEvent event){
if(last_values != null){
float dt = (event.timestamp - last_timestamp) * NS2S;
acceleration[0]= event.values[0];
acceleration[1]= event.values[1];
acceleration[2]= event.values[2];
for(int index = 0 ; index < 3 ; ++index){
velocity[index] += (acceleration[index] + last_values[index])/2 * dt;
position[index] += velocity[index] * dt;
}
}
else{
last_values = new float[3];
acceleration = new float[3];
velocity = new float[3];
position = new float[3];
velocity[0] = velocity[1] = velocity[2] = 0f;
position[0] = position[1] = position[2] = 0f;
}
xarr.add(position[0]);
yarr.add(position[1]);
zarr.add(position[2]);
tvX.setText(String.valueOf(position[0]));
tvY.setText(String.valueOf(position[1]));
tvZ.setText(String.valueOf(position[2]));
last_timestamp = event.timestamp;
}
@覆盖
传感器更改时的公共无效(传感器事件){
如果(最后的_值!=null){
float dt=(event.timestamp-last_timestamp)*NS2S;
加速度[0]=事件值[0];
加速度[1]=事件值[1];
加速度[2]=事件值[2];
对于(int-index=0;index<3;++index){
速度[指数]+=(加速度[指数]+最后的_值[指数])/2*dt;
位置[指数]+=速度[指数]*dt;
}
}
否则{
最后的_值=新浮动[3];
加速度=新浮点数[3];
速度=新浮点数[3];
位置=新浮动[3];
速度[0]=速度[1]=速度[2]=0f;
位置[0]=位置[1]=位置[2]=0f;
}
xarr.add(位置[0]);
增加(位置[1]);
zarr.add(位置[2]);
tvX.setText(String.valueOf(位置[0]);
tvY.setText(String.valueOf(位置[1]);
tvZ.setText(String.valueOf(位置[2]);
last_timestamp=event.timestamp;
}
这是一些X轴值:
X轴
-0001147982
-0003418462
-0006807898
-0011325749
-001697435
-0023762027
-0031681452
-004072018
-0050905682
-0062279336
-007478787
-0088445522
-0103226766
-0119143963
-0136174649
-0154338345
-017362912
-019407627
-0215692967
请提供帮助。为什么您认为负x值是错误的?另外,如果您从Excel复制并粘贴值,而不是发布屏幕截图,我们会更容易提供帮助。我认为它们是错误的,因为这些数据应该从(0,0)返回位置,这也是我的第一个值,我认为他们错了,因为我没有将手机向左移动(这可以解释这个值),我在各个方向摇晃手机,我应该得到交替的正负值你确定负x值意味着“向左”?为什么你认为负x值错了?还有,如果您复制并粘贴Excel中的值,而不是发布屏幕截图,我们会更容易提供帮助。我认为它们是错误的,因为这些数据应该从(0,0)返回位置,这是我的第一个值。此外,我认为它们是错误的,因为我没有将手机向左移动(这可以解释这些值),我在各个方向摇手机,我应该得到正负交替的值你确定负x值表示“向左”吗?