2019年3月31日日曜日

2019年3月報

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


1. 3月授業内容


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


 割愛します。


1.1 <プライマリーコース『のびーるハンド』>


 割愛します。






1.2 <ベーシックコース『う王さ王』>


 “右往左往(うおうさおう)”をもじっていますので、この四字熟語を知っていれば、動作は想像に難(かた)くなかったでしょう。

赤色に目立つ巨大なバンパー(フレーム)を前後に装着した四輪車が、どうも前後(横から見れば左右)の壁にぶつかる度(たび)にスイッチバックして、行ったり来たりを繰り返すようだ、
とまでは予想できましたが、1日目のテキストでは、「スライドスイッチを手で切り替えるのは大変だね」で終わり、核心部分はお預けです。


 2日目でようやく、衝突で押し込まれるバンパーがスライドスイッチを反転させる機構を組み付けました。

しかし、中には下記のポイント【レベル1・2・3】が未解決のため、最後までうまく動作しなかった例も散見されました。
スライドスイッチの固いものであったかもしれません。
レベル毎に順を追って、解決していきましょう。

【レベル1】最低限…
 1) テキストを良く見て、正確に作ること(絶妙に設計されており、自己流では困難)
 2) スライドスイッチのツマミを挟む部品をしっかり組み付けましたか?(ぐらつくようではダメ)(*1)

【レベル2】スライドスイッチが固い人は…
 3) スイッチを数十回左右に切り替えて、少し柔らかくする(モーターを外して!)


【レベル3】壁から受ける衝撃を強めるために…
 4) 摩擦を減らす(タイヤがスムーズに回るように)
 5) スピードアップ(電池4→5本)
 6) 重くする(荷物をのせる・ぐらつかないように)(*1)


【レベル4】それでもダメなら、もっとスピードアップ!
 7) モーター軸のピニオンギアをギアMに交換する(*2)
 8) 左右に走らせる幅を広めにとる(加速に時間がかかるので)

【レベル5】それでダメでも、まだある!
 9) 固いスイッチを弱い衝突力でも動かせるようにするには…?(てこの原理)(*3)


どうです?「ダメだー」と思っても、これだけ、いや、まだ他にもありそうです(*4)。

【レベル2・3・4・5】どれか1つでもOKかもしれません。
特に【レベル4】は簡単にできますし、これで動作しないことは無いでしょう。


 授業中、最後まで諦(あきら)めずに何とか動かそうと奮闘(ふんとう)した生徒さんほど、目からウロコなのではないでしょうか。
解決方法が身に染(し)みると思いますので、ロボットを壊す前に、ぜひトライしてください。


 本来、【レベル3】を自ら考案するのがミドルコース進級レベル、【レベル4】がミドルコース内レベル、【レベル5】がアドバンス進級レベルです。
自分の改造力にしてください。


*1 “ぐらつかない”ことは、大事なポイントです。衝突エネルギーが“ぐらぐら”で失われるからです。
 自動車のエンジンルームがつぶれやすく、車内への衝撃を和らげるのとは逆の考え方です。

*2 ピニオンギア(歯数8)をギアM(歯数24)に替えるので、3倍の増速になります。
 実際は摩擦のせいでそこまで速くなりませんが、かなりスピードアップします。

*3 大幅に作り変える必要があるでしょう。

*4 例えば、走行中に輪ゴムを巻いて、スイッチ切替用エネルギーとして補助的に使うなど。


1.3 <ミドルコース『ロボアーム』>


 ミドルコース中、1・2番を争う傑作(けっさく)に位置付けたい、摩訶(まか)不思議なロボットが巡ってきました!

 動力はいつも通り、電池ボックスに繋(つな)いだモーター1個です。
手元で制御できることはせいぜい、スライドスイッチを反転させることくらいです。
なのに、スイッチを入れると、
1) 垂れ下がったハンド(アームの先端)が物を掴(つか)む
2) アームを水平まで持ち上げる
3) アーム全体が回転して反対側へ運ぶ
の順に動作します。


所望の位置で止め、今度はスイッチを反転させると、先程の逆順ではなく
4) 先ずはアームを降ろし
5) ハンドを開いて荷物を離し
6) アーム全体を元の側に回転して戻す
という一連のクレーン操作を熟練したかのようにこなすのです。

スイッチを入れている間、モーターはずっと一方向に回り続けているだけです。不思議ですね。

 これは言わば、バイクがアクセルをあおり過ぎてウイリーしてしまうのに似た原理です。
