2016年11月30日水曜日

11月授業内容

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


1. 11月授業内容


1.0 <スタートアップ>


 割愛します。


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


 割愛します。


1.2 <ベーシックコース『ベイスピナー』>



 ロボットというより玩具(がんぐ)と呼べそうな、コマ回しマシーンです。
タッチセンサーを押してコマを加速させている間は、コマが本体に留(とど)まり、加速を止めた途端(とたん)、回転の勢いで自動的にコマ自身を床上に押し出すという優れものです。
いつものキットで、アイデア次第ではこんなのも作れるという新鮮な驚きを感じさせます。

 さて、コマ回しを成立させるメカニズムは、マシーンとコマの双方(そうほう)にあります。

 マシーン側に必要なのは、できる限り高速にコマを回転させることです。
本体上部に取り付けたギアLが、どえらい速さで回りますね。
どれくらい速いのでしょうか? モーターの回転と同じでしょうか?
だったら、モーターにシャフトを一本つき刺して、ギアLを付ければ済む話です。

 実際は、ギアの噛み合わせを工夫して、回転スピードを上げています。
これを増速(ぞうそく)といいます。写真を見てください。


〔 モーター=ギアM① ピニオンギア①=ギアM② ピニオンギア②=ギアL 〕
の順に回転を伝えていますね。

ここで、“=”は、同一のシャフトに通して一緒に回転しているため、回転スピードが変わらないことを表しています。これを同軸(どうじく)といいます。
一方、“”は「大きいギアが小さいギアを回している」箇所であり、ここで回転スピードが上がるのです。


 どれくらい上がるかは、ギアの歯数の比で決まります。歯数を(数字)で表すと、
本体内部で、ギアM(24) ⇒ ピニオンギア(8)の3倍増速が2段と、
本体上部で、ギアL(40) コマのギアM(24)の5/3倍増速があります。
つまり、3×3×5/3=15倍の増速作用があります。

ギアの組み替え次第で、計算上はこれ以上の増速比を出せますが、今回の15倍速でも、モーターの回転速度は無負荷(空回り)時よりだいぶ遅くなり、
「重くしたコマの加速にも少し時間がかかる」くらいマシーンの限界能力に近いですから、これ以上欲張っても大差ない(*1)かもしれません。
全エネルギーをコマの回転運動に使い尽(つ)くすという意味では、とてもピュアなマシーンです。


 コマ側に必要なのは、いかに安定して回転が長時間続く形にするかという点です。
ロボットキットの中から、軸としてシャフト、回転体として円形部品(*2)を選択するという制約下では、
1) コマを重く(なるべく直径を大きく、かつ外周部を重く(*3))
2) 重心を低く(なるべく重い部品を下の方へ(*4))
という2点をポイントとしておきますが、
あまりに重すぎると、マシーンで十分加速できなくなったり、
あまりに低すぎると、回転中に地面に接触しやすくなったりしますので、バランスを追求する根気強さが勝負を分けます。


 さて、2日目の最後に、各自のコマ回し時間を競いました。
地面の材質(ザラザラの机か、ツルツルの床か)にも左右されますが、上記2点を押さえたコマなら、30秒以上回り続けることができました。
各自が試行錯誤(しこうさくご)する中で、50秒を超え、1分を超え、ついに100秒に迫るものまで登場しました。

逆に、弱かった電池をさらに消耗して、最後には加速できなくなるという苦杯(くはい)をなめた人もいましたね。

 市販品のコマとは違って、自ら色々とバランスを変えて試せる点においては、遊びながら考えさせる優れた教材になったと思います。
ご家庭でも是非一緒になって探求したいテーマですし、そのような大人と一緒に考える時間を通して、一段と物理に目覚めていくものと思います。

 学術的にも、コマの原理は、何年も勉強し続ける人もいるくらいとても奥深いもの。
高校物理を学んで、また改めて興味を持ってもらえたらいいですね。


