2021年3月31日水曜日

2021年3月報

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


1. 3月授業内容


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


 割愛します。


1.1 <プライマリーコース『のびーるハンド』>


 割愛します。

1.2 <ベーシックコース『シャッフルくん』>


 昨年10月~3月まで追加された新作テーマの第六弾! サイコロトランプを扱(あつか)います。

 1日目のロボットがサイコロを投げる右うでを輪ゴムで吊(つ)っているのは、先月の『ジャンピングトビー』と同じ理由です。

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


輪ゴムの方が強い瞬発(しゅんぱつ)を出せるからで、そのお陰(かげ)で、ロッド3アナによるロックが外れると、うでを跳ね上げた勢(いきお)いでサイコロが宙(ちゅう)に舞(ま)います。
モーターだけでは、うでを上げるスピードがおそくて、サイコロがずっと手のひらにあるでしょう。

 さて、このロボットでサイコロを投げても、足元にポロッと落とすだけのことがあります。
やる気がなさそうで、ゲームの雰囲気(ふんいき)が台なしです。
どうしたら、高く投げたり、遠くへ飛ばしたりできるでしょうか。

●輪ゴムの力
 うでを跳ね上げるのは輪ゴムの力ですから、かけ方を強くすればいいですね。

 ペグSとペグLの間で往復(おうふく)させているのを1往復半にしたり、2本かけたりする方法があります。


●手首のスナップ力
 手首をスナップする力(*2)が弱すぎると、うでをすばやく上げられるようにしても、それに手のひらがついて行けず、サイコロが転がり落ちてしまいます。

 かと言って、手首に“しなやかさ”がない(手のひらが曲がらない)と、サイコロを後ろに投げてしまいます。

 手のひらは、親指(Lロッド&クランク)で軽く押さえているだけですから、この力を強くするために、手首の関節(かんせつ)にグロメットを使ったり、輪ゴムで縛(しば)ったりする方法があります。


 こうして投げ上げられるようになったロボットでサイコロを振(ふ)り、スゴロクをして遊びました。


 2日目は、トランプをシャッフルするロボットに作り替(か)えます。

 このメカニズムの要(かなめ)は、「2種類のまさつ力」です。
タイヤのゴムは、ロボットキットの中で最も強いまさつ力を生みやすい部品であり、トランプを押し出すローラーとして利用しています(*3)。

一方、左右のトランプの山から1枚ずつ交互(こうご)に押し出すには、「押し出す時」と「押し出さない時」に分け、そのタイミングを左右で反対にする必要があります。

モーター2個の回り方をプログラミングできるアドバンスコースなら簡単ですが、
モーター1個で、スイッチ操作(プログラミング的動作)もなく実現するために、“弱いまさつ力”を作り込(こ)みました。

そうです、タイヤLに貼(は)ったセロハンテープです。
セロハンテープとトランプの間に働くまさつ力は弱いため、タイヤが回転したままでもトランプを押し出す力を一時的になくすことができます。


 2つのタイヤLは左右に広く離(はな)れていますので、「シャフトドライブ」を採用したのもナイスです。
こうすると、たくさんのギアを噛(か)み合わせることなく、遠くへ動力を伝達できます。

ここでは、タイヤLが左右で逆(ぎゃく)向きに回転するよう設計しています。

また、2個のモーターで別々に回すのに比べ、ギヤやシャフト(機械リンク)で伝達していることで、左右のタイヤの回転位置がずれる心配がありません(*4)。

だから、反対の位置に貼ったセロハンテープはずっと反対のまま回転してくれるのです。

 実際にシャッフル動作を成功させるには、まさつ力の強弱をはっきりさせる必要があります。
つまり、まさつ力がいるタイヤのゴム面は、ごみをふき取ったり洗ったりし、
まさつ力をなくしたいセロハンテープ面は、貼り方を広くしたり滑(なめ)らかにしたりと、調整します。

