2018年4月30日月曜日

2018年4月報

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


1. 4月授業内容


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


 割愛します。


1.1 <プライマリーコース『ロビット』>



 割愛します。




1.2 <ベーシックコース『ぐるぐる進む君』>



 二足歩行ロボットです。左右の足が交互(こうご)に前後するのだから、歩くのは当たり前?

よく考えてみます。
人間やアシモのように、片足を上げながら歩くほど高度ではありませんから、地面についたまま前後に往復(おうふく)するだけの足に前も後ろもなく、その場で足を摺(す)るばかりでうまく進みません(*1)。
1日目のロボットがこの形態であり、あまりスマートな歩みではなかったでしょう。

 しかし、人間は、ぶかぶかのスリッパを履(は)いたときでも、摺り足をしながら前に進むことができます。
同じ摺り足の動きで後退することもできます。無意識(むいしき)に何かを切り替(か)えています


そうです、重心ですね。2日目で、ちょうちんアンコウのごとく頭から生えた角(つの)が、その重心移動メカニズムです。

 もちろん、付ければいいってものではありません。
角の先に付けたタイヤL(カウンターウェイト=おもり)に揺(ゆ)り回されるわけですから、足の動きとの同調(タイミング合わせ)を考えないと、逆にバランスを崩(くず)してすぐに転んでしまいます。

しかし、このタイミングは30°単位(*2)で調整できますから、後ろに下がる方の足に重心を傾(かたむ)け、前へ出る方の足を浮(う)かせ気味にすれば、見違えるようにスタスタと歩くことができるように変身します。

 その理由を詳しく見てみましょう。


写真のように、ロボットに向かって右側にタイヤLがあるときを考えてみます。
タイヤLは黒矢印(↓)の重力を受けています。この重力は、角を伝って、ロボットを右側に倒(たお)そうと作用します。
つまり、向かって右側の足には赤矢印(下向き↓)の力が、左側の足には青矢印(上向き↑)の力が加わり、向かって右側の足は重く、左側の足は軽くなるのです。

 左右の足への重みが変わることで、どんな良いことがあるのでしょうか。


写真は、ロボットの左足がめいっぱい前に出て、これから後ろに下がろうとする瞬間です。
このとき、左足には赤矢印(↓)の力が加わっているため、床との摩擦(まさつ)力が強く働き、滑(すべ)りにくくなります。
そのため、左足を後ろへ動かそうとする力は、ロボット上体を緑矢印(←)の方へ動かそうとする力となって、前進させるのです。

同時に、軽くなっている方の右足は、床との摩擦力が弱いために、滑りながら前へせり出し、次の一歩に備(そな)えることができます。







 もっともっと速く歩かせるために、電圧アップ(電池4→5本)したり、脚(あし)を長くして歩幅(ほはば)を大きく取ったりしてみましょう。
すると、安定感がなくなり、上体がヨタヨタに振(ふ)れようとする動きを、強めのカウンターウェイト(*3)でキャンセルし、さらに、足裏(あしうら)を広げて転びにくくします。

または、ラチェット(*4)を知っている人は、スケートのようにスーッと滑らせることも夢ではありませんよ!

二足歩行ロボットというのは、なかなか奥深いテーマなのですよ。


*1 足にグロメットを付けると、後方へ蹴(け)る摩擦力が働き、少し前進するようになりますが、逆に足を前に戻すときには、この摩擦力がじゃまになります。


*2 タイヤLを回す角の根元には、12の歯をもつマイタギアが取り付けられており、これが別のマイタギアと噛(か)み合って回されています。
 つまり、噛み合わせを1つずらして取り付けるということは、角度にして 360÷12=30°ずつ変更できるということですね。

*3 てこの原理により、重いほど、角を長くするほど効く。

*4 一方向へのみ回転させる機構。ミドルコース『ロボワーム』を参照。


1.3 <ミドルコース『ロボワーム』>



 見た目は3輪バイクのようですが、尺取り虫(シャクトリムシ)をモチーフにしたロボットです。

 1日目では、前輪の付いたロッドを前後に往復させています。
この動きは、クランクというリンク機構を用いて、モーターの回転運動を往復運動に変えて実現しています。
しかし、ロッドの往復に合わせて、前輪は前後に転がるだけであり、推進力とはなりません。


ところが、ただ1点の部品(ペグS)を装着するだけで、見違えるほど前進するように変わります。
ラチェットという機構で、一方向への回転のみを許し、反対方向へは回らない仕掛けです。


 皆さんの身近なところでは、自転車のペダル(正確にはチェーンで駆動される後輪のハブ内)に使われており、前方向にはしっかり噛み合って回転を伝えますが、逆方向にはチッチッチと音を立てて空回りする仕組みにより、ペダルを休めても車輪は回り続けることができます。


写真は、後輪ハブ(車軸部分)を分解したものです。
大きな力に対応できるよう、ギアの周りにラチェットが3つ付いていますが、基本的な仕組みは、ギアMとペグSの噛み合わせ方と同じです。

 このラチェット機構を実現するために、前輪に重ねたギアMの歯にペグSの角を当てました。
すると、ロッドの往復に合わせて、前輪と後輪が交互に前へ転がることを繰り返し、本体が前進するようになりました。
まるで、尺取り虫が胴体を曲げたり伸ばしたりして進む様子です。



 後輪が前へ転がるのは、ロッドが後ろへ戻る際に前輪が逆回転しないようロックされ、本体(と一体化した後輪)が前輪に引っ張られるようになったためです。

前輪が前へ転がる際は、本体(および後輪)は止まったままか、むしろ反動で少し後退します。










 2日目に、後輪にも同様に往復するロッドとラチェットを組み付けました。
これで、後輪の後退も防げるようになり、推進効率が上がりそうです。


前輪と後輪のロッドが往復するタイミング(のズレ)は自由に変更できますが、一番スムーズに前進するタイミングはどのようなものでしたか?
どうあがいても(前後のロッドで漕ぐタイミングがどんなでも)、前後輪ともラチェットを付けて後退を阻止(そし)するのだから、1日目(前輪ラチェットだけ)のロボットよりは前に進みやすくなると思うでしょう?


ところが、ロボットを横から見て、前後のロッドがハの字形に開いたり閉じたりするようなタイミング(前後クランク位相差0°)が最も優れます。
同じ向きに前後するようなタイミング(位相差180°)でクランクに取り付けると、恐ろしく推進効率が下がり、ちょっとの坂道でも上れなくなります(*1)。
クランク位相差90°では、その中間といった感じです。

何故でしょうか?

これは“スケーティング”の要領に似て、先行する前脚と、蹴り出す後ろ脚機能分担ができるからです。
人間が歩けるのも、尺取り虫が進めるのも、地面を捉(とら)える後部があってこそ、前部が地面上を浮いて(または滑るように)進めるわけです。



だって、両脚を揃えて前後させようとしても、上体が前後に傾くだけで、何を支えにして進めと言えるでしょうか?
『ロボワーム』のように2本脚が前後に付いていても、同じことです。

尺取り虫は知っているのでしょうか。


*1 平坦なら少し進みますが、本体を前後に振る“反動”で動いている程度で、後ろに下がったとしても不思議ではありません。


