Machinekit (LinuxCNC) では G64 P0 (Blend Without Tolerance Mode) がデフォルトになっており、これは「送り速度優先」「公差無視」のモード。なのでフィードレートを早くしていると細かい動作のとき大きな公差が発生する可能性がある。(まんまとハマってしまった)
G64 P0.002 のように明示的に公差を指定するか G61 で常にパスに従うように指定する。普通に考えると公差指定のほうが良さそう。機械的要素から限界の精度は求められるので、すくなくともそれ以上の公差は指定したほうが良い。
パスの差
白い線が通るべき線、ピンクの線が実際に通った線
デフォルトだとこんなにカクつく…… (各種条件によります)
適切に公差指定すると以下のように
Fusion 360 では
ポスト処理には「tolerance」パラメータがあるのだけど、吐き出される GCode には G64 が含まれない。なんでやねんという感じだけど、どうやら linuxcnc.cps が対応してないっぽい。
しかたないので自分で .cps を書いた。machinekit.cps。自分のものは以下に置けばいいらしい。
~/Autodesk/Fusion 360 CAM/Posts
備考:.cps ファイルの差分
ちなみに、デフォルトの .cps は以下にある
~/Library/Application Support/Autodesk/webdeploy/production/{versionid}/Libraries/Applications/CAM360/Data/Posts
.cps ファイルはぱっと見 JavaScript ファイルっぽい。謎文法のクソファイルとかじゃなくていいですね。
試した感じ linuxcnc.cps に追加して、onOpen 関数の最後で以下のようなのを書いておけばよさそう。これでポスト処理ダイアログで指定できるパラメータが出力される。
if (tolerance) {
writeBlock('G64 P' + tolerance);
}