2019年9月30日月曜日

2019年9月報

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


1. 9月授業内容


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


 割愛します。


1.1 <プライマリーコース『メカビートル』>


 割愛します。

1.2 <ベーシックコース『ジャイアントホッパー』>


 バッタ型ロボットです。ギアを介(かい)してモーターが駆動(くどう)するのは、本体の側面で時計の針のように回転するロッド3アナだけです。

それだけなのに、後ろ脚(あし)を折り曲げたり、伸ばしたりを繰り返し、尺取り虫のように前進します。どうしてでしょうか?

 ロッド3アナが1回転毎に後ろ脚を跳(は)ね上げています。
このような回転体に当てることによる周期的な運動機構をカムと呼び、例えば、自動車のエンジンが吸気と排気を切り替えるために使われています。

後ろ脚が跳ね上がる時に関節(かんせつ)が折れ曲がって、後ろのタイヤLを前方へ引きずります。
この時、本体は進みませんが、次に輪ゴムの力で脚が伸びる時、後ろのタイヤLは微動(びどう)だにせず、前輪のタイヤSが転がりながら本体を前へ進めます。

 後ろのタイヤLは回転しないのに、どうして前進するよう都合(つごう)良く引きずられたり踏(ふ)み止まったりしてくれるのでしょうか?
タイヤLは回転しないのですよ。だったら、タイヤLは動かず、後ろ脚の屈伸(くっしん)運動に合わせて本体(前輪)が前後に往復(おうふく)するだけではないでしょうか
(尺取り虫も、次の一歩を迷ってそのような動きをすることがありますね)

 それは摩擦力(まさつりょく=すべらせない力)の効(き)き方が違うからです。

ちょっと難しいのですが、脚を折り曲げる(引っ込める)時は、タイヤLを斜(なな)め前方上向きに引き上げる力が働き、重い本体を後退(こうたい)させるほどの地面との摩擦力はなくなります
その結果、タイヤLの方が引きずられるのですが、逆に脚を伸ばす時は、斜め後方下向きに蹴(け)り出すので、地面との摩擦力が強力に働き、すべらずに本体を推進(すいしん)させるのです。

 消しゴムをノートに軽く当てた場合強く押し付けた場合とでは、すべらせるのに必要な力が全然違いますよね?
また、消しゴムをノートに斜めに当てると、引く時は軽くすべりますが、押す時は摩擦力を強く感じますね。タイヤLにも同じように作用しているのです。

タイヤLが地面から跳ね上がるほどのパワーがあれば分かりやすいのですが、ずっと地面を引きずっていますので、見た目では分かりません
タイヤLを消しゴムだと思ってください。

 タイヤLを回転しないよう止めている理由が分かったでしょうか?
試しに、自由回転するようクランクを取り外してみてください。

 最後の競技は“バッタレース”をしました。スピード勝負です。
推進はゴムの張力(ちょうりょく)、そのゴムにエネルギーを充填(じゅうてん)するのがモーターの仕事と言えますから、ゴムはきつく、モーターはパワフルに、というのが理想ですが、限界もあります。

究極は、有限なモーターパワーをロッド3アナの回転トルク(脚の力)に振るか回転数(脚のスピード)に振るかでギア比を決めたり、それに適した輪ゴムの掛(か)け方や本数を探ったりするのが戦略です。

これまでに下記のような素晴らしい改造が生まれています。
1) モーター軸のピニオンギアギアMへ交換(脚が3倍速く動く)(*1)
2) 側面のロッド3アナ回転中心を端っこ中心へ変更(脚が2倍速く動く)(*2)
3) 2)のロッド3アナに、ロッド5アナを被せ、2)の弱点を解消(*3)
4) タイヤLに代わり、グロメットをはめて、後ろ脚を軽量化(*4)
5) タイヤLのクランク(回転止め)に代わり、(前方向のみ回転させる)ラチェット機構を取り付けて、スーッとすべるように前進する(*5)

 登坂(とうはん)チャレンジも、面白い競技になります。
テキスト通りのロボットでは、坂がきつくなると、後ろ足(タイヤL)の摩擦力が減(へ)ってすべったり、せっかく蹴(け)っても次に蹴るまでに前足(タイヤS)が後ずさりしたりして、あまり登れません。

過去には、後ろ足を重くしたり、腹(はら)で支えたり、前足にもラチェット機構を取り付けたり(!)して、すべり止めの改良が様々に生まれていました。

 ベーシックコースの総仕上げにもなりそうな、奥の深いロボットでした。


*1 力は1/3に弱くなり、モーターが力負けして停止しやすい弱点がありますので、あまり欲張(よくば)れません。

