今回は、mBot2プログラミングシリーズ(mBlock編)の第12回です。
mBot2に搭載されているCyberPiのモーションセンサーを使った制御を紹介します。
CyberPiのモーションセンサーの基本的な使い方から、加速度やジャイロを利用した制御プログラムを作成していきます。
目標
- CyberPiのモーションセンサーとは何か
- モーションセンサーに関するブロックとその使い方
- モーションセンサーを使った制御プログラムの作成方法
CyberPiとモーションセンサー
CyberPiは、mBot2に搭載された多機能モジュールで、ディスプレイ、センサー、マイク、スピーカーなどが一体となっています。
これにより、音の再生や制御、ディスプレイ表示、センサー入力の処理など、さまざまな機能を実現することができます。
モーションセンサーは、加速度センサーとジャイロセンサーを組み合わせたもので、ロボットの動きや傾きを検出することができます。
これにより、ロボットの動作制御やモーション検出を実現することができます。

mBlockで扱える『モーションセンサー』に関するブロックは『モーションセンサー』パレットに入っており、内容は大きく次の3つに分類できます。
- 傾きの検出
- 揺れの検出
- x,y,z軸での検出
それぞれ解説していきます。
mBlockとは?『スクラッチ(Scratch)』との違い
mBlockは、小学校や学習塾で取り入れられている『スクラッチ(Scratch)』をベースとしたビジュアルプログラミングツールです。
スクラッチの基本的な操作感を引き継ぎながら、ロボットやハードウェアの制御に特化しているため、mBlockを使えば、プログラミング初心者でも簡単にロボットプログラミングを始めることができます。
傾きの検出
mBlockで使用するブロック

CyberPiが指定された方向に傾いているかの判定を行うブロックです。
[前に傾いている▼]をクリックすると、次の選択が可能です。

- 前/後ろの傾き:X軸回りの回転
- 左/右の傾き:Y軸回りの回転
- 画面が上向き:Z軸が上向き
- 画面が下向き:Z軸が下向き

指定された方向の傾きの角度を表すブロックです。
[前に傾いている▼]をクリックすると、次の選択が可能です。

- 前/後ろの傾き角度:X軸回りの角度(ピッチ角)
- 左/右の傾き:Y軸回りの回転(ロール角)
- 時計/反時計回りの回転:Z軸回りの回転(ヨー角)

ヨー角をゼロにリセットするブロックです。
簡単な傾き検知プログラム
『傾きを検知して、mBot2を停止させる』プログラムを作ってみます。

上記のプログラムは、mBot2を前進させ、何かの拍子に障害物に乗り上げて後ろ向きに傾いたときに停止する動作となります。
このように、傾き検出を取り入れることで、mBot2の動作の幅を広げることができます。
揺れの検出
mBlockで使用するブロック

指定した動作が検出されたかを判定するブロックです。
[振る▼]を押すと、次の選択ができます。

それぞれの意味は次の通りです。






- 自由落下:落下しているかどうか
- 揺れている:強さ20以上の揺れ

揺れの強さを表します。
揺れの強さは、揺れの周波数と振幅に比例します。
範囲:0~100

揺れの方向(角度)を表します。
範囲:-179°~180°

揺れの速度を表します。
実際のCyberPiの移動速度と比例します。
範囲:0~100
揺れ検出の簡単なプログラム
『揺れた方向をCyberPiの画面に表示する』プログラムを作成してみます。

mBlockの日本語翻訳が分かりにくいですが、「振る」は上に揺れることを指しています。
他の揺れ検出に関しても、CyberPiの画面上に表示するようにして実際に動作を確認してみてください。

x,y,z軸での検出
mBlockで使用するブロック

指定した軸を中心に回転する角度を表します。
反時計回りの方向が正の方向です。
x,y,z軸の選択が可能です。


指定した軸を中心に回転する角度をゼロにリセットします。
このブロックの実行後、で取得した値はゼロからカウントされます。
全て,x,y,z軸の選択が可能です。

指定した軸周りの角速度を表します。
※1秒間当たりの回転角度
x,y,z軸の選択が可能です。
範囲:-500~500(°/s)

指定した軸上の加速度(m/s2)を表します。
※1秒間当たりの速度変化
x,y,z軸の選択が可能です。
例題:mBot2のヨー角制御プログラム
- 例題
- 解答例
mBot2の障害物回避動作において、『mBot2の方向転換をヨー角で制御する』プログラムを作ってみましょう。

- 方向転換処理の最初で、ヨー角をリセットする
- ヨー角が任意の角度より大きくなるまで、方向転換処理を繰り返す
まとめ
今回は、CyberPiのモーションセンサーを使って、mBot2を制御する方法を紹介しました。
CyberPiのモーションセンサーを活用することで、mBot2の動作に関して様々な応用が可能となります。特に、加速度センサーやジャイロセンサーを使った制御は、ロボットに対する理解を深め、創造力を刺激します。
ぜひ、今回のプログラムを参考にして、自分だけのオリジナルプログラムに挑戦してみてください。
次回は、CyberPiのその他のセンサーについて解説します。
mBlockを使ったmBot2のプログラミング方法を丁寧に解説していておススメです。
CyberPi単体でもプログラミング教育に非常に役立ちます!
