PR

M5StackでPC上の3Dモデルを動かす

M5Stack FireでPC上の3Dモデルを動かす 組み込み機器

M5Stackで3Dモデリングができるの!?

姫野秀徳

組み込みエンジニアとしてメーカー勤務10年。
第二種電工事士、基本情報技術者、Code.org認定教師。
microbitを用いた電子工作&プログラミング教室を開校。
組み込み開発の実際を発信するyoutube活動も行う。

無料で学べる組み込み開発オンラインスクールはじめました!
https://kumicla.tatepro.com

姫野秀徳をフォローする

概要

1.M5stack Fire内蔵のIMU(慣性計測装置)を利用して回転情報を取得

2.M5stackとパソコンをBluetoothでペアリング、予め計測した回転情報を無線通信でパソコンに送る

3.Processingにて3Dモデル制作、回転情報を取得して連動させるプログラムを作成

完成イメージはこちら

1.M5stack Fire内蔵のIMU(慣性計測装置)を利用して回転情報を取得

IMUで加速度、角速度を計測 → 3次元ベクトル変換の流れになります。

IMUで加速度、角速度を計測

2022年9月時点で購入できるM5stack Fireでは加速度センサ・ジャイロセンサが実装されたIMU(Inertial Measurement Unit)を利用することになります。

以前は地磁気センサも内蔵されていて方位変化にも対応できたのですが、新バージョンのIMU(今回利用のM5stack FireはMPU6886)では地磁気センサが無くなりました。

float型で変数宣言して、アドレスを関数に入れるだけでIMUの情報が取れます。

float accX, accY, accZ;
float gyroX, gyroY, gyroZ;
M5.IMU.getGyroData(&gyroX,&gyroY,&gyroZ);
M5.IMU.getAccelData(&accX,&accY,&accZ);

回転情報への変換

加速度センサ、ジャイロセンサの計測値から3次元ベクトルの回転情報(ロール・ピッチ・ヨー)に変換します。

変換自体は”MahonyAHRS.h”ライブラリをインクルードして値を入れてやるだけです。理論は難しすぎて分からず…。

ロールはX軸、ピッチはY軸、ヨーはZ軸の回転情報で、地磁気センサの方位変化が分からないので、ヨーが定まらず、常にZ軸は回転がかかった状態になってしまいます。

#include <utility/MahonyAHRS.h>
float pitch, roll, yaw;

MahonyAHRSupdateIMU(gyroX * DEG_TO_RAD, gyroY * DEG_TO_RAD, gyroZ * DEG_TO_RAD, accX, accY, accZ, &pitch, &roll, &yaw);

M5stackの回転情報をパソコンに送る

M5stackとパソコンをBluetoothで接続し、回転情報を無線通信で定期的に送ります。

M5StackのBluetoothモジュールを起動した状態でパソコンから検索すると”M5Stack”と表示されるのでペアリングしましょう。

#include "BluetoothSerial.h"
BluetoothSerial SerialBT;

//Setup()にて
SerialBT.begin("M5Stack"); //引数はBluetoothデバイス名
Serial.begin(115200);

//Loop()にて
SerialBT.printf("%5.1f, %5.1f, %5.1f\r\n", roll, pitch, yaw);

3Dモデルの制作と回転情報の反映

3DモデルはProcessingで作成します。

Processingは3Dモデルを作れるだけでなく、プログラムを組めるので通信が可能となります。

なので、Processing側にBluetoothのポート指定して回転情報を取得して3Dモデルに反映させるプログラムを作ればM5stack Fireの動きが直ちに3Dモデルに展開できます。

Processing側のソースコードは参考文献「パソコン上のM5Stackの3Dモデルを、M5Stackの動きに合わせて動かす」を参照するとよいでしょう。

まとめ

M5Stack FireでPC上の3Dモデルを動かすには、4ステップ。
1.IMUで加速度・角速度を計測
2.ライブラリ使って回転情報に変換
3.BluetoothでPCとペアリング
4.Processingで3Dモデル作成し、回転情報を取得して反映させる

参考文献

本記事は下記参考にして作成しています。

【M5Stack】第4回 M5Stack Fire内蔵のIMU(MPU6886)を使って姿勢角算出

M5StickCの6軸IMU MPU6886を調べる

M5Stackの回転データが勝手に回り続けることになる問題の対策

パソコン上のM5Stackの3Dモデルを、M5Stackの動きに合わせて動かす

この内容が良いと思ったら、いいね💖を押して教えてください!

組みクラ – 組み込み開発を学び、未来を創るエンジニアへ
無料で学べる!組み込み開発の基礎から応用までをマスターできるオンラインスクール「組みクラ」

組み込みエンジニアは、あらゆる産業の基盤を支える重要な職業です。
私たちタテプロは、次世代の組み込みエンジニアを育成し、業界の競争力を高めるために活動しています。
あなたも、無料で学べる「組みクラ」で、組み込み開発のスキルをしっかり身につけ、キャリアを加速させましょう!
今すぐ学び始めて、将来の自分をステップアップさせる第一歩を踏み出しませんか?

\立プロとLINEで友だちになりませんか/
立プロと友だちになる
組み込み機器
シェアしていただけると嬉しいです!

コメント

タイトルとURLをコピーしました