③micro:bit探検ウォッチと連携して、ジェスチャーを認識させよう!

 この連載
(れんさい)
では、手のひらサイズの小さなコンピューター、micro:bit(マイクロビット)を使った「探検
(たんけん)
ウォッチ」というツールを使って、Scratch(スクラッチ)で使える機械学習環境
(きかいがくしゅうかんきょう)
を組み合わせてAI(エーアイ)プログラミングにチャレンジしているよ。

 探検ウォッチについては、micro:bit特設サイト紹介
(しょうかい)
しているので、こちらもぜひ読んでみてね。

 さて、今回つくろうとしているのは、探検ウォッチと連動
(れんどう)
させた、ジェスチャーを認識
(にんしき)
する機械学習プログラムだ。具体的
(ぐたいてき)
には、探検ウォッチを付けた
(うで)
で、空中に〇や×を
()
くと、その動きを検知
(けんち)
して識別
(しきべつ)
してくれるプログラムだ。

 さあ、前回までは、Scratchの拡張機能
かくちょうきのう
であるML2Scratch(エムエルツースクラッチ)を使って、ステージに描いた線や絵を学習して、〇や×と見分けるプログラムをつくったね。今度はキミの動作(ジェスチャー)を学習して、見分けるようにするプログラムをつくっていこう。動作を検出
けんしゅつ
するために、探検ウォッチを使っていくぞ。

1 Scratchのmicro:bit拡張機能を準備しよう

 探検ウォッチで使っているmicro:bitは、Scratchと簡単につなぐことができるよ。Bluetoothを搭載
とうさい
したパソコンを使って、次の手順ですすめていくよ。

1. Scratch Link のインストール(パソコン)
2. Scratchmicrobit.hexの書き込み(micro:bit)
3. micro:bitの接続(Scratch)

 それでは、これまでの2回と同じように、Strech3にアクセスしよう。まずはmicro:bit拡張機能を読み込むよ。Strech3には「micro:bit MORE」という似た拡張機能もあるので注意しよう。

 micro:bit拡張機能を読み込むと、接続
