2020年11月25日水曜日

2020年11月報

1.11月授業内容
2.11月の課題
3.10月の解答
4.今後の授業スケジュール
5.お知らせ


1. 11月授業内容


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


 割愛します。


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


 割愛します。

1.2 <ベーシックコース『ホッピンバード』>


 10月~来年3月まで追加された新作テーマの第二弾! 面白いロボットが続きます。

 バッタやうさぎロボットのように、モーターをずっと回し続けて、後ろ足だけを少し跳(は)ね上げるロボットはありましたが、
今月のホッピンバード(Hopping Bird=ぴょんぴょん鳥)は、モーターをちょっと回してはオフにして、また回すという繰(く)り返しで跳ねる動きを作り出しているところが新しいです。

このような、ある時間だけ動かしては止めて、また動かすような繰り返しを間欠(かんけつ)動作とよびます。
小雨(こさめ)の時の自動車のワイパーがそうですね。

 実際のモーターを見ると、右(時計回り)へ回っては左(反時計回り)に回ることを繰り返しており、止まっている時間はありませんが、
はたして、誰(だれ)がモーターの回る向きを切り替(か)えているのでしょうか?
いつものロボットでは、スライドスイッチを切り替えなければ反転できないはずです。

それを自動化させたのが、タッチセンサー黒です。
しかし、タッチセンサー黒は、押(お)すと電気を流してモーターを回せますが、放(はな)すと止まるだけであり、モーターを逆(ぎゃく)回転させる機能(きのう)はありません。
モータを反対に回しているのは誰?

それは「地球」です。
正確には、バード(ホッピングする部分)を下向きに引っぱる「重力」です。

ですから、下がる力はバードの自重(じじゅう=自分の重さ)で、跳ね上がる時だけモーターの力を使っているのです。

どうしてずっと跳ね上がったままにならないかと言えば、地面から浮(う)いた時はタッチセンサー黒がオフになって、モーターに流れる電気が止まり、またバードの自重で落ちるからです。

だから、モーターにとっては、回したり止めたりを続ける間欠運転になります。

 ところで、バードをつなぐシャフトの反対側に取り付けるタイヤには、どのような意味があるのでしょうか?
ちょうど、モーターに付けたギアMを支点(してん)にしたシーソーのようですね。

そうです、ちょっとバランスを崩(くず)したシーソーにしているです。
こうすることで、バードが下(お)りてくるスピードを遅(おそ)くしています。

おもり(タイヤ)を付けないと、バードを落とす重力だけでは強すぎて、道路工事に使う機械(コンクリート用ブレーカーや、アスファルト用ランマー)のように「ダダダダダ…」と騒々(そうぞう)しくなり、とても「ぴょんぴょん♪」とは言えなかったですね!

 逆に、ゆっくり動かそうとして、おもりの方が重くなると、バードが下りられなくなったり、下りる力が弱すぎてタッチスイッチを押せなくなったりと、動作しなくなってしまいます(*1)。

 2日目に、いよいよバードの脚(あし)が鳥のように動くよう改造して、ぐるりと周回するようになると、まるで遊園地のマシーンのようで一層(いっそう)楽しげですね。

*1 おもりの方を重くして、タッチセンサーグレーに替えれば、おもりの重力でバードが上がって、モーターの力で下がるホッピング動作もできますが、あまり跳ね上がらず、おもりによるスピード調整もしにくくなるでしょう。


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/mid/mid-1711.pdf


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

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

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

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

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


1.4 <アドバンスコース『カメラボ(2)』>


 撮影ロボット『カメラボ』の3日目と4日目では、タブレットを載せて移動したり、被写体の周りを回ったりするロボットが紹介されています。


 このうち、2輪で走行するロボットのコントロールにはモーターを2個使ってしまいますので、シャッターはプログラムから押せなくなります。
そのため、タブレットを動画撮影モードにして、録画しながら移動させます。

