2019年7月31日水曜日

2019年7月報

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


1. 7月授業内容


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


 割愛します。


1.1 <プライマリーコース『ウッシーくん』>


 割愛します。







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


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

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


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

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

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


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


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

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


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

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


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


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


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

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

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

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


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



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


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

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

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


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

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


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

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


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


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


1.4 <アドバンスプログラミングコース『ロボビート(2)』割愛>


 《割愛し、テクニカルコンテスト研究と成果を纏めます》

 2019年7月26日 九州地区大会 テクニカルコンテストを終えて

 テクニカルコンテスト九州地区大会が福岡市科学館にて開催されました。
九州(山口~沖縄)各県の教室から36名がエントリーし、上位2名が全国大会行きのチケットを手に入れます。
我らが5教室(東福間・中間・八幡東・小倉北・小倉南)からは26名が出場し、今年も全国大会への進出枠を全て勝ち取りました!

中間教室の桑村悠太郎君、島田晄君、おめでとうございます!!


 競技内容は、去年まで行われてきたライントレーサーから変更され、
キットケースに乗せたパイロット(人形パーツ)をロボットで回収し、ゴールを目指すミッションが課されました。

題して、『無人島救出大作戦!』です。

スタート合図3秒前からゴールするまで、ロボットには触れることができません。
そのため、ロボットを自律制御させる必要があり、限られたセンサーを駆使した構造とプログラムを考えます。
パイロットの回収方法には「引きずらない」以外の規制がありませんから、いかに早く正確に取り込むかが勝負の鍵となります。

 生徒さんから多様な方式が出揃いました。


 方式:象の鼻
 特徴:ハンマーを振り下ろし、パイロットを弾き飛ばす
 長所:構造がシンプルで、回収動作に必要な時間が短く、軽量
 短所:パイロットが弾き飛ばされる方向が定まらず、成功は運だのみ



 方式:ゴム網
 特徴:ゴム網をパイロットに振り下ろし、網の隙間に引っ掛ける
 長所:構造がシンプルで、回収動作に必要な時間が短い
 短所:ゴム網の張り方・当たり方で成功率が変わる





 方式:回転カゴ
 特徴:モーターでカゴを回転させ、パイロットを挟み込む
 長所:再現性・成功率が高い
 短所:ロボットの重心が前方に偏りがちで、後輪の急加速・減速時にスリップする場合あり



 方式:ワイパー
 特徴:キットケース上をスワイプしてパイロットを取り込む
 長所:走行を完全停止させなくてもワイパーを作動でき、制御しやすい
 短所:ワイパーの動作が比較的遅い


 今年も各教室のアドプロ時間を延長して研究会を開催し、模擬コースを開放しました。
自分で課題を見つけようとする人、見つけられない人、おしゃべりに高じている人など、研究に取り組む様子も様々です。

大会結果を振り返ると、真に研究を重ねた時間と結果には、関係があるように思えます。
時間の許す限り、失敗するパターンを分析した人には、結果が出ています。
もちろん大会本番の運もありますが、3回のチャンスでリカバリーできなかったのなら、分析不足や戦略ミスを素直に認めましょう。
想定し得る限りのトラブルを経験しておけば、本番でも対処できる可能性が高まります。

 今年の予選は終わりましたが、1回や2回やってみて結果が出ないからって、諦めないでくださいね。
初めての経験は怖いですし、上手くいかないと嫌にもなります。やめたくなるときもあります。大人だって同じです。
でもね、成功や喜びを得るには「やってみる」以外に道はないのです。

心底嫌なら避けるのも手ですが、難しいからと逃げていては何も得られません。
目標への道を進めば、壁と向き合う時が必ず来ます。その時に挑むか逃げるかの選択で人生の展開が枝分かれします。
困難や失敗にどう挑めば良かったかを学んでくれれば、結果以上の成果と言えます。


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


 3ヶ月間のオムニホールロボットを終え、新しいテーマに入りました。
1ヶ月目は、マイコンの出力先として、モーターではなく、光と音を出してみます。


 1日目は“”です。8x8の赤色LEDマトリクスを制御して、ドット絵やアニメーションを試しました。
自らの手でCG(コンピュータグラフィクス)に触れた瞬間ではなかったでしょうか。

 点灯・消灯させるドットを選択するために、中学数学のXY座標系の概念を用い、座標を変えながら繰り返し点灯・消灯する(のを楽にする)ために、for命令文を使いました。
for(i=0; i<=2; i++) {○○}”と書けば、変数iの値が 0, 1, 2 と変わりながら○○を3回実行し、“for (i=10; i>0; i=i-5) {○○}”なら、i = 10, 5 の順に2回しか○○を実行しませんよ。大丈夫でしょうか。
ナイトライダー(*1)風にも簡単に表示できましたね。

 横1ライン分の8つの点を8桁の2進数(01001001など)で表し、これを縦8つ分渡すことで画面表示してくれる関数(*2)を使って、パラパラアニメも制作できました。
