問題タブ [imu]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
845 参照

3d - Madgwick IMU アルゴリズム、360 度の自由変数を取得する方法は?

私は私IMUのプロジェクトでさまざまな方法を実装しており、現在、有名なMadgwickによるMayhonyのAHRSアルゴリズムの実装(MahonyAHRS.c)を試しています。

これまでのところ、ベクトルの回転と実行中の平均センサーフュージョン (補完と呼ばれることが多い) に基づいた自己実装のものと同じくらいうまく機能します。

ただし、360 度の自由度を取得したいと考えており、現在この機能を使用しています。

ただし、その結果、90 度の問題が発生します。私が望むのは、ピッチとロールを 0 ~ 359 度の形で受け取ることです。

0 投票する
1 に答える
1353 参照

matlab - 3 軸 IMU 重力補正

3 軸 IMU からの加速度 (x、y、z) とロール、ピッチ、方向のデータがあります。ジャイロで計測した角度(r,p,h)をもとに加速度データを補正したい。たとえば、IMU が平らで静止している場合 (z 軸が上)、加速度は [ax,ay,az]=[0,0,-1] となります。IMU が平らで静止している場合 (x 軸が上)、加速度は [ax,ay,az]=[-1,0,0] を読み取ります。最後に、IMU が平らで静止している場合 (y 軸が上)、加速度は [ax,ay,az]=[0,-1,0] を読み取ります。

データは IMUが完全に平らで水平ではない状態で収集されたため、加速度データから g 成分を除去する必要があります。

以下は、g コンポーネントを削除する最初のパスです。データ ファイルのサイズが大きくなると、これは計算集約的であることがすでにわかっているため、使用できる別のアプローチは何ですか。

0 投票する
1 に答える
914 参照

linux - MPU9250 IMU 加速度センサーとジャイロのデータ形式

MPU9250データシートから、 の 6 つの出力チャネルのそれぞれが 2 バイトと 16 ビットの分解能を持っていることがわかります。16 ビットのバイナリ値について疑問に思っていましたが、それらは 2 の補数の形式ですか? または、センサーが静止している場合、たとえば x 軸に沿った加速度がゼロの場合、2 バイトの組み合わせ2^16/2で 、つまり、可能な最大数の半分が得られますか? (オフセットがないと仮定)

0 投票する
1 に答える
632 参照

arduino - MPU9250 が WOM を使用して ESP8266 でリセット ループに陥る

私は、ESP8266 wifi チップと MPU9250 IMU の両方のスリープ オプションを試してきました。ESP にはディープ スリープ コマンドがあり、ESP の GPIO16 または外部割り込みによって RESET ピンがローに引き下げられるまで、リアルタイム クロックとは別にチップをシャットダウンします。

MPU9250 は、この割り込みを WOM (Wake On Motion) 機能の形で提供します。これにより、内蔵の加速度計でモーションが検出されるまで、チップの機能が最小限に抑えられます。モーションが検出されると、その INT ピンがハイに引き上げられます (私はこれを取り付けました)。ピンを ESP の RESET ピンと GND の間の NMOS トランジスタのゲートに接続して、割り込みを反転します)。

ただし、セットアップして次のコードを使用すると、セットアップがリセット ループに入ります。両方の印刷ステートメントが実行されますが、ESP が実際に DeepSleep コマンドを実行する時間があるかどうかはわかりません。これは、「Got here」が印刷されるとすぐにリセットされ、モーションを待機しないためです。

ただし、プログラムの実行中にNMOSからINT接続を切断して再接続すると、一時的に動作し、動きを検出するまでスリープ状態になり、その時点でリセットループが再び開始されます(移動後にMPU9250が完全に静止していても)。これは、WOM 機能が動作していることを意味しますが、何らかの原因で INT ピンが高くなってはならず、何が問題なのかわかりません。問題が何であるかを知っている人はいますか?コードだけで修正できるものですか?

メインコード (loop() は空です):

別のファイルで:

0 投票する
0 に答える
991 参照

arduino - MadgwickアルゴリズムとMPU9250センサーのドリフト?

私のプロジェクトでは、ロケットの正しい向きを決定する方法が必要です。

ここからMadgwickフィルターのコードを取得しました

データを収集するために、Arduino Nano + MPU9250センサーを使用しました。このセットアップは、シリアル経由で 12 ミリ秒ごとにパケットを PC に送信します。

一連の測定値によって作成された、軸の原点と球の中心を「整列」するバイアスを計算することにより、磁力計を較正しました。

次に、blender: 3D 軸で座標軸を描画 し、そのためのスクリプトをコーディングしました。シリアルから値を読み取り、フィルターにフィードしてから、四元数回転モードを使用して軸オブジェクトを回転させるだけです。

X 軸の向きを少し間違えたので、ボードを時計回りに回転させると、画面上の軸が反時計回りに回転します。すべての X コンポーネントの符号を反転したところ、問題なく動作しました。

この画像によると、MPU i の軸は、X 軸と Y 軸、および Z 軸の符号を反転させて、磁力計の軸をジャイロスコープ + 加速度計に合わせました。

そして、それは1つの小さな例外を除いてほとんど機能します-「安定化」の後、つまりX軸を下に傾けると(またはY軸は関係ありません)、この軸はグローバルXY平面に向かってドリフトし始めます。軸を上に傾けると、残りの軸はグローバル OZ 軸の周りをドリフトし始めます。このように、 X 軸は下向き、 X 軸は上向きになります。

そのドリフトの速度は、Madgwick フィルターのベータに依存します。ベータが多いほど、ドリフトが大きくなります。

そこで何ができるでしょうか?

0 投票する
1 に答える
1258 参照

android - デバイスの加速度計を使用して、動きの増加と突然の停止を検出するにはどうすればよいですか?

2 台の電話を互いにぶつけたときに発生するモーションを検出しようとしています。

私の質問は、加速度計はこれに適したセンサーですか?

もしそうなら、どのように実装しますか?

それ以外の場合、どのセンサーを使用し、どのように使用すればよいですか?

https://developer.android.com/guide/topics/sensors/sensors_overviewのガイドによると、TYPE_LINEAR_ACCELERATION使用するのに適しているようですが、使用方法がわかりません。