2021年8月31日火曜日

2021年8月報

1.8月授業内容
2.8月の課題
3.7月の解答
4.今後の授業スケジュール
5.お知らせ


1. 8月授業内容


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


 割愛します。


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


 割愛します。

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


 でんぐり返りロボットです。モーターで回す長い腕(うで)が地面を突(つ)くからでんぐり返るんです。

単純ですし見ていて当たり前、何が面白いんだ!?と言うとそれで終わります。

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

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

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

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

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

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


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


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

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

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


1.3 <ミドルコース『サカアガリン』>


 逆上がりする鉄棒ロボットです。
先月に続き、今月も当時小学2年生のアイデアコンテスト出品作がベースです。(恐るべし2年生…)

 さて、このロボットが逆上がりに成功するまでに、設計上の工夫製作の手順がいろいろありました。
人間の逆上がりとは少し違います。製作を通して、皆さんはいくつ気付けたでしょうか?


1) 周期的に腕と脚(ももの部分)を曲げたり伸ばしたりする機構

 同期した腕と脚の動きは、ずれることなく繰り返されます。
1周期毎に、噛み合わせた脇腹のギアM(腕用)とギアL(脚用)が半回転しては戻るためです。
この周期を決めているのが、腰のロッド3アナ(=ギアM3枚)の回転で、これをクランクにして、脇腹のギアLを往復回転させています。


2) 強靭(きょうじん)な腕力と脚力

 てこの原理により、つま先に重たい電池ボックスを付けて脚を曲げるには、強大な力が必要です。
そんな脚も含めて、掛かる重力に打ち勝ち、体全体を持ち上げる腕力は、もっと強力でなければなりません。
その力が、腰のロッド3アナ(=ギアM3枚)の回転力(トルク)です。


3) 1/27減速ギアトレーン

 前記で必要なトルクを生むために、1/3減速(ピニオンギアギアM)を3段連ね、モーターの回転数を1/3×1/3×1/3=1/27に落とし、トルクを27倍に増強しています。

 2段目でピニオンギアギアM2枚重ね、最終段で3組並べているのは、伝達トルクを分散させて、ギアの歯を保護するためでしょう。
減速するほど強力になるということは、最終段に行くほどギアに負担が掛かるということですから、とても合理的な設計です。


4) つま先の電池ボックス

 皆さん、足に鉄アレーをくくり付けて逆上がりしますか?
足先が重たそうで、やろうとも思いませんよね。
こんなところに電池ボックスを付けたのは、他に置き場所が無かったからでしょうか?

 そうではありませんね。ちゃんと意図があるはずです。
確かに、脚を持ち上げる時は、かなりのパワーを要するようになりますが、一旦、つま先が頭上の鉄棒より後ろ側に越えると、今度は重力が回転の味方をしてくれるのです。
このとき、脚は十分に曲げた状態ですから、それなりに重たい頭(モーター)と胴体は未だ鉄棒を越えていませんが、先に越えたつま先の電池ボックスが体全体を後ろ側へ引いてくれるのです(*1)。


5) ラチェット付き鉄棒

 いくら強力な腕力があっても、鉄棒をゆるく握っていては体を回転させることができず、懸垂(けんすい)運動がせいぜいです。
手先が滑らないよう鉄棒をしっかり握り、鉄棒(シャフト)自体も回転しないようにしっかり固定することで腕を曲げる力が体を逆上がりさせます

 但し、このままでは、逆さになった体をまた前にゆっくり戻すことになり、気味が悪いばかりか(*2)、せっかくの重力の支援を無駄にして逆上がりを中断してしまいます。
そこで、逆上がりする方向へはシャフトが自由に回転するようにラチェット機構を鉄棒に付けたのです。
このお陰で、勢いよく体を振り下ろして、次回の逆上がりを開始するのに必要な位置まで進めることができるようにもなりました。
土台に設置した補助板も、逆上がりを成功させるのに必要な開始位置を維持する目的です。本体の調整次第では、不要になるでしょう(*3)。


 どうでしょうか。練り込まれた設計思想を感じますね。
