2017年12月30日土曜日

2017年12月報

1.12月授業内容
2.今月の課題
3.今後の授業スケジュール
4.お知らせ
5.ご挨拶


1. 12月授業内容


1.0 <スタートアップ(全コース)>


 割愛します。(アドバンスプログラミング生は2017年9月報を参照)


1.1 <プライマリーコース『アルペンくん』>



 割愛します。







1.2 <ベーシックコース『がたごとレスキュー隊』>


 救助ロボットです。


1日目では、何の変哲(へんてつ)もなさそうな4輪車に留(とど)まりましたが、車体底面の地上高(自動車用語でロードクリアランス)が低いため、少しの段差で引っ掛かってしまい、がたごと道はとても無理のようですね。
それでも、ちょっとした工夫があるのです。それはスピードが“(おそ)”ことです。

 ギアボックスをよく観察してみましょう(*1)。
モーター軸(じく)のピニオンギア(歯数8)が、まずベベルギア(歯数24)を回し、続いてベベルギアと同軸(つまり等速)のピニオンギア(歯数8)が、両隣(りょうどなり)のギアM(歯数24)を回しています。
タイヤはこのギアMと同じスピード(等速)で回転します(*2)。

歯数8のギア歯数24のギアを回す構成が2段ありますので、1段目で1/3に減速、2段目でさらに1/3に減速することになり、モーターの回転を1/3×1/3=1/9に減速してタイヤを回しています。
つまり、モーターが9回転してタイヤがやっと1回転する遅さです。

 遅いだけなら、何のメリットがあるのでしょう?
実は回転する力(トルク)が9倍になるという恩恵(おんけい)があるのです。
試しに、タイヤを外したシャフトを手でギュッと摘(つ)まんでみてください。
大人でも止められない程に強力ですよ。レスキュー隊として頼もしい力強さが準備できました。


 2日目では、ロードクリアランスの問題を解決します。
もっと大径のタイヤを装着できればよいのですが、タイヤLで最大ですので、代案が必要です。
そうです、タイヤSをクロールする手のように装着するのは、瞬間的に地上高を上げる効果も狙(ねら)っているためです。
バタバタと騒々(そうぞう)しいですが、これで多少の凹凸(おうとつ)は乗り越えられるようになりました。


あとは、4脚(きゃく)の取り付け方向ですね。
4脚とも揃(そろ)えるのか、左右は揃えて前後でずらすのか、全てを90°ずつずらすのか。
後者ほど、いずれかの脚(あし)が地面を掻(か)いている期間が長く、推進効率に優れそうですが。


 最後の競技は、がたごとレース!
瓦礫(がれき)に見立てた材木等を敷(し)き、成功率20%の難関コースを乗り越えて救助に向かえるかどうかを競います。


瓦礫を前に立ち往生(おうじょう)し、脚がもげるなど、「救助隊が必要な救助隊」が多い中、4脚の向きを全てずらしたロボットの成功が目立ちました(*3)。

4脚とも揃えたロボットでは、どの脚も着地していない間に、せっかく乗り上げた瓦礫を底面で滑(すべ)り下りてしまいました。

左右または前後の2脚ずつ揃えたロボットでは、瓦礫に乗り上げて傾いた胴体をさらに傾かせ、転覆(てんぷく)するか、でんぐり返っていました。



 ただ、路面の起伏(きふく)や摩擦状況により最適な構成が変わり得ますので、脚を揃えるのが常に不利と思わないようにしてください。
激しい凹凸を乗り越えるだけなら、4脚一斉(いっせい)に胴体を持ち上げた方が有利のはずです。
その後、胴体着地している間に滑り落ちないよう工夫すれば最強かもしれません。


*1 もしくは、テキストp.7~8の写真を見てください。

*2 前タイヤは、一方のギアMと同軸に付けられて等速で回り、後ろタイヤも、もう一方のギアMから始まって、ギアM同士で等速に伝わります。

*3 胴体と干渉(かんしょう)しないようクリアランスを確保しつつタイヤLに換装(かんそう)するなど、独自の工夫を凝(こ)らして走破(そうは)した人もいました。


1.3 <ミドルコース『プログラミングカー』>


 “プログラミング”と“カー”にそそられます。
