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

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

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

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

SDK

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

Q&A

解決済

2回答

4624閲覧

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

退会済みユーザー

退会済みユーザー

総合スコア0

Android

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

SDK

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

0グッド

1クリップ

投稿2017/10/13 06:00

編集2017/10/13 06:34

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

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

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

以下追記です

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

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

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

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

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

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

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

ozwk

2017/10/13 06:25

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

回答2

0

ベストアンサー

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

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

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

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

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

投稿2017/10/13 08:11

ozwk

総合スコア13512

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

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

退会済みユーザー

退会済みユーザー

2017/10/13 14:04

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

2017/10/13 14:18

最小二乗法ですね
退会済みユーザー

退会済みユーザー

2017/10/13 14:48

ありがとうございます!
guest

0

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

投稿2017/10/13 06:08

masaya_ohashi

総合スコア9206

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

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

退会済みユーザー

退会済みユーザー

2017/10/13 06:20

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

2017/10/13 06:25

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問