*1 限界に近いながらも、2015年5月の生徒さんが、コマ上端のギアM(24)をピニオンギア(8)に替えて、さらに3倍(トータル45倍!)の増速比を稼いで100秒を可能にする加速方法を編み出しました。
ジェットエンジンの始動のように、加速完了まで10秒以上かけて音程が高まるようなカッコイイもので、先生が披露すると、その方法が皆さんを虜(とりこ)にしていましたね。

*2 必ずしもタイヤ・ギアのような円形部品を使う必要はなく、回転軸(シャフト)に対して対称となるような配置(点対称)なら、他の部品でも使えます。
例えば、タイヤLのホイール穴にペグを4本挿して重くした工夫例がありました。

*3 回転エネルギーをたくさん貯められるようになります。このことを物理学で「慣性(かんせい)モーメントが大きい」と言います。

*4 過去には、重心を高く作ったことで不利なふらつき(歳差運動)を、下部に履かせたホイールの縁と地面との低摩擦な接触で抑制し、好記録を出した工夫例も見られました。


1.3 <ミドルコース『ヤジロボベエ』>














 ピンと張った紐を伝うロボットですが、1日目はロープウェイ、2日目は一輪車でサーカスの綱渡りをするようなロボットと、形態を大きく変えます。
ここまで作り変えるテーマは、他にありません。面白いですね!

 学習ポイントは“重心”です。
ロープウェイ型ロボットは、ローラーだけ紐の上に掛けて、重い本体を吊り下げていますから、重心は、見た目通り、本体の中心部にあって、支点(紐と接するローラーの最下点)より下に位置します。


重心に集中して重力が掛かると考えてよいため、支点は真下に引っ張られるものの、紐に引っ掛けられているので、安定して支えられます。
ゴンドラが風に煽(あお)られて、重心が支点の真下からずれても、しばらく揺れるだけで、また元の安定した姿勢に収まります


 ここで、このゴンドラを逆立ちさせるように、ローラーの上端を紐の上に置こうとしたら、どうなるでしょうか?
支点(紐との接点)より上にきた重心が重力で引っ張られる結果、横にコロッと半回転しながら落下してしまいます。

サーカスの綱渡りもこの状態であり、本来は非常に不安定なところ、横に伸ばした両腕や長い棒を傾けつつ、上手にバランスを取っています。
このロボットに、そこまで期待できませんね。

 ところが、2日目のロボット『ヤジロボベエ』は、これを見事にやってのけます。
一輪車に乗った彼の重い胴体は、支点よりかなり高い位置にあって、逆立ちしたゴンドラ同様に不安定そうですが、なかなかどうして、バランスの取れたロボットなら、多少のロープの揺れもお構いなく、スイスイと渡ってしまいます。
何故でしょうか?

変わったところと言えば、ハの字形をした長い棒を持っていることです。
それがどうして? 綱渡りサーカスの長い棒と同じじゃない?
いえいえ、ハの字形に垂れ下がった棒の両端に、重い電池ボックスやタイヤを取り付けているところがミソなのです。


これにより、ロボットの重心を支点より下に引き下げることができます。
紐の真下には部品が何もないのに? それでも構いません。
計算上、このロボットの重心は、紐の下の空中に位置することになり、これにより、彼をゴンドラ同様に安定させているのです。



 やじろべえを知っていますか? 同じ原理です。
両端のおもりや棒の長さを調整してバランスを取ることが重要ですが、それだけではありません。

一定以上に傾かず、支点もしっかり固定されているシーソーなら、左右のバランスだけ気にすればよいので、重さの代わりに、支点からの長さ(座る位置)を調整してもよいのですが、足場の危ういやじろべえは、さらに、重心が支点の下にあることが必要です。

ですから、あまり棒を短くすると、重心がどんどん上がって、支点に近づくほど不安定になってしまいますので、要注意です。

 皆さんのヤジロボベエは、紐の上で上手にバランスを取ることができましたか?
おもりの追加や、棒の長さで調整できることは分かったと思いますが、なぜ長さの調節でもバランスが取れるのか、不思議ではありませんか?