バイクのエンジンが生み出した力は、バイク全体を加速させることと、
前輪を浮き上がらせることの2方向に使い道が残されているのです(*1)。
力の逃げ道といった方が感覚的には分かり易いでしょう。

通常は、ウイリーよりも小さい力で済む加速だけに使われますが、
物体(バイク)は素早く加速させようとするほど大きな力を要する慣性の法則(*2)により、あまりに強大な力(エンジン全力)にとっては、ウイリーさせる(前輪を浮き上がらせる)方が“”なのですね(*3)。

 ロボットアームでは、慣性の法則は殆(ほとん)ど効いていませんので、負荷(アームに掛かる重力や、ジョイント部の摩擦)の軽い順に可動範囲を使い果たし、力が次々と逃げ道を探すのです(*4)。


実際、3段階目のアーム回転動作が軽すぎて、2段階目の持ち上げ動作をスキップしたり、並行動作したりするなど、不安定になる場合がありましたが、
・ 土台(ギアボックス)と回転アームの間に輪ゴム(またはホイール抜きタイヤ)を挟む
・ アーム自体を装飾して重くする
ことで摩擦を稼ぐと、スムーズに動作しました(*5)。


 完成したロボットで、荷物搬送ゲーム(アメ玉キャッチャー)をプレイしました。
ロボットの片側エリアからアメ玉を掴んでは、アームを180°回した先のトレイ上に降ろしてゲット!
アームの回転摩擦力を増やして、しっかり持ち上がるようにしておかなければ、トレイの縁の高さに阻(はば)まれます。


単純に思えたスイッチの反転操作に手間取る(必ずしも逆順に動作しないので、細かなやり直しが難しい)一面もありましたね。


*1 接地状況により、ホイールスピン(タイヤを路面上で空転させる)を3つ目に数えることもできます。

*2 高校物理で学ぶ、〔力=質量×加速度(F = m・a)〕です。



*3 “楽”に動く方が選ばれるもう1つの原理は、作用・反作用の法則です。
 物が動き始めるには、別の物を押して返ってくる反力をもらわねばなりません。
タイヤのグリップ力が強大で滑らない場合、固い地面はバイクのエンジンパワーに負けることなく、タイヤが蹴るのと同じ力でいくらでも押し返してくれます。
ランニングマシンの上なら、床の方が後方へずれる動きも可能ですが、逃げない相手(動かない地面)に対しては、自分の方が逃げる(加速かウイリー)しかありません。
 ハンドやアームが限界位置まで来ると、それが動かない地面のように振舞って、次の動作へ逃げます。

*4 アームの「上げ・下げ」に必要な力は重力が大きく関係しますが、ハンドの「掴む・離す」はほぼ同じ力で済みます。
 だから、「掴む→上げる」の順だし、「下げる→離す」の順になるのです。
アームの旋回には、これらより大きな抵抗(摩擦力)が働けば、動きの順序に一貫性が生まれます。

*5 〔摩擦力=摩擦係数×荷重〕なので、輪ゴムを挟むことと、重くすることの両方が効果的です。氷上では重たい力士でもツルツル滑ってしまいますよね。


1.4 <アドバンスプログラミングコース『メクリン(2)』>



 前半(1・2日目)の複雑でメカメカしい作りから、シンプルなロボットへと作り変えました。
前半のロボットでページをめくるには、機械的な微調整が不可欠でした。
後半のロボットでは、可動部がモーターに直結されているため、機械的な調節の余地は少なくなりました。


 ページをめくろうとするとき、適度な力でゴムタイヤを紙に押し付ける必要がありました。
後半のロボットでは、タイヤを取り付けた腕を振り下ろした後もモーターを駆動させ続け、この力を生み出しています。
しかし、ずっとタイヤを紙に押し付けたままページをめくってしまうと、紙が折れ曲がってしまい、上手くいきません。
そこで、ロボット本体が左に移動したある時点で、腕モーターの駆動を止め、ページの折れ曲がりを防いでいます。


 後半のロボットの良さは、微調節を機械的に行うのではなく、ソフトウェア的に行える点にあります。
紙を押さえ付ける圧力を調整したければ、モーターの出力値を変更すれば済みます。
圧力を解放するタイミング等も、プログラムから制御できますね。

 4日目の教室では、「ページめくりを極めるも良し。ロボットを使った遊びを考えるもよし。」として、
一部の生徒さんとプログラムを改造して、「叩いて、かぶって(の代わりに逃げて)、じゃんけんぽん」ゲーム機にして対戦しました。  



この遊びに対応するのに、ロボットの機械的な改造は不要です。
右タッチスイッチを押すと、腕を振り下ろし、相手を叩きます。
左タッチスイッチを押すと、相手の攻撃をかわすためにロボットを左に移動させればよいわけです。

