2025年12月29日月曜日

2025年12月報

1.12月授業まとめ
2.12月の課題
3.11月の解答
4.1月の授業予告
5.今後の授業スケジュール
6.お知らせ
7.ご挨拶


1. 12月授業まとめ


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


 割愛します。


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


 対象者はいません。

1.2 <プライマリーコース『アルペンくん』>


 割愛します。

1.3 <ベーシックコース『ロボモンキー』>


 手ながザルが綱(つな)を渡(わた)ります。

 重い本体をぶら下げたまま長い手を動かさなくてはならないので、モーターとギアには相応(そうおう)の負荷(ふか)が掛(か)かり、「ガリガリッ」と嫌(いや)な音を立てるだけで、なかなか進まない人もいました。

このガリガリ音は、ベベルギアの噛(か)み合わせが緩(ゆる)いために滑(すべ)っている音で、ギアの歯をどんどん削(けず)ってしまいます。
モーターに削れた黄色い粉(こな)が付いていたでしょう。

そうならないように、テキストp.6でワッシャーを3枚使うよう、青字の部品名・個数で書かれています。

写真だけを見てワッシャーを1枚しか入れないのは、何のために必要な部品かを考えていない(ワッシャーがぐらぐらでも気にしない)結果です。
組み付ける部品には意味がありますので、常に追求しましょう。

ワッシャーが足りないと、ベベルギアとピニオンギアうすの間に隙間(すきま)が空き、ベベルギアがしっかり固定されない状態にあります。

すると、モーターからの強い回転力を受けた時に、写真のオレンジ矢印で示す方向にベベルギアがずれ、モーター軸(じく)のピニオンギアと噛み合わなくなってしまいます。
この状態がまさにガリガリ音の発生源となるのです。

 さて、ギアがしっかり噛み合ったら、もう一つ大事な電池パワーさえ十分ならば、スイスイと綱渡りするモンキーが見られます。

この手の動きにも注目してください。
モーターによって回転しているのは、目玉の横のクランクまでですが、手の先は綱渡りするのに都合(つごう)よく、
右手で綱をたぐり寄(よ)せているときは、左手を浮(う)かせて後ろに運び、次には反対の手で同様に進むことを交互(こうご)に繰(く)り返しています。

このような動きを変換(へんかん)する仕組みを“リンク機構(きこう)”と呼び、もっと上級のコースで改(あらた)めて研究しますが、まずは「確かにそうなるよね」と思えるまで観察(かんさつ)してみましょう。
そうすると、2日目で手の振(ふ)れ幅(はば)を大きくしてスピードアップした改造(p.18)も、感覚(かんかく)的に理解できるでしょう。

 なお、実際にスピードアップできるかどうかは、やはり電池パワーによります。
てこの原理により、「速く動かそうとするほど、力が弱くなる」宿命(しゅくめい)がありますので、力の弱いモーター(電池)から欲張(よくば)って速い動きを取り出そうとしても、逆に遅(おそ)くなるか止まってしまうことがありましたね。
(ガリガリ音で進まないのは、別の話ですよ)

ということは? 弱い電池でも動かす方法があるってこと?

まずは、2日目p.19~20の改造を「しない」ことですね。
ギアMをピニオンギアうすに替(か)えて、腕(うで)を動かすシャフト8ポチを速く回そうとしています(*1)。
さらに、p.18の改造とは逆に、手の振れ幅も小さくしてみましょう。

いつもはロボットを速くする改造に気を取られますが、遅くすることで得(え)られるメリットもあるのですよ。
ギアで減速(げんそく)するのでも、手足を短くするのでも、それを自分の手で実験して確かめてみてください。


*1 1日目のギアボックスでは、
 ①モーターのピニオンギア ⇒ ベベルギアで3倍、
 ②ベベルギアと同軸(どうじく)のピニオンギア(うす) ⇒ ギアM(うす)で3倍、
トータルで3×3=9倍も遅くして力を強めています。
 p.19~20の改造では、遅くするのは①だけにして、元より3倍速く動かそうとしています。
 5mの綱を渡るのに、1日目は60秒、腕を長くして50秒、さらにギアを替えると16秒くらいと、ギア改造の効果が大きいです。


