Input Shaping 完全攻略 — 加速度センサーで「振動」を補正する物理学

Input Shaping 完全攻略 — 加速度センサーで「振動」を補正する物理学
「速度を上げるとコーナーに波打ちが出る」「ベンチマーク印刷で 100mm 角に縞模様(ゴースティング)が現れる」「フレームがブレるからと諦めていたら、加速度を 5,000mm/s² に下げざるを得ない」。これらは Klipper を導入したばかりのメイカーが最初に当たる壁で、解決の鍵は Input Shaping にある。前回の Klipper 入門で押さえた Host/MCU 二層アーキテクチャの上で、振動の物理を測定し、ステップ波形を補正してリンギングを消すこの機能こそ、Klipper が「単なる速い FW」ではない理由だ。本記事では Input Shaping の原理、加速度センサーの選定、Klipper 0.13.0 で追加された sweeping vibrations の使いこなし、Shaper 種別の選び方までを 2026 年 5 月時点の公式情報に基づいて整理する。
なぜ「速いとブレる」のか — リンギングの物理

3D プリンタが高速印刷でリンギング(ゴースティング・エコーイング)を起こす根本原因は、フレーム・ガントリ・ベルトが固有の共振周波数を持っていることだ。ステッパーから急峻な加速度ステップが入力されると、その周波数成分の中に共振周波数の近傍が含まれていれば、機械系は固有振動数で揺れ続ける。これがコーナー直後に減衰しながら現れる縞模様の正体になる。
抑える発想は2つある。1つは機械を硬くして共振周波数を上げる手段(カーボンガントリ・剛性の高いフレーム・ベルト張力管理)。もう1つは、入力波形側を加工して共振帯域を励起しないようにする手段で、これが Input Shaping だ。航空宇宙やロボットアームの制御で 1990 年代から使われてきた「Posicast Control」や「Zero Vibration Shaper」のアイデアを 3D プリンタに応用した格好になる。
Klipper の Input Shaping 実装は、加速度センサーで実機の共振周波数を測定し、その周波数を打ち消すよう入力ステップ波形を畳み込み演算で整形する。フレームを硬くする物理改造は不要で、ソフトウェアレイヤだけで対処できる。ここに「ホストにリッチな計算資源があるから可能」という Klipper のアーキテクチャ的優位がある。
なお、Input Shaping は Klipper 独自の発想ではなく、Marlin 2.1 にも M593 として公式実装されている。Bambu Lab・Creality K2・Anycubic Kobra S1 のような完成品メーカー機も、それぞれ独自に同等機能を載せている。Klipper の強みは、ADXL345 のような加速度計を直結すれば自動的に共振周波数を測ってくれる「キャリブレーション体験」の側にある。Marlin の M593 は手動で周波数を指定する仕様、Bambu Lab は出荷時に固定パラメータをプリセットする仕様で、ユーザが実機の経年変化に合わせて再測定するワークフローは Klipper のような自動化が確立していない。
物理的な意味を整理しておくと、Input Shaping の畳み込み演算は「インパルス応答を時間軸方向に複数個並べた波形」を入力指令に重ね合わせる処理に相当する。ZV Shaper なら 2 インパルス、ZVD なら 3 インパルス、3HUMP_EI なら 7 インパルスを使う。インパルス数が増えるほど周波数帯域での減衰幅が広がる代わりに、応答波形の遅延(=スムージング)が増える。これがコーナー丸まりの正体で、純粋なトレードオフだ。
加速度センサーの選び方 — ADXL345 / MPU-9250 / LIS2DW / LIS3DH

