2017年11月30日木曜日

2017年11月報

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


1. 11月授業内容


1.0 <スタートアップ>


 割愛します。


1.1 <プライマリーコース『ロボコング』>



 割愛します。









1.2 <ベーシックコース『ロボクリーン』>



 おそうじロボットです。
90°ずつ向きをずらした9本の赤い“ブラシ”を高速回転させる様がにくいですね!
吸引こそしませんが、あのロボット掃除機『ルンバ』を彷彿(ほうふつ)とさせます。

 掃除機として、大事な工夫点があります。
ブラシは高速回転させたいが、本体の走行スピードは…?
疾走(しっそう)されては困るので、タイヤはゆっくり回さなくてはなりませんね。
この相反(あいはん)する要求をどうやって1つのモーターで実現するかです。

部品配置は、モータータイヤブラシ の順に並んでいます。
回転速度は、速い遅い速い です。
つまり、モーターを一旦(いったん)減速(げんそく)してタイヤを回した後、増速(ぞうそく)してブラシに伝える構成が必要であり、それが筐体(きょうたい)の側面に並んだ大小6枚のギアの役割なのです。


3連のピニオンギア(歯数8)がタイヤと同軸のギアL(歯数40)を回すので、1/5に減速されます。
その後、ギアM(歯数24)を経由してブラシと同軸のピニオンギア(歯数8)を回します。
途中のギアMは気にせず(*1)、ギアLピニオンギア と考えて、5倍の増速になります。
つまり、1/5×5=1 で、モーターと同じ回転数(等速)に戻してブラシを回しているのですね。

《ギアの回る速さについて勉強したい人は、下記を読んでください》
 http://robocobo.sakura.ne.jp/blog/robot/bas-1711.pdf


 2日目最後の競技は、ガチンコおそうじ対決!
狙(ねら)いを定めたロボットの前に、小さくカットしたスポンジのゴミを散りばめ、「よーいドン!」でゴミの争奪戦(!?)です。
「そこまで!」の合図までに内部に取り込めたゴミの数を競います。


皆さん、対戦になると燃えますね~。
まして、改造の良し悪しがゴミの数に表れますから、時間いっぱい改造に勤(いそ)しむ人もいましたが、かえって本番で成績が振(ふ)るわず、悔しい思いをしていました。

 このロボットで苦心するのは、赤いブラシが(当然に)固いプラスチック部品であり、柔軟性(じゅうなんせい)がないので、筐体との隙間(すきま)にゴミが挟(はさ)まってブラシが止まりやすいことです。
高速回転(増速)させる分、回転力(トルク)が弱いので、たやすく停止します。


この問題を解決しようと、過去にすばらしいチャレンジも見られました。
ブラシの毛(クロスジョイント)が固いのは仕方がないので、シャフトに“半固定”し、毛一本一本の回転力を弱めるアイデアです(*2)。

1) クロスジョイントをシャフト(十字形断面)の周りに固定するのではなく、自由にぶら下がるよう、十字穴ではなく丸穴に通す
2) クロスジョイント同士が密着するよう、ブッシュやグロメットで隙間を埋める

これには、
●詰まらない限り、全ての毛がシャフトと一緒に回転する
●詰まった毛だけ止まり、ブラシ全体の回転を止めない
という設計思想がしっかり体現されています。

肝心(かんじん)のゴミ取り性能はともかく、何か問題に直面した時、限られた部材(キット)の中でも「何か解決方法があるという好例です。


 他には、毛として、回転シャフトに輪ゴム結束バンドをくくり付けてはどうでしょう。
内部の汚れが問題になるほどゴミが取れてしまうかもしれませんよ。


*1 ギアMを気にして計算しても、40/24×24/8=40/8=5 と同じです。間にギアMを挟んでいる理由は、回転方向と位置を調整するためです。

*2 スリップトルク(滑り摩擦力を利用した回転力伝達)や、トルクリミッター(回転力制限装置)呼ばれる機械要素です。


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


 アメンボのような動きで進みますが、推進原理は異なります。
ミドルコース随一(ずいいち)と言っていいくらい、突き詰めれば高度な学習テーマに満ちた、難しいロボットです。

 4脚キャスター付き椅子のように、X字に交差させたロッドの先端4箇所に、自在に向きを変えるタイヤSを取り付け、ロッドの交差点に本体を載せています。

 1日目では、モーターで回転するクランク機構(*1)により、ロッドのX字を閉じたり開いたりする動きを実現しました。
製作はこれでほぼ完成なのですが、タイヤSはその向きがX字の開閉に合わせて阿波踊りの手先のように自在変化するだけで、一向に進む気配がありません。
どうしたものでしょう。2日目までの課題にしてみました。

 よく観察すると、タイヤは向きを変えているだけでなく、少し転がっては逆方向に戻る動きも見られますので、学習経験を生かして、