どちらのタイヤLもモーターと同じスピードで高速回転しますから、あっという間にシャッフルが完了してカッコイイですね。


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

*2 ここでは、手のひらが下向きに折れ曲がりすぎないよう支える力のこと。

*3 コピー機やプリンターが紙を1枚ずつ送るのにもゴム製のローラーを使っています。

*4 同期動作と言います。


1.3 <ミドルコース『メカポンロボ』>


 1月~6月まで追加された新作テーマの第三弾!
対戦型ゲームというジャンルでの初登場と、攻撃&防御のスタイルは、第8回アイデアコンテスト全国大会(2018年)に出品した廣渡大和君(当時小2・東福間教室)の『決闘!チャンバラマシーン』に大きなヒントを得ているでしょう。

残念ながらテキストに名前が載らなかったのは、ゲーム性の向上(首が飛ぶなど)と駆動トレーンの大幅な作り替え(2体を独立操作)によるでしょうが、その分、楽しめる対戦型ゲーム機として仕上がっています。

 1日目の手動型ロボットでは、輪ゴムで吊(つ)られた背中のTロッドを押し下げることで、攻撃と防御の両腕を振り下ろしますが、ここに工夫があります。

背中のTロッドはギアM(うす)を中心に、腕はピニオンギア(うす)を中心に回転し、これらのギアは噛(か)み合っています。
歯数24のギアMから歯数8のピニオンギアを回すと、回転が3倍速くなります。
つまり、背中のTロッドを動かした角度の3倍も大きく腕の向きが変わるのです。

その分、Tロッドの動きは重く、腕を振る力は弱くなりますが、君たちの手はモーターより強い力を出せますし、Tロッドの可動範囲(ストローク)にも制約がありますから、この方がすばやく攻撃できて良い感じですね。

防御の隙(すき)を狙ってうまくヒットすると首が飛ぶゲームバランスの設計にも優れ、負けると悔(くや)しくて、ついムキになって熱中してしまう面白さがあります。


 2日目に片側をマイコン反応型に作り替え、動力にモーターを使いました。

モーターは手よりも弱く、そして速く、無制限に回りますから、手動型のように増速せず、ギアM同士を噛み合わせて、等速で腕を回しています
これで手動型に対抗できる腕力と俊敏(しゅんびん)性を備えました。


 さて、バトルプログラミングしたコンピュータとの決闘です。
人間が攻撃しようものなら、必ずその音に反応して反撃してきます。
自分の首が取れようが、手がもげようが、お構いなしに腕を振りかざし、襲ってきます。

そう、その様は、復讐の他に観念を持たない落ち武者の亡霊のように、不気味で、イイ・・・


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


 前半(1・2日目)の複雑でメカメカしい作りから、シンプルなロボットへと作り変えました。
前半のロボットでページをめくるには、機械的な微調整が不可欠でした。
後半のロボットでは、可動部がモーターに直結されているため、機械的な調節の余地は少なくなりました。

 ページをめくろうとするとき、適度な力でゴムタイヤを紙に押し付ける必要がありました。
後半のロボットでは、タイヤを取り付けた腕を振り下ろした後もモーターを駆動させ続け、この力を生み出しています。
しかし、ずっとタイヤを紙に押し付けたままページをめくってしまうと、紙が折れ曲がってしまい、上手くいきません。
そこで、ロボット本体が左に移動したある時点で、腕モーターの駆動を止め(もしくは弱く持ち上げ)、ページの折れ曲がりを防いでいます。


 後半のロボットの良さは、微調節を機械的に行うのではなく、ソフトウェア的に行える点にあります。
紙を押さえ付ける圧力を調整したければ、モーターの出力値を変更すれば済みます。
圧力を解放する/持ち上げるタイミング等も、プログラムから制御できますね。


 4日目の教室では、「ページめくりを極めるも良し。ロボットを使った遊びを考えるも良し。」として、
一部ではプログラムを改造して、「叩いて、かぶって(の代わりに逃げて)」ゲーム機にして対戦しました。  

