2021年2月28日日曜日

2021年2月報

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


1. 2月授業内容


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


 割愛します。


1.1 <プライマリーコース『ロボドーザー』>


 割愛します。

1.2 <ベーシックコース『ジャンピングトビー』>


 昨年10月~3月まで追加された新作テーマの第五弾! なわとびロボットです。

 ぴょんぴょん跳(は)ねるのが11月の『ホッピンバード』と似(に)てますか?
あちらと違(ちが)って、ゆっくりジャンプできますが、どうしてでしょうか?

それは、シーソーになっているからですね。
公園のシーソーで自分の方が上がっているとき、相手が急にどくと、自分がストンと落ちてしまいますね。

2人で遊べば、自分と相手で重力を打ち消し合い、月面のようにふわふわとジャンプできるようになります。

 『ジャンピングトビー』では、トビー(人形)の反対側に重たい電池ボックスをくくり付けて、トビーの重力を軽くしています。
それでも、トビーの方が重たいので、ジャンプしてもゆっくり下りてきます。

電池ボックス側にタイヤLを2個もくくり付けて重くすると、トビーが上がったまま下りられなくなりますね。

 さて、トビーがジャンプするメカニズムにも工夫(くふう)があります。

『ホッピンバード』では、モーターで直接バードを持ち上げました。
トビーの足もモーターで動かしているようですが、輪ゴムも使っています。
どういう関係でしょうか?

 実は、トビーをジャンプさせているのは輪ゴム(だけ)の力です。
モーターは、足を引っこめながら輪ゴムをゆっくり引き伸(の)ばして、元に戻(もど)ろうとする力を貯(た)めさせています(*1)。
復元(ふくげん)とか、弾性(だんせい)エネルギーとも言います。

輪ゴムの方が強い瞬発(しゅんぱつ)を出せるからで、そのお陰(かげ)で、シャフトペグによるロックが外れると、地面を蹴(け)った勢(いきお)いで宙に上がることができます。
モーターだけでは、力不足か、スピードがおそくて、ジャンプというより屈伸(くっしん)運動になってしまうでしょう。

 2日目でなわを取り付けて回せば、余裕(よゆう)でなわとびできました。
電池ボックス側をさらに重くすれば、さらにジャンプがゆっくりになり、2重とびもできました。

2重とびが苦手(にがて)な人は、ヒントになるでしょうか??


*1 モーターで力をゆっくり貯めるのは、輪ゴムを強い力で引っぱれるよう、ギアを使って回転をおそくし、力を大きくしているからです。


1.3 <ミドルコース『バシャリン』>


 1月~6月まで追加された新作テーマの第二弾!
第8回アイデアコンテスト全国大会(2018年)最優秀賞作品(当時小3)がベースの、馬車ロボットです。

当時、中国広東省の少女が会場で披露(ひろう)するのを見たとき、「これは優勝かも」と直感させるのに十分な動きでした。
“馬車”というテーマが特段に優れたアイデアとは思いませんでしたが、“動き”の作り込みが秀逸(しゅういつ)なのです。

機械的に、特に生体(例えば馬)を模(も)したロボットとしては、それらしい見た目動き方に対する期待が高い分、この両立がとても難しいのです。
ですから、ミドルコース生なら、「作るのが簡単」というだけでこのロボットを評価せず、随所(ずいしょ)の工夫を参考にして欲しいと思います。

 加えて、馬車ロボットとして、メカニズム面の特徴や利点は何でしょうか。

● 荷車を引いている
● 荷車にモーター・電池ボックスを載(の)せている
● 荷車からのシャフトドライブにより、馬の脚を駆動している
など、“荷車”が目を引く特徴となっています。

これを、「馬ロボットの胴体に入らないから/馬のデザイン優先のため、荷車を引いて馬車にした」と見ると、秀(ひい)でたポイントを見誤ります。

 荷車は、重量物を車輪で支え、容積も大きく自由に取ることができるため、人や荷物の運搬能力が高くなります。
例えば、馬の背中に載せられる重さ・大きさの何倍もの荷物を軽々と引くことができます。

そして、そのことにより、馬の荷重が軽くなり、足取りも軽く、省エネルギーで、疲れにくく(壊れにくく)もなります。
平らな路面では、乗り心地防振性(ぼうしんせい=揺れから守る能力)も向上しますね(*1)。

