私は実験的なプログラムをやっています。車のダッシュボードにサポート付きで固定されたスマートフォンがあり、旅行中にアプリケーションから慣性センサーから値を読み取りました。
正確には、各登録の加速度計データ時間 (一定間隔) を秒単位で読み取りました。
そこで、垂直加速度から垂直変位に移行したいと思います。これを行うには、二重積分を行う必要があります。
オイラー法をやってみました。次のような初期状態から:
v0=0.v0=0これは時間ゼロでの初期速度です。
x0=0.x0=0これは時間ゼロの初期位置です。
定義、
deltaT=registrationinterval.deltaT=registrationinterval(私の場合は0.04秒)
次に、登録が行われるたびに、次のことを行います。
vi=vi−1+ayi∗deltaT.vi=vi−1+ayi∗deltaT
xi=xi−1+vi∗deltaT.xi=xi−1+vi∗deltaT
ここでi、現在およびi-1前例を表します。
しかし、私が得たグラフはあまり現実的ではありません。実際には、速度と変位の両方が増加するだけであり、代わりに、垂直方向の変位が加速度グラフに似たものとして出てくるという効果が得られました。
この手順を適用すると、エラーも大きくなります。グラフが成長するだけで、垂直方向の振動が見られない可能性がありますか?
また、カルマンフィルターを事前に適用して信号をきれいにすることもできますが、解決策になる可能性がありますか?
それとも、積分の方法を変えて、ルンゲ・クッタからオイラーに切り替える必要がありますか? (ただし、最後に、どのように設定できるかについてはまったくわかりません)。
または誰かが私を助けることができるアルゴリズムを知っていますか?
役立つ場合は、登録されたデータの例を次に示します。