【XYペンプロッター制作⑥】Inkscapeで画像をGコードに変換する

こんなこと、やります。

  • Inkscapeで画像をGコードに変換する方法の解説
  • 自作XYプロッターで描画テスト

【XYペンプロッター制作⑥】Inkscapeで画像をGコードに変換する

この記事では、Inkscapeで画像をGコードに変換する方法を解説します。また現在、ArduinoでXYプロッターを制作中です。本記事のさいごでは、Gコードに変換したデータを、XYプロッターへアップロードし、ペンを持たせてお絵かきさせてみます。XYプロッターの作り方は、下記の記事もご参考になさってみてください。

つかうもの

はじめに、この記事でつかうものをご紹介いたします。

Inkscape

Inkscape(インクスケープ)を使います。Inkscapeは、オープンソースで開発されているベクター画像編集ソフトです。Linux、macOS、Windowsにて無料で利用できます。あらかじめ、下記ページからダウンロード&インストールしておいてください。

本記事では、macOS 12.0.1、Inkscape1.1で解説していきます。また、ボタンやメニューなどは英語表記ですのでご了承ください。

XYプロッターの部品

ここまでの段階で、XYプロッターで使用している部品は、こちらになります。

  • Arduino Uno x 1
  • ステッピングモータ x 2
  • CNCシールド x 1
  • モータドライバ x 2
  • スイッチング電源 x 1
  • タイミングベルト&タイミングプーリー x 1
  • リニアガイド x 3
  • ジャンパーキャップ x 6
  • マイクロスイッチ x 2
CNCシールドのバージョンはV3.00です。また、Arduino Unoに書き込んだGrblはv0.9となります。

Inkscapeで画像をGコードに変換する方法の解説

Inkscapeは操作にクセがあり、正直、とても使いづらいです。しかし、今のところ、無料で画像をGコードに変換できるソフトが、Inkscapeしか見当たりません。この記事では、Inkscapeの操作画面を、できるだけキャプチャしつつ解説します。

ページサイズの設定

Inkscapeを立ち上げ、新規ファイルを作成します。

ページサイズの設定をおこなうには、メニューの「File」→「Document Properties」を開きます。XYプロッターのプラットフォームに合わせて、適当なページサイズを選択します。

Document Propertiesでページサイズの変更
Document Propertiesでページサイズの変更

画像ファイルをインポート

Gコードに変換したい画像を、JPEGやPNGファイルで用意します。そのファイルを、Inkscapeへドラックアンドドロップします。その際、ダイアログが表示されますが、とくに変更せず、OKで大丈夫です。画像ファイルが読み込まれますので、ページサイズに合うように、適当に画像を拡大縮小します。

鍵ボタンをロックし、画像サイズを入力してリサイズ
鍵ボタンをロックし、画像サイズを入力してリサイズ

画像をパスに変換

画像オブジェクトを選択した状態で、メニューの「Path」→「Trace Bitmap」を開きます。サイドビューにある「Update」を押すと、ビューに画像が表示されます。そして「Apply」で画像をパスに変換します。

Trace Bitmapで、画像をパスに変換
Trace Bitmapで、画像をパスに変換

これで画像がパスに変換されたのですが、キャンバスの見た目では変化がありません。

パスの確認

どちらがパスなのか分からない場合は、オブジェクトを選択して、下部の表示を確認します。Pathと書かれている方を残すようにします。元画像は必要ありませんので、削除してしまいましょう。

オブジェクトを選択して、Pathを確認
オブジェクトを選択して、Pathを確認

いよいよこれから、パスをGコードへ変換します。

Orientation Pointsの設定

メニューの「Extensions」→「Gcodetools」→「Orientation Points...」をクリックします。今回はこのような設定で「Apply」してみます。

Orientation Pointsの設定
Orientation Pointsの設定

すると、キャンバスの方に座標が表示されます。ご自身のXYプロッターの機械原点と照らし合わせて、パスオブジェクトの位置を決めましょう。

機械座標が表示される
機械座標が表示される

Tools Libraryの設定

今度は、パスオブジェクトを選択した状態で、メニューの「Extensions」→「Gcodetools」→「Tools Library...」を開きます。この画面では、加工機械の種類を設定できるようです。ペンプロッターですので、「cylinder」を選択し「Apply」しました。

Tools Libraryの設定
Tools Libraryの設定

すると、キャンバスに設定値が表示されます。今回は初期設定のまま進みますが、必要があればここで設定値を変更します。

Toolsの詳細設定値
Toolsの詳細設定値

Gcodeファイルへ書き出し

こちらも必ずパスオブジェクトを選択した状態で、メニューの「Extensions」→「Gcodetools」→「Path to Gcode...」を開きます。

はじめに「Preferences」タブを開き、Gコードファイルを書き出す場所を設定します。

書き出す場所を指定する
書き出す場所を指定する

つぎに、「Path to Gcode」タブの「Cutting order」項目を、「Pass by Pass」に設定します。

Pass by Passを指定
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コードファイルを選択肢アップロードします。その後、再生ボタンを押せば描画がはじまるはずです。

CNCjsでGコードファイルをアップロード
CNCjsでGコードファイルをアップロード

いまのところZ軸を装備しておらず、ペンの押し出しはできませんが、Y軸にペンを縛り付け動作させてみました。こちらが描画の結果です。

自作XYプロッターで描画テスト
自作XYプロッターで描画テスト

プラットフォームは平行でないため、ペンが紙に当たらず手で押して上げる必要がありました。Z軸がないため、当然ですが移動時もつなげて描画されます。また、X軸のディレクション設定が正しくないため、絵も左右反転してしまいました。

とは言え、とりあえず画像をGコードに変換し、自作XYプロッターで描画できたことに感動です!

次回は、ペンの押し出しを実装してXYプロッターを完成させたいと思います。乞うご期待です!

YouTubeで モノ作りチャンネル料理チャンネルベースチャンネル 始めました!
記事に関するご質問などがあれば、
Twitter または お問い合わせ までご連絡ください。
いろいろなCNCマシン
いろいろなArduino
Arduinoのオススメ参考書

▼ Arduino初心者向きの内容となっています。ほかのArduino書籍と比べて図や説明がとてもていねいで、読みやすかったです。Arduinoでひととおりのセンサーが扱えるようになります。

▼ 外国人が書いた本を翻訳したものです。この手の書籍は、目からうろこな発見をすることが多いです。

▼ Arduinoの入門書をすでに読んでいる方で、次のステップを目指したい人向きの本です。C言語のプログラミングの内容が中心です。ESP32だけでなく、ふつうのArduinoにも役立つ内容でした。

関連記事