せつぞく
のためのウィンドウが開く。最初はmicro:bitと接続ができないのではないかな。画面の左上にあるヘルプをクリックすると、micro:bit機能拡張のヘルプページ(https://scratch.mit.edu/microbit)が開く。ここから必要なアプリなどをダウンロードしてみよう。

接続のためのウィンドウの左上のある「ヘルプ」をクリック
micro:bit拡張機能のヘルプページが開く

2 Scratch Link のインストール

 まずは「Scratch Link(スクラッチリンク)」をインストールしよう。これはパソコン用のアプリで、Scratchとmicro:bitの接続に必要なんだ。

 先ほどアクセスしたmicro:bit拡張機能のヘルプページにある「直接ダウンロード」のリンクをクリックしてwindows.zipを入手しよう(Macの人はmac.zip)。

「直接ダウンロード」をクリック
「windows.zip」がダウンロードされる

 zipファイルを展開
てんかい
すると、ScratchLinkSetup.msi(Macの場合はscratch-link-1.3.66.pkg)というファイルができるので、それをクリックして実行しよう。
※ファイル名は2020/10現在。Macの場合のファイルにある末尾
まつび
の数字はバージョン番号で、ダウンロードの時期に応じて更新
こうしん
されていきます。

「windows.zip」を展開すると、ScratchLinkSetup.msiができる

 実行されたインストーラーの指示に従ってインストールしていこう。

 インストールが終わったら、Scratch Linkを起動
きどう
しよう。起動すると、タスクバーにアイコンが表示される。

3 Scratchmicrobit.hexのダウンロードと書き込み

 次は、micro:bitに書き込むファイルをダウンロードして書き込んで行くぞ。Scratchに接続する場合、micro:bitに専用のHEXファイルを書き込む必要がある。micro:bit拡張機能のヘルプページにある「Scratch micro:bit HEXファイルをダウンロードします。」のリンクをクリックしてscratch-microbit-1.1.0.hex.zipをダウンロードしよう。
※ファイル名は2020/10現在。末尾の数字はバージョン番号なので更新されていきます。

 こちらもzipファイルを展開すると、scratch-microbit-1.1.0.hexファイルができる。micro:bitをUSBケーブルでパソコンにつないで、このファイルを書き込もう。

「scratch-microbit-1.1.0.hex」をmicro:bitに書き込む

 書き込みに成功すると、micro:bitのLED画面に5文字の英字が表示される。これはキミのmicro:bit固有のIDで、Scratchと接続するときに必要になるよ。micro:bitはそのままUSBケーブルでパソコンにつないだままでもいいし、パソコンから外して探検ウォッチの電源をオンにしてもだいじょうぶだ。

4 Scratchとmicro:bitを接続する

 ここでmicro:bit拡張機能のヘルプページから、Strech3に戻ろう。micro:bitの接続ウィンドウが表示されたままなので、「もう一度試す」ボタンをクリックしよう。

 すると、周辺にある接続可能なmicro:bitのリストが表示される。1人で使っている場合は1台しか出ないはずだが、念のためリストの末尾の英語の文字列
もじれつ
と、micro:bitに表示された文字列が同じか確認してそれを選ぼう。

接続ができるmicro:bitが表示されるので、自分のmicro:bitを選んで「接続する」をクリックする
micro:bitが接続された状態

 教室など、複数台のmicro:bitを使っている場合は、リストにいくつかmicro:bitの名前が表示される。末尾の文字列、電波の強さ(距離
きょり
の参考になる)を確認して目的のmicro:bitを探そう。

 micro:bitが接続できると、プログラムエディターに戻ろう。左にあるブロックパレットのmicro:bitの横にあるマークが変わっているよ。

micro:bitと接続していない状態
micro:bitと接続している状態

 ためしに、「♡を表示する」ブロックをクリックしてみよう。探検ウォッチに♡が表示されたらOKだ。

5 探検ウォッチでジェスチャー入力ができるようにプログラムを改造しよう

 さて、探検ウォッチでScratchのプログラムをコントロールできるようになったよ。前回までにつくった、ステージに描いた絵を見分けてくれるプログラムを改造
かいぞう
していこう。

 今のプログラムは、マウスでステージに絵を描いている。これを、腕に探検ウォッチつけて動かすことで、ステージに絵が描かれるようにしていくよ。前回つくったプログラムを読み込もう。絵を描くプログラムを改造していく。

 「x座標
ざひょう
を(マウスのx座標)、y座標を(マウスのy座標)にする」ブロックの「マウスのx座標」、「マウスのy座標」のブロックを、「micro:bit」カテゴリーの「前▼方向の
かたむ
き」、「右▼方向の傾き」ブロックにそれぞれ入れ変える。
また、「もし“マウスが押された”」ブロックには、「どれかの向き▼に傾いた」ブロックを入れるよ。

改造前のプログラム
改造後のプログラム

 ここで使った「前▼方向の傾き」「右▼方向の傾き」ブロックにはmicro:bitの前後の傾きが-100から100までの数値で入ってくる。「*(かけ算)」のブロックで2倍にしたのはステージに残る線を大きく描き特徴付けるためだ。
 「どれかの向きに傾いた」ブロックを入れたことにより、探検ウォッチが水平になったら線の太さがリセットされて消えたようになるぞ。

 それではジェスチャーで
ため
してみよう。micro:bitとパソコンをUSBケーブルで接続したままならば、はずして探検ウォッチの状態にしよう。探検ウォッチのバッテリーに切り替えて、腕に装着
そうちゃく
して、空中に〇や×を描いてみよう。


筆者がマルのジェスチャーをしたときの線の例
筆者がバツのジェスチャーをしたときの線の例

 〇を描いても、ステージには〇ではなくて、線が描かれているだけだね。でもこれで大丈夫だよ。〇や×などのジェスチャーをして、そのものの形がステージに描かれなくても、違う線が描かれれば機械にはそれを見分けられるはずだ。

6 ジェスチャーを学習させる

 それではジェスチャーを学習させよう。前回の学習データが残っているなら、一度学習内容をリセットしよう。「ラベルの全ての学習をリセット」ブロックをクリックするだけでリセットされるよ。

 マウスで描いた絵を学習させた時と同じように、

– 何も意図しない状態(探検ウォッチを水平に保っている状態や、〇でも×でもないジェスチャーなど)
– 〇のジェスチャー
– ×のジェスチャー


じゅん
にラベル1〜3で学習させよう。それぞれのジェスチャーの動作をして1〜3のキーを押すだけだ。ジェスチャーとジェスチャーの間では、micro:bitが水平になる位置に探検ウォッチを動かして、いったんステージを白くすると学習がしやすいようだ。また、学習が進むと「マル」「バツ」といきなりしゃべりだすかもしれないね。
 一通り学習ができたら試してみよう。このプログラムはキミのジェスチャーを見分けられただろうか。

6 プロジェクトと学習モデルの保存

 さて、今回作ったプログラムを保存する方法を確認しておこう。
まずはScratchプログラムの部分から保存してみよう。左上のファイルのメニューから「コンピューターにファイルを保存」を選択しよう。好きな場所に保存して構わない。次にそのsb3ファイルをStretch3で読み込むときはファイルメニューの「コンピューターから読み込む」で大丈夫だ。

 そして次に、機械学習の学習データをダウンロードしよう。「ML2Scratch」カテゴリーにある、「学習データをダウンロード」ブロックをクリックしてみよう。「1602790072829.json」のようなファイルがダウンロードされるはずだ。
 このファイルを読み込む場合は、.sb3を読み込んだ後に、「学習データをアップロード」を押せばいい。この学習データはML2Scratchで使えるぞ。

 さて、micro:bitを使ったAIプログラミングはうまくいっただろうか。ジェスチャーの認識
にんしき
をするための機械学習の部分は少しコツがいるかもしれない。ジェスチャー自体を変えたり、ペンの機能の使い方を、認識や学習がしやすいように改造してみてもいいね。

 また、今回チャレンジしたScratchでの機械学習は、『子供の科学2020年4月号』の特集「未来をつくろう! チャレンジ! AIプログラミング」でも紹介しているよ。特集では画像認識を使ったゲームをつくっているので、こちらにもチャレンジしてみてね!

(監修/石原淳也 文/倉本大資)

プログラミング教材 micro:bit

KoKa micro:bit探検ウォッチキット

¥7,700- (税込)

KoKa Shop!で購入する

最新号好評発売中!

子供の科学 2024年 5月号

CTR IMG