*2 回転半径が半分(2アナ分⇒1アナ分)になるので、動きの幅(ストローク)が半分になり、あまりスピードアップしない弱点があります。

*3 ロッド5アナの中心を回転軸としても、回転半径を2アナ分とれ、ストロークを減らさずに脚を2倍速く動かせます。

*4 バッタらしい力強い脚に見えなくなりますが、電池が弱くても動きやすいですね!

*5 これだけで圧倒的に速くなります。ミドルコースレベルの改造です。


1.3 <ミドルコース『ダンゴム』>


 新ミドル(プログラミング)コース最初の本番は、変形ロボットです。
と言っても、変形させるプログラムがあるわけではありません。
このロボットは旧ミドルコースからあり、ラチェット機構によって、ダンゴムシのように多数の足で歩いたり、丸まったりします。

マイコンは、モーターの正逆回転/停止のトリガリング(切替タイミング)や継続時間を手動スイッチ操作に代わって制御するのみですので、プログラム編はテキストに委(ゆだ)ねます。

ロボットの動き
 モーターは回転する力しか生み出しませんね。
その回転する力でロボットの足を動かし前進するのか、本体を変形させる(丸まる)のかはどこで決まるのでしょうか。

1日目のロボットは丸まらず、スイッチを切り替えても前進・後退するだけです。
(これだけでも、虫嫌いな人をゾクゾクさせるには十分な仕上がりですが)
2日目のテキストに丸まるためのミソが隠(かく)されています。

丸まる改造
 テキストに倣(なら)い、写真のようにラチェットをギアに噛ませてみました。
これでスイッチを入れると…、前に進んだり、丸まったりしましたね。 
なぜ2通りの働きをするのか、皆さんは既(すで)に理解していると思います。

スイッチを一方に入れて前進するのは変わりませんが、逆方向に入れるとラチェットがギアに噛み、後退する代わりに変形するようになりました。

 ここで、1つ疑問が浮かびます。
ラチェットが噛むと、そのギアは回転できなくなり、ロボットがその場に止まったまま動けなくなるだけではないでしょうか?  
ちょうど車のタイヤを回らないように固定した場合のイメージです。

力の逃げ道
 写真のように、赤矢印のギアを回した場合、隣のギアへ回転が伝わります。
青矢印のギアは回転する以外に動きようがないですね。

 そこで、ギアの土台を変えてみます。
写真のように、ビーム2本にシャフトを1本通し、ハサミのようにクロスさせます。
シャフトにギアを通し、もう1組のシャフトとギアを上部のビーム1本だけに通して噛み合わせます。
(実際に作って体験してみることが理解への一番の近道です)

赤矢印の示すシャフトを回してみます。当然、青矢印のシャフトも回転すると思います。
同時に、なんとなく上部のビームもオレンジ矢印の向きに回転しようとしませんか?
赤矢印のシャフトを急に回そうとするほど(*1)、オレンジ矢印のビームもつられて回りやすいと思います。

 この場合、赤矢印の回す力は青矢印のギアを回すかオレンジ矢印のビームを回すかの2通り、“逃げ道”があるわけです。
力の逃げ道がいくつかある場合、より簡単に動かせる(抵抗が小さい)方に逃げます
その結果、青矢印のギアが回ったり、オレンジ矢印のビームが回ったりします。
回しやすさ(抵抗)が同程度の場合は、両方とも回ることになります。

 ここで、力の逃げ道の1つを閉ざすとどうなるでしょうか。
写真の赤丸のように、ストッパーを取り付けてみました。
このストッパーの役割は、ダンゴムの(ギアと噛んだ)ラチェットと同じで、接触しているギアを回らなくしています。

この状態で、赤矢印のシャフトを回してみてください。
上部のビームをオレンジ矢印の向きにダイレクトに回転させる感じがすると思います。

 なぜそうなるのでしょうか?
赤矢印の力の逃げ道として、ストッパーを破壊して青矢印のギヤを回すよりビームを回した方がはるかに楽(抵抗が小さい)ですね。
その結果、青矢印のギアのギアを回すことなく、ビームを回すことに専念するのです。

これがダンゴムを後退させるか、丸めるかを分かつ仕組みの原理です。
7月の『シュート君』、昨年2月の『サカアガリン』にも使われていました。

丸まる仕組み
 力の逃げ道がダンゴムの変形にどのように作用しているのかを見ていきましょう。
モーター軸(ピニオンギア)を、側面のギアMを左からA,B,C,Dと名付けます。

ギアに注目すると、これはラチェットにより回らなくなっています。
全てのギアは噛み合っていますので、このままではモーターは回転できません。
ここで何が起こるでしょう。力は“逃げ道”を常に探しています。

 スイッチを入れると、ピニオンギアは回転しようとしますが、ラチェットにより固定された一連のギアを回すことはできません