1.4 <ミドルコース『チクタクロック』>


 振り子時計です。ロボットというより、からくり仕掛けを匂わせます。

皆さんの家には振り子時計があるでしょうか?
先生はオークションで手に入れました・・・昭和40年代のホンモノを。

 1日目は、時計の針をモーターで「ウィーン」と回しました。味気ないですね。
これに振り子を付け足して揺(ゆ)らしても、摩擦(まさつ)のせいで時間と共に減衰(げんすい)しますので、揺れ続けるには、振り子へのエネルギー供給が別途(べっと)必要です。

通常(?)は電磁石が使われます。だから、振り子時計の裏には、モーター用の電池と電磁石用の電池が2本入るようになっていることが多いですね。
時計の針と振り子は全く相関(そうかん)なく、独立して動いています・・・それは、ニセモノです!

 本来、振り子時計の振り子は飾りではなく、一定の周期で振れる性質(等時性=とうじせい)を利用した、時のリズムを正確に刻(きざ)むための肝要(かんよう)な仕掛けです。
電池やモーターが無い時代から動いていた時計、エネルギー源としてはゼンマイがよく使われていました。

 2日目は、時計の針を、巻き上げたおもり(位置エネルギー)で回しました。
ただし、それだけでは、時計の針が目まぐるしく回り、あっという間におもりが着地しておしまいです。
時のリズムに合わせて、与えたエネルギーを少しずつ使い、少しずつ針を進める仕掛け(脱進機=だっしんき)が必要です。

チクタクロックの脱進機は、実際の時計用とは少し違いますが、このシンプルな部品構成で脱進機の役割を立派(りっぱ)に果(は)たしています。
すでに脱進機を知っていた人も、この機構はなかなか思い付かなかったのではないでしょうか。

何しろ、おもり(タイヤL)が少しだけ下がる分の微弱(びじゃく)な位置エネルギーで、針の回転振り子の加勢(かせい)を滞(とどこお)りなく繰り返す、微妙(びみょう)なエネルギー収支(しゅうし)バランスが必要です(*1)。
テキストの設計はやはり絶妙(ぜつみょう)です。

 テキスト通りに組み上げると、随所(ずいしょ)からチクタク音が聞こえてきました。
そうです、いわゆるチクタク音の正体は脱進機だったのです。
初めて電池とモーターを使わないマシン、新鮮です。

 振り子の長さで音のリズム(時計の速さ)を変えることもできます。
振り子時計の基本原理が詰(つ)まっています。

このチクタク音を長く持続させるポイントは2つ。
・振り子を長く(重さは関係ない)
・おもりの位置エネルギーを高く(巻き付ける紐を長く)

このうち、振り子を長くすることで重くなると、どうしても摩擦や、振らせるのに必要な力(慣性モーメント)を増やし、脱進機によるエネルギー供給が足りず停止しがちです。
その場合は、おもりを重くするか、巻き付け半径を大きくする(*2)と有効です。

工夫すれば、100cmの紐で60秒以上、160cmで100秒以上のチクタク音を奏でることができます。
この音、レトロでいいですね。


*1 収支とは、出し入れのこと。おもりが出す位置エネルギーを脱進機に入れ、摩擦熱(音も含む)として消費していきますが、
このエネルギー(≒力)が必要以上に大きいと、振り子を無駄(むだ)に加勢してエネルギーを浪費(ろうひ)し、逆に小さいと、止まってしまいます。

*2 てこの原理により、おもりを重くするのと同様に回転力(トルク)が増しますが、その分速く垂れ下がります。


1.5 <アドバンスコース『アルクンダーZ①』>


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

1.6 <プロ1年目コース『リンクロボット③』>


 多脚リンクロボットの3ヶ月目、最終月です。

 知的ロボットに必要な「感じて」「考えて」「動く」機能のうち、先月までは「考えて」「動く」だけでした。
いや、「考える」といっても、定めたプログラム通りに動くだけで、せいぜい次の動作に移行する秒数を計っているだけでした。

想像してみてください。いくら“脳ミソ”があっても、外界との接点が無ければ(目も耳も鼻も触覚さえも!)、意識は闇の中…。息が詰まりそうですね。

 1日目では、「感じる」触覚を与えます。
