2018年8月31日金曜日

2018年8月報

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


1. 8月授業内容


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


 割愛します。



1.1 <プライマリーコース『モッテクテク』>


 割愛します。




1.2 <ベーシックコース『クルクルクリエイター』>



 第4回アイデアコンテスト全国大会(2014年)ベーシックコース最優秀賞作品「御家紋(ごかもん)くん」(当時小2)がベースの、自動お絵かきマシンです。

このアイデアは凄(すご)いですね。そして難(むずか)しいですね。
作るのも、動かすのも、アドバンスコース、いや、それ以上かもしれません(*1)。
詳(くわ)しい原理は難しすぎるので、「いっそベーシックコースで、深く考えずに、いろいろ試(ため)して遊びましょう」といった感じです。


 単純なギアの回転運動(*2)から、コースター紙にずいぶんと複雑な模様(もよう)を描(か)けるもんだな、と思いましたか?
そうです、それは大事な発見です(*3)。

しかも、下記を変えることで、また模様が変わります。
A) 回転するギアLとギアM3枚のペグ穴のうち、どこに2個のペグSを挿(さ)すか
B) ペンホルダーのロッド15アナとロッド9アナのどこに2個のペグSを挿(さ)すか

A)では、主に模様が変わります。B)では、主に大きさが変わります。


回転台を回らなくする改造(テキストp.26)で、ペン先の軌跡(きせき)が見えてきますが、これだけでは面白くないですね。
ペン先を回すのとは違うタイミングで台紙を回転させることで、複雑な模様が表れているのです。


 模様が複雑すぎて美しくないと思う場合は、ペン先の動きをもっと単純化しましょう。
ペン先の動きが複雑なのは、ギアLとギアMの回転数が異(こと)なり、2個のペグSが異なるタイミングで回るからです。
ギアMへ回転を伝える中間のギアLを外して、ギアMを回転しないよう固定すると、よりシンプルな幾何学(きかがく)模様になります(*4)。


ペン先が一度描いた軌跡に戻(もど)ったら(*5)、ペンの色と、A)B) を変えて、また描きます(*6)。
この方が綺麗(きれい)ですね。オリジナルのコースターを描いて、家族や友達にプレゼントしましょう。細い油性ペンがいいよ(*7)。



*1 どんな模様になるかを予想するのは、高校生でも、大学生でも、大人でも(先生でも)超難しいです。

*2 本当に大事なのは、ギア上に留(と)めたペグの周回運動をリンク棒(ロッド)で取り出していることです。


*3 単純な動作でも、たくさん組み合わせると、複雑な処理や現象が実現します。
 神経細胞が集まって脳を形作るように、電卓やコンピュータも、「~の反対!(NOT)」と「両方ともOK?(AND)」のたった2種類の信号処理部品を組み合わせて作ることができます。
 だから、この世の地形や現象、人間の行動さえも、単純な法則の組合せで成り立っているとする研究があり、今も続いています。

*4 このとき、ペン先の動きは単なる楕円(だえん)形になります。

*5 回転数の比は、元々、回転台:ギアL:ギアM = 1/5:1/3:5/9 = 9:15:25 なので、コースター紙が9回転して元の軌跡に戻ります。
 ギアMを留(と)めて単純化すると、回転台:ギアL = 1/5:1/3 = 3:5 なので、コースター紙が3回転して元に戻る間にギアL(ペン先)が5回転するので、5枚の花びら模様が表れます。


*6 一度ペンを外して、ギアL上のペグ穴を4ヶ所90°ずつ変えて(回転台の54°空回しに相当)また描くだけでも、模様が重なっていい感じになります。

*7 細い線の方が、模様が緻密(ちみつ)な感じになります。
 また、水性ペンだと、コップの水分で滲(にじ)んでしまい、コースターとして使えません。


1.3 <ミドルコース『クルクルメリーゴーランド』>



 遊園地アトラクションの代表格、メリーゴーランド、いいですね。