代わりに、モーター(頭部)自身が赤矢印の向きに回ることで、ピニオンギアがべベルギアの周りを回ることができますね。

ある程度までモーター(頭部)が回転すると、写真の青丸のように、ダンゴムののパーツ同士がぶつかってしまい、回転できなくなります。
逃げ道は他にないでしょうか?

実験した2本のビーム同士のように、頭⇔胸以外にも、胸⇔腹腹⇔尻の間に、折れ曲がる関節がありますね。
これらが折れ曲がることで、ギアの周りを、の周りを、の周りを回る仕事ができ(*2)、その結果、ダンゴムは丸まっているのです。

 さて、ダンゴムが丸まる仕組みは以上ですが、丸まる動作に不必要なギアがあります
それは、ギアA,B,C,Dのうち、どれを指しているでしょうか?

ダンゴムは、3つの関節で分けられた頭・胸・腹・尻の4部位それぞれに、ギアA,B,C,Dが取り付けられ、関節の両側のギアが互いの周りを回ろうとする(*3)力で折れ曲がっています。
だから、一見無駄がなさそうですが、この力の伝達に寄与(きよ)していないギアがあります。
つまり、それを外しても丸まる動作に影響はありません(*4)。それはどれでしょうか。
そのギアの記号不必要な理由、そのギアの別の役割を考えてみてください。


*1 物体を素早く加速させようとするほど、それを妨げようとする抗力が大きくなり、その分、大きな力を要します。慣性の法則といいます。

*2 実際は、回転方向を整えるために、間にピニオンギアを介していますが、関節を挟んだギア同士が互いの周りを回る作用としては同様に考えられます。

*3 どちらがどちらの周りを回っていると考えるかは、基準(カメラの設置場所=動いていないと感じる方)によって変わる相対的なものです。

*4 ギアA,B,C,Dは両側面にあることに注意してください。両側セットで考えます。


1.4 <アドバンスコース『バグモジョラ(2)』>


 後半の3・4日目は、完成したバクモジュラでテキストp.18の課題に挑戦してもらいました。
バグモジュラを壁に向かって歩かせ、タッチスイッチで壁への衝突を検知すると後ろ向きに歩き、スタートラインへ戻るといったものです。

 この動作を実現させるプログラムを考えてもらいました。
一度分かれば簡単、分かろうとしなければ難しいですね。
タッチスイッチはいつ押されるか分かりませんので、ずっと監視し続ける必要があります。

このような処理には、繰り返し命令「ループ」を使います(左図)。

生徒さんから「IF」を使うという声も出てきました。これも正解です。
ただし、「IF」ではタッチスイッチの状態を1回調べると処理を終えるため、「ループ」の中で使う必要があります(右図)。


どのみち「ループ」が必要なら、短い書き方がスマートですね。

 プログラムを転送してバグモジュラを動かしてみると、まっすぐ歩かせるのは案外に難しかったですね。
左右の足の推進力を調整できれば、バグモジュラの方向を修正できます。

この問題解決には、2つの視点からのアプローチが考えられます。
1) 脚の位相や足先の摩擦力などを調整する、機械的なアプローチ
2) 左右の脚の運動量をプログラムから調整する、制御的なアプローチ

 1) は多くの生徒さんが実践していました。
各脚で向きをずらしたり、足先の形状やグロメットの取り付け方を工夫することで、推進力が変わります。

片側3本ずつあり、反対側の状態にも相互に影響し合いますから、全体の脚が生み出す推進力を位相の組合せで調整するのは困難を極めましたね。
地面に着いたり離れたりする部品の摩擦力による調整も、思うように効かせられませんでした。

 2) の方法はアドバンスコースならではです。
バグモジュラの左右の脚は、それぞれ独立したモーターで駆動しています。
左右で推進力に差があるのならば、強い方の脚を時々休めてあげれば良いというアイデアです。

例えば、左に曲がりやすければ、左脚に比べて右脚の推進力が大きいと考えられます。
この場合、右脚のモーターの回転数を落とすか、右脚の動きを間欠(時々停止)運転することで、左右の推進力のバランスを調整できます。

 この2つの解決法は対照的ですね。
機械的なアプローチでは、何度もロボットを分解しては、ギアの噛み合い(位相)をずらしたり、足先を作り変えてみたりと手間がかかります。
良い調整なんて無いのかもと疑いたくなります。

制御的なアプローチでは、機械の調整はそこそこにして、プログラム上の数字を何回か変更するだけでベストな値が見えてきます。

毎回、制御的なアプローチが近道とは限りませんよ。機械的なアプローチの方が能率的な場合も大いにあります。
状況に合わせて、どちらの解決手段が向いているか見極めましょう。


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


 不思議アイテムの世界も、最終月を迎えました。

 1日目は、“ラーメンタイマー”を作ります。
