スクラッチで学べるロボットプログラミング教材【クムクム】について
ロボットプログラミングは、画面だけで動くキャラクターをコントロールするより、より具体的なモノを動かすため、プログラミングを学ぶにはとてもいい教材です。
特に、クムクムロボットのように、キット式のロボットであれば、組み立てていく途中においてメカや電子の構造をより深く理解できるうえ、自分で組み立てたロボットであることからとても愛着がわき、完成後は早く動かしたい!という気持ちになること間違え無しです。
他のロボットプログラミングと同じようにクムクムロボットも多くのプログラム言語をよういしていますが、その中でも最も簡単で分かりやすいのがScratch(スクラッチ)です。
Scratch(スクラッチ)は、他の言語とは異なり、ブロックを重ねていくだけでどんどんロボットの動きを作っていけるため、子供達にはより理解しやすく楽しい教材となることは間違えありません。
クムクムでロボットプログラミングを学べる塾
Scratch(スクラッチ)だけではなくPythonも小学生から学べる本格的なオリジナル教材が用意され、楽しさから将来の夢までを見ることができる塾です。
なぜスクラッチなのか?
本格的にロボットをコントロールするためには、C言語など難しいプログラミングスキルが必要な上、さらに電気や機械的な知識も必要です。
例えば芦屋腕を動かすためのサーボモータのコントロールであったり、超音波距離センサーのコントロールであったり、一般の方には非常にハードルが高くまた手続きも複雑です。
なによりキータイピングによる英語入力が基本となり、ミスタイピングしがちな子供たちにとってはロボットを動かす以前に、コマンドを入力するだけでとてもつらいものでなかなか面白さを味わうことができません。
その点からすると、ブロックをマウスで重ねていくだけのスクラッチは、多くのハードルを簡単に超えることができるうえ、またクムクムロボットでは難しい制御も簡単なブロックでまとめられているため、ロボットを直感的に簡単に動かすことができてしまいます。
子供にとって楽で楽しい最適なScratch(スクラッチ)
Scratch(スクラッチ)は、マサチューセッツ工科大学(MIT)のメディアラボが開発したプログラミング教育用の言語で、70以上の言語に対応しており、200以上の国と地域でプログラミング学習に利用されています。
しかも無料でインターネットから使用できるため、実に沢山のScratch(スクラッチ)人口が世界にいます。
小学校の教科書においても、プログラミング部分はスクラッチのようなブロックで記述されていますので、小学生にとってもなじみ深い言語であることに間違えはありません。
クムクムロボットとScratch(スクラッチ)の組み合わせメリット
とにかく面倒なコードを書かずブロックのドラッグ&ドロップでプログラムを作ることができる「ビジュアルプログラミング言語」であるScratch(スクラッチ)は、今すぐに目の前にあるロボットを思い通りに動かしてみたい!という気持ちにはぴったりの言語です。
クムクムロボットでは、スクラッチ(Scratch)で作られたプログラムをクリックして実行をしたとたん、1行1行リアルタイムに丁寧にロボットにワイヤレス送り出され、それを受けたクムクムロボットはプログラム通りに動きます。
作ったプログラムをロボットにダウンロードする時間もなく、クリックした瞬間にScratch(スクラッチ)とロボットが連携を始めるライブ感は、子供たちにとって何より楽しい瞬間のはずです。
とにかく難しいことを考えずにロボットを動かす!その気持ちがプログラミング的思考を自然に育て上げます。
クムクムにはそれを楽しんでもらうための仕掛けがいっぱいあります。
ロボット機能としてのクムクムの楽しい特徴
1.Scratch(スクラッチ)だけで二足歩行ができる
クムクムロボットとしての一番の特徴は、4個のサーボモータをスクラッチ(Scratch)からプログラミングでコントロールして二足歩行ができる点です。
4個のサーボモータをコントロールするためのスクラッチのコマンドが用意されていて、各モータの角度や動作速度を細かく指定することができます。
スクラッチ(Scratch)プログラミングに必要なモータコマンドでは、あらかじめ同時に動かしたいモータの回転角度を指定しておき、最後にモータを動作させるコマンドを送り出します。
スクラッチ(Scratch)のプログラムが実行され、モータを動作させるコマンドをクムクムロボットに送り出した瞬間に、すべてのモータは同時に動き出し、指定した動作時間で動作が完了します。
スクラッチ(Scratch)側では同時制御を一切気にする必要なく、ただ動かしたモータのコマンドを並べて、角度を指定して、何秒で動け!と指定するだけでロボットは勝手に動いてくれます。
また、スクラッチ(Scratch)に用意している動けというコマンドにも2種類あり、すべてのモータが動き終わるまで次のスクラッチコマンドを実行しないコマンドと、動けと命令を投げかけたら動作完了を待たずに次のスクラッチのコマンドブロックを実行するものがあります。
前者は、モータが動き終わるまでスクラッチ(Scratch)プログラムの次の命令が実行されないため、スクラッチ(Scratch)側では何もプログラミングに苦労することなく、様々な動きを簡単に作ることができます。
ロボットの動きもめちゃくちゃにならずに、確実に動いてくれます。
一方後者は、動けと送ったすぐ後に、モータの別角度へのコマンドがあった場合、動き終わらないうちに次のコマンドを実行しますので、ロボットが目的通りの結果を得るためには、スクラッチ(Scratch)の●秒待つコマンドを使いうまく自分で動作タイミングを作っていく必要があります。
これには、スクラッチ(Scratch)とロボットのコマンドの通信時間などもあるため、微妙に難しい反面、細かくロボットの動きのタイミングを調整できるので、プログラミング次第では細かい動きをするスクラッチ(Scratch)プログラミングテクニックが学べます。
2.スクラッチ(Scratch)で入力したローマ字で日本語を話す(多彩な表現)
クムクムロボットには、アクエストークという日本語発話用のLSIもしくはソフトウェアが搭載されています。(入門モデル R3JではLSI、中級・上級モデルR321Jではソフトウェア)
この機能はとても多彩で、アクセントや日本語独特の表現(数字の桁読みや本、分などの数字による読み上げ)ができます。
本来、このLSIはCPUからのコマンドで利用するものですが、クムクムではスクラッチ(Scratch)から利用できるコマンドを特別に用意し、スクラッチ上でブロックを重ね、喋らせたい文字や数値をスクラッチのブロック内に記述するだけで利用できるようになっています。
スクラッチ(Scratch)コマンドからは喋らせたい日本語をローマ字として記述するだけです。
また数字や記号などはそのまま記述して利用でき、アクセント記号は文字の中に埋め込むことができます。
ロボットはまるで人間のように自然に言葉を喋ることができます。
3.簡単に光ったり消えたりするRGB-LED
クムクムロボットのボディーの真ん中あたりには1つLEDを搭載しています。
このLEDは5mm砲弾型のRGB-LEDで、RGB各色をスクラッチのコマンドから個別にコントロールすることができます。
入門モデル(R3J)以外では、輝度をコントロールすることができます。(2023.12月現在はArduinoプログラミングでのみ対応)
まもなくスクラッチ(Scratch)コマンドでも輝度コントロールを搭載する予定ですので、搭載後はスクラッチから簡単にフルカラーコントロールが可能となります。
4.効果音や音楽演奏もできるBEEP音
クムクムロボットにはオーディオアンプを搭載しており、おなかの部分のスピーカから簡単なスクラッチ(Scratch)のコマンドで音を鳴らすことができるようになっています。
BEEP音の出力と日本語の出力は、同じアンプを通じてミキシングされますので同じスピーカから鳴ります。ボリュームもありドライバーで回すだけで簡単に音量コントロールもできます。
スクラッチ(Scratch)からのは、音の高さを周波数の数値で指定し、また音の長さを秒数で指定できるため多彩な効果音を鳴らすことが可能です。
5.スクラッチ(Scratch)から簡単に制御できるサーボモータ 腕・顔
足以外にも、クムクムロボットに搭載しているサーボモータは右左の両腕と顔があり、これらすべてススクラッチ(Scratch)のコマンドによって個別に角度を指定してロボットプログラミングすることができます。
特に顔については、目の部分にセンサーを搭載しているため、スクラッチからうまくプログラムを組むと、レーダゲームロボットのようなプログラミングも可能です。
6.スクラッチ(Scratch)で計測できる障害物物体距離 距離センサー
クムクムロボットの目の部分には超音波距離センサーが搭載されています。
このセンサーは、電子工作の世界ではとてもポピュラーなセンサーで、普段はArduinoからC言語によってコントロールするのですが、クムクムではスクラッチ(Scratch)から利用できるコマンドブロックを搭載しています。
「距離を測って」のスクラッチ(Scratch)でのコマンドはコールされた瞬間に超音波距離センサーをコントロールし、障害物までの距離を計測し、距離というスクラッチに要した変数に値を返します。
スクラッチ(Scratch)では、この2つのブロックを使うことで、障害物検知などができるようになります。
7.音の検知もスクラッチ(Scratch)で可能なマイク
クムクムの胸の部分にはもう一つ、小さな穴が開いていて、ここに外部の音を拾うためのマイクが搭載されています。
マイクは、入門モデル(R3J)ボットボットではアナログマイク、SE中級モデル(R321E)ロボットとPRO上級(R321J)モデルロボットではデジタルマイクが搭載されています。
スクラッチ(Scratch)でプログラミングで利用できるコマンドは音の大きさ(0~100)までですが、PROロボット版ではArduinoを使えば音波形なども取得することが可能となります。
スクラッチにおいては、音検知というコマンドと、検知した音をためておく音というスクラッチ変数の2つのブロックで処理をします。
スクラッチ(Scratch)とロボットの連携
クムクムに用意しているスクラッチは、デスクトップ版とWEB版があります。
すでにデスクトップ版はサポート外とさせていただいていますのでここでの説明は割愛させていただきます。
WEBで動作するスクラッチは、MITから公開されているスクラッチのソースコードをカスタマイズしています。
クムクムロボットとBLEで専用に通信が可能な拡張ブロックを追加し、クムクムロボット機能との中間に位置するブリッジソフトウエアを通じてスクラッチ(Scratch)とロボットを結んでいます。
WEB版ではBLEをブラウザーから利用する必要があるため、この機能が許されているChromeかEdgeでのみクムクムロボットはスクラッチプログラミングが可能となっています。
FireFoxやSafariでもスクラッチ(Scratch)機能は動作しますが、クムクムロボットとの通信が動きません。
また、スクラッチ(Scratch)とクムクムロボットの間はBluetoothを通じて双方向のデータ通信を行っています。
スクラッチ(Scratch)はプログラムを実行すると1行1行順にコマンドを実行していき、クムクムコマンドが現れるとスクラッチ(Scratch)からBLEでクムクムロボットにデータが送り出されます。また逆に定期的にロボットから送られるデータもBLEを通じてスクラッチに通知されます。
この機能によって、スクラッチ(Scratch)プログラミングはリアルタイムにクムクムロボットをコントロールすることが可能となっています。
クムクムに期待するスクラッチ(Scratch)コマンドの今後の展望
クムクムロボット用のスクラッチ(Scratch)コマンドは日々バージョンアップを検討しています。
例えば、モータを番号で指定できるスクラッチコマンドがあったら、スクラッチからは簡単に変数を使ってロボットをコントロールすることができるようになります。
また、LEDについても、現在のスクラッチ(Scratch)コマンドでは赤・青・緑で指定をしますが、これが数字であれば同じようにスクラッチから簡単に数値で指定できるようになります。
もちろんSEやProでは輝度調整もしたいところです。
日本語発話においては、せっかくなのでアクエストークのコマンドをそのまま送信できるスクラッチブロックがあると便利です。
また、ちょっとでも通信速度を速くするために、ロボット側から定期的に通知される情報をカットするオプションブロックも必要です。
現在、スクラッチ(Scratch)に用意している距離センサーコマンドでは30cmまでしか計測できませんが、実は機能的には100cm程度は計測できるため、その対応を急いでいます。
またPRO・SEにおいてはWiーFi機能を使えるようになると、ロボットの動き枠が広がります。
現在のロボット内の電池残量なども取得できるスクラッチ(Scratch)コマンドがあると便利かもしれません。
本格的にスクラッチ(Scratch)で制御を学ぶために
本格的にITの道を目指す子供たちのために、スクラッチ(Scratch)で学ぶプログラミング基礎コースを作っています。
スクラッチ(Scratch)はブロックを重ねていくビジュアル言語なので、どうしても簡単で楽しいお遊び的な感覚が強く印象ずいていますが、しかし、スクラッチ(Scratch)はプログラミング言語が持つほとんどの機能を持ち合わせています。
そのため、本格的にスクラッチ(Scratch)でプログラミングテクニックを学べば、そのまま簡単にCやPythonに移ることができてしまうのです。
とっつきやす学びやすく面白く手軽なスクラッチ(Scratch)をプログラミング入門ツールにしない手はありません。
スクラッチ(Scratch)で学ぶメリット
スクラッチ(Scratch)は無料であるため非常に使いやすいツールとなっています。またブロックをマウスで重ねていくビジュアル的にも操作的にも使いやすいツールです。
PythonやCでのコードプログラムは、見た目専門的に見えやってみようという気になるにはそれなりの覚悟が必要ですが、スクラッチ(Scratch)は下記のメリットを生かして、まずは大人もスクラッチからプログラミングの壁を簡単に越えてみることができるので、まず使ってみてはいかがでしょうか。
- 視覚的学習がやりやすいメリット: スクラッチはドラッグ&ドロップ式のブロックベースのプログラミング言語で、だれでもが直感的で理解しやすいです。
- 創造性を促進してくれるメリット: ゲーム、アニメーション、インタラクティブなストーリーなど、自分のアイデアを簡単に楽しく実現することができます。
- 基本的なプログラミング概念の理解ができるメリット: スクラッチを使うことで、ループ、条件文、変数などの基本的なプログラミング概念を確実に自然に学ぶことができます。
ロボットとスクラッチ(Scratch)を組み合わせたメリットも
スクラッチ(Scratch)だけでもプログラミングは十分に学ぶことはできますが、残念ながら画面で動くだけのキャラクタープログラミングでは具体性に限界があると感じます。
またゲーム性が高くなり、どうしてもプログラムの中や構造、文法を理解せず、ゲームとしての結果を焦ることになりがちです。そのため、結局他人が作ったゲームなどを動かして遊ぶような結果に終わることも少なくないようです。
その点、ロボットと組みああせることで、今後必要な未来の世界により近づき、より視覚的に理解がしやすくなります。以下メリットをまとめてみます
- 実世界への応用が見えやすくなります: ロボットプログラミングは、学んだプログラミングスキルを物理的な世界に応用する機会を提供します。これにより、学習がより実用的で具体的になります。
- 問題解決スキルがよりアップします: ロボットを使うことで、学習者は具体的な問題(例えばロボットが障害物を避ける方法)を解決するためのプログラミングを学びやすくなります。
- STEM教育の促進に結び付きます: ロボットを使用することで、科学、技術、工学、数学(STEM)の分野における関心と理解がより深まります。
- フィードバックと調整が本格的にできます: ロボットは即時のフィードバックを提供し、学習者は自分のコードがどのように動作するかを直接見ることができます。これは、試行錯誤を通じて学ぶのに役立ちます。
- チームワークとコラボレーション力がつきます: ロボット関連のプロジェクトはしばしばチームで作業され、協力とコミュニケーションのスキルを育てます。
ロボットとスクラッチ(Scratch)を組み合わせた場合に学べる力・知識
- ロボットのナビゲーション: 学習者はスクラッチ(Scratch)を使ってロボットをプログラムし、特定のコースをナビゲートさせるようなプログラミングを行うことで空間認識と論理的思考を促進することができます。
- センサーの活用: ロボットのセンサーを用いて、環境からの入力(光、音、距離)に基づいて反応するプログラムを作成することで、原因と結果の理解を深めることができます。
- 創造的なプロジェクト: ロボットを使って独自の物語やゲームを作成することで、技術的スキルと創造性を組み合わせより豊かな人間形成に役立ちます。
今後のロボットの進化を考えてみる
10年後を考えたとき、様々な側面からロボットはもっともっと進化し普及すると考えられます。
技術面から….
- イノベーションが加速します: 技術革新は通常、指数関数的なペースで進むため、今後10年間でロボット技術が進化することは十分に考えられます。
- AIの統合が進みます: 人工知能(AI)の進歩に伴い、より高度で自律的なロボットがどんどん開発される可能性が高まっています。
経済的な面から…
- コストの低下により…: ロボット技術の製造コストは必要に迫られどんどん安くなり、より多くの企業や個人がロボットを導入しやすくなります。
- 労働市場への影響により: 特定の業種では、労働力不足や効率性の向上のためにどんどんロボットを増加させていくと考えられます。
社会的な面から…
- パブリックの意識アップにより: 社会全体がロボットの利用に対してもっと理解と欲求が高まり、より開かれた態度を取るようになると、その普及は加速されます。
- 教育とスキルの工場: ロボットに関する教育とトレーニングがもっと普及し、より多くの人々がロボット技術を受け入れ利用できるようになります。
政策や法規制の面から
- 規制が進展して…: ロボットに関する法規制や基準がもっと整備されれば、安全かつ効率的にロボットを導入することが可能になり、ロボットの需要は増えます。
- 倫理的な考慮を進めて: プライバシー、雇用、倫理的な問題に対する明確なガイドラインがロボットの普及によって影響を与えることが考えられます。
これらの要因を総合すると、10年後には現在よりもロボットがより一般的になっている可能性が高いと考えられます。
特に製造業、医療、サービス業、個人用途(家庭用ロボットなど)での利用が増えつと見込まれます。
ぜひ未来あるロボットの世界をスクラッチ(Scratch)で体験してください。