センサーが標準で搭載されているらしいな。
加速度、角速度を測るセンサーだ。
計算で姿勢角度も分かる。
難しい単語が出てきたな。。
物体の動きを計測する要素について
M5StickC Plusを使って試してみるぞ!
今回使用するマイコンはこちら!
画面付きで小型のマイコンです。旧版のM5StickCから、ディスプレイサイズ、バッテリ容量が変更になっています。ブザーも実装されました。通信(WiFi/Bluetooth)機能、6軸加速度センサーも搭載されています。
Aruduino で開発できます。Amazonで確認
これからはじめる方にお勧めの参考図書はこちら!
動きを検知?IMUってなに?
IMU(慣性計測装置)とは、3次元の慣性運動(直行3軸方向の並進運動および回転運動)を検出する装置です。加速度センサ[m/s2]により並進運動を、角速度(ジャイロ)センサ[deg/sec]により回転運動を検出します。
IMUには、搭載されているセンサーの数により3つの種類があります。
- 3軸IMU
加速度センサー、角速度センサー単体の装置です。 - 6軸IMU
加速度センサー、角速度センサーの2つを搭載した装置です。加速度と角速度を使って姿勢角度を計算して出力します。
姿勢角度の精度は、9軸IMUに比べ低くなります。 - 9軸IMU
加速度センサー、角速度センサーに加えて地磁気センサーを搭載した装置です。6軸IMUより精度が高くなるようです。
今回使う「M5StickC Plus」に搭載されているのは、6軸IMU(MPU6886)です。
ここでは、6軸IMUについて説明していきます。
加速度とは?
子供の頃、球や車を、スロープを使って動かして遊ぶおもちゃがあったことを覚えていますか?
スロープに球を置いて、転がすとスロープを下っていきますよね?
その際に発生しているのが「加速度」です。物体が動く際に発生します。
(Δvは単位時間の速度変化量[m/s]、Δt は単位時間[s]です。)
単位はm/s^2(メートル/毎秒毎秒)
以下の記事が、わかりやすいので、参照してみてください。
Nintendo Switchにはゲームをより楽しむために「モーションセンサー」という技術が入っているのを知っていますか…
この加速度が3次元の3軸(X、Y、Z)に対してどう変化したかを測るのが加速度センサーになります。
角速度とは?
ジャイロって聞いたことがありますか?
ハンドスピナーのようにくるくると回転するものを傾けると、ハンドスピナーから手に対して力が加わりますよね?
この力を利用して、回転軸がどの方向にどれだけ回転したかを表すのが角速度です。
(Θは単位時間に回転した角度[rad]、Δt は単位時間[s]です。)
単位はrad/s radは弧度法の単位で、Θ=Θ°×π/180で表されます。
(180°の場合、Θ=π[rad])
以下の記事がわかりやすいので参照してみてください。
前回のおさらい『ARMS』のように、手の動きをゲームの中に伝えるためにJoy-Conには「加速度センサー」と「ジャイロセ…
この角速度が3次元の3軸(X、Y、Z)に対してどう変化したかを測るのが角速度センサー(ジャイロセンサー)です。
姿勢角度とは?
水平に対しての傾きをあらわす角度です。
重力の向きを測定して、重力がかかっている方向から、現在の角度を計算します。
重力以外の方法で求める場合もあります。
Pitch(ピッチ:Y軸に対する角度)ω
Yaw(ヨー:Z軸に対する角度)φ
Acc:加速度センサー値(x、y、z)

M5StickC Plusの6軸IMUの軸は?
M5StickC Plusに搭載されているIMUの軸は次のようになっています。※画面を上に水平に置いた場合
M5StickC Plus のIMU測定値から姿勢角度を求める
それでは、実際にプログラミングしてみましょう。
IMUの制御に使用する関数は、M5ライブラリクラスに含まれています。
関数名 | 説明 |
M5.Imu.Init() | IMUの初期化をします。 |
M5.IMU.getAccelData(float x, float y, float z) | 加速度センサーからのデータを取得します。 |
M5.IMU.getGyroData(float x, float y, float z) | 角速度センサーからのデータを取得します。 |
M5.IMU.getAhrsData(pitch, roll, yaw) | ピッチ、ロール、ヨーの計算結果を取得します。 ※今回はこれは使用せず、計算します。 |
IMUを使った姿勢角度表示プログラム
Arduino IDEを起動して、「ファイル」メニューから「新規ファイル」を選択し、表示されるスケッチに以下のように記述します。
Arduino IDE スケッチ例
M5StickC Plusへの書き込み
- 「ファイル」メニューから「名前を付けて保存」で任意の名前を付けて保存します。
- 「ツール」メニューから「ボード」情報を確認し、M5StickC Plusであるか確認します。
この際、「シリアルポート」にマイコンを接続したCOMポートが指定されているかも確認します。 - 「ツール」メニューから「Patition Scheme」を「”No OTA(Large APP)”」にします。
※ここを変更しないと、スケッチが大きいというエラーになります。 - 「ツール」メニューから「シリアルモニタ」を選択してシリアルモニタを起動します。
- 「スケッチ」メニューから「マイコンボードに書き込む」を選択します。
プログラム実行結果
M5StickC Plusのディスプレイに以下のとおり表示されれば成功です。
編集後記
いかがだったでしょうか。
M5StickC Plusの傾きに応じた値が画面に表示されていますね。このデータを使えばドローンの制御などもできます。
今回の記事は以上になります。
最後までご覧いただきありがとうございました。
今回使用したマイコンはこちら!
画面付きで小型のマイコンです。旧版のM5StickCから、ディスプレイサイズ、バッテリ容量が変更になっています。ブザーも実装されました。通信(WiFi/Bluetooth)機能、6軸加速度センサーも搭載されています。
Aruduino で開発できます。Amazonで確認
これからはじめる方にお勧めの参考図書はこちら!