1.4 <アドバンスプログラミングコース『コピーロボット(1)』>



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




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


 春タームは、赤外線で遊びます。

 赤外線(Infrared Ray, IR)とは何でしょうか。
(人間の)目に見えない光の一つ(波長領域)であって、「目に見える可視光線の中で波長が最も長い赤色光よりもさらに長いために見えない、限られた波長領域の(赤から少し外れた)光」と言えます。

可視光線の波長が約400nm~800nmの範囲であるのに対し、赤外線は800nm~1,000,000nm(1mm)と長く広範囲の波長領域を指し(*1)、波長が長くなるにつれ、近赤外線・中赤外線・遠赤外線と分類されます。


このうち、赤色の可視光線に近い特性をもつ近赤外線は、家電のリモコンや赤外線カメラ、携帯電話間の赤外線通信(もう時代遅れ?)に使われています(*2)。

 さて、市場には、あらゆるリモコンの信号を読み取り、“真似”できるという「学習リモコン」なるものが存在しますね。
佐藤が初めて目にした時は、リモコンの通信方式も知らずに、凄いモノが作れるもんだと感嘆しましたが、
下記の条件のお陰で、Arduino環境でもライブラリが揃っているように、(マイコンがあれば)比較的容易に作成できます。

1) 波長950nm近傍の近赤外線を使う
2) 周波数38kHz前後の明滅パルスを搬送波として使う(*3)
3) 単位時間500μs前後のパルス位置変調(Pulse Position Modulation, PPM)方式で符号化(0/1表現)する
4) 一方的に送り付ける用途(双方向通信ではなく、届いたかどうかは無関心)
5) 主に使用されている送信フォーマットは数種類しかない


1)~3)の共通性によって、単位符号(0/1)が読み取れますので、5)のフォーマットが何でも、プログラム次第で解釈できます。

事実、携帯電話やプリンタ間の写真転送などで使われる双方向のIrDA通信規格とは異なり、赤外線リモコンの通信プロトコル(データフォーマット)には明確な標準規格が無く、各社各様です。

但し、主に使用されているのは下記3方式のようで、SONYフォーマットを除き、1フレーム(1回の送信データ列)当たり、カスタム(メーカー識別)コード16bitデータ(コマンド)コード16bit32bit前後で構成され、約100ms毎に(ボタンが押されている間)繰り返し送信するという類似性があります。

・NECフォーマット     … 主にSONY製以外のAV機器
・家製協(AEHA)フォーマット … 主に一般(白物)家電
・SONYフォーマット     … SONY製品のみ


 このような背景により、マイコンに赤外線LED赤外線受光素子を繋ぐだけで、家電リモコンの信号をプログラム[IRrecvDump]で“傍受”し、プログラム[IRJackEx]で“真似”したり、別のコマンドデータに置き換えて“電波ジャック”したりできるようになります。

実際、扇風機や照明器具等の一般家電では、ブレッドボード上に組んだタクトスイッチをリモコンのボタン代わりにして操作することができました。

複数コードのシーケンス(序列)を認識して作動する家電や、テレビ等の高機能AV機器では(?)成功率が低かったようです。
ライブラリが対応していないだけで、プロトコルや適正タイミングさえ明確に分かれば、Arduinoで再現できるかもしれません。

 また、リモコンのボタン毎の信号を区別できるということは、専用品を作らなくても、付属の汎用リモコンや適当な家電リモコンで、オムニホイール操縦プログラム[IRrobot]のようにロボットを制御(前進・後退・旋回コマンド等)できるということです。


あるいは、プログラム[IRText]のように、文字コードをデータコードに埋め込んで送信し、受信側で取り出して8×8マトリクスLEDに表示することにより、メッセージ伝送もできました。

文字コードを暗号化して、第三者に傍受されても解読不能にすることもできますよ!

 赤外線通信を使って、他にどんなアプリケーション(応用)が考えられるのか、次月も探求して参りましょう。


【出展・参考文献】
http://elm-chan.org/docs/ir_format.html
http://www.asahi-net.or.jp/~gt3n-tnk/IR_TX1.html
http://akizukidenshi.com/download/k4174_format.pdf
https://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%A2%E3%82%B3%E3%83%B3


*1 広範囲と言っても、0.01nm以下から100,000,000,000,000nm(百km)以上の波長まで連続的に存在する電磁波のうちでは、ごく狭い帯域の(不可視)光線に過ぎません。

*2 光のように真っ直ぐしか飛ばず、電波のようには拡がりませんので、一所懸命リモコンをテレビへ向けなければなりませんね。
 電波式リモコン(SONYおき楽リモコン等)の使い勝手を知ると戻れませんが、赤外線式の方が低コストなのです。

*3 この搬送波1パルスの有無がデータ符号1bit(0/1)を表すわけではありません。
 赤外線の物理的な放射タイミングがこの周期(1/38kHz≒26μs)毎に発生し、実際の放射パルス(の複数個の連続)の有無(の組合せ)によって、1bit(0/1)を表します。
 つまり、赤外線を(物理的な意味で)放射している期間は38kHzで点滅しおり、搬送波を使わず連続点灯させる場合よりも少ない電力で高いピーク輝度を出力できます。
 また、一般に、信号を搬送波に乗せる(搬送波を信号で変調する)方式では、特定の周波数成分だけを拾うフィルタ回路を経由して受信(またはプログラムで信号処理)することにより、混線回避やノイズに強い通信ができるようになります。


2. 今月の課題


 <スタートアップ(全コース)>
  特にありません(アドバンスプログラミング生は2017年9月報を参照)

 <プライマリーコース>
  - オリジナル図形プリント

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

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

 <アドバンスプログラミングコース>
  - 上記授業内容を精読する

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


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


◆中間5/12は代替施設『北九州ハイツ』で開催します。
◆東福間5/19セミナーの為、時間変更(13:30→9:30/15:30→16:30)させて頂きます。
◆東福間5/19体育祭の為、日時変更(5/19 17:30中止→5/26 9:30)させて頂きます。
◆八幡東5/19セミナーの為、時間変更(13:30→15:30)させて頂きます。

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

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

 ⇒ 5/5, 19※,  6/2, 16,  7/7, 21

 ※5/19セミナーの為、時間変更(13:30→9:30/15:30→16:30)させて頂きます。
  5/19体育祭の為、日時変更(5/19 17:30中止→5/26 9:30)させて頂きます。


[東福間プロ]第2・4日原則
   - 15:30~ プロ3年目

 ⇒ 5/13, 27,  6/10, 24,  7/8, 22


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

 ⇒5/12※第1回 北九州ハイツ  2F嵐山
  5/26 第2回 ハーモニーホール3F会議室2
  6/9, 23※,  7/14, 28※

 ※5/12は代替施設『北九州ハイツ』で開催します。
 ※6/23, 7/28はハーモニーホール利用不可の為、代替施設(未定)で開催します。


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

 ⇒5/ 6 第1回 5F小セミ
  5/20 第2回 5F小セミ
  6/3, 17※,  7/1※, 15※

 ※6/17はムーブ利用不可の為、『商工貿易会館(シティプラザ)』で開催します。
 ※7月はムーブフェスタの為、6/2まで確定できません。代理施設での開催となる可能性があります。


