geutaltでfab netと通信する 教授:ここでお見せした例はは固定された翻訳機に関するものだった。今からNadyaが説明する内容は、その代わりにfab netを用いる方法だ。それはツールパスの計算にはgestaltを用いないが、gestaltを用いて実際にfab netと通信するというやり方だ。 Nadya Peek:ええ。私は今、先ほどNeil先生が例として接続したモジュールと同じものを持っています。皆さんにはPNG画像を読み込むところから、閾値、距離、そしてオフセットに変換を行ってもらいます。そして、エッジの検出、エッジの方向設定など、移動しようとしている場所に向かうためにどの命令を行うかを決定するのです。そうやって、画像をベクター化してこのベクターから細かな設定を行うことで、皆さんの装置と通信します。 Nadya Peek:例えば、仮に皆さんが画像から簡易的にXY方向のプランを作った場合でも、装置は上下に動くことができます。ですから、その動作の高さを決めます。このようにして、ツールパスが出力されます。それはツールが移動する軌跡の重ね合わせになります。一方で、pythonバージョンも見ることができます。そうすることで、接続した装置で命令を実行することができるようになります。実際のところ、私は今プロッタには接続していなくて、このような移動型のミリングマシンと多くの小さなモジュールに接続しています。 Nadya Peek:私が追加したのは、ジョグ操作をすると非常に遅い速度でジョグ動作をするものです。今、私が動かしているのがお分かりかと思います。 教授:いや、背景が雑然としているから分からないな。何を動かしているのか指し示してくれないかい? Nadya Peek:このミラーです。 ブラウザからシリアルポートの通信 教授:補足すると、彼女が用いているのは、ブラウザの中にあるmodsからシリアルインターフェースに出力するモジュールだ。このことを説明しておこう。セキュリティの問題から、今日のブラウザのmodsはシリアルポートに直接通信することができない。 Googleは試験的にシリアル出力可能なブラウザを開発している。Mozillaも同様の取り組みを行なっている。それはまだ安定した標準品ではない。だから、ブラウザからシリアルに出力するにはnode serialを用いる。 node 教授:nodeってのは、JavaScriptで、ブラウザの外部での命令を実行するものだ。これはブラウザができないことを実行することを許可されている。 そういうわけで、僕たちはローカルな小さなサーバーを動かさなくちゃならない。これを用いて僕はシリアルポートと通信して、障害を取り除くんだ。もしくは、僕たちははローカルのサーバーと通信することができるし、pythonに通信することも、シリアルに通信することもできる。
Nadya、君の例でどうやってgestaltをmodsの一部として用いるのかを話してくれないかい? Nadya Peek:モジュールはクライアントです。つまり、クライアント側を実行していてモジュールはmodsのサーバーとコミュニケーションを行います。 Nadya Peek:このモジュールはサーバーを横で稼働させておくことで使用することができるようになります。これはローカルで実行できるようにするべきです。ノードとなるサーバーをローカルで稼働させるのです。これはサーバークライアントから接続されていて、そのデータを取得します。 Nadya Peek:ここで、私のコンピュータをお見せしましょう。私はこのようなモジュールを使っています。このモジュールは他のモジュールと同じような方法でファイルを追加することができます。しかし、異なる点はコマンドラインでサーバーの情報を取得するということです。 それは、ノードとなるfabサーバーのダイジェスト版を実行し始めます。 Nadya Peek:そして、サーバーから情報が取得されるのを持ちます。私はただそのポートからのメッセージを待つのみです。そして、取得したメッセージがコマンドを実行します。コンピュータが動作コマンドを受信すれば、それは実行されます。が、これはかなり遅延します。なぜならば、皆さんが実行しようとしていることはノードの中で行われているからです。その後、他のノードとなるサーバーに翻訳され、pythonとして翻訳された後に呼び出されるからです。ですから、皆さんが動作実行するたびに、シリアルポートを閉じて、再度開くというような事をやっているんです。これが、例えばジョグ操作がめちゃくちゃ遅い理由なんです。 Nadya Peek:ちなみに、もし皆さんが2つのジョグ操作の間に時間を取れば、0.5秒くらいになるでしょう。しかし、もし全ての動作コマンドのリストを送信したならば、装置が動作できるスピードは、先ほど実際にお見せしたような感じになります。という訳で、異なるオプションを実行することは、ちょっとばかり混乱を招きます。 (以下随時更新中) (つづく) 講義の目次は 【和訳版】FabAcademy 2016 からご覧ください。 ※この記事は FabAcademy 2016 におけるニール・ガーシェンフェルド教授(MIT)による講義動画をもとに作成しました。正確な訳ではないので間違っていたら指摘いただけるとありがたいです。