陀螺仪和加速度计倒置

时间:2018-12-26 09:40:49

标签: android accelerometer gyroscope

我在Android中同时使用陀螺仪和加速度计。我所做的只是显示两个传感器的值。我不明白为什么要跟踪设备加速度,必须使用陀螺仪以及为什么设备方向由加速度传感器提供。 我已经在2台平板电脑,3部手机上测试了此代码,结果相同。

听众:

// gyroscope sensor
sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE), SensorManager.SENSOR_DELAY_NORMAL);

// accelerometer sensor
sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);

要获得结果,我实现了SensorEventListener:

@Override
public void onSensorChanged(SensorEvent sensorEvent) {
    switch (sensorEvent.sensor.getStringType()){
        case Sensor.STRING_TYPE_ACCELEROMETER:
            (TextView)findViewById(R.id.sensor_accel_data_textView)).setText(String.valueOf(sensorEvent.values[0]));
            ((TextView)findViewById(R.id.sensor_accel_data_textView2)).setText(String.valueOf(sensorEvent.values[1]));
            ((TextView)findViewById(R.id.sensor_accel_data_textView3)).setText(String.valueOf(sensorEvent.values[2]));
            break;
        case Sensor.STRING_TYPE_GYROSCOPE:
            ((TextView)findViewById(R.id.sensor_gyro_data_textView)).setText(String.valueOf(sensorEvent.values[0]));
            ((TextView)findViewById(R.id.sensor_gyro_data_textView2)).setText(String.valueOf(sensorEvent.values[1]));
            ((TextView)findViewById(R.id.sensor_gyro_data_textView3)).setText(String.valueOf(sensorEvent.values[2]));
            break;
    }
}

2 个答案:

答案 0 :(得分:1)

  1. 它们没有倒置。加速度计为您提供ax,ay,az,它们是3个方向的加速度。陀螺仪为您提供了三个方向的旋转速度gx,gy,gz。
  2. 这两个传感器可以独立使用。
  3. 加速度计不给您方向。有方向传感器,但可能已弃用。我认为传感器值取决于方向,但是有多种方法可以使其独立于方向。

您可以从Play商店安装一些传感器应用,并将其与您的值进行比较以进行测试。

答案 1 :(得分:0)

这个问题已经存在了将近一年,但是我偶然发现了这个问题,并产生了一个问题的根源,那就是对每个传感器实际测量的误解。

因此,希望下面的解释可以使传感器没有切换,但实际上是使用加速度计来检测方向,而(imho命名错误)陀螺仪不能提供绝对方向。

加速度计

您应该将加速度计想象为一个样本质量,它被一些弹簧保持着,因为加速度计就是这样(您可以搜索MEMS加速度计以找到有关如何在微米级上实际实现的示例)。如果对设备进行加速,则由于惯性,质量块将推向弹簧,并测量质量块的微小挠度以检测加速度。但是,质量不仅会因实际加速度而偏转,还会因重力而偏转。因此,如果您的手机放在桌子上,则重物仍会偏向地面。

因此,您看到的“ -10”到“ 10”是地球在9.81 m /s²处的加速度。从物理学的角度来看,这是令人困惑的,因为在传感器仍显示9.81 m /s²时,静止的设备显然没有被加速,因此我们从传感器获得了设备的加速度加上地球的加速度。尽管这是任何物理老师的噩梦,但它非常有用,因为它可以告诉您“向下”的位置,从而使您确定设备的方向(围绕重力轴的旋转除外)。

陀螺仪

称为“陀螺仪”的传感器是设备中的另一个样本质量,它被主动驱动来振动。由于振动运动,它会受到科里奥利力的作用(在其参考框架内),并且在旋转时会发生偏转(搜索“ MEMS陀螺仪”会产生更多惊人的设备,尤其是当您考虑到它们可以检测到科里奥利的事实时)力)。

但是,挠度不允许您确定绝对角度(就像老式的陀螺仪一样),而是与角速度(转速)成正比。因此,您可以期望一个静止的设备在所有轴上的读数为零,并且仅当您围绕该轴旋转设备时,才能看到任何轴的读数。