2.5月の課題
3.4月の解答
4.今後の授業スケジュール
5.お知らせ
1. 5月授業内容
1.0 <スタートアップ(全コース)>
割愛します。
1.1 <プライマリーコース『ロボシーソー』>
割愛します。
1.2 <ベーシックコース『パカラー』>
馬型ロボットです。
中には、首を長くしてキリンや、角を付けてトナカイになったものや、首なし“妖怪”もありましたが。
横から見て、前脚(まえあし)と後ろ脚(うしろあし)がハの字に開いたり閉じたりを繰(く)り返します。
左右ではタイミングを反対(位相を180°ずらし)にしています。
単純に見えるリンク機構から、モーター1本で動物らしく4足歩行することに驚(おどろ)かされます。
特に、前足(タイヤ)は、横から見て円形を描(えが)くように動くことで、左右どちらか一方が接地(せっち)し、他方は浮(う)き上がることが可能になり、真の歩行動作と推進力(すいしんりょく)を生み出しています。
後ろの2足(ホイール)は常(つね)に接地したまま前後運動(見せかけの歩行)をするので、摩擦(まさつ)が邪魔(じゃま)にならないようゴムを外していますが、
前の1足と合わせた3点支持(しじ)により、本体を安定させる役割も担(にな)っています。
あとは、首を飾(かざ)り付けすぎたり、重たい電池ボックスを前方に片寄(かたよ)らせたりして前のめりにならないよう、重心(重さの中心位置)に気を配ります。
もしくは、リヤカー(サンタのソリ?)を引くことでも安定しましたね。
授業の最後に、対戦ペアのパカラーのお尻(しり)を紐(ひも)でつないで、綱(つな)引きをしましたが、下記のようなロボットは弱かったようです。
1) 電池が弱い(*1)
2) ベベルギアが滑(すべ)ってガリガリ言うだけで、進まない(*2)
3) 綱でお尻の高い所を引っぱられて前足が浮き、地面をうまく蹴(け)られない(*3)
4) 左右の脚を動かすタイミングが真反対(まはんたい)になっておらず、推進力が弱かったり、バランスが悪く倒れやすかったりした(*4)
5) グリップ力を高めようと重くしすぎたり、引きずる後ろ足にまでタイヤゴムをはめたりして、自身で動けなくなり、判定負けした(*5)
*1 引っぱれないどころか、動けなければ判定負けですので、勝ち目がありません。
*2 モーター側のピニオンギアとベベルギアがしっかり噛(か)み合うよう、ワッシャーを3枚入れています。
ベベルギアが削(けず)れてしまったら、ワッシャーを4枚にしたり、ブッシュやグロメットに替(か)えたり、自分で改良します。
*3 後ろ足を支点(してん)にして、パカラーを後ろに回転させようとする力が働(はたら)くためです。
綱をなるべく低い所に結び、さらに、頭のパーツを重くして、重心を前方に移動させます。
運動会の綱引きで、上体を引きたい方向(後ろ)へ傾(かたむ)けるのも、つっぱった前足を支点にして体が前へ回転しないよう、重心を後ろにもっていくためです。
*4 胴体(どうたい)側面(そくめん)のロッド3アナの向きを180°ずらします。
90°ずれの人が多かったです。そうすると、「パカ、パカ、パカ…」という等(ひと)しいリズムにならず、「パカパカッ、パカパカッ…」となってしまいます。
*5 実は、ギアで減速すると止まらず、最強の改造になりますが、ミドルコースレベルです。
1.3 <ミドルコース『ロボワン』>
忠犬ロボットと銘打(めいう)っています。
今月はベーシックコース共に、4足歩行動物になりました。
回転するロッド3アナ(クランク用)と連接用ロッドをペグ(回転軸)でつないだリンク機構(てこクランク機構)により、
モーター1本で4足がタイミング(位相)をずらして前後(実際は細い三日月形)運動をします。
また、このリンクの組み方次第で、ロッド末端部(足先に相当)に輪ゴム留(ど)めした鉛筆の軌跡(きせき)が細長い三日月や楕円(だえん)に変わることも実験しました。
機械工学的な理論としては難しいので、テキストでも解説はありませんが、
てこクランク機構というのは、組み方を少し変えるだけで軌跡が大きく変わるので、いろいろ試して歩き方の変化を楽しんでみましょう(*1)。
授業最後の競技は、ベーシックコース『パカラー』同様、綱引き!
下記のようなロボットが強かったようです。
1) 電池がパワフル
言うまでもありませんね。前提条件です。
2) ピニオンギアとベベルギアをしっかり噛(か)み合わせている
ギアが滑(すべ)って「ガルルルッ…」と吠(ほ)えるだけの負け犬が多かったです。
テキスト通りに作ってダメなら、自分で調整するように(*2)。
3) 4脚をバランス良くずらして動かす
脚は付ければいいってものではありません。胴体側面のロッド3アナの向きとシャフトペグの位置をテキスト通りに合わせます。
前脚も後ろ脚も、左右でタイミングを反対(位相を180°ずらし)にするのが基本です。
前後では、90°ずらしています(*3)。
4) 脚が短い!
ダックスフント型の改造例がテキストに載っています。スピードレースには不利ですが、綱引きにはとても有利です(*4)。
同じモーターパワーで足先の動きを遅くするということは、ギアで減速するのと同じく、力を大きくします。
その分、電池が弱くても止まりにくくなります。
5) グリップ力を増やす!
1) ~ 4)を対策した上で、ロボットを重くしたり、足裏にタイヤゴムを履(は)かせたりして、地面との摩擦力を大きくするのは吉です(*5)。
2018年11月には、相手に引っ張られて体勢を崩(くず)し、足を浮かせられなくても推進の邪魔にならないよう足先に転がるタイヤを付けた上で、ラチェット機構により蹴(け)り出すグリップ力を確保する改造も見られました。
ミドルコースに相応(ふさわ)しいナイスアイデアですね!
*1 テキスト最後に掲載(けいさい)された高橋智隆(ともたか)先生のメッセージからも、試行錯誤(しこうさくご)してバランスを調整した形跡(けいせき)が見て取れますよ。
*2 ベベルギアが滑って削(けず)れると、より滑りやすくなりますので、スペーサー(隙間を埋めて固定するもの)として、ブッシュの他にワッシャーを追加したり、グロメットやマイタギアに替えたりして強化します。
*3 そうすると、左前0°、右後ろ90°、右前180°、左後ろ270°のように、90°回転する毎に4足が次々と均等間隔(きんとうかんかく)で地面を蹴(け)るようになります。
均等でないと、「足を着けて地面を蹴る」→「足を浮かせて前へ戻す」という一連の動作が下手(へた)になって推進効率(すいしんこうりつ)が悪くなったり、モーターの負荷(ふか)が過大(かだい)になって止まりやすくなったりします。
*4 本物のダックスフントには期待しないように…。
*5 これだけをやっても、止まりやすくなってしまいます。
1.4 <アドバンスコース『コピーロボット(2)』>
《下記を参照下さい》
http://robocobo.sakura.ne.jp/blog/robot/adv1-1805.pdf
1.5 <プロ2年目コース『不思議アイテムII(2)』>
外付けの電子回路をプログラミングで操る春タームの2ヶ月目です。
前月は、タクトスイッチというデジタル(ON/OFF)入力装置をマイコンに繋いで、プログラム中 digitalRead() 関数で読み取りましたが、
我々はアナログ量に満ちた自然界に住んでいます。
光の強さ、色の濃さ、音の大きさ、痛みや匂いなど、およそ0/1だけで語られては困る事象と相互干渉しながら暮らしています。
それだけに、コンピュータやロボットに対しても、アナログ的な入力や出力を期待できないと満足がいきません(*1)。
とは言え、せっかく微量の電力だけで高速処理してくれる小さなマイコンチップに、人間の都合で味覚や温度、力加減まで、何でも分かる感覚を付け足していくのは酷で、蛇足にも思えます。
それでも、列挙した感覚をもつマシンはめいめい現存しています。専用マイコンなのでしょうか?
そうではありませんね。汎用(はんよう)の演算処理装置(CPU)に、必要なセンサーを繋いでデータを送受信する方法が一般的な解です。
流すデータ(数値)を構成する物理量として、“電圧値”が最も多用されます。
中身が電圧型論理回路であるマイコンにとって、扱い易く、省エネにできるからです。
マイコンには、電圧のデジタル値(0/1)だけでなく、アナログ値(0~1)も入出力できるピンやモード設定が用意されています(*2)。
だから、光でも音でも熱でも力でも、その量に応じて電圧値に変えられるセンサーなら、直ぐに繋げます。
繋いだら、analogRead() 関数で読み取るだけです。
1日目に、ボリュームセンサー(可変抵抗器)を繋ぎました。
と言っても、その名の通り、ツマミを回して抵抗値を変えられる部品ですから、電圧値を読み取るマイコンの入力ピンにそのまま繋いでも、何もセンシングできません。
耳の穴に抵抗器を入れて音を聞こうとするようなものです。
抵抗値は、電流を流すことで、簡単に電圧値に変換できます(*3)。
電圧・電流・抵抗の間に、オームの法則と呼ぶ次の関係があります(*4)。
水圧・水流・蛇口の絞りの関係になぞらえると理解し易いです。
・電流(I) = 電圧(V) ÷ 抵抗(R)
・電圧(V) = 抵抗(R) × 電流(I) ←電流を流して抵抗を電圧に変換する式
・抵抗(R) = 電圧(V) ÷ 電流(I)
ボリュームから可変電圧を作り出す原理は、抵抗分圧といって、詳細は割愛しますが、以下に簡単に説明します。
1) 10kΩタイプの3端子ボリュームの場合、両端子間にGND(0V)と5Vを繋ぐことで、I=5V÷10kΩ=0.5mAの電流がずっと流れます。
2) ツマミは、GND側から5V側まで伸びる10kΩ抵抗の任意の位置に接点をスライドさせ、接点は真ん中の端子に繋がっています。
3) 接点がGND側から20%の位置にある場合、GND⇔接点間の2kΩに0.5mA流れていることにより、真ん中の端子には2kΩ×0.5mA=1V(5Vの20%)の電圧が表れます。
4) 真ん中の端子電圧をマイコンで読み取ることで、ツマミを回した量が判定できます。
5) 両端子間の抵抗値が何でも同じですが、流し続ける電流量(ノイズ耐性)で選びます。
ボリュームセンサーに代わり、CdS光センサーは、明るさに反応する可変抵抗器です。
例えば、暗闇で10kΩ(暗抵抗)、日光で100Ω(明抵抗)程度まで変化します。
これを固定抵抗器と直列に接続し、両端に電圧を掛ける(電流を流す)ことで、中間の接続点に明るさに応じて抵抗分圧された電圧値が表れます。
つまり、マイコンで明るさを検知し、メーター表示したり、照明を自動点灯したり、画面の明るさを制御したりできるようになります(*5)。
または、圧電スピーカを繋ぎ、analogRead() 値を tone() 関数に渡すという、たった2行だけで、かざした手の距離(影の暗さ)に応じて音の高低が変わるテルミンのような楽器になりました(*6)。
2日目は、4桁の7セグメントLEDによる表示方法を学びました(*7)。
下記の表示関数が登場しました。
・setDigit() … 指定した桁に数字およびドット(小数点)を表示
・setLed() … 指定した桁の指定した棒またはドットを点灯/消灯
・setDec() … 指定した数(-999~9999)を一発で表示
特に、setLed() を使えば、数字だけでなく、8(7つの棒+ドット)×4桁=32個のLEDによる任意のパターンやアニメーションを表示できるということです。
そもそも、数字の形を指示せずに表示してくれる setDigit() や setDec() も、中身では setLed() 相当のプログラムで光らせる棒を1本ずつ指定しているだけです。
意味のある7セグ数字を見ていると、いかにもマイコンらしい表明手段のように感じますが、こちらの幻想に過ぎません。
マイコンにとって、数字の形や意味など知ったことではないのです(*8)。
さて、32個のLEDを使って、誰かが用意してくれた数字の表示関数を使わずに、自分で任意のパターンやアニメーションを表示するには、それなりのデータ量をプログラムに記さなければなりません。
棒を3本光らせるのに、
int a = 4;
int b = 6;
int c = 1;
setLed(0, 0, a, HIGH);
setLed(0, 0, b, HIGH);
setLed(0, 0, c, HIGH);
よりも、
int a1 = 4;
int a2 = 6;
int a3 = 1;
setLed(0, 0, a1, HIGH);
setLed(0, 0, a2, HIGH);
setLed(0, 0, a3, HIGH);
の方が、変数の命名に悩まずに済みそうですが、配列とfor文による繰り返しを使って、
int a[] = {4, 6, 1}; // a[0]=4, a[1]=6, a[2]=1 と代入される
for (int i=0; i<3; i++) {
setLed(0, 0, a[i], HIGH); // a[0], a[1], a[2] に順次アクセス
}
と書く方がスマートで、データが増えても破綻(はたん)し難そうです。
for文による配列変数への順次アクセスは、プログラミングの強力な武器です。
しっかりマスターしましょう。
*1 4Kハイビジョンとか、VRとか、ニセモノ体験の質を上げ続けたくなる人間が満足する日とは…脳がそちらをホンモノと見なして生きる時でしょうか…。
*2 先月も注釈したように、マイコンには真のアナログ信号は扱えないので、
PWM制御(1年目1月)により擬似的にアナログ出力電圧(256階調など)を生成したり、
真のアナログ入力電圧をデジタル値(1024階調など)に変換したりするコンバータ回路が搭載されています。
*3 というより、電流をどれだけ邪魔するかの指標が抵抗なので、電流を流してみることで抵抗値が分かります。
*4 速さ・時間・距離の関係と同様、1つの式から他の2つの式を導出できます。
語呂合わせ「はじき」と同じく、“覚える”ものではなく、感覚で捉えるべきものですが、一先ず V=RI と発音して記憶します。
*5 暗い部屋で眩(まぶ)しくないよう、LED時計やテレビ画面の明るさを落とすために、CdSセンサーを用いたディマー(減光)回路が搭載されています。
*6 明るさ[手の影] → 抵抗値[CdSセンサー] → 電圧値[抵抗分圧入力をanalogRead()] → 周波数[tone()でスピーカにPWM出力] のように物理量を変換したのです。
*7 通称「7セグ」と呼ぶ、7本の棒で数字を表現するデジタル表示器のこと。
今やローテクの象徴のような表示手段ですが、映画『バック・トゥ・ザ・フューチャー』世代のオジサンには、未だにタイムマシンのコックピットにずらりと並ぶ先進的でロマンに溢れたデバイスにしか見えません。
*8 幻滅しましたか? 今のコンピュータなんて、パソコンもスマホもそんな無意思の集大成です。君たちの世代がそれを変貌させていくのです。
2. 5月の課題
<スタートアップ(全コース)>
特にありません
<プライマリーコース>
- オリジナル図形プリント
http://robocobo.sakura.ne.jp/blog/HW/RobotP2005-Q.pdf
<ベーシックコース>
- 上記授業内容を精読する(概ね3年生以上/低学年は補助の下で)
- オリジナル課題プリント(3面図+設問)
http://robocobo.sakura.ne.jp/blog/HW/RobotB2005-Q.pdf
<ミドルコース>
- 上記授業内容を精読する
- オリジナル課題プリント(3面図+設問)
http://robocobo.sakura.ne.jp/blog/HW/RobotM2005-Q.pdf
<アドバンスコース>
- 上記授業内容を精読する
- オリジナル課題プリント(見取図+設問)
http://robocobo.sakura.ne.jp/blog/HW/RobotA2004-Q.pdf (4月配信済み)
<プロ2年目コース>
- 上記授業内容を精読する(該当テキストページを見ながら)
- CdS光センサーを使った図2-6(1日目p.17)の回路で、ボリュームインジケータ[LED5_Vol1_bar_answer]をベースに、
様々な明るさの下で実験しながら、analogRead値 val による分岐条件を決め、
暗闇~室内照明~日光下で0~5個のLEDが点灯する照度計(明るさメーター)に仕上げる
- 7セグLEDを実装した形態(2日目)に、図2-6(1日目p.17)のCdS光センサー+10kΩの分圧回路を足し、
LED8セグメント以上で高分解能表示する照度計にグレードアップする
- 7セグ表示する2日目p.16のボリュームセンサ[_7segVol]をベースに、
A5/GNDピンに電池(≦5V)の+/-を繋いだときの電圧[mV]を表示する電圧計に変える。
【ヒント-照度計】
A0入力は下図の位置です。CdS抵抗は凡そ10kΩ(暗闇)~100Ω(日光)で変化します。
このとき、A0電位は、暗闇で 10k/(10k+10k) = 50%、日光で 100/(100+10k) = 1%
に分圧されます。それを analogRead(A0) で1023段階に読むのです。
<GND>---[CdS抵抗]---<A0>---[10kΩ抵抗]---<5V>
【ヒント-照度計7セグ版】
2日目p.10の"H"表示[_7segTest2]を参考に、7セグLEDを任意のパターンで表示するsetLed()関数を使います。
【ヒント-電圧計】
analogRead(A5) でA5入力電圧0~5Vを0~1023で表示するので、analogRead(A5) * 5000 / 1023 でmV表示に変換できます。
但し、計算途中でint型整数(~32767)がオーバーフローする為、* 5 で近似するか、分かる人はlong型整数で計算します。
電池は1~3本(4.5V)まで下図のように繋ぎます。5V以上を入力しないこと。
<GND>---[- 電池 +][- 電池 +][- 電池 +]---<A5>
3. 4月の解答
<プライマリーコース>
http://robocobo.sakura.ne.jp/blog/HW/RobotP2004-A.pdf
<ベーシックコース>
http://robocobo.sakura.ne.jp/blog/HW/RobotB2004-A.pdf
<ミドルコース>
http://robocobo.sakura.ne.jp/blog/HW/RobotM2004-A.pdf
<アドバンスコース>
翌テーマ1ヶ月目(来月)に配信します
4. 今後の授業スケジュール
◆北九州市営施設が6/18まで休館につき、八幡東・小倉北・小倉南1日目を
【真鶴会館】小倉北区真鶴1-5-15(施設駐車場あり)で開催します
◆8月第2回目は一週遅れます
――――――――――【佐藤教室長】――――――――――
[東福間]第1・3土原則<学習ルームでこぼこ>
- 13:30~ ベーシック/プライマリ
- 15:30~ ミドル
- 17:30~ アドバンス
⇒ 6/6, 20, 7/4, 18, 8/1, 22
[中間]第2・4土原則<なかまハーモニーホール>
- 13:30~ ベーシック/プライマリ
- 15:30~ ミドル
- 17:30~ アドバンス
⇒6/13 第1回 3F会議室4(和室)
6/27 第2回 3F会議室2
7/11, 25, 8/8, 29
[小倉北]第1・3日原則<ムーブ>
- 10:30~ ベーシック/プライマリ
- 13:00~ ミドル/ロボプロ2年目
- 15:00~ アドバンス
⇒6/ 7※第1回 北九州総合労働会館【真鶴会館】3F
6/21 第2回 ムーブ5F小セミ
7/5, 19, 8/2, 23
※ムーブ休館につき【真鶴会館】で開催します
――――――――――【中野教室長】――――――――――
[八幡東]第1・3土原則<レインボープラザ4F>
- 13:30~ ベーシック/プライマリ
- 15:30~ ミドル
- 17:30~ アドバンス
⇒6/ 6※第1回 北九州総合労働会館【真鶴会館】3F
6/20 第2回 レインボープラザ4F
7/4, 18, 8/1, 22※
※レインボープラザ休館につき【真鶴会館】で開催します
[小倉南]第2・4日原則<総合農事センター2F>
- 10:30~ ベーシック/プライマリ
- 13:00~ ミドル
- 15:00~ アドバンス
⇒6/ 7※第1回 北九州総合労働会館【真鶴会館】3F
6/28 第2回 総合農事センター2F
7/12, 26, 8/9, 30※
※農事センター休館につき【真鶴会館】で開催します(開催日6/14から変更)
5. お知らせ
1) 今夏の九州地区大会・全国大会残念ながら、下記の通り、大幅に縮小されることになりました。
・地区大会(テクニカルコンテスト・アイデア発表会)は中止
・全国大会(アイデアコンテスト)は9/6(日)オンライン開催(予定)
詳細は決まり次第、お知らせします。
2) 5教室合同ロボットレース大会7/23-24企画中
九州地区大会の中止を受けて、5教室合同のレース大会を企画します。
コンテストへの出品やレース出場は、創作力や理解力など、ロボットの総合力を一気に高める貴重なチャンスと考えており、特に卒業前のアドバンス生にとって、年1回の白熱するテクニカルコンテストの中止による経験ロスは甚大なものでしょう。
せっかくのオリジナル大会ですので、自作マシンレースの面白さ・挑戦価値をプライマリ~ミドル生にも体感して頂きたく、全コース設定したいと思います。
「マシン作りはカンタン、トップ狙いはムズイ」をコンセプトに、参加の敷居を低くしつつも、入賞は努力の証となるよう設定します。
プロ生の参画方法についても、同じく大幅な能力アップ機会になるよう個別に詰めて参ります。
また、車好きのお父様にもムキになってもらって^^、家庭でも研究・練習できるよう、特別な機材・コースを使用しません。
但し、レース全般の特性として、本番コースでの予行練習・試走はヒントになります。
プライマリ~ミドル生は、7月テキストのカリキュラムに優先して、レースマシン作りに注力しても構いません。
私設イベントにつき参加費を頂きますが、必ずおネダン以上の学習機会にしますので、どうぞ安心して「塾の夏期講習」を抜け出し^^、ご家族行事として参加下さい!
【日時】
‐7/23(木・祝) 予行練習会(終日・任意参加)
‐7/24(金・祝) 大会(AM~試走/PM~本番)
【会場】
‐中間市~八幡西区で調整中(コロナ行政により確定できず)
【競技】
‐プライマリ: 4m障害物コース走行(時間計測)
‐ベーシック: ↑+パイロット取込み
‐ミドル : ↑+後退してスタートラインに戻る
‐アドバンス: 6・7月『ロボット建機』で“川渡り”ミッション達成
‐プロ1・2: 障害物コース走 or 計測機器提供(無料・無償スタッフ)
【対象】
‐プライマリ: 4月時点プライマリ生、~小3ベーシック生
‐ベーシック: 4月時点ベーシック生、~小4ミドル生
‐ミドル : 4月時点ミドル生、~小5アドバンス生
‐アドバンス: 6・7月『ロボット建機』履修生(5月までに進級SU済)
‐プロ1・2: 6月在籍生
【費用】
‐6・7月授業料: 通常分(修了生の方は9,900円/月)
‐延長指導料 : 550円/回(可能な授業日を都度ご案内)
‐予行練習会 : 3,300~5,500円予定(会場による)
‐大会エントリ: 5,500~7,700円予定(会場による)
【表彰】
‐各コース1~3位表彰の他、景品授与
【仮申込】
~6/21(日)〆
‐練習会・大会の別にメール申込み下さい
‐練習会・大会の参加費を各1,000円引き
‐キャンセル費: 6/22(自動的に本申込)まで0円
【本申込】
6/22(月)~30(火) or 定員(未定)まで先着順
‐キャンセル費: ~6/30…練習会・大会とも30%、7/1~50%、7/15~80%
【大会中止時】
‐練習会・大会費用は全額お返ししますが、授業料・指導料は返金できません
‐情勢により開催できない場合は、各教室での成績を集計し、オンライン表彰式を予定します
上記は全て計画中のもので、変更になる場合があります。
詳細は追ってお知らせします。
3) 映像授業のYouTube配信の今後について
5月2回目分より、受講生の方へ限定公開しました。
6月以降も本部にて制作予定ですので、自習される方へ配信するよう計画中です。
4) 4月課題 高得点者 []内は教室と学年
◆プライマリ【6名平均 図形4.2】
5点…藤原[八幡東2], 向井[小倉北2], 諭[小倉北2]
◆ベーシック【4名平均 図面2.8+設問3.0=5.8】
10点…なし
9点…なし
8点…柴田[小倉北3]
7点…藤津[中間4], 武田[八幡東4]
6点…なし
◆ミドル【8名平均 図面2.5+設問3.3=5.8】
10点…なし
9点…なし
8点…中村[東福間5]
7点…牛嶋[中間5], 橋本[小倉南3]
6点…なし
東福間・中間・小倉北教室 佐藤 / 八幡東・小倉南教室 中野