PID制御で動かす倒立振子の動画の後編をアップしました。
どう作っても、堅苦しくなりますね。という反省は一旦置いておきます。
ロボットプログラミングとロボット制御について
今回は、ロボット制御に関して、ロボット教室のスタンスとそこにつながらない原因などを説明します。
ロボットプログラミングの入り口で学ぶこと
ロボットプログラミングは専用のキットを使えば簡単に挑戦できます。これに関してはこの教室で使っているLEGOのロボットキット以外でも変わらないと思います。
モーターを動かし、センサーが反応したら違う動きに切り替える。導入としてはここまでできれば十分ですし、多くの教室でもそういうスタンスで授業を構成しているはずです。
子供向けロボットプログラミング教育のあり方
ロボットは、時間と妖精(裏で改善してくれる大人)が居れば、それっぽく壮大な形に作り上げることができます。(あくまでそれっぽくであって、本気で作ってる方々の作品を比べると色々と粗がみえますけど。)
そして、それを単純に動かすだけであれば、導入レベルのプログラムでも十分に凄く見せることができたりします。
「自分なりのやり方で問題解決につなげる」を悪い意味で解釈してしまうと、「自分ができる範囲の壮大なロボットを作り上げる」ということにできてしまい、どの学習段階でもそれなりにできてしまうんですね。
それはそれで、良い経験にはなりますけど。
ロボット制御は難しい?
ロボットプログラミングを学習する題材にする時の最大の欠点は、導入を抜けた瞬間、とんでも無く難易度が上がってしまうことだと思います。教える側が諦めている節を感じなくはないです。
今回扱った比例制御という制御は、ある意味基本的な制御だと思います。
この世界に入って一ヶ月くらいした時、ロボット競技でライントレースをしている子たちの指導をしていたのですが、自分自身も練習と思い練習後に走らせていました。その時に、センサー値の差で曲がる制御をすればライントレースできるんじゃないか?というところまで自力で辿り着いていました。そこに係数を掛けるという発想までいかずに、動きを見て使い物にならないと判断してしまって少し遠回りしましたが。
それくらい、プログラミングや何かしらのトライアンドエラーが必要な世界で生きてきたことがある人間であれば、数ヶ月でたどり着く内容です。
それでも、子供たちからしたらそんな経験はないですし、そもそも刻々と変わる数字を使って違う制御に活かすなんて発想は、遠い世界のものですからね。比例反比例のグラフや文字式が小6や中1内容ですし。
こういうところから始まっていくので、ロボット制御の入り口は、入り口から険しいというハードルがあります。
子供向けだから?
子供だから理解できない、という先入観は、目の前の子の可能性を潰すと思っています。特定の難しい学習内容があったとして、そこに一発で辿り着けないのなら、それにたどり着くための段階を考えるのがこちらの仕事な訳です。
子供向けでもロボットプログラミング教室を謳っているう以上、そこは踏み込まなきゃいけない分野だと思います。
高度な制御ができない理由は子供に依存するとは思います。でも、それを学習するための力をどうやれば身につくか、という準備段階を含めて考えていくことが子供向け教室の責任だと思います。これを諦めて自然な成長に任せるのであれば教室は不要ではないでしょうか。
PID制御を通じて学んでほしいこと
原理をプログラミングに落とし込む
これが一番に思うことです。プログラミングは、その言語の文法を理解することを基本として、いかにそれを自分のイメージする通りの動きに持っていけるかが重要です。
そうすると、原理を自分なりでいいので理解することが必要ですし、それをどういう順番で計算すれば実現するか、そしてそれが正しいかどうかを確認し、より精度の良いものに調整するという、幅広い見識が必要です。
これはプログラマーになる時も必要な能力です。業務システムを作るのにその業務のことを知らない、理解できないなんていうのは問題外で、プログラムを作るという作業は、実は作るものを理解することが第一歩です。
学業に興味を持ってもらう
公式そのものはそこまで追い求めなくてもと思っていますが、一般的な知識として、微分積分やベクトル、複素数の存在理由や今どういう分野で使われているのかなどは知っておいて損はないと思います。理科や社会を暗記で済ませてはいけないんです。
というか、社会と学問のつながりが勉強の動機になるはずの子は少なくないはずです。将来の夢が朧げでも、こういう分野に進みたいと思った時に、何ができれば良いのかというのをもうちょっと大人は責任を持って紹介しないといけませんね。
高度な制御ができることが価値ではなく、それに対応できる姿勢を身につけること
PIDが高度な制御かどうかという話になると多分、違うと思います。そこまで私自身がロボット工学の専門家ではないので、深掘りできないのが勉強不足を感じてしまいますが。
題材としてイメージがしやすい制御の上、実装もそれほど難しくない、その割に効果が生み出しやすいという点でターゲットにしました。ただ、センサー値と制御対象を観察し、計算を駆使してロボットを調整するという作法は、ロボット制御をしたという胸を張っていい体験だと思います。センサーの反応に任せて動かしているより、ずっと深くて濃い経験で、ロボットプログラミングならではの頭の使い方ができるんじゃないでしょうか。
それをどう活かしていくかという、上の世界の会話ができれば最高ですね。
ロボットプログラミング教室としての役割
子供らが楽しんで試行錯誤してくれるだけでも、良い経験はできます。自然に、それ相応の力も身につくでしょう。STEAM教育や問題解決能力や、論理的思考なども、何もしていない子よりは身につく可能性は高いです。
ですが、その中で、もう一歩、意図的により高いステージに上がってもらう施策はどこまでも必要ですし、それが私の責任だと思っています。
うまくやっていくにはもっともっと自分の技術力を上げないといけませんけどね。
動画は本当に難しいです・・・・