2017年3月29日水曜日

2017年3月報

1.3月授業内容
2.今月の課題
3.今後の授業スケジュール
4.お知らせ


1. 3月授業内容


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



 割愛します。







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



 第5回アイデアコンテスト全国大会(2015年)ミドルコース最優秀賞作品(当時小3)がベースの、ロボット教室カリキュラムとして初登場のボーリングロボットです。

 最優秀賞作品とは言え、いやー、参りました。何がって、書くことがないんです。
2時間悩(なや)んで、何も出てきません。(こんなことは初めて…)

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



 デザイン性は秀逸(しゅういつ)ですので、雰囲気(ふんいき)は満点です。
これはもう、ボーリング大会で盛り上がるしかありません。
ボーリング場さながら、各自のレーンを横にずらっと並べ、下記のレギュレーションにて点数を競いました。

1) ピンは5本(ピニオンギアうす + シャフト3~4ポチ)
2) ピン位置はスコアボード前4ポチ分の範囲内(レイアウトは自由)
3) ボール形状は自由(ロボットパーツのみ使用)
4) 2投球×5フレーム(全ストライクで最高70点)


 30点超えで優勝する人、1~2点で終わる人など、さまざま。
何ゲームやっても、あまり変わりません。偶然や運ではないようです。

下記が勝敗を分けたようです。

・投球ロボットが左右に向きを変えられるか(2日目テキスト)
ボールは幅広い方がやはり有利
腕をぐるっと回した後にボールに当てるか(腕の加速を待たず、スイッチONですぐに当てる位置だと、ボールが遅くてピンまで届かない)

 ゲーム中は、いつにも増(ま)して、歓喜(かんき)の雄叫(おたけ)び、途中棄権(きけん)、悔(くや)し涙など、人間ドラマに溢(あふ)れました。
君たちは、まだまだ、遊び足りないんだね。


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


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

 しかし、これまで幾度となくロボット本体にタイヤ4輪を付けて転がしてきたのに、なぜ今さら“”なんでしょうか?
そのポイントは曲がる仕掛け(ステアリング)、つまり、ハンドル(英語ではステアリングホイール)を回すと左右の前輪が同期して向き(舵角)を変えるメカニズムです。

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


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

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

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


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


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

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






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

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

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

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

 やはり、バックでの運転には慣れていないようで、“切り返し”時にハンドルを逆に回して、どつぼにはまる例も…。
タイムには数倍の開きがありましたが、崖から落ちずに駐車できただけ命拾いしました!


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

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

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

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

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

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


1.3 <アドバンスコース『ステップチャレンジャー』>


 1ヶ月目の授業です。高い段差を乗り越えられる究極の4輪車を目指します。



 1日目は、台車となる4輪車を製作し、前輪駆動(現在の自動車の主流)と4輪駆動(オフロード車、雪国で主流)とで、乗り越えられる段差を比較しました。
当然、前輪が浮いても後輪で後押しできる4輪駆動車の方が能力が高かったですが、さほど大きな違いが見られなかったのは何故でしょうか。


スポーツカーばりに車体底面の地上高(ロードクリアランス)が低すぎて、段差の角に当たり易いからです。
雪道はまあまあイケますが、凸凹道はムリですね。ジープの車高が高いのはこのためです。
(そういえば佐藤は昔、軍用ジープを乗り回す怪しい大学生でした…)

 2日目は、台車の“上”にエレベーターを製作しました。
アドバンスコースで増えたラックギア6個を並べた2本のギザギザレールがいい感じですね。
それにしても、このエレベーターは何を持ち上げるのでしょうか?
台車は高い段差を乗り越えられるようになるのでしょうか?
2ヶ月目のお楽しみです。


1.4 <プロ1年目コース『不思議アイテムII(3)』>


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

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

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

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


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

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




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

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

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

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

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

怖(おじ)けずに、自分のロボットにを吹き込んでみてください。
君こそがフランケンシュタイン(怪物の創生者)であり、鉄腕アトムのお茶の水博士なのですから。

