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

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

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

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

mbed

mbed(エンベッド)は、Webサイト上でC++を使って開発を行う、ワンボードマイコンのプロトタイピングツールです。PCに開発環境をインストールする必要がなく、Webにアクセスできればどこにいても開発を行うことができます。

Q&A

3回答

8931閲覧

Cでジャイロの値から角度を算出する。

Amey

総合スコア17

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

mbed

mbed(エンベッド)は、Webサイト上でC++を使って開発を行う、ワンボードマイコンのプロトタイピングツールです。PCに開発環境をインストールする必要がなく、Webにアクセスできればどこにいても開発を行うことができます。

0グッド

0クリップ

投稿2015/12/17 02:54

be_gyr_x → ひとつ前のジャイロの値
ne_gyr_x → 今のジャイロの値

//ジャイロの値での角度算出
ang_gyr_x = ang_gyr_x +((be_gyr_x + ne_gyr_x)/2)*(deltat/1000.0);
be_gyr_x = ne_gyr_x;

//弧度法から度数法へ変換
gyr_kakudo = ang_gyr_x * 180 / M_PI;

というような式を用いて角速度から角度を算出しようとしているのですが完全に見当違いな値が出てしまいます。何か原因があれば教えてほしいです。

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

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

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

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

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

yuba

2015/12/17 03:50

ジャイロというからには三次元の姿勢を測定しているのだと思うのですが、「ジャイロの値」という一個だけの変数にはどんな単位の、何の値が入っているのでしょうか。 そして「角度」というのは何から何までの角度のことでしょうか。前回と今回の向きの差分ということ?
Amey

2015/12/17 04:18

できれば現在の角度を度数法で表記できるようにしたいです。 ジャイロの値というのはスマートフォンのジャイロセンサーからX軸についての値飲みを取り出したものです。単位はr/sです。
guest

回答3

0

  • センサーの精度はどうですか?オフセットはありますか?
  • センサーの取得間隔に対して、動きが速すぎませんか?

積分時の誤差が大きくなります

  • 「x軸」は本当にx軸ですか?

Android端末ならx軸は端末の右方向軸の回転です。

  • x軸以外の回転が混ざっていませんか?

回転なので、x軸以外の成分が入ると単純に積分した結果は使い物になりません。
極端ですが、ジャイロセンサのx軸の値を0に保ったまま、
開始状態からx軸周りに90度回したのと同じ姿勢にすることは可能です。

投稿2015/12/17 09:24

編集2015/12/17 09:30
ozwk

総合スコア13551

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

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

0

こんにちは。

ジャイロの値というのはスマートフォンのジャイロセンサーからX軸についての値飲みを取り出したものです。単位はr/sです。

単位はラジアン/秒ですね?
もし、deltatが「ジャイロの値」の読み取り間隔で単位がmSecであれは、間違った式ではないように感じます。
deltatはその通りですか? また、常に一定間隔でしょうか?

次にジャイロの値を「度/秒」へ変換してリアルタイム表示してみては如何でしょうか?
対象を動かした時の「ジャイロの値」がAmeyさんの理解と一致しているかどうか確認されてみると良いような気がします。

投稿2015/12/17 07:45

Chironian

総合スコア23272

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

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

0

「見当違いな値」がどのように見当違いなのかによりますが、式に一点だけ直す点を述べるとすれば、角度は 0 <= rad < 2π であるはずなので mod を取る必要があるってことですかね(それだけだと「見当違い」とはならなそうな気がしますが。

あとはChironianさんのおしゃっる通り、deltatに入っている数字の妥当性と各変数のデバッグ出力からの検討ですね。

投稿2015/12/17 09:04

yuba

総合スコア5570

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問