ラチェット機構により回転を一方向に制限してやればいい」
というアイデアも出ましたが、前進させるまでには至らないようです(*2)。


 2日目のテキストを配り、前輪同士と後輪同士をくくるように2本の輪ゴムをキャスターの根元に掛けました。
するとどうでしょう。輪ゴムがキャスターを内側に引っ張ることで、タイヤの向きが前後方向に“ほぼ”そろいました

スイッチを入れてみると、1日目が嘘のようにスイスイ進みます。
X字の開閉に合わせて、床面との摩擦により、前後輪とも、ハの字平行逆ハの字の形を繰り返します。

X字を開く力は、左右両輪を前方に向かって開かせ(逆ハの字)、
特に後輪(*3)が平泳ぎで水を(スケーティングで雪や氷を)掻くように、推進力に変換されています。

X字を閉じる力は、左右両輪を前方に向かって閉じさせ(ハの字)、
特に前輪(*3)で地面を抱き込んで後方へ追い遣(や)るように、推進力に変換されています。


輪ゴムの弾性力により、
(1) タイヤを前後方向に緩やかにそろえる
(2) 地面との摩擦力でタイヤの向きが変化するのを少しだけ許す
ことが功を奏しているのです。


 実際は、ここに書く程に簡単ではなく、X字リンクの歪(ゆが)みやタイヤの摩擦からくる開閉の重たさ、輪ゴムの強さ(*4)に起因して、推進させるまでに苦労し、競技する余裕もない難題でした。

 ラチェットは使いませんが、タイヤが後ろに転がる瞬間があるようなら、それを阻止することで推進効率が上がるかもしれません(*5)。

《キャスターがハの字形に開閉し、推進力を生むメカニズムを勉強したい人は、下記を読んでください》
 http://robocobo.sakura.ne.jp/blog/robot/mid-1711.pdf


*1 回転軸の回りで円形運動する別の回転軸をジョイント(関節)とするリンク機構で、回転運動⇔往復運動を変換する。手回しハンドル、自転車のペダル、ピストン式エンジンが主な利用例。

*2 過去に考案した生徒さんがいましたが、そもそもタイヤの向きがバラバラなので失敗しました。

*3 X字の開閉によってキャスターが前方へ運ばれる方。

*4 輪ゴムが弱ければタイヤの向きが定まらず、強ければモーターの力負けで停止します。

*5 下手をすると前進の摩擦も増えて効率が下がるかもしれません。


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



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





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


 高解像度(一昔前の…)フルカラーLCD(液晶ディスプレイ)が手に入ったところで、ゲームのキャラクターでも表示したくなるのが人情です。


絵の表示には、ドット単位の画像データを作成し、プログラム内に格納し(*1)、そのデータをスキャンしながら1ドットずつ描画するルーチンを記述しなければなりません。

話を簡略化し、3×3ドット、デジタルRGB(8色)カラー画像データを格納するコードでおさらいします。


//色番号 黒=0,青=1,赤=2,紫=3,緑=4,水=5,黄=6,白=7

char B[] = {0, 255,  0, 255,  0, 255,  0, 255};

char R[] = {0,  0, 255, 255,  0,  0, 255, 255};

char G[] = {0,  0,  0,  0, 255, 255, 255, 255};

//255は最大輝度;16進数で書くと0xFF

char pic1[9] = {
  // 1次元配列の画素データ
  1, 6, 2,  1, 6, 2,  1, 6, 2
};

char pic2[3][3] = {
  // 2次元配列の画素データ
  {1, 6, 2},
  {1, 6, 2},
  {1, 6, 2},
};

char pic3[3][3][3] = {
  // 3次元配列の画素データ
  { {255, 0, 0}, {0, 255, 255}, {0, 255, 0} },
  { {255, 0, 0}, {0, 255, 255}, {0, 255, 0} },
  { {255, 0, 0}, {0, 255, 255}, {0, 255, 0} },
};

int x, y, color1, color2;

for (y = 0; y < 3; y++) {
  for (x = 0; x < 3; x++) {


    // 1次元配列データを描画
    color1 = pic1[y*3 + x];
  // pic1[0]…pic1[8]

    TFT.stroke(
B[color1], G[color1], R[color1]);
  //色設定
    TFT.point(15 + x, 15 + y);
  // (15,15)を左上始点にドット打ち

    // 2次元配列データを描画
    color2 = pic2[y][x];
  // pic2[0][0]…pic2[2][2]

    TFT.stroke(
B[color2], G[color2], R[color2]);
  //色設定
    TFT.point(25 + x, 25 + y);
  // (25,25)を左上始点にドット打ち

    // 3次元配列データを描画

    TFT.stroke(
pic3[y][x][0], pic3[y][x][2], pic3[y][x][1]);
  //色設定
    TFT.point(35 + x, 35 + y);
  // (35,35)を左上始点にドット打ち
  }
}