“カー”だけに製作も理解も難しくはありませんが、生みの親で、アイデアコンテストで最優秀賞に選ばれた当時小学6年生に脱帽です。


 他のロボットでも、本体の製作時に動作をプログラミングする要素はありますが、本体(ハードウェアプログラム(ソフトウェア)媒体(ばいたい)を明確に分離した点で、唯一無二(ゆいいつむに)のロボットです。

 プログラムとは何でしょう。一連の動作や演目などの手順(表)ですね。
本体の設計を変更することなく、プログラムだけで動作を決定できる利点があります。
ゲームソフトやアプリのアップデート等が最たる活用例ですね。
コンピュータ類に限らず、テレビ、エアコン、冷蔵庫、洗濯機、炊飯器まで、現代の殆(ほとん)どの電気製品がプログラムに則り動作しています。

 本ロボットのプログラム媒体は、赤いロッドを繋(つな)ぎ合わせた一本の棒で、その幅(1~3本分)により、右折・直進・左折を指令します。
また、ロッドを円形に組めば無限ループを実現でき、永遠とジグザグ走行や8の字走行を繰り返すこともできます。

走行用モーター動力をプログラムロッドの送り用ローラーにも分配しているところがナイスです。

自動織機や自動演奏オルガンから始まって、黎明期(れいめいき)のコンピュータも、パンチカードと言って、無数のパンチ穴を開けた何十メートルもの紙を送ってプログラムやデータをセーブ・ロードしていましたが(*1)、その様を彷彿(ほうふつ)とさせます。


 2日目最後の競技に、三角コーンやテープで指示されたジグザグコースを無事に完走するプログラムを設計してもらいました。

このとき、試行錯誤を重ねながら仕上げるのも現実的な成功方法なのですが、計算によって一発成功を狙う科学的方法も追求して欲しいと思い、授業中に余力のある人に挑戦状を掲(かか)げました。


【お題】
 ロッド1穴分(約1cm)送る毎にロボットが何cm進むか?(小数第1位まで)
ただし、ロッドを送るタイヤS直径を38mm、本体を推進させるタイヤL直径を51mmとする。

【解答】
 タイヤSとLの1回転あたりの移動距離(変位)の比は、円周長の比であり、これは直径の比に等しく、38:51である。
ここで、ギア構成により、タイヤLの回転数はタイヤSの3倍である。
よって、タイヤLによる変位は、タイヤSに比して 3×51/38≒4.026倍となるので、
本ロボットは、ロッド1穴分(約1cm)あたり約4.0cm進む

 実際は、各所のスリップの影響により誤差が出ますが、例えば、55cmのロッドでは220cmのコース取りをプログラミングできるという“アタリ”が付けられるようになり、最初から成功に近づける可能性が高まるのです。

算数/数学が得意な人は、円周率3.14やπ(パイ)を持ち出して面倒な計算をしても同じ答が出ることを確認し、比を用いた考え方を深めてください。


*1 テキストp.22参照


1.4 <アドバンスプログラミングコース『アルクンダーZ(1)』>



 《下記を参照下さい》
  http://robocobo.sakura.ne.jp/blog/robot/adv1-1712.pdf







1.5 <プロ3年目コース『不思議アイテムIII-2(3)』>


 フルカラーLCD(液晶ディスプレイ)を使い尽くす最終月です。

 初めに、オブジェクト指向というプログラミングスタイルが紹介されましたが、
従来的な手続き型スタイルによる変数関数といったものは、本来それらによる操作の対象もしくは主体(言わばモノ=オブジェクト)があるはずで、
どこからでもアクセスできるように無所属的に散在させてバグの温床となるのではなく、オブジェクトに連関させて存在(*1)させようというアイデアです。

オブジェクト指向プログラムでは、変数プロパティ関数メソッドとも呼びます。

例えば、「住民票の発行」という手続き(メソッド)は、市役所職員という概念(クラスから実体(インスタンス)化された職員Aという人物(オブジェクト)が担うのであり、
同じくインスタンス化された別の職員Bも、別の「住民票の発行」を担う能力(メソッド)情報(プロパティ)を持ち合わせますが、
自転車の販売と修理」が専門の工員Cにはその能力もなければ、市役所の情報も操作できないという権能志向で、安全性と記述性を高めます

これは、一定以上の(バグが出まくる)規模のプログラムを作成する段にならないと理解が難しい概念ですので、先ずはプログラムをどんどん書いてみることです。

 さて、コーディングスタイルはともかく、描画アプリケーションの数々に触れましょう。


 1日目は、中学数学から習った関数グラフのCG描画です。
1次関数 y=ax+b による直線2次関数 y=ax2 による放物線など、机上では面倒なだけ(?)のグラフも、1ドットずつ座標計算しながら打点するプログラムが鮮やかに直線や曲線を紡(つむ)ぐのを見ると、実感が湧くというものです。


高校数学の三角関数 sin(x), cos(x) を組み合わせると、シンプルな式から予想外に美しい幾何学模様が生まれ、色々試したくなります。
方眼紙に手計算では、とても描けるものではありません。コンピュータが無い時代の数学者なら泣いて感激するところでしょう。

 ステップアップして、立体図形をぐりぐり回転させる3次元ポリゴンCGアニメともなると、
毎フレーム全頂点について、3次元空間座標を三角関数により回転し、2次元平面(画面)へ投影する中で、陰線・陰面処理、角度によって面の明暗や模様を変化させるシェーディングテクスチャマッピング等、膨大かつ高速な計算処理が要求されます(*2)。

全部自分で計算するArduino用マイコン(*3)には荷が重そうでしたね。
過去の非力なコンピュータもリアルタイム描画が苦手でした。
現在のPCやスマホがいとも簡単にやってのけるのは、爆発的に高速化したCPUやメモリの恩恵もありますが、これまた爆発的に進化したポリゴン座標計算・描画専用のGPU(Graphics Processing Unit)が搭載されているお陰です。


 2日目は、クリスマス・イブに相応しい(?)、素敵なエクスペリエンスに満ち溢れました。

 1つは、フラクタルという幾何学図形の造形手法で、「図形の全体と部分が自己相似になっている」と表現されます。
地形(海岸線など)や生物器官の分岐構造(血管)等、自然界の複雑な造形パターンにも、比較的単純なフラクタル構造(の近似)が当て嵌(は)まるとする研究もあり、CGによる創生シミュレーションが面白い分野です。










教養としても、コッホ曲線ギャスケットの三角形木の枝シダの葉など、「これぞフラクタル!」というプログラムの典型例を体験しました。

複雑な図形の割に、プログラム行数(数式)や変数が少なく、ちょっと弄(いじ)っては変化を楽しむというのも、コンピュータを得た現代人の特権です。

 もう1つは、ゲームプログラムです!
真っ当なコンピュータゲームを作るのに必要なデバイススキルは、もう全て手中です。


ハードウェアとして、LCD、コントローラ用ボタン(タクトスイッチ)の結線を、
ソフトウェアとして、ゲームのルールを定める論理(条件分岐・ループなど)の記法と、点打ち(ドット絵)や線引き・面の塗り潰し関数ライブラリの使い方を知っています。


シンプルなゲームプログラムからパラメータを弄り始めて、自分好みに改造するというのも、やる気と楽しさが尽きない、冬休みにぴったりな挑戦でしょう。
家族を欺(あざむ)いて自分だけが有利にプレーできるよう、こっそり隠しコマンドを仕込んでみるのも面白いですよ!(*4)


*1 オブジェクトには生成~消滅までの寿命があり、専属の変数(プロパティ)や関数(メソッド)も生死を共にする他、誕生会(コンストラクタ)や葬式(デストラクタ)に相当する儀式(自動的に呼び出されるメソッド)も定義でき、大規模プログラムには便利です。

*2 しかし、基本は高校の三角関数までで実現できます。
 自力で3D座標計算・描画ライブラリを作成してみようという高校生の生徒さん、数学の応用に適ったナイスな挑戦です!

*3 英Atmel社製AVRマイコンシリーズ ATmega328P で、28ピンDIP・8ビットCPUコア・20MHz・32kBフラッシュメモリ搭載品です。

*4 隠しコマンドの受付けには、一定以上の入力シーケンス(上上下下左右左右…など)を記憶しながら検査する必要があるため、面白いだけでなく、ちょっとしたプログラミングテクニックの修練にもなり、良いネタです。


2. 今月の課題


 <スタートアップ(全コース)>
  特にありません

 <プライマリーコース>
  - オリジナル図面プリント

 <ベーシックコース>
  - オリジナル課題プリント(3面図+設問)
  - 上記授業内容を精読する(概ね3年生以上/低学年は補助の下で)

 <ミドルコース>
  - オリジナル課題プリント(3面図+設問)
  - 上記授業内容を精読する

 <アドバンスプログラミングコース>
  - 上記授業内容を精読する

 <プロ3年目コース>
  - 上記授業内容を精読する(該当テキストページを見ながら)


3. 今後の授業スケジュール


◆小倉北1/21は『商工貿易会館(シティプラザ)』で開催します。
◆なかま1/27はハーモニーホール利用不可の為、代替施設(未定)で開催します。

 日付の()は臨時、!は原則外、?は予定の意です。

――――――――――【佐藤教室長】――――――――――

[東福間]第1・3土原則
 (2017年12月~)
   - 10:30~ アドプロ(/ミドル臨時)
   - 13:30~ ベーシック/プライマリ
   - 15:30~ ミドル(/アドプロ臨時)

 (2018年4月~予定)
   - 13:30~ ベーシック/プライマリ
   - 15:30~ ミドル
   - 17:30~ アドプロ

 ⇒ 1/6, 20,  2/3, 17,  3/3, 17


[東福間プロ]第2・4日原則
   - 15:30~ プロ3年目

 ⇒ 1/14, 28,  2/11, 25,  3/11, 25


[中間]第2・4土原則<なかまハーモニーホール>
   - 13:30~ ベーシック/プライマリ
   - 15:30~ ミドル
   - 17:30~ アドプロ

 ⇒1/13 第1回 3F会議室2
  1/27※第2回 代替施設(未定)
  2/10, 24,  3/10, 24

 ※1/27はハーモニーホール利用不可の為、代替施設(未定)で開催します。


[小倉北]第1・3日原則<ムーブ>
   - 10:00~ ベーシック/プライマリ
   - 13:00~ ミドル
   - 15:00~ アドプロ/ベーシック第2部

 ⇒1/ 7 第1回 ムーブ   5F小セミ
  1/21※第2回 シティプラザ6F
  2/4, 18,  3/4, 18

 ※1/21は『商工貿易会館(シティプラザ)』で開催します。


――――――――――【菅本教室長】――――――――――

[とばた]第2・4土原則<ウェルとばた8F>
   - 13:00~ 全コース(プロを除く)

 ⇒ 1/13, 27,  2/10, 24,  3/10, 24


――――――――――【中野教室長】――――――――――

[八幡東]第1・3土原則<レインボープラザ4F>
   - 13:30~ ベーシック
   - 15:30~ ミドル
   - 17:30~ アドプロ

 ⇒ 1/6, 20,  2/3, 17,  3/3, 17


[小倉南]第2・4日原則<総合農事センター2F>
   - 10:30~ ベーシック/プライマリ
   - 13:00~ ミドル  /アドプロ

 ⇒ 1/14, 28,  2/11, 25,  3/11, 25


4. お知らせ

 11月課題 高得点者  []内は教室と学年

  ◆プライマリ【9名平均 図面3.6】
   5点…柴田[小倉北2], 林田[小倉南 年長]

  ◆ベーシック【19名平均 図面2.8+設問2.0=4.8】
   10点…荒木[小倉北3]
   9点…なし
   8点…宮尾[八幡東4], 森崎[八幡東2]

  ◆ミドル【23名平均 図面3.4+設問2.6=6.1】
   10点…山本[中間5], 橋本[小倉南3]
   9点…辻[小倉南6], 原[小倉南4]
   8点…吉良[小倉南6], 杉本[小倉南5]

  ◆アドバンスプログラミング【5名平均 図面6.4+設問4.4=10.8】
  最高14点…江平[小倉北7]


5. ご挨拶

 本年も何かとご贔屓を賜りありがとうございました。
 佐藤も中野も、ロボット教室で皆様とのお付き合いの中から数々の気づきを頂戴し、やりたいこと・やるべきことに溢れています。
 何事もそうですが、今年よりも来年を良くするように、そして生徒さんが何か人生のヒントを得られる教室となることを願って鋭意努力して参りますので、どうぞ宜しくお願い申し上げます。
 よいお年をお迎え下さい。


東福間・中間・小倉北教室 佐藤 / 八幡東・小倉南教室 中野