この遊びに対応するのに、ロボットの機械的な改造は不要です。
右タッチスイッチを押すと、腕を振り下ろし、相手を叩きます。
左タッチスイッチを押すと、相手の攻撃をかわすためにロボットを左に移動させればよいわけです。

機械構造的には同じでも、プログラムで機能がガラッと変わるのは面白いですね。

 プログラム次第で機能を変更できるのは、コンピュータの最大のメリットです。
小型のコンピュータ(マイコン)が開発される前は、製品ごとに専用設計のICチップを開発していました。
例えば、電卓には電卓専用設計のチップを、時計には時計用、オーディオにはオーディオ用といった具合にです。
専用チップを作るためには、回路図や露光マスクから作り変える必要があるので、時間もお金も多く必要です。
また、一旦チップを作ってしまうと後から機能の追加や変更はできません。その時は、また一から作り直しです。

ところが、マイコンの登場により、この状況は一変しました。
マイコンであれば、多くの機能がプログラムだけで変更できます。
電卓にも洗濯機にも、同じマイコンチップを搭載することが可能になるのです。  
マイコンを使うことで、電気製品の開発コストは下がり、開発期間も短くなりました。

皆さんがよく遊ぶゲーム機も、ゲームごとに本体を買い直す必要はありませんよね。
無料ダウンロードだけでも、いっぱい遊べちゃうわけです。
そこでも、コンピュータとプログラムの恩恵を受けているわけですね。 
昔は1つのゲームしかプレイできないゲーム機も珍しくはなかったんですよ!
(それはそれで新しいハードを手に入れるのがとびきり楽しみな時代でしたが…)


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


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

 自律型ロボットといえば、障害物や段差を感知して、衝突や落下を回避しながら進むものを先ず想起するのではないでしょうか。
お掃除ロボット『ル○バ』などもそうですね。

感知に最も良く使われるのが、この超音波センサーです(*1)。
イルカやコウモリ等の生物から魚群探知機まで、反射音(方向・時間・強弱・周波数)の状態や変化を探ることで、視覚の代わりに(時にはそれ以上に)なるのです。

反響定位(エコーロケーション)と呼ばれますが、本ロボットや一般の障害物センサーでは、そこまでの解析能力はありません。
特定方向の(一定以上の大きさの障害物から)反射音が返ってくる時間(=距離)だけを計測しています(*2)。

 1日目では、2つのセンサーを別々にモニターすることでの可能性を垣間(かいま)見ました。
センサー1つでも、手をかざせば近寄り、近づけすぎると後ずさるなどプログラムできますが、両目のように左右に並べれば、左右の(状況の違いが分かる)感覚を生み出せます。

左右での感知距離(dist1, dist2)の差に応じて旋回させれば、かざした手の方向にフラフラと追跡するまでになります[step3]。
しかし、2つの距離情報を扱うのは、プログラムの条件文(判定式や分岐)が複雑になります。

センサー情報を2値(デジタル判定)化するだけでも2×2=4通りに場合分けされることのみならず、スマートな動きを実現するには、センサー2個の変化・判断の順序やタイミングなど、気にすることが増えるからです。

 2日目では、センサー1つを様々な位置に取り付け、プログラムを適応させることで、
・ 障害物を避けるロボット[avoider]
・ 机から落ちないロボット[nofall]
・ 机の端を沿うロボット [tablerunner]
壁ぎわを沿うロボット [walltracer]
を実現できることが紹介されています。

あの『ル○バ』に勝るとも劣らず、生き物らしく見えるでしょう。

 センサーで拾うたった1つの値と、それを条件に動作を分ける論理(プログラム)とで、これだけの(これ以上の)ことができます。
どれも、プログラミングのレベルに大差ありません。

勿論、これらを2つのセンサーで制御すれば、プログラムが高度になる分、よりスマートな動作で報いてくれます。

ちょっと難しく見える“おまじない”や数値処理上の工夫(*3)がありますが、核心の論理“if(条件) {動作1;} else {動作2;}”は、非常に単純明快で必然的なものです。

