ドローンを中心としたメカトロ自作品の紹介

メカトロDIYチャレンジ(Mechatro DIY Challenge)

ジャイロセンサー

6軸IMU MPU6050概要

投稿日:

ドローンにおいて、姿勢を把握する機能は非常に重要です。
姿勢を把握できないと制御が出来ませんし、姿勢を制御できない飛行物体は当然マトモに飛べません。

そのような背景で、ドローンを自作する上では姿勢を把握するセンサーであるIMU(慣性計測装置・ジャイロセンサ)を扱えるとかなり自由度が広がります。

この記事ではドローンでの仕様事例も多いIMU、MPU6050について説明します。

①MPU6050の概要

MPU6050はTDKが製造しているIMUの一種で、6軸のデータ取得が可能です。

MPU6050 外観

6軸というのは具体的にはX,Y,Z軸方向の加速度と角速度です。

原理

MPU6050は分類的には振動型ジャイロスコープの一種です。ここでは詳細な説明は省略しますが、加速度や角速度等の慣性力を内部に搭載されたコンデンサの静電容量の変化を利用して検知しています(このように機械的要素を含む電子部品をMEMSと呼びます)。

機能

スケマチック

スケマチック(内部の模式図)はこんな感じです。
「センサ」という部分が6軸分の加速度・角速度を読み出す部分です。
センサで取得されたデータはレジスタに格納されます。
Arduino等のマイコンからはI2C通信で読み出すことが出来ます。

MPU6050 スケマチック

DMP

スケマチックの中に「DMP」というブロックがあります。
DMPは「Digital Motion Processor」の略称です。その名の通り演算装置で、書き込まれたプログラムに従って様々な処理が可能です。この機能はMPU6050の大きな特徴の一つで、これによってMPU6050は多くのジャイロではマイコン側に出なくては本来できないような処理が可能です。

詳細は書ききれませんが、特に主要な機能の一つが「角度の把握」です。
角度の把握は実はジャイロセンサーでは難しいことの一つです。
ジャイロセンサーは加速度と角速度を検知することが出来ますが、角度は一次データとして取得することが出来ません。
加速度がかかっていない状態であれば、X,Y軸回りの角度は加速度を逆三角関数の式に当てはめて比較的簡単に出力できますが、移動体ではそうもいかないです。
角度を把握する処理を自前で作りこむ場合、一般的には角速度を積分しつつ、定期的に加速度などのデータを用いて補正する(センサフュージョンという)という手法を取る必要があります。これを自力でプログラミングするのは結構大変です。プログラミングの知識と物理の知識の両方が必要になります。

一方でDMPの機能を使いこなせば、複雑なプログラムを自力で書かずに角度の把握が可能になります。

これだけ聞くといいところだらけに聞こえますが、DMPにも課題はあります。
仕様が詳細に公開されていないことと、DMPを使う事自体もそれなりに難しいのです。

そのため、ある程度知識がある人の中には、DMPの機能はあまり使わずに角度の計算は自前で構築するという人も一定数います。

INT機能

※INT機能は若干理解が怪しいので、今後理解が深まったら修正予定
MPU6050にはINT(Interrupt=割り込み)用のピンがあります。
このピンはDMPの計算結果を格納するFIFOバッファという記憶領域にデータが入ったなど、主にDMP関連の情報をマイコンに伝えるために使用されます。
(言い換えると生データを扱うだけなら不要)
マイコンで使用する場合はデジタルピンに接続します。

まとめ

MPU6050の概要について説明しました。
最後に加速度・角速度・角度などの値を計算するとしたら、どの手段を使えばいいかを改めて表にしてみると、以下のようになります。

関連リンク

-ジャイロセンサー

Copyright© メカトロDIYチャレンジ(Mechatro DIY Challenge) , 2022 All Rights Reserved Powered by STINGER.