2018年1月31日水曜日

2018年1月報

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


1. 1月授業内容


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


 割愛します。


1.1 <プライマリーコース『ロボダック』>



 割愛します。







1.2 <ベーシックコース『ウォーカータクシー』>


 人力車ロボットです。推進(すいしん)手段は二足歩行です。

 交互(こうご)に前後する二足で前進するには、前→後ろへ移動する足で地面を蹴(け)り、後ろ→前へ移動する足はなるべく地面と干渉(かんしょう)しないような方策(ほうさく)が必要です。
両足が同じように地面と接触していると、前進する力と後退する力が拮抗(きっこう)し、その場でモジモジするだけです(*1)。


 今回のロボットは、側面の上下2本のクランクが常に同じ角度を向きつつ(同位相)回転することで、脚(あし‐ロッド15アナ)を垂直に保ったまま円運動させています(*2)。

左右の脚では、180°ずらした角度(逆位相)のために高低差が激しく変化しますので、片足ずつ浮かせる方式と思いきや、両足が常に接地し、スムーズに歩きません(*3)。

また、片足を上げた分だけそちらへ大きく傾くので、倒れやすく不安定です(*4)。


 これを片足ずつ浮かせる秘訣(ひけつ)が、左右両輪を付けた“リヤカー”です。
ただ牽引(けんいん)しているだけではなく、リヤカー両輪+片足の3点支持を実現しています。
(二足歩行ロボットとしては、ちょっと反則技のような気もしますが…)


 物体は、3点以上で支持することで、姿勢を安定に保てます
カメラ用の三脚(さんきゃく)や三輪車のほか、自転車やバイクが停止時につく足やスタンドも同じ理由ですね。
リヤカーをつなぐと、胴体(どうたい)を直立させたまま片足ずつ持ち上げ、快調に歩むようになりました。

中には、胴体を寝かせて頭部をタイヤで支え、滑(すべ)り止めした足先を突(つ)きながら進む独自の改造もありましたが、これも3点支持です。

 3点支持によらないアイデアとしては、脚の向きが変化しない平行リンク(*2)の性質をうまく利用し、両脚の位相を揃(そろ)えて回し、寝かせた胴体の底面(背中)を地面に付かせたり、水平に浮かして少しだけ前に運んだりしながら進むアイデア(*5)が見られました。


 最後は牽引(けんいん)力を競うべく、長机を傾けて、上り坂に挑戦してもらいました。
足裏がプラスチックのままでは滑りやすく、背が高いと後方へ転倒しやすい弱点が如実(にょじつ)に表れ(*6)、これも直立二足歩行ロボットの難しさを物語っています。



滑り止めとして、足にグロメットや輪ゴムを履(は)かせたり、中には、ロボット教室で学んだラチェット機構をタイヤに装備(そうび)して、急な坂道を上ってみせた“スーパータクシー”も現れました。


*1 二足歩行ロボットには、2016年10月の『ぐるぐる進む君』がありました。
 これも、1日目ではモジモジ君に過ぎませんでしたが、2日目に重心制御を取り入れることで、両足が接地したまま摺(す)り足をすることに成功しました。


*2 平行リンクと呼ぶ機構で、長方形が潰(つぶ)れて平行四辺形になるように、リンク外形を変えられます。スペースワールドのラッキーバスにも使われていました。

*3 わずかに歩く場合は、たまたま前進に有利な重心移動や摩擦が効いており、バランス次第では後退することもあります。

*4 片足では重心の真下(両足の中間点)を支えられないので、引っ込めた方の足も接地するよう傾きます。
 シャフトを横に通すなど、足裏を重心を含むように内側に広げると、片足でも立てるようになります。

*5 先月の『がたごとレスキュー隊』の4脚を全て同じ向きに揃えたロボットに相当。


*6 人間のように足首を曲げられないので、斜面の角度と同じ分だけ上体が傾きます。





1.3 <ミドルコース『シュート君』>


 当時小学2年生のアイデアコンテスト出品作がベースのキックロボットです。(マジでスゴイ…)


 本作品は、モーター1個の正⇔逆回転で、下記をやってのけます。