有名な“てこの原理”ですが、おもりに働く重力(重さ)と、支点からの距離(長さ)が関係しています。
説明を簡単にするために、シーソーを使って考えてみましょう。


 図では、支点から1mの距離で、両端に1kgのおもりを置いています。
この場合、左右で重さも長さも等しいので、シーソーはバランス(均衡状態)を取れます。


 次の図では、おもりの重さは変えずに、支点からの距離を右側だけ変えてみました。
すると、シーソーは傾きますね。

このように、重さだけではなく、支点からおもりまでの距離によっても、支点に作用する力が変わってきます。
支点を中心に物体(シーソーの板)を回転させようとする力を回転力(トルク)と呼びます。

 実は、〔 トルク = 押す力(重さ) × 支点からの距離(長さ) 〕で決まります。
傾いたシーソーの支点に働くトルクを計算してみましょう。

 左側のおもりによるトルク = 1kg ×  1m =  1[kg・m] 反時計回り
 右側のおもりによるトルク = 1kg × 0.5m = 0.5[kg・m]  時計回り

やはり、左側のトルクの方が強く、シーソーは左に傾くことが分かります。


 左右のトルクを同じ(向きは逆)にすれば、シーソーはバランスを取れます。
最後の図ではどうでしょう。計算してみましょう。

 左側のおもりによるトルク = 1kg ×  1m = 1[kg・m] 反時計回り
 右側のおもりによるトルク = 2kg × 0.5m = 1[kg・m]  時計回り

等しくなりましたね。この場合、シーソーはバランスを取れるのです。

 ヤジロボベエのバランス調整にも同じことが言えます。
おもりを付け足す代わりに、脚を長く伸ばしても、トルク(傾こうとする力)を増やすことができるのです。


1.4 <アドバンスコース『ロボドッグトレーナー』>


 現役生には最初の本番テーマ、1ヶ月目の授業です。
1日目は人型2足歩行ロボットの製作、2日目は犬型ロボットの製作、および人型ロボットとの接続です。


 人型ロボット単体では、片足を浮かす度に大きく傾き、転倒して歩けませんが、右手を犬型ロボットと繋ぐことで安定して歩くようになるものです。
犬を連れて散歩(トレーニング?)しているように見えるものの、内実は、盲導犬が人をアシストしているかのようです。


 人型ロボットの重要テーマは、脚のリンク機構です。
今回は片脚ごとに平行リンクを2つ繋げ、足の裏を地面に対して常に平行に保ちます。
平行リンクについては、3日目に再度学習します。

 さて、人型を犬型で支えるにあたり、大事な工夫があります。
人型は、足を運ぶ度に胴体(腕を含む)が上下に揺れますが、犬型(繋いだ人型の右手先を含む)は高さをあまり変えません。

生身の人と犬ならば、人が肘を屈曲させるか、ロープのたわみを利用して上下の揺れを吸収しつつ、互いのスピードを見計らって調歩することもできますが、
今回はそれぞれ勝手に(別々のモーターで)前進しようとする2体を横並びに揃え、“絆”を見せかけねばなりません。

つまり、右の肩と手先の間で上下方向の伸縮は許すが、前後方向のずれは最小限に拘束したいわけです。

 この右腕にも平行リンクが使われています。
但し、可動方向を選ぶ機能が平行リンクの特質ではありません。
前後方向の拘束の仕掛けについては、ロボットを観察しましょう。
2ヶ月目に続けます。


1.5 <プロ1年目コース『リンクロボット(2)』>


 モゾモゾ歩く多脚リンクロボットの2ヶ月目です。


 前月の製作の過程で、曲線に富んだパーツをいくつも繋ぎ留めていくので、とても複雑に見えるリンク機構ですが、“”(ジョイント部分)を直線で結んで考えれば、いくつかの変形する4節リンクを組み合わせた構造と捉えることができました。

その一部のパーツ(中間リンクや従動リンク)を好きな方向に好きなだけ延長して、手足のような動きを作り出します(*5)。

 4節リンクのうち、対向する2辺が等長の平行リンクでは、平行四辺形を保ちつつ整った変形を見せますが、
