自動航行のためのボート基本チューニング

ardupilot

個人的な意見ですが、ドローンがまっすぐにしか移動しないものであればチューニングはほとんど必要ないと夢想します。しかし現実は左右に曲がったり上昇、下降を移動しながら行います。
それでチューニングを行うのですが。。。
一般的にドローンは誤差を伴いながら移動すると心得てください。PIDチューニングの考え方を見れば理解できると思います。ウェイポイントで指定したとおりびっしり90度に曲がって直線に進むというようには動けません。それはまったく風、水流がない、道路が真っ平らなところでは可能かもしれませんが現実は誤差をもたらす変化が常に生じます。

GPSで航行する場合、GPSが不正確だと”Unhealth AHRS”などと表示され、自動運転(GUIDED, AUTO)などのモードに入れません。(海上では驚くほどGPSは安定します)

ドローンは誤差を伴いながら移動し、その誤差をどれくらいチューニングで減らしていくか、と考えたほうがよいと思います。

自動運転(AUTOモード)の時、出発点をホーム。途中の経由するポイントをウェイポイント(Way Point:WP)といいます。

しばしばドローンのチューニングで”PIDチューニング”という言葉が出ます。目的は操作、自動運転で機体の反応を調整することをいいます。
PIDとはproportional–integral–derivative controllerの略です。Proportionalは比例、Integralは積分, Derivativeは微分の意味で、目的に対してセンサーから得られる差(エラー)を3つの手法で計算して次の出力を決めることをいいます。

以下、無線のテレメトリーが必須です。

最初のチューニング

クルーズスロットルとクルーズ速度

  1. CRUISE_THROTTLE および CRUISE_SPEED パラメータは、スロットルにより望む速度をコントローラで調整できるかを設定します。 この 2 つの値が合理的であり、相互に一貫していることが重要です。つまり、CRUISE_THROTTLE 値 (パーセントで表されます) が、CRUISE_SPEED (m/s で表されます) を達成するために必要なスロットルに近い必要があります。
    これらのパラメータを設定する方法は次のとおりです。
  2. 補助機能スイッチに“Learn Cruise Speed”を設定します。(例:RC6_OPTION=50)
  3. 車両をARMしてManualモードに切り替えます
  4. 50% ~ 80% のスロットルで船を運転します。
  5. 設定した 機能スイッチを数秒間高い位置に動かし、その後低い位置に戻します。
  6. 地上局で「Cruise Learned: Thr:XX Speed:YY」のようなメッセージがあることを確認して、CRUISE_SPEED と CRUISE_THROTTLE が更新されたことを確認します。

スロットル PID チューニング

望む速度に応じるコントローラーは、PID コントローラーを使用して、希望の速度 (捜査社またはオートパイロットによって設定) を達成しようとします。HoldManualを除くすべてのモードでPIDコントローラーは使用されます。
このコントローラーの P、I、および D ゲインは、それぞれ ATC_SPEED_PATC_SPEED_I、および ATC_SPEED_D パラメーターに保持されます。 ATC_SPEED_FF はゼロのままにしておく必要があります。

このコントローラーを調整するための推奨手順は次のとおりです。

  • テレメトリ無線を使用してMission Planner(地上局)を船に接続する
  • PID 情報をMission Plannerに送信するに、GCS_PID_MASK を 2 (スロットル) に設定します。
  • Mission Plannerで、Flight Data 画面を開き、地図の下部にある「Tuning」チェックボックス (中央下) をチェックし、グラフをダブルクリックして「pidachieved」、「piddesired」を選択します。
  • Acro モードでさまざまな速度で車両を運転し、目標にどれだけ忠実に従うかを比較します。
  • piddesired が pidachieved に従うように、ATC_SPEED_P、ATC_SPEED_I を上下に調整します。
  • P ゲインが最も重要なので、最初に調整する必要があります。 車両の速度がぎくしゃくしていて不安定な場合は、このパラメータを下げる必要があります。 車両が速度に達するのが遅い場合は、このパラメータを大きくする必要があります。
  • I ゲインは長期誤差を補正します。 車両が希望の速度に達しない場合は、このパラメータを増やす必要があります。 車両の速度が速すぎるところと遅すぎるところの間をゆっくりと変動している場合は、このパラメータを下げる必要があります。 通常はPよりも低いはずです。
  • Dゲインは、短期間の速度変化に対抗して出力を安定させることを目的としています。 これはゼロのままにすることができます。
  • FF ゲインはゼロのままにしておく必要があります。というのもCRUISE_THROTTLE CRUISE_SPEED は予測制御を排除するベース スロットル出力の計算に使用されるためです。
  • Mission Controllerの基本チューニング画面から設定できます。