英語的に正しくは「メリー・ゴー・ラウンド」、日本語では「回転木馬」とも言います。
ヨーロッパでは、蒸気機関の時代から親しまれてきました。
華(はな)やかに回る光景に大人も癒(いや)される、何ともノスタルジックな遊具です。

 機械の内部は見たことがなくても、経験からステージの回転馬の上下運動がリンクしていることは分かるでしょう。
およそ唯一(ゆいいつ)の回転動力源を利用した、アナログな機械だと予測がつきます。

ロボットを製作する上で、「実物に沿(そ)った構造か?」は大事ではなく、
「モーター動力を種々の回転運動や上下運動に分配するにはどういう方法があるか?」
を考えるきっかけにできれば良いと思います。


 先ず、地面に寝かせたタイヤLの中心にモーター軸シャフトを挿(さ)して、中央の回転塔を直立させます。
スイッチを入れると、タイヤLを固定脚にして、回転塔(モーター本体)がゆっくり回りますので、これをステージ中央の穴に挿すことで、ステージも一体化して回ります(*1)。

すると、そのステージの回転を支える円周上配置のタイヤS4輪が回り、各タイヤSの回転がステージ上の小物を動かします(*2)。

タイヤの回転が動力源に再利用されているわけで、シャフトやギヤの連結だけが動力伝達手段ではないことを語っています。


 また、ステージ上の小物は、タイヤSの回転から、次のようなバリエーション豊かな運動を実現しています。

・椅子  … マイタギア(傘歯車)で軸方向を水平→垂直変換して回転
・馬1, 鳥 … ロッド3アナによるカム作用(*3)で上下
・馬2   … その両方による間欠回転


 これらの運動は全て、タイヤSの回転を通して、間接的にモーターの負荷(ふか)となりますが、回転塔内にコンパクトに収めた3段3:1減速ギヤボックス(1/3×1/3×1/3=1/27)が十分な回転トルクを出しますので、力不足の問題はありません。



小物やステージがスムーズに動かない(カクカク動く)場合は、下記の摩擦力に注意します。

・ステージが回らない ⇒ 中央のタイヤLがしっかり接地し(摩擦:)、ステージ下のタイヤSが軽く回る(摩擦:)よう調整

・小物が動かない ⇒ 直下のタイヤSを手で回してみて、小物の支柱がスムーズに上下/回転する(摩擦:)よう調整



 優美さを演出するにも、突き詰めれば考察ポイントの多いことが分かるテーマでした。
ちょっと、メリーゴーランドに乗りたくなったでしょ?(先生も…)


*1 だから、ステージ中央の穴に挿してタイヤLが浮くようならダメですね。

*2 実物では、回転ステージ下の狭い空間ではなく、天井のクランクから馬の支柱を吊り下げていることが多いようです。

*3 回転部品(ロッド3アナ)の外形をなぞるジョイント部(シャフトと先端のマイタギア)が生む、周期的な往復運動を利用したリンク作用


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



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




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


 “割り込み”の話をしましょう。

 割り込みは便利です。やはり爽快です。イメージ悪いですか?
コンピュータの世界では、良い(無くてはならない)処理手段を指します。

例えば、「合格者はそのうち掲示板に貼り出しますので、その後すぐに手続きして下さい」と言われると、頻繁にチェックしに行かないとなりません。
大半は徒労に終わります。イベント発生後の時間的猶予が短いほど、無駄なチェックを多くする必要があります。
このような処理待ち方式を「ポーリング(polling)」と呼びます。

方や、「合格者には決まり次第電話で伝えますので、それから手続きに来ればよいです」と言ってもらえれば、何も心配せず、他の作業に専念していられますね。
このような処理待ち方式を「割り込み/インタラプト(interrupt)」と呼びます。

 マイコン/CPUは、この「特定ピンの入力変化で割り込み要求を検知 → 現在の処理を中断(状態値を退避) → 割り込み処理へ移行 → 終わると元の処理に戻る」ためのハードウェア機能を備えています。

君らだって、どんなにゲームに熱中していても、電話(聴覚インタラプト)には気づくし、視界内で這い回るゴキブリ(視覚インタラプト)にギョッとするでしょう(*1)。
適当に処理して、ゲーム続行ですね。

