【XYペンプロッター制作⑥】Inkscapeで画像をGコードに変換する
こんなこと、やります。
- Inkscapeで画像をGコードに変換する方法の解説
- 自作XYプロッターで描画テスト
この記事では、Inkscapeで画像をGコードに変換する方法を解説します。また現在、ArduinoでXYプロッターを制作中です。本記事のさいごでは、Gコードに変換したデータを、XYプロッターへアップロードし、ペンを持たせてお絵かきさせてみます。
▼ 合わせてご覧ください。
つかうもの
はじめに、この記事でつかうものをご紹介いたします。
Inkscape
Inkscape(インクスケープ)を使います。Inkscapeは、オープンソースで開発されているベクター画像編集ソフトです。Linux、macOS、Windowsにて無料で利用できます。あらかじめ、下記ページからダウンロード&インストールしてください。 Draw Freely | Inkscape
XYプロッターの部品
ここまでの段階で、XYプロッターで使用している部品は、こちらになります。
- Arduino Uno x 1
- ステッピングモータ x 2
- CNCシールド x 1
- モータドライバ x 2
- スイッチング電源 x 1
- タイミングベルト&タイミングプーリー x 1
- リニアガイド x 3
- ジャンパーキャップ x 6
- マイクロスイッチ x 2
Inkscapeで画像をGコードに変換する方法の解説
Inkscapeは操作にクセがあり、正直、とても使いづらいです。しかし、今のところ、無料で画像をGコードに変換できるソフトが、Inkscapeしか見当たりません。この記事では、Inkscapeの操作画面を、できるだけキャプチャしつつ解説します。
ページサイズの設定
Inkscapeを立ち上げ、新規ファイルを作成します。 ページサイズの設定をおこなうには、メニューの「File」→「Document Properties」を開きます。XYプロッターのプラットフォームに合わせて、適当なページサイズを選択します。
画像ファイルをインポート
Gコードに変換したい画像を、JPEGやPNGファイルで用意します。そのファイルを、Inkscapeへドラックアンドドロップします。その際、ダイアログが表示されますが、とくに変更せず、OKで大丈夫です。画像ファイルが読み込まれますので、ページサイズに合うように、適当に画像を拡大縮小します。
画像をパスに変換
画像オブジェクトを選択した状態で、メニューの「Path」→「Trace Bitmap」を開きます。サイドビューにある「Update」を押すと、ビューに画像が表示されます。そして「Apply」で画像をパスに変換します。 これで画像がパスに変換されたのですが、キャンバスの見た目では変化がありません。
パスの確認
どちらがパスなのか分からない場合は、オブジェクトを選択して、下部の表示を確認します。Pathと書かれている方を残すようにします。元画像は必要ありませんので、削除してしまいましょう。 いよいよこれから、パスをGコードへ変換します。
Orientation Pointsの設定
メニューの「Extensions」→「Gcodetools」→「Orientation Points...」をクリックします。今回はこのような設定で「Apply」してみます。
すると、キャンバスの方に座標が表示されます。ご自身のXYプロッターの機械原点と照らし合わせて、パスオブジェクトの位置を決めましょう。
Tools Libraryの設定
今度は、パスオブジェクトを選択した状態で、メニューの「Extensions」→「Gcodetools」→「Tools Library...」を開きます。この画面では、加工機械の種類を設定できるようです。ペンプロッターですので、「cylinder」を選択し「Apply」しました。
すると、キャンバスに設定値が表示されます。今回は初期設定のまま進みますが、必要があればここで設定値を変更します。
Gcodeファイルへ書き出し
こちらも必ずパスオブジェクトを選択した状態で、メニューの「Extensions」→「Gcodetools」→「Path to Gcode...」を開きます。 はじめに「Preferences」タブを開き、Gコードファイルを書き出す場所を設定します。
つぎに、「Path to Gcode」タブの「Cutting order」項目を、「Pass by Pass」に設定します。 そして、この「Path to Gcode」を開いた状態で「Apply」します。この手順でやらないと、書き出しに失敗したりします。
下の画像のように、パスに三角の矢印がいっぱい追加されました。CNCマシンの動きを表しているのでしょう。
同時に、指定したディレクトリに「output_0001.ngc」のようなGコードファイルが生成されているはずです。このファイルをテキストエディタなどで開けば、Gコードの中身を見ることができます。
%
(Header)
(Generated by gcodetools from Inkscape.)
(Using default header. To add your own header create file "header" in the output dir.)
M3
(Header end.)
G21 (All units in mm)
(Pass at depth -1.0)
(Start cutting path id: path77)
(Change tool to Cylindrical cutter)
G00 Z 5.0000
G00 X 55.7065 Y 2.6770
G01 Z -1.0000 F 100.0000(Penetrate)
G03 X 50.9373 Y 3.4663 Z -1.0000 I -425.0925 J -2553.7170 F 400.0000
G03 X 43.7486 Y 4.6445 Z -1.0000 I -951.4406 J -5782.3642
G02 X 36.5597 Y 5.8212 Z -1.0000 I 1428.8817 J 8751.8988
G02 X 35.2387 Y 6.0411 Z -1.0000 I 48.7330 J 296.9555
G03 X 29.4802 Y 6.9959 Z -1.0000 I -173.2628 J -1027.1138
G03 X 14.5508 Y 9.4118 Z -1.0000 I -1125.1447 J -6905.6521
G02 X 2.8037 Y 11.3587 Z -1.0000 I 192.8638 J 1200.0607
G02 X 2.6329 Y 11.4471 Z -1.0000 I 0.0534 J 0.3125
G02 X 2.5883 Y 11.5360 Z -1.0000 I 0.1119 J 0.1118
G02 X 2.6102 Y 11.6021 Z -1.0000 I 0.0768 J 0.0113
G02 X 2.6859 Y 11.6542 Z -1.0000 I 0.1784 J -0.1783
G02 X 11.6919 Y 15.6463 Z -1.0000 I 1179.7542 J -2649.2801
G03 X 20.6997 Y 19.6357 Z -1.0000 I -1452.1736 J 3291.0677
G03 X 20.7606 Y 19.6776 Z -1.0000 I -0.0823 J 0.1851
G01 X 20.7573 Y 19.7221 Z -1.0000
...
自作XYプロッターで描画テスト
生成したGコードを自作XYプロッターに送信し、描画テストしてみました。Grbl v0.9、CNCjsを使用します。それぞれの使い方は、 【XYペンプロッター制作④】Grbl v0.9とCNCjsのインストール をご覧ください。
パソコンとArduinoボードを繋いで、CNCjsに接続します。CNCjs画面の「Upload G-code」から、先ほどのGコードファイルを選択肢アップロードします。その後、再生ボタンを押せば描画がはじまるはずです。
いまのところZ軸を装備しておらず、ペンの押し出しはできませんが、Y軸にペンを縛り付け動作させてみました。こちらが描画の結果です。
プラットフォームは平行でないため、ペンが紙に当たらず手で押して上げる必要がありました。Z軸がないため、当然ですが移動時もつなげて描画されます。また、X軸のディレクション設定が正しくないため、絵も左右反転してしまいました。 とは言え、とりあえず画像をGコードに変換し、自作XYプロッターで描画できたことに感動です!
次回は、ペンの押し出しを実装してXYプロッターを完成させます。乞うご期待です!