仮想マシンというチャレンジ
翻訳機と装置の状態というトピックに関するチャレンジは、仮想的な装置へと導かれる。今から、このことに関して、話をしておこう。 装置の自由度とネットワーキング 装置をネットワークでつなぐためのアプローチを代替する手段としては、後のネットワーキングに関する講義でも取り扱うが、数多くの異なるプロトコルを僕たちは学んでいくことになる。 ●シリアルバスを用いた例 そして、そのひとつをお見せしよう。今、お見せしているのは、シンプルなシリアルバスだ。シリアルバスは配線されたネットワーク上にあるノード同士を相互に通信できるようにする。僕たちはネットワーキングの講義の際に、これについて学んでいくことになる。このシリアルバスを用いることで、インターネットプロトコルを実行することができる。 そして、この動画はシリアルバスを用いてインターネットパケットを作り出すという例だ。これらの基板はそれぞれインターネットのアドレスを持っている。そしてこれらにパケットを送信する。コミュニケーションするためにね。 ●ネットワーク 僕が取り上げる範囲内で、もっと一般的なものとしては、今お見せしているものは、同期して通信するコンピューティングプロトコルだ。これにより、君たちは経路を作ることができるようになる。そして君たちは実際に装置にこのテクノロジーを搭載し、通信経路を設定することができるのである。 これは、より先進的なネットワーキングにアーキテクチャだ。そして、これらのテクノロジーを用いることにより、君たちは装置の自由度を各々扱うことができるようになる。そして、これらをネットワーク内でノードとして用いることができるようになるんだ。ここで、装置は状態というものから解き放たれる。 実物をお見せしよう。
これらのセンサやアクチュエータは、ネットワークノードとなる。各々ノードとして存在しているんだ。機能する装置上においてね。 各々のセンサやアクチュエータがネットワークのノードとなる。もし、君たちがネットワークに自由度を追加したり、そこから削除したいと思ったとしても、君たちは装置の構成を何一つ変更する必要はない。 状態を変えるよりも、ソフトウェア上の装置上でネットワークとどのように通信するかを設定すりゃいいんだ。 ●gestalt のちにもっと詳しいことはお話しするが、今回の講義では、この事について少しだけお話ししておこう。 数年前、Ilan Moyerは装置の組み立てに関する講座の中でNadya Peekとプロジェクトを行ったのだけれども、彼は、のちに、gestaltをテーマに博士論文の研究を行った。 gestaltは仮想的な操作を行うためのソフトウェアフレームワークだ。 君たちが今回取り組むキットにはfab net boardが搭載される。これは、ネットワーク上のモータを制御するためのコントローラで、gestaltはソフトウェア上で装置を定義するためのソフトウェアフレームワークだ。 この場合、pythonのモジュールが、装置の動作を記述する。 のちの講義で、僕は再度gestaltについて詳細をお話ししようと思う。
●mods
また、僕が取り組んでいるプロジェクトのひとつにこのmodsフレームワークがあるが、僕はまたこれについてより詳細に取り上げる事になるだろう。 gestaltを使うには、君たちはソフトウエア上でpythonでプログラムを書くことになるのだけれども、modsフレームワークでは、それは画像から生成することができる。僕たちのプロジェクトのひとつは写真測量を行なっているんだけれども、このモジュールは写真測量のためのスキャニングに関する命令を実行する。 そして、modsはgestaltと似たようなものだが、今や、モジュールがpythonプログラムのかたまりであるのに代わって、これらは実際のところWebページ上の小さなWebプログラムなんだ。 そして、ここからはハードウェアと通信するモジュールだ。これらにより、君たちはコマンドを機器に送信し、機器はそれを読み込むことができるようになる。 僕たちはまた戻ってきて、のちの講義でより詳細を見ていく。しかし、これは覚えておいて欲しいんだけれども、これらのフレームークにより、君たちは仮想マシンを動かすことができるようになるんだ。 装置に固定されたコントローラを用いるのではなく、装置をリアルタイムのネットワークとして、ソフトウェアモジュールを結合させることでハードウェアのモジュールを対応させるんだ。そうやって装置を制御するんだ。 このハードウェアを再構成することができる制御方法こそが、まさに僕たちが向かおうとしている装置組み立ての未来の姿なんだ。 そして、一旦君たちが制御を実行すれば、これは装置を動かす段取りを組む。もし、ある位置に動くようにコマンドを送信すると、どのように対応するのか、どの自由度を用いないのかなどの段取りを組むんだ。そうやって、君たちは装置をどのように動かすのかを計画する必要がある。
数年前のことだ。僕はこれらのFam Modulesを作り始めた。そして、これらによってデータを入力して読み込み、翻訳し、コマンドを出力するということができるようになった。 これが、どのようなものなのか、ひとつ例を示してみよう。 これは多くのJavaScriptプログラムからなる。これはその中の一つのモジュールで、例えば今は、僕が作りたい基板のデータを読み込んでいるところだ。 僕は装置選択の項目で装置を選択し、プロセスを選択すると、このモジュールは境界からツールの距離を計算する。これを巣のように張り巡らし、分類する。 ここに、もう一つの例を示そう。ここではメッシュを読み込んでいる。この場合、機械のプロセスに合わせて、このメッシュを高さの分布データに変換する。ここでは、そやって3軸の仕上げ切削の計算を行う。 今お見せしているのは、成型や鋳造のための型を切削するモジュールだ。これらのモジュールは軌跡の計画を全て計算した上で装置にコマンドを送信する。 Fab ModuleはFioreがGitHubでのサポートを主導している。装置と通信するための多くのフォーマットを読み込むためのモジュールから構成されている。そして、それは数多くの幾何学的な翻訳を行うモジュールから構成されている。 講座のカリキュラムを進んでいくに従って、もっとこれらのことに関して語ろうと、僕は思う。このmodsプロジェクトを用いれば、全てを視覚化し、多くの装置が同じことをすることができるようになる。今、僕は単に製作しようとしているモノのデータを読み込む過程を君たちに示しただけだけれどもね。
そして、ツールごとにツールパスを計算して、作っていく。しかし、今は、いつもは見えないようにしている全てのモジュールを非表示にせずに操作している。 それぞれのモジュールを表示させて見えるようにして、これらを編集、再結合することで、ワークフローを簡単にアレンジし直すことができるんだ。これが僕がまさに積極的に開発しているものだ。 僕はFabModulesを用いることもできたのだが、再結合を容易にすることでこれらのワークフローを構築することができる。 最初の軌跡について話を戻そう。この内部に関しても話しておこう。 ワークフローの構築を全て終えたならば、軌跡の計算を行うことになる。これは、ツールの直径やツールにとってどの方向が好ましいのか、動作を最小限に抑えるにはどうすれば良いかなどを計算して、ツールパスを最適化する。そして、これらの設定の積み重ねにより、最終的に君たちは機械に何をさせたいのかを表明する必要があるんだ。 ●Antimony 1ついい例がある。Antimonyプロジェクトだ。このソフトウェアにはコンピュータによる幾何学的エンジンが実装されている。このソフトウェアを用いれば、作りたいものを表現することができる。入力を与えれば、軌跡の計画を行うことができる。そして、軌跡の計算を終えたとき、君たちは理解することになる。ツールをどの位置に移動させたいのかってことをね。そして、一度ツールをどこに移動させたいのかが分かれば、自由度に関する設定を行うことができるできるようになる。
そして、仮想マシンのスケジューラはリアルタイムのネットワークと通信し、パケットをネットワークに送信する。ネットワークはパケットを受信してコントロールループ内のモータ制御にそのデータを送信する。そして、それは電力に変換され、最終的にセンサやアクチュエータに送信されて何がしかの機能を持つ装置となるんだ。 そういう訳で、これが、装置からアプリケーションまでの全てのステップだ。
( つづく ) 講義の目次は 【和訳版】FabAcademy 2016 からご覧ください。 ※この記事は FabAcademy 2016 におけるニール・ガーシェンフェルド教授(MIT)による講義動画をもとに作成しました。正確な訳ではないので間違っていたら指摘いただけるとありがたいです。