パソコンのキーボードやタブレットの画面を触る度にも、OSが指定した割り込み処理が発生しています。
画面を見つめたまま何分間も操作しないくせに、マウスのカーソルの動きがコンマ何秒でも遅れるとイラッとするのが人間です。
ポーリング方式では、キーボードもマウスもタッチ画面も、1分間で600回ずつ以上は調べる必要があるでしょう(*2)。


 キー入力等の、外部要因のイベントに対処する割り込みを「外部割り込み」や「ハードウェア割り込み」と呼びます(*3)。

これに対して、OSシステムコール(サービス要求)や演算例外(ゼロ除算)、メモリアクセス違反等、
プログラム的・CPU内部的要因のイベントに対処する割り込みを「内部割り込み」や「ソフトウェア割り込み」と呼びます。

一定時間の経過を知らせる「タイマー割り込み」は、プログラム的に設定して、CPUチップ内部で発生するイベント処理であっても、
CPUコア外にある専用タイマー回路からの通知を待つ形式なので、外部割り込みの一種に数えられます。

 タイマー割り込みは、一回限りのラーメンタイマーのみならず(*4)、数ミリ秒単位の一定タイミングで短時間処理が必要な用途にも使います。
例えば、疑似アナログ出力やサーボモーター指令、演奏に必要なPWM波形を生成しながら、別のメイン処理を進めることができます(*5)。

Arduinoでは、
#include <MsTimer2.h> でタイマーライブラリを召喚し、
MsTimer2::set(100, my_update); で設定後、
MsTimer2::start(); で開始するだけで、
100ms毎に自動的に my_update() 関数が呼び出されます。簡単!!

六脚ロボット操縦プログラム[HexRobot3/RemoteTest*], [HexRobot4/RemoteWalk*]では、下記のようなコードで、
20ms毎の滑らかなサーボ制御と、100ms毎の十分な(*6)コントローラー操作性という、異なる更新周期を両立させています。

#include <MsTimer2.h>


void setup() {
  MsTimer2::set(100, gatepad_update);
  MsTimer2::start();

}

void loop() {
  servo_update();
  delay(20);
}

void servo_update() {

 《サーボ位置更新(微動)》
}


void gamepad_update() {

  《コントローラー読出し》
}


これくらいなら、MsTimer2ライブラリを使わず、
下記のような時間カウンタ変数で管理しても良いです。

int Time;


void setup() {
}

void loop() {
  if(Time == 5) {
    gamepad_update();  Time = 0;
  }

  servo_update();
  delay(20);  Time++;
}

void servo_update() {

 《サーボ位置更新(微動)》
}


void gamepad_update() {

  《コントローラー読出し》
}


ところが、どうしても一方を30ms毎に、他方を100ms毎に更新したいとなると、
その最大公約数 delay(10) でループさせながら、Time30Time100 のような2変数で管理する面倒さと、コードの読み難さが出てきます。

MsTimer2ライブラリの使用時は制限事項もありますので(*7)、都合の良い方を選択してください。


 六脚(カブトムシ型)ロボットが組み上がり、サーボモーターを滑らかに制御するプログラミング方法論や、コントローラー読出しのタイマー制御、
個別のサーボモーター操縦方式[HexRobot3/RemoteTest*]から、ステートマシン(状態遷移)の考え方を取り入れた自動シーケンス制御[HexRobot4/RemoteWalk*]へのステップアップを経て、
残すは自律制御のセンシング歩行になりました。

来月はロボティクスの名に相応しい総仕上げです。


*1 人間にも、このハードウェア(生来的)割り込みが実装されているかのようです。意識せずとも、敵や獲物の動き(視覚)・足音(聴覚)の変化を即座に察知することができます。
 画像や音声データ処理に係(かか)る計算量を知ると、生物の感覚神経ニューロン(ハードウェア回路)による情報処理能力の高さに思い至ります。