不等長になると、1辺(駆動リンク)を一定の速さで動かしていても、対向辺(従動リンク)では、角度によって異なる速さ(*6)で伝わったり、途中から逆回転したり、中間リンク(*7)と一直線に突っ張って動かなくなるか、回転方向が定まらずに「カクッ」と引っ掛かる状態(死点、特異点)になったりしました。

 この死点または特異点は、どのリンクを駆動するかによって全く変わるので、駆動リンク従動リンクの別に留意し、膠着(こうちゃく)状態を回避するよう設計することが重要なのでした。

ロボット教室で学習した、自動車や蒸気機関車のピストン式エンジン(*8)でも、車輪とピストンのどちらを駆動するかによって、引っ掛かりの有無が変わりましたね。

 左右の脚を2個のモーターで独立して可変速度(正逆を含む)で駆動できるため、それぞれをベクトル(矢印)で表した作図により、合成された進行速度回転中心(カーブの回転半径)が求まる考え方も学習しました。

 あとは、手動(ラジコン式)プログラムだろうが、自動(タイマー式)プログラムだろうが、自律(センサー式)プログラムだろうが、左右それぞれのモーターに、どんな順序・条件・計算式で、どれくらいの数値(電圧)を与えればよいかという問題に落とし込めます。

 最終月では、「感じて考える」自律型ロボットにバージョンアップしていきます。


*5 アドバンスコースで学習した、チェビシェフのリンク機構が基本原理です。

*6 ギアの増速・減速(てこの原理)と同様、力の大きさは反比例して伝わります。
 つまり、
   仕事[J = W・s] = 力の大きさ[N] × 動いた距離[m]
 が変わらないように、または、
   仕事率[W = J/s] = 力の大きさ[N] × 速度[m/s]
 が変わらないように、エネルギーが伝わります。1日目テキストp.19~20参照。

*7 駆動リンクと従動リンクを繋ぐリンク。1日目テキストp.13~18参照。

*8 スライダークランク機構とも呼ばれます。2日目テキストp.6参照。


1.6 <プロ2年目コース『センサーロボット(2)』>



 1年目のオムニホイールロボットを3つのセンサー(超音波センサー2個とカラーセンサー)で“武装”し、自分の判断で全方位に動き回れる侮れないマシンです。

円らなボディーにモジャモジャ配線を這わせ、赤いデジタル数字を怪しく光らせる君は、やはり、どう見ても“爆弾”です。

 センサーが多くなるにつれ、場合分け(条件分岐)の数も膨らみます。
先ずは、「どこからの情報が必要で、どんな値の時に、何をするか?」を考え、センサーの設置場所と、プログラムの流れ(フローチャート)を構築します。

次に、具体的に「このセンサーがこんな値の範囲だったら、これをして、さもなくて、あんな値だったら、あれをして…」という、条件文行動文を記述していきます。

下記の例において、S, R, T, Mは、分岐を判断するためのパラメータ(センサー読み取り値を入れる変数)です。

int S =
テストの点数;
int R =
テストの順位;
int T =
現在の時刻;
int M =
持ち金;

if (S >= 80 || R < 10) {
  //テストが80点以上か、または9位以内だったら
迎えに来てと電話する;
} else if (T < 17) {
  //さもなくて(80点未満で、かつ10位以降で)、17時前なら
寄り道して帰る;
} else if (M >= 200) {
  //さもなくて(80点未満・10位以降・17時過ぎ)、持ち金200円以上なら
バスに乗って帰る;
} else {
  //さもなければ(80点未満・10位以降・17時過ぎで、持ち金も少ない)
泣きながら走って帰る;
}



 長く複雑なプログラムを書く中で、決まった手順の命令群を何度も実行したい場合が多々あります。
これを“関数”として、名前を付けて定義しておけば、あとはその名前を1回呼ぶだけで複数の命令をまとめて実行してくれるので、プログラムが楽で確実なものになります。

例えば、中学2年の数学で習う一次関数 y = 2x + 3 において、x = 0, 1, 2 のときの y の値を y0, y1, y2 にそれぞれ代入するプログラムを考えます。

