Android线性加速度:负值

Android线性加速度:负值,android,accelerometer,android-sensors,Android,Accelerometer,Android Sensors,我正在编程一个加速计来测量距离。我已经读到积分两倍加速度,误差是非常大的,但我不在乎,我有足够的精度来做我想做的事情。 问题是我在x轴上的位置总是负值,我不知道它来自何处,因为我将手机向各个方向移动,但仍然有负值 这是我从互联网上挑选和整理的代码: @Override public void onSensorChanged(SensorEvent event){ if(last_values != null){ float dt = (event.timestamp -

我正在编程一个加速计来测量距离。我已经读到积分两倍加速度,误差是非常大的,但我不在乎,我有足够的精度来做我想做的事情。 问题是我在x轴上的位置总是负值,我不知道它来自何处,因为我将手机向各个方向移动,但仍然有负值

这是我从互联网上挑选和整理的代码:

@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值表示“向左”吗?