PX4 User Guideを参考に、部品からドローンを組み立てて飛ばそうとしたのですが、色々とトラブルがあり悪戦苦闘したので、共有します。
ちなみに、その時の機体構成なんかはこちらに記事にしてます。
https://qiita.com/sakaeda11/items/44ee98dcaf006273ca30
1.QGroundControl(QGC)でWaiting For Vehicle Connectionと表示されて、機体が認識されない。
PCとフライトコントローラをUSBで繋いであげると、PC上に動作させているQGCで自動的に認識されて表示が切り替わるのですが、そうなってくれないことがあります。
解決方法
単純にフライトコントローラの起動に時間がかかっているだけでした。少し待つと接続されます。
2.ドローンにバッテリーを差し込むと、QGCが、"Dangerously low battery"的なエラーを吐く
PC(QGC)とドローンをUSB接続した状態で、後からドローンにバッテリーを接続すると音声で、**"Dangerously low battery"**と鳴ってびっくりします。
バッテリーはほぼ新品&フル充電なのに、、機体の組み立てで問題が合ったのかも??と心配になったりしまいた。
解決方法
これは、解決方法というか、実は問題なかった、というのが答えになります。
バッテリーを接続するとすぐにフライトコントローラはバッテリー残量推定を始めるのですが、この推定値が0%からだんだんと上がっていって、少し経つと現在のバッテリー残量を占めるようになります。
この推定値が上がりきるまでのタイミングのバッテリー残量が、エラー値になるようです。
(推定に掛かる時間の問題なのか、XTコネクタを差し込んでいるときに差し込み仕切るまでの時間の問題なのかは不明)
(この画面上部の"100%"というところがバッテリー残量。バッテリーを接続すると0から徐々に上がって行きます。)
3.RadioとFlight Modeのセットアップが出来ない
当初、まずは簡単な自律飛行をさせてみたいと思い、プロポやRCなしの構成でつくっていたのですが、これらが無いとQGCで行うRadioとFlight Modeの設定を完了出来ず、、
結局プロポとRC無いとダメなの?
と困ってしまいました。
解決方法
とりあえず無視して大丈夫でした。
赤くなりますが、放置したままでmotor testやArmまでは行えました。
(この先どうやって飛ばすのか、を考えるとなにかしら考えないとですが。)
4.「Arm」しようとして「Preflight Fail: Compasses NN° inconsistent」とエラー表示される
以下の画面で、Disarmedと表示されているセレクトボタンから、Arm状態に切り替えようとしたのですが、
Preflight Fail: Compasses 57° inconsistent
と表示されて先にすすめませんでした。(57という部分は何度か試すと別の値になったりした)
解決方法
Compassのキャリブレーションをし直したら解決しました。
なお、その際フライトコントローラの向きが↓でいうROTATION_YAW_270の方向に組み立てていたのですが、
最初はQGCのデフォルトのROTATION_NONEのままにしていたので、ROTATION_YAW_270にしてキャリブレーションし直したので、
もしかしたら何か影響しているかもしれません。
5.QGCからMotor Setupを行おうとすると「Motor test command not support」と表示されて出来ない
https://docs.qgroundcontrol.com/en/SetupView/Motors.html
にあるようにQGCからMotor testをおこなってみたのですが、
画像の様に「Motor test command not support」エラーが表示されて実行出来ませんでした。
バージョンの問題かと思って、最新のQGCをここからダウンロードし、フライトコントローラにインストールするFirmwareもここのv1.11.0 Beta 1を適用してみたのですが状況変わらずでした。
解決方法
QGCのUIからは実行出来なかったので、
こちらのコマンドから実行してみました。
コマンド実行自体をどうやってやるのか?という話になるのですが、
こちらで聞いたところQGCのMAVLink consoleから実行出来ました。
コマンド詳細は上のリンク先にありますが、例えが
motor_test iterate
と実行すると以下の様な表示が出てモーターが順に動作しました。
6.USBで接続したまま「Arm」しようとすると「Critical: Arming denied! Flying with USB is not safe」と表示される。(無線経由でQGCからArmする方法が分からない)
とりあえずモーターがまわるかをチェックするためにUSB接続したままArm出来ないか試してみたのですが、当然ながらNGでした。
QGCからArmするためには何らかの無線通信でQGCとフライトコントローラを接続する必要がありそうなのですが、やり方が分からず困りました。
解決方法1
以下におおよその事が書いてありました。
https://docs.px4.io/v1.9.0/en/telemetry/telemetry_wifi.html
https://docs.px4.io/v1.9.0/en/telemetry/esp8266_wifi_module.html
規定のWiFiモジュール(ESP8266)を利用していれば、デフォルトのSSID/PWにアクセスすることで良さそう
- ESP8266をフライトコントローラにセットしておく
- QGCとフライトコントローラをUSBで接続し、フライトコントローラのESP8266のSerial Port設定を行っておく
- PCのWiFi設定でESP8266のSSIDに接続する
- QGCは自動的にフライトコントローラと接続する
と言った流れです。
自分の場合はESP8266のSSIDはPixRacerではなく、ArduPilotでPWもardupilotでした。
おそらく生産ロットによってい違うようです。
参考:Arudupilot, ESP8266 wifi telemetry
解決方法2
QGCからCBRK_USB_CHKの値を197848にして、USB接続チェックを無効化する
Parameter Referenceを参照
7.「Failsafe enabled: no RC」と表示されてArm出来ない
"6"の対応で一歩進んだのですが、再び"Arm"しようとすると今度は「Failsafe enabled: no RC」と表示されてArm出来ませんでした。
解決方法
QGCで「RC Loss Failsafe Trigger」をDisabledにすることでこのFailsafeを無効化することができました。
これで、一応Armed状態まで進めるようになりました。