オリジナルの2年生作品がどの程度の完成度だったのか、少し気になります…。


*1 胴体とつま先が同程度に重たいとしても、てこの原理により、回転軸(鉄棒)から遠い位置の重量物(に掛かる重力)の方がより効きます。

*2 超人的な腕力の体操選手やポールダンサーにも、違和感というか、一種の気味悪さを覚えますが、そんな感じです。

*3 家庭で研究し、腰のペグSの位置(脚を曲げる角度)を変えて補助板を不要にした生徒さんも過去にいました。


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


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


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



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

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

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

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

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

 そこで、左右モーター用スライドスイッチをタッチスイッチに取り替えて、操縦するプログラムを考えてみましょう。

タッチスイッチはON/OFFの1ビット=2値しか入力できませんので、左右スイッチで2ビット=4値停止・右旋回・左旋回・前進に割り当てると、後退ができませんね。
どうしてもできませんか?

このような場合は、時間軸を利用する手があります。皆さんもパソコンのマウスでやっている操作ですよ?
そう、ダブルクリックで別コマンドを送る方法です。

下記は、左右同時ダブルクリックで(2回目を押している間だけ)後退するプログラム例です。
ちょっと難しいですが、これが分かる人は、プロコースも十分理解できるレベルです。

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


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


 光と音の世界に入って、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の初期値(*3)のようなものです。

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

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

と書き直しましょう。

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

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

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

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

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

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


*1 MIDI(ミディ)規格など、音楽専用のICチップなら解釈してくれるものもありますが、その中で最終的に数値データに変換されるのは変わりません。

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

*3 電気代などの基本料金に相当します。傾きが従量料金になります。

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

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


2. 8月の課題


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

 <プライマリーコース>
  - オリジナル図形プリント
  http://robocobo.sakura.ne.jp/blog/HW/RobotP2108-Q.pdf

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

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

 <アドバンスコース>
  - オリジナル課題プリント(見取図+設問)
  http://robocobo.sakura.ne.jp/blog/HW/RobotA2108-Q.pdf (来月まで分)

 <プロ1年目コース>
  - 上記授業内容を精読する(該当テキストページを見ながら)
  - 下記の手段で、任意の楽曲を演奏する
  ・[RTTTL_Kaeru]をベースに、RTTTL楽譜データを書き換え、自動演奏
  ・[TonePS2]をベースに、必要に応じて音程割り当てを変更し、手動演奏
  - [MatrixGraph4]をベースに、for文2重ループのまま、平行または直交する2本の斜め線が同時に平行移動するアニメーションを作る
 または
  - [MatrixLineMove1]をベースに、for文1つのまま、縦と横2本の線が同時に平行移動するアニメーションを作る


3. 7月の解答


 <プライマリーコース>
  http://robocobo.sakura.ne.jp/blog/HW/RobotP2107-A.pdf
 <ベーシックコース>
  http://robocobo.sakura.ne.jp/blog/HW/RobotB2107-A.pdf
 <ミドルコース>
  http://robocobo.sakura.ne.jp/blog/HW/RobotM2107-A.pdf
 <アドバンスコース>
 ⇒ロボットレース大会向けマシン注力の為、割愛しました


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


◆中間9/11, 25は【折尾商連会館】で開催します。

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

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

 ⇒ 9/4, 18,  10/2, 16,  11/6, 20


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

 ⇒9/11※第1回 【折尾商連会館】2F
  9/25※第2回 【折尾商連会館】2F
  10/9, 23,  11/13, 27

 ※~9/30ハーモニーホール閉鎖につき【折尾商連会館】八幡西区折尾3-1-32(施設駐車場なし)で開催します


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

 ⇒9/ 5 第1回 5F小セミ
  9/19 第2回 5F小セミ
  10/3, 17,  11/7, 21


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

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

 ⇒ 9/4, 18,  10/2, 16,  11/6, 20


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

 ⇒9/12, 26,  10/10, 24,  11/14, 28


