ふうです。ひさびさのブログではKlipperを使った自作系3DプリンターでSHAEPR_CALIBRATEからグラフの表示までを一括生成するマクロをGrokに作ってもらったので覚書がてら紹介しておきます。
SHAEPR_CALIBRATEはADXL345を利用してヘッドなどの共振する周波数を調べてそれを打ち消すためのものです。ゴーストやリンギングなどと呼ばれる外周に現れる模様を補正してくれます。
くわしくはtakeotaさんのブログ「Klipper の調整 ADXL345を利用してInput Shaperの調整をしよう」などを参照してください。
上記のブログを見るとわかるように通常はSHAPER_CALIBRATE実行後SSHでログインしたのちCSVからグラフを作成してコマンドでダウンロードしないといけないので結構面倒なんですよね。
ちなみにこれを一括でやってくれるKlipper Shake&Tuneといったプラグインもあるのですが、なぜかCONSOLEからSHAPER_CALIBRATEを実行した時と数値が大きく違ったりしていたり、klipperのアップデートで使えなくなったりで使用を止めました。
マクロ CALIBRATE_SHAPER
今回の主題はこちらです。
下記のマクロをmacro.cfgなどにコピペして使ってください。
[gcode_macro CALIBRATE_SHAPER]
description: Run SHAPER_CALIBRATE, save results to config directory, and clean up temporary CSV files
gcode:
# 1.ホーミング済みかどうかを確認
{% if printer.toolhead.homed_axes != "xyz" %}
G28 #まだの場合はホーミング実行
{% endif %}
# 2.SHAPER_CALIBRATEコマンドを実行
SHAPER_CALIBRATE
# 3.少し待機してデータファイルの書き込みを確実にする
G4 P1000 ; 1秒待機
# 4.X軸とY軸のキャリブレーションデータを処理
RUN_SHELL_COMMAND CMD=calibrate_shaper_x
RUN_SHELL_COMMAND CMD=calibrate_shaper_y
# 5.一時ファイルを削除
RUN_SHELL_COMMAND CMD=clean_tmp_files
# 6.終了時にSAVE_CONFIGを促すメッセージ表示
{ action_respond_info("The SAVE_CONFIG command will update the printer config file with these parameters and restart the printer.")}
[gcode_shell_command calibrate_shaper_x]
command: bash -c "python3 scripts/calibrate_shaper.py /tmp/calibration_data_x_*.csv -o ../printer_data/config/shaper_calibrate_x.png"
timeout: 30.
verbose: True
[gcode_shell_command calibrate_shaper_y]
command: bash -c "python3 scripts/calibrate_shaper.py /tmp/calibration_data_y_*.csv -o ../printer_data/config/shaper_calibrate_y.png"
timeout: 30.
verbose: True
[gcode_shell_command clean_tmp_files]
command: bash -c "rm -f /tmp/calibration_data_*.csv"
timeout: 10.
verbose: True
1. ホーミング済みかどうかを確認
確認してまだならG28を実行
2. SHAPER_CALIBRATEコマンドを実行
ADXL345でSHAPER_CALIBRATEコマンドを実行少し時間がかかる
3. 少し待機してデータファイルの書き込みを確実にする
P1000 で1秒待機 P2000にすると2秒待機
4. X軸とY軸のキャリブレーションデータを処理
SHAPER_CALIBRATEで作成したCSVを処理してpngを作成するシェルコマンド実行、CONSOLEから実行するシェルコマンドではディレクトリの指定に「~/klipper」等から書き始めると実行時に「/home/pi/klipper/~/klipper」となってしまうので「script/」や1階層上の場合は「../printer_data」のように書き始めています。
5.一時ファイルを削除
画像処理した後のCSVファイルを削除します、残しておきたい場合はコメントアウトするなりしてください。
6..終了時にSAVE_CONFIGを促すメッセージ表示
本来SHAPER_CALIBRATE実行後に表示されているメッセージは流れてしまっているので再度こちらで表示します。一括でSAVE_CONFIGまで終わらせたい場合は { action_respond_info(“…”)}でメッセージを表示させるのではなく、その行をSAVE_CONFIGに書き換えてください。
gcode_shell_command から始まるマクロは上記の処理で使用するシェルコマンドです。
出来上がったマクロはボタンとして表示されていると思いますのでクリックすると一連の動作が実行され最終的にconfig内にpngファイルが二つ作成されます。


configファイル内にあっては困る場合はフォルダを作成し下記の様にシェルコマンドの保存先を調整してください。
config内にPNGフォルダを作成した場合は「../printer_data/config/PNG/shaper_calibrate_x.png」のようにしてxとy両方分書き換えてください。


最終的には上記の様なグラフがConfig Fileの所で取得できます、クリックすればその場で表示もできるし、ダウンロードしても良いです。
あとはKlipper公式の情報も見てみると良いと思います。


コメント