标签: compass-geolocation

使用磁航向获取地理方向

如何计算磁航向值以获得地理方向,即北,东北,东,东南,南,西南,西,西北?

由于磁航向仅返回度数值,并且我需要在不断更新的磁航向的基础上显示地理方向.

我怎样才能成功呢?

iphone objective-c compass-geolocation

7
推荐指数
1
解决办法
1716
查看次数

如何提高加速度计和罗盘传感器的精度?

我正在创建一个增强现实应用程序,只需在手机面向兴趣点时(手机上存储gps位置)就可以显示文本视图.textview绘制在屏幕中的兴趣点位置.

它工作正常,问题是指南针和加速度计非常"变化",并且textview不断地左右上下移动,因为传感器的真空度.

有办法解决吗?

android accelerometer augmented-reality compass-geolocation

7
推荐指数
1
解决办法
8938
查看次数

如何在Android中获取方向(如北,西)

我是Android的新手,我想根据我的相机获得方向.如何根据相机获取方向信息?你能给出一个想法吗?

android android-manifest compass-geolocation

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

iphone指南针倾斜补偿

有没有人已经编程了iphone罗盘标题倾斜补偿?

我有一些方法,但一些帮助或更好的解决方案将是很酷的!

首先,我定义一个向量Ev,由Gv和Hv的叉积计算得出.Gv是由加速度计值构建的重力矢量,Hv是构建磁力计值的标题矢量.Ev与Gv和Hv垂直,因此它正朝着东方的方向前进.

SECOND我定义了一个向量Rv,由交叉积Bv和Gv计算得出.Bv是我的向量,它被定义为[0,0,-1].Rv垂直于Gv和Bv并始终显示在右侧.

第三,这两个向量Ev和Rv之间的角度应该是我的校正标题.计算角点i构建点积和arcos.

phi = arcos(Ev*Rv/| Ev |*| Rv |)

理论上它应该可以工作,但也许我必须规范化向量?!

有没有人为此得到解决方案?

谢谢,m01d

iphone accelerometer tilt compass-geolocation

6
推荐指数
1
解决办法
2801
查看次数

指南针准确性困境

我需要为我的应用程序构建指南针.

从阅读文档看起来有两种合理的方法:

  • Sensor.TYPE_ORIENTATION方法:这是一种简单的方法.这个问题是它不准确.当我将我的阅读与Snaptic Compass进行比较时,它大约是10-15度,这对于我的目的来说是不可接受的.
  • Sensor.TYPE_ACCELEROMETER,Sensor.TYPE_MAGNETIC_FIELD和getRotationMatrix()以及remapCoordinateSystem()和getOrientation()方法:文档说这"通常更准确".问题是无论我向听众注册的延迟如何,即使设备在平坦表面上静止,指南针也会发疯.

任何解决这个问题的建议都将不胜感激.

android digital-compass compass-geolocation

6
推荐指数
1
解决办法
4721
查看次数

如何获得罗盘方向

我想在屏幕上显示电话所面对的方向.例如:

   0
   |- []
   |_
  South --- North
Run Code Online (Sandbox Code Playgroud)

在上图中,手机将显示"北".由于用户(头部为0的棒)正在拿出指向北方的电话(图中的[]).

我找到了这个例子.我理解它在做什么,除了它似乎计算偏航,俯仰,滚动和倾斜.那些是什么以及如何使用它们来简单地找到手机指向的方向?

Android文档还提到X,Y和Z轴,但我没有看到任何说明这些轴如何对应手机?Z是从手机底部走到顶端吗?

android compass-geolocation

6
推荐指数
1
解决办法
2万
查看次数

指南针:从359到0度

我正在尝试使用指南针移动机器人.我们使用指南针使机器人沿直线移动,它使用2个轮子,它们移动有点不同.因此我们将0到359之间的值设置为方向,然后检查当前方向,计算错误并修复它.像error = current_direction - 实际方向.

问题是,例如,如果我们的初始方向是90度而我们的机器人是45,那么错误将是45并且它将修复它.如果为0,则错误将为90并且将修复它.问题是如果它移动了一点多于0并且例如变为359,则误差将是-269,因此不是在一个方向上移动90而是在另一个方向上移动-269.

我使用错误的符号来决定移动哪个轮子以固定方向.任何想法如何解决它?

robotics lego-mindstorms lego nxt compass-geolocation

6
推荐指数
1
解决办法
820
查看次数

如何计算手机在休息时垂直方向的运动?

我正在开发一个使用Android OS的应用程序,我需要知道如何计算设备在垂直方向上的移动.

例如,设备处于静止状态(A点),用户手拿它(B点),现在A点和B点之间有高度变化,我该如何计算?

我已经阅读了有关传感器和加速度计的文章,但我找不到任何可以帮助我的东西.有人有主意吗?

android sensor accelerometer compass-geolocation

6
推荐指数
1
解决办法
1万
查看次数

iOS增强现实与指南针和位置

我正在尝试开发一个迷你"我身边",比如使用相机,指南针和位置.我想在屏幕上显示地方的图像.目前我有我的位置和指南针的方向.我想知道如何确定我想要显示的地方的位置.

谢谢你的帮助 ;)

gps orientation augmented-reality ios compass-geolocation

6
推荐指数
1
解决办法
8539
查看次数

指南针方向因手机方向而异

我的增强现实应用程序需要摄像机视图的罗盘方位,并且有很多从传感器管理器获取方向的示例.

然而,我发现结果值取决于手机方向 - 旋转到右侧的景观与旋转到左侧的景观大约相差10度(ROTATION_0和ROTATION_180之间的差异较小,但仍然不同).这种差异足以破坏任何AR效应.

它与校准有关吗?(我不相信我正在做正确的8件事 - 我尝试过在youtube上找到的各种方法).

任何想法为何有区别?我搞砸了旋转矩阵的东西吗?我可以选择将应用程序限制为单一方向,但仍然担心罗盘读数仍然不是很准确(即使过滤后它相当稳定)

public void onSensorChanged(SensorEvent event) {
        if (event.accuracy == SensorManager.SENSOR_STATUS_UNRELIABLE) {
            return;
        }

        if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER)  mGravity = event.values;
        if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD) mGeomagnetic = event.values;

        if (mGravity != null && mGeomagnetic != null) {

            float[] rotationMatrixA = mRotationMatrixA;
            if (SensorManager.getRotationMatrix(rotationMatrixA, null, mGravity, mGeomagnetic)) {

                float[] rotationMatrixB = mRotationMatrixB;

                Display display = getWindowManager().getDefaultDisplay(); 
                int deviceRot = display.getRotation();

                switch (deviceRot)
                {
                // portrait - normal
                case Surface.ROTATION_0: SensorManager.remapCoordinateSystem(rotationMatrixA,
                        SensorManager.AXIS_X, SensorManager.AXIS_Z,
                        rotationMatrixB);
                break;
                // …
Run Code Online (Sandbox Code Playgroud)

android orientation augmented-reality android-sensors compass-geolocation

6
推荐指数
1
解决办法
7229
查看次数