――――――――――【菅本教室長】――――――――――

[とばた]第2・4土原則<ウェルとばた8F>
   - 13:00~ 全コース(プロを除く)

 ⇒ 5/12, 26,  6/9, 23,  7/14, 28


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

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

 ⇒ 5/5, 19※,  6/2, 16,  7/7, 21

 ※5/19セミナーの為、時間変更(13:30→15:30)させて頂きます。


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

 ⇒ 5/13, 27,  6/10, 24,  7/8, 22


4. お知らせ

1) KIGSセミナー聴講のお薦め[再掲]

 ロボット教室で力学のセンスを学んでいる小5以上の皆さんにお薦めします。
 ⇒強い興味のある場合を除き、小4以下の方はご遠慮下さい。
 ⇒当日の東福間・八幡東教室の授業時間を一部変更させて頂きます。
 ⇒お申込みは佐藤・中野でも承ります。お早めに。
 (個別の方も佐藤・中野までご一報頂けると幸いです)


 【科学の歴史(1) ~力学はどのようにして創られたか】
  力学(りきがく)とは、物体にはたらく力や、物体の運動を対象とする科学のことです。
 その歴史は古く、17世紀のガリレオやニュートンによって基本的な法則や原理が発見され、続く18世紀のオイラーなどの手で、現在のような形にまとめられました。
 このような発展の流れを、わかりやすく解説します。

  時 間 5/19(土) 13:00~15:00
  会 場 北九州イノベーションギャラリー(KIGS)内 プレゼンテーションスタジオ
  参加料 無料
  講 師 有賀 暢迪(ありが のぶみち)氏 国立科学博物館 研究員 博士
  申込み https://www.kigs.jp/event/2018/03/288.php


 【科学の歴史(2) ~明治日本、西洋の科学と出会う】
  時 間 12/1(土) 13:00~15:00(予定)


2) 小倉北ロボティクス・プロフェッサー(ロボプロ)コース開講[再掲]

 アドプロ1年以上履修生・外部生を対象に、小倉北教室で今秋9月~開講予定で進めます。
 対象の方へご案内予定(3月中)が遅れており申し訳ありません。
 条件面の最終調整中につき、もう暫く(5月中)お待ち下さい。

 なお、他教室の方は小倉北教室へ転属となります。
 また、本コースは佐藤・中野の完全共同運用になります。


3) 小3以上向け電子工作・マイコンプログラミング講座[予告]


 教室独自に、何とか本年度中に定例スタートできるよう鋭意努力中です。
 景品開発が後回しになっておりますが、宿題ポイントを貯めて損はさせません!


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

 ◆プライマリ【9名平均 図形4.7】
   5点…牛嶋[中間2], 河原[中間1], 長友[八幡東 年長], 板脇[小倉北 年長], 柴田[小倉北2], 米山[小倉北1], 林田[小倉南 年長]

 《お詫び》
  ブロック数が28~43(想定36)と多重解になる不適切な問題でした。
  悩ませた生徒さん・保護者の方へお詫びします。

 ◆ベーシック【18名平均 図面2.8+設問2.1=4.9】
  10点…なし
   9点…なし
   8点…久保田(新)[小倉北4]
   7点…宮尾[八幡東4], 森崎[八幡東2], 大和(彩)[小倉北3]

 ◆ミドル【22名平均 図面2.6+設問2.2=4.8】
  10点…なし
   9点…橋本[小倉南3]
   8点…辻[小倉南6]

 ◆アドバンスプログラミング【2名平均 図面9.5+設問3.5=13.0】
  最高14点…江平[小倉北7]


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

2018年3月30日金曜日

2018年3月報

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


1. 3月授業内容


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


 割愛します。


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



 割愛します。

















1.2 <ベーシックコース『ジャイアントホッパー』>


 バッタ型ロボットです。ギアを介(かい)してモーターが駆動するのは、本体の側面で時計の針のように回転するロッド3アナだけです。

それだけなのに、後ろ脚(あし)を折り曲げたり、伸ばしたりを繰り返し、尺取り虫のように前進します。どうしてでしょうか?


 ロッド3アナが1回転毎に後ろ脚を跳(は)ね上げています。
このような回転軸を利用した周期的な運動機構をカムと呼び、例えば、自動車のエンジンが吸気と排気を切り替えるために使われています。


後ろ脚が跳ね上がる時に関節(かんせつ)が折れ曲がって、後ろのタイヤLを前方へ引きずります。
この時、本体は進みませんが、次に輪ゴムの力で脚が伸びる時、後ろのタイヤLは微動(びどう)だにせず、前輪のタイヤSが転がりながら本体を前へ進めます。

 後ろのタイヤLは回転しないのに、どうして前進するよう都合(つごう)良く引きずられたり踏(ふ)み止まったりしてくれるのでしょうか?
タイヤLは回転しないのですよ。だったら、タイヤLは動かず、後ろ脚の屈伸(くっしん)運動に合わせて本体(前輪)が前後に往復(おうふく)するだけではないでしょうか
(尺取り虫も、次の一歩を迷ってそのような動きをすることがありますね)




 それは摩擦力(まさつりょく=すべらないぞ!という力)の効(き)き方が違うからです。

ちょっと難しいのですが、脚を折り曲げる(引っ込める)時タイヤLを斜(なな)め前方上向きに引き上げる力が働き、重い本体を後退(こうたい)させるほどの地面との摩擦力はなくなります
その結果、タイヤLの方が引きずられるのですが、逆に脚を伸ばす時は、斜め後方下向きに蹴(け)り出すので、地面との摩擦力が強力に働き、すべらずに本体を推進(すいしん)させるのです。

 消しゴムをノートに軽く当てた場合強く押し付けた場合とでは、すべらせるのに必要な力が全然違いますよね?
また、消しゴムをノートに斜めに当てると、引く時は軽くすべりますが、押す時は摩擦力を強く感じますね。タイヤLにも同じように作用しているのです。

タイヤLが地面から跳ね上がるほどのパワーがあれば分かりやすいのですが、ずっと地面を引きずっていますので、見た目では分かりません
タイヤLを消しゴムだと思ってください。

 タイヤLを回転しないよう止めている理由が分かったでしょうか?
試しに、自由回転するようクランクを取り外してみてください。


 最後の競技は“バッタレース”をしました。スピード勝負です。
推進はゴムの張力(ちょうりょく)、そのゴムにエネルギーを充填(じゅうてん)するのがモーターの仕事と言えますから、ゴムはきつく、モーターはパワフルに、というのが理想ですが、限界もあります。

究極は、有限なモーターパワーをロッド3アナの回転トルク(脚の力)に振るか回転数(脚のスピード)に振るかでギア比を決めたり、それに適した輪ゴムの掛(か)け方や本数を探ったりするのが戦略です。