5. お知らせ

1) 第4回ロボプロ全国大会7/11 結果発表

 全国から2部門13名が選出され、4/25(日)延期→7/11(日)オンライン開催されました。
 ■テーマ部門「おうち時間を楽しく/便利にしてくれる作品」9名
 ■フリー部門「技術力やアイデアの奇抜さを競う自由作品」4名

 キット外の電子デバイスも多用されるハイレベルな戦いの中、MVP賞(総合優勝)は、
フリー部門で選抜された 中間教室プロ1年目 山本蒼也君 が獲得しました!


 審査委員長の古田貴之先生(プロコース監修者)は「圧勝だった」と公言を憚らず絶賛されました。


  作品名『ダンシング・チンアナゴ』
 タイトルも動きも“パーリナイ”な妖しい雰囲気を、高度なハード・ソフト技術と不屈の挑戦マインドで結実させたギャップが魅力的です。

 【結果発表】
 https://kids.athuman.com/robopro/event/convention/2021/report/

 【開催内容】
 https://kids.athuman.com/robo/event/convention/rp2021/

 【ダイジェスト動画】
 https://youtu.be/5JZEUxY867k

 【全編】
 https://youtu.be/YkugjlL21nY


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

 ◆プライマリ【13名平均 図形3.8】
   5点…中川[中間2], 藤原[八幡東1], 翁[小倉北2], 有松[小倉南2], 古場[小倉南2], 原[小倉南2], 眞所[小倉南2], 矢野[小倉南2], 吉永[小倉南1]

 ◆ベーシック【16名平均 図面2.8+設問1.9=4.7】
  10点…なし
   9点…なし
   8点…柴田[小倉北4], 渡辺[小倉南4]
   7点…一ノ木戸[小倉南5]
   6点…仲井[中間4], 鑓水[八幡東2]

 ◆ミドル【16名平均 図面3.0+設問1.9=4.9】
  10点…なし
   9点…藤津[中間5]
   8点…林田[小倉南4]
   7点…なし
   6点…千葉[中間6], 阿部[八幡東5], 諭[小倉北3]


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

2021年7月29日木曜日

2021年7月報

1.7月授業内容
2.7月の課題
3.6月の解答
4.今後の授業スケジュール
5.お知らせ


1. 7月授業内容


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


 割愛します。


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


 割愛します。

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


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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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


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

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

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

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

ロボアーム』では、
E) ハンド: 掴み   ⇔ 放し
F) アーム: 持ち上げ ⇔ 降ろし
G) 本体 : 右旋回  ⇔ 左旋回

ロボキャッチ』では、
H) ハンド: 掴み   ⇔ 放し
I) アーム: 持ち上げ ⇔ 降ろし
J) 全体 : 右移動  ⇔ 左移動

動作順“逆再生”されなかったり、そもそも曖昧(あいまい)に同時発生したりしました。
負荷の大小関係が(重力を見方にするか敵にするかで)逆転したり、はっきり定まらなかったりする場合の現象です。

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

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

 2日目の最後に、ゴールに向けてボールを蹴って、シュートの正確さを競いました。

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

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


1.4 <アドバンスコース『ロボビート②』割愛>


 このドラマーロボットも面白いのですが、レース大会向けマシン注力の為、割愛します。

1.5 <プロ1年目コース『不思議アイテムI-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. 7月の課題


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

 <プライマリーコース>
  - オリジナル図形プリント
  http://robocobo.sakura.ne.jp/blog/HW/RobotP2107-Q.pdf

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

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

 <アドバンスコース>
 ⇒ロボットレース大会向けマシン注力の為、割愛しました

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

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


