ロボカップジュニア レスキューライン エントリーの練習を、Scratch でできるようにしました。コースを背景に、ロボットをスプライトにして走らせます。プログラムの考え方は SPIKE と同じなので、ここで作ったものを実機に移せます。コースもロボットもない家でも練習できます。
Scratch というアプリ ― 世界の子どもが使うプログラミング
Scratch(スクラッチ)は、アメリカのマサチューセッツ工科大学(MIT)メディアラボで、2007年に生まれました。今は非営利の Scratch 財団が運営していて、だれでも無料で使えます。Scratch 財団によると、世界で 2億人の子どもが使い、作られた作品は10億を超えます。
| すごいところ | 何がよいか |
|---|---|
| ブロックをはめるだけで書ける | つづりやかっこのまちがいで止まらない。形の合わないブロックはつながらない。考えることに集中できる |
| ブラウザで動く | インストールがいらない。学校のパソコンでも家のパソコンでも、同じように使える |
| 見た目・音・動きを自由に作れる | ゲームやアニメから、今回のようなロボットのシミュレーションまで作れる |
| 作品を公開し、まねして作り変えられる | 世界中の作品の中身を見て、そこから自分の作品をつくれる(リミックス) |
| ほかのアプリの土台になっている | LEGO の SPIKE のアプリも、Scratch をもとに作られている |
ブロックを使うからといって、子ども向けのおもちゃではありません。順次・選択・反復、変数、関数(ブロック定義)、並列(「緑の旗が押されたとき」を2つ置くと同時に動く)と、プログラミングの考え方がひととおりそろっています。
コースを背景にする ― 480×360 の1枚
大会のコースを、Scratch の背景(ステージ)と同じ 480×360 の絵にしました。左の 6×4 マスがライン、右の 3×4 マスが救出ゾーンです。
| 色 | コースでの役目 |
|---|---|
| 黒 | ライン。ロボットがたどる線 |
| 水色の丸 | 障害物。よけて進む |
| 黄色の帯 | スピードバンプ(段差)。乗りこえて進む |
| 線の切れ目 | ギャップ。線がないところをまっすぐ進む |
| オレンジ | 救出ゾーンの入口 |
| 紫 | 救出ゾーンの壁 |
| 緑・黒の人 | 被災者 |
色をぜんぶ別々にしておくのがコツです。Scratch はロボットが何色に触れたかで、どこにいるかを知るからです。壁をラインと同じ黒にすると、ロボットは壁をラインだと思って曲がってしまいます。
Scratch にないもの ― センサーとモーター
Scratch には、センサーもモーターもありません。この2つを、Scratch のブロックで置きかえます。
センサーは「色が色に触れた」で置きかえます。ロボットの絵の前に色の四角を描き、その四角が何色に触れたかを調べます。
| Scratch のブロック | 実機では |
|---|---|
| (黄)色が(黒)色に触れた | 左のカラーセンサーが黒を見た |
| (赤)色が(黒)色に触れた | 右のカラーセンサーが黒を見た |
| (緑)色が(水色)色に触れた | タッチセンサーが障害物に当たった |
ちがいが1つあります。実機のカラーセンサーは、反射光を 0〜100 の数で返します。Scratch は「触れた」「触れていない」の2つだけです。白と黒の境目(しきい値)を決める練習は、実機の回でやります。
モーターは「歩動かす」と「度回す」で置きかえます。実機のロボットは、左右のモーターの速さを変えて曲がります。Scratch のスプライトには車輪がないので、向きを変えるブロックと進むブロックを組み合わせて、曲がる動きをまねします。
| 実機の動き | Scratch での工夫 |
|---|---|
| まっすぐ進む | (1)歩動かす |
| 右へ曲がりながら進む | 右に(8)度回す +(0.5)歩動かす |
| 左へ曲がりながら進む | 左に(8)度回す +(0.5)歩動かす |
| 速さ | 1回のくり返しで進む歩数 |
「度回す」だけだと、スプライトはその場で向きを変えるだけです。少し回って少し進む、をくり返すと、車輪で曲がるときのように弧を描いて進みます。回す角度と歩数で、曲がり方が変わります。
プログラム ― 左右のセンサーで線をたどる
左右のセンサーが黒に触れたかどうかで、4通りに分けます。
| 左(黄) | 右(赤) | 動き |
|---|---|---|
| 白 | 白 | まっすぐ(1)歩進む |
| 白 | 黒 | 右に(8)度回して(0.5)歩進む |
| 黒 | 白 | 左に(8)度回して(0.5)歩進む |
| 黒 | 黒 | (0.1)歩だけ進む |
ギャップ(線の切れ目)では、左右とも白になるので、まっすぐ進んで次の線にもどります。
これを「黄か赤がオレンジに触れるまで」くり返します。緑のバンパーが水色に触れたら、障害物をよける動きに切りかえます。救出ゾーンの入口に着いたら、ライントレースは終わり。そこからは救出ゾーンのプログラムに切りかえます。
SPIKE に移しやすい ― ブロックがほぼ同じ
SPIKE のアプリのブロックは、Scratch をもとに作られています。「ずっと」「もし〜なら」「〜まで繰り返す」は、形も使い方も同じです。
実機に移すときに置きかえるのは、センサーのブロックと、動きのブロックだけです。
| Scratch | SPIKE |
|---|---|
| (黄)色が(黒)色に触れた | カラーセンサーで色や明るさを調べるブロック |
| (緑)色が(水色)色に触れた | フォースセンサー(タッチ)が押されたか調べるブロック |
| 歩動かす・度回す | 左右のモーターを動かすブロック |
| もし・まで繰り返す・ずっと | そのまま |
「どのセンサーが黒を見たら、どう動くか」という判断の部分は、そのまま実機で使えます。
家でも練習できる ― コースもロボットもいらない
コースの背景とロボットのスプライトがあれば、家のパソコンでも同じコースを走らせられます。
教室でも、ロボットとコースは数が限られています。シミュレーションなら全員が同時に試せます。実機の時間は、仕上げに使えます。
実機とのちがい ― 最後はロボットで合わせる
Scratch のスプライトは、指示どおりぴったり動きます。実機は、床のすべりや電池の減りで、同じプログラムでも動きがずれます。
Scratch で判断の形を決めてから、実機で数字(しきい値、モーターの速さ)を合わせます。シミュレーションは、実機の時間を短くするための道具です。
ロボカップジュニア2027 に向けて、レスキュー(災害救助)とサッカーの2種目に取り組みます。プログラミングと電子工作の経験は問いません。