質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
IoT

IoT(Internet of Things)とは、インターネットがコンピュータなどの情報・通信機器のネットワークだけでなく、世の中のある様々なモノに接続されて自動認識・自動制御・遠隔計測などの能力を備えることです。「モノのインターネット」と一般的にいわれます。

Q&A

解決済

1回答

1587閲覧

加速度センサーの値から重力加速度を抽出する方法

radicalfree

総合スコア8

IoT

IoT(Internet of Things)とは、インターネットがコンピュータなどの情報・通信機器のネットワークだけでなく、世の中のある様々なモノに接続されて自動認識・自動制御・遠隔計測などの能力を備えることです。「モノのインターネット」と一般的にいわれます。

0グッド

0クリップ

投稿2021/06/01 08:55

加速度センサーの値から位置を得ようとしており、
先ずはローパスフィルタを使って重力加速度を求めようとしています。

色々なサイトを見たのですが、
どうやら、以下の式で求められることがわかってきました。

今回補正値(重力加速度)=0.1*前回補正値+(1-0.1)*センサー値

参考にしたサイトの例
https://developer.android.com/reference/android/hardware/SensorEvent
https://tomoima525.hatenablog.com/entry/2014/01/13/152559

実際に静止状態のときのセンサー値を使って、
この式で計算した結果が、本当に重力加速度を抽出できているのかどうかか自信がありません。

というのも、重力加速度はXYZの3軸に分散されていると思われるので、
逆に、XYZ各軸の上記の補正値を足すと、+/-1023とか0になるものと思っていたところ、
結果が、+/-1023にも0にもならなかったからです。

そもそもXYZ軸の合計が重力加速度ということに誤りがあるのか、
計算式に誤りがあるのか、どなたか教えていただけると助かります。

以下は、計測開始後2秒間のセンサー値です。

time-x x time-y y time-z z 0 -24 0 68 0 -1084 0.013 -32 0.009 64 0.012 -1076 0.016 -32 0.014 72 0.014 -1076 0.02 -28 0.016 72 0.018 -1084 0.085 -28 0.083 64 0.083 -1080 0.136 -32 0.132 64 0.134 -1076 0.14 -16 0.136 68 0.149 -1076 0.211 -36 0.209 60 0.209 -1072 0.217 -32 0.219 64 0.227 -1080 0.295 -20 0.293 56 0.293 -1080 0.301 -24 0.309 68 0.31 -1076 0.369 -24 0.366 76 0.366 -1084 0.428 -32 0.426 64 0.426 -1084 0.432 -24 0.43 68 0.436 -1080 0.511 -24 0.508 64 0.508 -1092 0.514 -24 0.514 68 0.525 -1084 0.583 -28 0.581 64 0.581 -1084 0.644 -24 0.642 68 0.642 -1088 0.648 -32 0.644 60 0.65 -1088 0.711 -32 0.709 68 0.709 -1080 0.778 -32 0.776 64 0.776 -1084 0.782 -28 0.778 64 0.78 -1088 0.839 -32 0.844 64 0.844 -1084 0.854 -28 0.862 60 0.862 -1080 0.928 -28 0.926 68 0.926 -1080 0.986 -32 0.983 68 0.983 -1080 0.989 -16 0.985 68 0.993 -1084 1.062 -32 1.06 72 1.06 -1084 1.066 -32 1.065 60 1.124 -1084 1.129 -32 1.125 68 1.128 -1076 1.186 -40 1.184 64 1.184 -1080 1.196 -28 1.194 60 1.198 -1076 1.262 -36 1.26 64 1.26 -1076 1.329 -28 1.328 64 1.328 -1088 1.335 -20 1.331 64 1.333 -1080 1.397 -24 1.395 64 1.395 -1088 1.401 -24 1.401 64 1.409 -1084 1.47 -28 1.468 68 1.468 -1072 1.533 -32 1.531 68 1.531 -1080 1.538 -32 1.534 64 1.541 -1088 1.612 -20 1.61 64 1.61 -1076 1.617 -28 1.613 72 1.617 -1084 1.678 -24 1.675 72 1.675 -1080 1.738 -28 1.736 64 1.736 -1088 1.747 -28 1.745 60 1.749 -1084 1.811 -28 1.809 64 1.809 -1080 1.869 -24 1.868 64 1.868 -1080 1.881 -28 1.88 60 1.88 -1072 1.938 -32 1.941 68 1.941 -1080 1.95 -28 1.955 68 1.959 -1084

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

以下の式で求められることがわかってきました

いや、それは別に重力加速度とかそういうことではなく、ローパスフィルタ(平均ともいう)を掛けているだけでしょう。加速度センサを動かしていないか、あるいは等加速度運動を続けているならノイズが減って常にかかっている加速度だけが残ってくるでしょうけれど。センサを動かしていなければ、残るのは重力によるものだけ、ですね。

XYZ各軸の上記の補正値を足す

ベクトル演算で足してください。1023がどこから出てくるのかわかりませんが、センサの感度によるスケーリングもありますから、ローパスを通してベクトル和を取って、そのベクトルの大きさ(3軸が直交しているのですからsqrt(x^2+y^2+z^2))が1G=9.8m/s^2の加速度に相当する、ということになるのでしょう。

投稿2021/06/01 11:58

thkana

総合スコア7610

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

radicalfree

2021/06/02 07:17

ありがとうございました。 ベクトル和で計算するんですね。 1023というのは、重力加速度1Gをミリ単位に落としたもので、 センサーを水平に置いたときには、 Z軸の値としては-1023になるそうです。 教えていただいたベクトル和で計算したところ、 ピッタリ1023ではありませんでしたが、 平均で999~1053の範囲なので、 誤差かノイズはありつつ、 まあ重力加速度っぽい信号を抽出できたようです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問