3. 6月の解答


 <プライマリーコース>
  http://robocobo.sakura.ne.jp/blog/HW/RobotP2106-A.pdf
 <ベーシックコース>
  http://robocobo.sakura.ne.jp/blog/HW/RobotB2106-A.pdf
 <ミドルコース>
  http://robocobo.sakura.ne.jp/blog/HW/RobotM2106-A.pdf
 <アドバンスコース>
 ⇒ロボットレース大会向けマシン注力の為、割愛しました


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


◆8月は盆休み前後シフトあります。

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

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

 ⇒ 7/31※, 8/21,  9/4, 18,  10/2, 16

 ※8/7→7/31シフトします


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

 ⇒8/ 7※第1回 ハーモニーホール3F会議室2
  8/28※第2回 【折尾商連会館】2F
  9/11※第1回 【折尾商連会館】2F
  9/25 第2回 ハーモニーホール3F会議室4(和室)
  10/9, 23

 ※8/14→8/7シフトします
 ※~9/12ハーモニーホール閉鎖につき【折尾商連会館】で開催します


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

 ⇒8/ 1 第1回 5F企画1・2
  8/22※第2回 5F小セミ
  9/5, 19,  10/3, 17

 ※8/15→22シフトします


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

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

 ⇒ 7/31※, 8/21,  9/4, 18,  10/2, 16

 ※8/7→7/31シフトします


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

 ⇒8/8, 29※,  9/12, 26,  10/10, 24

 ※8/22→29シフトします


5. お知らせ

1) 5教室合同ロボットレース大会 終了

 7/23(金)ユメニティーのおがた 小ホールにて、今年で2回目となるオリジナルレース大会を開催しました。
総勢52名(プライマリー/ベーシック21名ミドル15名アドバンス16名)が参戦し、熱いバトルを繰り広げました。
各コース別に設けられたミッションをクリアしながら、出走3回の中でゴールまでの最速タイムを競います。

 タイム計測機は、去年ロボプロ生と共同開発した自動ストップウォッチです。
カウントダウン音「ドレミファソラシド」を発して計測スタート、赤外線センサー+手動ストップによるダブル計測値で信頼性を担保していましたが、
今年はセンサーを産業用にグレードアップしたことでゴール検出の精度と確度が向上し、自動計測率ほぼ100%(去年は50%程度)を達成して、文字通り0.01秒の争いに応えました。

 大会出場者の皆さん、お疲れ様でした。
練習会では幾度となく成功していても、本番では成功率が下がったように見えますね。
特にミッションの難しいアドバンスではこれが顕著で、全体的に速いタイムを出すことに集中しすぎた印象でした。
ミドル、アドバンスでは複数のプログラムを用意し、環境の差異を吸収する安定化と、限界に迫る高速化のセッティングを切り替えるような戦略も考えられましたね。

テキストのないロボットを仕上げるのは大変に難しい作業です。
構想を練り、形にして、試しては改良を繰り返す。これは立派なエンジニアリングです。
記録を残せた人、入賞したマシンにはそれだけの理由があります。
すなわち、失敗するにも理由があるわけで、そこから何かを学ぶことができたならば、皆さんはマシン以上に進化していますよ。

 今年も会場を唸(うな)らせる個性的なロボットが多く登場しましたね。ユニークというだけで人を惹(ひ)きつける魅力があります。
そして、純粋に速さだけを競う『スピードスター』部門も追加し、スピードのみならず、デザインや構造に工夫を凝らしたマシンが集結し、他部門とはまた違った独特の高揚感を醸(かも)し出してくれました!

次回開催する時は、ミッション達成度を争うテクニカル部門なども面白そうですね?!

【プライマリー/ベーシックコースの部】平均2.83秒 延べ完走率67%
  1位 中間  上尾  2.36
  2位 中間  中川  2.41
  3位 小倉南 矢野  2.44
  4位 小倉南 有松  2.49

  5位 小倉南 土井  2.50
  6位 小倉北 翁   2.54
  6位 小倉北 土屋  2.54
  8位 小倉南 古場  2.56
  9位 八幡東 栗屋  2.68
 10位 八幡東 鑓水  2.69
 11位 小倉北 渡邊  2.72
 (他、成功8名、失敗2名)
