ArduPilotパラメータチェックツール
ArduPilot Parameter Checker 使い方
1. 概要
ArduPilot Parameter Checker は、ArduPilot の .param / .parm / .params ファイルを読み込み、選択した機体フレーム・ファームウェアバージョンに合わせてパラメータを確認するツールです。
主な確認内容は以下です。
機体種類、フレーム種類、ファームウェアバージョンの確認
ArduPilot ParameterRepository のメタデータに基づく範囲、選択値、bitmask の確認
基準パラメータとの差分確認
デフォルト値から変更されたパラメータの表示
デフォルト値から2倍以上、または1/2以下に変化したパラメータの強調表示
フェイルセーフ、バッテリー、アーミング、安全機能などの危険設定確認
フレームに関係しないパラメータを DANGER と誤判定しないためのフレーム別除外
本ツールはパラメータを読み取って確認するためのツールです。機体への書き込みは行いません。
2. 起動方法
EXE版
ArduPilotParameterChecker.exe をダブルクリックして起動します。
Python版
Python 3.8 で以下を実行します。
py -3.8 ardupilot_param_checker.py
CLI で実行する場合の例です。
py -3.8 ardupilot_param_checker.py --no-gui --vehicle Rover --version 4.6.3 --param C:\temp\vehicle.param --csv report.csv
3. 基本操作
Vehicle を選択します。
対象機体に合わせて Plane / QuadPlane / Copter / SingleCopter / Rover / Boat / Sub を選択します。Firmware version を選択または入力します。
例:4.6.3
ArduPilot Docs のパラメータページは詳細バージョンを使うため、できるだけ 4.6.3 のような patch version を指定します。必要に応じて Get stable version を押します。
firmware.ardupilot.org の stable 配布情報から詳細バージョンを取得します。Download metadata を押します。
ArduPilot ParameterRepository から選択したファームウェア系統の apm.pdef.json を取得します。Parameter file に確認対象の .param ファイルを指定します。
必要に応じて Baseline default file に基準 .param ファイルを指定します。
基準ファイルを指定すると、変更された値、差分倍率、2倍以上または1/2以下の差分を確認できます。Run check を押します。
結果を確認します。
DANGER、WARN、MODIFIED、INFO、OK のチェックボックスで表示対象を絞り込めます。Parameter search にキーワードを入れると、パラメータ名に一致する行だけ表示できます。
例:BATT, ARMING, Q_, ATC_, FENCE行をダブルクリックすると、説明、値の意味、範囲、Docsリンク、Repositoryリンクを確認できます。
Export CSV で確認結果をCSV出力できます。
4. 対象フレーム
GUIで選択できる対象は以下です。
GUI選択使用するArduPilotファーム/メタデータ主な対象PlanePlane固定翼PlaneQuadPlanePlaneVTOL/QuadPlaneCopterCopterQuad、Hexa、Octa、Y6、Triなど通常CopterSingleCopterCopterSingleCopter、CoaxCopterRoverRover地上RoverBoatRoverBoat、SailboatSubSubArduSub
内部的には以下も判定対象に含まれます。
内部判定対象判定条件Traditional HelicopterCopter系 FRAME_CLASS=6/11/13CoaxCopterCopter系 FRAME_CLASS=9SailboatRover/Boat系で SAIL_ENABLE=1BalanceBotRover系 FRAME_CLASS=3
5. フレーム毎のチェック内容
Plane
Planeは固定翼として確認します。
Plane系メタデータの範囲、選択値、bitmask確認
ARSPD_ENABLE=1 かつ ARSPD_USE=0 の場合はINFO表示
Q_ENABLE が無効または未設定の場合、Q_* などQuadPlane/VTOL用パラメータは硬い範囲チェックから除外
Vehicle=Plane なのに Q_ENABLE が有効な場合は、QuadPlane選択を促すWARN表示
QuadPlane
QuadPlaneはPlaneファームを使用しますが、VTOL機能を有効なものとして確認します。
Q_ENABLE が有効か確認
Q_FRAME_CLASS が存在するか確認
Q_M_PWM_MIN と Q_M_PWM_MAX の大小関係確認
Q_*, TILT_*, VTOL_* などVTOL関連パラメータを有効機能として確認
Q_ENABLE が無効なのにQuadPlaneを選択している場合はDANGER表示
Copter
Copterは通常のマルチコプターとして確認します。
FRAME_CLASS, FRAME_TYPE の確認
ANGLE_MAX が大きすぎる場合のWARN表示
RTL_ALT=0 の場合、現在高度でRTLするため障害物クリアランス確認のWARN表示
Traditional Helicopter用の H_* パラメータは、ヘリフレームでない場合は硬い範囲チェックから除外
SingleCopter/CoaxCopter用パラメータは、FRAME_CLASS=8/9 でない場合は硬い範囲チェックから除外
SingleCopter
SingleCopterはCopterファームを使用します。
FRAME_CLASS=8 または FRAME_CLASS=9 か確認
FRAME_CLASS がSingleCopter/CoaxCopter以外の場合はWARN表示
SingleCopter/CoaxCopter固有パラメータを有効機能として確認
通常Copter選択時に FRAME_CLASS=8/9 が検出された場合は、SingleCopter選択を促すINFO表示
Rover
Roverは地上車両として確認します。
FRAME_CLASS=1 をRoverとして扱う
FRAME_CLASS=2 の場合はBoat選択を促すINFO表示
FRAME_CLASS=3 の場合はBalanceBotとして内部判定
ATC_SAIL_*, SAIL_* はSailboat無効時に硬い範囲チェックから除外
ATC_BAL_*, BAL_* はBalanceBot以外では硬い範囲チェックから除外
FS_ACTION=0 の場合、フェイルセーフ動作無効としてWARN表示
CRUISE_SPEED<=0 の場合、走行速度設定としてWARN表示
Fence無効時の FENCE_TOTAL=0、Dock無効時の DOCK_*、未使用の EK3_DRAG_* などは誤DANGERにならないよう除外
Boat / Sailboat
BoatはRoverファームを使用します。
FRAME_CLASS=2 か確認
Vehicle=Boat なのに FRAME_CLASS=2 でない場合はWARN表示
SAIL_ENABLE=1 の場合、Sailboat関連パラメータを有効機能として確認
SAIL_ENABLE が無効または未設定の場合、ATC_SAIL_*, SAIL_*, WINDVANE_* などは硬い範囲チェックから除外
Rover/Boat共通のフェイルセーフ、バッテリー、Fence、ログ設定を確認
Sub
SubはArduSubとして確認します。
Sub系メタデータの範囲、選択値、bitmask確認
FS_LEAK_ENABLE=0 の場合、リークフェイルセーフ無効としてWARN表示
フェイルセーフ、バッテリー、ログ、EKF/AHRS関連の共通安全チェック
6. フレーム共通のチェック内容
すべてのVehicleで以下を確認します。
メタデータチェック
ArduPilot ParameterRepository の apm.pdef.json に基づいて確認します。
パラメータがメタデータに存在するか
値が Range の下限・上限内か
Values の選択値に含まれるか
Bitmask に未定義bitが含まれないか
Description内に危険な注意文がある場合の追加判定
基準値との差分チェック
Baseline default file を指定した場合に確認します。
基準値から変更されている場合は MODIFIED
基準値の2倍以上の場合は DANGER
基準値の1/2以下の場合は DANGER
基準値が0で現在値が非0の場合は WARN
正確な比較を行うには、同じVehicle、同じファームウェアバージョン、同じボード、同じフレーム設定の基準ファイルを使用してください。
アーミング、Pre-Arm関連
ARMING_SKIPCHK が有効な場合はDANGER
ARMING_CHECK=0 の場合はDANGER
ARMING_CRSDP_IGN=1 の場合はDANGER
RC / GCS / フェイルセーフ関連
FS_THR_ENABLE=0 はWARN
FS_THR_VALUE が通常範囲外の場合はDANGER
FS_GCS_ENABLE=0 はWARN
FS_GCS_TIMEOUT が極端に短い場合はWARN
FS_OPTIONS の継続飛行系bitはWARN
RC_OPTIONS で受信機フェイルセーフを無視する設定はDANGERまたはWARN
バッテリー関連
BATT_MONITOR=0 はWARN
低電圧、低容量フェイルセーフが両方無効の場合はWARN
BATT_FS_LOW_ACT=0 はWARN
BATT_FS_LOW_ACT=5 または BATT_FS_CRT_ACT=5 はDANGER
EKF / AHRS / GPS関連
FS_EKF_ACTION=0 はWARN
FS_EKF_THRESH=0 はDANGER
AHRS_EKF_TYPE=0 はDANGER
AHRS_GPS_USE=0 はDANGER
Fence関連
Fenceが無効だがFenceパラメータが存在する場合はINFO
FENCE_ENABLE=1 かつ FENCE_ACTION=0 はWARN
FENCE_MARGIN が小さい場合はWARN
ログ関連
LOG_BITMASK=0 はWARN
LOG_BACKEND_TYPE=0 はWARN
PID / コントローラ関連
_P, _I, _D, _FF, _IMAX が負値の場合はDANGER
ATC_, PSC_, RATE_ 系で極端に大きい値はWARN
7. 留意事項
本ツールの結果だけで飛行・走行可否を判断しないでください。
DANGER/WARNが無くても、機体設計、配線、センサ、フェイルセーフ試験、実機確認が必要です。DANGERは原則として運用前に解消してください。
意図的な設定である場合も、理由、運用条件、安全対策を記録してください。ArduPilotのメタデータ範囲は、全フレームで常に有効とは限りません。
Planeファーム内のQuadPlaneパラメータ、Roverファーム内のBoat/Sailboat/BalanceBotパラメータなど、同じファーム内に複数フレーム用パラメータが含まれるため、本ツールでは無効フレームのパラメータをINFOとして除外します。基準ファイルは必ず条件を合わせてください。
ファームウェアバージョン、機体種別、ボード、フレーム、初期化状態が違う基準ファイルと比較すると、差分判定が正しくありません。パラメータファイルのコメントにVehicleやFirmwareが無い場合があります。
その場合、本ツールは選択中のVehicle/Firmware、またはパラメータ名の傾向から推定します。推定結果は必ず確認してください。Docsリンクには詳細バージョンが必要です。
4.6 ではなく 4.6.3 のような詳細バージョンを指定してください。必要に応じて Get stable version を使用してください。メタデータダウンロードに失敗する場合があります。
社内ネットワーク、Proxy、Firewall、GitHub接続制限などで失敗する場合は、別途 apm.pdef.json を保存し、Load metadata JSON から読み込んでください。プロペラサイズは標準パラメータに含まれないことがあります。
コメントやカスタムパラメータに記載が無い場合、INFO欄では不明になります。CSV出力はレビュー記録として利用できます。
DANGER/WARN/MODIFIEDを中心に、設定理由や対応結果を別途記録してください。最終確認はArduPilot公式ドキュメント、機体仕様、実機試験で行ってください。
本ツールはレビュー支援ツールであり、安全性を保証するものではありません。
