2016年7月28日木曜日

7月授業内容

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


1. 7月授業内容


1.0 <スタートアップ>


 割愛します。


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



 割愛します。





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


 2015年7月のミドルコースで登場した人力車ロボットです。推進手段は二足歩行です。

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

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


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

左右の脚では、180°ずらした角度(逆位相)のために高低差が激しく変化しますので、片足ずつ浮かせる方式と思いきや、両足が常に接地し(*2)、スムーズに歩きません
(微妙に前進する場合は、たまたま前進に有利な重心移動や摩擦が効いています)

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

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

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

中には、胴体を寝かせて頭部をタイヤで支え、滑らないよう工夫した脚を回して進む独自の改造もありましたが、これも3点支持です。


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


さらには、1日目の二足歩行ロボットの足裏をタイヤで支えただけで、後ろへ運ぶ側のタイヤを止めたまま、前に運ぶ側のタイヤだけを転がし、しっかり歩いて行く不思議なロボットも出現しました。
本来は前後に等しく自由回転するはずのタイヤが、重心や摩擦力のバランスの崩れによってどちらかに多く回る現象は珍しくありませんが、ここまで完全に停止⇔回転を切り替えることは難しく、講師陣3名を唸(うな)らせた素晴らしい発見でした(*4)。

 最後は牽引力を競うべく、長机を傾けて、上り坂に挑戦してもらいました。
足裏がプラスチックのままでは滑りやすく、背が高いと後方へ転倒しやすいので、胴体を寝かせたタイプが有利でしたが、これも直立二足歩行ロボットの難しさを物語っています。



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

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

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

*4 胴体(タイヤ)の左右への傾きと重心移動による、左右タイヤの回転(軸)摩擦力の差によるものと思われます。上り坂でも後退しないほどの停止トルクを得るには、2015年12月の『ロボフィッシュ』で学んだラチェット機構を用いれば良いでしょう。


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


 ロボット教室カリキュラムとして初登場のキックロボットです。
当時小学2年生のアイデアコンテスト出品作がベースです。(マジでスゴイ…)


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

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

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

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

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

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



 2日目の最後に、パーツでボールとゴールを作って、2人ペアでPK戦をしました。
スイッチを正逆に切り替えながらも、可動限界があるので入れっ放しにならないよう、スライドスイッチとタッチセンサー、輪ゴムを上手く利用したコントローラーの設計も秀逸ですね。


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


1.4 <ロボプロコース『不思議アイテム(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回しか○○を実行しませんよ。大丈夫でしょうか。
ナイトライダー(*6)風にも簡単に表示できましたね。


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

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


 2日目は“”も出します。
圧電スピーカー(*9)をつないで、人間の指示に反応できるようタッチセンサーも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フォーマット(*10)による楽譜データを与えて任意のメロディを演奏できます。
次月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の基礎を学び、ゲームパッドで光と音を自在に操るなど、ゲームプログラムの要素を掘り下げます。


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

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

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

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

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


2. 今月の課題

 次回授業日までに完了してください。
 ◎は必須、○は推奨、△は任意です。○△は能力に応じます。

 <スタートアップ/プライマリーコース>
  特にありません

 <ベーシックコース>
  ○ 4面図スケッチ(専用方眼紙)
  ○ 見取図スケッチ(テキスト最終ページ/難しければ写真の模写から)
  ○ 上記授業内容を分かるまで音読する
   (概ね3年生以上/低学年は補助 or クイズ出題形式で)

 <ミドルコース>
  △(長尺につきスケッチ免除)
  ◎ 上記授業内容を分かるまで音読する

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

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


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


[東福間]第1・3土
   - 10:30~ ロボ・ミドル
   - 13:30~ ロボ・ベーシック/プライマリ

 8月は7/30, 8/20です。9~11月は原則通りの予定です。


[東福間プロ]第2・4日
   -  9:45~ ロボ・プロ1年目

 8月は8/7, 28です。9~11月は原則通りの予定です。


[中間]第2・4土
   - 13:30~ ロボ・ベーシック/プライマリ

 ・8/ 6 第1回 2F会議室1
 ・8/27 第2回 3F会議室2

 9~11月は原則通りの予定です。


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

 ・7/31 第2回(7月)
  10:00~ 5F小セミ
  13:00~ 5F小セミ
  15:00~ 5F小セミ

 ・8/ 7 第1回(by 八幡東教室 中野先生)
  10:00~ 5F小セミ
  13:00~ 5F小セミ
  15:00~ 5F小セミ

 ・8/21 第2回
  10:00~ シティプラザ501会議室
  13:00~ シティプラザ501会議室
  15:00~ シティプラザ501会議室

 8/21は代替施設『商工貿易会館(シティプラザ)』での開催となります。
 9~11月は原則通りの予定です。


4. お知らせ


●オリジナル電子工作講座(保護者同伴の小3も受付けます!)

 8/22(月)に空席あります。保護者様の同伴を条件に小3も受付けます。
 電子工作・回路学習に欠かせないデジタルマルチテスターをプレゼント!

【対象】
 ロボット/プロ/理科実験教室に通う小3~高校生 1日8組16名
 (保護者同伴可、小3は同伴必須)

【日時】下記いずれか一日
 ・8/10(水) 9:30~15:00 満席御礼
 ・8/22(月) 9:30~15:00 空席あり

【会場】
 北九州イノベーションギャラリー(KIGS) 工房(スペースワールド駅 徒歩5分)

【工作名/タイトル】
 『RCドレミ ~限定版~』/「鉛筆一本で音と光を操ろう!」


【内容】
 電子部品と発振回路の原理を実験を通して学び、身近な物をオルガン鍵盤にしてしまうガジェットを製作して遊びます。

【参加料】
 7,500円(受講料5,400円+材料費2,100円)

【講師】
 中野 司・佐藤 誉夫

【申込方法】
 メールにてお申込み下さい。

【申込条件】
 ・原則として、8月お引落し額(9月分)に加算して徴収させて頂きます。
 キャンセル・欠席により空席が発生した場合は返金できません。
 (キットと製作テキストのみお渡しします)
 ・学習の場につき、同伴者は保護者1名のみ(小4~任意・途中退場可)とし、受講生以外のお子様はご遠慮下さい。


東福間・中間・小倉北教室 佐藤