2017年9月28日木曜日

2017年9月報

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


1. 9月授業内容


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)。


 完成したロボットで、荷物搬送に挑戦しました。
ロボットの片側エリアから、用意した荷物(タイヤSホイール等)を掴んでは、アームを180°回した先に降ろします。


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


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

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



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

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

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


1.4 <アドバンスプログラミングコース スタートアップ『ライントレーサー』>


 全国統一でアドバンスプログラミング(アドプロ)コースが始まりました。
今月は、スタートアップ講座として、初めてのタブレットマイコンの扱いに慣れます。

 旧来のアドバンスコースを受講してきた生徒さんには、全国大会に向けた挑戦を始め、形を変えながら散々と(?)取り組んできたライントレーサーですが、今回は少し違います。

従来の「白黒判定に応じて2つの出力ポート(モーター用)の何れかを駆動する機能を持った光センサー(入出力制御デバイス)」を使うのではなく、
白黒判定に応じた信号を出力する光センサー(入力デバイス)」と、
入力信号の扱いや判定条件を定めたプログラムに則り、どの出力先をどのように駆動するかを決定するマイコン(制御デバイス)」とに分かれ、
2個のモーター(出力デバイス)を回転させます。


 回りくどくなったように聞こえますが、マイコン・プログラムが介在することで、格段に制御(変更)の自由度が向上します

光センサーを4つの入力ポートA・B・C・Dの何れに繋いでも、モーターを3つの出力ポート1・2・3の何れに繋いでも良く、
先ずは繋いで、それに合わせたプログラムを記述するだけです。


光センサーの判定を逆にしたり(*1)、モーターの回転方向を逆にしたり(*2)することも簡単です。


 加えて、左右で 0:100100:0 の切替えのみであった従来に対し、モーターのスピードを10%刻みで指定できるのも大きな進化です。
30:100 のようにカーブ内側のタイヤを完全には止めないようにしてスピード(スムーズさ)を上げたり、
-20:50 のように旋回半径を小さくし、スピードを犠牲にして小刻みに震えるような進み方ながらも、直角などの急カーブも脱線せずに曲がれるようにしたりと、
理論と実証の幅が広がります(*3)。

10月からの本流テーマが楽しみです。


*1 白黒判定と左右タイヤの駆動をどう対応させるかによって、黒ラインの左右どちらの端をたどるかが決まります。

*2 左右のモーターを反対向きに取り付ける構成では、前進するための回転方向が逆になります。
 従来は“逆転スイッチ”を挟んで調整しましたが、プログラム上では符号(±)を変えるだけです。

*3 この段落では、説明の簡略化のため、前進方向のモーター指示値を左右とも正(+)の符号で表記しています。


1.5 <プロ2年目コース『アームロボット(3)』>


 最終月は、サーボモーター式アームロボットを使った仕事(?)編です。

 アームロボットが高精度に動いたとして(*1)、決まった文字を書く自動書記や、決まった位置の荷物を運ぶ自動搬送など、
決め打ち”プログラムで人を楽しませることはできますが、センサー入力による制御がなければ、時計の針と大差ありません。


 台座(ベース)部に超音波センサーを取り付け、荷物までの距離を測れるようにしました。


Ultrasonic xxx(US1);
  // US1接続センサーへのアクセス用インスタンス(オブジェクト変数)xxx生成

long  us = xxx.timing();

float cm = xxx.convert(us, Ultrasonic::CM);
float mm = xxx.convert(us, Ultrasonic::MM);


と書けば、超音波センサーからの時間(マイクロ秒)を us に読み取り、音速から距離を計算し、cmmm に変換してくれます(*2)。

これで、アームロボット自身が荷物までの距離を計測し、掴みに向かうプログラム [ArmRobot5/SensorArmRobot3_4] ができます(*3)。
掴む位置(計測値による動作)が掴んで欲しい位置よりも15mm遠方であれば、setPosition(mm - 15, …) のように補正するだけです。

 あるいは、超音波センサーをハンド部に取り付けて、手を近づければ逃げ、遠ざければ追ってくる不気味なハンド [ArmRobot5/SensorArmRobot2Ans] にして遊ぶこともできます(*4)。


 他に、超音波センサーを使わず、“決め打ち”や手動コントローラーで遊ぶサンプルプログラムが用意されています。