これまでに下記のような素晴らしい改造が生まれています。
1) モーター軸のピニオンギアギアMへ交換(脚が3倍速く動く)(*1)
2) 側面のロッド3アナ回転中心を端っこ中心へ変更(脚が2倍速く動く)(*2)
3) 2)のロッド3アナに、ロッド5アナを被せ、2)の弱点を解消(*3)
4) タイヤLに代わり、グロメットをはめて、後ろ脚を軽量化(*4)
5) タイヤLのクランク(回転止め)に代わり、ラチェット機構(前方向のみ回転させる)を取り付けて、スーッとすべるように前進する(*5)




 登坂(とうはん)チャレンジも、面白い競技でした。
テキスト通りのロボットでは、坂がきつくなると、後ろ足(タイヤL)の摩擦力が減(へ)ってすべったり、せっかく蹴(け)っても次に蹴るまでに前足(タイヤS)が後ずさりしたりして、あまり登れません。

後ろ足を重くしたり、腹(はら)で支えたり、前足にもラチェット機構を取り付けたり(!)して、すべり止めの改良が様々に生まれていました。

 ベーシックコース修了生に相応しい、奥の深いロボットでした。


*1 力は1/3に弱くなり、モーターが力負けして停止しやすい弱点がありますので、あまり欲張(よくば)れません。

*2 回転半径が半分(2アナ分⇒1アナ分)になるので、動きの幅(ストローク)が半分になり、あまりスピードアップしない弱点があります。

*3 ロッド5アナの中心を回転軸としても、回転半径を2アナ分とれ、ストロークを減らさずに脚を2倍速く動かせます。

*4 バッタらしい力強い脚に見えなくなりますが、電池が弱くても動きやすいですね!

*5 これだけで圧倒的に速くなります。ミドルコースレベルの改造です。


1.3 <ミドルコース『ダンゴム』>


 変形ロボットです。ダンゴムシのように沢山の足で歩いたり、丸まったりします。

ロボットの動き

 モーターは回転する力しか生み出しませんね。
その回転する力でロボットの足を動かし前進するのか、本体を変形させる(丸まる)のかはどこで決まるのでしょうか。

1日目のロボットは丸まらず、スイッチを切り替えても前進・後退するだけです。
(これだけでも、虫嫌いな人をゾクゾクさせるには十分な仕上がりですが)
2日目のテキストに丸まるためのミソが隠(かく)されています。

丸まる改造

 テキストに倣(なら)い、写真のようにラチェットをギアに噛ませてみました。
これでスイッチを入れると…、前に進んだり、丸まったりしましたね。 
なぜ2通りの働きをするのか、皆さんは既に理解していると思います。


スイッチを一方に入れて前進するのは変わりませんが、逆方向に入れるとラチェットがギアに噛み、後退する代わりに変形するようになりました。

 ここで、1つ疑問が浮かびます。
ラチェットが噛むと、そのギアは回転できなくなり、ロボットがその場に止まったまま動けなくなるだけではないでしょうか?  
ちょうど車のタイヤを回らないように固定した場合のイメージです。

力の逃げ道

 写真のように、赤矢印のギアを回した場合、隣のギアへ回転が伝わります。
青矢印のギアは回転する以外に動きようがないですね。


 そこで、ギアの土台を変えてみます。
写真のように、ビーム2本にシャフトを1本通し、ハサミのようにクロスさせます。
シャフトにギアを通し、もう1組のシャフトとギアを上部のビーム1本だけに通して噛み合わせます。
(実際に作って体験してみることが理解への一番の近道です)

赤矢印の示すシャフトを回してみます。当然、青矢印のシャフトも回転すると思います。
同時に、なんとなく上部のビームもオレンジ矢印の向きに回転しようとしませんか?
赤矢印のシャフトを急に回そうとするほど(*1)、オレンジ矢印のビームもつられて回りやすいと思います。

 この場合、赤矢印の回す力は青矢印のギアを回すかオレンジ矢印のビームを回すかの2通り、“逃げ道”があるわけです。
力の逃げ道がいくつかある場合、より簡単に動かせる(抵抗が小さい)方に逃げます
その結果、青矢印のギアが回ったり、オレンジ矢印のビームが回ったりします。
回しやすさ(抵抗)が同程度の場合は、両方とも回ることになります。


 ここで、力の逃げ道の1つを閉ざすとどうなるでしょうか。
写真の赤丸のように、ストッパーを取り付けてみました。
このストッパーの役割は、ダンゴムの(ギアと噛んだ)ラチェットと同じで、接触しているギアを回らなくしています。

この状態で、赤矢印のシャフトを回してみてください。
上部のビームをオレンジ矢印の向きにダイレクトに回転させる感じがすると思います。

 なぜそうなるのでしょうか?
赤矢印の力の逃げ道として、ストッパーを破壊して青矢印のギヤを回すよりビームを回した方がはるかに楽(抵抗が小さい)ですね。
その結果、青矢印のギアのギアを回すことなく、ビームを回すことに専念するのです。

これがダンゴムを後退させるか、丸めるかを分かつ仕組みの原理です。
2月の『サカアガリン』、1月の『シュート君』にも使われていますよ。

丸まる仕組み

 力の逃げ道がダンゴムの変形にどのように作用しているのかを見ていきましょう。
モーター軸(ピニオンギア)を、側面のギアMを左からA,B,C,Dと名付けます。

ギアに注目すると、これはラチェットにより回らなくなっています。
全てのギアは噛み合っていますので、このままではモーターは回転できません。
ここで何が起こるでしょう。力は“逃げ道”を常に探しています。


 スイッチを入れると、ピニオンギアは回転しようとしますが、ラチェットにより固定された一連のギアを回すことはできません
代わりに、モーター(頭部)自身が赤矢印の向きに回ることで、ピニオンギアがべベルギアの周りを回ることができますね。

ある程度までモーター(頭部)が回転すると、写真の青丸のように、ダンゴムののパーツ同士がぶつかってしまい、回転できなくなります。
逃げ道は他にないでしょうか?

実験した2本のビーム同士のように、頭⇔胸以外にも、胸⇔腹腹⇔尻の間に、折れ曲がる関節がありますね。
これらが折れ曲がることで、ギアの周りを、の周りを、の周りを回る仕事ができ(*2)、その結果、ダンゴムは丸まっているのです。

 さて、ダンゴムが丸まる仕組みは以上ですが、丸まる動作に不必要なギアがあります
それは、ギアA,B,C,Dのうち、どれを指しているでしょうか?



ダンゴムは、3つの関節で分けられた頭・胸・腹・尻の4部位それぞれに、ギアA,B,C,Dが取り付けられ、関節の両側のギアが互いの周りを回ろうとする(*3)力で折れ曲がっています。
だから、一見無駄がなさそうですが、この力の伝達に寄与していないギアがあります。
つまり、それを外しても丸まる動作に影響はありません(*4)。それはどれでしょうか。
そのギアの記号不必要な理由、そのギアの別の役割を考えてみてください。


*1 物体を素早く加速させようとするほど、それを妨げようとする抗力が大きくなり、その分、大きな力を要します。慣性の法則といいます。

*2 実際は、回転方向を整えるために、間にピニオンギアを介していますが、関節を挟んだギア同士が互いの周りを回る作用としては同様に考えられます。

*3 どちらがどちらの周りを回っていると考えるかは、基準(カメラの設置場所=動いていないと感じる方)によって変わる相対的なものです。

*4 ギアA,B,C,Dは両側面にあることに注意してください。両側セットで考えます。


