是否有使用加速度计和陀螺仪传感器数据计算线性距离的方法,因为加速度的二重积分似乎会产生很大的漂移。注意:使用相机/GPS的图像处理技术似乎对电池的负荷很大。 最佳答案 由于您希望计算线性距离,因此不应读取原始加速度计数据。在API9中,android引入了Sensor.TYPE_LINEAR_ACCELERATION,这只不过是从原始加速度计值中扣除的重力分量。如果您自己在寻找原始数据中的线性分量的计算中存在哪怕一度的误差,漂移就会迅速增加。查看来自Google的体验:SensorFusion.问题与Calculatingdista
我的问题可能非常简单,但也可能是我完全错了-因此我决定问一下。最后,我将借助陀螺仪传感器的数据计算手机的方向。我知道我应该使用卡尔曼滤波器或互补滤波器之类的东西来应对陀螺漂移。我将在第二步执行此操作,但我在这里提出的问题对于两种方法都是相同的。所以,真正的问题是:从陀螺仪我只能得到角度变化(积分后)。所以我需要的是一些初始值,我可以将当前测量的变化添加到。但是我如何获得这个起点呢?我是否使用加速度计和磁力计来确定手机的方向?或者这还有什么更好的办法吗?如果重要的话,我为此使用Android并有一个实现来借助加速度计和磁力计来确定手机的方向,但它非常不准确。
我想对来自Android手机的加速度计数据进行fft。我选择了jtransform作为fft库。现在我需要一些简单的代码来理解jtranform以编写代码以从加速度计数据中查找fft。提前致谢 最佳答案 由于您拥有真实数据,您应该将这些值传递给realForward函数,如here所述.当您将值数组传递给此函数时,它会通过用FFT系数覆盖此数组来返回结果。array=newdouble[arraySize];...DoubleFFT_1Ddfft=newDoubleFFT_1D(arraySize);dfft.realForward
一周前,我对Android运动传感器一无所知。在了解了称为虚拟现实的神奇事物后,我开始搜索使用哪些传感器来获得这些结果。我有一个APP的想法,但我仍然不知道在以下情况下我应该使用哪些传感器:我必须自己引用手机方向。我的意思是,我应该能够逐步隔离每个轴。类似的东西:在这种情况下,使用陀螺仪,我认为这种变化是在Z轴上。对于这种情况,我只使用陀螺仪得到了很好的结果,但在重复几次之后,我遇到了陀螺仪传感器的一个著名问题:漂移。完成本教程后:http://www.thousand-thoughts.com/articles/#articles事情在我脑海中变得更加清晰,但我仍然遇到真实运动之间的
我正在尝试使用Android设备上的加速度计计算位移(Sensor.TYPE_LINEAR_ACCELERATION)。这是我的OnSensorChanged()方法:publicvoidonSensorChanged(SensorEventevent){accelX=event.values[0];accelY=event.values[1];accelZ=event.values[2];longcurrentTime=System.currentTimeMillis()/1000;if(prevTime==0)prevTime=currentTime;longinterval=cu
我正在编写一款游戏,让玩家倾斜手机来控制角色。问题是:音乐(大声播放时)和声音效果(如枪声)会干扰加速度计值。这会导致奇怪的角色移动。请给我一些关于如何解决这个问题的建议。提前致谢! 最佳答案 也许您需要调整应用对加速计数据的敏感度?听起来你甚至让最轻微的Action引起角色Action。您能否提高“噪音”阈值,使它们只需要稍微倾斜一点就能让角色移动,但又不让声音振动调整Action?换句话说,如果加速度计相对于静止位置的变化/最后有效加速度计读数的增量大于某个阈值,则接受新的加速度计读数。
我正在尝试在Android上编写一个应用程序,它需要使用仅加速度计来检测android当前是否在汽车中。基本上,该应用程序应该检测持有它的人是在走路还是在车里。对于步行,我只是检测到加速度计读数中的尖峰,但我无法找到汽车的任何特征。我究竟应该如何解决这个问题? 最佳答案 首先,所提出的问题是无法解决的——一部手机完全静止不动地停在一辆停着的车里(或者,就此而言,一部以恒定速度运行的手机)与坐在table上的手机完全没有区别,如果你限制自己加速度计读数。对于启发式方法,我只是去记录样本,然后在其上磨练检测算法。我假设(城市)交通的特征
所以我只是想让一个球在屏幕上弹跳,它应该由于重力而减速并像普通球一样从墙上反射(弹跳)。有人可以提供一些基础知识和非常简单的实现吗?其他例子似乎有点“过头了”,似乎超出了我想做的范围。我试过这个:publicvoidupdateLogic(){if(x1){xPos-=(x*gravity);}if(y>1){yPos+=(y*gravity);}elseif(y这是我自己得到的最接近的。顺便说一句,x和y值来自加速度计。任何帮助将不胜感激,谢谢! 最佳答案 我认为为此您需要3样东西,力(您拥有的x和y)、速度(称它们为xVel和y
我正在为我的应用程序开发简单的摇一摇功能,但我遇到了一个奇怪的问题。当我在我的Honor5x上测试它时,它就像一个魅力,但当我试图在三星S5上执行它时,它太敏感了。加速度计在不同设备上的工作方式是否可能不同?如果是这样,是否可以根据设备/加速度计精度修改条件?这是我检测摇动事件的代码:gravity[0]=alpha*gravity[0]+(1-alpha)*event.values[0];gravity[1]=alpha*gravity[1]+(1-alpha)*event.values[1];floataccX=event.values[0]-gravity[0];floatacc
我正在尝试获取手机的倾斜角度,并且我的这项Activity在我的LGOptimusS上完美运行,上面有2.3,但在我运行ICS4.0.2的库存VerizonGalaxyNexus上,TYPE_MAGNETIC_FIELD事件从不火灾。因为TYPE_MAGNETIC_FIELD事件从不触发,所以我没有获得传递到SensorManager.getRotationMatrix所需的mGravs数组。所以我无法分辨手机的角度。正如我提到的,这段代码在我的其他设备上运行良好,我可以毫无问题地看到手机的倾斜角度。有人知道为什么我不能用我的GalaxyNexus参加这个Activity吗?是否对SD