IMUセンサーで3Dモーションを可視化する実践ガイド – MPU-6050とProcessing
必要な部品と用品
| Arduino UNO × 1 |
| IMUセンサー (6自由度) - MPU-6050 × 1 |
| ジャンパーワイヤー (汎用) × 1 |
アプリとオンラインサービス
- Arduino IDE
- Processing IDE
このプロジェクトについて
ハードウェアの組み立てが済んだら、ソフトウェア部分に進みます。
MPU-6050センサーとは
MPU-6050は、3軸ジャイロスコープと3軸加速度計を同一シリコンダイ上に統合し、オンボードのデジタルモーションプロセッサ (DMP)で複雑な6軸MotionFusionアルゴリズムを処理します。これで「6DOF = 6自由度」の意味がわかりますね。
接続回路図とハードウェアセットアップの詳細は、前回のブログ記事を参照してください。
ここでは、このモーションセンサーの動きを3D可視化するためのProcessingソフトウェアを解説します。
必要なソフトウェア
- Processing IDE
Arduino IDEとは別のIDEが必要で少し戸惑うかもしれませんが、心配無用です。以下の手順で進めればすべてクリアになります!
ProcessingはArduino IDEと非常に似ており、わずかな特殊関数の違いしかありません。図1と図2を見ればその類似性が一目瞭然です。
Toxiライブラリのインストール
3D可視化にはProcessing用の特別なライブラリ「Toxi」が必要です。ウェブ上で見つけるのは骨が折れるため、GitHubにアップロードしました。以下の手順でインストールしてください:
- このリンクから 「toxiclibs-complete-0020」 をダウンロード
- フォルダを解凍
- 「toxiclibs-complete-0020」フォルダをコピーし、Processingの「libraries」フォルダにペースト
- 「librariesフォルダ」が見つからない場合は、自分で作成してください!
- Processing IDEを起動
Arduinoコードの準備
MPU-6050用のArduinoコード (MPU6050_DMP6.ino) をアップロードする前に、以下の修正を行ってください:
#define OUTPUT_READABLE_YAWPITCHROLLを// #define OUTPUT_READABLE_YAWPITCHROLLに変更 (コメントアウト)//#define OUTPUT_TEAPOTを#define OUTPUT_TEAPOTに変更 (アンコメント)
Processingスケッチの設定
- Processing IDEで「ファイル」→「開く」
- Arduino用MPU-6050ライブラリのフォルダへ移動:
MPU6050 > Examples > MPU6050_DMP6 > Processing > MPUTeapot - シリアルポート設定を確認・修正:
- デフォルトはLinux/Mac向け:
String portName = "/dev/ttyUSB1"; - Windowsの場合: この行をコメントアウトし、
//String portName = "COM15";をString portName = "COM15";に変更 - 「COM15」を実際のArduino接続ポートに置き換え (Arduino IDEの「ツール」→「シリアルポート」で確認)
- デフォルトはLinux/Mac向け:
実行手順
- Arduinoコード (MPU6050_DMP6) をアップロード ※シリアルモニターは開かないでください! (Processing側で可視化するため)
- ProcessingでMPUTeapotスケッチを実行 (再生ボタン押下)
- 小さな飛行機のような3Dオブジェクトが表示される
- 約10-12秒待ち、MPU-6050の値が安定するのを待つ
- センサーを動かすと、3Dモデルが連動して動く!
GIFアニメーションを参照してください。より詳細な理解のためにYouTube動画もご覧ください。
次回チュートリアルでは、独自のフライトシミュレーター計器の設計方法を解説予定です。ハードウェア/ソフトウェアセットアップで問題があればコメントでお知らせください。
コード
完全なプロジェクトコード: GitHubからダウンロード (MPU6050.zip)。本チュートリアルの指示に従ってセットアップしてください。
回路図
IMU (MPU-6050) センサーとArduinoの接続手順は、前回のブログ記事でステップバイステップ解説しています。
リンク: https://www.hackster.io/Aritro/getting-started-with-imu-6-dof-motion-sensor-96e066
製造プロセス
- Raspberry Pi 3でコンピュータビジョン搭載SmartThingsモーションセンサー
- Home Assistant on Raspberry Piで安全なホーム監視 – モーション、アラーム、ビデオ撮影
- Raspberry Pi用DIY赤外線モーションセンサー構築 - ステップバイステップガイド
- Raspberry PiでPIRモーションセンサーとLEDを制御
- Raspberry Pi、MCP9808、InfluxDB、Grafanaで作る家庭温度モニター
- Raspberry Pi GPIOマスター:PIRモーションセンサーをB+/Model 2でインターフェース
- HC-SR501 PIRモーションセンサーをRaspberry Piで接続・調整・プログラミングする方法
- エモーションセンサー&EEG:リアルタイム感情検知のための低コストハードウェア
- Logic-X、エッジAI向け新COTSセンサープロセッシングブランド発表
- IMUセンサーの理解:機能と現代技術での応用
- 高度な腕時計型皮膚センサー:指の動きをリアルタイム3D仮想ハンドに変換