x0 = 0;
x1 = 1;
x2 = 2;

y0 = 2*x0 + 3;
  //計算式を書く
y1 = 2*x1 + 3;  //  また書く
y2 = 2*x2 + 3;  //  また書く…間違わないかな…


何度も同じような計算式を書きましたね。
これは、下記の関数定義を使った書き方もできます。

int func1(int x) {  //1つの引数 x を受け取り、1つの戻り値 y を返す関数の例
  int y = x*2 + 3;  //ここで式を1回書くだけ
  return  y;
}


y0 = func1(x0);  //関数を呼び出す方が楽だな…コピペしやすいし
y1 = func1(x1);
y2 = func1(x2);


関数 func1() は、数学の関数同様、戻り値を計算して返す以外に何もしませんが、逆に、内部でいろんな処理を実行して、何も値を返さない(void型)関数もあり得ます。
引数を受け取らなかったり、複数受け取ったりするようにすら定義できます(*9)。
戻り値の計算式が複雑であるほど、もしくは、まとめて実行したい命令文が多いほど、関数を使った書き方が好ましいと思えるでしょう。

 さて、7セグに表示する上で、マイコンが5や8などの数字の形を特別に認識しているわけではなく、そのように見えるように光らせるセグメントのパターン情報が誰か(人間)の手によってどこかに定義されており、LEDドットマトリクスに図形を描くのと同様に制御しているに過ぎないと話しました。

だから、数字に限らず、自動販売機のルーレットのようなアニメーション表示も特別な操作ではないのです。

 アニメーションのコマ毎のパターンを記憶するのに、“配列”が紹介されました。
配列は、意味的に関係のある多数の値を順番を付けて保持し、参照するのに好都合な“変数の整理箱”です。

先ほどの関数呼び出しは、次のように配列を使った書き方もできます。

int x[] = {0, 1, 2};  // x[0]=0, x[1]=1, x[2]=2 になる
int y[3];            // y[0], y[1], y[2] の3つの箱を用意

y[0] = func1(x[0]);
y[1] = func1(x[1]);
y[2] = func1(x[2]);


for文を使って代入すると、さらにシンプルにまとまります。

for (int i=0; i<3; i++) {
  y[i] = func1(x[i]);
  // 関数呼び出しを1回書くだけで済む
}


for文配列で、関数も不要なほどシンプルに書けることがあります。

for (int i=0; i<3; i++) {
  y[i] = x[i]*2 + 3;
  // y = 2x + 3 の計算式を1回書くだけで済む
}




 1日目の暗がりを好んで探し回ったり、好きな色を追い求めたり、2日目の迷路を探索するロボットは、どれも高度な機能で実現していますが、
特別なのは、モーター、距離センサー、色センサー、そして汎用頭脳たるマイコンなどのハードウェアと、便利に扱うための専用命令群(ソフトウェアライブラリ)であり、これらは専門の人に用意してもらわねばなりません。

 しかし、その後は、上述したような判断論理をプログラムの基本構文を使って書くだけなのです。
