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

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

ただいまの
回答率

90.99%

  • Android

    5858questions

    Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

  • SDK

    108questions

    SDK(software development kit)は特定のハードウェアのプラットフォーム、開発環境又はソフトウェアパッケージでソフトウェアをつくるのに必要な開発ツールのセットです。SDKはAPI、IDE又は他の開発ツールとフレームワークを組み合わせたもので構成されていることがあります。

AndroidSDKの加速度・角速度・地磁気センサ周りはどのように実装されているのでしょうか

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 269

takano20771

score 32

現在Androidにおいて,IMUセンサ周りがどのように実装されているのかを調べています.

開発するアプリケーション側でIMUセンサから得られるデータは,オフセット除去やフィルタリング等,どの程度行われているのでしょうか.
オフセット除去やフィルタリング等が行われている場合,その仕様や実装を見ることは可能でしょうか.

また,とあるAndroidのセンサ値を取得できるソフトで,加速度・角速度・地磁気の他,Orientationという項目があったのですが,OrientationはSDK側で計算した物を取得可能な物なのでしょうか.

以下追記です

やっていることとしては,Androidに関係なく,IMUセンサチップを使った姿勢推定です.マイコン環境ですので,そもそもの開発環境・開発言語も異なる状態です.
身近なところで,Androidに同様の技術が使われておりますので,センサ値のフィルタリング,姿勢推定アルゴリズムの実装の参考にさせて頂きたかった次第です.
ですので,このようなセンサ値を出力するアプリでは,生のデータしか取得できない物をアプリ側で整形しているのか,それとも,既にSDK側で整形されているデータを表示しているのかを知りたいです.

説明が不十分で申し訳ありません.

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • ozwk

    2017/10/13 15:25

    「異なる環境で,IMUセンサを使っており」どういう環境?機種が違うって話?Android全然関係なくIMUセンサー使うって話?「どの程度参考にできるものか」何を何のために参考にするの?

    キャンセル

回答 2

checkベストアンサー

+1

Androidは全然詳しくないですが、
追記部分を読むに、要するにIMUで姿勢推定するアルゴリズムが知りたいのかと思うので、
過去にやった記憶を書きます。
(身もふたもないことを言えば使うセンサの性能と欲しい精度、用途によってしまうんですが)

まずキャリブレーションです。
安いセンサーだと軸がずれてたりスケールずれてたりオフセットついてたりするので
測定してセンサごとに決め打ちで補正します。
ただ、磁気センサに関してはオフセットその他がかなり変動しやすいので、
ユーザー操作によるキャリブレーション機能を付けたほうが無難です。
磁気センサのキャリブレーションアルゴリズムは計算リソースに合わせて選んでください。
一番雑なものはセンサを回して各軸の最大値と最小値の平均をオフセットとする方法です。
もう少し真面目にやると、得られた磁気センサの分布から何点かとって楕円体をフィッティングします。
大掛かりになると他のセンサの情報も使って推定します。

次にフィルタですが、
使うセンサの静止時の出力を観察して、
スパイクがあるようならメディアンフィルタをつければいいと思います。

最後に、姿勢推定は必要な精度に応じて色々実装方法があります。
完全に静止していると仮定できるならその時の加速度センサと地磁気センサの値から計算しますし
もう少し真面目にやるなら平滑フィルタつけます。

ちなみにアルゴリズムの比較の際は
センサの時系列データをPCに保存してMatlabか何かでやったほうが比較がしやすくて楽でした。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/10/13 23:04

    ご回答ありがとうございます.
    今まさに楕円体へのフィッティングをやっております.
    楕円体へのフィッティングをするには,6元2次方程式を解く必要があると思います.
    現在,式変換(差分をとり,変数の二乗の項を除去)を行い,5元1次方程式に帰着させているのですが,
    精度良くフィッティングをするためには,どのような手法をとるのが良いのでしょうか.
    ガウスの消去法を適用し,代数的に解いてみたのですが,あまり精度が良くないような傾向です.
    Newton法や二分法,最急降下法などを用いて解析的に求めるべきなのでしょうか.

    キャンセル

  • 2017/10/13 23:18

    最小二乗法ですね

    キャンセル

  • 2017/10/13 23:48

    ありがとうございます!

    キャンセル

0

Androidの実装はオープンソースですので、検索すれば出てくるかと思います。
https://qiita.com/okey01/items/89e575fc8e8ebab0e2bc

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/10/13 15:20

    すみません.質問の意図を書くべきでした・・・・
    異なる環境で,IMUセンサを使っており,その関係でAndroidのIMUセンサ周りの実装が気になったのですが,あいにくJavaもAndroidも開発経験が無く,学習コストがかなり掛かってしまう状況でしたので,どの程度参考にできるものか聞いて見たく,質問させて頂きました.

    キャンセル

  • 2017/10/13 15:25

    その意図は質問文に追記したほうが詳しい人が答えてくれると思いますよ。

    キャンセル

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

  • ただいまの回答率 90.99%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Android

    5858questions

    Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

  • SDK

    108questions

    SDK(software development kit)は特定のハードウェアのプラットフォーム、開発環境又はソフトウェアパッケージでソフトウェアをつくるのに必要な開発ツールのセットです。SDKはAPI、IDE又は他の開発ツールとフレームワークを組み合わせたもので構成されていることがあります。