全体として重量が大きく増えるのに、多大な恩恵(おんけい)があるのですね。
車輪が大発明と言われる所以(ゆえん)です。

 こうして見ると、馬車は、生体と機械の優れた融合体なのですね。
上下左右に揺れやすい馬ロボットとしては、どっしり重い荷車で後ろから支えるため、倒れにくく安定する効果もあります(*2)。

 脚を回すギアM(歯数24)は、モーター直結のドライブシャフトをマイタギア同士で転向し、ピニオンギア(歯数8)を経由して回していますから、1/3に減速(3倍遅く)しているだけです。

動きが遅いロボットでは、よく1/9に減速(力を9倍に)していますが、軽量な馬の脚を回すには、これで十分なようです。

 こうして、パカパカ軽やかに小走りする馬ができあがりました。
背が高く、一見重そうに見える割には速い」という意外性も、快走感を出すのに一役買っています。

 モーターのパワーにもまだ余力があり、長い首もテンポよく振ることができます。

ロッド3アナの中心軸を回すことで、1回転につき2回、首のビーム14ポチを押しのけるカム機構を利用しています。
ロッド3アナはギアMと同じ回転数ですので、脚が1回転する間に首を2回振る関係です。

 観光地に行って実物に乗りたくなる情景を醸(かも)し出してくれました。


*1 自動車のように、サスペンションの採用でさらに性能を上げやすいです。

*2 加速後は慣性重量により後ろから押されるため、一定のスピードを保ちやすく、馬ロボット単体より速くなる効果もありそうなほどスムーズに走ります。


1.4 <アドバンスコース『メクリン(1)』>



 読書支援(ページめくり)ロボットは、思いの外、様々な形態で実用化・製品化されています。

ここは、文章よりも、興味深いYouTube動画で学びましょう。


■自動ページめくり機「りーだぶる3」 ダブル技研株式会社
【紹介動画】https://youtu.be/gA6nZJLYaCM
【製品説明】http://www.j-d.co.jp/welfare/readable.html
【機構的特徴】
 めくりアームの先端にページ押さえとローラが取り付けてある。
 ページを押さえつつめくりローラを回転させることで、1枚のみめくれるよう工夫されている。

■電子書籍化支援システム「ブックターナー BT-100」 CASIO計算機
【紹介動画】https://youtu.be/ee-H68B6Vt4
【製品説明】https://web.casio.jp/bookturner/
【機構的特徴】
 アームの先端に取り付けた粘着ローラで紙を吸着する。
 吸着したあと、紙を押さえつつ端からめくることで、下の紙が一緒にめくれないよう工夫されている。

■高速・高精細書籍電子化システム「BFS-Auto」 東京大学 石川妹尾研究室
【紹介動画】https://youtu.be/03ccxwNssmo
【製品説明】http://www.k2.t.u-tokyo.ac.jp/vision/BFS-Auto/index-j.html
【機構的特徴】
 紙をパラパラめくる方式。
 ページを固定しているストッパーを1枚分のみずらしてめくる。
 ストッパーの動きを高精度で制御している。

■自動ページめくり器「ブックタイム」 西澤電機計器製作所
【紹介動画】https://youtu.be/Cj-fGT_lfFk
【製品説明】http://www.nisic.co.jp/products/assistive/booktime-operation.html
【機構的特徴】
 1・2日目(今月)の『メクリン』と同じ仕組み。
 ページの表面をラバーでさらい、隙間にロッドを差し込み、ページを送る。


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


 センサー類を駆使する、冬タームの2ヶ月目です。

 1日目のテーマは、「ベースロボットの組み立て」です。
何のことはない、左右両輪(2モーター)を独立駆動して、前進・後退・左右旋回を自在にこなす土台のロボットを製作します(*1)。

戦車型ラジコンプログラム[Tank]を転送して操縦したり、時間制御プログラムで決まったコース(円・四角・8の字など)を自動的に走らせることはできますが、まだセンサー類が無いので、外界からの入力情報を基に考える”ことはできません

 2日目のテーマが、「カラーセンサーロボット」です。

 その1つ目は、「ライントレーサー」です。
