2022年3月29日火曜日

2022年3月報

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


1. 3月授業内容


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


 割愛します。


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


 割愛します。

1.2 <ベーシックコース『ロボリン君』>


 第5回アイデアコンテスト全国大会(2015年)ミドルコース最優秀賞作品(当時小3)がベースの、ボウリングロボットです。

 最優秀賞作品とは言え、書くべきことは特にないです。(このロボットだけは…)

モーター軸が直接、腕(うで)に見立てたLロッドを回すだけですので、ギアトレーンも動力リンクも、何もなし。

 デザイン性は秀逸(しゅういつ)ですので、雰囲気(ふんいき)は満点です。
これはもう、ボウリング大会で盛(も)り上がるしかありません。
緊張感(きんちょうかん)を出すべく、先生の司会により全員一斉に投球します。
下記のレギュレーションにて点数を競いました。

1) ピンはピニオンギアうす + シャフト3ポチ
2) ピン数は5本(前2本+後ろ3本のレイアウト)
3) ピン位置はスコアボード前4ポチ分の範囲(はんい)内
4) ボールはマイタギア2個をくっつけた大きさまで(テキストp.14)
5) 2投球×5フレーム(ストライク1回または5点につき飴玉1個ゲット)(*1)

 25点満点近くで優勝する人、1~2点で終わる人など、さまざま。
何ゲームやっても、あまり変わりません。偶然(ぐうぜん)や運だけではないようです。

下記が勝つポイントだったようです。

・投球ロボットが左右に向きを変えられるか(2日目テキスト)
・電池がパワフルか(新しいか、4本よりも5本か)
ピン同士が離(はな)れているか(くっつけて置くと、後ろのピンが前のピンを支え、倒れにくくなる)
・腕をぐるっと回した後にボールに当てるか(腕の加速を待たず、スイッチONですぐに当てる位置だと、ボールが遅(おそ)くてピンまで届かない)

 テキスト通りでは満足しない生徒さん向けに、ロボットの腕を高速回転させる改造を提案しました。
大きいギアM(モーター側)小さいピニオンギア(腕側)を回すことにより、腕の回転数が3倍になります。
これによりボールの勢いが増(ま)し、ピンを倒しやすくなります。

3倍では満足いかず、さらに大きいギアL(モーター側)小さいピニオンギア(腕側)を回し、腕の回転数を5倍にまで増速(ぞうそく)させる猛者(もさ)も現れました。
あまりのボールの速さに、ボウリングと言うよりレールガンのようでした。

 通常、ボーリングの投球は下投げですが、上投げするロボットも過去(かこ)に登場しました。まるで投石器のようです…
ボールをリリースする角度によって着地点が変わるので微妙(びみょう)な調整が必要ですが、当たりさえすれば効果は絶大! 高得点を連発していました。

 皆さん、楽しみにしていただけあって、ゲーム中はいつにも増(ま)して、歓喜(かんき)の雄叫(おたけ)びや、ミスを嘆(なげ)く声が飛び交(か)いました。

君たちは、まだまだ、遊び足りないんだね。


*1 本物のボウリングでは、1~9フレームまで2投球、10フレーム目を3投球にして、全ストライク(9フレーム目までストライク9回 + 10フレーム目ストライク3回)で 30点×10フレーム=300点満点です。
 このルールに倣(なら)うと、ロボリン君(p.24~)では、5フレームとも2投球、全ストライク(4フレーム目までストライク4回 + 5フレーム目ストライク2回)で 15点×4フレーム + 5フレーム目10点=70点満点とすることもできます。
 ストライクを出すと、次の2投分まで加算した(計3投分の)点数が入り、最高で、本物では10点×3=30点、ロボリン君では5点×3=15点となります。


1.3 <ミドルコース『ステアリングカー』>


 機械の王道たる、自動車です。ロボット教室の生徒さんなら、絶対に造って欲しい一台です。

 しかし、これまで幾度(いくど)となくロボット本体にタイヤ4輪を付けて転がしてきたのに、なぜ今さら“”なんでしょうか?

そのポイントは曲がる仕掛け(ステアリング)、つまり、ハンドル(英語ではステアリングホイール)を回すと左右の前輪が同期して向き(舵角=だかく)を変えるメカニズムです。

このメカニズムは3点から構成されています。

(1) ラック&ピニオン方式
 円形のピニオンギアを直線状のラックギアと噛み合わせ、ハンドル操作による回転運動を左右方向の直線運動に変換し、前輪の舵角(だかく)を変えます。

 このラックギア(洗濯板みたいなやつ;通じるかな…)は、今までロボット顔面の付け髭(ひげ)くらいにしか利用する機会のなかった人にとっては、初めて日の目を見ました!
これが本来の使い方ですよ!

 この仕組みは、プラモデルで自動車を組み立てたことのある人なら知っていたでしょうが(*1)、実車と同じ(*2)です。

(2) 平行リンク
 左右のタイヤの舵角が揃(そろ)う仕組みは、平行リンクと呼ばれる機構です。
左右に動くラックギアが平行リンクの外形を長方形にしたり、それを潰(つぶ)して平行四辺形にしたりしますが、いずれにせよ、4辺は平行のままですね。

(3) ユニバーサル・ジョイント(自在継ぎ手)
 ピニオンギアを回転させるシャフト(水平方向)と、ハンドルを回転させるシャフト(後方斜め上方向)は、同一直線上になく、途中で折れ曲がって接続しています。