A) 腕(うで): 振り   ⇔ 振り(戻し)
B) 膝(ひざ): 伸ばし  ⇔ 曲げ
C) 腿(もも): 蹴り   ⇔ 引っ込め
D) 胴体  : 右ひねり ⇔ 左ひねり(戻し)

この動作を語る上で、2017年9月の『ロボアーム』を外せません。
これらの動作は、自動車ロボットのモータータイヤのような固定の連動関係ではなく、バイクの加速(タイヤの回転)とウイリー(前輪の浮き上がり)のような、負荷の軽い順に可動域を使い果たす関係です。

要は、「回しやすい所から回せるだけ回しちゃおう」と、モーターの力が次々と逃げ道を探すのです。

ロボアーム』では、
E) ハンド: 掴み   ⇔ 放し
F) アーム: 持ち上げ ⇔ 降ろし
G) 本体 : 右旋回  ⇔ 左旋回
動作順“逆再生”されなかったり、そもそも曖昧(あいまい)に同時発生したりしました。
負荷の大小関係が(重力を見方にするか敵にするかで)逆転したり、はっきり定まらなかったりする場合の現象です。

シュート君』では、A~Dの動作がいずれも一瞬で完了するので、これらの順序(つまり負荷の大小)にあまり気を配らず、むしろ同時動作した方がキッカーとして様になると考えて設計しているのでしょう。


 大事なことは、どの動作にも可動範囲(限界)を定めていることです。
そうでなければ、腕や胴体が360°回り続ける化け物になってしまいます(*1)。
いましたよね? 背中のペグを見落として、上半身だけ高速スピンする妖怪が…。




 2日目の最後に、任意のパーツでボールを作って、シュートの正確さを競いました。
輪ゴムの復元力をうまく利用したレバー1本で、スライドスイッチを正逆に切り替えながらも、(可動限界があるので)入れっ放しにならないようタッチセンサーも同時に入・切するコントローラーの設計も秀逸(しゅういつ)ですね。















*1 本当は、Aの腕自体に回転限界はなく、B・C・Dの制限から決まります。
 Aは、モーター(胴体)に対するモーターシャフト(背骨)の回転量だけで決まり、モーターシャフトの回転を合同で消費するB・C・Dとは異なります。
 地面に対して、胴体Dと一体のモーター自身が回転するため、理解を難しくしています。


1.4 <アドバンスプログラミングコース『アルクンダーZ(2)』>



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







1.5 <プロ3年目コース『二足歩行ロボット(1)』>


 冬タームに入り、二足歩行の制御を学びます。

 ちょうど今月のベーシックコース『ウォーカータクシー』も、アドプロコース『アルクンダーZ』も二足歩行がテーマですが、
片足の浮かせ方脚の運び方上体の進ませ方(の組合せ)は三者三様です(*1)。


脚の運び方は、『ウォーカータクシー』と『アルクンダーZ』が同様(平行リンクにより足裏を水平に保った回転運動)ですが、本ロボットでは、左右それぞれの足首をひねる動きだけです。

片足の浮かせ方としては、『アルクンダーZ』と本ロボットが重心移動を利用する(上体を左右に傾ける)点は共通ですが、
左右の足に高低差をつけるのに『アルクンダーZ』が前述の脚の運び方によるものであるのに対し、
本ロボットでは、重心移動と同時並行して行なう、一石二鳥のリンク機構です。

加えて、片足で立って足首をひねることにより、上体を左右にひねりながら進む動きもユニークです。


 以上の動きは、(脚の上下動と上体そらし)に1個と、両足首に1個ずつ、計3個のサーボモーターで実現しています。
それぞれを独立して動かせる無線コントローラープログラムにより、先ずは手動操縦で歩行させました。


正しい手順に則れば難なく歩けますので、同じようにサーボ駆動命令を並べることで自動歩行も実現できそうです(*2)。

次月以降、これに両腕のサーボや超音波センサー入力、表示出力の機能を足して、自律させていきましょう。


