Category Archives: LinuxCNC

Laser加工機製作 ~その11 LinxCNCでレーザーラスター加工の詳細~

LinuxCNCでのラスター加工について、最初はそれ用のNCコードを作ればいいという程度に考えていましたが、そう簡単ではなさそうです。 図の様にA地点からB地点、およびC地点からD地点までレーザー照射する場合、普通にNCコードで制御すると基本的に各地点で一旦停止します。刃物で切削するならこれで問題ないのですがレーザーの場合は速度を落とす部分では余分にレーザーを当ててしまう事になります。

Vector

NCコードのみで記述(ベクター動作と同じ)

ラスター動作では下図の様に、レーザーヘッドを一定の速度で移動しながら所定の位置でレーザーをON/OFFするのが理想です。

Raster

ラスター動作

たぶんNCコードだけではこれを実現できないと思います。 >どうなんでしょう?プロの方。 LinuxCNCでレーザーのラスター加工を検索してもあまり多くの例が見つかりませんでした(しかも全部英語なんです)。それでも比較的詳しく書かれた例が次のサイトでした。 Rastering With a Laser 主にHackLab Trontというところのマシンを例に説明されています。 インストール方法は後で説明するとして基本的な使い方は次の通りです。

  1. 元画像ファイルをGrasterというソフト(Rubyで書かれている)で処理すると次の3つのファイルが得られます。
    • 元画像ファイル名.raster.ngc
    • 元画像ファイル名.raster.gmask
    • 元画像ファイル名.cut.ngc
  2. LinuxCNCを立ち上げ、’元画像ファイル名.raster.ngc’を読ませて実行します。 このファイルにはラスタースキャンの動作が書かれています。具体的にはマーキングしたい画像よりも左右(X軸方向)に少し広い範囲で往復しながらY軸を少しずつ動かしていくNCコードです。 また先頭部分には’M101’というNCコードが書かれています。
  3. NCコードM101の行を実行した時点で’M101’というファイル名(拡張子も何も無くこの通りのファイル名)に書かれた外部プログラムを実行します。 (M101外部プログラムのファイルはLinuxCNCがNCコードを読みに行く際のデフォルトディレクトリに置いておきます。特に変更していなければ~/linuxcnc/nc_filesだと思います。)
  4. M101プログラムはPythonで書かれたスクリプトです。この中から自動的に’元画像ファイル名.raster.gmask’を読み込みます。
  5. ‘元画像ファイル名.raster.gmask’にはレーザーをON/OFFするタイミングが書かれており、LinuxCNCのStreamerという機能に読み込ませます。 Streamerは加工機が実行中、リアルタイムにデータを取りだせるメモリーみたいなもの(私の勝手な解釈)で、Streamerから取り出したデータをどうあつかうかはhal(設定ファイルの一つ)に記載しておきます。
  6. 後はラスタースキャン動作をしながらStreamerからレーザーをON/OFFするタイミングを取り出し、これに従って画像を描いていきます。
  7. ‘元画像ファイル名.cut.ngc’は画像の外形を囲んだシンプルなNCファイルなので、描画した画像を切り離す場合等に必要に応じて使用します。

大体の動作としてはこんな感じです。 面倒だったのはインストール方法で、このいきさつを書くと長くなりそうなのでページを改めて書こうと思います。 下の物を描画してみました。

RaterKumamon

くまモンです。
左上で切れているのは何かをミスって途中で止めた為。

台車札

ヨットの台車につけておくセール番号札(ちょっと薄かった?)

 

Laser加工機製作 ~その9 LinuxCNCでラスター加工~

レーザー加工機の用途として材料をカットする以外にラスター加工で絵や文字をマーキングするというのがあります。材料のカットは何とか動き出したので今度はラスター加工をやってみます。 LinuxCNCでレーザーのラスター加工の例があまり見つからないのですが、検索すると必ず最初に出るこのサイトを参考にしました。Hack-Labトロントのレーザー加工機を対象にしている様です。 これをウチの機械に合う設定するのに色々あったのですが、それはまたいづれ纏めようと思います。 とりあえずこのサイトから辿れるサンプルデータをダウンロードして出力した結果がこれ。

Laserラスター加工1

ラスター加工一発目

元の画像データはこれ

Rasterサンプル

元の画像データ

だいたい動作していますが、なぜか文字の囲み枠が一部出ていません。これは後で調べる事とします。 また、任意の画像を出力データに変換するプログラムを動作させる必要があります。 できたらまた報告します。