MPU6050をRaspberry Piで使ってみた。(その2)

img_1542

今日も前回に続きMPU6050のネタです。

前回はMPU6050からのRAWデータ(生のデータ)をフィルタリングして使用しました。今回はMPU6050に搭載されているDMP (Digital Motion Processor)を利用したデモを行ってみます。DMPはオンボードのプロセッサであり、センサーのRAWデータから補正された姿勢データを計算し出力してくれます。

DMPを有効にするにはチップへの命令を行う必要がありますが、一からそれを行うのは大変なのでオープンにされているソースコードを借用して利用します。以下のコマンドで今回使用するソースコードをダウンロードします。

ダウンロードが完了したら同フォルダ内にcdコマンドで移動し、READMEファイルにある記載の通り、必要なパッケージのインストールとソースファイルのちょっとした編集およびコンパイルなどを行います。

まずPiBitsフォルダの中に複数のフォルダがあるかと思いますが、MPU6050-Pi-Demoフォルダ以外は今回は使用しないので削除して構いません。MPU6050-Pi-Demoフォルダ内に移動し、READEMEファイルを確認してください。

まずlibgtkmm-3.0-devのインストールを行います。

次に、すでにRaspberry Pi(以降ラズパイ)のGPIOピンにMPU6050を接続した状態(前回記事参照)で、以下のコマンドでデバイスファイルを確認します。

/Dev/i2c0が無く/Dev/i2c1がある場合は、I2Cdev.cppファイルをテキストエディタで開き、/Dev/i2c0の箇所を/Dev/i2c1に全て書き換えてください。(3箇所あるはずです。)

以上が完了したら、makeします。

するとdemo_raw、demo_dmp、demo_3dの三つの実行ファイルが新たに生成されるはずです。demo_rawはセンサのRAWデータを、demo_dmpはDMPで処理したデータをそれぞれテキスト形式で標準出力するデモです。demo_3dは簡単な3Dモデルをリアルタイムで表示するデモです。その様子をYouTubeにアップしたのが以下です。DMP6050を傾けるとそれに対応して3Dモデルの姿勢も変わります。

では、今回もTeapotを動かしてみたいと思います。以下のPythonコードをMPU6050-Pi-Demoフォルダ内に保存し、同フォルダ内で実行します。

するとTeapotがpygameのウィンドウ内に表示されます。MPU6050を動かすと4秒くらい遅れてTeapotも動くはずです。4秒くらい遅れるのはなんとかしたかったのですが、demo_dmpの標準出力をsubprocess経由で受け取って処理する過程でタイムラグがどうしても生じてしまいます。(改善策があれば教えていただきたく。)この動画もアップしましたのでご確認ください。

以上二回にわたりラズパイでDMP6050を動かしてみました。

今日のところはこの辺で。☕️

関連記事:MPU6050をArduino UNO互換機とRaspberry Piで使ってみた。

スポンサーリンク

コメント

  1. 山中政好 より:

    質問させて頂いてよろしいでしょうか。(その1)はクリアーし、ティーポットの回転を確かめることが出来ました。勢い込んで(その2)を始めましたが、
    ls -l /Dev | grep i2c を入力しましたが、「/Devにアクセスできません」と出て、/Dev/i2c0 があるかどうか確かめられませんでしたので、そのままmakeし、Teapot.pyを起動させましたが、pygame windowは開くものの、ハングアップ状態になります。/Dを除き ls -l | grep i2c とすると
    -rwxr-xr-x 1 pi pi 255 4月 11 06:25 setup-i2c.sh と表示されました。
    対処をご教示頂ければ幸いです。

    • okahiro okahiro より:

      せっかくコメント投稿いただいたのに気づかずすみませんでした。
      ls -l /dev
      と小文字で確認してみていただけますか?i2cデバイスがラズパイ側に認識されていれば/devフォルダにマウントされてi2c0とかi2c1とかi2c-1とかで出てくるはずです。/devフォルダにはいろんなデバイスが大量にあるのでgrepコマンドで絞っているのですが、確認できればそれで良いです。

  2. Magda より:

    I’m not easily imesprsed. . . but that’s impressing me! 🙂

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です