//
表示中
モノづくり, Computer - コンピューター, Electronics - 電子工作

mbedでMPU-6050から角度を得る


MPU-6050から読み込んだ生のデータ(加速度と角速度)から角度を得る計算を幾つか試しています。mbedコミュニティーの皆さんが様々なコードを公開してくれていて、それらのいくつかを読んで自分のプログラムに応用するということを数時間。

角度の求める計算は四元数(Quaternion)からオイラー角(Euler Angles)を求めるもので、計算式は”Euler Angles from Quaternion”でネット検索するとたくさん出てきます。姿勢制御に使われる計算なので、NASAとかロボット工学をやっているところなどのリンクがヒットします。数学の知識が足りないと苦労します。苦労してます。

最終的に使いたいのはピッチとロールの角度ですので、参考にしたプログラムから不要な部分をごっそり落とし、ある部分は継接ぎして、ピッチとロールだけを計算するようにしました。

モニターの左側の数字がピッチ、右側の数字がロールです。

ブレッドボードの長い方の回転がロール、短い方の回転がピッチです。

ほぼ水平にブレッドボードを置いた状態。

2016-04-25 11.46.34

ブレッドボードの短い方向を少し傾けた状態。20度ほどの角度が検出されています。

2016-04-25 11.46.38

ブレッドボードの短い方向をほぼ直角に傾けた状態。90度前後の角度が検出されています。

2016-04-25 11.47.02

それらしい数値が出ています。

main()関数の中の無限ループの中でセンシングした生データを積算しておいて、Timerを使って一定時間が経過したら積算したデータから角度を計算するというロジックになっていますが、Timerの扱いが不味くて、長い時間動かしていると角度計算ができなくなります。

プロトタイプをちょっと動かす程度ならこれでもいいかもしれませんが、まだ計算ロジックの理解が不十分なので、もう少し理解を深めて自分のものにしてから、ロジックを練り直す必要があります。あるいは他にも方法を試してみることにもなるかもしれません。

 

 

kazz12211 について

Working as a OO programmer and enjoying music, bicycle and photography.

ディスカッション

コメントはまだありません。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

手仕事日記

評価

ブログ統計

  • 516,741 ヒット

カテゴリー

アーカイブ

カレンダー

2016年4月
« 3月   5月 »
 12
3456789
10111213141516
17181920212223
24252627282930
%d人のブロガーが「いいね」をつけました。