*2 これだけなら大したことは無いですが、忙しいCPUには、メモリアクセスや演奏、通信ポートの監視等、他にタイムリーな仕事が山ほどあるのです…。

*3 Arduinoでは、外部ピンを監視する標準の割り込み関数 attachInerrupt(intno, func, mode) が使えます。
 割り込み処理関数func()内では、delay()が機能しない、millis()の戻り値が増加しない、等の制約があります。

*4 ラーメンタイマーくらいなら、1秒毎にカウントダウン表示する以外することが無いので、タイマー割り込みを使わずとも、delay(1000) を指定秒数分だけ繰り返せば済みます。
 但し、delay() がタイマー割り込みを使用しています。

*5 Arduino UNO用を含め、PWM出力ハードウェアを実装した(一般的)マイコンなら、それを活用したアナログ出力analogWrite()、サーボモーター駆動Servo::write()、演奏tone()等の関数/ライブラリが用意されていますので、通常はタイマー割り込みを駆使したコードをゴリゴリ書く必要はありません。

*6 超音波センサー等、入力デバイスによっては、必要以上に短い周期で読み出そうとしても、
ハード的な計測が間に合わず正しい値を得られないか、
ソフト的な処理に周期以上の時間を要して、他のデバイスの更新周期を乱すことになりかねません。
 接続デバイスのデータシートを見て、適切な頻度でアクセスする心得が必要です。

*7 タイマー回路は数個しかありませんので、MsTimer2ライブラリを使うと、
tone()関数が利用できない、13番ピンと11番ピンからanalogWrite()/PWM出力できない、という制限があります。


2. 今月の課題


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

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

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

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

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

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


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


◆小倉北9/2はムーブ4Fで開催します。
◆八幡東11/3→11/10へ一週ずれます。

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

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

 ⇒ 9/1, 15,  10/6, 20,  11/3, 17


[東福間プロ]第2・4日原則
 (~2018年9月)
   - 15:30~ プロ3年目
 (2018年10月・11月)
   - 10:00~11:30 卒業制作・発表

 ⇒ 9/9, 23(卒業),  10/14, 28(卒業製作),  11/11(発表会予定)


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

 ⇒9/ 8 第1回 ハーモニーホール3F会議室2
  9/22 第2回 ハーモニーホール3F会議室2
  10/13, 27,  11/10, 24


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

 ⇒9/ 2 第1回 ムーブ4F和室・工芸室
  9/16 第2回 ムーブ5F小セミ
  10/7, 21,  11/4, 18


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

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

 ⇒ 9/8, 22,  10/13, 27,  11/10, 24


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

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

 ⇒ 9/1, 15,  10/6, 20,  11/10※, 17

 ※原則日11/3がレインボープラザ利用不可の為、一週ずらします。


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

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


4. お知らせ

1) ロボット教室 全国大会 テレビ放映
 8/25(土) 東京大学 安田講堂で開催されました全国大会2018を放映します。

 ●9/16(日) 13:30~ CSキッズステーション特別番組(無料)
 ●10月 リピート放送予定

 我らが教室からは下記の生徒さんが出場しました:
 ◆ベーシック部門 廣渡 大和さん [東福間 小2]
 ◆テクニカル部門 杉本 幸翼さん [中 間 中1]
          下田 恒亮さん [八幡東 中2]
          松尾 亮治さん [八幡東 中2]


2) IchigoJamマイコンプログラミング(+はんだ付け)講座

 中野・佐藤は、「すべてのこどもたちにプログラミングを」の理念の下、
日本発の安心・安価なこどもパソコンIchigoJam(イチゴジャム)を主に活用して
ICTリテラシー向上に寄与するPCN(プログラミング クラブ ネットワーク)に参画し、
PCN北九州(中野代表)として活動していくことになりました。
 https://pcn.club/about/

 土日のロボット教室をメインにしながら、北九州~福岡市東区において、
四季休暇および平日にIchigoJamプログラミング講座を展開して参ります。※

スタートアップ第1弾として、下記講座を開催しますので、ご検討下さい。
 http://robocobo.sakura.ne.jp/blog/lab/IchigoSU2018.pdf