カラーセンサーを下向きに取り付け、地面の明暗(白黒)情報だけを処理し、黒いライン(の縁)をたどるロボット[Tracer]に仕立てます。
「白なら右へ、黒なら左へ」旋回するように片輪を交互に駆動する制御方式は、アドバンスコースのテクニカルコンテストと同じですね。

マイコンが認識する明度(明るさの数値)は、環境光反射率はもちろん、センサーの個体差電源電圧(*2)にも左右されるため、各々のロボットで閾(しきい)値 colorIsBlack(1000) を変更する必要がありました(*3)。

 2つ目は、「カラートレーサー」です。
カラーセンサーをヘッドライトのように前向きに取り付け、前方景色の色相(色味)情報だけ(*4)を処理し、特定の色に向かうロボット[ColorTracer]に仕立てます。

サンプルプログラム中、色相 h を使って“if(h>180 && h<270) {前進せよ;} else {停止せよ;}”となっています。
これは、数学的には 180°<h<270°のことで、色相環(テキスト第2回p.16, 第4回p.15)で確かめると“”ですね。
”なら“if(h>60 && h<150) …”くらいでしょうか。

”は難しいです。2つの変域 0°≦h<30°, 300°<h<360°がありますので、“もし(hが0以上 かつ hが30未満)または(hが300超 かつ hが360未満)ならば”のように論理的に記述しなければなりません。
if( (h>0 && h<30) || (h>300 && h<360) ) …”となります(*5)。

走り方(タイミング、スピード、軌跡など)に変化をもたせて、好きな色を見ると近づいて行く愛らしいロボット(闘牛?)に仕上げてみましょう。
鳴く”と面白そうですね。

 最終月は、「ウルトラソニックロボット」で今タームを仕上げます。


*1 これだけで普通の自動車(1エンジン)を遥かに凌駕する自由度を獲得できるのですから、将来は電気自動車に替わっていくわけです。

*2 パソコンからのUSB給電の場合と、電池駆動とで数値が変わるという…盲点があります。

*3 よりスマートに、調整用プログラム[ColorSensor2]実行中、Arduino“シリアルモニタ”を起動し、USBケーブル経由で白地と黒ライン上の数値をモニタリングし、その中間値を閾値として設定することもできます。

*4 1ドットカメラなので、人間なら瞼(まぶた)を瞑(つむ)ったまま外光の色を感じるようなものです。

*5 論理積(AND)演算子 && は、論理和(OR)演算子 || より優先順位が高い(先に演算される)ので、“if(h>0&&h<30||h>300&&h<360)…”と続けて書いてもOKですし、h=0~359の値しか取らないので、実は“if(h<30 || h>300)…”だけでもOKです。


1.6 <プロ2年目コース『倒立振子ロボット(2)』>


 倒立振子? 2ヶ月目ですが、まだまだ、もったいぶりますよ。
自転車のムラタセイサク君(2005年)や、一輪車のムラタセイコちゃん(2008年)が誇らしげにCMに登場してからまだ十余年、ホットな技術なのです。順を追いましょう。

 1ヶ月目で、チップに集積された3種の姿勢センサーのうち、加速度センサー角速度センサーの機能を学びました。
今月の1日目は、残りの磁気センサーで遊びました。

 磁気センサーの面白いところは、ロボットに目や耳(カラーセンサーや超音波センサー)が無くても地磁気を検出して方角が分かることです。
地球上には重力もありますので、加速度センサーで“鉛直下向き”は分かりますが、水平方向は区別が付きません。
角速度センサーを使った積分プログラムにより、どれだけ回転したかが分かりましたが、累積誤差がつきもので次第にずれが拡大していくことと、そもそも初期状態(例えば北向き)は与えてやらねば方角が分からない欠点がありました。

その点、地磁気ならば、いつ、どこで、どんな姿勢で電源を入れても、立ちどころに北が分かります。
先の2センサー同様、3軸(XYZ)検知できますので、姿勢(傾き)までも分かるのです(*1)。
一見万能で、他のセンサーは不要のように聞こえますが、精度がイマイチ低いのです。
方位磁石でご存知の通り、磁場の揺らぎや場所により、微妙に異なる方角を指します(*2)。

