我有一个xyz加速度计和磁力计.现在我想用两者来确定设备的方向.我看到的问题是,根据设备方向,我需要以不同的顺序使用传感器.
让我举个例子.如果我让设备面向我,则可以使用加速度计确定滚动和俯仰的变化.对于偏航,我使用磁力计.
但是如果我将设备水平放置(即将其旋转90º,面向天花板),则向上矢量(现在是水平)的任何变化都不会引起注意,因为加速度计没有检测到任何变化.现在可以使用磁力计检测到这一点.
所以问题是,如何确定何时使用其中一个.这对两个传感器来说足够了还是我还需要其他东西?
谢谢
我正在编写一个应用程序,我的目标是检测用户何时行走.我正在使用这样的卡尔曼滤波器:
float kFilteringFactor=0.6f;
gravity[0] = (accelerometer_values[0] * kFilteringFactor) + (gravity[0] * (1.0f - kFilteringFactor));
gravity[1] = (accelerometer_values[1] * kFilteringFactor) + (gravity[1] * (1.0f - kFilteringFactor));
gravity[2] = (accelerometer_values[2] * kFilteringFactor) + (gravity[2] * (1.0f - kFilteringFactor));
linear_acceleration[0] = (accelerometer_values[0] - gravity[0]);
linear_acceleration[1] = (accelerometer_values[1] - gravity[1]);
linear_acceleration[2] = (accelerometer_values[2] - gravity[2]);
float magnitude = 0.0f;
magnitude = (float)Math.sqrt(linear_acceleration[0]*linear_acceleration[0]+linear_acceleration[1]*linear_acceleration[1]+linear_acceleration[2]*linear_acceleration[2]);
magnitude = Math.abs(magnitude);
if(magnitude>0.2)
//walking
Run Code Online (Sandbox Code Playgroud)
数组gravity []初始化为0.
我可以检测用户何时行走(看加速度矢量幅度的值),但我的问题是,当用户不走路并且他移动电话时,他似乎正在走路.
我使用正确的过滤器吗?
是仅仅观察矢量的大小还是我要看单个值?
我想根据从Accelerometer接收的轴承或传感器值来旋转标记,以向用户显示他实际移动的位置.我已将标记图标和平面值设置为true,但它不能按要求工作.
mCurrentLocationMarker.position(new LatLng(
LocationUtils.sLatitude, LocationUtils.sLongitude));
mCurrentLocationMarker.icon(icon);
mCurrentLocationMarker.flat(true);
mCurrentLocationMarker.rotation(LocationUtils.sBearing);
if (currentMarker != null) {
currentMarker.setPosition(new LatLng(
LocationUtils.sLatitude,
LocationUtils.sLongitude));
} else {
currentMarker = mGoogleMap
.addMarker(mCurrentLocationMarker);
}
animateCameraTo(true);
Run Code Online (Sandbox Code Playgroud)
我用过这个
作为标记.
我不知道为什么它不按照用户的指示旋转.如果有任何人有任何想法,请在我犯错的地方帮助我.
LocationUtils.sBearing是我从onLocationChanged或accelerometer收到的Bearing的值.
基本上我想让我的标记与谷歌地图标记一样,向用户显示他们正在移动或转向的方向.
我正在开发一个Android应用程序,我想知道是否有可能检测到一个轴固定的运动方向.例如,我想把手机放在桌子上并在我移动它时检测方向(左,右,上和下).距离没有必要,我只想知道准确的方向.
我将开发Android应用程序,需要在3D空间上读取手机的x,y,z坐标.
我想在设备上编写一个简单的代码和测试..
我在设备和模拟器上都使用姜面包.
我写了一个简单的Activity,它是SensorEventListenerfor Sensor.TYPE_ACCELEROMETER.
在我的onSensorChanged(SensorEvent event)i中,只需选择X,Y,Z格式的值并将其写入文件.
除此之外还有X,Y,Z一个标签,该标签特定于我正在执行的活动.所以这是X,Y,Z,label
像这样,我获得了我的活动资料.希望对数据收集后要执行的操作提出建议,以便消除噪音并获取活动的最佳数据.
此数据收集的主要目的是使用神经网络库(NeuroPh for Android)Link构建用户活动检测应用程序.
Apple在iPhone SDK 3.0中宣布了Shake API.我找不到有关此新功能的任何信息.
谁知道如何使用它?任何例子,链接都会很好.
任何人都可以帮助从加速度计读数中删除g因子吗?
我正在使用SensorEventListener以及onSensorChanged()获取Sensor.TYPE_ACCELEROMETER数据的方法.我只需要在所有方向上的纯加速度值.因此,在任何状态下,如果设备稳定(或以恒定速度),它应该大致给出(0.0,0.0,0.0).
目前,根据其俯仰和滚动,它根据作用在每个轴上的g力给出可变输出.
我希望有一些公式可以删除它,因为我还从Sensor.TYPE_ORIENTATION监听器获取方向值(俯仰和滚动).我用了一些,但没用.
我想使用iPhone的加速度计来检测驾驶时的动作.我有点困惑加速度计实际测量的是什么,尤其是在驱动曲线时.

如图所示,驾驶曲线的汽车会产生两种力.一个是向心力,一个是速度.想象一下,iPhone被放置在仪表板上,+ y轴指向前方,+ x轴指向右侧,+ z轴指向顶部.
我的问题是现在当汽车驾驶这条曲线时将测量的加速度.它会测量-x轴上的g力还是g轴出现在+ y轴上?
谢谢你的帮助!
UPDATE!
对于感兴趣的人来说,正如其中一个答案所表明的那样.加速度计受离心力和速度的影响,产生加速度矢量,这是这两者的组合.

我首先开始考虑使用CoreLocation来跟踪速度以确定移动.这不起作用,因为我不想让电池干电,而在较低的设置下,速度和位置读数远非准确.然后我继续使用加速计来跟踪这样的运动:http: //blogs.oreilly.com/iphone/2008/06/iphone-as-pedometer.html
这种效果出奇的好,但它并不像我想的那么好.当你走路时拿着手机盯着它时,会出现一个大问题.在这种情况下,上述链接代码不起作用.如果它在你的口袋或手臂上,它是一个伟大的运动追踪器.
所以,尽管如此,有没有任何技术可以使用iOS加速度计(非M7)伪计步器,非数学智能可以访问?