まだ「それが難しくて大変なんだ」と言うかもしれませんが、一度やれば、次はその知識が80%活かせる世界です。英単語のように膨大に覚えることはありません。
20%ずつ新しいことを学ぶだけで、あっという間にプロになれます。
学ぶというのは、聞くことではありません。自らやってみることです。
やらなければ、ずっとアマですよ。

 迷路を抜けるロボットは、消化不良気味でしたので、次回に続けましょう。

 (写真は、冥府のダンジョンを彷徨う探索ロボット


*9 数学でいう関数ほど厳密な定義はなく、入力値(引数)を受け取ったり、出力値(戻り値)を返したりせず、一連の決まった処理を行うだけのものも含むので、手続き(プロシージャ)、サブルーチン、モジュールとも呼びます。


2. 今月の課題

 次回授業日までに完了してください。
 ◎は必須、○は推奨、△は任意です。○△は能力に応じます。

 <スタートアップ/プライマリーコース>
  特にありません

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

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

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

 <プロ1年目コース>
  ○ 上記授業内容を精読する(該当テキストページを見ながら)
  ○ 左右の脚リンクが同程度にスムーズに動くよう、分解調整する

 <プロ2年目コース>
  ◎ 上記授業内容を精読する(該当テキストページを見ながら)
  ◎ [GloomyStep3/4/CalmColor]をベースに、4種の走行モード毎に、独自の7セグ表示アニメーション(ウインカー表示)を組込む(1日目)

   《ハイレベル挑戦》同時に2箇所以上のLEDを点灯させながら


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


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

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

 ・12/3, 17,  1/7?, 21?,  2/4?, 18?,  3/4?, 18?


[東福間プロ]第2・4日原則
   -  9:45~ ロボ・プロ1年目
   - 13:00~ ロボ・プロ2年目

 ・12/11, 25,  1/15!, 29!,  2/12, 26,  3/12?, 26?


[中間]第2・4土原則
   - 13:30~ ロボ・ベーシック/プライマリ
   - 15:15~ ロボ・ミドル

 なかまハーモニーホール
 ・12/10 第1回 3F会議室2
 ・12/24 第2回 3F会議室2
 ・1/14?, 28?,  2/11, 2/25,  3/11, 25

 1月はハーモニーホール利用不可の為、代替施設(選定中)で開催予定です。


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

 ・12/ 4 第1回 4F和室(AM)※, 4F工芸室(PM~)
 ・12/18 第2回 5F小セミ
 ・1/8!, 22!,  2/5, 19,  3/5, 19

 ※人数に応じて、一部の生徒さんを工芸室へ誘導します。


―――――――――― 振替提携教室 ――――――――――
 振替希望は1週間前までにお願いします(許可制)
 振替手数料540円/回をご負担下さい(お引落し)
 所定コースのみお受けします

[八幡東]第1・3土原則
   - 13:30~ ロボ・ベーシック/ミドル

 レインボープラザ 42教室 by 中野司先生
 ・12/3, 17,  1/7, 21,  2/4, 18,  3/4, 18


[とばた]第2・4土原則/第3土臨時
   - 第2・4土 13:30~ ロボ・全コース
   -(第3  土 10:00~ ロボ・全コース)

 ウェルとばた8F by 菅本進先生
 ・12/10, (17), 24,  (1/7!), 1/14, 21!,  2/11, 25


[小倉南]第2・4日原則【振替専用教室として試験運用中】
   - 10:30~ ロボ・ベーシック
   - 13:00~ ロボ・ミドル

 総合農事センター2F B研修室 by 中野司先生
 ・12/11, 25,  1/15!, 29!,  2/12, 26,  3/12?, 26?


4. お知らせ

 1) 電池について
  ・単3ではなく、単4です。乾電池4~5本、充電池5本を用意下さい。
  ・高価なエ○ルタでなくとも動きます!
   高耐久のブランド電池よりも、予備電池の用意を。
  ・電池チェッカーを購入(or下記ポイント交換)し、自ら残量の管理を。
  ・教室サービス時、原則として電池代4本108円+診断料108円を頂きます。

 2) 宿題ポイントについて【ベーシック・ミドルのみ/中野司先生協同】
  10月~オリジナル課題(図面5点+設問5点=10点満点)を作成し、第2回目の授業で配布しています(*1)。

  点数分のポイント色カードを進呈し、3ヶ月毎に景品交換を予定します(*2)。

  *1 正規の第2回授業日にのみ配布します。
  *2 市販雑貨の他、オリジナルガジェットを開発中です。
   (写真は専用電池チェッカー開発風景/中野先生と)

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

  ◆ベーシック【18名平均 図面2.9+設問1.5=4.4】
   10点…なし  9点…橋本[小倉北2]  8点…荒木[小倉北2]

  ◆ミドル【14名平均 図面3.1+設問1.5=4.6】
   10点…なし  9点…なし  8点…松尾[八幡東6]


東福間・中間・小倉北教室 佐藤