2進数01001001に代わり、10進数73としても、16進数49で与えても同じ絵になります。
2進数しか扱えないマイコンへ転送する前(*3)に、01001001に変換されるからです。

 つまるところ、10進数(0~9)は人間に好都合な表記法でしかなく、8本足の火星人なら8進数(0~7)を使うかもしれないのです。
16進数(0~F)というのは、2進数4桁分をちょうど1桁で書けるので、慣れた人には楽なのです。
8進数も、1桁で2進数3桁分なので、コンピュータの分野ではよく使われます。

 2日目は“”も出します。
圧電スピーカー(*4)をつないで、人間の指示に反応できるようタッチセンサーも2個つなぎます。

 タッチセンサーの押下状態を判断してLED表示や音を変えるために、if文を使いました。
一方を押すとカウントアップ、他方を押すとカウントダウン、カウント10になるとメロディ演奏など、「○○なら△△する」という条件付き実行には、“if (○○) {△△}”と書きます。

カウント変数iの値が10, 20, 30, …の時に真になる条件文の書き方は3通りあります。
<初級> if(i==10){動作;} if(i==20){動作;} if(i==30){動作;} …
<中級> if(i==10 || i==20 || i==30 || …){動作;}
<上級> if(i%10 == 0){動作;}

タッチセンサーが押される毎にドット絵の表示位置を変え、合わせて音を出せば、これはもう、ゲーム中のキャラクタ移動ですね。

 さて、本Arduino環境では、単音ながら、RTTTLフォーマット(*5)による楽譜データを与えて任意のメロディを演奏できます。
次月1日目のテキストに詳細が解説されていますが、RTTTLデータは、"曲名デフォルト設定音符列" の3部で構成されます。
スーパーマリオがコインをゲットするような音は、"coin:d=4,o=4,b=200:16b6,8e7" というデータで与えられます。

デフォルト設定 "d=4,o=4,b=200" では、4分音符、オクターブ4、テンポ200が指定され、音符列において特に指定しない限り、この設定が適用されます。

音符列 "16b6,8e7" は、16分音符オクターブ6のシ、8分音符オクターブ7のミ、の順に鳴らします。
即ち、デフォルト設定 "d=4,o=4" は全く効いていません。

ここで、音符列を "c,d,e,f,g,a,b,c5" とだけ記述すると、4分音符で、オクターブ4から“ドレミファソラシド”と演奏されます。
ソ#(ラ♭)は "g#"、休符は "p" で表します。
付点音符(1.5倍の長さ)は、"c." のように、後に"."を付けます。

 2ヶ月目は、音階と周波数の関係や、一次関数のグラフ描画によるCGの基礎を学び、ゲームパッドで光と音を自在に操るなど、ゲームプログラムの要素を掘り下げます。


*1 人工知能を搭載した喋るスポーツカーが犯罪捜査員マイケルと共に様々な事件を解決するアメリカの1980年代のアクションドラマ。知らない人はYouTubeで。

*2 決まった手順の命令群を1つにまとめて名前を付けたもの。その名前を1回呼ぶだけで複数の命令をまとめて実行してくれるので、プログラムが簡単になる。手続き、サブルーチンとも呼ばれる。

*3 転送してあげる方のPC内部でどう処理されるかは少し難しいので割愛しますが、2進数しか扱えない点は変わりません。

*4 普通のスピーカーがアナログ信号(音声・音楽)を再生するするのに対し、圧電スピーカーは、デジタル信号を省電力で音に変換する作用に長けています。
 いわゆる「ピッ」「ピー」「ピロピロ…」というようなアラーム音ですが、昔のゲーム機のような素朴な演奏もできますよ!

*5 Ring Tone Text Transfer Language(着信音文字列転送言語)の略で、ノキア社が携帯電話の着信メロディ楽譜を記述するために開発した書式。
https://en.wikipedia.org/wiki/Ring_Tone_Transfer_Language


2. 今月の課題


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

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

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

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

 <アドバンスプログラミングコース>
  特にありません(テクニカルコンテストの為、割愛)

 <プロ1年目コース>
  - 上記授業内容を精読する(該当テキストページを見ながら)
  - [MatrixSprite3/4]をベースに、5コマ以上の絵でアニメを作成し、家族と教室に披露する
  - [MatrixSpriteMove2]をベースに、4x4~6x6ドットのキャラクタを画面からはみ出ないよう左右(または上下に)移動制御

  《ハイレベル挑戦》限界以上に移動させようとするとエラー音(メロディ)


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


◆小倉北8月よりベーシック/プライマリ10:30~とさせて頂きます。
◆小倉南8月よりアドバンス15:00~とさせて頂きます(~12月移行期間)。
◆全国大会の為、中間8/24→8/31へシフトします。

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

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

 ⇒ 8/3, 17,  9/7, 21,  10/5, 19


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

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

 ※全国大会の為、8/24→8/31へシフトします。


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

 ⇒8/ 4 第1回 5F企画1・2
  8/18 第2回 5F小セミ
  9/1, 15,  10/6, 20

 ※8月よりベーシック/プライマリ10:30~とさせて頂きます。


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

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

 ⇒ 8/3, 17,  9/7, 21,  10/5, 19


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

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

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


