The*_*ian 11 iphone physics objective-c accelerometer
我正在开发一款iPhone应用程序,我们正在尝试计算移动汽车的加速度.类似的应用程序已经实现了这一点(Dynolicious),但不同之处在于此应用程序旨在用于一般城市驾驶,而不是拖动条.
这引起了我们一个大关注,Dynolicious幸运地能够避免:丘陵.是的,丘陵.
这有两个重要阶段:校准和实际驾驶.
我们的初步运作很简单并且遭受了后果.在校准阶段,我在手机上取平均力,在跑步过程中,我只是从当前力中减去平均力,以获得此帧的当前加速度.问题在于,典型的汽车比前进力量获得更多的力量 - 从转向坑洼的一切都导致价值与实际发生的事情不同步.
下一步是为了增加iPhone必须以屏幕朝向汽车后部的方式定向的条件.使用这种方法,我试图只跟随z轴上的力,但这显然会导致问题,除非iPhone由于重力直接定向.
之后的一些三角函数,我已经成功地将重力运转到了等式之外,因此iPhone实际上正在非常非常好地读取汽车.
直到我遇到一个斜坡.一旦汽车的角度发生变化,我突然接到了没有意义的加速和减速,我们又一次失去了同步.
在数学上和我比很聪明的人交谈导致我试图实施的解决方案比我想承认的更长.它的步骤如下:
1)在校准过程中,将重力测量为矢量而不是尺寸.存储该矢量.2)当汽车最初向前移动时,采取运动矢量并减去重力.将此作为前进动力.(暂时忽略那些困难的用户案例,让我们专注于数学运算:) 3)从前向矢量和重力矢量构建一个平面.4)每当收到一个力时,将其投射到所述平面上以消除侧向力/等.5)然后,使用该力,已知的重力大小和已知的向前运动方向来基本上求解三角形以获得前向矢量.
在这个新系统中造成最大困难的问题不是第5步,我已经达到了所有数字看起来应该如此的程度.困难的部分实际上是前向矢量的检测.我正在选择幅度超过重力的矢量,并从那里平均它们并减去重力.(我正在做一些错误检查以确保我没有使用强制因为iPhone加速度计稍微关闭,这种情况比我想要的更频繁).但是,如果我绘制我正在使用的这些矢量,它们实际上会以大约20-30度的角度变化,这可能会导致一些强烈的不准确性.最终结果是应用程序现在比以前更加不准确.
所以基本上 - 你所有的数学和iPhone都在那里 - 任何明显的错误?还有更好的解决方案吗 任何可能有用的经验?
奖励:为第一个答案提供250美元的奖金,从而获得解决方案.
sig*_*fpe 10
你需要一个陀螺仪.否则,山坡上的加速汽车有多种配置,可以在加速度计上产生完全相同的读数.他们将完全无法区分.这就是惯性导航系统结合陀螺仪和加速度计的原因.
你不能这样做的原因是爱因斯坦给出的!使用局部测量,您无法区分重力和加速度.你确实有一些有用的非本地信息 - 假设这里的引力和那里几码的引力具有相同的值.但是你无法比较两个不同位置的重力,而无法进行所谓的"平行运输".这就是陀螺仪的功能.
忘记250美元,但我认为你应该给我一杯啤酒,以节省你的研发时间.:-)
| 归档时间: |
|
| 查看次数: |
10069 次 |
| 最近记录: |