そのため、上記のiOS4.3で加速度計とジャイロスコープを使用してさまざまな動きのジェスチャを検出する必要があるコードを記述しています。
Q1:動き/ジェスチャ検出を実現した既存のオープンソースコードはありますか?
そうでない場合
Q2:今のところ、iPhoneがドロップされているかどうかを検出したいと思います。
私がこれまでに達成したこと: CoreMotion APIはuserAccelerationを提供します。これは、ユーザーがデバイスに与える加速度、または重力を考慮せずにデバイスをある方向(x、y、z)に加速度することです。たとえば、加速パラメータの以前の5〜6の値を保存し、それらのいずれかが大きな負の値に達する場所を確認できます。これは、基本的に突然の減速を表します。
しかし、この解決策はあまり最適ではありません。デバイスの自由落下/下向きの動きを最初に検出する必要があると思います。この問題にどのように取り組むかについて何か考えはありますか?
更新: あなたのアプローチを共有してくれたMischに感謝します。総加速については全く考えていませんでした。私はあなたが言ったことを正確に行いました:
「しかし、あなたは自分自身をテストしなければならないでしょう、それはあなたの場合、「総加速度は地球の加速度にほぼ対応する」そして「しばらくの間」を意味します。」
加速度の値は実際にはGであるため、0.9〜1.1の範囲で「合計加速度」の値をテストしました。そして、しばらくの間それらをチェックしました。最初は、updateIntervalが1/20.0に設定されているときに4つの連続した値をチェックしました。今のところ、連続性の状態を少し緩和しました。
出力例は次のとおりです。
Acceleration = 0.090868
Acceleration = 0.074473
Acceleration = 0.159797
Acceleration = 1.157513
Acceleration = 1.224588
Acceleration
= 1.036272
Acceleration = 0.914698
Acceleration = 0.904093
Acceleration = 0.941516
Acceleration = 0.046362
Acceleration = 0.060045
私はまだ値をテストして調整し続ける必要があると思います。最適化を念頭に置いている場合は、共有してください。自由落下加速度値の多くのサンプルを確認する必要があることを支援するために、私は知っています。今のところ私は考えています:
- 加速度の値を小数点以下3桁に四捨五入し、使用している加速度範囲で遊んでください。
- 自由落下条件が満たされた後、総加速度値が突然低下するかどうかを確認できます。
- 私が引用した加速値は少しうるさいと思いますか?