ミニビーストを卓上ペットにする
学研の「大人の科学(#30)」のミニビーストを段階的に訓練(改造)して、最終的に指先の動きや音声に従う卓上ペットにしてみましょう。
オリジナルのビーストを創ったテオ・ヤンセンは、自身のサイトやインタビューで、彼らがいつか野生の中で自立することを夢見ている、と述べています。でもここでは彼の夢に反して、ビーストを私たちの命令に従う卓上ペットにしてしまいます。
あなたがビーストの主人で、ビーストにいろいろ指示を与えて操ります。指示に使う道具は安価でシンプルなものです。最終段階までは、団扇、スイッチ、マイクロコントローラ、赤外線リモコンといった道具を使います。しかし最終段階では、あなたの指先のサインだけでビーストを操ります。
あなたの指先を見つめるビーストを上手に操るのはちょっと練習が必要です。でも相互のコミュニケーションがとれるようになると、そのもどかしさが逆にかわいらしさに繋がると思います。
【動画1:紹介動画(簡易版:ノーカット版はこちら)】
まず、ミニビーストを下記の5段階で訓練します。これらのステージの概要は、上の紹介動画でを簡単に見ることができます。また、これらのステージで使う材料は最後のステップ11にまとめています。
- 素のミニビースト(ベビービースト)を「団扇」で歩かせる
- ミニビーストに電池とモータをつけて「スイッチON」で走らせる
- ミニビーストに「安価なマイクロコントローラ」をつけて踊らせる
- ミニビーストを「赤外線リモコン」で自在に操る
- ミニビーストに原始的な眼を与えて「指先のサイン」で自然に操る
この記事の当初の目標は上記5番目の操作の実現です。その後、発展的な話として新たに3つのステージを紹介します。
最初の追加ステージでは、卓上ペットになったミニビーストが笑顔で挨拶した後、何かねだります。2番目の追加ステージでは、聴力を持ったミニビーストがあなたの指示に耳をすまします(*)。そして最後の追加ステージでは、全く別方向に進化したミニビーストが、あなたの意向とかかわりなく屋外で歩いたり止まったりします。
(*)コンテスト投票のご厚意に応え、ステップ9に3番目のサンプル・スケッチを追加しました。
(**)The English translation was published in Instructables also.
:
テオ・ヤンセンとミニビースト
オランダの芸術家テオ・ヤンセンは、Delft工科大学で物理学を学んだ後、同国の海浜近くに工房を構え、「ストランド・ビースト」と名付けた一連の巨大作品を作り続けています。これらのビーストはいずれも黄色のプラスチック・パイプの骨格を持ち、屋外で風を受けて動きます。
2011年に発売された学研の「大人の科学(第30巻)」は彼の特集号であり、「テオ・ヤンセンのミニビースト」という小型のキットが付録に付いています。この特集号は在庫切れの時期もありましたが、2017年の現在は書店で購入可能です。またこのキットは、テオ・ヤンセンのサイトでも「mini STRANDBEEST」の名で販売されており、海外でも購入可能です。
この学研の特集号は、テオ・ヤンセンという作家と彼の作品群をいろいろな角度から解説しており、大変興味深い内容です。その中のインタビューで、彼は自分が作ったビーストたちが自然の中で自由に動き回るのが夢だと述べています。しかし学研のミニビーストを前にすると、むしろ逆方向の構想を持つ人が多いのではないでしょうか。
そこでここでは、テオ・ヤンセンの夢とは逆にミニビーストをペット化して、我々の指示で卓上を動き回るよう段階的に改造します。ただ、テオ・ヤンセンに敬意を評し、ロボットとしてではなくプラスチックの骨格を持つ生き物として扱うことにします。
:
ミニビースト(うちわで動かす)
学研の「テオ・ヤンセンのミニビースト」を入手して、同封の説明書にそってキットを組み立てます。ここではまず、ノーマルな手順で作ったミニビーストを2つの方法で歩かせて、その仕組みを体感します。
- 指で直接つまんで歩かせる
- 付属の棒を繋いで歩かせる
次に付属の風車を取り付けて、風を送って歩かせます。息を吹きかけたり、団扇で煽いだりして風車を回すと、ミニビーストはゆっくり前進します。ただ、1m歩かせるだけでも結構大変だと思います。
【動画2: 説明書を見てミニビーストを歩かせる】
:
疾走ビースト(電池で動かす)
ミニビーストを団扇で煽いで歩かせるのは結構大変です。小さなモータと電池を使えば、人力を使わずミニビーストを走らせることができます。ここでは今後の発展を考え、2個のモータと「ダブル・ギアボックス」を素のミニビーストに取り付けます。
【動画3: 電池とモータでミニビーストを走らせる】
まず風車を取り外します。次にミニビーストの中央連結を外して左右2つのブロックに分割します。ギアボックスはこの2つのブロックの間に取り付けるので、キットに同梱されている連結用の2本の金属棒では長さが足りません。このため、もっと長い金属棒を3本用意します。
3本の内の2本は、分割前と同じ箇所(下側の2軸)を通します。残りの1本は風車の取り付けに使った頂上の軸を通します。これにより、ビーストの剛性が補強されます。
これらの金属棒は、ギアボックスの取り付け部分ではむき出しになるので、この部分をカバーするプラスチックのパイプを3本用意します。ビーストのブロック連結は最終的に頂上部に輪ゴムを張って固定するのですが、頂上の軸を通る金属棒をパイプでカバーしないと、輪ゴムの張力でビーストの躯体がかなりたわみます。このたわみを防ぐには、丁度良い長さのパイプでこの部分を完全にカバーする必要があります。
続いて、ギアボックスのシャフト(細い)をビーストの中央連結部(太い)に取り付ける方法を考えます。ただし、ビーストの躯体に傷や汚れを付けたくありません。このため両者を無理なく繋ぎつつ、ギアボックスのシャフトの回転をビーストに無駄なく伝えることができるアダプタを用意します。
こうしたアダプタの作例は上の写真で確認できます。この写真のアダプタを作るには、まず直径の異なる2本のプラスチックパイプを適当な長さに切って入れ子状にします。そして、シャフトおよび内側のパイプにセロハンテープを適量巻きつけて隙間を完全に埋めて、シャフトの回転力が無駄なく外側のパイプに伝わるようにします。
このアダプタを2つ用意できたら、これ等をギアボックスのシャフトに取り付けてビーストの中央連結部分に繋ぎます。そしてビーストの下側の2本の金属棒の上にギアボックスを乗せて輪ゴムで固定します。なお、ここではギアボックスの減速比は114.7:1にしました。あとはギアボックスの2つのモータに3V程度の電池をつなげばビーストは疾走し、我々は団扇を手放すことができます。
:
ダンシング・ビースト(Arduinoで動かす)
前のステップではミニビーストにギアボックスを取り付けて、電動モータで走らせました。ここでは、この電動ビーストに頭脳を与えてちょっと複雑なステップを踏ませます。
使用するのは定番のArduinoの小型モデルNANOの同等品です。私はネットショップで400円弱で買いましたが、USB接続が正規品と異なるので対応ドライバの導入が必要でした。ただ、難しい作業ではないですし、webに解説記事や投稿がたくさんあるので心配いらないと思います。
これに加えて、Arduino用の9V電池と2つのモータを同時に制御できるモータードライバーIC(L298N)を用意します。なお前ステップで使ったモータ駆動用の電池(※)はここでも引き続き使います。
(※)ここでは小さな充電式のリポ電池(1セル:3.7V)を使いました。最終ステージでは、このリポ電池が3つのLEDにも電力を供給します。
【動画4:Arduinoでミニビーストを踊らせる】
ダンス用のサンプル・スケッチは下の添付ファイルを参照してください。また配線は、上のピン接続図とサンプル・スケッチのコメント部分を参照してください。
:
Downloads
ビーストの運動会(リモコンで動かす)
一つ前のステップでは、モータ駆動のビーストにArduino NANO(マイクロコントローラ)を付けました。これにより、ビーストは様々なステップを踏むことができます。しかし、このダンスは事前にプログラムされたものであり、途中でステップを変更することはできません。
【動画5a:赤外線リモコンを使ったミニビーストの訓練】
ビーストの主人としては、リアルタイムでビーストに様々なステップを踏ませたいところです。自宅にある赤外線(IR)リモコンを使えば、ビーストにリアルタイムで指示することが可能です。ただ、自宅のテレビやエアコンも同時に動いてしまっては困ります。幸い、受信機付きの小さなリモコンがウェブショップで安価に販売されています(私が買った時は1セット140円でした)。
【動画5b:ミニビーストの運動会】
上の動画はミニビーストの卓上運動会です。ただ、赤外線リモコン(*)の信号分析は長い説明が必要ですし、次のステップからはリモコンを使用しません。なのでこの話はここまでとして、サンプル・スケッチは付けずに次に進むことにします。
(*)モータが回転すると、その電気的なノイズが赤外線リモコンの受信機に悪影響を与えます。このノイズを抑えるため、モータに0.1uFのコンデンサを取り付けます(上記の右下の図を参照してください)。
:
ペット・ビースト(指のサインで動かす:1)
一つ前のステップでは、赤外線リモコンを使ってビーストにリアルタイムでステップの指示を送りました。しかし、よく訓練されたビーストなら、こうした特殊な道具を使わなくてもご主人の指示に従うかもしれません。そこで基本訓練(あえて改造とは言わず、)の最終段階として、ここでは指先の動きだけでビーストを操ることにします。
指先の動きと言っても、ビーストに直接触れるわけではありません。いわばハンド・シグナルでビーストに指示を伝えます。このため、ビーストに簡単な眼を3つ与えて、あなたの指先の動きを感知できるようにします。
ここでは、この簡単な目としてフォトトランジスタを使います。フォトトランジスタは明るさの変化によって出力電圧が変わります。このため、フォトトランジスタの前で指先を動かすと、その動きを「それなりに」感知できます。
【動画6a:一眼のビーストと三眼のビースト】
ビーストを指示するための動作は全部で4つです。
- 眼から少し離れた所で指を振る:ビーストは前方に歩みます
- 指または手のひらを眼の前に近付ける:ビーストは後退します
- 指または手のひらを眼から遠ざける:ビーストはBEESTは動きを止めそのまま停止します
- 指または手のひらを2回続けて眼の前に近付ける:同上
【動画6b:指先の動きで三眼のビーストを操る練習】
前進、後退、停止の3動作なら、論理的には3つのサインで十分です。しかし実際にビーストを操る場合、指を動かさなくても各眼の周囲の明るさが変化することがあります。例えば昼間にビーストを操る場合、ビーストが窓の方に向きを変えると、眼に入る光が増加します。ビーストは、この光の変化をあなたの指の動きと勘違いするかもしれません。 上記の最後(第4)の動作は、この勘違いが起きた時に、ビーストの動きを止めてこの勘違いを取り消す時に使います。
なお、この緊急停止と指示の取り消しは、ビーストが勘違いしてない時でも実行できます。逆に、何らかの理由でビーストの眼の前の明るさが急に変化すると、意図しない緊急停止が自動的に実行されることもあります。この緊急停止と明るさの変化の関係については、次のステップの右下の図(の下側)を参照してください。このグラフは、ビーストを適当に回転させながら、意図的な緊急停止と指示の取り消しを3回実行した時のものです。
:
ペット・ビースト(指のサインで動かす:2)
前ステップでビーストに付けた眼はとても簡単なものです。そこであなたの指の動きがもっと良く分かるように、3つの眼の横にそれぞれLEDを付けます。このLEDは、暗がりを歩く時に頭に付けるヘッドランプみたいなものです。ただ見た目があまり派手にならないよう、ここでは赤外線LEDを使用します(赤外線は人間には見えません)。
これで三眼のビーストを指のサインだけで操る準備ができました。それで実際にビーストを卓上で操ってみると、なかなか思い通りに動いてくれなかったりします。その主な原因は、前のステップで説明した緊急停止と指示の取り消しが自動的に(勝手に)行われるためです(*1)。
この問題に対処するには、ビーストがあなたの指の動きを理解するだけでなく、あなたがビーストの理解の状態を知ることが重要になります。いわゆるインタラクティブな(相互の)やりとりです。
このインタラクティブな情報交換のため、今度は可視光のLEDをビーストに与えます。ビーストが緊急停止して指示を取り消す時に、それをLEDの発光で我々に知らせてくれれば、我々はこの知らせを基に次の指示を与えることができます。
この双方向のやりとりで、ビーストの操作が一気に楽になるはずです。それでも、時に言うことを聞いてくれなかったりしますが、その適度なもどかしさが予想外の可愛らしさに繋がったりもします。
【動画7:指先のサインでビーストをインタラクティブに操る】
ミニビーストをインタラクティブな卓上ペットにするためのサンプル・スケッチを下に添付します。必要な部品はステップ11を参照してください。 なお、ビーストを操るには、最初にビーストにいろいろ伝える必要があります。その方法は【動画6b】と【動画7】で紹介しています。これらの動画を良く見て一連の開始手続きを覚えれば、卓上ペットとなったビーストと楽しく遊ぶことができるでしょう(*2)。
(*1)晴れた日の窓際や照明の下では、これらの光源が赤外線LEDを圧倒してしまい、ビーストが誤作動する可能性があります。具体的には、意図しない緊急停止と指示の取り消しが頻繁に行われ、あなたの意図を伝えるのが難しくなります。
(*2) 上の写真群の右下に折れ線グラフを2つ載せた図があります。この2つのグラフは、下のサンプル・スケッチにある3つの変数(R [0]、C [0]、L [0])の時系列を示しています。これらのグラフは、このサンプル・スケッチを理解したり、ビーストを上手く操るのに役立つはずです。
:
Downloads
番外(1)おしゃべりビースト
前のステップでは、ビーストにヘッドランプ代わりの赤外線LEDを付けて、さらにインタラクティブなコミュニケーション用の可視光LEDも与えました。後者のLEDは、ビーストを操るための情報を我々に良く伝えてくれます。
またこのLEDの代わりに、小型のOLEDモニタを使うこともできます。これらのOLEDモニタはネットショップで安価に入手できます(私が購入したものは460円でした)。そこで、こうしたOLEDモニタにビーストの顔を描いて、挨拶されたり散歩をねだられたりすると、ご主人であるあなたはちょっと良い気分になるかもしれません。しかし、この微笑ましいおねだりはビーストの訓練にはほとんど貢献しません。
【動画8:挨拶して散歩をねだるビースト】
一方、この小型OLEDモニタを使うと、ビーストの周りの明るさやその変化といった重要な情報を複数同時に表示できます。これらの情報をリアルタイムで見ることで、我々はビーストをもっと上手に操れるかもしれません。その様子は、上の動画の1:10-で確認できます。
特にその有難味を実感できるのは、他の光源が赤外線LEDを圧倒するような明るい場所です。前ステップの「*」で述べたように、こうした明るい場所でビーストを操るのは簡単ではありません。こうした場所では、むしろヘッドランプ代わりの赤外線LEDを使わず(OFFにして)、指先が作る影を使ってビーストに指示を伝えた方が効果的です。
ただ、ビーストの目であるフォトトランジスタの感度幅はそれほど大きくありません。このためビーストの3つの眼に対して、狙い通りの明るさ(暗さ)を同時に実現するのは結構難しい作業です。これに対し、それぞれの眼に映る明るさやその変化をOLEDモニタに図示すれば、操作は一気に楽になります。その様子は、上の動画の2:30-あたりで確認できます(前ステップのサンプル・スケッチの数行を修正しています)。
:
番外(2)耳を澄ますビースト
これまであなたは、自分のミニビーストに眼と顔を与えました。ここでは耳を与えます。適切な聴力を得たビーストは、あなたの命令に耳を澄ましてそれに従います。
FFT(高速フーリエ変換)を使った音響分析や音声認識のプログラムは恰好いいですが、ビーストを操るには過剰です。拍手、ノック、舌打ち、もしくは単純な発声(タ、タ、タ、等)といった短音の連続で十分間に合います。
ただし、ギアボックスのノイズやモーターの電気的ノイズの対策は必要です。すなわちビーストに良い聴力を与えるには、スケッチ(プログラム)に適切なフィルタを加えなくてはなりません。
【動画9:あなたの命令に耳を澄まして動くミニビースト】
上の動画では、手拍子もしくはテーブル板のノックでビーストに指示を伝えています。舌打ちや短声でも同様に指示を送れますが、行儀悪く聞こえるかもしれないので控えました。
なお上の動画では、ビーストの耳として、前半は音響検出器を使い、後半はアンプ付きマイクを使っています。いずれも安価($1~2)なものですが(*1)、音響検出器の方が、ノイズ対策が少し面倒になると思います(上の写真群の右下の図を参照してください)。
なお、発展ステージ(番外)のサンプル・スケッチは当初付けていませんでしたが、コンテスト投票のご厚意に応え、音響検出器用のサンプル・スケッチを新たに添付しました(*2)。
(*1)耳の部品の参考リンクを下記に貼っておきます。米国のネットショップ(ebayなど)の方が総じて安くて在庫や品揃えも安定した感じです(送料不要のケースも多いです)。
(*2)操作前の設定や練習のない簡易版です。操作の要領は上の動画9を参照してください。なお、サンプル・スケッチのsetupのコメントアウト部分を有効化すれば、連続信号音のリズムがつかめます。
:
Downloads
番外(3)太陽光で動く正常進化ビースト
これまで、ミニビーストを従順な卓上ペットにすべく眼や耳を与えて訓練してきました。でもそれは、テオ・ジャンセンが描く夢とは真逆の気がします。
そこで最後にテオ・ヤンセンの夢に沿った進化として、ステップ3のミニビーストから電池を外し、代わりにソーラー・パネルを与えます。これによりビーストは卓上から屋外に出て、我々の指示に従うことなく気儘に動けるはずです。
【動画10:正常進化したミニビーストが野外に出る】
上の動画を見ると、正常進化したビーストは日差しの下で前に歩き、日陰に入ると停止します。なおここで使用した部品は、上の写真群の左下の画像をクリックすると見ることができます。
:
材料
ステップ2~7で使う部品のリストです。なお、ミニビーストのキットについてはステップ1、番外のステップ8〜10で使用する部品については当該ステップを参照してください。
[ステップ2]
- ミニビーストまたはmini STRANDBEESTのキット
[ステップ3]
- ダブルギアボックス(DCモーター2個入り、ギア比は114.7:1を選択)
- セロハンテープ
- アダプタ用の太いプラスチック・パイプ(内径6-7mm)
- アダプタ用の細いプラスチック・パイプ(内径3-4mm)(*)
- スチール・ロッド(直径2mm、長さ1000mm)
- 小型のブレッドボード
- バッテリー(3-4V、ここでは1セルのリポ・バッテリを使用)
- 輪ゴム(数本)
(*)この細いプラスチック・パイプを太いパイプに挿入してアダプタを作ります。また、この細いパイプは、上記のスチール・ロッドのカバーや最終段階の眼ユニットの取り付けにも使用できます。
[ステップ4]
- Arduino NANO(ここでは安価な代替品を使用:USB接続のドライバの導入が必要)
- モータードライバIC(ここではL298Nを使用)
- 6Pバッテリー(9V)
- ジャンパー線またはピン(数本)
[ステップ5]
[ステップ6-7]
- 赤外線フォトトランジスタ(3個、ここはOP505Aを使用)
- 赤外線LED(3個、ここではSFH4554DWEWを使用)
- 細い竹の棒(7本、直径2mm、長さ100-150mm)
- プラスチック・パイプ(内径3mm)
- 輪ゴム(4本)
【動画11:卓上の散歩と訓練(やや暗い場所と明るい場所)】