*1 これらに限らず、二足歩行には様々な機構・制御方式がありますが、ロボット教室のベーシックコースからプロコースまで、どの二足歩行ロボットも「静歩行」に分類されます。
 簡単に言えば、かなりゆっくり歩行動作するので、いつでも安定して停止できるような姿勢を保つ(重心が着地した足裏の上空にある)方式です。
 これに対し、人間や動物、ASIMOが普通に歩く時は「動歩行」と呼ばれ、静的には不安定(重心が着地した足裏の上空から外れる)ながら、動的には安定したスムーズな繰返し動作となる歩行方式で、ロボットには高度なセンシングやフィードバック制御が要求されます。

*2 手順を間違えて、一歩進んでは後ろに下がる、おろおろした動きに笑えましたね。


2. 今月の課題


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

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

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

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

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

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


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


◆小倉北2/4はムーブ4F和室で開催します。
◆なかま2/10はハーモニーホール2F会議室1で開催します。

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

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

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

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

 ⇒ 2/3, 17,  3/3, 17,  4/7, 21


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

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


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

 ⇒2/10 第1回 2F会議室1
  2/24 第2回 3F会議室2
  3/10, 24,  4/14, 28


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

 ⇒2/ 4 第1回 4F和室
  2/18 第2回 5F小セミ
  3/4, 18,  4/1, 15


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

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

 ⇒ 2/10, 24,  3/10, 24,  4/14, 28


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

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

 ⇒ 2/3, 17,  3/3, 17,  4/7, 21


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

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


4. お知らせ

1) 新商品のご紹介 - 希望者は教室長まで
  http://robocobo.sakura.ne.jp/blog/robot_shinshohin_chirasi_201801.pdf

 【ブロック外し】
  固いパーツの分離・取り外しには、時に大人の力・テクニックが要求され、指先の疲弊がやる気を削ぐシーンもあり、自力で頑張ろうとする生徒さんには気の毒でした。
  この度、待望のブロック外しが開発されましたので、ぜひゲットして楽になりましょう!
  数量限定につき、景品交換(宿題30ポイント/当面の販売なし)の対象とします。

 【アドプロ専用タブレットケース】
  ご要望の多かった専用ケースです。2月下旬以降、1,080円で販売します。


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

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

  ◆ベーシック【17名平均 図面2.2+設問2.4=4.5】
   10点…なし
   9点…なし
   8点…宮尾[八幡東4], 森崎[八幡東2]
   7点…荻山[小倉南3]

  ◆ミドル【19名平均 図面3.5+設問2.1=5.5】
   10点…橋本[小倉南3]
   9点…吉良[小倉南6], 原[小倉南4]
   8点…田中[東福間5], 山本[中間5]


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

2017年12月30日土曜日

2017年12月報

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


1. 12月授業内容


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


 割愛します。(アドバンスプログラミング生は2017年9月報を参照)


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



 割愛します。







1.2 <ベーシックコース『がたごとレスキュー隊』>


 救助ロボットです。


1日目では、何の変哲(へんてつ)もなさそうな4輪車に留(とど)まりましたが、車体底面の地上高(自動車用語でロードクリアランス)が低いため、少しの段差で引っ掛かってしまい、がたごと道はとても無理のようですね。
それでも、ちょっとした工夫があるのです。それはスピードが“(おそ)”ことです。

 ギアボックスをよく観察してみましょう(*1)。
モーター軸(じく)のピニオンギア(歯数8)が、まずベベルギア(歯数24)を回し、続いてベベルギアと同軸(つまり等速)のピニオンギア(歯数8)が、両隣(りょうどなり)のギアM(歯数24)を回しています。
タイヤはこのギアMと同じスピード(等速)で回転します(*2)。

歯数8のギア歯数24のギアを回す構成が2段ありますので、1段目で1/3に減速、2段目でさらに1/3に減速することになり、モーターの回転を1/3×1/3=1/9に減速してタイヤを回しています。
つまり、モーターが9回転してタイヤがやっと1回転する遅さです。

 遅いだけなら、何のメリットがあるのでしょう?