Klipper が公式サポートする加速度計は、ADXL345・MPU-9250・LIS2DW・LIS3DH の 4 種類だ。それぞれ接続方式と特性が異なる。
| センサ | 接続 | 特性 | 入手のしやすさ |
|---|---|---|---|
| ADXL345(Analog Devices) | SPI | 3D プリンタ業界の事実上の標準。Klipper コミュニティの作例が最も豊富 | BIGTREETECH ADXL345 V2.0 など多数。USD 1桁台で入手可 |
| MPU-9250(InvenSense) | I2C(400kbit/s fast mode 必須) | 9軸 IMU、本来はドローン・VR 向け。Klipper では加速度部分のみ使用 | DIY モジュールが豊富 |
| LIS2DW(STMicroelectronics) | SPI または I2C | ADXL345 より感度が高く、ノイズが低く、温度安定性も良いとされる。ただし内部 400Hz フィルタ起因の 200Hz Nyquist 制限について、Klipper コミュニティに技術議論あり | BIGTREETECH 等の Klipper 向けボードに搭載 |
| LIS3DH(STMicroelectronics) | SPI または I2C | 産業向け汎用センサ。Klipper では公式サポート対象 | 流通量は ADXL345 ほどでない |
「事実上の標準」と書ける ADXL345 から始めるのが、トラブルシューティングの情報量という意味で安全だ。BIGTREETECH ADXL345 V2.0 は USB-C 接続で、Raspberry Pi にケーブル一本で繋がるため配線が劇的にシンプルになる。AliExpress の値引き表示で USD 1桁台、Amazon や eBay でも流通しており、入手難易度は低い。
LIS2DW は仕様書ベースでは ADXL345 より優位な点が多いが、Klipper の Shaper 自動判定が ADXL345 を前提に磨かれてきた経緯があり、極端なエッジケースでは挙動差が出る可能性がコミュニティで議論されている。本気で詰めるなら LIS2DW、まず動かして傾向を掴みたいなら ADXL345、というのが 2026 年 5 月の現実的な選択基準になる。
注意点として、加速度計をプリンタに固定する際、センサ基板の金属パッドや固定ネジがフレームに導通すると、グランドループが形成されて MCU やホスト側の電子部品を破損するおそれがある。公式ドキュメントは「センサとフレームを電気的に絶縁すること」を明記しており、樹脂製のマウントや絶縁ワッシャを介して固定するのが鉄則だ。Voron コミュニティでは、3D 印刷した PETG 製マウントを介して固定する作例が標準化されており、Printables や Thingiverse で機種別のマウントが入手可能だ。
経時管理の観点では、加速度センサーは毎回の印刷で常設しておく必要はない。共振周波数はフレームの剛性とベルト張力で決まる物理定数に近く、印刷頻度が普通のレベルであれば数ヶ月単位で再測定すれば十分だ。ただし、エンクロージャ内温度が大きく変わる構成(チャンバーヒーター追加、季節要因)や、ベルトを張り直した直後、トレベル装着など機械的な大改修の後は再測定したほうが良い。Klipper のドキュメントは「温度変動による共振シフト」を明示しており、これが EI 系 Shaper(共振変動への耐性が高い)が常用される根拠になる。
ホスト側の準備 — Python 依存と SPI 設定

ADXL345 を使う場合、Raspberry Pi の SPI バスにつなぐのが最もシンプルだ。Klipper の Measuring_Resonances.html ドキュメントに沿って、まず Pi 側でいくつかの Python ライブラリを入れる。
sudo apt update
sudo apt install -y python3-numpy python3-matplotlib libatlas-base-dev libopenblas-dev
これは Klipper の shaper_calibrate モジュールが NumPy・Matplotlib・BLAS 系の数値計算ライブラリに依存しているためで、入れ忘れると共振解析スクリプトがインポートエラーで落ちる。Pi 5 + Klipper 0.13.0 の組み合わせでは、依存解決にかかる時間は数分程度に収まる。
SPI バスは raspi-config から有効化する必要があり、/boot/firmware/config.txt(Bookworm 系)の dtparam=spi=on を確認する。ADXL345 V2.0 の USB-C モデルを使う場合は SPI 設定は不要で、USB シリアルで Klipper ホスト MCU として認識される。これが BTT が USB 直結モデルを推す理由でもある。
printer.cfg 側では、Pi をホスト MCU として扱う設定と加速度計の宣言、共振テスタの構成を加える。例として ADXL345 V2.0 USB モデルを使う場合は次のような最小構成になる。
[mcu adxl345]
serial: /dev/serial/by-id/usb-Klipper_rp2040_xxxxx-if00
[adxl345]
cs_pin: adxl345:gpio13 spi_bus: spi0a axes_map: x, y, z
[resonance_tester]
accel_chip: adxl345 probe_points: 100, 100, 20probe_points は X/Y 平面で sweeping vibrations の動作領域を確保できる位置を指定する。Klipper 0.13.0 の sweeping vibrations モードは X/Y 各軸とも周辺に ±30mm のクリアランスを必要とするため、ベッド中央近辺で 60mm × 60mm の余裕がある場所を選ぶのが安全だ。
Klipper 0.13.0 の sweeping vibrations を使う

