移動中の車の加速度を計算しようとしているiPhoneアプリに取り組んでいます。同様のアプリがこれを達成しましたが(Dynolicious)、違いは、このアプリがドラッグストリップではなく、一般的な市街地走行中に使用されるように設計されていることです。
これは、Dynoliciousが幸運にも回避できたという1つの大きな懸念につながります。それは丘です。はい、丘。
これには、キャリブレーションと実際の運転という2つの重要な段階があります。
私たちの最初の実行は単純で、結果に苦しみました。キャリブレーション段階では、電話の平均力を取得し、実行中は、現在の力から平均力を差し引いて、このフレームの現在の加速度を取得しました。これに伴う問題は、典型的な車が前進する力よりもはるかに多くの力を受けることです-曲がるところから穴に至るまでのすべてが、実際に起こっていることと値が同期しなくなる原因になりました。
次の実行は、画面が車の後ろを向くようにiPhoneを向ける必要があるという条件を追加することでした。この方法を使って、z軸の力だけを追跡しようとしましたが、重力のためにiPhoneを真っ直ぐに向けない限り、明らかに問題が発生します。
後で三角法を使って、重力を方程式から外すことができたので、車は実際にiPhoneで非常によく読み取られていました。
坂にぶつかるまで。車の角度が変わるとすぐに、意味のない加速と減速が発生し、再び同期がとれなくなりました。
数学で私よりもはるかに賢い人と話すことは、私が認めたいよりも長い間実装しようとしてきた解決策につながります。手順は次のとおりです。
1)キャリブレーション中に、重力をサイズではなくベクトルとして測定します。そのベクトルを保存します。2)車が最初に前進するとき、動きのベクトルを取り、重力を引きます。これを前進の勢いとして使用します。(今のところ、これが難しいユーザーの場合は無視して、数学に集中しましょう:) 3)前方ベクトルと重力ベクトルから、平面を作成します。4)力を受けるときはいつでも、横方向の力などを取り除くために、それを前記平面に投影します。5)次に、その力、既知の重力の大きさ、および既知の前進運動の方向を使用して、基本的に三角形を解き、前進ベクトルを取得します。
この新しいシステムで最も困難を引き起こしている問題は、ステップ5ではありません。これは、すべての数値が適切に見えるようになっています。難しいのは、実際には順方向ベクトルの検出です。重力を超える大きさのベクトルを選び、そこから平均して重力を引いています。(iPhoneの加速度計が少しずれているという理由だけで、力を使用していないことを確認するためにエラーチェックを行っています。これは私が望むよりも頻繁に発生します)。しかし、私が使用しているこれらのベクトルをプロットすると、実際には約20〜30度の角度で変化するため、いくつかの強い不正確さが生じる可能性があります。その結果、アプリは以前よりもさらに不正確になります。
つまり、基本的に-数学とiPhoneの頭脳はすべて-明白なエラーはありますか?潜在的に優れたソリューションはありますか?何か役に立つ経験はありますか?
賞:解決策につながる最初の回答に250ドルの報奨金を提供します。