相关疑难解决方法(0)

从设备的坐标系加速到绝对坐标系

从我的Android设备,我可以读取一系列线性加速度值(在设备的坐标系中)和一组绝对方向值(在地球坐标系中).我需要的是获得后一个坐标系中的线性加速度值.系统.

我该怎么转换它们?

在Ali回复评论后编辑:

好吧,所以如果我理解正确的话,当我测量线性加速度时,手机的位置完全没关系,因为读数是在地球坐标系中给出的.对?

但我刚做了一个测试,我把手机放在不同的位置,并在不同的轴上加速.有3对图片 - 第一部分显示我如何放置设备(对不起我的Paint"掌握技能"),第二部分显示线性acc提供的数据读数.传感器:

  1. 装置放在左侧

第一个位置 初读

  1. 设备躺在背上

第二个位置 二读

  1. 设备站立

在此输入图像描述 在此输入图像描述

现在 - 为什么在第三种情况下,加速沿Z轴(而不是Y)发生,因为设备位置无关紧要?

android vector accelerometer coordinate-systems coordinate-transformation

26
推荐指数
3
解决办法
2万
查看次数

将来自设备的磁场X,Y,Z值转换为全局参考系

使用TYPE_MAGNETOMETER传感器时,可获得与器件方向相关的磁场强度的X,Y,Z值.我想要得到的是将这些值转换为全局参考框架,澄清:用户接受设备,测量这些值,而不是将设备旋转任何轴周围一定程度并获得相同的值.请在下面找到类似的问题: 在全局坐标中获取磁场值 如何获得磁场矢量,与设备旋转无关? 在这个答案中描述了样本解决方案(它用于线性加速,但我认为没关系):https://stackoverflow.com/a/11614404/2152255 我使用它并且我得到3个值,X总是非常小(不要认为它是正确的),Y和Z都可以,但是当我旋转设备时它们仍然有点变化.怎么可以调整?它可以全部解决吗?我使用简单的卡尔曼滤波器来近似测量值,因为即使设备根本没有移动/旋转,我也会得到不同的值.请在下面找到我的代码:

import android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.opengl.Matrix;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.TextView;
import com.test.statistics.filter.kalman.KalmanState;
import com.example.R;

/**
 * Activity for gathering magnetic field statistics.
 */
public class MagneticFieldStatisticsGatheringActivity extends Activity implements SensorEventListener {

    public static final int KALMAN_STATE_MAX_SIZE = 80;
    public static final double MEASUREMENT_NOISE = 5;

    /** Sensor manager. */
    private SensorManager mSensorManager;
    /** Magnetometer spec. */
    private TextView vendor;
    private TextView resolution; …
Run Code Online (Sandbox Code Playgroud)

android sensor magnetometer android-sensors

9
推荐指数
2
解决办法
3万
查看次数