最大加速度

  • 他のチューニング値ほど重要ではありませんが、ATC_ACCEL_MAX および ATC_DECEL_MAX パラメータは船の物理的制限に一致するように設定する必要があります。
    これにより、速度コントローラーが不可能な加速を試みることを回避し、オーバーシュートを減らすことができます。
  • Mission Plannerを使用して、前後方向 (別名 X 軸) の加速度をリアルタイムで表示します。Flight Data 画面を開き、「Tuning」チェックボックス (中央下) をチェックし、グラフをダブルクリックして「ax」を選択します。
    値は cm/s 単位であるため、m/s を取得するには 100 で割る必要があることに注意してください。
  • マニュアルモードで船を運転し、フルスロットルにして停止状態から全速力まで加速します。
  • 表示された加速度をガイドとして使用して、ATC_ACCEL_MAX および ATC_DECEL_MAX パラメータを設定します。 パラメータの単位が m/s であるのに対し、表示される値は cm/s 単位である場合があることに注意してください。 車両の加速と減速度が類似している場合、ATC_DECEL_MAX はゼロのままにすることができます。
  • Acro モードで車両を運転し、車両の加速がスムーズで、減速が遅すぎないかをテストします。

スロットルスルー

MOT_SLEWRATE パラメータを使用して、スロットル出力の変化速度を制限できます。

値を 100 にすると、スロットル出力が 1 秒以内に全範囲にわたって変化します。

値をゼロにすると制限が無効になります

Tuning Process Instructions — Rover documentation

ステアリングターンの割合をチューニング

Tuning Turn Rate — Rover documentation

 SKIDタイプ特有のピボットターンの設定

Auto, Guided, RTL もしくはSmartRTLモードでのみその場で回転させることができます。

  • WP_PIVOT_ANGLE は、ピボットターンのトリガーとなる最小角度を保持します。例えばデフォルトの “60 “に設定した場合、車両の方位が次のウェイポイントに向かう時60度以上ずれている場合にピボットターンします。このパラメータを0に設定することでピボットターンを無効にすることができます。
    車両の方位が目的地までの方位から10度以内になると、次のウェイポイントに向かい始めます。
  • WP_PIVOT_RATEは、ピボット旋回時の車両の最大旋回速度(1秒あたりの角度)を設定します。
  • ATC_STR_ANG_Pは、車両の方位誤差を希望する旋回速度に変換します。値が大きいほど、目的地に向かってより積極的にピボットします。
  • ATC_STR_RAT_MAXは、ピボット・ターンを含むすべてのモードにおいて、車両の最大ターン・レート(1秒あたりの度数)を設定します。
  • ATC_STR_ACC_MAXは、すべてのモードにおいて、車両の最大回転加速度(単位:deg/sec/sec)を制限する。

自動チューニング

(2023/9)
もしフライトコントローラーが強力なCPU F7やH7を持っていれば、Quick Tuneスクリプトを使うことができます。(https://discuss.ardupilot.org/t/rover-boat-quiktune-alpha-testers-wanted/101989)(日本語訳
このスクリプトでは

  • ATC_STR_RAT_P
  • ATC_STR_RAT_I
  • ATC_STR_RAT_D
  • ATC_STR_RAT_FF,
  • ATC_SPEED_P, I and D,
  • CRUISE_SPEED
  • CRUISE_THROTTLE
  • PSC_VEL_P, I and D

が設定されます。

サポートされているFCは調べる限り、最近のものじゃなきゃダメです。

パラメーター

WP_PIVOT_ANGLEはピボットターンをする最小の角度が入っっています。
たとえば、デフォルトが60度でピボットターンが始まるところで次のウェイポイントから60度以上にはずれた時ピボットターンが始まります。
パラメーターは30度以下にセットするべきではありません。ピボットターンしたくない場合は0にしてください。
WP_PIVOT_RATEはピボットターンの最大のターン速度(角度/秒)を設定します。
ATC_STR_ANG_Pは望んだ方向のエラーを望むターンの割合に変換します。大きい値だとより激しく方向に向かうことになります。
ATC_STR_RAT_MAXは機体の最大のターン割合(角度/秒)を設定します。ピボットターンに適用されます。
ATC_STR_ACC_MAXは回転加速度です(角度/毎秒毎秒)鷹居値だとより早く回転します。

他のパラメーター

WP_RADIUSはウェイポイントへの接近をどれくらいで達成したとみなすかの半径

WP_OVERSHOOT はWPへの線を外れる許容範囲

 

タイトルとURLをコピーしました