【講座名】
 A) IchigoJamマイコンボードはんだ付け(中級)
 B) IchigoJamスタートアップ ~初めてのゲームプログラミング~
【内容】
 A) 自分だけのIchigoJamパソコンを自分で作っちゃいます
 B) IchigoJamでゲームをプログラミングしながら、BASIC言語の基礎に触れます
【講師】中野・佐藤
【会場】北九州市立男女共同参画センター(ムーブ)4F 工芸室
【日時】A) 10/8(月・祝) 10:00~12:15
    B) 10/8(月・祝) 13:30~16:00
【対象】下記の小4~中学生 10名(保護者同伴可)
    A) 昨年11/23はんだ付け受講者、経験者、根気ある初心者
    B) 大文字アルファベットA~Zが読める

【必須費用】
 △A)のみ  5,940円(受講料3,780円+キット代2,160円)
  B)のみ  7,020円(受講料4,320円+キット代2,700円)
  A)+B) 10,260円(受講料8,100円+キット代2,160円)

 △IchigoJam経験者向け(一般には非推奨)

【オプション費用】
 A-0) はんだ、吸取り線、こて台、破損部品代(実費)
 A-1) はんだごて/吸取り線/スポンジ付こて台セット1,620円(持込可)
 A-2) はんだごてセット レンタル 810円
    <注意>持込品が作業に適さない場合は購入orレンタル頂きます
 B-1) 7インチモニター   3,240円(自宅用/テレビでも可)
 B-2) PS/2対応USBキーボード1,080円(自宅用/不明な場合は推奨)

【申込方法】下記を選択の上メールにてお申込み下さい。9/24〆切・先着順です。
 <受講コース>
   A)のみ  B)のみ  A)+B)
 <希望オプション>
  当日変更できますので予定をお伝え下さい
   A-1) はんだごてセット購入   B-1) 7インチモニター
   A-2) はんだごてセットレンタル B-2) キーボード

【申込条件】
 - はんだごてセット持込品が作業に適さない(不足を含む)と判断した場合は、講座指定品を購入orレンタル頂きます。

 - 半田ごては熱器具です。扱いを誤ると火傷・火災の恐れがあります。
  ご家庭での取り扱いルールをお決め下さい。

 - 原則として、10月お引落し額(11月分)に加算して徴収させて頂きます。
  9/24~キャンセル・欠席により空席が発生した場合は返金できません。
  (キットと製作テキストのみお渡しします/オプション品は任意)


※本活動はヒューマンアカデミー教室とは別の取組みです。
※適齢は小4~中2までの3年間程度です。
 プログラミングを初めて学ぶ中2~高校生にはロボプロコースがお薦めです。
※家庭で学び易い教材の為、年間の受講回数に依らないカリキュラムを提供します。
※小3~ロボット教室を始めた場合の各コースの適齢(目安)と学習内容を示します。
(全てがこれより2学年遅くても十分お薦めできます)

 ◆ロボット教室 ベーシック~ミドルコース
  【小3~小5】機械リンク機構

 ◆同 アドバンスプログラミング(アドプロ)コース
  【小6~中1】簡易プログラミングによるロボット制御

 ◆同 ロボティクスプロフェッサー(ロボプロ)コース
  【中2~高1】高度PCプログラミング/ロボット/電子デバイス制御

 ◆IchigoJamプログラミングコース<年4~24回>
  【小4~小6】初歩PCゲームプログラミング/電子デバイス制御


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

 ◆プライマリ【5名平均 図形4.0】
   5点…川田[小倉北 年長], 末吉[小倉北 年長]

 ◆ベーシック【20名平均 図面2.5+設問2.7=5.1】
  10点…柴田[小倉北3]
   9点…久保田(新)[小倉北5]
   8点…筋田[東福間3], 樋口[八幡東4]

 ◆ミドル【18名平均 図面2.2+設問1.3=3.4】
  10点…なし
   9点…なし
   8点…田中[東福間6] →偏差値75!
   7点…なし
   6点…橋本[小倉南4]


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