実は回転する力(トルク)が9倍になるという恩恵(おんけい)があるのです。
試しに、タイヤを外したシャフトを手でギュッと摘(つ)まんでみてください。
大人でも止められない程に強力ですよ。レスキュー隊として頼もしい力強さが準備できました。


 2日目では、ロードクリアランスの問題を解決します。
もっと大径のタイヤを装着できればよいのですが、タイヤLで最大ですので、代案が必要です。
そうです、タイヤSをクロールする手のように装着するのは、瞬間的に地上高を上げる効果も狙(ねら)っているためです。
バタバタと騒々(そうぞう)しいですが、これで多少の凹凸(おうとつ)は乗り越えられるようになりました。


あとは、4脚(きゃく)の取り付け方向ですね。
4脚とも揃(そろ)えるのか、左右は揃えて前後でずらすのか、全てを90°ずつずらすのか。
後者ほど、いずれかの脚(あし)が地面を掻(か)いている期間が長く、推進効率に優れそうですが。


 最後の競技は、がたごとレース!
瓦礫(がれき)に見立てた材木等を敷(し)き、成功率20%の難関コースを乗り越えて救助に向かえるかどうかを競います。


瓦礫を前に立ち往生(おうじょう)し、脚がもげるなど、「救助隊が必要な救助隊」が多い中、4脚の向きを全てずらしたロボットの成功が目立ちました(*3)。

4脚とも揃えたロボットでは、どの脚も着地していない間に、せっかく乗り上げた瓦礫を底面で滑(すべ)り下りてしまいました。

左右または前後の2脚ずつ揃えたロボットでは、瓦礫に乗り上げて傾いた胴体をさらに傾かせ、転覆(てんぷく)するか、でんぐり返っていました。



 ただ、路面の起伏(きふく)や摩擦状況により最適な構成が変わり得ますので、脚を揃えるのが常に不利と思わないようにしてください。
激しい凹凸を乗り越えるだけなら、4脚一斉(いっせい)に胴体を持ち上げた方が有利のはずです。
その後、胴体着地している間に滑り落ちないよう工夫すれば最強かもしれません。


*1 もしくは、テキストp.7~8の写真を見てください。

*2 前タイヤは、一方のギアMと同軸に付けられて等速で回り、後ろタイヤも、もう一方のギアMから始まって、ギアM同士で等速に伝わります。

*3 胴体と干渉(かんしょう)しないようクリアランスを確保しつつタイヤLに換装(かんそう)するなど、独自の工夫を凝(こ)らして走破(そうは)した人もいました。


1.3 <ミドルコース『プログラミングカー』>


 “プログラミング”と“カー”にそそられます。