1.4 <アドバンスプログラミングコース『ピッキングロボ(2)』>



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





1.5 <プロ3年目コース『二足歩行ロボット(3)』>


 二足歩行の制御シーケンスをプログラムに落とし込み、ボタン一発で自動歩行させる最終月です。


両足首のサーボモーター3個を個別に制御する手動操縦プログラム[BiRobotTest4_libまで]では、





1) 体を右傾させる     (左足を浮かせる)
2) 着地した右足首を左に捻る(左半身を進める)
3) 体を左傾させる     (右足を浮かせる)
4) 着地した左足首を右に捻る(右半身を進める)
という一連の動作(シーケンス)を繰り返せば前進、逆順で後退できました。

この順をそのままプログラムに記述すれば自動で歩行しますが、もう少し整理して、
a) 腰も足首も捻らず(原点位置で)直立した静止状態を挿入し、
b) 2)と4)の両足首を捻る方向の組合せで前進・後退・左旋回・右旋回の4動作を切り替える
ことを実現したのが、ボタン一発型の自動歩行プログラム[BiRobotTest5_lib]です。


 この機能レベルになると、ある時点ではどうなっており(状態)、何ができて(動作)、次にどうなるか(遷移)をしっかり設計し、プログラム中でも管理する必要がでてきます。

それには、逐次処理的な制御フローを図示するのに向いたフローチャートよりも、
各状態・動作・遷移に注目した制御フローを図示する状態遷移図が向いています。


状態遷移図は、「有限個の状態と遷移と動作の組合せからなる機械モデル」の設計図です。
この機械モデルを有限オートマトン(finite automaton)または有限ステートマシン(finite state machine)と呼びます。
機械モデルの実装はロボットでも、ソフトウェアでも、ピタゴラスイッチでもあり得ます。

 何やら小難しい響きに聞こえますが、プログラムが組めない人でも、テレビのリモコン操作を不思議に思わなければ、裏で流れる制御ソフトの仕業として感覚的に理解していることです。

例えば、「入力切替」で画面モード(状態)を切り替え(動作・遷移)ますね。
さらに、同じ数字ボタンを押しても、地デジではチャンネルが替わり、ビデオ入力では無効になり、ブラウザではカーソルキーとして働くなど、現在の状態によって、可能な動作と遷移先の状態が変わります

 複雑な制御シーケンスや分岐・繰返し構造を場当たり的に記述していくと、バグによる思わぬ動作不良を招き易くなります。
これを、とり得る状態の数(無限にはない)に分解して、各状態における動作と遷移先の状態を規定していけば、比較的簡単に信頼性の高いシステムが設計できるというアイデアです。

状態遷移図(または表)や、より拡張された表記法である統一モデリング言語(UML)等を利用して、様々な製品が設計されています。

 さて、プログラム中で状態を管理するには、現在および遷移先の状態値(番号・記号)を記憶しておくための変数を用意します。
このような変数名には、"flag", "mode", "state", "step"等の文字列を入れると良いでしょう。
あとは、状態値に応じて、if文やswitch/case文による分岐ブロック{ }内に、動作(関数呼び出し)や状態値の書き換え(遷移)と、それに必要な条件(無条件なら不要)を記述するだけでも形になります。

独学でプログラミングを始めても、全員が発明しそうな必然の工夫です。

今回の二足歩行プログラムには、超音波センサー等の入力(条件)による自律的な状態遷移はありませんが(*1)、
前述の通り、無線コントローラーのボタン操作(条件)により足首の捻る方向(動作)を変え、4つの歩行モードを切り替えています。


 その他、下記のような制御の工夫点がありました。

繰返し周期の多重化
 1つのメインループ loop() 内で、高頻度なサーボモーターの位置更新と、
中頻度なコントローラー操作や超音波センサーからの読出しとディスプレイ更新、
低頻度な音の更新を両立させるテクニックです。


void loop() {
  if (CounterA == 0) {
    xxx.read_gamepad();
// コントローラ読出[100ms毎]
    yyy.ping();       
// 超音波センサ計測[100ms毎]
    updateDisplay();   
// ディスプレイ更新[100ms毎]

    if (CounterB == 0) {
      updateTone();   
// 音の更新[300ms毎]
    }
  }

  updateServo();       
// サーボモータ更新[20ms毎]

  CounterA++;         
// 0→1→2→3→4[20ms毎]
  if (CounterA == 5) {
    CounterA = 0;     
// 0リセット[100ms毎]

    CounterB++;       
// 0→1→2 [100ms毎]
    if (CounterB == 3) {
      CounterB = 0;   
// 0リセット[300ms毎]
    }
  }

  delay(20);   
// 毎秒50回ループ[20ms毎]
}


サーボ移動量の緩和
 上記でコントローラー操作を100ms毎にしか読み出さないのに、サーボモーター位置を20ms毎に更新するのは動きを滑らかにするためですが、
そのために足首は1/5ずつ、腰は(反動で倒れやすいので)1°ずつに毎回の更新量を制限するテクニックです。


diffLF = (targetLF - currentLF)/5; 
// 左足首の移動量/5
diffRF = (targetRF - currentRF)/5; 
// 右足首の移動量/5

currentLF += diffLF;           
// 左足首サーボモータ角度
currentRF += diffRF;           
// 右足首サーボモータ角度

servoLF.write(currentLF);     
// 左足首サーボモータ更新
servoRF.write(currentRF);     
// 右足首サーボモータ更新