コンパス程度の用途なら構いませんが、曲芸を披露するには不十分でしょう。
瞬間的な姿勢変化への追従は、加速度・角速度センサーの方が格段に優れていますので、こちらをメインに用いながら、地磁気センサーやGPSで長時間的な補正を掛けていくナビゲーションシステムのような利用法が適しています。

 さて、ここまでの出力手段は、LEDマトリクスや7セグへの“表示”だけでしたが、「感じて、考えて、動く」のがロボットです。運動能力を与えましょう。

少ないハードでも、高い自由度で動き回れるロボットの形態と言えば、3輪のオムニホイールロボットですね。
2日目にこれを組み立て、マイコンボード、I/Fシールドに姿勢検出シールドを搭載します。

動くと、やはり面白いことになります。
どういう向きに置き直してもクルッと回って北の方角を向きたがる奴[MagCtrlOmni/2]とか、磁石に付いて行こうとする奴[MagCtrlOmni3]とか、どうしても我々人間の目には生命感が映ります。

 ここで、「向きを検知して表示するのもモーターを回すのも同じようにできるけど、やっぱり動いた方が面白いよね!」と実感することだけが目的ではありません。
出力先がディスプレイなら、処理結果を送るだけで、ちゃんと表示されたかどうかなど調べる必要はありませんが、
物体の運動には様々な外乱要因が加わりますので、「あるべき状態(目標値)」と「今の状態(現在値)」にズレが生じることを前提にしなければ、高精度な制御はできません。

このズレを最小化するよう頑張り続ける方式を“フィードバック制御”と呼びます。
片や、決められた手順や時間・回数分だけ逐次実行して、結果を省みない無責任な処理方式を“シーケンス制御”と呼びます。
タッチセンサーやボタンの押下状態(1ビット=2値)を調べて条件分岐するくらいでは、とてもフィードバック制御と言えません。

身の回りの製品では、
シーケンス制御 … 目覚まし時計、炊飯器、洗濯機、リモコン(高機能品を除く)
フィードバック制御 … エアコン、給湯器、CD/DVDプレーヤ、車の自動ブレーキ(*3)

など、やはり賢そうな機械ほどフィードバック制御が多用されています。

 北を向くだけのプログラム[MagCtrlOmni*]では、北を0°として扱いますので、方角のズレ(±)の角度分だけモーターを正逆回転させれば、強弱の効いた滑らかなフィードバック制御が(たまたま)実現しましたが、
これを、わずかな方角のズレでも素早く戻すようモーターを強力に駆動すると、振り子のように振動してしまい、いつまでも目標値に収束(しゅうそく)しなくなります(*4)。

つまり、「理想と現実のズレを解消しようとがむしゃらに努力すれば必ず報われるほど、甘くはない」という真理を突き付けられる訳です。
悲しいですね。もう一段、スマートさが必要なんです。

制御工学(理論)において、目標値とのズレを「誤差」、出力値の大きさを決めるために誤差に掛ける係数を「フィードバックゲイン」(または単にゲイン利得)と呼びます。
ゲインを増やすほど素早くなりますが、必要以上に大きくして、ギクシャクした動きや振動にならないよう注意します。

 地磁気センサー(X,Y軸)に代わり、角速度センサー(Z軸)を使って、下記のプログラムが紹介されています。
・[AngCtrlOmni] … 元の向きに戻ろうとする
・[AngCtrlOmniTrun] … 360°回って、その向きを維持しようとする
・[AngCtrlOmniTrun10rpm] … 10rpm(毎分10回転)で回ろうとする

プログラム中、現在の角(速)度 ang目標値 Ref誤差 Errゲイン Kp が見つかります。

大事なのは、「確定的な結果の保証よりも、現在の状態を客観的に知り、目標に近づこうと働き続ける」点です。
心に響きましたか?(佐藤にも突き刺さりました…)

 次月こそ、いよいよ倒立振子ロボットの製作です。


*1 正確には、原理上、磁力線方向(南北に向かう水平な直線)の軸回りの傾きは感知できません。

*2 近くに磁石や、磁力を発生するスピーカーや電線があると、方位磁針が迷いますね。
 これを逆手にとってプログラム処理すれば、電子コンパスプログラム[MagCompassMatrix]が磁石の方を追いかけたり、磁石を近づける距離で音程が変わるテルミンのような楽器[MagneticTone]も簡単に実現できます。