プロ1年目修了おめでとうございます。


*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.5 <プロ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面図のみ/設問なし)

 <ミドルコース>
  ◎ オリジナル課題プリント(3面図+設問)
  ◎ 上記授業内容を精読する

 <アドバンスコース>
  ○ 上記授業内容を精読する

 <プロ1年目コース>
  ◎ 上記授業内容を精読する(該当テキストページを見ながら)
  ◎ 左右センサーの感知距離の差が小さければ、その(小さい方の)値に応じて前後に動くか停止し[step1_answer]、
   差が大きければ、近い方の障害物(手)を向くように旋回する[step2_answer]、
   計5つの動作を切り替えるプログラムに合成する[解答例step3は難読なので頼らないこと]
  ◎ 単一距離センサーロボット[avoider/nofall/tablerunner/walltracer]のいずれかを改良し、ダブル距離センサーロボットとして、より洗練された動きを設計・実装する

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

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


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


 日付の()は臨時、!は原則外、?は予定の意です。

[東福間]第1・3土原則
   - 10:30~ ミドル/アドバンス
   - 13:30~ ベーシック/プライマリ

 ・4/1, 15,  5/6?, 20?,  6/3?, 17?


[東福間プロ]第2・4日原則
   - 12:45~ プロ2年目

 ・4/9, 23,  5/14, 28,  6/11, 25


[中間]第2・4土原則
   - 13:30~ ベーシック/プライマリ
   - 15:15~ ミドル(/アドバンス振替)

 なかまハーモニーホール
 ・4/ 8 第1回 3F会議室2
 ・4/22 第2回 3F会議室3
 ・5/13, 27,  6/10, 24


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

 ムーブ
 ・4/ 2 第1回 5F小セミ
 ・4/16 第2回 5F小セミ
 ・5/7, 21,  6/4, 18


―――――――――― 振替提携教室 ――――――――――
 振替希望は1週間前までにお願いします(許可制)
 振替手数料540円/回をご負担下さい(お引落し)
 所定コースのみお受けします

[八幡東]第1・3土原則
   - 13:30~ ベーシック
   - 15:30~ ミドル
   - 17:30~ アドバンス

 レインボープラザ4F by 中野司先生
 ・4/1, 15,  5/6, 20,  6/3, 17


[とばた]第2・4土原則
   - 第2・4土 13:30~ 全コース(プロを除く)

 ウェルとばた8F by 菅本進先生
 ・4/8, 22,  5/13, 27,  6/10, 24


[小倉南]第2・4日原則【4月正式開校】
   - 10:30~ ベーシック/プライマリ
   - 13:00~ ミドル  /アドバンス

 総合農事センター2F by 中野司先生
 ・4/9, 23,  5/14, 28,  6/11, 25


4. お知らせ

 1) メール配信元ドメイン変更・ブログ読者登録リセット
  4月~メール発信元ドメインを変更(ezweb.ne.jp→gmail.com)予定です。
  Gmailが拒否する特殊なアドレスから変更をお願いすることがあります。
  また、ブログ読者登録も毎年4月にリセット・再招待させて頂く予定です。

 2) 電池について
  ・単4乾電池4本(+ダミー1本)、または充電池5本(6V)を推奨します。
  ・電池不足が多く見受けられ、進行上の支障となっております。
   電池チェッカー・予備電池を用意し、自ら残量の管理を。
  ・教室サービス時、原則として電池代4本108円+診断料108円を頂きます。

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

  ◆ベーシック【17名平均 図面2.6+設問2.9=5.6】
   10点…なし
    9点…荒木[小倉北2]
    8点…橋本[小倉北2], 大橋[小倉北3], 内田[小倉北3], 谷川[八幡東2]

  ◆ミドル【20名平均 図面2.9+設問1.8=4.6】
   10点…なし
    9点…佐藤[小倉北7], 吉良[小倉北5]
    8点…下田[八幡東6]


東福間・中間・小倉北教室 佐藤