if (currentBD < targetBD) {
  currentBD++;                 
// 腰サーボモータ+1°
else if (currentBD > targetBD) {
  currentBD--;                 
// 腰サーボモータ-1°
}
servoBD.write(currentBD);     
// 腰サーボモータ更新



 授業の最後に、二足歩行ロボット4体で“競歩”に向けたプログラム改良に挑戦しました。
サーボモーター3個独立制御の手動操縦プログラムでも良し、
ボタン一発シーケンス制御の自動操縦プログラムでも良し、
規定の区間(約50cm)を歩き抜くタイムを計測します。


手動操縦では、焦ったり進路の修正手順で混乱したりで、無駄な時間が多くなり、1分近くかかりました。
自動操縦では、その点の失敗がなく一定速で歩き通し、40秒前後の安定したタイムを記録しますが、デフォルトのプログラムのままでは、どんぐりの背比べです。

そこで、毎回のサーボ移動量を増やして機敏に動かしたり、腰を傾ける角度を狭めて左右の足を踏み替える時間を短縮したりするアイデアが出ました。
最速では、30秒を少し切るまでになりました。

 この二足歩行ロボットは、3個と少ないサーボモーターで多様な歩行動作ができるだけでなく、上体を左右に振り、片足を浮かせて両足首を曲げられるので、シーケンス制御のセンス次第では、ダンスのような動きも見せられるでしょう。
胸のディスプレイ演奏力も武器にして、ロビに勝るエンターテイメントロボに仕上げてみてはどうでしょうか。

 春タームでは、赤外線を使ったサッカーロボを通じて、ロボカップジュニアの基礎となる技術を習得します。


*1 目玉に見せかけた超音波センサーが付いていますが、計測した距離に応じてメーター表示や鼓動音を変えているだけであり、歩行制御には関与していません。


2. 今月の課題


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

 <プライマリーコース>
  - オリジナル図面プリント

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

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

 <アドバンスプログラミングコース>
  - オリジナル課題プリント(見取図+設問)
  - 上記授業内容を精読する

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


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


◆小倉北4/1AMは5F企画ルーム1・2に分かれます。
◆東福間アドプロ時間を4月~変更(10:30→17:30)させて頂きます。
◆東福間5/19セミナーの為、時間変更(13:30→9:30)をお願いする予定です。
◆八幡東5/19セミナーの為、時間変更(13:30→15:30)をお願いする予定です。

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

[東福間]第1・3土原則
 (2018年4月~)
   - 13:30~ ベーシック/プライマリ
   - 15:30~ ミドル
   - 17:30~ アドプロ※

 ⇒ 4/7, 21,  5/5, 19※,  6/2, 16

 ※アドプロ時間を4月~変更(10:30→17:30)させて頂きます。
 ※5/19セミナーの為、時間変更(13:30→9:30)をお願いする予定です。


[東福間プロ]第2・4日原則
   - 15:30~ プロ3年目

 ⇒ 4/8, 22,  5/13, 27,  6/10, 24


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

 ⇒4/14 第1回 3F会議室2
  4/28 第2回 2F会議室1
  5/12※, 26,  6/9, 23※

 ※5/12, 6/23はハーモニーホール利用不可の為、代替施設(未定)で開催します。


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

 ⇒4/ 1 第1回 5F小セミ(AMのみ5F企画1・2)
  4/15 第2回 5F小セミ
  5/6, 20,  6/3, 17※

 ※6/17はムーブ利用不可の為、『商工貿易会館(シティプラザ)』で開催します。


――――――――――【菅本教室長】――――――――――

[とばた]第2・4土原則<ウェルとばた8F>
   - 13:00~ 全コース(プロを除く)

 ⇒ 4/14, 28,  5/12, 26,  6/9, 23


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

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

 ⇒ 4/7, 21,  5/5, 19※,  6/2, 16

 ※5/19セミナーの為、時間変更(13:30→15:30)をお願いする予定です。


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

 ⇒ 4/8, 22,  5/13, 27,  6/10, 24


4. お知らせ

1) KIGSセミナー聴講のお薦め

 ロボット教室で力学のセンスを学んでいる高学年~中学生の皆さんにお薦めします。
 (当日の東福間・八幡東教室の授業時間を一部変更させて頂きます)


 【科学の歴史(1) ~力学はどのようにして創られたか】
  力学(りきがく)とは、物体にはたらく力や、物体の運動を対象とする科学のことです。
 その歴史は古く、17世紀のガリレオやニュートンによって基本的な法則や原理が発見され、続く18世紀のオイラーなどの手で、現在のような形にまとめられました。
 このような発展の流れを、わかりやすく解説します。

  時 間 5/19(土) 13:00~15:00
  会 場 北九州イノベーションギャラリー内 プレゼンテーションスタジオ
  参加料 無料
  講 師 有賀 暢迪(ありが のぶみち)氏 国立科学博物館 研究員 博士
  申込み https://www.kigs.jp/event/2018/03/288.php


 【科学の歴史(2) ~明治日本、西洋の科学と出会う】
  時 間 12/1(土) 13:00~15:00(予定)


2) KIGSワークショップ出展しました

 3/25(日) KIGS春のわくわくワークショップまつりに、コマ回し挑戦ブース『モーターで回せ!最強持久コマ!』を出展しました。


 全てロボット教室のパーツを使い、コマの軸にシャフト8~12ポチ、円盤に各種タイヤやギアから自由に組み合わせてもらい、こちらで用意したベーシックコースのマシン『ベイスピナー』改で加速して、回転時間を競いました。

 AM 50名、PM 70名、延べ120名のお子さんが訪れ、30秒以下の記録も多い中、1分を超えたのが20名程でした。
 なかでも2分を超え、136秒を記録したのがトップ、以下、91秒、86秒、71秒と続くダントツぶりでした。
 何名かの生徒さんも訪れ、ロボット教室の宣伝にならない記録を残してくれました!(笑)

 いやー、コマ回しは単純で不思議で奥深くて面白いですね!
 以前、佐藤や一部の生徒さんは、マシンの改良にハマって3分以上回したことがありますよ。
 5月のベーシックコースに登場しますので、お楽しみに!
(5月ミドル進級予定であった方には後日、再履修をご提案します)


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

  ◆プライマリ【11名平均 図面3.9】
   5点…渡邉[中間1], 板脇[小倉北 年長], 柴田[小倉北2], 林田[小倉南 年長]

  ◆ベーシック【15名平均 図面2.8+設問2.3=5.1】
   10点…なし
   9点…森崎[八幡東2]
   8点…なし

  ◆ミドル【25名平均 図面3.1+設問2.3=5.4】
   10点…なし
   9点…田中[東福間5], 桑村[中間3]
   8点…山本[中間5], 原[小倉南4]


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

2018年2月28日水曜日

2018年2月報

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


1. 2月授業内容


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


 割愛します。


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





 割愛します。






















1.2 <ベーシックコース『クルリン』>



 でんぐり返りロボットです。モーターで回す長い腕(うで)が地面を突(つ)くからでんぐり返るんです。
単純ですし見ていて当たり前、何が面白いんだ!?と言うとそれで終わります。

しかし、座って静止させた状態からこのロボットの動きを予測するのは難しく、先生も最初は分かりませんでした。


 事実、腕を後ろ向きに回すと前転し、前向きに回すと後転するという、予想外な動きを見せます。
実際は、前転はできますが、(人に似せて)前方向にしか曲がらない脚(あし)のせいで後転はできません

後転時は、重力などで脚がまっすぐなままになり腕の回転半径をはみ出るのででんぐり返るまでは至(いた)らず、ちょうど脚をピンと伸ばした腕立て伏(ふ)せか、バタフライのような状態に陥(おちい)ります(*1*2)。

 長い腕の先を地面に突かせて重い本体を起こすには、回転軸(じく)に強大な力(トルク)が必要です(*3)。
おなじみの1/9減速ギア機構がモーターからの回転を遅(おそ)くしてトルクを9倍に上げています。
しかし、何かの拍子に本体や持ち手に引っ掛かると(イタタタ…)、腕が長い分、てこの原理で強大な逆向きの力が回転軸を止めようとします。
それでギヤに負担(ふたん)が掛かって、ガリガリ音とともに噛合(かみあわ)せが外れ、修理することもしばしば。


 また、でんぐり返り時の衝撃(しょうげき)が激しいので、頭が割(わ)れたり、電池が外れたりしないよう、次のような強化緩衝策(かんしょうさく)を立てておくことも、頑丈(がんじょう)に作る秘訣(ひけつ)でした。
1) 頭部をロッドとペグでつなぎ留める(フランケンシュタイン?)
2) 頭部に輪ゴムを巻く(ミイラ?)
3) 電池ボックスに輪ゴムを巻く
4) 顔面や後頭部に、タイヤやグロメット(ゴムリング)を取り付ける


 それにしても、今回のロボットは元気いっぱいというか、バッタンバッタンと動きが激しく、音も騒がしいロボットでした。顔面が外れちゃうね!


