センサーが標準で搭載されているらしいな。
加速度、角速度を測るセンサーだ。
計算で姿勢角度も分かる。
難しい単語が出てきたな。。
物体の動きを計測する要素について
M5StickC Plusを使って試してみるぞ!
今回使用するマイコンはこちら!
Aruduino で開発できます。
これからはじめる方にお勧めの参考図書はこちら!
動きを検知?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の傾きに応じた値が画面に表示されていますね。このデータを使えばドローンの制御などもできます。
今回の記事は以上になります。
最後までご覧いただきありがとうございました。
今回使用したマイコンはこちら!
Aruduino で開発できます。
これからはじめる方にお勧めの参考図書はこちら!
M5StickC Plus の他の記事はこちらからどうぞ!
すけろく んーどうしたものか。 げんろく どうした? 深刻な顔をして。 すけろく M5Stackにプログラムを書き込んだら 起動しなくなってな。 電源ON/OFFでも無理なのだ。 げんろく 書き込んだプログラムか、バッテリーの 過放電か。工場出荷時に戻してみてはどうだ? この記事では、M5Stackにプログラムを書き込んだ結果、うまく動作しなくなった場合の対処方法を記載します。 ご紹介するのは「工 […]
すけろく 以前、Bluetooth Serialを使って データをPCに送信したが、何か良い使い方はないかな。 げんろく 最近、土壌水分センサーとやらを手に入れた。 これで計測した水分量をPCに送信してみるか? すけろく それは良いな。 今後、使い道が広がっていきそうな予感がする。 この記事では、ディスプレイ付きマイコン「M5StickC Plus」に搭載されている「Bluetooth」を使って、 […]
すけろく 前回の記事で6軸IMUのデータをPCでグラフ化したが、 うまく傾き検知ができているようだ。 げんろく そうだな。 微細な傾きも検知できているようだ。 すけろく 傾き検知の機能を使って何かできないかな? げんろく なら、机を離れる時にノートなどの見守りを してくれる「デスク見守り君」を作るぞ! 今回の記事では、ディスプレイ付きマイコン「M5StickC Plus」を使って、「デスク見守り君 […]
すけろく これまで、M5StickC PlusでWi-Fi接続を使ったデータの やり取りは見てきたが、Bluetoothはまだだな。 げんろく 確かに。 Bluetoothについてはまだだった。 すけろく 近距離ならBluetooth通信も有効だ。 何か作れないかの。 げんろく では、今回はBluetoothを使った通信の一つ、 Bluetooth Serialについて触れてみよう。 この記事では […]
すけろく M5StickC Plusには、筐体の動きや傾きを検知する センサーが標準で搭載されているらしいな。 げんろく 6軸IMUのことか。 加速度、角速度を測るセンサーだ。 計算で姿勢角度も分かる。 すけろく んんっ!? 難しい単語が出てきたな。。 げんろく よし。 物体の動きを計測する要素について M5StickC Plusを使って試してみるぞ! この記事では、ディスプレイ付きマイコン「M5 […]
すけろく 前回作ったお天気表示プログラムは なかなか、評判が良いな。 げんろく うれしいな。 ただ、お天気情報は起動時のみ取得というところが 課題だ。 げんろく 今回は、1時間に1回お天気情報を後進するように してみよう。 この記事では、Arduino IDEを使ってM5StickC Plusのディスプレイに、お天気情報を1時間に1回更新表示する方法を紹介します。 画面描画は主に、Adafruit […]
すけろく 汎用ライブラリの「AdafruitGFX」にビットマップ画像を ディスプレイ表示するものがあるそうな。 げんろく いかにも。機能は実装されている。 ちょうど、アイコンをアニメーションさせたいと 思っておったわ。 すけろく うむ。 面白そうだな。やってみるか! げんろく わかった。 今回は、単色のアイコンを使って天気情報を 視覚的に伝える画面を作ってみよう。 この記事では、Arduino […]
すけろく 標準ライブラリでの画面描画はできた。 しかし、M5StickC Plus向けのライブラリなので 汎用性がないな。 げんろく たしかに。 M5Stackや他のAruduino機器でも使えるものが必要だな。 すけろく そのようなものがあるのか? げんろく よし。今回は、汎用的に使えるライブラリを紹介しよう。 Adafruit社が公開している「Adafruit_GFX」だ。 この記事では、Ar […]
すけろく 前回の記事でJSON形式データは取り扱うことができた。 これでインターネットにあるサービスを活用できるな。 げんろく そうだな。 今回は天気情報を提供しているサイトからJSON形式データを 取得してM5StickC Plusの画面に表示してみよう。 前回の記事では、次の画像のように、Arduino IDEを使い、M5StickC Plusのディスプレイにインターネットのサイトから取得した […]
すけろく 普段、何気なくブラウザでインターネットサイトを 見ているが、URLの最初のHttpsとはなんだ? げんろく httpsはHttpの通信を暗号化して行うものだ。 ちょっと違いを押さえてみるか。 すけろく あと、Arduino IDEでプログラムを作る際の 注意点なんかも頼む。 げんろく わかった。 プログラムに組み込む方法も見てみよう。 皆さんが普段パソコン(PC)やスマホ、タブレットのブ […]
すけろく Pythonなどでは、JSONでデータを扱っていたが、 Arduino IDEで扱うことはできるのか? げんろく それなら「ArduinoJSON」ライブラリがあるぞ! 取り扱うデータで使用するメモリサイズの 計算ツールもあるから便利だ。 この記事では、Arduino IDEを使ってM5StickC PlusのプログラムでJSON形式を取り扱う方法を紹介します。 今回使用するライブラリは […]
すけろく M5StickC Plusに英語を表示することは 画面制御の記事で行えたが、日本語は表示できないのか? げんろく いや、方法はあるぞ。 eFontライブラリをM5StickC Plusで実行できるように 修正して提供してくれているものを使うのだ。 すけろく ぜひ、やってみたいの~ この記事では、Arduino IDEを使ってM5StickC Plusのディスプレイに日本語を表示させるため […]
すけろく M5StickC Plusも時刻同期までできた。 うまくいっておるな。 げんろく ああ、「M5StickC」向けに作成したプログラムが 微修正で実行できるからありがたい。 すけろく そういえば、画面が大きくなったな。 値段も大きくなっているが。。。 げんろく 今回は新しいM5StickC Plusの 画面制御まわりを見てみるか。 この記事では、Arduino IDEを使ってM5Stick […]
すけろく 前回はWiFi接続することができた。 次は時刻同期がしたいな。 げんろく たしかに。時刻同期は基本だからな。 以前M5StickCでやったプログラムをベースに 実装してみよう。 この記事では、M5StickC PlusをアクセスWi-Fiアクセスポイントに接続し、インターネットの時刻サービス(NTPサーバー)と時刻を同期する方法について紹介します。 今回使用す […]
すけろく M5StickC Plusの大まかな違いは分かった。 WiFi接続をしてみるか。 げんろく そうだな。 M5StickCと同じように使えるのか確認してみよう。 この記事では、M5StickC Plusに実装されているWiFi機能を使って、Wi-Fiルータに接続する方法について紹介します。 今回使用するマイコンはこちら! 画面付きで小型のマイコンです。旧版のM5StickCから、ディスプレ […]
すけろく なんか、M5StickCが「在庫なし」になっている。 げんろく ああ、新しい「M5StickC Plus」が出たからな。 旧版は在庫限りになっているのだろう。 すけろく うむ。画面が大きくなったな。 値段も大きくなっておる。 げんろく そうだな。 M5StickC PlusでLチカでもしてみるか。 今回の記事では、「M5StickC Plus」を開発環境であるArduino IDEを使っ […]