上記のプログラムでは、配列 pic1, pic2, pic3 の何れの画素データからも、同じルーマニア国旗を描きます。


画像データが大きくなるほど、1次元配列 pic1 よりも、2次元配列 pic2 を使った記法の方が書くにも読むにも分かり易くなるのが分かるでしょう(*2)。


3次元配列 pic3 の記法はどうでしょうか。
これなら色番号0~7毎のの輝度配列 B[], R[], G[] を定義する必要もなく、各原色を256階調(*3)で直接記述できますので、オールマイティには違いありません。

しかしながら、クレヨンの8色セットがいいのか、512色セットがいいのか、1677万7216色セットがいいのかは、描く絵と技量によります。


 6色だの、15色だの、表現力と処理能力の乏しさに悩んだ30年前と異なり、コンピュータが人間の感性を超えて高性能化を遂げた現代では、何でもマシンの最大能力を生かすのが最善策ではありません。

一先ず私たち素人がゲーム画面を構成するのに、8色や16色パレットを定義して扱い易くし、画像データ量も抑える上記のやり方は、優れた一例でしょう。


*1 パソコンゲームや動画再生ソフト等の大規模プログラムでは、描画プログラムとデータ部を分けて保存しますが、小規模な画像データは、プログラム内にコーディングすることもあります。

*2 pic1 へのデータ入力も、改行で工夫して pic2 への入力と遜色なく見やすく書けますが、2次元画素データは pic2[y][x] のように2次元的にアクセスできた方が圧倒的にスマートです。

*3 輝度を8ビット(1バイト)で表わすので 2の8乗=256通り、RGB3色の組合せで 256の3乗=2の24乗=1677万7216色(フルカラー)を表現できます。


2. 今月の課題


 <スタートアップ(全コース)>
  特にありません(アドバンスプログラミング生は2017年9月報を参照)

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

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

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

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

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


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


◆東福間ミドル時間を12月~変更(10:30→15:30)に極力ご協力下さい。

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

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

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

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

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


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

 ⇒ 12/10, 24,  1/14, 28,  2/11, 25


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

 ⇒12/ 9 第1回 3F会議室2
  12/23 第2回 3F会議室2
  1/13, 27※,  2/10, 24

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


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

 ⇒12/ 3 第1回 5F小セミ
  12/17 第2回 5F小セミ
  1/7, 21※,  2/4, 18

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


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

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

 ⇒ 12/9, 23,  1/13, 27,  2/10, 24


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

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

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


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

 ⇒ 12/10, 24,  1/14, 28,  2/11, 25


4. お知らせ

1) オリジナル電子工作 はんだ付け講座 満員御礼


 11/23(木)ムーブ4F工芸室にて、部屋・講師ともに定員を大幅を増やし、AMの部9組、PMの部14組の方に参加頂きました。

 はんだ付けを初めてやると確実に失敗するものですが、300℃を超える金属に皆さんドキドキしながら練習を重ね、LED常夜灯の製作本番には全員が成功しました。


 『やってはみたいけど、機会がない』 そんな声が多く寄せられました。

 入門編としてまた開催しますが、はんだ付けに慣れた向きには、もっと規模の大きな電子工作を企画しますね。
 (実は欲張りすぎて間に合わなかったのです…)

 電子回路に興味が芽生えると、数学が面白くなり、自ずとマイコン・プログラミングに繋がっていきます。
 足りないと言われているプログラマーは量産されます。AIかもしれません。
 希少なのは、機械・電気・プログラムに通じたエンジニアです。
 総合力・創造性のセンスは最後まで人間の領域です。

 学齢期は、パソコンのキーボードよりも手先を総動員した物作りで伸び代の大きな頭脳に育って欲しいとの思いから、講座を増やして参ります。


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

  ◆プライマリ【9名平均 図面4.4】
   5点…河原[中間1], 渡邉[中間1], 長友[八幡東 年長], 柴田[小倉北2], 光井[小倉北1], 林田[小倉南 年長]

  ◆ベーシック【21名平均 図面3.1+設問2.3=5.4】
   10点…なし
   9点…荒木[小倉北3], 大和[小倉北3]
   8点…川村[中間4], 渡邉[中間3], 森崎[八幡東2]

  ◆ミドル【15名平均 図面3.2+設問2.6=5.8】
   10点…吉良[小倉南6]
   9点…山本[中間5]
   8点…橋本[小倉南3]


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