*1 腕を回しながら、額(ひたい)を床に打ち付けつつ、「申し訳ございません、申し訳ございません」のポーズにも見えましたね。

*2 前転でも後転でも、でんぐり返る条件は[腕の長さ脚の長さ]です。だから、腕を長くするか、脚をもげば(怖い…)後転もするようになりましたね。

*3 長い傘の先っぽで地面に絵を描く時は、短い小枝を使う時よりも、持ち手にかなりの回転力が必要でしょ?


1.3 <ミドルコース『サカアガリン』>



 逆上がりする鉄棒ロボットです。
先月に続き、今月も当時小学2年生のアイデアコンテスト出品作がベースです。(恐るべし2年生…)

 さて、このロボットが逆上がりに成功するまでに、設計上の工夫製作の手順がいろいろありました。
人間の逆上がりとは少し違います。製作を通して、皆さんはいくつ気付けたでしょうか?


1) 周期的に腕と脚(ももの部分)を曲げたり伸ばしたりする機構
 同期した腕と脚の動きは、ずれることなく繰り返されます。
1周期毎に、噛み合わせた脇腹のギアM(腕用)とギアL(脚用)が半回転しては戻るためです。
この周期を決めているのが、腰のロッド3アナ(=ギアM3枚)の回転で、これをクランクにして、脇腹のギアLを往復回転させています。


2) 強靭(きょうじん)な腕力と脚力
 てこの原理により、つま先に重たい電池ボックスを付けて脚を曲げるには、強大な力が必要です。
そんな脚も含めて、掛かる重力に打ち勝ち、体全体を持ち上げる腕力は、もっと強力でなければなりません。
その力が、腰のロッド3アナ(=ギアM3枚)の回転力(トルク)です。


3) 1/27減速ギアトレーン
 前記で必要なトルクを生むために、1/3減速(ピニオンギアギアM)を3段連ね、モーターの回転数を1/3×1/3×1/3=1/27に落とし、トルクを27倍に増強しています。
最終段でピニオンギアギアM3組並べているのは、伝達トルクを分散させて、ギアの歯を保護するためでしょう。


4) つま先の電池ボックス
 皆さん、足に鉄アレーをくくり付けて逆上がりしますか?
足先が重たそうで、やろうとも思いませんよね。
こんなところに電池ボックスを付けたのは、他に置き場所が無かったからでしょうか?
 そうではありませんね。ちゃんと意図があるはずです。
確かに、脚を持ち上げる時は、かなりのパワーを要するようになりますが、一旦、つま先が頭上の鉄棒より後ろ側に越えると、今度は重力が回転の味方をしてくれるのです。
このとき、脚は十分に曲げた状態ですから、それなりに重たい頭(モーター)と胴体は未だ鉄棒を越えていませんが、先に越えたつま先の電池ボックスが体全体を後ろ側へ引いてくれるのです(*1)。


5) ラチェット付き鉄棒
 いくら強力な腕力があっても、鉄棒をゆるく握っていては体を回転させることができず、懸垂(けんすい)運動がせいぜいです。
手先が滑らないよう鉄棒をしっかり握り、鉄棒(シャフト)自体も回転しないようにしっかり固定することで腕を曲げる力が体を逆上がりさせます
 但し、このままでは、逆さになった後は体を元にゆっくり下ろすことになり、気味が悪いばかりか(*2)、せっかくの重力の支援を無駄にして逆上がりを中断してしまいます。
そこで、逆上がりする方向へはシャフトが自由に回転するようにラチェット機構を鉄棒に付けたのです。
このお陰で、勢いよく体を振り下ろして、次回の逆上がりを開始するのに必要な位置まで進めることができるようにもなりました。
土台に設置した補助板も、逆上がりを成功させるのに必要な開始位置を維持する目的です。
本体の調整次第では、不要になるでしょう(*3)。

 どうでしょうか。練り込まれた設計思想を感じますね。
オリジナルの2年生作品がどの程度の完成度だったのか、少し気になります…。


*1 胴体とつま先が同程度に重たいとしても、てこの原理により、回転軸(鉄棒)から遠い位置の重量物(に掛かる重力)の方がより効きます。

*2 超人的な腕力の体操選手やポールダンサーにも、違和感というか、一種の気味悪さを覚えますが、そんな感じです。

*3 家庭で研究し、腰のペグSの位置(脚を曲げる角度)を変えて補助板を不要にした中間教室のY君もいました。


1.4 <アドバンスプログラミングコース『ピッキングロボ(1)』>



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







1.5 <プロ3年目コース『二足歩行ロボット(2)』>


 2ヶ月目で、両目+舞踏仮面(超音波センサー+カバー)と両腕を取り付けて、外観が完成しました。あとは“ハート”です。


Pepperくんモドキに、胸にディスプレイ(8×8マトリクスLED)があります。
左胸だから(ニクい設計!?)、ドキドキハートのアニメーションを表示させようという魂胆です。
1年目から幾度も使ってきた <Sprite.h>, <Matrix.h> 両ライブラリを読み込んで(*1)、
大中小3パターンのハートマークを順次書き換えるプログラムで簡単に実現しました(*2)。

ハートマークの変化に合わせて、スピーカーから高中低3音を鳴らし分ければ、それはもう心臓の鼓動。愛想が生まれます。
見た目と相まって、私達の目に擬人化されて映るのに十分過ぎる表現力です。

役に立たない?
いえいえ、人間と共生し、楽しませる人型ロボットには大切な要素です(*3)。

 このロボットの両目は超音波センサーですから、外界を少し“見る”能力があります。
目の前にかざした手(反射体)までの距離をプログラム [BiRobot4/USSTest0] で計測し、PC画面でシリアルモニタリングしてみました。

すると、200cm以上遠くまで計測できるスペックなのに、手を退(の)けても50cm前後で数値が揺らいでいます。
(50cm先に見えない“何か”が存在する?!)

 原因は、8×8マトリクスLED表示に伴う電気ノイズにありました。
この表示デバイスは64個のLEDを1ドットずつ書き換えられる(ように見える)のに、
1) 裏面には8+8=16本のピンしか生えてなく、
2) 現在の表示パターンを保持しておくメモリや駆動回路も無い受動デバイスですから、
ダイナミック点灯方式で外部から“動的に”駆動してやらなければなりません。


つまり、8+8本のピンは、X座標Y座標の指定ピンとして機能し、
X座標用のどれか1ピンに電源(+)、
Y座標用のどれか1ピンにGND(-)を繋いだ時、
その交点のLEDドットだけが点灯するという、単にそれだけの表示器なのです。

ある瞬間には、ある座標のLEDがせいぜい1個だけ点灯(画像データによってはそれも消灯)している状態を、全64個のLEDについて高速に切り替えてやる必要があります。
即ち、全てのLEDドットはこの周期で点滅しているのですが、30~40Hz以上の点滅は連続点灯しているように見えるという残像効果を狙った使い方で設計されています。

 このダイナミック点灯方式は、駆動回路(またはプログラム)として面倒なことには違いありません。
