Mr.*_*ppy 6 android orientation magnetometer android-sensors indoor-positioning-system
情况:
我正在尝试通过指纹识别来建立一个室内定位系统,利用建筑物内部的磁场变化.作为传感器,我正在使用我的手机Galaxy Nexus.
基本上,获取指纹的想法是分别测量x,y和z方向的磁场,并通过移动的方向旋转矢量以将矢量带入世界坐标系.为了定位某人,他还测量磁场,旋转矢量并将其发送到我将运行我的定位算法的服务器.
我的问题:
当我在不同方向上测量同一点处的磁场时,在旋转矢量后我得不到相同的结果.即使场强也不一样.
为了表明这一点,我在同一位置进行了四次测量,并将手机绕其z轴(标准Android规格)逆时针旋转90度,180度和270度.结果可以在下面的"表格"和Matlab图表(点击链接)上看到(如果您想要其他观点让我知道)
编辑: 更确切地说:我真正做的是我定义了自己的坐标系,称为房间坐标系.我拿了房间的一面墙,把它定义为北面.我的手机的y轴外挂在那个墙上(在第一个位置),而它在桌子上是平的.因此,正z轴指向天空,x轴定义为90度的墙.以'Raw'命名的矢量是手机的原始值,因此它们位于手机的坐标系中.以"旋转"命名的Vector将旋转到"房间坐标系"中.在图中,虚线矢量是原始矢量,实心矢量是旋转矢量.
?????????????????????????????????????????????????????
? Vector ? X ? Y ? Z ? Strength ?
?????????????????????????????????????????????????????
? 0°Raw ? 17.55 ? 8.21 ? -36.83 ? 41.62 ?
? 0°Rotated ? 17.55 ? 8.21 ? -36.83 ? 41.62 ?
? 90°Raw ? 15.74 ? -11.36 ? -36.86 ? 41.66 ?
? 90°Rotated ? 11.36 ? 15.74 ? -36.86 ? 41.66 ?
? 180°Raw ? -65.06 ? -16.18 ? -44.79 ? 80.63 ?
? 180°Rotated ? 65.06 ? 16.18 ? -44.79 ? 80.63 ?
? 270°Raw ? 6.38 ? 61.95 ? -46.37 ? 77.64 ?
? 270°Rotated ? 61.95 ? -6.38 ? -46.37 ? 77.64 ?
?????????????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)

正如您在旋转它们后所看到的那样,它们并不真正匹配.你知道为什么会这样吗?我还有什么可能没想过的?非常感谢提前!
编辑2:
第二个实验
我做了另一个实验,结果更好,但仍然没有我预期的那么好.这次方向并不像应该的那样恒定.这次我在室外进行测量.我将y轴向真正的北方移动,并将其平放在地面上.我逆时针旋转了大约3次90度.我用另一台相机拍了一张手机位置的照片,并用photoshop测量了真实的旋转.您可以在表格和下面的图表中看到结果:
?????????????????????????????????????????????????????
? Vector ? X ? Y ? Z ? Strength ?
?????????????????????????????????????????????????????
? 0°Raw ? 1.22 ? 20.31 ? -57.53 ? 61.02 ?
? 0°Rotated ? 1.22 ? 20.31 ? -57.53 ? 61.02 ?
? 104°Raw ? 25.92 ? 5.66 ? -57.53 ? 63.35 ?
? 104°Rotated ? -11.93 ? 23.70 ? -57.53 ? 63.35 ?
? 204°Raw ? 5.42 ? -16.86 ? -59.67 ? 62.24 ?
? 204°Rotated ? -11.90 ? 13.12 ? -59.67 ? 62.24 ?
? 290°Raw ? -12.18 ? 0.73 ? -57.85 ? 59.12 ?
? 290°Rotated ? -3.64 ? 11.64 ? -57.85 ? 59.12 ?
?????????????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)

补充说明:
这些值在几秒钟内取平均值.所以这不是噪音问题.
我知道我不能使用这个功能,getOrientation因为它使用磁场来计算方向,这是没有意义的,因为我想找到磁场的变化.对于上面的示例,我手动创建了旋转四元数.
确保您通过该onAccuracyChanged(Sensor sensor, int accuracy)方法监控传感器的准确性。我发现我的 Nexus 10 平板电脑的准确度会定期变化,当准确度较低或不可靠时,我会得到与您类似的结果。
| 归档时间: |
|
| 查看次数: |
1748 次 |
| 最近记录: |