Klipper 0.13.0(2025 年 4 月 11 日リリース)で追加された sweeping vibrations は、従来の共振テストの弱点を補う新方式だ。従来は 1 点に固定したまま離散周波数で振動を加える方式だったため、その点だけにある摩擦・遊び・剛性低下が結果に紛れ込みやすかった。新方式はツールヘッドを動かしながら高周波振動を加え、より「機械全体としての」共振特性を測る。公式 PR(#6723)の説明によれば、この変更で再現性と精度が改善する。
sweeping vibrations は 0.13.0 以降ではデフォルトで有効になり、TEST_RESONANCES AXIS=X のような従来コマンドをそのまま使うだけで新方式の挙動になる。逆に旧来の挙動に戻したい場合は、[resonance_tester] セクションに sweeping_period: 0 と accel_per_hz: 75 を加える。これは 0.13.0 への移行で挙動が変わって困るユーザのための互換オプションで、通常は触る必要はない。
実測の流れは次の通り。Mainsail のコンソールから SHAPER_CALIBRATE AXIS=X を実行すると、Klipper はツールヘッドを設定範囲でスイープしながら振動を加え、加速度計のサンプルを取得し、自動的に最適な Shaper 種別と周波数を提案する。X 軸が終わったら Y 軸でも同じ手順を踏む。所要時間は軸ごとに 1〜2 分程度。プリンタが派手に振動するため、ベッドの上に重いものを置かないことと、ホットエンドが温まっていない状態で実施することを推奨する。
Shaper 種別の選び方 — ZV / MZV / EI / 2HUMP / 3HUMP

Klipper は 6 種類の Shaper を提供しており、スムージング量(ステップ波形の鈍り)の少ない順に並べると ZV < MZV < ZVD ≈ EI < 2HUMP_EI < 3HUMP_EI となる。スムージングが少ないほどコーナーがシャープに保たれるが、共振周波数の測定誤差に弱い。スムージングが多いほど誤差耐性が上がる代わりに、細部が丸まる。トレードオフの理解が選択の前提になる。
| Shaper | 特性 | 推奨用途 |
|---|---|---|
| ZV | スムージング最小、シャープ重視 | 共振周波数を正確に測れていて、細部のシャープさを最優先する場合 |
| MZV | バランス型、最少限のスムージングで実用的振動低減 | 多くのプリンタで「最初に試す」推奨。Klipper 公式も推奨 |
| ZVD | ZV を畳み込んだ二段型 | EI と性質が近く、現場では EI に置き換わりがち |
| EI | 共振周波数の変動への耐性が高い | 温度・摩耗で共振が動く環境、長期運用 |
| 2HUMP_EI | 2 つの共振ピークに対応 | 主共振の他に副共振がある機械、複合構造のフレーム |
| 3HUMP_EI | 広帯域の振動を抑える | 公式ドキュメントによれば shaper_freq=50Hz 設定時、27.5〜75Hz の範囲で振動を 5% 以下に低減 |
公式ドキュメントは「ほとんどのプリンタで MZV または EI を推奨」としており、最初に試すべきは MZV だ。Klipper の SHAPER_CALIBRATE は max_accel と smoothing のグラフを出力し、各 Shaper の推奨スコアを提示するため、表示された推奨をそのまま採用するのが現実的なワークフローになる。Voron Trident のような剛性高めのコア XY 構造で、X 軸 60Hz・Y 軸 45Hz 前後がよく出る共振帯になる。
注意点として、2HUMP_EI と 3HUMP_EI は「単一周波数を打ち消す」用途には向かない。これらは複数周波数帯にまたがる振動を抑えるための Shaper であり、shaper_freq の設定方法は ZV や MZV と異なる(公式 Resonance_Compensation ドキュメントの該当節を参照)。ここを誤解すると「3HUMP_EI に変えたのにリンギングが悪化した」という現象が起きる。
実用上は、最初に MZV と EI を比較して、リンギングが残るなら 2HUMP_EI を試す、それでも気になる軸だけ 3HUMP_EI を当てる、という順序が無難だ。SHAPER_CALIBRATE は max_accel と smoothing の組み合わせ表を返すので、自分のプリンタで使いたい加速度(例えば 10,000mm/s²)に対して各 Shaper がどの程度のスムージング量で済むかを見比べる。同じ加速度でスムージングが少ない Shaper を選ぶというのが、最もシンプルな決定基準になる。
X 軸と Y 軸で別の Shaper を選ぶことも頻繁にある。例えば「X 軸はガントリが軽くて MZV で十分、Y 軸はベッドが重くて 2HUMP_EI が必要」という構成は CoreXY 機にもよく出現する。printer.cfg の [input_shaper] セクションは X/Y 個別に shaper_freq と shaper_type を設定できるため、SHAPER_CALIBRATE の結果を素直に反映させる構成にすればよい。
より高度なチューニング — Klippain Shake&Tune

Klipper 標準の SHAPER_CALIBRATE で実用上は十分だが、コミュニティ製の Klippain Shake&Tune を併用するとさらに踏み込んだ解析が可能になる。Frix-x が GitHub で公開しているこの拡張は、軸入力レスポンスのクロス相関、ベルトテンションバランス、CoreXY のキネマティクス対称性、軸のクラッキング音検出などを自動グラフ化する。
導入は KIAUH の追加スクリプト経由で行い、Mainsail のマクロから SHAKETUNE 系のコマンドが呼べるようになる。ドキュメントが英語のみだが、PR で多言語化が進行中だ。「自動チューニングで不満が出てきた段階」で導入する位置付けがちょうど良い。Klipper の標準を理解せずに Shake&Tune に飛びつくと、結果のグラフを読み解けず混乱するため、まずは Klipper 標準を一通り通す順序を勧める。
トラブルシューティング — 失敗例の典型パターン

Input Shaping のチューニングで初心者がハマるパターンには、よくある類型がある。最初の遭遇率が高いのが「センサが認識されない」エラーで、adxl345 'mcu' not connected 系のメッセージが表示される。原因のほとんどは USB-C ケーブルの不良、CS ピン設定の typo、Klipper への mcu 名追加忘れのいずれかだ。BTT ADXL345 V2.0 の USB モデルなら、/dev/serial/by-id/ の下に新しいデバイスが現れているかをまず確認する。
次に多いのが「加速度値が異常に大きい」「グラフがノイズだらけ」のケース。これはセンサとフレームの絶縁不良、SPI の配線が長すぎる、ケーブルがステッパー線と並走している、といった電気的問題が大半を占める。SPI のクロック周波数を下げる(spi_speed: 5000000 から 1000000 に変更)と改善することがあるが、根本的にはケーブル取り回しの見直しが必要だ。
「SHAPER_CALIBRATE が走るがリンギングが残る」というケースもある。これはツールヘッドの加速度センサーがしっかり固定されておらず、振動測定そのものが減衰している場合に多い。マウントを再設計して剛性高く取り付け直すか、Shake&Tune で個別軸の応答を確認するアプローチに切り替える。Klipper の自動キャリブレーションが万能ではない領域も認識しておく必要がある。
最後に「最初は良かったが、半年後にリンギングが復活した」というパターンは、ベルトの伸び・プーリーの摩耗・ベッド合金の経時変形などが原因で共振周波数が変動した結果だ。Klipper の Input Shaping は静的な値を保持するため、機械が変われば再測定が必須になる。EI 系 Shaper は共振の変動に耐性があるため、長期運用ではこちらを選んでおくのが保守的な判断になる。
実機運用での注意点と「効きすぎ」の見極め

Input Shaping は強力な機能だが、副作用もある。スムージングを上げすぎると、ベンチー(船型ベンチマーク)の窓枠やロゴ部分のような細部のディテールが角落ちしたように見える。これは shaper_freq を実測値より低く設定したり、3HUMP_EI のような高スムージング Shaper を不要に選んだりすると顕著になる。
逆にスムージングが足りないと、リンギングは残ったままになる。チューニングを詰めるなら、X 軸 / Y 軸の Shaper を別個に設定し、max_smoothing パラメータで許容スムージング量を制限するのがコツだ。Klipper 公式は max_smoothing の目安として 0.2〜0.4 を提示しており、CoreXY の硬めの構成なら 0.2、ベッドスリンガで剛性低めの構成なら 0.4 程度を起点にすると、現実的なバランスが取りやすい。
加速度センサーの取り付け場所も結果を左右する。ホットエンドのキャリッジ上に置けば、その点の振動を最も忠実に拾うが、ガントリーの揺れまでは捉えにくい。ベッド上に置いて Y 軸を測る場合は、ベッド側の振動特性が混ざる。Voron や Trident のような構成では、ホットエンド側に常設するために BTT EBB 系の CAN Bus ツールヘッドボード(ADXL345 統合版)を使うのが合理的だ。
まとめ — Input Shaping を「物理現象として理解する」

Input Shaping は加速度を上げるための魔法ではない。フレーム・ガントリ・ベルトという機械系の共振を、加速度センサーで測り、入力波形側で打ち消す制御工学の応用だ。Klipper はこのプロセスを ADXL345 一個と SHAPER_CALIBRATE コマンドで完結できる体験まで作り込んでおり、Klipper 0.13.0 の sweeping vibrations モードでさらに測定の信頼性が上がった。物理を理解した上で測定する習慣を持てば、Shaper 種別の選択も Shake&Tune の解析グラフの解釈も、自分の機械の癖との対話として楽しめるレベルに到達する。
明日(Day 3)は同じ「ホスト計算による高度な制御」のもう一つの柱、Pressure Advance を扱う。エクストルーダー内部の流体力学を補正するこの機能は、Input Shaping と並んで Klipper の代名詞であり、フィラメント別の最適チューニングで仕上がりが大きく変わる領域だ。コーナーでのフィラメント漏れ、シーム部のアンダーエクストルージョン、加減速時の押し出し量のばらつきといった現象を、PA の数値ひとつでどこまで抑えられるかを実測ベースで掘り下げる予定。
なお、Klipper の前提知識については Day 1 の Klipper 入門 2026 を参照されたい。Bambu Lab や Creality K2 などのメーカー機の Input Shaping 実装は本家 Klipper とは別軸で発展しており、本記事の手順は本家 Klipper を前提とした内容であることに留意する。Creality K2 Plus の Klipper フォークでは sweeping vibrations を含む 0.13.0 以降の機能が、ファームウェア更新のタイミングで順次取り込まれている。Anycubic Kobra S1 の Klipper-go も類似の追従ペースで動いている。
最後に運用面での補足を一点。Input Shaping の設定値は印刷物そのものには反映されない。スライサー側の加速度設定を 10,000mm/s² に上げても、Shaper が共振を抑えていなければゴーストは出る。逆に Shaper をしっかり当てた状態なら、スライサー側の加速度を以前より大きく設定して時短を狙う合理的な根拠になる。Bambu Studio や OrcaSlicer でファイル別に加速度プロファイルを切り替える運用と組み合わせれば、形状ごとに「速度優先」「品質優先」を使い分ける現実的なワークフローが組み上がる。Input Shaping は最終的にこの「攻めた印刷設定を許容する余地を作る」ための土台として機能する。
参照
- Klipper 公式 Measuring Resonances
- Klipper 公式 Resonance Compensation
- Klipper 0.13.0 リリースノート(Discourse)
- Klipper PR #6723 — sweeping_vibrations resonance test method
- BIGTREETECH ADXL345 V2.0 Wiki
- Klippain Shake&Tune(Frix-x GitHub)
- Marlin M593 Input Shaper 公式ドキュメント





