【问题标题】:What does the Geomagnetic Field Sensor measure?地磁场传感器测量什么?
【发布时间】:2015-06-06 22:26:46
【问题描述】:

According to the docs,地磁场传感器测量地球沿 x、y 和 z 轴的磁场强度(以微特斯拉为单位,μT)。但是,它的行为并不像我预期的那样。

我希望如果我将设备放在一个位置,测量磁场,然后将设备旋转 90°,以使新的磁场读数与第一个位置正交。或者,如果旋转 180°,则两个向量的大小相等,但方向相反。我还希望无论设备的方向如何,单个位置的场强度几乎相同。

但这些都没有像预期的那样表现。应该是正交的向量结果具有高于 0.8 的点积(每个向量归一化)。如果我将设备旋转 180°,向量的点积应该为 -1,但在我的测试中,我得到的点积约为 0.9(而不是负数)。

幅度也相差很大。有些方向是 250,有些方向是 45。

唯一要注意的是它是一致的——当我将设备返回到相同的方向和位置时,数字大致相同。

如果数字(x、y 和 z)不是沿这些轴的字段的真实值,它们是什么?或者如果它不是向量空间,它测量的是什么?


更新

这里有一些示例代码可供使用:

public class SensorTestActivity extends Activity implements SensorEventListener {
  private SensorManager sensorManager;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
  }

  @Override
  public void onSensorChanged(SensorEvent event) {
    Log.i("SENSOR", event.getValues());
  }

  @Override
  public void onAccuracyChanged(Sensor sensor, int accuracy) {}

  @Override
  protected void onResume() {
    super.onResume();
    sensorManager.registerListener(this,
        sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD),
        SensorManager.SENSOR_DELAY_NORMAL);
  }

  @Override
  protected void onPause() {
    super.onPause();
    sensorManager.unregisterListener(this);
  }
} 

【问题讨论】:

    标签: android sensors android-sensors


    【解决方案1】:

    地磁场传感器应独立于设备的方向。它测量地球磁场强度,因此应仅取决于位置,而不取决于设备的方向。上面的所有点积都应该接近 1,因为您将标准化向量点在自身上。磁矢量的坐标变化只是因为磁矢量以设备坐标表示。因此,当您更改设备方向时,坐标会发生变化,但矢量保持不变。

    【讨论】:

    • 关键词应该。我正在测量设备坐标(我相信),所以我希望将设备旋转 90 度会产生一个与第一个相距 90 度的矢量。然而,事实并非如此。也没有解释不同角度下幅度的巨大差异。
    • 您尝试做的事情类似于尝试添加具有以十为底的数字表示的二进制表示,而您不能。添加数字时,基数应相同。当您旋转设备时,磁矢量不会改变。改变的是碱基,因此这个相同的磁矢量具有不同的坐标。由于基数不同,不能应用点积。
    • 好的,如果磁传感器的基础在世界坐标中是非正交的,我们应该看到我所看到的。那么如何求基的变换矩阵呢?
    • 您必须注册 SENSOR_TYPE_GRAVITY 或 SENSER_TYPE_ACCELEROMETER 并调用 getRotationMatrix。得到的旋转矩阵是从设备基础到世界基础的基础变换矩阵。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多