走行ロボットの制御方式はライントレーサーに似ており、目新しさはありませんが、ロボットの視点から動画を撮ると、見える世界が変わります。

 多くの皆さんに、テキストを見ながら同じものを一所懸命に作ろうとする姿が目立ちますが、機能が再現できるのであれば、そこにこだわる必要はありません。
ロボット製作を早めに終わらせ、改造や作品作りに時間を割きましょう。

手順通りにこなす作業は、ロボットやAIの方が得意です。
正確さとスピードにおいて、人間に勝ち目はありません。

AIには何かを創造する能力はありません。(今のところはね)
人間の最大の強みである創造性が、これからの時代を生き抜くカギになります。

今回、オリジナル作品を何一つ作れなかった人は、取り組み方を改めてください。
そのまま社会に出た暁(あかつき)には、ロボット上司にこき使われますよ?


 先月に続き、ジャンルを問わず、皆さんの面白い作品を紹介します。

【入れ替りマジック】コマ撮り - 東福間 佐藤 作

【仲たがい】コマ撮り - 東福間 福元 作

【集合】コマ撮り - 八幡東 谷川 作

【デコピン】コマ撮り - 中間 渡邉(り) 作

【桑村の冒険】コマ撮り - 中間 桑村 作

【スマブラ】コマ撮り - 小倉北 竹内 作

【スーパーマリオ】コマ撮り - 小倉北 大和(あ) 作
 壁をスクリーンに、幾多の切り絵を貼り付ける斬新な手法。
その高い段取り力と、緻密な時分割プロセスに感嘆します。

【マイクラ】コマ撮り - 小倉南 石橋 作

【夜明け】タイムラプス撮影 - 小倉南 瀬戸口 作
 タイムラプス撮影の王道、プログラミング・ロボットの手を借りずには困難な作品です。

【寝相】タイムラプス撮影 - 小倉南 杉本 作
 最も手を抜いたかもしれない作品。
だが、「自分は本当に寝返りするのか?」という難問に自ら答を出すべく、
ある夜ついに彼は決行した・・・その比類なき実践力(?)に幸あれ。


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


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

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

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

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

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

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

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

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

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

*1 ミドルコース『ロボワン』でも学習した、てこクランク機構が基本原理です。

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

*3 駆動リンクと従動リンクを繋ぐリンク。第3回テキストp.3~7参照。

*4 スライダークランク機構とも呼ばれます。第3回テキストp.12参照。


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


(進度が遅れておりますので、12月挽回予定内容を含みます)

 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型)関数もあり得ます。
引数を受け取らなかったり、複数受け取ったりするようにすら定義できます(*1)。
戻り値の計算式が複雑であるほど、もしくは、まとめて実行したい命令文が多いほど、関数を使った書き方が好ましいと思えるでしょう。

 さて、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%ずつ新しいことを学ぶだけで、あっという間に上級者になれますよ。

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

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


2. 11月の課題


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

 <プライマリーコース>
  - オリジナル図形プリント
  http://robocobo.sakura.ne.jp/blog/HW/RobotP2011-Q.pdf

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

 <ミドルコース>
  - 上記授業内容を精読する
  - オリジナル課題プリント(3面図+設問)
  http://robocobo.sakura.ne.jp/blog/HW/RobotM2011-Q.pdf

 <アドバンスコース>
  - 上記授業内容を精読する
  - オリジナル課題プリント(見取図+設問)
  http://robocobo.sakura.ne.jp/blog/HW/RobotA2010-Q.pdf (10月配信済み)

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

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


3. 10月の解答


 <プライマリーコース>
  http://robocobo.sakura.ne.jp/blog/HW/RobotP2010-A.pdf
 <ベーシックコース>
  http://robocobo.sakura.ne.jp/blog/HW/RobotB2010-A.pdf
 <ミドルコース>
  http://robocobo.sakura.ne.jp/blog/HW/RobotM2010-A.pdf
 <アドバンスコース>
  翌テーマ1ヶ月目(来月)に配信します


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