時間を計る(というより休め!の指示)命令としては delay がありますので、所望の時間だけ静止した後、ブザーでも鳴らせば一先ず完成ですが、経過状況も知りたいのが人情です。

delay(1000) と命令する度に何かをすれば、1秒毎の経過が分かります。
delay(100) を10回繰り返して、0.1秒単位のカッコイイ表示もできます。
秒数を2桁の数字で表したければ putd2、大きな1文字を表示したければ putch、任意の大きさで円や四角を描画したければ circlerectangle、1ドット光らせたければ write、1音を鳴らしたければ play、メロディを奏でたければ play_rtttl、モーターを回したければ rotate等、いろんな命令が紹介されています。

 サンプルプログラムでは、タッチセンサーの入力検出に listenonPress、繰り返しに forwhile、条件分岐に ifswitch-case を使って、初めに秒数やアラーム方法を選ばせる実用的タイマーに仕上げていました。
中には「ピッ、ピッ」と音を発しながら10秒からカウントダウン表示し始める、その名も時限爆弾の CountBom もありました(*1)。

 最終日の2日目は、ちょっと遊んで一息つくのにふさわしい「人工生命とシンセサイザー」がテーマでした。

 人工生命といっても、8x8ドットのそれぞれを生命体(細胞=セル)になぞらえ、周囲の生存セル数に依存した単純な規則によって誕生・生存・死滅を世代展開していく様子を観察して楽しむものです。“ライフゲーム”と呼ばれます。

それの何が面白いといって、“カオス的”なのです。簡単なルールで動いているのに、先行きが読めないのです。
初期状態のちょっとした違いが全く異なる結果を生み、にわかには予測不可能なパターンを繰り広げます。

ここから(*2)、生命現象や神経回路網の再現、人工知能の研究へと発展していきました。
コンピュータの登場がこのような楽しみと学問の道を開いたのですね。

 シンセサイザーの方は、先月の“電子ピアノ”を改造したプログラムです。
無線リンクしたゲームパッドのボタンが鍵盤になっている点は変わりませんが、アナログスティックを倒す量に応じて周波数を増減させる、エフェクター(ピッチシフター)機能が搭載されました。

プログラム上では、“play(NOTE_C4 + effect)”のように、音名を表す記号 NOTE_** にスティック傾倒量 effect を足しています。
“ド”に数値を足すって、どういうことでしょうか?

 先月の1日目に学びました。音名記号は、プログラムの転送前(コンパイル時)に音の周波数に置き換えているのです。
例えば、440Hzの“ラ”ボタンを押しながら、+54相当分スティックを前に倒せば494Hzの“シ”に、-48相当分スティックを引けば392Hzの“ソ”に変わる、という具合です。

 デジタルの世界では、すごく簡単な計算で豊かな効果を演出できる、という一例です。
ロック・ギタリストにでもなった気分で、ブイブイ演奏してみましょう。

 ここまでで、もう、光と音を自在に操れる魔法を手に入れたようなものです。


*1 ジョーク・プログラムなのですが、むき出しの配線や電子基板の中で赤いLED数字がカウントダウンを始めると、かなり物騒な雰囲気を醸し出します。
 テロが心配される国では冗談どころか、誤解から自身を危険に晒すことになるでしょう。
 日本でも、公共の場でいたずらに利用するのは厳に慎みましょう。警察沙汰になるか、配線が切断される被害(?!)に合うこと請け合いです。

*2 ライフゲームそのものというより、上位概念のセル・オートマトンと呼ばれる格子状セルで構成した計算機モデルから。


2. 今月の課題


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

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

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

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

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

 <プロ1年目コース>
  - 上記授業内容を精読する(該当テキストページを見ながら)
  - [CountTimer4]をベースに、LEDドットパターンや数字表示で「経過秒数が分かる」タイマーを作る
  Lv.1 8個の点を順次点灯または消灯させる8秒タイマー
  Lv.2 60個の点を順次点灯または消灯させる60秒タイマー(ヒント:%演算子)
  Lv.3 表示方法を独自に工夫した3分間(180秒)タイマー
  Lv.4 表示方法を独自に工夫した1~9分間設定モード付きタイマー
 (Lv.3以上を指示/Lv.1~順にクリアしていくと先が見える)


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


◆八幡東11/2→11/9へ一週ずれます。

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

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

 ⇒ 10/5, 19,  11/2, 16,  12/7, 21


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

 ⇒10/12 第1回 3F会議室2
  10/26 第2回 3F会議室2
  11/9, 23,  12/14, 28※

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


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

 ⇒10/ 6 第1回 5F企画1・2
  10/20 第2回 5F企画1・2
  11/3, 17,  12/1, 15


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

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

 ⇒ 10/5, 19,  11/9※, 16,  12/7, 21

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


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

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