機械構造的には同じでも、プログラムで機能がガラッと変わるのは面白いですね。

 プログラム次第で機能を変更できるのは、コンピュータの最大のメリットです。
小型のコンピュータ(マイコン)が開発される前は、製品ごとに専用設計のICチップを開発していました。
例えば、電卓には電卓専用設計のチップを、時計には時計用、オーディオにはオーディオ用といった具合にです。
専用チップを作るためには、製造ラインから作り変える必要があるので、時間もお金も多く必要です。
また、一旦チップを作ってしまうと後から機能の追加や変更はできません。その時は、また一から作り直しです。

ところが、マイコンの登場により、この状況は一変しました。
マイコンであれば、多くの機能がプログラムだけで変更できます。
電卓にも洗濯機にも、同じマイコンチップを搭載することが可能になるのです。  
マイコンを使うことで、電気製品の開発コストは下がり、開発期間も短くなりました。


皆さんがよく遊ぶゲーム機も、ゲームごとに本体を買い直す必要はありませんよね。
無料ダウンロードだけでも、いっぱい遊べちゃうわけです。
そこでも、コンピュータとプログラムの恩恵を受けているわけですね。 
昔は1つのゲームしかプレイできないゲーム機も珍しくはなかったんですよ!
(それはそれで新しいハードを手に入れるのがとびきり楽しみな時代でしたが…)


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


 冬タームの最終月を「ウルトラソニックロボット」で仕上げます。

 自律型ロボットといえば、障害物や段差を感知して、衝突や落下を回避しながら進むものを先ず想起するのではないでしょうか。
お掃除ロボット『ル○バ』などもそうですね。

感知に最も良く使われるのが、この超音波センサーです(*1)。
イルカやコウモリ等の生物から魚群探知機まで、反射音(方向・時間・強弱・周波数)の状態や変化を探ることで、視覚の代わりに(時にはそれ以上に)なるのです。

反響定位(エコーロケーション)と呼ばれますが、本ロボットや一般の障害物センサーでは、そこまでの解析能力はありません。
特定方向の(一定以上の大きさの障害物から)反射音が返ってくる時間(=距離)だけを計測しています(*2)。

 1日目では、2つのセンサーを別々にモニターすることでの可能性を垣間(かいま)見ました。
センサー1つでも、手をかざせば近寄り、近づけすぎると後ずさるなどプログラムできますが、両目のように左右に並べれば、左右の(状況の違いが分かる)感覚を生み出せます。

左右での感知距離(dist1, dist2)の差に応じて旋回させれば、かざした手の方向にフラフラと追跡するまでになりました[step3]。
しかし、2つの距離情報を扱うのは、プログラムの条件文(判定式や分岐)が複雑になります。




 2日目では、センサー1つを様々な位置に取り付け、プログラムを適応させることで、
・ 障害物を避けるロボット[avoider]
・ 机から落ちないロボット[nofall]
・ 机の端を沿うロボット [tablerunner]
壁ぎわを沿うロボット [walltracer]
が実現できることを経験しました。

あの『ル○バ』に勝るとも劣らず、生き物らしく見えたでしょ?

 センサーで拾うたった1つの値と、それを条件に動作を分ける論理(プログラム)とで、これだけの(これ以上の)ことができます。
どれも、プログラミングのレベルに大差ありません。

ちょっと難しく見える“おまじない”や数値処理上の工夫(*3)がありますが、核心の論理“if(条件) {動作1;} else {動作2;}”は、非常に単純明快で必然的なものです。

もっと場合分け(条件分岐)したければ、“if(条件1) {動作1;} else if(条件2) {動作2;} else if(条件3) {動作3;} else {動作4;}”等ですね。

怖(おじ)けずに、自分のロボットにを吹き込んでみてください。
君こそがフランケンシュタイン(怪物の創生者)であり、鉄腕アトムのお茶の水博士なのですから。


*1 GHz級クロックの電子回路など、技術の発達した現在では、光(電磁波)を用いたレーザー距離計やGPSセンサーも安価に手に入るようになりましたが、生物の感覚器官ではとても追いつけません。視覚が光を利用するのとは別の話ですよ。

*2 音の伝わる速さとして、空気中で340m/秒、水中で1500m/秒を覚えておきましょう。
 すなわち、地上と水中で計算式が変わりますが、時間から距離が求まります。

*3 dist/=10; または dist=dist/10; で dist値 1~99[cm] を 0~9(整数) に粗くし、大雑把に扱えるようにしています。
 例えば、if(dist==1) と書くだけで 10~19[cm] の範囲を指定することができるようになります。