◆1月は一週ずつ遅れます。

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

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

 ⇒ 12/5, 19,  1/9, 23,  2/6, 20


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

 ⇒12/12 第1回 3F会議室2
  12/26 第2回 3F会議室2
  1/16※, 30※,  2/13, 27

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


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

 ⇒12/ 6 第1回 4F和室・工芸室
  12/20 第2回 5F小セミ
  1/10, 24,  2/7, 21


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

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

 ⇒ 12/5, 19,  1/9, 23,  2/6, 20


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

 ⇒ 12/13, 27,  1/17, 31,  2/14, 28


5. お知らせ

1) ロボット教室オンラインサービス
 本部より封書・メールでご案内の通り、11月~ロボット教室オンラインサービスを開始しております。

 アカウント登録すると、ビデオ授業や今後の新サービスが提供されます。
 - 登録ご案内メールが不明な方はお知らせ下さい
 - 従来のYouTube配信は10月で終了しました


2) 12月分~月会費改定(プロを除く)[再々掲]
 本部より封書・メールをお送りしました通り、下記の通り改定(440円値上げ)させて頂くことになりました。

 <プライマリー/ベーシック/ミドル>
  現行: 9,000円(毎月テキスト・税込10,450円/月)
 ⇒改定: 9,400円(毎月テキスト・税込10,890円/月)


 <アドバンス>
  現行: 9,000円(隔月テキスト・税込10,230円/月)
 ⇒改定: 9,400円(隔月テキスト・税込10,670円/月)


 ヒューマンアカデミーでは、第1号ロボット教室開校以来、10年間同じ月会費に据え置いて参りましたが、
昨今の社会環境の変化・保護者の方からのご要望にお応えし、以下のサービス強化に充てさせて頂きたく、何卒ご理解・ご協力お願い申し上げます。

 ●新オンライン学習コンテンツ
 ●学習到達度診断
 ●保護者向け教育情報

 詳細は本部チラシ(白封筒)・メールをご覧下さい。


3) ロボット教室専用 電池チェッカーはんだ付け講座 終了
 11/3(火・祝)北九州パレスにて、13組の方に参加頂きました。

 殆どが未経験の中、はんだこてを使って電子部品やICのはんだ付け作業を練習した後、ロボット教室用の電池チェッカーとして使える実用品を製作しました。

 一部で、メーターLEDの点灯不良が発生して心配しましたが、単なるはんだ付け不足が原因と分かり、全員が完動品を持ち帰ることができました。

 これでもう、ロボットが動かなくても先生に診断してもらう必要は無いよね!?

4) IchigoJam初級プログラミング ~クリスマスツリーLEDはんだ付け工作編~ 終了
 11/29(日)北九州パレスにて、14組の方に参加頂きました。

 前半は、好きな色のLEDをツリー形の電子基板にはんだ付けしました。
 後半は、7つのLEDが光るパターンを好きなようにプログラミングしました。

 最後に、電池で動かせるプログラムにしてマイコンに書き込み、自分だけのイルミネーションツリーを完成させて持ち帰りました。

 レベルアップするほど短いプログラムでパターンが書けることも知りましたね。

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

 ◆プライマリ【6名平均 図形4.2】
   5点…藤原[八幡東2], 有松[小倉南2], 古場[小倉南1]

 ◆ベーシック【21名平均 図面2.9+設問1.9=4.8】
  10点…なし
   9点…なし
   8点…古賀[八幡東4], 安倍[小倉南5], 渡辺[小倉南3]
   7点…藤津[中間4], 柴田[小倉北3], 村上[小倉南4]

 ◆ミドル【16名平均 図面3.1+設問1.6=4.6】
  10点…なし
   9点…なし
   8点…中村[小倉北6], 林田[小倉南3]
   7点…橋本[小倉南3]
   6点…なし


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