4. お知らせ

1) 消費税率アップ
 10/1以降に頂戴する月謝等について、増税分を加算させて頂きます。
(10月分月謝について、9/30までは8%、10/1以降は10%で頂戴します)

【授業料+テキスト代】
 ・~ ミドルコース 10,260円 ⇒ 10,450円
 ・アドバンスコース 10,044円 ⇒ 10,230円
 ・ロボプロコース  13,608円 ⇒ 13,860円

【振替手数料】
 ・~アドバンスコース  540円 ⇒  550円
 ・ロボプロ  コース 1,080円 ⇒ 1,100円


2) 宿題プリントA4化と各自印刷のお願い
 下記理由により、全員配布しておりましたA3図面用紙の全員配布を廃止し、
段階的にA4化と各自印刷へ移行したく、ご理解・ご協力お願い申し上げます。

【廃止理由】
 - 本部からのA3図面用紙の支給廃止
 - 宿題の(任意)提出率に鑑みた、紙資源の節約
 - プリント・解答の迅速な開示と、支給洩れの解決

【移行措置】
 - 12月までA4化したプリントを全員配布します
 - 来年1月から月報等に記したプリントを各自印刷して頂きます


3) 北九州高専 秋のオープンキャンパスのご案内

 高専ロボコンや、におい計測ロボット「はなちゃん」などで有名な北九州高専にて、オープンキャンパスが開催されます。
 モノづくりが好きな中学生の皆さんは、この機会に高専を体験してみていはいかがですか?

 当日は一日高専生として模擬授業に参加できますので、受験へのヒントやモチベーションにつながることと思います。
 (1コマ45分の授業が3回あり、興味のある授業を選択できます)

【日時】10月12日(土) 受付 12:00~
    模擬授業・部活動見学等 13:00~16:00
【対象】中学生
   (保護者の方もぜひ/引率はいたしません)

 事前申込み・参加費は不要です。詳しくは下記案内をご覧ください。
 https://www.kct.ac.jp/jyuken/opencampus.html
 https://www.kct.ac.jp/data/images/jyuken/opencampus/20190823-083300.jpg

 お問合せ先
  北九州工業高等専門学校
  093-964-7232  info@kct.ac.jp


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

 ◆プライマリ【14名平均 図形3.9】
   5点…早野(冴)[東福間 年長], 神崎[中間1], 中島[中間1],
     柴田[小倉北2], 鑓水[小倉北 年長], 星野[小倉北 年長],
     村上(夏)[小倉南2], 村上(怜)[小倉南2]

 ◆ベーシック【14名平均 図面2.7+設問1.5=4.2】
  10点…なし
   9点…なし
   8点…橋本[小倉南2]
   7点…なし
   6点…なし

 ◆ミドル【17名平均 図面2.6】
   5点…なし
   4点…中村[東福間4], 竹内[小倉北5], 重藤[八幡東8], 宮尾[八幡東6], 森崎[八幡東4], 塚野[小倉南4]


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

2019年8月30日金曜日

2019年8月報

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


1. 8月授業内容


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


 割愛します。


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


 割愛します。

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


 でんぐり返りロボットです。モーターで回す長い腕(うで)が地面を突(つ)くからでんぐり返るんです。
単純ですし見ていて当たり前、何が面白いんだ!?と言うとそれで終わります。

しかし、座って静止させた状態からこのロボットの動きを予測するのは難しく、先生も最初は分かりませんでした。

 事実、腕を後ろ向きに回すと前転し、前向きに回すと後転するという、予想外な動きを見せます。
実際は、前転はできますが、(人に似せて)前方向にしか曲がらない脚(あし)のせいで後転はできません

後転時は、重力などで脚がまっすぐなままになり腕の回転半径をはみ出るのででんぐり返るまでは至(いた)らず、ちょうど脚をピンと伸ばした腕立て伏(ふ)せか、バタフライのような状態に陥(おちい)ります(*1*2)。

 長い腕の先を地面に突かせて重い本体を起こすには、回転軸(じく)に強大な力(トルク)が必要です(*3)。
おなじみの1/9減速ギア機構がモーターからの回転を遅(おそ)くしてトルクを9倍に上げています。
しかし、何かの拍子(ひょうし)に本体や持ち手に引っ掛かると(イタタタ…)、腕が長い分、てこの原理で強大な逆向きの力が回転軸を止めようとします。
それでギヤに負担(ふたん)が掛かって、ガリガリ音とともに噛合(かみあわ)せが外れ、修理することもしばしば。

 また、でんぐり返り時の衝撃(しょうげき)が激しいので、頭が割(わ)れたり、電池が外れたりしないよう、次のような強化緩衝策(かんしょうさく)を立てておくことも、頑丈(がんじょう)に作る秘訣(ひけつ)でした。

