我正在开发一个Android应用程序来跟踪室内位置.我的手机是使用两个传感器的Google Nexus S,第一个是加速度计,第二个是陀螺仪.
我的想法是,从起始参考点(已知的GPS位置),使用2个传感器(用于运动的加速度计和用于方向的陀螺仪)在移动时跟踪手机.并在用户出发时显示在地图上.
但问题是我不知道如何将这两种传感器结合起来给我一个实际位置?
我在互联网上看过一些关于"kalman过滤器"的文章,经过一些研究后我发现那个过滤器对我来说非常复杂/太多了)特别是在java for Android(cpu杀手)中编码
有人有经验可以与我分享使用陀螺仪和加速度计的室内定位系统吗?
我想构建一个应用程序,使用陀螺+加速度计计算iPhone(非长距离)的准确行进距离.这里不需要GPS.
我该如何处理这个问题?
我正在开发汽车加速跟踪应用程序.我使用标准加速度计,事先在特定位置校准.
然后,假设手机的方向没有改变,我将加速度计数据记录了指定的时间并计算了移动参数,其中一个是测试结束时的汽车速度.
它在一条平直的水平道路上工作得相当好:几个百分点的误差.
但后来我发现,在API级别10中有一个叫做的虚拟传感器TYPE_LINEAR_ACCELERATION,据我所知,它必须做我需要的东西:过滤重力,方向变化 - 所以我可以使用它并获得纯粹的线性加速度移动设备.
但在现实生活中......
我做了一个简单的应用程序,做了一点测试:
//public class Accelerometer implements SensorEventListener { ...
public void onSensorChanged(SensorEvent se)
{
if(!active)
return;
lastX = se.values[SensorManager.DATA_X];
lastY = se.values[SensorManager.DATA_Y];
lastZ = se.values[SensorManager.DATA_Z];
long now = System.currentTimeMillis();
interval = now - lastEvetn;
lastEvetn = now;
out.write(Float.toString(lastX) + ";" +
Float.toString(lastY) + ";" +
Float.toString(lastZ) + ";" +
Long.toString(interval) + "\n");
}
Run Code Online (Sandbox Code Playgroud)
我用以下参数绑定一个监听器:
mSensorManager.registerListener(linAcc,
mSensorManager.getDefaultSensor(Sensor.TYPE_LINEAR_ACCELERATION),
SensorManager.SENSOR_DELAY_GAME);
Run Code Online (Sandbox Code Playgroud)
它工作正常,但是当我分析数据转储时,计算速度,比如V = V0 + AT,V0 = 0首先,然后 - 之前的间隔速度,A = …
Android中的重力和加速度传感器有什么区别?从我的观点来看,两种情况下的物理价值都是相同的.
哪一个测量作用于设备内部单位质量的力?
加成
问题是:这些传感器测量的物理量是多少?根据等效原理,加速度和重力是无法区分的,测量两者的唯一方法是通常(但是3d)弹簧平衡.
我正在开发一个Android应用程序,它可以计算设备在6个方向上的移动.我想我可以使用加速;
" x = at ^ 2 "但a不是常数.这就是问题所在.如何计算总运动?
我正在开发一个应用程序,我想跟踪移动用户在GPS不可用的建筑物内的位置.用户在众所周知的固定位置(精确到5厘米内)开始,此时电话中的加速度计将被激活以跟踪相对于该固定位置的任何进一步的移动.我的问题是,在当代智能手机(iphone,Android手机等)中,人们可以准确地根据这些手机通常配备的加速度计来跟踪某些人的位置吗?
具体的例子很好,例如"如果我从起点移动50米X,从起点移动35米Y,从起点移动5米Z,我可以预期我的位置近似在+/- 80之内大多数现有智能手机上的厘米",或者其他什么.
我对卡尔曼滤波器等技术只有肤浅的理解来校正漂移,但是如果这些技术与我的应用相关并且有人想要描述我可能从这些技术中获得的校正的质量,那将是一个加分.
我正在尝试实现一个健身应用程序,可以跟踪Android中的运行速度和运行距离.
看起来我可以使用GPS或Accelerometer来计算这些信息.
由于跑步者可以将手机放在肩上或口袋里,我的第一个直觉是使用GPS获取位置并计算跑步速度和跑步距离.但最近有人告诉我,我也可以使用Accelerometer.
我的问题是:在Android中,哪种方法更适合计算跑步速度和跑步距离,GPS或加速度计?
我正在为Android开发一个AR应用程序,我需要一个非常准确的位置(低于1米).该应用程序是基于行人(户外),并需要实时的位置.我知道问题可能是一个非常困难的问题,但希望其他人能够找到解决方案.
我已经研究过卡尔曼滤波器和扩展卡尔曼滤波器,但到目前为止,我还没有找到一个我能够使用或适应的解决方案.我认为卡尔曼滤波器可能是我需要的方向.
现在我正在使用原始gps数据来设置我的位置,但这太不准确了,当设备静止在一个地方时,它可以移动甚至跳跃大约5-10米.
所以我的问题是:当我现在使用原始未经过滤的gps数据来获取位置时,我将如何过滤它(kalman?扩展卡尔曼?)以及我需要使用哪些传感器(gps位置?gps速度?加速度计?)以获得最准确的位置行人户外位置.
更新:我需要更新我的问题,因为我不能做我最初的问题,在平板电脑/手机GPS上获得1米以下的精确度.我现在的问题是:我如何应用过滤,以便后续的GPS位置测量保持在可控制的距离内.例如,当我用我的设备向北10米时,我的gps也测量到我从我的初始位置向北10米+/- 1米(10%)而不是gps测量的跳跃/移动.
我想知道当前的汽车速度,并通过一条路.我有一部带加速计和陀螺仪的Android手机,它给我发了数据.这是坐标电话系统中的数据可能与汽车的坐标系统不一样.
如何将这种加速度和旋转转换为坐标系的汽车系统?
我想通过移动iPhone在iPhone屏幕上移动对象(矩形,圆形等).例如,我沿着X轴移动iPhone,对象沿着X轴移动.Y轴,Z轴相同.
我怎样才能做到这一点?我可以获得算法吗?
谢谢.
PS:我看了一会儿,似乎有可能使用加速度计.