-
PX4によるラジコン飛行機の自動操縦(1) 開発背景とシステム構成
DronecodeのフライトコードであるPX4を使用し、ラジコン飛行機の自動操縦システム構築に挑戦されている河上 宣道さんに開発の模様を寄稿していただきます。前編の今回は自動操縦システムの動向調査・システム構成の決定等を紹介します。
自動操縦システムを稼働状態にするのに四苦八苦
機器を購入し使用するソフトウェアも決めましたが、これを稼働状態にするのに四苦八苦しました。
最初に躓いたのが機器の配線です。購入したPixfalconには配線図がついていません。これをラジコン受信機やサーボモーター、GPS、パワーモジュール、スイッチ等と配線しなければなりませんが、配線図無しでは無理です。パワーモジュールも基板むき出しで、機体側の電池やモーターアンプとの配線を自ら半田付けしなければなりませんが、説明書もありません。ネットで類似システムの配線状態を調べ、想像を加えながら配線図を作り上げてから実際の配線を行いました。それでも最初はパワーモジュールの配線を間違えて動力電源の電流情報が取れませんでした。図6が最終的に完成した配線図です。
続いてPCにQGroundControl(QGC)をダウンロードしてからFMU(Flight Management Unit)とUSBコードで繋いで各種のセットアップを行います。作業はQGCのサイトに接続してオンラインマニュアルを読みながら進めます。ファームウェアのインストールから始まり、機体モデルの選択→送信機操縦桿とS/Wの較正→各種センサーの較正→送信機へ飛行モード割当→機体搭載バッテリー情報の登録→ラジコン電波が途絶えた時の対応等各種の安全対策…と続きます。
はじめて使うQGCの操作も良くわからないままマニュアルに従って作業しますが、使用される術語に慣れていないため意味を理解するのに手間取りました。更にFMUには機器の作動状況を示すLEDライトとブザーがあり、その点滅と色、音の種類で機器の状態を知らせますがその意味が判らず、当惑することが続きました。
何とかセットアップを終え、動作確認で略正常にシステムが機能していると思える状況になるまで、一月程掛かりました。
PX4で出来ること(飛行モード)
PX4で飛行機を制御する種類を飛行モードと言いますが、これには次の10モードがあります。
- マニュアルモード(Manual):装置を搭載しない状態と同じ普通のラジコン飛行
- アクロモード(Acro):ロール/ピッチ/ヨーのダンピングを増加させた飛行
- 安定(Stabilized)モード:ロール角/ピッチ角を一定に保った飛行。スティック中立で水平飛行
- 高度(Altitude)モード:安定モードに加えて高度も一定に維持した飛行
- 位置(Position)モード:安定/高度モードは風に流されるが、GPSで風に流されず一直線に飛行
- 旋回(Hold)モード:このモードに入れた点を中心として指定した半径で旋回飛行
- 帰還(Return)モード:出発点に戻ってその周りを指定半径、高度で旋回飛行
- 離陸(Takeoff)モード:自動で離陸
- 着陸(Landing)モード:自動で着陸
- 任務(Mission)モード:地図上で指定した通過点(ウエイポント)を辿る飛行
2.~5.まではシステムの安定化援護を受けて人間が操縦します。6.~10.はシステムによる自律飛行です。人間はモード切替えしかできません。送信機の複数ポジションS/Wに各飛行モードを割り当て、S/Wを切り替えることで希望の機能を実現します。
飛行試験で機能確認
システムを稼働状態に仕上げて機能確認を済ませてから、飛行試験で順次各飛行モードの確認をしました。但し、9. Landingモードは精密対地高度センサーが必要なので実施しませんでした。
これらのモードの中で3. Stabilizedモード、7. Returnモード、10. Missionモードが特に利用価値が高いと判明しました。その他のモードは遠距離進出させる場合には価値があると思いますが、狭い空域で飛行させるラジコン飛行機のフライトには具体的な利用機会が思いつきません。但し8. Takeoffモードは完全自動飛行に必要なモードです。
Stabilizedモード
このモードではスティックを中立にすると自動的に水平飛行をしますので、コントロールの必要がありません。通常ラジコン飛行機を飛ばすには、機体の左右の傾き(ロール)と前後の傾き(ピッチ)を注意深く観察し、常に水平になるようにスティックを小刻みに動かして調整します。同時に速度と高度と方位にも注意して操舵する必要があり、初心者には極めて難しい操作になります。これがStabilizedモードではロールとピッチのコントロールをシステムが肩代わりしてくれるので、操縦者は速度と高度と方位のコントロールに専念できて操縦が非常に簡単になります。
Returnモード
このモードは機体が遠方に行き過ぎて姿勢が判らなくなった時や、ラジコンの電波が切れた時などに自動で出発点に戻す機能です。S/W操作で意識してこのモードに入れたり、PX4のFail Safe設定で異常時に自動でこのモードに入れたりすることができます。このモードに入ると機体は自律飛行で戻ってきますから、非常に価値のある使い方ができます。
Missionモード
このモードでは予めPCの地図上で飛行させたいポイント(Waypoint)を定めて置き、そこを辿る自律飛行をさせることができます。各Waypointの高度も指定できますので3次元的な飛行が可能です。このモードの中にFixed Wing Landing Pattern(固定翼着陸パターン)と称する飛行パターンがあり、飛行機を自動着陸させることができます。ラジコン飛行機の操縦で一番難しいのは着陸です。ロール、ピッチの姿勢を制御しつつ、失速させないように注意しながら減速し、地面に激突させず狙った位置で接地させなければなりません。初心者にはハードルが高すぎます。これをシステムが全自動で実行します。
図7はこのモードで飛行させた時の飛行軌跡と指定したWaypointの関係図です。フライトログデータからダウンロードしたものです。黄色の小さい〇がWaypointで、青線が飛行軌跡です。中央の円の中心がホームポジションで、そこからStabilizedモードで図の下方向に離陸しました。WP6を通過したあたりで180°反転してMissionモードに切り替えました。以後WP1~WP14まで2周を自律で飛行しました。WP14を通過したところでMissionモードを終了しますが、終了後はReturnモードに自動で入るように設定してあるので、ホームポジションに向かって戻り、その周りを周回飛行しています。2旋転後再びStabilizedモードに切り替えて着陸させました。
飛行機ではWaypointを通過させるとその外側に張り出してしまうので、Waypointの内側を通過するようにプログラムされていることが判ります。ログ解析には実際の現場の衛星地図に重ねた飛行軌跡上をアニメの機体で飛行再現する機能もあります。図8に例を示します。
Fixed Wing Landing Patternのテスト
Missionモードの使い方が判ったところで、自動着陸Fixed Wing Landing Patternの試験を行いました。パターンは最終WaypointをLoiterポイントとしてその点を中心とした旋回半径と高度を指定します。あとは着地点Landを指定するだけです。これでMission飛行を終えた後Loiterポイントを中心として指定半径で旋回しながら、指定高度まで降下を開始し、許容誤差内に納まるとLandポイントに向けて降下して着陸します。この間姿勢は勿論、速度、スロットルも自動で調整されます。
図9がこの試験で設定したMissionプランです。⑮LandがHome Positionです。そこからStabilizedモードで南(画面下方向)に離陸して、上空で180度反転したところでMissionモードに切り替えます。以後自律飛行でWaypoint①~⑥を高度50mで飛行し、⑦で45mに、⑧で30mに、⑨で20mに降下します。⑩が着陸のためのLoiterポイントでそこを中心として半径50mの旋回を行い、高度15mに達したら⑮のLandingポイントに向かって着陸降下飛行を行い着陸する、というプランです。
尚、この試験は前回紹介した小型機を壊してしまったので、図10の中型機に器材を付け替えて行いました。小型機の翼幅が1mであったのに対し、これは1.8mと大型です。風の弱い日を選んで試験し、見事成功しました。この時の動画がこちらです。
この時の興味深いログデータの一部をご覧に入れます。図11は高度とスロットルのタイムヒストリーです。赤線はGPSによる高度、これを緑色の気圧高度計によるデータで補正した青色の線が制御に用いられた高度データです。黄色の〇は設定した指示高度です。
高度の制御成績はあまり良くありません。ターン中や指示高度を変更するとその高度に達する前に大きくオーバーシュートします。実際に地上で見ていても、その変化は大きなものでした。
データ解析で判明した着陸進入開始時刻は2分8秒、接地は2分17秒過ぎです。空色の線はスロットルですが、この間もスロットルが激しく制御されているのが判ります。図12は着陸進入中の高度、図13は対地速度のデータです。
高度は地表から下向きを正としているので、負の値になっていますが2分8秒付近で指定の15mになっていること、2分17秒過ぎに約0mであることが判ります。注目されることは2分15秒付近から接地までの間にフレアーが掛かって、高度が滑らかに地面に接していることです。かなり優秀な制御が行われています。
速度はGPSによる対地速度です。着陸降下飛行中に滑らかに減速していることが判ります。接地時の2分17秒過ぎではx方向13m/sec、y方向5m/secの速度成分がありますので、合成対地速度は約13.5m/secと判ります。十分失速速度以上で安定した着陸が行われていることが判りました。
完全自動飛行を実現
各飛行モードを確認したあと、最終目的である離陸から着陸までの完全自動飛行に挑みました。これは次の手順で実行できます。Takeoffモードで離陸させ、離陸完了後の処置をMissionモードに入るように設定します。これで、滑走路に機体を置いて送信機のS/WをTakeoffモードに倒せば、以後全自動で離陸~Mission~Loiter~着陸となります。先を急ぎ過ぎて設定を間違え、中型機を土手に激突させるというハプニングが在りましたが、再度修理完了した小型機に器材を積み戻して無事完全自動飛行を実現することができました。その飛行動画がこちらです。
私のブログの完全自動離着陸の動画のページで他の動画もご覧になれます。
おわりに:一緒にプログラム開発に挑戦しませんか?
私のような素人でもラジコン飛行機を完全自動飛行できることを紹介させて頂きました。この技術を使えばラジコン飛行機の新たな楽しみ方も開けそうです。この新技術に興味を持たれる仲間が増えることに期待します。取り組み当初は手持ち機体の自動飛行を目論みましたが、自動制御の具体的特徴を知った今では、スタント(曲技)機での演技ができると面白いと思いだしています。操縦技術の未熟な私には現状曲技飛行は無理ですが、この技術を活用すれば一流プレイヤーにも負けない飛行が可能になるかも知れません。
いつの日か、プログラムの得意な人と一緒に宙返りやロール、8の字飛行など、更に進んでそれらを連続して華麗な演技を競うF3Aパターンのプログラム開発ができたらと思っています。飛行機の制御とプログラム開発に得意で興味のある方がいらっしゃいましたら、是非一緒に世界に先駆けてチャレンジしませんか?連絡をお待ちします。
尚、本寄稿ではPX4/QGCの具体的な使い方は省略しました。興味のある方は私のブログ「1/3三田式3型改1製作記」または雑誌「ラジコン技術」2020年6月号をご覧ください。