もっと場合分け(条件分岐)したければ、“if(条件1) {動作1;} else if(条件2) {動作2;} else if(条件3) {動作3;} else {動作4;}”等ですね。

こうして自分のロボットにを吹き込んでみれば、君はもうフランケンシュタイン(怪物の創生者)であり、鉄腕アトムのお茶の水博士です。


*1 GHz級クロックの電子回路など、技術の発達した現在では、光(電磁波)を用いたレーザー距離計やGPSセンサーも安価に手に入るようになりましたが、生物の感覚器官ではとても追いつけません。視覚が光を利用するのとは別の話ですよ。

*2 音の伝わる速さとして、空気中で340m/秒、水中で1500m/秒を覚えておきましょう。
 すなわち、地上と水中で計算式が変わりますが、時間から距離が求まります。

*3 dist/=10; または dist=dist/10; で dist値 1~99[cm] を 0~9(整数) に粗くし、大雑把に扱えるようにしています。
 例えば、if(dist==1) と書くだけで 10~19[cm] の範囲を指定することができるようになります。


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


 今タームの最終月にして、倒立振子ロボットは終(つい)に日の目を見るのか?

 1日目は、この倒立振子ロボットを製作しました。
前後方向にだけ倒れる、左右2輪のリヤカー(大八車)タイプです。

 ここで、振り子の特性について、整理します。
振り子と言えば、今は飾りにしか使われなくなった振り子時計を想起しますね。
振り子は、支点から質点(≒おもりの重心)までの棒の長さによって揺れる周期が決まり、意外に、おもりの重さとは無関係です。
この、一定のリズムで振れる性質を“等時性”と呼び、昔の時計の進み具合に利用していました(*1)。

これを逆さに立てた場合(倒立)も同様に、棒が長いほど、倒れるのに時間が掛かるようになります。
ペンは一瞬で倒れますが、箒(ほうき)は1~2秒、テレビで見る倒木や煙突の倒壊には数秒以上を要しますね。
だから、手のひらに箒を立てることはできても、鉛筆が無理なのは、立て直す時間が足りないからです(人間には…)。

このロボットの高さ20cm程度でも、人間には難しい仕業でしょうから、立てたら凄いですね。
クララが立った時に匹敵する感動が味わえそうです。

 2日目です。

 不安定な足(タイヤ)で立てる原理は、箒と同じです。傾いた方向(前後)に動けば良いのです。