円形ボード(頭部?)の左右にタッチセンサーを取り付け、そこから針金(触角?)を前方へ2本伸ばし、地面まで垂らします。
机上で前進中、針金の先が机の縁から垂れ下がるとタッチセンサーがOFFになって、これを検出するプログラムでロボットを後ずさりさせたり、旋回させたり、自由に設計できます。


瞬く間に、崖から落ちないインテリロボの完成です。

これだけでも、ロボット掃除機を想わせる動きになります。どうです?
あのスゴイ家電の動作も、こんな感じで実現できてしまうのですよ!
自ら判断して動いてくれるので、生物のような賢さや可愛らしさが出てきます。

 このために、必要なプログラミング要素を学びました。
もし、○○だったら△△して、そうでなければ××する”ような判断と行動のルールを与えるもので、“if ○○ { △△ } else { ×× }”の形式で記述します。

条件分岐といって、プログラムには大切な要素です。
これがなければ、ゲームソフトも紙芝居がせいぜいです。

 最終日の2日目は、『天下一ロボット武道会』と銘打ち、ラジコン操縦プログラムを転送したロボット同士で一騎打ちを繰り広げます。

ゲーム性を高めるために、ハード的・ソフト的に改造を加えます。
感じるタッチセンサー2個をロボットの前後に付け直し、打たれるとヒットポイント(HP)を失う“急所”に仕立てます。

相手の“急所”を突くための(ほこ)を装備します。

8×8ドットLEDマトリクスを装着し、ロボットのステータス(HP、スタミナ、無敵モード、勝敗宣言)を表示させます。

スピーカも繋ぎ、「敗北の悶絶」や「勝利の雄叫び」に備えます。

 各自で特性パラメータ(初期HP、スタミナ消費/回復速度)を割り振り、バトルフィールドに放って「勝負始め!」
一見単純そうで、パラメータ振りや、攻め・守り・スタミナ回復のための時間/HP消費などの戦略要素が効いてか、これがなかなか面白い!
ゲーム内の戦闘ロボットを現実界に持ち出した感、いや、リアリティはそれ以上(当たり前)です。


この3ヶ月間、多大な時間を費やして組み上げては分解調整を繰り返した末、苦労してスムーズな動きを獲得したロボットは、最後の戦闘を楽しませてくれる堅牢性を見せました。

 ハード・ソフトを問わず、様々な面において思い通りに動かず、苦汁を味わうのは、巷の“ロボコン”でも同じです。
いや、全くこの程度では済まされません。
純デジタルのゲーム世界と異なり、現実の闘いは泥臭い作業の積み重ねであることの片鱗も伺えたのではないでしょうか。


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


 フルカラーLCD(液晶ディスプレイ)を使い尽くす最終月です。

 初めに、オブジェクト指向というプログラミングスタイルが紹介されましたが、
従来的な手続き型スタイルによる変数関数といったものは、本来それらによる操作の対象もしくは主体(言わばモノ=オブジェクト)があるはずで、
どこからでもアクセスできるように無所属的に散在させてバグの温床となるのではなく、オブジェクトに連関させて存在(*1)させようというアイデアです。

オブジェクト指向プログラムでは、変数プロパティ関数メソッドとも呼びます。

