質問

コアモーションやジャイロスコープの回転レートプロパティだけを使用することは、デバイスが回転したのかを抽出することが可能ですか?

私は、例えば、1秒間に5回サンプリングするように、コアモーションデータのタイミングサンプリングを試みたので、各読みの間に0.2秒があることがわかります。それから、私が1秒あたり0.5ラジアンの回転レートを持っている場合、理論的にはこれを5つずつ分けることができ、最後の時からデバイスが回転したデバイスは今や発言することができます。

これは論理的なようですが、結果は現実とは関係ありません。装置を90度回転させると、装置がそれより100倍の回転したことを私に言う結果を生み出します。

は、回転レートを見るだけでデバイスの回転数を抽出することができますか?

私は何が足りないの?

役に立ちましたか?

解決

Need more space than a comment ;-) iOS retrieves all data in radians and if your other calculations are correct, I thought it might be the angle measured in radians.

In general your approach seems to be alright: Take every signal's angle velocity, multiply it with time delta and you will have the angle delta for this timeframe. Then sum all your angles and the result should be the covered distance as angle in radians. Angle phi is the integral of angle velocity omega over the elapsed time and doing numerical integration with the trapezoidal rule (i.e. like described) is OK for gyroscope's data (not for accelerometer).

In general I would recommend to use the timestamp delivered by core motion instead of the defined period (1/5) as recommended by Apple, because device motion data is often delivered in a lower frequency than expected (see What is the official iPhone 4 maximum gyroscope data update frequency and or Push method for core motion and frequency of Accelerometer/Gyroscope Data.

Furthermore you should take a higher frequency to avoid errors in your numerical integration.

[Update from comments section:]

If your are interested in integrating via extended Simpson's Rule I recommend this paper (German only, p. 173 ff.) and An Extension to Newton-Cotes Formulae. Some sample code as extracted snippet taken from an existing project can be found here: DevicePosition.m Note that it might not compile, no warranty, as is, ... you know this from other sites ;-)

A free app displaying sensor input as graphs for iPhone: Sensor Monitor

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top