2020年から「小学校プログラミング必修化」がスタートすることもあり、その時期が近づくにつれてプログラミング教室などのプログラミングを学べる場への関心が強くなってきているのではないでしょうか。
エレキットでは、5月から全5回のロボットプログラミング教室をはじめました。
プログラミングでロボットを制御することを通してプログラミングの基本的な考え方を学ぶことができるカリキュラムとなっており、小学校でのプログラミング必修化に向けてプログラミング的思考・問題解決能力・自ら考える力を学べる内容となっております。
プログラミングロボット「KOROBO2」
この教室で使うロボットはエレキットが開発した「KOROBO2」です。
KOROBO2
KOROBO2はパソコンでプログラミングをすることで2つの車輪で動く自律型ロボットで、タッチセンサーと光センサーを搭載しています。
今回の記事では、教室の全5回のうちの第1回~第2回の様子と、どんなことを学んでいく内容になっているかをお伝えします。
それでは早速はじめていきましょう。
プログラミング教室、スタート
エレキットの越戸先生「皆さんこんにちは~」
今回の教室で講師を務めるのは、株式会社イーケイジャパンで製品開発をしている越戸先生です。ソフトウェア開発や電子回路設計を専門としてエレキットの製品開発をしている3児のパパです。
さっそく、箱を開けてロボットを取り出します。
今回の教室では組み立て済みのKOROBO2を使いますので、サクッと準備完了です。
準備が整ったところで、さっそくプログラミングを始めていきます。
プログラミングソフトウェア「PaletteIDE」
今回使うKOROBO2のプログラミングには「PaletteIDE」というソフトウェアを使います。
「これは1秒前進→1秒後退するプログラムですねー」
PaletteIDEはロボットの動きの命令を示すアイコンを並べるだけでプログラミングすることができる、エレキットのプログラミングロボットのためのソフトウェアです。
プログラミングで大事な3つの要素
ロボットや機械を動かすときにはプログラミングをすることが多いですが、その動きはある3つの要素を組み合わせることでほぼ全ての動きを実現することができます。
その3つの要素とは、以下の3つです。
- 順次実行(命令はひとつひとつ順番に行われる)
- くり返し処理(一連の処理をくり返し行う)
- 条件分岐(条件によって処理を選択する)
今回のプログラミング教室では、KOROBO2を動かしてみながらこの3つの要素がどんな性質を持つものなのかを体験していきます。
①順次実行
コンピュータ・プログラムは、コンピュータに対する命令を、やってほしい順番にならべたものです。コンピュータは、プログラムの命令を順番どおりに、ものすごい速さで実行します。コンピュータが順番どおりに命令を実行していくことを順次実行といいます。
順次実行(命令はひとつひとつ順番に行われる)
この順次実行をKOROBO2のプログラミングで実際にやってみましょう。
まずは「前に進む」プログラムを作ってみます。
このように一定の距離を進む動きです。
プログラミングで使うPaletteIDEはこんなかんじの画面です。画面下に並んでるアイコンを画面中央へドラッグ&ドロップするだけでロボットの動きをプログラミングすることができます。
今回の「一定の距離(時間)前進する」というプログラムは下のようなプログラムになります。
A:2.5秒間前進するプログラム
2.5秒前進するプログラム
Aのプログラムは「前進」のアイコンと「待機(2.5秒)」のアイコンが並べられています。
このプログラムをロボットに転送して実行すると、ロボットは「2.5秒間前進」してプログラムが止まります。
しかし、下のようなプログラムを組むと2.5秒前進せずに「2.5秒間何もせず」止まってしまいます。
B:よくある間違い
間違ったプログラム
実はBのプログラムは「スタート」→「2.5秒待つ」→「前進(一瞬)」→「終了」の順番でプログラムが実行されるので、最初の止まっている状態が2.5秒間続けられ、肝心の「前進」は実行される時間はほんの一瞬で、そのまま「終了」となるため、一連の動作を一言でまとめると「スタート後、2.5秒待って終了」となります。
このように、「一定時間前進する」という一見単純な動きでも、ロボットやコンピュータに命令として与えるプログラムをつくるときは順次実行を意識しながらプログラミングすることが大事なポイントです。
②くり返し処理
コンピュータに同じ命令をくり返しやってもらいたいときに、同じ命令をたくさんならべたプログラムを作るという方法もあります。しかし、この方法はくり返す回数が増えると手間がかかります。そのため、同じ命令をくり返しやってもらうための書き方が準備されています。このような書き方をくり返し処理といいます。
くり返し処理
例えば、↓このようにひたすら往復する動きをするときでくり返し処理が使われます。
実際にPaletteIDEでプログラムをつくると↓のようになります。
「前進1秒→後退1秒」を5回くり返す
順次実行とくり返し処理を組み合わせることで、同じ動きをロボットに好きな回数だけくり返し行わせることができます。単調な動作を何度も続けることができるのがロボットのすごいところですから、このくり返し処理もとても重要なポイントです。
くり返し処理でコースを周回させています
③条件分岐
プログラムの中である条件が満たされているかどうかによって、次に行うプログラムの動きを変えるような書き方を条件分岐といいます。条件分岐による動きを言葉で表すときは『もし~なら、~をして、そうでないなら~をする』といいます。
例えば、「条件」は「タッチセンサーが押されているか、または押されていないか」のようにセンサーのON/OFFをチェックすることが多く、それによって「ONだったら処理Aを行う」「OFFだったら処理Bを行う」というようなプログラムをつくります。
タッチセンサーの状態によって◯と✕が決まります
これを使ってPaletteIDEで「タッチセンサーが押されたとき(障害物に当たったとき)は1秒間後進し、そうでないときは前進する」というプログラムを作ると↓のようになります。
障害物に当たったら1秒間後進するプログラム
このようにセンサーの状態によって◯か✕かが決まって実行する処理が変わるプログラムができました。
箱にぶつかったら1秒間下がるプログラムを実験中
生活の身近なところにも条件分岐はたくさんあります。
例えば、自動ドア。人が自動ドアの前に立つとセンサーがそれを検知して自動でドアが開きますが、これも条件分岐です。「もしセンサーで人を検知したらドアを開き、そうでなければドアを閉じる」という動きが条件分岐ですね。
また、この「ドアを開く」は順次実行、これをずっとくり返すのが「くり返し処理」であることもわかります。
このように世の中にある機械の多くは
- 順次実行
- くり返し処理
- 条件分岐
でその動きをつくり出すことができます。
自動ドアの他にも、自動販売機や炊飯器など、いろんなところにプログラミングが隠れています。
目の前に電気で動く機械があるときは「これはどんなプログラムで動いているのだろう…?」と観察してみると面白いかもしれません。
「5S」
この日のプログラミング教室が終わりそうな時間になった頃、スクリーンに「5S」の文字が映し出されました。
どうやら某スマートフォンの宣伝とかではないようで、これは製造業の世界ではよく使われる言葉のようです。
『5S』というのは「整理・整頓・清掃・清潔・躾(または習慣)」という頭文字がSで始まる言葉を総称したものです。
- 整理(不要なものを捨てること)
- 整頓(使うものをきれいに並べて使いやすくすること)
- 清掃(道具や環境をきれいに保つこと)
- 清潔(整理・整頓・清掃を維持し、衛生を保つこと)
- 躾/習慣(決められたルール・手順を守る習慣をつけること)
ものづくりやプログラミングの技能を身につけることも大事ですが、それと同じくらい大事なのがこの『5S』です。
これができるようにならないと、物を壊したり失くしたり、時には自分自身が怪我をしてしまうことにもつながります。
使ったものはきれいに片付ける。大事なことですね。
KOROBO2を箱の中にきれいに整頓します
まとめ
全5回の教室のうち2回が終わり、
- 順次実行(命令はひとつひとつ順番に行われる)
- くり返し処理(一連の処理をくり返し行う)
- 条件分岐(条件によって処理を選択する)
を学びました。
これができればいろんな動きをKOROBO2でプログラミングすることができます。
- 『5S』
も学びました。
プログラミングやものづくりに限らず、5Sはとっても大事です。
これからはこれらの基礎を組み合わせて、ライントレースなどの応用的な課題に取り組んでいきます。
引き続きがんばっていきましょう!
次の記事 > KOROBO2でライントレースにチャレンジ!