2. 今月の課題


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

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

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

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

 <アドバンスプログラミングコース>
  - オリジナル課題プリント(見取図+設問)
  - 上記授業内容を精読する

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


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


◆中間4/27は『中間市生涯学習センター』で開催します。

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

[東福間]第1・3土原則<学習ルームでこぼこ>
   - 13:30~ ベーシック/プライマリ
   - 15:30~ ミドル
   - 17:30~ アドプロ

 ⇒ 4/6, 20,  5/4, 18,  6/1, 15


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

 ⇒4/13 第1回 なかまハーモニーホール3F会議室2
  4/27※第2回 中間市生涯学習センター1F
  5/11※, 25,  6/8, 22

 ※4/27, 5/11はハーモニーホール利用不可の為、代替施設で開催します。


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

 ⇒4/ 7 第1回 5F小セミ
  4/21 第2回 4F和室・工芸室
  5/5, 19,  6/2, 16


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

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

 ⇒ 4/6, 20,  5/4, 18,  6/1, 15


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

 ⇒ 4/14, 28,  5/12, 26,  6/9, 23


4. お知らせ

1) KIGSワークショップ出展しました
 https://www.kigs.jp/event/2019/01/408.php



 昨年3/25(日)のコマ回し挑戦ブース『モーターで回せ!最強持久コマ!』に続き、
今年3/9(土) KIGS春のわくわくワークショップまつりには、PCN(Programming Club Network)北九州として、
IchigoJamマイコンゲーム『プログラミングで進め!イチゴの道』と『カムロボくん操作体験』の2ブースを出展しました。

 AM/PM合わせて延べ200~300名(たぶん)のお子さんが訪れ、何名かの生徒さんにも会いました。


 40~60秒の制限時間内に、ゴールまで道を外れないアバターの進み方をプログラミングするゲームでは、「激ムズ!」というクレームが噴出する中、
何度も粘り強く挑戦してくれた6年生が唯一レベル5:ウィザードコースをクリアしてくれるなど、大人顔負けの瞬発的な分析力を見せる面々に出会えました。


2) IchigoJam初級プログラミング ~ゲーム工作編~ 終了

 3/21(木・祝)北九州パレスにて、15組の方に参加頂きました。

 モニタ画面の世界から飛び出して、マイコンの入出力ピンに外付けの電気回路を繋ぐことで、「イライラ棒」の当たり・ゴール判定や、ライフLED点灯が簡単にプログラミングできました。


 作ったゲーム機を生徒さん同士でシャッフル交換し、3灯のライフや制限時間を使い果たすことで別売り(?)の風船爆弾が起爆するゲームにもドキドキしました。

 次回6/30(日) 開催予定の講座をお楽しみに。(詳細は5月報でご案内します)



3) 8月~新ミドルコース(プログラミング対応)へリニューアル[再掲]
 ミドルコースがアドプロコース用のマイコン・センサー類を一部下ろす形で、8月~タブレットを用いた簡易プログラミングに対応します。

【キット代(税別)ご負担の流れ】
 ~7月:入会時2.85万円→アドプロ進級時2.7万円
 8月~:入会時2.85万円→ミドル進級時1.8万円→アドプロ進級時0.9万円

 従来ミドル内容をベースとした改編ですので、進級タイミングに関わらず、新旧ミドル合わせて18ヶ月満期の履修が原則となります。

 8月時点でミドル継続中の方は、残り期間に応じて、新旧コースの選択肢を提供する予定です。詳細は決まり次第ご案内いたします。

 http://robocobo.sakura.ne.jp/blog/0227_newmiddle.pdf


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

 ◆プライマリ【6名平均 図形2.8】
   5点…なし
   4点…川田[小倉北 年長], 矢吹[小倉北 年長]

 ◆ベーシック【20名平均 図面2.8+設問2.7=5.4】
  10点…なし
   9点…柴田[小倉北1], 橋本[小倉南1]
   8点…中村[東福間3], 西谷[八幡東1], 林田[小倉南1]
   7点…下木[八幡東3], 藤野[八幡東3]

 ◆ミドル【28名平均 図面2.6+設問2.6=5.2】
  10点…なし
   9点…なし
   8点…中野[東福間3], 森崎[八幡東3], 福政[八幡東4], 荒木[小倉北4]
   7点…桑村[中間4], 宮尾[八幡東5], 糸山[小倉北4], 大橋[小倉北5], 大和(彩)[小倉北4], 馬渡[小倉南4]


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