“カー”だけに製作も理解も難しくはありませんが、生みの親で、アイデアコンテストで最優秀賞に選ばれた当時小学6年生に脱帽です。


 他のロボットでも、本体の製作時に動作をプログラミングする要素はありますが、本体(ハードウェアプログラム(ソフトウェア)媒体(ばいたい)を明確に分離した点で、唯一無二(ゆいいつむに)のロボットです。

 プログラムとは何でしょう。一連の動作や演目などの手順(表)ですね。
本体の設計を変更することなく、プログラムだけで動作を決定できる利点があります。
ゲームソフトやアプリのアップデート等が最たる活用例ですね。
コンピュータ類に限らず、テレビ、エアコン、冷蔵庫、洗濯機、炊飯器まで、現代の殆(ほとん)どの電気製品がプログラムに則り動作しています。

 本ロボットのプログラム媒体は、赤いロッドを繋(つな)ぎ合わせた一本の棒で、その幅(1~3本分)により、右折・直進・左折を指令します。
また、ロッドを円形に組めば無限ループを実現でき、永遠とジグザグ走行や8の字走行を繰り返すこともできます。

走行用モーター動力をプログラムロッドの送り用ローラーにも分配しているところがナイスです。

自動織機や自動演奏オルガンから始まって、黎明期(れいめいき)のコンピュータも、パンチカードと言って、無数のパンチ穴を開けた何十メートルもの紙を送ってプログラムやデータをセーブ・ロードしていましたが(*1)、その様を彷彿(ほうふつ)とさせます。


 2日目最後の競技に、三角コーンやテープで指示されたジグザグコースを無事に完走するプログラムを設計してもらいました。

このとき、試行錯誤を重ねながら仕上げるのも現実的な成功方法なのですが、計算によって一発成功を狙う科学的方法も追求して欲しいと思い、授業中に余力のある人に挑戦状を掲(かか)げました。


【お題】
 ロッド1穴分(約1cm)送る毎にロボットが何cm進むか?(小数第1位まで)
ただし、ロッドを送るタイヤS直径を38mm、本体を推進させるタイヤL直径を51mmとする。

【解答】
 タイヤSとLの1回転あたりの移動距離(変位)の比は、円周長の比であり、これは直径の比に等しく、38:51である。
ここで、ギア構成により、タイヤLの回転数はタイヤSの3倍である。
よって、タイヤLによる変位は、タイヤSに比して 3×51/38≒4.026倍となるので、
本ロボットは、ロッド1穴分(約1cm)あたり約4.0cm進む

 実際は、各所のスリップの影響により誤差が出ますが、例えば、55cmのロッドでは220cmのコース取りをプログラミングできるという“アタリ”が付けられるようになり、最初から成功に近づける可能性が高まるのです。

算数/数学が得意な人は、円周率3.14やπ(パイ)を持ち出して面倒な計算をしても同じ答が出ることを確認し、比を用いた考え方を深めてください。


*1 テキストp.22参照


1.4 <アドバンスプログラミングコース『アルクンダーZ(1)』>



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







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


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

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

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

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

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

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


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


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

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

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


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

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










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

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

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


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


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


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

*2 しかし、基本は高校の三角関数までで実現できます。
 自力で3D座標計算・描画ライブラリを作成してみようという高校生の生徒さん、数学の応用に適ったナイスな挑戦です!

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

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


2. 今月の課題


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

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

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

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

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

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


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


◆小倉北1/21は『商工貿易会館(シティプラザ)』で開催します。
◆なかま1/27はハーモニーホール利用不可の為、代替施設(未定)で開催します。

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

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

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

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

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


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

 ⇒ 1/14, 28,  2/11, 25,  3/11, 25


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

 ⇒1/13 第1回 3F会議室2
  1/27※第2回 代替施設(未定)
  2/10, 24,  3/10, 24

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


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

 ⇒1/ 7 第1回 ムーブ   5F小セミ
  1/21※第2回 シティプラザ6F
  2/4, 18,  3/4, 18

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


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

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

 ⇒ 1/13, 27,  2/10, 24,  3/10, 24


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

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

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


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

 ⇒ 1/14, 28,  2/11, 25,  3/11, 25


4. お知らせ

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

  ◆プライマリ【9名平均 図面3.6】
   5点…柴田[小倉北2], 林田[小倉南 年長]

  ◆ベーシック【19名平均 図面2.8+設問2.0=4.8】
   10点…荒木[小倉北3]
   9点…なし
   8点…宮尾[八幡東4], 森崎[八幡東2]

  ◆ミドル【23名平均 図面3.4+設問2.6=6.1】
   10点…山本[中間5], 橋本[小倉南3]
   9点…辻[小倉南6], 原[小倉南4]
   8点…吉良[小倉南6], 杉本[小倉南5]

  ◆アドバンスプログラミング【5名平均 図面6.4+設問4.4=10.8】
  最高14点…江平[小倉北7]


5. ご挨拶

 本年も何かとご贔屓を賜りありがとうございました。
 佐藤も中野も、ロボット教室で皆様とのお付き合いの中から数々の気づきを頂戴し、やりたいこと・やるべきことに溢れています。
 何事もそうですが、今年よりも来年を良くするように、そして生徒さんが何か人生のヒントを得られる教室となることを願って鋭意努力して参りますので、どうぞ宜しくお願い申し上げます。
 よいお年をお迎え下さい。


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

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]


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