高解像度の記念写真が欲しい方は教室長まで

【ミドルコースの部】平均4.55秒 延べ完走率56%
  1位 小倉北 中村  3.38
  1位 中間  藤津  3.38
  3位 小倉南 林田  3.59

  4位 東福間 廣渡  3.66
  5位 中間  千葉  3.68
  6位 東福間 徳留  3.74
  7位 東福間 光井  3.85
  8位 小倉南 向野  3.96
  9位 小倉南 高木  4.44
 (他、成功4名、失敗2名)
高解像度の記念写真が欲しい方は教室長まで

【アドバンスコースの部】平均3.10秒 延べ完走率15%
  1位 中間  渡邉(倫) 2.16
  2位 八幡東 樋口  2.33
  3位 小倉北 橋本(慧) 2.78

  4位 小倉南 塚野  3.89
  5位 中間  吉川  4.35
 (他、成功0名、失敗11名)
高解像度の記念写真が欲しい方は教室長まで

【スピードスターの部】平均3.80秒 延べ完走率67%
  1位 小倉南 末廣  3.38
  2位 中間  中村  3.41
  3位 東福間 久保田(陸) 3.81
  4位 東福間 久保田(暖) 4.58
 (他、成功0名、失敗1名)
高解像度の記念写真が欲しい方は教室長まで



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

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

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

 ◆8/ 7(土) ハーモニーホール3F 19:00~20:00
 ◆8/28(土) ハーモニーホール3F 19:00~20:00
 ◆9/11(土) ハーモニーホール3F 19:00~20:00

  - スタート月は3ヶ月毎のみです
  - スタートアップ講座は1日のみ(9/19 or 25予定)です
  - アドバンス進級/継続/ロボプロ進級で悩まれる方はご相談下さい

《コース概要》
 https://kids.athuman.com/robopro/
 http://robocobo.sakura.ne.jp/blog/robotics/robopro_1st_course.pdf
 http://robocobo.sakura.ne.jp/blog/robotics/robopro_2nd_2102.pdf
 http://robocobo.sakura.ne.jp/blog/robotics/robopro_3rd_2102.pdf


3) ロボット教室オンラインサービス[再々掲]
 アカウント登録すると、毎月のロボットの製作手順を動画で見られるロボット教室オンラインサービスが利用できます。
 テキストでは分かりにくい箇所や遊び方などもご覧になれますので、ご活用下さい。
 (休会月は利用できません)

《オンラインサービスご案内PDF》
 http://robocobo.sakura.ne.jp/blog/net/RobotOnlineService.pdf

《アカウント登録URL (PDF記載QRコード)》
 https://form.kintoneapp.com/public/form/show/00008e877a90d5dc03472c81611b94849f6b451581adb93b4b1e993b3fdb7b86


4) 8月景品交換会
 3ヶ月毎の宿題ポイント交換会を下記授業日に開催します。
 ポイントカードを忘れずに、早めに来て下さい。

 [東福間]8/21
 [八幡東]8/21
 [小倉北]8/22
 [中 間]8/28
 [小倉南]8/29


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

 ◆プライマリ【16名平均 図形3.2】
   5点…土屋[小倉北1], 矢吹[小倉北 年長], 眞所[小倉南2]

 ◆ベーシック【16名平均 図面2.5+設問1.6=4.1】
  10点…なし
   9点…なし
   8点…なし
   7点…栗本[小倉南2], 土井[小倉南3]
   6点…なし

 ◆ミドル【18名平均 図面3.4+設問1.5=4.9】
  10点…なし
   9点…なし
   8点…中村[小倉北7]
   7点…なし
   6点…千葉[中間6], 藤津[中間5], 原[小倉南5]


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