1) 頭部をロッドとペグでつなぎ留める(フランケンシュタイン?)
2) 頭部に輪ゴムを巻く(ミイラ?)
3) 電池ボックスに輪ゴムを巻く
4) 顔面や後頭部に、タイヤやグロメット(ゴムリング)を取り付ける

 それにしても、今回のロボットは元気いっぱいというか、バッタンバッタンと動きが激しく、音も騒(さわ)がしいロボットでした。顔面が外れちゃうね!


*1 腕を回しながら、額(ひたい)を床に打ち付けつつ、「申し訳ございません、申し訳ございません」のポーズにも見えましたね。

*2 前転でも後転でも、でんぐり返る条件は[腕の長さ脚の長さ]です。だから、腕を長くするか、脚をもげば(怖い…)後転もするようになりましたね。

*3 長い傘の先っぽで地面に絵を描く時は、短い小枝を使う時よりも、持ち手にかなりの回転力が必要でしょ?


1.3 <新ミドルコース『カニボ』>


 今月からミドルコースがアドバンス(プログラミング)コース用のマイコン・センサー類を一部下ろす形で、タブレットを用いた簡易プログラミングに対応しました。

 具体的には、専用タブレット・マイコン・音センサー・ブザーが加わり、これまでできなかったモーターのパワー設定と、音や時間、それらの回数を条件にしたモーター駆動や演奏ができるようになりました。

 スタートアップ『カニボ』を参考に、プログラミングでロボットに生命を吹き込んでください。


1.4 <アドバンスコース『バグモジョラ(1)』>


 1日目では、4本脚のロボットを作りました。
右の写真では、全ての脚が揃っているため、モーターを回してもロボットは前後に揺する運動をするだけで歩けません。


 ロボットを歩かせるため、右の写真のように脚の位相(いそう)を変えます。
調整次第では歩くようになりましたが、まっすぐに歩きにくいなど、課題が残ります。



 2日目では、右の写真のようにロボットに中間の脚を追加して、6本脚のロボットに改造しました。
テキストp.8~9を参考に、脚の位相を調整します。
6本脚ならば概(おおむ)ね、まっすぐ歩くことができました。

4本脚よりも6本脚の方が、バランスを取りながらゆっくり歩くのに有利です(*1)。
脚を前へ送り返すとき、その脚は地面から離す必要がありますから、胴体を他の3本以上の脚で支えておく(3点支持)必要があります。
中間の脚を前後とは反対に動くように取り付けた3本脚が左右にあることで、「左脚の中間1本+右脚の前後2本」のように、これが可能になります。

 左右それぞれの脚を独立駆動させるため、2個目のモーターを追加しました。
この改造により、前後のみならず、左右への旋回も可能になります。
左右のモーターにそれぞれスライドスイッチを繋いで、リモコン方式で動かしてみました。

左右の脚の位相を気にしなくても、ロボットは歩いてくれました。
地面を後方に蹴って胴体を前進させる脚が3本以上確保されると同時に、前方へ送り返す脚を浮かせやすくなっているからです。

左右の脚の位相関係を考える必要がないので、左右のモーターの回転方向のみでロボットの進行方向を制御できます。
機械を工夫することでプログラムを簡単にできる好例ですね。


*1 「静歩行」といい、常に3点(以上の)支持を保つことで、その瞬間の姿勢でいつでも静止できる歩き方です。
 対して、人間や動物、高度な歩行ロボット(特に走行時)では、体の運動部位の慣性を利用しながら重心移動を最小限にすることで、その状態で静止すれば倒れるような(例えば1本脚で立ったり、浮上したりした)姿勢も動的に経由しながら、効率的に脚を動かす「動歩行」をしています。


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


 光と音の世界に入って、2ヶ月目です。

 1日目は、“”の続きです。
前回は、楽譜データをRTTTL形式で1曲分丸ごと与えることで自動演奏させましたが、今回は手動演奏です。つまり、電子ピアノですね。

ゲームパッドの16個のボタン(=鍵盤)に任意の音階を割り振り、好きな楽曲を演奏できます。
プログラム上の書き換えだけで済むので、自分が演奏し易いオリジナル鍵盤に仕立てることなど、朝飯前です。

 さて、正しい音程で奏でるには、プログラム上で“ド・レ・ミ…”に相当する記号“NOTE_C4, NOTE_D4, NOTE_E4, …”を使って指示すれば良いので簡単ですが、そもそもマイコンが“ドレミ”で分かるのかという問題があります。