当然、64個のLEDに個別のスイッチを配線して“静的に”画像を保持できる(分かり易い)スタティック点灯方式もありますが、
これでは高々8×8ドット画像のために少なくとも65本(1本は共通GND等)のピンが必要になり、マイコンのピンが幾らあっても足りなくなります。
それを16本に削減することで、普通のマイコンで(安く)済むという大事な恩恵が得られるのです。

 但し、超音波センサーやスピーカー等、他にも接続したいデバイスが多数ある28~40ピンのマイコンにとって、このLEDに16本も消費されるのは依然として勿体無く、拡張性も乏しくなります。

そこで、マイコンボードマトリクスLEDの間に挟まっている「マトリクスLEDシールド」というボードが一役買います。
このシールドボードには、パターンメモリや駆動回路が組み込まれたドライバーチップが搭載され、LEDのダイナミック点灯を代行してくれます。

マイコンは、オブジェクト初期化宣言 Matrix my_mat = Matrix(11, 13, 1); のように、僅か3ピンを使って、シリアル通信方式でこのドライバーに更新データを送り付けるだけで済むのです(*4)。

 このように、ダイナミック点灯は多数のLEDから成る表示デバイスに欠かせない方式ですが(*5)、
電気回路には、電流が急変すると、それが電気ノイズとして他の配線に回り込んだり、電磁ノイズとして空間に飛び出したりする宿命(アンテナの原理)があります。

激しくLEDのON/OFFを切り替えるダイナミック点灯方式では、このようなスイッチングノイズが他のデバイスの信号レベルを乱し、誤動作させる場合があります。

これが原因で、超音波センサーからのEcho(反響検知)信号が50cmの障害物と同じタイミングで乱れて誤判定されていたのですね。


 この問題は、
1) NewPing::ping_cm() 関数で超音波計測する“”に、
2) Matrix::clear() 関数でLEDを“全消し”しておくことでスイッチング電流を控え、
3) “計測後”に Matrix::write() 関数でドキドキハートや距離バーメーターを表示することで、
同時使用が可能になって解決しました。

それでも、LED表示が一瞬消えるようには見えませんでしたね。
即ち、ソフトウェア的にもダイナミック点灯(人間の残像効果)を利用したことになります。

 他にも、シリアルモニタ通信 vs. マトリクスLED1番ピン)や、超音波センサー vs. スピーカータイマー2)等、
複数のデバイス同士で、使用するマイコンのピンタイマー機能競合に纏(まつ)わる問題が発生し、それを解決していく疑似体験をしました。

 このように、ロボットや電子機器(頭脳としてマイコン)に様々なデバイスを統合する際には、限られたリソース(処理速度や機能数)を問題が起こらないように分け合い、有効活用する“知恵”が求められます。
それは、面倒なことですが、実利性のある製品を作るために必須の営みです。

 最終月で、いよいよ二足歩行ロボットの頭脳をプログラミングして参りましょう。


*1 #include <xxx.h> は、本来(ベースのC/C++言語環境で)は、
「ライブラリ格納フォルダから"xxx.h"という名のヘッダファイル(ライブラリ本体ではなく、定数やクラス・関数プロトタイプ宣言等の定義情報の寄せ集め)を探して読み込み、一緒にコンパイル(翻訳)せよ」
という指示であり、ライブラリ本体プログラム"xxx.cpp"との結合(リンク)は別物なのですが、使い易く実装されたArduino環境がこれらの作業を代行してくれます。

*2 if/else構文の代わりに、多分岐構造に適した switch/case構文を使いました。

*3 そもそも人型ロボットにするところから、擬人化で人の感情を揺さぶる要請があります。
 高橋智隆先生が創る“役に立たない”ロボットもここを重視しています。

*4 実際は、11番ピンがクロック信号、1番ピンがチップセレクト(デバイス選択)信号のようですので、13番ピンだけを使って画像データやアドレス(座標)情報を送っています。
 SPI(Serial Peripheral Interface)通信と呼ばれる方式です。

*5 光るデジタル時計などもそうです。安いものでは、表示が少しチラついているように見えたことがありませんか?
 ダイナミック点灯方式で点滅しているからです。


2. 今月の課題


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

 <プライマリーコース>
  - オリジナル図面プリント

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

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

 <アドバンスプログラミングコース>
  - 上記授業内容を精読する

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


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


◆小倉南3/25は中野イベント出張の為、新下関教室 百合野先生に授業頂きます。

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

[東福間]第1・3土原則
 (2017年12月~)
   - 10:30~ アドプロ
   - 13:30~ ベーシック/プライマリ
   - 15:30~ ミドル

 (2018年4月~予定)
   - 13:30~ ベーシック/プライマリ
   - 15:30~ ミドル
   - 17:30~ アドプロ

 ⇒ 3/3, 17,  4/7, 21,  5/5, 19


[東福間プロ]第2・4日原則
   - 15:30~ プロ3年目

 ⇒ 3/11, 25,  4/8, 22,  5/13, 27


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

 ⇒3/10 第1回 3F会議室2
  3/24 第2回 3F会議室2
  4/14, 28,  5/12, 26


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

 ⇒3/ 4 第1回 5F小セミ
  3/18 第2回 5F小セミ
  4/1, 15,  5/6, 20


――――――――――【菅本教室長】――――――――――

[とばた]第2・4土原則<ウェルとばた8F>
   - 13:00~ 全コース(プロを除く)

 ⇒ 3/10, 24,  4/14, 28,  5/12, 26


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

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

 ⇒ 3/3, 17,  4/7, 21,  5/5, 19


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

 ⇒ 3/11, 25※,  4/8, 22,  5/13, 27

 ※小倉南3/25は中野イベント出張の為、新下関教室 百合野先生に授業頂きます。


4. お知らせ

1) 小倉北ロボティクス・プロフェッサー(ロボプロ)コース開講

 アドプロ1年以上履修生・外部生を対象に、小倉北教室で今秋9月~開講予定で進めます。
 対象の方へ後日(3月中)ご案内差し上げます。


2) 新商品のご紹介[再掲] - 希望者は教室長まで
  http://robocobo.sakura.ne.jp/blog/robot_shinshohin_chirasi_201801.pdf

 【ブロック外し】
  数量限定につき、景品交換(宿題30ポイント/当面の販売なし)の対象とします。

 【アドプロ専用タブレットケース】
  1,080円で販売中です。4月以降進級の方のキットには付属(値上がり)しています。


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

  ◆プライマリ【10名平均 図面3.9】
   5点…牛嶋[中間2], 長友[八幡東 年長], 柴田[小倉北2]

  ◆ベーシック【16名平均 図面2.5+設問3.1=5.6】
   10点…森崎[八幡東2]
   9点…荻山[小倉南3]
   8点…宮尾[八幡東4], 出口[小倉南4], 波多[小倉南4]

  ◆ミドル【27名平均 図面3.2+設問2.1=5.3】
   10点…なし
   9点…辻[小倉南6], 橋本[小倉南3], 原[小倉南4]
   8点…谷川[八幡東4], 今橋[小倉南4], 吉良[小倉南6]

  ◆アドバンスプログラミング【3名平均 図面2.7+設問3.0=5.7】
  最高8点(20点満点)


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