> For the complete documentation index, see [llms.txt](https://taiphoon-com.gitbook.io/taiphoon.com-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://taiphoon-com.gitbook.io/taiphoon.com-docs/ja/firmware/ardupilot/tuning.md).

# チューニングの概念説明

<figure><img src="https://content.gitbook.com/content/Cz4IZEBqCk5SBHtJan7e/blobs/qCZXrPN00XEJytDDM8ue/image.png" alt=""><figcaption></figcaption></figure>

#### 一、 PID コントローラーの背景と構成

ArduPilot の**PID-FF-DFF コントローラー** によってドローンの飛行性能を確保します。完全なコントローラーは、次の 5 つの主要部分で構成されます。

* **P (Proportional) 比例項**：現在の誤差に反応します。
* **I (Integral) 積分項**：外力（風など）による長期的な誤差を補償し、速度と姿勢を維持します。
* **D (Derivative) 微分項**：加速度のオーバーシュートを抑制し、ダンピングとして機能します。
* **FF (Feed Forward) フィードフォワード項**：指令に基づいて出力を直接予測します。
* **DFF (Derivative Feed Forward) 微分フィードフォワード項**。

<figure><img src="https://content.gitbook.com/content/Cz4IZEBqCk5SBHtJan7e/blobs/A2FeEhGS5qFPnA3cDrIZ/image.png" alt=""><figcaption></figcaption></figure>

**推奨される調整順序は D -> P -> I -> DFF -> FF です**。

**注意：調整は軸ごとに分けて行うのが最適です。例えば、Roll 軸を調整するときは Roll 軸のパラメータだけを変更してください**

***

#### 二、 調整前の準備作業

一般的には、Mission Planner が提供するクイック計算ツールをそのまま使用し、使用する機体の構成を入力すれば、初期 PID 値をおおよそ見積もることができます

<figure><img src="https://content.gitbook.com/content/Cz4IZEBqCk5SBHtJan7e/blobs/LV3koMW7bLBGmSLu7F1J/image.png" alt=""><figcaption></figcaption></figure>

1. **初期パラメータ(Initial Tune Parameter)の設定**：「初期設定」でプロペラサイズ、バッテリーのセル数と電圧を設定すると、Mission Planner が適切なパラメータを計算するので、そのまま書き込みます。
2. **ログ記録の設定**：正しいログはチューニングにとって極めて重要です。`INS_LOG_BAT_OPT = 5` に設定し、サンプル数を 1024 または 2048 に設定することをお勧めします。
3. **フライトモード**：調整は **Stabilize (自動安定)** または **AltHold (高度維持)** モードで行う必要があり、**Loiter モードで初期チューニングを行うことは厳禁です**。

***

#### 三、 内側ループ - レート PID 調整 (Rate Controller)

これは下位層制御の中核であり、ロール (Roll)、ピッチ (Pitch)、ヨー (Yaw) の 3 つのコントローラーで構成されます。

<figure><img src="https://content.gitbook.com/content/Cz4IZEBqCk5SBHtJan7e/blobs/LzHGF0cgcNJi7VNl6hgh/image.png" alt=""><figcaption></figcaption></figure>

**1. P:D バランスの調整**

目標は、実際の回転速度の曲線を目標曲線に完全に重ね合わせることです。

* **D 項の調整**：D を 30% 刻みで増やし、短い振動が観察されたら、振動が消えるまで 10% 刻みで減らし、最後にさらに 25% 減らします。
* **P 項の調整**：P を 30% 刻みで増やし、速く小さな振動が現れたら、消えるまで 10% 刻みで減らし、最後にさらに 25% 減らします。
* **挙動の判断**：
  * **P が高すぎる**：高周波の振動・揺れが発生します。**P が低すぎる**：応答が遅く、風の影響で揺れやすくなります。
  * **D が高すぎる**：ノイズが増幅され、モーターの振動、金属的な甲高い音、深刻な発熱を引き起こします。**D が低すぎる**：ステップ入力後に明らかなオーバーシュートが発生します。

**2. 絶対ゲインと P:I バランス**

* **全体ゲイン**：P:D バランスが見つかったら、P、I、D を同じ倍率で増やし、振動が発生したら 10-20% 戻します。
* **I 項の調整**：I ゲインが高すぎるとゆっくりとした振動が見られます。低すぎるとスティック操作後に姿勢が中立に戻るまでの遅延が増加します。
* **一般的な経験値**：ピッチとロールでは、P と I は通常等しく、D は P の約 1/10 です。ヨーでは通常 D 項は不要 (D=0) で、I は P の約 1/10 です。

***

#### 四、 外側ループ - 姿勢（安定）制御のチューニング (Attitude Controller)

レート PID が十分に調整されてから、姿勢制御の調整を行います。これは比例 (P) コントローラーで、目標角度と実際の角度の変換を制御します。

<figure><img src="https://content.gitbook.com/content/Cz4IZEBqCk5SBHtJan7e/blobs/kz05U3hGEVub165Q6Bmu/image.png" alt=""><figcaption></figcaption></figure>

* **調整方法**：「拡張チューニング」で **姿勢 P 項** を増やし、振動が出始めたら約 20% 戻します。
* **最大傾斜角**：最大傾斜時にも高度を維持するのに十分な推力を確保するため、通常は `ANGLE_MAX = 30`（30 度）に設定することをお勧めします。

***

#### 五、 スロットルと高度の PID 調整 (Throttle PID)

スロットルコントローラーは垂直加速度と高度を制御します。

<figure><img src="https://content.gitbook.com/content/Cz4IZEBqCk5SBHtJan7e/blobs/unT8p9MjtnstNUmrhGQx/image.png" alt=""><figcaption></figcaption></figure>

1. **ホバリングスロットルの学習**：AltHold モードで 30 秒間安定してホバリングし、システムに `MOT_THST_HOVER` を学習させます。この値が 0.3 未満の場合は、`ATC_THR_MIX_MAX` を 0.9 に設定することをお勧めします。
2. **加速度補償**：
   * `PSC_ACCZ_I` をホバリングスロットルの 3 倍に設定します。
   * `PSC_ACCZ_P` をホバリングスロットルの 1.5 倍に設定します。
3. **垂直位置制御**：`PSC_POSZ_P` を調整すると高度をより積極的に追従しますが、高すぎるとオーバーシュートや振動の原因になります。

***

#### 六、 位置保持の調整 (Loiter/Position Control)

<figure><img src="https://content.gitbook.com/content/Cz4IZEBqCk5SBHtJan7e/blobs/RIWCN9fVcAY9t1sowKQO/image.png" alt=""><figcaption></figcaption></figure>

1. **水平位置制御**：`PSC_POSXY_P` は位置誤差を目標速度に変換します。
2. **水平速度制御**：`PSC_VELXY_P、I、D` は目標速度を加速度に変換します。
3. **運動パラメータの調整**：
   * **LOIT\_SPEED**：Loiter モードでの最大速度を設定します。
   * **PSC\_JERK\_XY**：この値を大きくすると水平制御の応答が速くなりますが、高すぎると飛行が過度にアグレッシブになります。

***

#### 七、 一般的な数値に基づく調整方法

* Mission Planner を開き、一番下の**サーボ調整**を選択します
*

```
<figure><img src="/files/5blPEDTVjzri2bgY02ms" alt=""><figcaption></figcaption></figure>
```

* グラフをダブルクリックし、調整したい軸に応じて表示する軸を選択します。ここでは Pitch を例にします

  <figure><img src="https://content.gitbook.com/content/Cz4IZEBqCk5SBHtJan7e/blobs/6AIxGWFIElnQ14CWiaFZ/image.png" alt=""><figcaption></figcaption></figure>
* 実際に飛行させて、2 本の線が一致しているかを観察します。よく一致していれば PID の状態は良好です。pitch.target の範囲が実際の pitch より大きい場合は、Rate P が不足している可能性があるので、Rate P と Rate I を増やし、2 本の線が一致するまで調整とテストを繰り返します。そうなって初めて、その PID 軸の調整が完了したことになります
