【Studies】食品用3DプリンターのGコードを読み解く
こんにちは、ファブラボ神田錦町の井上です。
今年からドイツ製の食品用3Dプリンター、「Procusini」を扱うようになりました。プラスチックのフィラメントから造形する一般的な3Dプリンターとは扱い方が異なりますが、原理を理解すれば色々と実験的なことができます。最近の事例では、ファブラボ仙台が主宰している「Advent Calender Challenge」企画で活用しました。
Procusiniの基本的な使い方は、「Procusini Club」という専用のブラウザーソフトから行います(プリンターの購入者に対してアカウントが発行されます)。Procusini Clubには様々なサンプルデータやテンプレートがあるので、3Dデータがなくても使うことができます。もちろんオリジナルの3Dデータをアップロードして使うこともできます。食材に合わせて最適化されたパラメーターでプリントデータを出してくれるので、3Dプリンティングに慣れていないユーザーには優しい設計になっています。飲食店などをメインターゲットにしているとなれば、フレンドリーな設計だといえます。
とはいえ我々のようなエンジニアリングサイドから見ると調整箇所が少なく、物足りなさを感じることもしばしば。普段使い慣れているスライサーソフトから書き出したGコードで動かしてみたいとなるのは自然の流れでした。そんなわけで、Procusini ClubのGコードを解読してみよう、となったわけです。
上の画像は、Procusini Clubの設定画面です。エキスパートモードでこれだけしかありません、簡単ですね。左で使用する食材を選んだら自動的に設定され、エキスパートモードで微調整する、という流れです。SpeedやFlowrateといった重要な値が「%」表記なので、実際の印刷スピードや吐出量がわかりません。なので、Procusini Clubから実際に書き出したGコードを読み取って、それぞれの値を探っていく必要があります。以下のコードは、食材はチョコレートで、一辺1cmの立方体の外壁だけをプリントする場合に書き出されたGコードの一部になります(設定は上の画像と同一で、各行の意味を追記しています)。
;TYPE:WALL-OUTER
G1 Z.6 ;Z軸を0.6mmまで移動
G1 F12000 E0 ;12000mm/minで材料の送りを0位置まで
G1 F900 X129.5 Y70.5 E0.01581 ;900mm/minでX軸129.5mm、Y軸70.5mmまで移動しながら0.01581mm吐出する
G1 X129.5 Y79.5 E0.03163 ;X軸129.5mm、Y軸79.5mmまで移動しながら0.03163mm吐出する
G1 X120.5 Y79.5 E0.04744 ;X軸120.5mm、Y軸79.5mmまで移動しながら0.04744mm吐出する
G1 X120.5 Y70.5 E0.06325 ;X軸120.5mm、Y軸70.5mmまで移動しながら0.06325mm吐出する
このコードは、一辺1cmの立方体の最初の1層目(=1cm角の正方形)のコマンドを切り抜いたものです。まず4行目にある「G1 F900」から、チョコレートの印刷速度は900mm/min(=15mm/sec)だとわかります。
次に吐出量です。吐出量はG1コマンドの「E」に続く数値で表されます。同じく4行目を見ると、1cm進む間に0.01581mm押し出されていることがわかります。続く2行目以降の値も、0.01581ずつ上がっています。Procusiniは直径2cmほどのカートリッジに材料を入れ、注射器のように後ろから押し込むことで材料が出てきます。一般的な3Dプリンターとは機構が全く異なるため、吐出量の値も一般的な数値から大きく変わります。
次に一般的なスライサーソフト、Curaでどのように設定するか見ていきます。Curaの場合、押し出し量は「Flow」の値で調整しますが、厄介なことにこちらも「%」表示になります。
選択したノズル径や印刷スピードなど、その他の設定値から計算された吐出量を100%とし、材料やデータに合わせて増減するのがFlow値の一般的な使い方です。しかし、それはあくまで一般的な3Dプリンターでの話。挿入する材料の形状や体積、押し出しの機構が全く異なるProcusiniでは、他の設定値を揃えたとしても100%が100%とはなりません。
そこで、先ほど割り出した印刷スピードやノズル径(Procusiniは1.0mm)など、他の設定値を揃えた上で、同じデータをCuraから書き出してみます。Flowを100%にした場合に、上に示したコードと同じ箇所を切り取ったのが以下になります。
;TYPE:WALL-OUTER
G1 F4998 E0
G1 F900 X120.5 Y70.5 E2.24506
G1 X129.5 Y70.5 E4.49012
G1 X129.5 Y79.5 E6.73518
G1 X120.5 Y79.5 E8.98024
異なるソフトで書き出しているため、コードの並びが若干異なりますが、見ての通り「E」の値が桁違いに大きいです。もしこのGコードをこのままProcusiniにかけると、単純計算で約142倍のチョコレートが吐き出されます。とはいえ1cmあたりの吐出量は分かったので、2.24506を100%とした場合の0.01581の割合を計算すると、「0.70421…%」となります。
一般的な3Dプリンターの使い方ではあり得ない数字ですが、Flowの値を「0.7%」として書き出してみます。
;TYPE:WALL-OUTER
G1 F4998 E0
G1 F900 X120.5 Y79.5 E0.01572
G1 X120.5 Y70.5 E0.03143
G1 X129.5 Y70.5 E0.04715
G1 X129.5 Y79.5 E0.06286
Eの値が0.01572になりました。CuraのFlow値に入力できるのは小数点以下2桁までなので、若干の誤差はあります。ここから先は実際にプリントしながら調整していきます。
このように、Gコードを読み解くことで原理を理解すれば、色々な応用ができるようになります。冒頭で紹介したアドベントカレンダーでは、Grasshopperで設計し、書き出したGコードからチョコレートを成形しています。さらに一歩踏み込んだこの事例でも、ここまで紹介したリサーチから適切な設定を当てはめています。
ここでは数字の「7」をモチーフに、壁面をリズミカルに波立たせたテクスチャーにしています。こうしたアプローチは、従来の3Dモデリングでは却って手間がかかるうえ、波の数やピッチなどの微調整が難しくなります。Grasshopperのようなパラメトリックツールを用いれば、工夫次第で魅力的なフードプリンティングに繋げられそうです。
弊社はフードプリンターProcusiniの正規代理店です。
お問い合わせは随時受け付けておりますので、お気軽にご相談ください。