例えば、「住民票の発行」という手続き(メソッド)は、市役所職員という概念(クラスから実体(インスタンス)化された職員Aという人物(オブジェクト)が担うのであり、
同じくインスタンス化された別の職員Bも、別の「住民票の発行」を担う能力(メソッド)情報(プロパティ)を持ち合わせますが、
自転車の販売と修理」が専門の工員Cにはその能力もなければ、市役所の情報も操作できないという権能志向で、安全性と記述性を高めます

これは、一定以上の(バグが出まくる)規模のプログラムを作成する段にならないと理解が難しい概念ですので、先ずはプログラムをどんどん書いてみることです。

 さて、コーディングスタイルはともかく、描画アプリケーションの数々に触れましょう。

 1日目は、中学数学から習った関数グラフのCG描画です。
1次関数 y=ax+b による直線2次関数 y=ax2 による放物線など、机上では面倒なだけ(?)のグラフも、1ドットずつ座標計算しながら打点するプログラムが鮮やかに直線や曲線を紡(つむ)ぐのを見ると、実感が湧くというものです。

高校数学の三角関数 sin(x), cos(x) を組み合わせると、シンプルな式から予想外に美しい幾何学模様が生まれ、色々試したくなります。
方眼紙に手計算では、とても描けるものではありません。コンピュータが無い時代の数学者なら泣いて感激するところでしょう。

 ステップアップして、立体図形をぐりぐり回転させる3次元ポリゴンCGアニメともなると、
毎フレーム全頂点について、3次元空間座標を三角関数により回転し、2次元平面(画面)へ投影する中で、陰線・陰面処理、角度によって面の明暗や模様を変化させるシェーディングテクスチャマッピング等、膨大かつ高速な計算処理が要求されます。

全部自分で計算するArduino用マイコン(*2)には荷が重そうでしたね。
過去の非力なコンピュータもリアルタイム描画が苦手でした。
現在のPCやスマホがいとも簡単にやってのけるのは、爆発的に高速化したCPUやメモリの恩恵もありますが、これまた爆発的に進化したポリゴン座標計算・描画専用のGPU(Graphics Processing Unit)が搭載されているお陰です。

 2日目は、クリスマスの時季に相応しい(?)、素敵なエクスペリエンスに満ち溢れました。

 1つは、フラクタルという幾何学図形の造形手法で、「図形の全体と部分が自己相似になっている」と表現されます。
地形(海岸線など)や生物器官の分岐構造(血管)等、自然界の複雑な造形パターンにも、比較的単純なフラクタル構造(の近似)が当て嵌(は)まるとする研究もあり、CGによる創生シミュレーションが面白い分野です。


教養としても、コッホ曲線ギャスケットの三角形木の枝シダの葉など、「これぞフラクタル!」というプログラムの典型例を体験しました。

複雑な図形の割に、プログラム行数(数式)や変数が少なく、ちょっと弄(いじ)っては変化を楽しむというのも、コンピュータを得た現代人の特権です。


 もう1つは、ゲームプログラムです!
真っ当なコンピュータゲームを作るのに必要なデバイススキルは、もう全て手中です。


ハードウェアとして、LCD、コントローラ用ボタン(タクトスイッチ)の結線を、
ソフトウェアとして、ゲームのルールを定める論理(条件分岐・ループなど)の記法と、点打ち(ドット絵)や線引き・面の塗り潰し関数ライブラリの使い方を知っています。

シンプルなゲームプログラムからパラメータを弄り始めて、自分好みに改造するというのも、やる気と楽しさが尽きない、冬休みにぴったりな挑戦でしょう。
家族を欺(あざむ)いて自分だけが有利にプレーできるよう、こっそり隠しコマンドを仕込んでみるのも面白いですよ!(*3)


*1 オブジェクトには生成~消滅までの寿命があり、専属の変数(プロパティ)や関数(メソッド)も生死を共にする他、誕生会(コンストラクタ)や葬式(デストラクタ)に相当する儀式(自動的に呼び出されるメソッド)も定義でき、大規模プログラムには便利です。

*2 英Atmel社製AVRマイコンシリーズ ATmega328P で、28ピンDIP・8ビットCPUコア・20MHz・32kBフラッシュメモリ搭載品です。

*3 隠しコマンドの受付けには、一定以上の入力シーケンス(上上下下左右左右…など)を記憶しながら検査する必要があるため、面白いだけでなく、ちょっとしたプログラミングテクニックの修練にもなり、良いネタです。


2. 12月の課題


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

 <プレプライマリーコース> (プライマリーではありません)
  - オリジナル図形プリント
  https://robocobo.sakura.ne.jp/blog/HW/RobotPP2512-Q.pdf

 <プライマリーコース> (難しければプレプライマリー↑でもOK)
  - オリジナル図形プリント
  https://robocobo.sakura.ne.jp/blog/HW/RobotP2512-Q.pdf

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

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

 <アドバンスコース>
  - 授業まとめを精読する
  - オリジナル課題プリント(見取図+設問)
  https://robocobo.sakura.ne.jp/blog/HW/RobotA2512-Q.pdf (来月まで分)

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

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

  -《第5回テキストp.12 やってみよう!~ p.15 ステップアップ》
  [MagicItemLCD4/Chara5A]をベースに、全長5ドットのヘビを上下左右に操縦する(1日目)
 ([MagicItemLCD6/Snake]を参考に、タクトスイッチ4個をINPUT_PULLUP接続)

  《簡易処理のヒント》
   長い配列 int x[300], y[300] を宣言し、初期のヘビの体を頭から順に[4]~[0]に保存、
   進む度に先頭座標の軌跡を[5], [6], [7], … に記録しながら、先頭から6ドット目を消す
   [299]まで使い果たしたら while(1); で止める([300]以上はメモリ不足で暴走)

  - 野菜「ロマネスコ」を食し、舌でフラクタルを堪能する


3. 11月の解答


 <プレプライマリーコース>
  https://robocobo.sakura.ne.jp/blog/HW/RobotPP2511-A.pdf
 <プライマリーコース>
  https://robocobo.sakura.ne.jp/blog/HW/RobotP2511-A.pdf
 <ベーシックコース>
  https://robocobo.sakura.ne.jp/blog/HW/RobotB2511-A.pdf
 <ミドルコース>
  https://robocobo.sakura.ne.jp/blog/HW/RobotM2511-A.pdf
 <アドバンスコース>
  https://robocobo.sakura.ne.jp/blog/HW/RobotA2510-A.pdf


4. 1月の授業予告

 https://robocobo.sakura.ne.jp/blog/hap/robo-2601.pdf

 <プレプライマリーコース>『アルキング』
 <プライマリーコース>『ロボダッグ』
 <ベーシックコース>『親子マーチ』
 <ミドルコース>  『テケテケドリ』
 <アドバンスコース>『アルクンダーZ②』
 <プロ1年目コース>『不思議アイテムI-2①』
 <プロ2年目コース>『倒立振子ロボット①』
 <プロ3年目コース>『二足歩行ロボット①』


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


◆土曜日の教室(東福間・八幡東・サンリブ古賀)1月は一週ずつ遅れます
小倉南2/8は市の催事の為、2/15へシフトします

――――――――――<佐藤教室長>――――――――――

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

 ⇒ 1/10※, 24※,  2/7, 21,  3/7, 21

  ※1月は一週ずつ遅れます


[東福間プロ]第2・4日原則<学習ルームでこぼこ>
   - 10:00~ プロ1年目・2年目
   - 13:00~ プロ3年目

 ⇒ 1/11, 25,  2/8, 22,  3/8, 22


[サンリブ古賀]第2・4土原則<文化サークル>
   - 10:30~ プライマリ/ベーシック/ミドル/アドバンス

 ⇒ 1/17※, 31※,  2/14, 28,  3/14, 28

  ※1月は一週ずつ遅れます


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

   - 15:00~ プロ1年目

 ⇒1/ 4 第1回 5F企画ルーム1
  1/18 第2回 5F企画ルーム1
  2/1, 15,  3/1, 15


――――――――――<中野教室長>――――――――――

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

 ⇒ 1/10※, 24※,  2/7, 21,  3/7, 21

  ※1月は一週ずつ遅れます


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

 ⇒ 1/11, 25,  2/15※, 22,  3/8, 22

  ※2/8は市の催事の為、2/15へシフトします


【振替教室ご利用条件(ロボプロを除く)】――――――――
 振替先の1週間前までにメール下さい(許可制)
 振替手数料550円/回をご負担下さい(お引落し)
 (東福間⇔小倉北のみ無料)
 所定コース内容・時間のみお受けします


6. お知らせ


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

 ◆プレプライマリ【4名平均 図形4.0】
   5点…高崎[小倉南1]

 ◆プライマリ
   5点…なし

 ◆ベーシック【8名平均 図面2.9+設問1.4=4.3】
   6点…西尾[小倉南3]

 ◆ミドル【11名平均 図面3.3+設問2.4=5.7】
   9点…亀平[八幡東4]
   8点…荒川[小倉北5]
   7点…井上[東福間5], 山根[八幡東4]

 ◆アドバンス
  10点…古川[小倉北6]


7. ご挨拶


 《配信メールでご覧下さい》


東福間・小倉北・サンリブ古賀教室 佐藤 / 八幡東・小倉南教室 中野