・[ArmRobot6/Block] … 位置と高さを決め打ちした、ブロック積み
 ⇒ 3個くらい積み上げられますか?

・[ArmRobot6/semiAutoArmCustom] … コントローラーによる手動操縦
 ⇒ [ArmRobot3/semiAutoArm] と同等ですが、速度調整(リミット)され、可動範囲を広げています

・[ArmRobot6/UFOcatche] … UFOキャッチャー
 ⇒ どのような動作か、説明がありませんが、プログラムを解析できますか?

自由に改変してプログラミング力を上げておきましょう。

 2年目修了おめでとうございます。
3年目ではプログラミングのレベルも上がり、LCD(液晶ディスプレイ)自律型サッカーロボットによるゲームを成立させるアルゴリズムに触れていきます。


*1 前回書いたように、プラスチック製の長いアームを付け根のモーターで振り回すので、精度はイマイチですが…

*2 音速を340m/sとすれば、cm(片道距離) = 340 * 100 * us(往復時間) / 1000 / 1000 / 2 で求まります。

*3 旋回角度 0°限定方向です。持ち上げて旋回(搬送)する先は適当に決めます。

*4 もっと生き物っぽさを出したければ、あまりに手を近づけ過ぎるとハンドを閉じては開くという動作を加えて、噛みつき攻撃を表現するのもいいのではないでしょうか。


2. 今月の課題


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

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

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

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

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

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


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


◆小倉北10/1 AMはムーブ5F大セミ(PM~小セミ)です。
◆中 間10/14は『北九州ハイツ』(八幡西区的場町1-1)で開催します。

◆中 間ミドル時間を11月~変更(15:15→15:30)させて頂きます。
◆東福間ミドル時間を12月~変更(10:30→15:30)に極力ご協力下さい。
◆東福間プロ3年目は10月~変更(12:45→15:30)になります。

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

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

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

 (2017年12月~)
   - 10:30~ アドプロ(/ミドル臨時)
   - 13:30~ ベーシック/プライマリ
   - 15:30~ ミドル(/アドプロ臨時)

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

 ⇒ 10/7, 21,  11/4, 18,  12/2, 16


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

 ⇒ 10/8※, 22,  11/12, 26,  12/10, 24

 ※10/8 12:45~ 2年目 第6回 <9/24振替>


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

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

 ⇒10/14※第1回 北九州ハイツ2F和室「鶴の間」
  10/28 第2回 3F会議室2
  11/11, 25,  12/9, 23

 ※10/14は『北九州ハイツ』(八幡西区的場町1-1)で開催します。


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

 ⇒10/ 1 第1回 5F小セミ(AMのみ大セミ)
  10/15 第2回 5F小セミ
  11/5, 19,  12/3, 17


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

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

 ⇒ 10/14, 28,  11/11, 25,  12/9, 23


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

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

 ⇒ 10/7, 21,  11/11!, 18,  12/2, 16


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

 ⇒ 10/8, 22,  11/12, 26,  12/10, 24


4. お知らせ

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

  ◆プライマリ【6名平均 図面4.7】
   5点…筋田[東福間2], 渡邉[中間1], 長友[八幡東 年長], 柴田[小倉北2], 林田[小倉南 年長]

  ◆ベーシック【25名平均 図面2.0+設問3.0=5.0】
   10点…なし
   9点…荒木[小倉北3]
   8点…川村[中間4], 谷川[八幡東4], 宮尾[八幡東4], 大橋[小倉北4], 今橋[小倉南4]

  ◆ミドル【10名平均 図面2.6+設問3.1=5.7】
   10点…なし
   9点…なし
   8点…吉良[小倉南6], 辻[小倉南6], 橋本[小倉南3]
   7点…なし
   6点…なし

  ◆アドバンス【2名平均 図面6.5+設問5.5=12.0】
   16点…松尾[八幡東7]


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