そのためには、今の状態[現在値を知り、あるべき状態[目標値との誤差を計算し、その誤差に適切な比例係数[ゲインを掛けて、制御量[出力値を発揮することを高速に繰り返すのです。

 ゲイン × 誤差(現在値[入力] - 目標値) = 制御量[出力]

前月で学んだフィードバック制御ですね。常に北を向くように旋回するオムニホイールロボットがそうでした。
北を0°として、方角(角度)のズレ(±)に比例した強さでモーターを正逆回転させれば、強弱の効いた滑らかなフィードバック制御が実現しました。

これを、P(Proportional:比例)制御と呼びます。これが基本です。

しかし、わずかな方角のズレでも素早く戻すようモーターを強力に駆動すると、ブルブルと振動してしまい、いつまでも目標値に収束(しゅうそく)しなくなりました。
1年目で嫌と言うほど経験してきたように、摩擦力が大きなタイヤの回転は、弱いパワーでは停止し易いですので、比例ゲイン Kp を抑えるだけで収束しましたが、振り子の運動は摩擦力が低いのが特徴です。

加えて、垂直付近では、重力の水平成分がゼロになり、速度(勢い)を抑える外力が消えるため、慣性の法則により、勢い余って反対側に倒れ易くなります。
つまり、P制御だけでは、いつまでもグラグラすることになります(*2)。

 そこで、D(Differential:微分)制御を加えます。

これで、速度を抑える作用が働きます(*3)。
現在の(角)速度を割り出し、目標(角)速度ゼロとの誤差に微分ゲイン Kd を掛けて、制御量に加えます。
D制御は、現在値の変化に機敏に応答する特性があるため、意地悪に手で突ついたり、段差等で不意な外力が加わったりして倒れそうな場合でも、素早く立て直す作用に貢献します。

 3つ目に、I(Integral:積分)制御も加えます。

テキストで「静止に近い状態で作用する微調整」とはぐらかしていますが、高校数学の積分の概念が難しい故です。
簡単に言えば、微妙なズレを続いている時間分積算し、これに積分ゲイン Ki を掛けて、それを正すように作用させます。
短時間的に算出するP制御D制御による制御量が、目標値近傍においてゼロになり、長時間的なズレの補正に作用し辛いからです。

これら3つの要素によるフィードバック方式を『PID制御』と呼びます。

 最後に、「姿勢ゼロ点設定の調整」なんかも持ち出されて、混乱に拍車を掛けます。

これは、ロボットの重心の違いや、姿勢センサーの固定具合によってP制御やI制御の入力となる倒立角度の検出値に生じる誤差など、個体差を補正するものです。
これがなければ、倒れないには倒れないが、下手な一輪車がバランスを保とうとして、ひたすら前に進むような状態になったりします。

 いやー、絶妙な倒立振子ならではの制御ですね。
これでも、まだ、電源電圧によって各種ゲインを調整しなければ、プルプル震えながら立つのがやっとです。
「倒立ロボが、倒立ロボが、立ったー!」と叫びたければ好適な様子ですが。

 うまく立てずに暴走するのは、モーター駆動の電磁ノイズが姿勢検出値を乱すのが一因のようです。
モーター端子にコンデンサがしっかり半田付けされていることを確認します。

「それで、結局、どのプログラムを走らせれば倒立するの?」
というのが多勢の興味でしたが、曲芸はそう簡単には実現できないのですね。
エンジニアリングの一端を垣間見た気がします。


*1 ロボット教室ミドルコース『チクタクロック』で学習しました。
 電池で動くインテリア時計の振り子は、ただのフェイクです。

*2 プログラム中のパラメータを色々いじってみると面白いと思いますよ。

*3 高校数学/物理ですが、位置(角度)を時間で微分したものが速度(角速度)になります。


2. 3月の課題


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

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

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

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

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

 <プロ1年目コース>
  - 上記授業内容を精読する(該当テキストページを見ながら)
  - 単一距離センサーロボット[avoider/nofall/tablerunner/walltracer]のいずれかを改良し、ダブル距離センサーロボットとして、より洗練された動きを設計・実装する

  例えば、
  ・壁と壁の間を往復するプロ版“う王さ王”[avoider改]
  ・左/後退/右から安全な方向を選ぶ    [nofall改]
  ・左/直進/右を選びつつ崖っぷちを沿う  [tablerunner改]
  ・左/直進/右を選びつつ壁伝いに迷路を進む[walltracer改]

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


3. 2月の解答


 <プライマリーコース>
  http://robocobo.sakura.ne.jp/blog/HW/RobotP2102-A.pdf
 <ベーシックコース>
  http://robocobo.sakura.ne.jp/blog/HW/RobotB2102-A.pdf
 <ミドルコース>
  http://robocobo.sakura.ne.jp/blog/HW/RobotM2102-A.pdf
 <アドバンスコース>
  翌テーマ1ヶ月目(来月)に配信します


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


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

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

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

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


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

 ⇒4/10 第1回 3F会議室2
  4/24 第2回 3F会議室3
  5/15, 29,  6/12, 26


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

 ⇒4/ 4 第1回 5F小セミ
  4/18 第2回 4F茶室・工芸室
  5/9, 23,  6/6, 20


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

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

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


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

 ⇒ 4/11, 25,  5/16, 30,  6/13, 27


5. お知らせ

1) オリジナル電子工作 明るさセンサー式LED常夜灯はんだ付け講座 4/29(木・祝)

 自動車、ゲーム、冷蔵庫・・・私たちの周りにある様々なものが電子制御で動いています。
そのために、たくさんの電子部品が「はんだ付け」という方法で基板上に接着されています。
 今回の講座は、電子工作の基礎となるはんだ付けの練習から、使えて楽しい電子機器(LED常夜灯)の製作まで行います。
 準備するものはありません。作ったガジェットを持ち帰ります。

 弊教室では、ロボット教室の他に、オリジナルで提供する電子工作やプログラミング講座の中で、はんだ付け作業を多く取り入れています。
 モノ作りが好きな皆さんに、電子工学の道に目覚める運命(!?)の生徒さんに、ぜひオススメです!

【チラシ(配布しません)】
 http://robocobo.sakura.ne.jp/blog/lab/SensorLED-2104.pdf

【講座名】
 オリジナル電子工作『明るさセンサー式LED常夜灯はんだ付け講座』
【内容】
 はんだこてを使って、電子部品やICのはんだ付け作業を練習した後、
 実用的なLED常夜灯を製作して持ち帰ります。
【講師】中野・佐藤
【会場】北九州パレス(勤労青少年文化センター) 2F 写真室
【時間】4/29(木・祝) 10:00~12:00 (2時間)
【対象】ロボット教室生・お友達 新小3~ 12組(ご家族2名まで同伴可)
【参加料】
 3,850円(受講料2,200+材料費1,100円+はんだセットレンタル代550円)
【申込方法】メールにてお申込み下さい。4/15〆切・先着順です。
【申込条件】
 原則として、5月お引落し額(6月分)に加算して徴収させて頂きます。
 キャンセル・欠席により空席が発生した場合は返金できません。
 (キットと製作テキストのみお渡しします)


2) ロボット教室専用 電池チェッカーはんだ付け講座 4/29(木・祝)

 ロボットの動きがおそい! 動かない! 電池がなくなったのかな? 電池じゃないのかな?
電池パワーをはかりたいけど、市販の電池チェッカーは一本一本取り外して面倒...

 Battery Checker R6V2 なら、スライドスイッチにさすだけでカンタン残量チェック!

 とっても実用的な電池チェッカーをはんだ付けして組み立てる講座です。

(はんだ付けが初めての方はAM講座『明るさセンサー式LED常夜灯はんだ付け』を利用下さい)

【チラシ(配布しません)】
 http://robocobo.sakura.ne.jp/blog/lab/BatChecker-2104.pdf

【講座名】
 オリジナル電子工作『ロボット教室専用 電池チェッカーはんだ付け講座』第2回
【内容】
 はんだこてを使って、ロボット教室用の電池チェッカーとして使える実用品を製作します。
【講師】中野・佐藤
【会場】北九州パレス(勤労青少年文化センター) 2F 写真室
【時間】4/29(木・祝) 13:30~15:00 (90分)
【対象】ロボット教室生(はんだ付け経験者) 新小3~ 12組(ご家族2名まで同伴可)

 ※AM講座『明るさセンサー式LED常夜灯はんだ付け』受講後も可

【参加料】
 5,500円(受講料3,300+材料費1,650円+はんだセットレンタル代550円)
【申込方法】メールにてお申込み下さい。4/15〆切・先着順です。
【申込条件】
 原則として、5月お引落し額(6月分)に加算して徴収させて頂きます。
 キャンセル・欠席により空席が発生した場合は返金できません。
 (キットと製作テキストのみお渡しします)


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

 ◆プライマリ【11名平均 図形3.7】
   5点…土屋[小倉北 年長], 古場[小倉南1], 矢野[小倉南1]

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

 ◆ミドル【20名平均 図面3.2+設問2.1=5.3】
  10点…林田[小倉南3]
   9点…中村[小倉北6]
   8点…小牧[小倉南4]
   7点…中村[東福間5], 千葉[中間5], 藤津[中間4]


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

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]


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