ハンドルを上下左右に揺らしても問題なく操舵(そうだ)できます(*3)。

 チェーンや多数のギアを介さず、駆動力を数本のシャフト(棒)で遠方の異なる方向に伝達できる点で、これは大発明なのです。
なぜそのようなことができるのか、言葉で説明するよりじっくり観察しましょう(*4)。

 さて、学ぶべき点の多いリアルなモデルカーでしたが、授業最後の競技は“運転技能”。
マリオカートで鍛えてるって言ったって、車庫入れしたこと、ないでしょ?

教習所さながら、狭い角を曲がり、障害物を避け、脱輪にも注意しながら、狭いスペースに縦列(じゅうれつ)駐車や、後ろ向きに駐車するまでの時間を競いました。

操縦性を高め、速く走らせるポイントは以下の通り。

・あまり屈(かが)まずに済むよう、ステアリングシャフトをびよ~んと延長
・電池ボックス/スライドスイッチを延長ケーブルでつないでリモコン化(2日目テキスト)
アクセルペダル代わりにタッチセンサー(黒)を直列につなぎ、前進⇔後退の切り替え時のみスライドスイッチを操作
・全長(前後輪の軸間距離)を短く、小回りに(*5)
・直進時のスピードアップに、減速比の緩和(*6)

 やはり、バックでの運転には慣れていないようで、ハンドルの“切り返し”を忘れて同じ場所を行ったり来たり、入れやすいフロント部から突っ込んで、どつぼにはまる例も…。
タイムには数倍の開きがありましたが、崖から落ちずに駐車できただけ命拾いしました!


*1 若者の車離れが叫ばれる昨今、自動車のプラモデル製作経験は少ないようですね…。

*2 どの自動車カタログにも逐一「ステアリング形式: ラック&ピニオン式」のように書かれています。もう、「その他に一体何があるんだ!?」っていうくらいに。
 学んだ仕組みに実感が沸きますので、是非、Webカタログを見てみましょう。
できればお使いの車を検索して。スペック中の諸元表にあります。
 <参考> https://www.suzuki.co.jp/car/alto/detail/pdf/detail.pdf

*3 実車でも“チルト・ステアリング”といって、運転者の背丈に合わせてハンドルの上下位置を調整できるようになっているものがあります。
 また、サスペンションにより上下に揺れる車輪へエンジン動力を伝えるドライブシャフトにも使われています。

*4 さらに興味が湧いたら、インターネットで調べてみましょう。問題点もあります。
 <参考> https://ja.wikipedia.org/wiki/%E8%87%AA%E5%9C%A8%E7%B6%99%E6%89%8B

*5 自動車用語で、「ホイールベースが短いので、最小回転半径が小さい」と言います。
 2017年3月・2018年9月に中間教室で見られた、この真っ当なアイデアの体現と効果に驚かされました。

*6 テキストでは1/5(ピニオンギア⇒ギアL)ですが、1/3(ピニオンギア⇒ギアM)等に変えて速くできます。


1.4 <アドバンスコース『ピッキングロボ②』>


 《下記を参照下さい》
  http://robocobo.sakura.ne.jp/blog/robot/adv1-1803.pdf


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


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

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

感知に最も良く使われるのが、この超音波センサーです(*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年目コース『倒立振子ロボット③』>


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

 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/RobotP2203-Q.pdf

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

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

 <アドバンスコース>
  - 上記授業内容を精読する
  - オリジナル課題プリント(見取図+設問)
  http://robocobo.sakura.ne.jp/blog/HW/RobotA2202-Q.pdf (2月配信済み)

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

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


3. 2月の解答


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


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


◆日曜日の教室(東福間プロ・小倉北・南)5月は一週ずつ遅れます。

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

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

 ⇒ 4/2, 16,  5/7, 21,  6/4, 18


[東福間プロ]第2・4日原則<学習ルームでこぼこ>
   - 10:00~ プロ1年目
   - 13:00~ プロ2年目
   - 16:00~ プロ3年目

 ⇒ 4/10, 24,  5/15※, 29※,  6/12, 26

 ※5月は一週ずつ遅れます

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

 ⇒4/ 9 第1回 3F会議室2
  4/23 第2回 3F会議室4(和室)
  5/14, 28,  6/11, 25


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

 ⇒4/ 3 第1回 5F小セミ
  4/17 第2回 5F小セミ
  5/8※, 22※,  6/5, 19

 ※5月は一週ずつ遅れます

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

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

 ⇒ 4/2, 16,  5/7, 21,  6/4, 18


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

 ⇒ 4/10, 24,  5/15※, 29※,  6/12, 26

 ※5月は一週ずつ遅れます


5. お知らせ

1) 第12回ロボット教室 全国大会・地区大会について

 2022年全国大会および3年ぶりの地区大会の開催を目指して、現在準備を進めております。
 新しいコンテストやオンラインでの参加など、より多くの方に参加していただけるような大会を検討しています。
 大会概要・スケジュール詳細については、4月以降の通信や5月の授業テキストにてご案内予定です。


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

 ◆プライマリ【10名平均 図形3.7】
   5点…なし

 ◆ベーシック【22名平均 図面3.2+設問2.2=5.4】
  10点…なし
   9点…古場[小倉南2]
   8点…鑓水[八幡東2], 有松[小倉南2]
   7点…砂川[小倉北 年長], 栗本[小倉南2]

 ◆ミドル【15名平均 図面3.1+設問1.0=4.1】
  10点…なし
   9点…なし
   8点…なし
   7点…藤津[中間5], 諭[小倉北3]
   6点…古賀[八幡東5]


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