*3 車を持ち出したら、エンジン燃焼、カーエアコン、定速走行、スリップ防止など、枚挙に暇(いとま)がありませんが。

*4 手のひらに箒(ほうき)を逆さに立てる時など、皆さんも無意識に同じことをやっていますよ。ずっと全速力で手を動かすマヌケはいませんよね。


2. 2月の課題


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

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

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

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

 <アドバンスコース>
  - 上記授業内容に紹介した動画(YouTube)を視聴する
  - オリジナル課題プリント(見取図+設問)
  http://robocobo.sakura.ne.jp/blog/HW/RobotA2102-Q.pdf (来月まで分)

 <プロ1年目コース>
  - 上記授業内容を精読する(該当テキストページを見ながら/記事より授業が遅れているので予習する)
  - カラートレーサープログラム[ColorTracer]を改変し、
   赤(好き!)へ突進、青(怖い!)からはゆっくり後ずさり、
   それ以外では停止するロボットに仕立てる

  《ハイレベル挑戦》さらに、緑(臭い!)で旋回する動作を足せるかな?

  【注意】色は色相 h で表し、赤:h<15 or h>315、青:195<h<255、緑:75<h<135 等で与えます。動作を足すほど不意に動き回って危険ですので、特に後退時はスピードを抑え、忙(せわ)しすぎる場合は反応する色相範囲を狭めて(停止範囲を広げて)下さい。

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


3. 1月の解答


 <プライマリーコース>
  http://robocobo.sakura.ne.jp/blog/HW/RobotP2101-A.pdf
 <ベーシックコース>
  http://robocobo.sakura.ne.jp/blog/HW/RobotB2101-A.pdf
 <ミドルコース>
  http://robocobo.sakura.ne.jp/blog/HW/RobotM2101-A.pdf
 <アドバンスコース>
  http://robocobo.sakura.ne.jp/blog/HW/RobotA2012-A.pdf


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


◆5月は一週ずつ遅れます。

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

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

 ⇒ 3/6, 20,  4/3, 17,  5/8, 22


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

 ⇒3/13 第1回 3F会議室2
  3/27 第2回 3F会議室2
  4/10, 24,  5/15, 29


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

 ⇒3/ 7 第1回 5F小セミ
  3/21 第2回 4F和室・工芸室
  4/4, 18,  5/9, 23


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

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

 ⇒ 3/6, 20,  4/3, 17,  5/8, 22


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

 ⇒ 3/14, 28,  4/11, 25,  5/16, 30


5. お知らせ

1) IchigoJam初・中級プログラミング ~振動センサーゲームはんだ付け工作編~ 終了
 2/23(火・祝)北九州パレスにて、13名の方に参加頂きました。

 AMは、ボタンや表示器をはんだ付けし、ゲーム機を工作しました。
 PMは、振動センサーを読み取るゲームをプログラミングしました。

 電池で動く携帯ゲームにして、揺れを検知されないように歩いたり持ち上げたり、ハラハラ対戦を楽しみました。

 逆に、早く100回振動させるタイムを競ったり、カウンターを伏せて100回目の振動でアウトになるジェンガ遊びをしたり、アイデア次第で色々なゲームにも使えそうでしたね。


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

 ◆プライマリ【10名平均 図形3.3】
   5点…有松[小倉南1], 栗本[小倉南1], 古場[小倉南1]
   4点…土屋[小倉北 年長], 眞所[小倉南1]

 ◆ベーシック【16名平均 図面2.3+設問2.4=4.7】
  10点…なし
   9点…柴田[小倉北3]
   8点…なし
   7点…諭[小倉北2]
   6点…山口[東福間4], 村上[小倉南4], 渡辺[小倉南3]

 ◆ミドル【18名平均 図面3.3+設問1.4=4.7】
  10点…なし
   9点…藤津[中間4]
   8点…中村[小倉北6], 林田[小倉南3]
   7点…なし
   6点…大野[小倉北5], 橋本[小倉南3]

 ◆アドバンス【12名平均 図面7.2+設問3.5=10.7】
  17点…桑村[中間6]
  15点…重藤[八幡東9]
  14点…森崎[小倉南5]
  13点…荒木[小倉北6]


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