4. お知らせ

1) 小倉北ベーシック/プライマリ時間シフト
 8月よりベーシック/プライマリ時間を30分遅らせ、10:30~12:00とさせて頂きます。


2) 小倉南アドバンス時間シフト
 8月よりアドバンス時間をミドル後にシフトし、15:00~16:30とさせて頂きます。
 8~12月を移行期間として、この間は13:00/15:00どちらでもお受けしますが、なるべく15:00~をお奨めします。

 農事センター利用時間の制約上、ミドル/アドバンスを併行しておりましたが、より良い指導&履修環境のため、ご協力をお願い申し上げます。
 (これにて小倉北・南教室が同一時間帯になります)


3) ロボット教室 九州地区大会
 7/26(金)福岡市科学館 サイエンスホールで開催されました。

 福岡の他、山口~沖縄各県の教室から参加があり、300名を超える観覧の中、
アドプロコースのスピード競技(36名)と、創作ロボットの発表(28名)が披露され、盛況でした。

 出場者の皆さん、お疲れ様でした。動画を撮影しておりますので、研究用に活用下さい。

【テクニカルコンテスト部門】
 https://youtu.be/YdhspXlBwAM
 [東福間]久保田(陸)<7位7'50>・久保田(暖)<11位8'74>・佐藤・田中・中原
 [中 間]桑村<1位5'63>・島田(晄)<2位6'77>川村<10位8'69>・島田(隼)<16位16'83>・上坂・山本
 [八幡東]谷川
 [小倉北]数住<3位6'79>・井上<4位6'90>・榊<6位7'10>・糸山<8位8'45>・中村<13位9'38>・山田<14位10'05>・松尾<17位20'47>・上村・内田・本田
 [小倉南]杉本<9位8'54>・今橋・瀬戸口・福政

【アイデアコンテスト部門】
 [八幡東]ミドル…倉富『自動はんばいきロボット』https://youtu.be/vCHQDEFt4Rk
 [小倉南]ミドル…樋口『ゆかふきいも虫』    https://youtu.be/wB8vAZDNPjM
     アドプロ…辻 『ドリームスロットマシン』https://youtu.be/7ZfxpAjg0RE


 テクニカルコンテスト部門は、昨年に続き、全国大会出場枠(上位2/36名)を我らが教室で独占した他、上位18名(完走者)に14名が入るなど、圧勝しました!

 引き続き、アイデア部門の審査結果(発表期日8/9)に期待します。


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

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

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

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


5) 夏休みゲームプログラミング講座《8/18まで延長受付中》
 いつものロボット教室とは異なる刺激を。夏休みの自由研究にもどうぞ。
 http://robocobo.sakura.ne.jp/blog/lab/IJ-B1908.pdf

【日時】8/20(火) 10:00-12:00
【内容】IchigoJam初級ミニゲーム#3『キーボード ガンマン
 タイピングゲームです。数字だけにしたり、小文字を入れたり、記号も含めたり、ゲームレベルはプログラミングで君が決める!!
 プログラミング学べて、ゲームできて、キーボード打てるようになって、一石三鳥?!
【講師】中野・佐藤
【会場】北九州パレス(勤労青少年文化センター) 2F
【申込方法】メールにてお申込み下さい。8/18まで延長受付中
【申込条件】
 - 原則として、9月お引落し額(10月分)に加算して徴収させて頂きます。
  8/18~キャンセル・欠席により空席が発生した場合は返金できません。
  (テキストのみお渡しします)

 - 保護者の方・お子様(対象年齢未満)ご同伴可

 - IchigoJam初級ミニゲーム編は、これまでの長編プログラムから趣向を変え、
  短時間で、ごく短いプログラムを生徒さん自身のアイデアで改変しながら、
  100%理解を促すことに重きを置きます。(高学年さんにも不足ありません)

         (税別)
  ☆…IchigoJam 6,500円(小3~)  新規生向け講座+キット
  ★…IchigoJam 2,500円(小3~) ☆修了生向け

 ☆日時ご相談
  IchigoJamスタートアップ ~初めてのゲームプログラミング~

 ★8/20(火) 10:00-12:00
  IchigoJam初級ミニゲーム#3『キーボード ガンマン』


6) 8月景品交換会
 3ヶ月毎の宿題ポイント交換会を8月「第1回」授業時間「前」に開催します。
 ポイントカードを忘れずに、早めに来て下さい。


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

 ◆プライマリ【14名平均 図形2.9】
   5点…柴田[小倉北2]
   4点…仲井[中間2], 末吉[小倉北1], 星野[小倉北 年長]

 ◆ベーシック【18名平均 図面2.3+設問2.4=4.7】
  10点…なし
   9点…林田[小倉南2]
   8点…なし
   7点…野口[八幡東5], 小牧[小倉南2]

 ◆ミドル【10名平均 図面2.7+設問1.4=4.1】
  10点…なし
   9点…なし
   8点…なし
   7点…重藤[八幡東8], 森崎[八幡東4]
   6点…中野[東福間4]


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