これは私の親友、Archimedes(アルキメデス)。私の肩に止まって周囲の人たちの感情を検知するの。そして、光の色と小さなブザーの音で知らせてくれる。Arduinoで制御するパン(横の回転)とチルト(上下運動)のサーボジンバルを搭載してるから、動いたり周囲を見回したりするのも可能。
頭脳
まずは、Google AIY Visonキットの組み立てから。アルキメデスの頭脳とセンサー・システムは、このDIY AI入門キットがベースになってる。ボンネットとRaspberry Pi Zero Wのセット、カメラ、ピエゾブザー、いろいろな色に光るボタンが入っていて、ダンボールの箱を折って作るから、組み立てはすごく楽しい。
Googleの公式ユーザーガイドを見ながら組み立てて、ちゃんと動くかどうかテストする。デフォルトで入ってるJoy Detectorのデモを走らせるといい。コーディングをしなくても使える。もちろん、コードをいじるのは自由。Pythonで書いてある。Joy Detectorは、機械学習によって、人が笑っているか(ボタンが黄色く光る)、困っているか(ボタンが青く光る)を検知できるようになってる。大きく表情が変化したときはブザーも鳴って知らせてくれる。カメラはいろいろな顔を見ると、ジョイ・スコアが加算されていく仕組み。
アドバイス:Raspberry Piとボンネットに物理的な圧力がかからないよう、プラスティックのスタンドオフで固定すること。私のは、あとでキットを取り外したときに割れてしまったので、予備のスタンドオフを持っておくといい。
体の動き
2つのサーボモーターで、アルキメデスは上下を向いたり、頭を横に回転させたりできる。私は、HackerBoxesのVision Questキットを使ったけど、同じようにパンとチルトができるジンバルなら他のものでも問題ない。サーボがいくつか余ってるって人は、Thingiverseで公開されてるパーツをダウンロードして3Dプリントしても大丈夫。フクロウは体は回転させずに頭を動かす鳥だから、チルトは上、パンは下になるように。
ざっとサーボの調整をして、許容範囲を確認する。最大でどこまで回せるかを見ておこう。ブーッみたいな音がしたら、許容範囲を超えてる証拠。そのときは、Arduinoのスケッチで角度を調整する。コードはここからダウンロードできる。今のところ、アルキメデスが周囲の人の顔を探せるように、ランダムに動くコードがArduinoに書き込まれている。この行動はコードを書き換えて変更できるけど、いちばんいいのは、Raspberry Piにそれをやらせる方法を見つけることね。
サーボは金属ギヤのものがお薦め。ちょっと重いけど、この手のロボットでは確実にコントロールできる。金属のマウントではなくて、3Dプリントしたプラスティックのものを使うときは、プラスティックギアのサーボでも大丈夫。そのほうが全体に軽くなっていいかも。
2つのサーボをArduinoに接続する。
焦らずゆっくりハンダ付けをして、きちんと動作するか確かめよう。接点はホットグルーで保護して、取れにくくしておく。
私は、配線の分岐に別のプロジェクトで使ったプロトボードを使用した。こうすればショートの心配がない。
3Dプリント
私は、ブラウザーベースのCADモデリング・ツールOnshapeを使ってアルキメデスの体の部品をデザインして、3Dプリントした。アルキメデスは、頭、帽子、左右の翼、前の羽飾りという5つの部品で構成されている。
STLファイルは私のHacksterページで公開している。3Dプリンターを持っていない人は、3D HubsやShapewaysなどのサービスを使ってプリントするといい。
デザイン変更をしたい? もちろん、ご自由にどうぞ! ただし、次のことに気をつけて欲しい。
・頭脳となる電子部品はすべて頭の中に収まるようにすること。ケーブルは長いけど、ジンバルの下まで伸ばせるほど長くない。
・ピエゾブザーとカメラモジュールを楽に組み込めるように設計すること。とくにカメラの取り付けスペースは重要。全体のサイズを変更したいときは、細かい調整が必要になる。
私のアルキメデスの顔は、くちばしのサポートが十分でなかったので、プリントしたときにちょっと変になってしまった。
そこで、CDを切り出して、輝くサイバーなくちばしを作ってやった。すごくいい感じにできた。作り方はこう。CDをボウルに入れて熱湯を注ぎ、5分待つ。するとラミネート層が剥がれてきて、ピカピカのメモリーフォイルが現れる。ラミネートを全部剥がせば、ハサミで切れるようになるので、好きなくちばしの形を作る。私は2つの対称形を切り出して組み合わせた。
それを、顔にホットグルーで接着する。プラスティックの面が外側になるように。耐久性は驚くほど高いけど、修理することを考えて、使ったCDは捨てないでおくといい。
ロボットの組み立て
ロボットの組み立て準備が整ったら、まずは頭と帽子から取り掛かる。帽子にはボタンを組み込み、下の穴からケーブルを出し、ホットグルーで動かないように固定する。それから、帽子を頭にホットグルーで接着する。
片方の目にカメラを組み入れ、もう片方の目にピエゾブザーを組み入れる。私は、接着した痕が見えないように、それぞれをホットグルーで固定した。とってもしっかりと接着できた(私はホットグルーの虜になってしまいそうだ)。ステータスLEDは、ただぶら下がっているだけだが、いい感じなのでそのままにしている。まだ何かに引っかかったことはない。もちろん、どこかに固定したければ、そうしてかまわない。
次は、アーマチュアワイヤーの出番だ。これは画材屋さんなどで売られている彫刻用の太い針金。二重の輪を作り、上のサーボのマウントの適当な場所で固定する。これで頭が支えられる。固定できたら、熱収縮チューブをアーマチュアワイヤーに通して、電子部品がショートしないように絶縁する。
金属のサーボマウントを使っている場合は、絶縁テープを巻いてRaspberry Piの部品と接触しないようにしておく。その上からクッション付きの両面テープを貼り、Raspberry Piを貼り付ける。これでRaspberry Piはしっかりと固定される。そして、電子部品の上から頭をかぶせる。
アーマチュアワイヤーを2本切り出して、翼の取り付けを行う。片方の端を下のサーボマウントの穴に通して巻きつける。反対側の端から翼を通し、その先をサーボマウントのもうひとつの穴に通して巻きつける。
アーマチュアワイヤーの太さは、翼の穴にぴったりのものを選ぶこと。そうすれば、かなりしっかりする。あまり力をかけすぎないようにすれば、数カ月間は持つ。頭を回転させて、翼と干渉しないかどうかを確認しよう。ぶつかれば、どこかが壊れるし、サーボに負担がかかる。Arduinoのスケッチの可動範囲も確認しておこう。
そして最後の3Dプリント部品を取り付ける。羽飾りだ。下のサーボの前に緩く固定する。私は細い針金を使った。ちょうど蝶ネクタイみたいな感じ。
頭はばたばたと動くので、頭をアーマチュアワイヤーの輪に固定したくなるかも。でも、そうすると好奇心の強い友だちに中身を見せるのが難しくなる。
ショルダーマウント
最後に、ロボットをウェアラブルにする。
アーマチュアワイヤーを180センチほどの長さに切る(もっと長くてもいい)。片方の端をサーボマウントの土台に巻き付け、サーボがしっかりと固定されるようにする。アーマチュアワイヤーでは、肩にしっかりと取り付けるのが難しく、よくずれてしまうので、将来的にはショルダーマウントを3Dプリントしたいと思ってる。でも、今はこの方法でなんとかなってる。サーボや支持素材を軽くすれば、もっと簡単かも知れない。
サーボに巻き付けて残ったアーマチュアワイヤーを折り曲げて二重にする。ここで、バルブの部分を切り取って細長い筒状にした自転車のタイヤチューブが登場する(ちょっと粉が出るので注意)。
このワイヤーを肩の近くの腕に巻きつくように輪にして、端を下のサーボマウントに巻き付けて固定する。そのワイヤーにタイヤチューブを通し、ロボットの側の端に縦に切れ目を入れて、ロボットの土台に結び付ける。
あとは、ワイヤーを胸の周りに巻きつけてハーネスにする。
私は、肩を通す輪とサーボマウントを柔らかいスカーフで包んでクッションにして、肩が痛くならないようにした。また、Arduinoとそのケーブルもスカーフを巻いて保護した。Arduinoのケースも3Dプリントしたいけど、それでもスカーフの結び目の中でぶら下がる形になるのは変わらない。
フクロウと出かけよう
これでロボットを装着する準備ができた。輪に腕を通して肩に載せて、ワイヤーを体に巻き付けて、しっかりと支えよう。チューブの端がケーブルに絡まないよう、しっかりと巻き付けるか、結んでおくといい。では、楽しんでね!
・Raspberry Pi Zero Wirelessが付属しているGoogle AIY Vision Kit、金属ギヤで高トルクのサーボモーター2個(私はTower Pro MG996Rを使用した)
・パンとチルトが可能なサーボマウント(RobotShop #RB-Lyn-101、RB-Lyn-81など)
・Arduino(私はMKR1000を使用した)
・頭、帽子、左右の翼、胸の羽飾りの3Dプリント部品(bit.ly/robotowlからファイルをダウンロード)
・安いUSBケーブル数本
・USB用の5ボルト電源(3ポート必要)
・厚手の両面テープ
・アーマチュアワイヤー
・配線用のリード線
・熱収縮チューブ
・自転車用のタイヤチューブ
・不要になったCD
・スカーフ
[原文]