実は分からない(*1)ので、プログラムの転送前(コンパイル時)に、ドレミを音の周波数に置き換えているのです。
例えば、オクターブ4の“ラ”は周波数440Hzなので、記号"NOTE_A4"を数値440に変換しています。
オクターブ5の“ラ”(NOTE_A5)は2倍の880Hz、逆にオクターブ3の“ラ”(NOTE_A3)なら半分の220Hzです。

1オクターブの間には、半音(*2)で数えて12音ありますので、
難しい計算になりますが、音程が半音上がると、周波数は約1.059倍になり、
1オクターブ上がって(半音12個分、1.059を12回掛けて)2倍の周波数になる関係です。

“シ”と“ド”の間には黒鍵がないので半音、周波数が約1.059倍になる関係です。
“ド”と“レ”の間には黒鍵があるので全音、周波数は約1.059×1.059=1.122倍の関係です。
人間にはこんな計算やってられませんね。やはり記号を使いましょう。

 ゲームのキャラクタのように、上下左右ボタンでLEDマトリクス上の十字や任意の表示パターンを動かす毎に異なるを出したり、パッドを振動させたりするプログラムにも触れました。

描画の始点(左上)となる座標(x, y)の値に基づき、パターンが画面の端に当たったかを判定するために、OR表現を用いたif文“if( x<0 || x>5 ) {○○}”を学びました。
これは、「もし、x<0 または x>5 なら、○○を実行せよ」という意味です。

パターンが画面からはみ出ないよう始点の座標(x, y)の値を有効範囲に制限するために、constraint命令を使用しました。

 2日目は、“”を計算で操ります。
既に、直線を描画する方法をいくつか知っています。

<方法1> 1点ずつ座標を指定して、8ドットを順に点灯させる
<方法2> 1コマの絵のように、8×8ドットのパターンとして描画する
<方法3> 上記を洗練し、座標変数(x, y)とfor文を使って実現する


 <方法1><方法2>は、直線を引くだけにしては面倒ですし、変更も大変な作業です。
<方法3>ができるのなら、それは文句なしのスマートな方法ですが、x座標のみを変えながら水平線か、y座標のみを変えながら垂直線を描くのが精一杯ではなかったでしょうか。

斜めに線を引くには、1ドット毎に難しい座標計算が必要そうです。
これを楽にするために、一次関数(中学2年数学)の考え方を導入しました。

x座標とy座標との間にある定まった関係を式で表したもので、例えば、画面の対角線を引く場合は、y=x という関係式を与えます。
yとxの値は常に等しい」という意味ですが、「yはxと同一に変化する」とも読み取れます。
ここで、“for (x=0; x<8; x++) { y=x; }”のようにx値を変化させると、(x, y)(0, 0)→(1, 1)→・・・→(7, 7) と変化しますので、これらのドットを順次点灯すれば良いのです。

y=2x なら、yはxの2倍大げさに変化しますので、斜め線は急峻にそり立ち、
y=0.5x なら、yはxの半分しか変化しませんので、斜め線は緩やかになります。
一次関数のグラフ表現では、斜め線の向きを表す 20.5 を“傾き”と呼びます。
y=-x なら -1 のように、マイナスの傾きも考えられます。
プラスの傾きを上り坂と見なせば、マイナスの傾きは下り坂になります。

 また、y=x+4y=3x-2 のように、最後に定数を足し引きすると、元の y=xy=3x の直線を上下(y座標方向)に数値の分だけ平行移動させた位置に描くことになります。
一次関数のグラフ表現では、直線の上下移動を表すこの定数を“切片(せっぺん)”と呼び、これは x=0 のときのyの初期値のようなものです。

 このように、数学では一次関数の式を y=ax+b(傾きa、切片b)の形で表しますので、プログラムにおいても直線描画に限らず、for文でx値を変化させながらy値を計算する手法(*3)がよく取られます。

<方法3> 一次関数とfor文を使って描画する

と書き直しましょう。

 なお、直線描画に限っては、もっと便利なline命令が用意されていました。

<方法4> 直線の始点座標(x1, y1)と終点座標(x2, y2)をline命令に与える

これを使えば、内部で<方法3>を代行してくれます。

 このように、特にCG(コンピュータグラフィクス)の分野では、誰かが用意してくれた便利な部品プログラム群(*4)を利用するのが当然のことです。
そうせずに、何でも最初から自分で書くのは大変過ぎてやってられません。

 テキストの最後に、コンピュータ内部で文字を管理し、表示するための文字コードについて触れられていますが、今回は、テキストに説明している以上のことを割愛します。

 本当に、ロボ・プロは内容が盛り沢山ですね。テキストを見ながら、なるべく曖昧な点を残さぬよう、しっかり復習と課題に取り組んでください。


*1 音楽専用のICチップなら解釈してくれるものもあります。

*2 ピアノの鍵盤で、黒鍵を含めた隣同士の鍵の音程のこと。五線譜や音符に付く#や♭は、半音上げ下げする記号。

*3 yの計算結果が小数になる場合でも、変数yをint(整数)型で宣言していれば自動的に整数に切り捨てられますので、整数のみが許されるCG座標を表すのに便利です。
 <例> 6.25 ⇒ 6、0.81 ⇒ 0

*4 一般に、ライブラリ(library)と呼びます。有用な書物を集めた図書館ですね。


2. 今月の課題


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

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

 <新ミドルコース>
  - オリジナル課題プリント(3面図のみ)

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

 <プロ1年目コース>
  - 上記授業内容を精読する(該当テキストページを見ながら)
  - 同時起動で蛙の歌が輪唱できるように、各自のパートに合わせて[RTTTL_Kaeru]を改造する
  - [MatrixLineMove1]をベースに、for文1つのまま、縦と横2本の線が同時に平行移動するアニメーションを作る


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


◆八幡東11/2→11/9へ一週ずれます。

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

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

 ⇒ 9/7, 21,  10/5, 19,  11/2, 16


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

 ⇒9/14 第1回 3F会議室2
  9/28 第2回 3F会議室2
  10/12, 26,  11/9, 23


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

 ⇒9/ 1 第1回 5F企画1・2
  9/15 第2回 5F企画1・2
  10/6, 20,  11/3, 17


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

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

 ⇒ 9/7, 21,  10/5, 19,  11/9※, 16

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


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

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

 ※8月よりアドバンス15:00~とさせて頂きます(~12月移行期間)。


4. お知らせ

1) ロボット教室 全国大会 YouTubeビデオ
 8/24(土) 東京大学 安田講堂で開催されました全国大会2019のビデオです。
 https://www.youtube.com/watch?v=Eps6SG95JsQ

 我らが教室からは下記の生徒さんが出場しました:

【テクニカルコンテスト部門】
 ◆中間教室 桑村 悠太郎さん(九州地区予選1位)
 ◆中間教室 島田 晄  さん(九州地区予選2位)

【アイデアコンテスト アドバンスコース部門】
 ◆小倉南教室 辻 昌岐さん『ドリームスロットマシン』(九州地区唯一進出者)


 九州地区から上記3名以外の出場者はないという寡占状態を勝ち取った一方で、全国大会の予選・本選ともに壁の厚さを感じるものでした。
 来年の参考にしましょう。


2) 小倉北ロボティクス・プロフェッサー(ロボプロ)コース説明会

 中学生・アドバンス1年以上履修生を対象に、9月(9/29予定)スタート生を募集します。

 ご興味のある方は、下記いずれかの説明会をご予約下さい。
 ◆9/ 1(日) ムーブ5F 16:45~17:45
 ◆9/15(日) ムーブ5F 16:45~17:45

  - 募集は9月と3月のみです
  - 他教室の方は小倉北教室へ転属となります
  - 9月(9/29予定)スタートには9/15までにお申込み下さい
  - アドバンス進級/継続/ロボプロ進級で悩まれる方はご相談下さい


3) IchigoJam初級ミニゲーム『キーボード ガンマン』終了
 8/20(火)北九州パレスにて、6組の方に参加頂きました。

 短いプログラミングで本格的なキーボード練習ができることを学んだ後、景品の電子部品(サーボモーター)を懸けて、キーボード早撃ちゲームでスコアを競い合って盛り上がりました。

 次回11/4(月・祝) 開催予定の講座をお楽しみに。(詳細は9月報でご案内します)


4) 夏休み科学実験『音にさわろう!スピーカー工房』終了
 8/20(火)北九州パレスにて、3組の方に参加頂きました。

 振動板(コーン)になりそうな紙コップなどの底に磁石を貼り付け、その周りにエナメル線をぐるぐる巻いたコイルを貼り付けてスマホ等のイヤホン端子につなぐだけで、簡単にスピーカー(ヘッドホン)になることが体感できました。

 紙やプラスチックのコップ、アルミカップ等、材料で音の出方が違いましたね。


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

 ◆プライマリ【12名平均 図形3.4】
   5点…鞍成[中間3], 村上(夏)[小倉南2]

 ◆ベーシック【17名平均 図面2.5+設問2.5=4.9】
  10点…なし
   9点…なし
   8点…野口[八幡東5]
   7点…中村[東福間4]

 ◆ミドル【11名平均 図面3.5+設問1.9=5.5】
  10点…なし
   9点…なし
   8点…重藤[八幡東8], 森崎[八幡東4]


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