-
ArduPilotによるラジコン飛行機の自動操縦をPX4と比較(1)
オープンソースの自動操縦システムとして有名なArduPilotについて、同じく有名なPX4と比較しての解説を河上 宣道さんに寄稿いただきます。検証に使用した試験機や器材の詳細と、セットアップやフライトモードの差異について紹介します。
背面飛行の確認
ArduPilotのマニュアルにはいかなるフライトモードの時にも背面で指定されたモードを遂行できると記されています。そこで、まずFBWAモードで確認したところ問題なく背面飛行ができましたので、続いて自律飛行のRTLモードで試験を試みました。結果は綺麗に背面でホームポジションに帰還し、そのまま背面で旋回を続けることが確認できました。十分使い物になります。
失速防止機能の確認
この機能では失速を防止するためにFBWAのようなロール制御モードでは要求バンク角と速度を監視して、要求バンク角で旋回するには速度が不足する場合はバンク角を安全な角度まで減らします。実験機の最低速度を10m/秒としてFBWAモードで速度を徐々に落として実験したところ、確かに10m/秒近くまで落とすとロール角の制限が生じることが確認できました。スティックを最大に倒しているのにロール角が明らかに少なくなるのです。そのため失速しないで済みます。実用価値があることが判りました。
グライダーの自動ソアリング機能の確認
次は自動ソアリング機能の確認ですが、まず始めにArduPilotの自動ソアリング機能の概要を説明します。
上図はソアリング機能時の飛行フェーズを示します。
ソアリング機能時の飛行フェーズ
- ウェイポイントを辿るAUTOモードで飛行中、機体がSOAR_ALT_MIN以上にあるときにこの機能をONにするとスロットルはゼロになり、滑空を始めます。
- SOAR_ALT_MIN高度まで降下したらスロットルが再度自動で入れられて、次のウエイポイントの高度に向けて上昇します。
- ウエイポイントの高度がSOAR_ALT_CUTOFF高度より低い場合はそのウエイポイントに達した時、SOAR_ALT_CUTOFF高度より高い場合はSOAR_ALT_CUTOFF高度に達した時点でスロットルが切られて滑空が始まります。
- 滑空中に大気の上昇率がSOAR_VSPEED以上と推定されると機体は自動的にLOITER(周回)モードに入ります。LOITERモードでは機体はサーマルの中心に位置するように旋回位置を調整します。
- LOITERモードからは次の何れかの条件で脱出し、AUTOモードに戻ります。
- SOAR_ALT_MAXに到達した時
- SOAR_ALT_MINに到達した時
- パイロットによってフライトモードが変更された時
- 上昇率がSOAR_VSPEED以下に落ち込み、且つサーマル追及がSOAR_MIN_THML_S秒経過している時
- 機体がSOAR_MAX_DRIFT以上にドリフトした時
確認試験に使用した機体
自動ソアリングの試験に使用した実験機を図3に示します。
これはサーマル工房の1/5スケールのASK-18です。数年前にキットを購入して組み立てました。但し飛行特性が思わしくなく低速で安定した飛行ができないので、実験に先立って翼型を変えて主翼を作り替えました。それによって低速でも安定して飛行するようになり、充分実験機として使えるものになりました。この主翼作り替えに興味のある方は私のブログをご覧ください。
使用したFMU
ここまで確認試験に使ったMicro Pixは、旧式で機能が限られるために自動ソアリング機能が使えないとマニュルに記載されています。そこで最新のCPUを搭載したHolybro社のDurandalを購入しました。図4が購入したDurandal FMU(Flight Management Unit、FCU:Flight Control Unitとも)とGPS/Compas及びパワーモジュールです。
最新機器とあってMicro Pixから大分性能アップしています。CPUはMicro PixではSTM32F427で168MHz/256KB RAM/2MB FlashでしたがDurandalではSTM32H743で400MHz/1MB RAM/2MB FLashに向上しています。更にセンサー類がbuilt-inの防振装置の上に搭載され、温度変化によるドリフト防止のために内部ヒーターも持っています。GPSモジュールも旧型と変わって、ブザーとセーフティーS/Wが内蔵されています。その分配線がスッキリします。
機器搭載状況
新FMUに加えて今回はピトー管式対気速度センサー及び小型カメラも搭載しました。グライダーのソアリングは失速速度に近い低速で飛行させますので、正確な対気速度情報を得ることが重要です。そこで対気速度センサーを搭載した訳です。
小型カメラはパイロット目線で飛行中の動画を撮影したく思ってRunCamのSplit3 Microと言う装置を取り付けました。これらをコクピットに取付けた状況が図5です。機体左側面にピトー管が、パイロット目線位置にカメラが、コクピット床面後方にFMUが見えます。
ソアリング試験結果
上記の実験機を組み上げて実際にソアリング試験を行いました。何度か行った中で比較的成功した例を図6に示します。これは飛行軌跡を3D表示したものです。黄色の旋回軌跡がサーマルを見つけて自動的にLOITERモードに入って、風に流されるサーマルを追いかけて旋回を続けた状況です。
図の右から左に向けて風が吹いていたので機体も旋回しながら左に流れました。この例では3回LOITERモードに入っています。白い点線の四角い枠はAutoモードで辿るWaypointを結んだ経路です。一番上空で旋回した時はサーマルに乗って8旋転して45m程高度を稼いでから降下しています。中間高度で旋回した時は上昇気流が弱く0.1m/sec位の非常にゆっくりした降下率で降下しながらサーマルに乗って流され視界から遠ざかりましたので、FBWAモード(赤線)に切り替えて機体を呼び戻しています。十分実用的なソアリング機能であることが判りました。
この飛行の詳細分析に興味のある方は以下の動画及びリンクをご覧ください。
参考グライダーの自動ソアリング挑戦 その37 ソアリング成功! – 1/3三田式3型改1製作記
また搭載カメラで撮影した動画に興味のある方は以下をご覧ください。
仮想フェンス(GeoFence)機能
ArduPilotにもPX4と同じように飛行範囲を制限する仮想フェンスの機能があります。ArduPilotのそれがPX4のそれと異なる点は次の2点です。
ポイント
- PX4ではフェンスは基本的に円であったがArduPilotでは多角形となる。
- PX4には無かった最低高度のフェンスを張ることができる。
特に2.に興味がそそられます。この機能が正常に働けばアクロバット飛行の練習などで操縦を誤って墜落させることを防げます。そこでこの機能の確認をしました。パラメータ「FENCE_MINALT」で高度を20mにフェンスを張った上で、FBWAモードで高度50m付近からエレベータ操作で降下させますと、エレベータDOWNの操舵が続いているにも関わらず指定高度の20mに達するとあたかもトランポリンのように跳ね返って高度を上げました。この機能は十分使い物になることが確認できました。
1.は円形か多角形かの違いだけで、PX4と全く同じフェンス機能であることを確認しました。
パイロットオーバーライド機能
RTLモードで帰還中にエルロン操作を加えてホームポジションに戻る飛行を妨害してみました。エルロン操作で操縦者の指示によってコースが変更されます。その後エルロン操作を止めるとホームポジションに戻って旋回しました。これでパイロットオーバーライドが正常に機能することも判りました。
この機能を使えば自律飛行の設定で高度を低く取り過ぎていた場合や、考え違いをした場合などに修正が効きます。非常に便利で実用価値が高いと感じました。
自動トリム機能
ArduPilotもPX4と同じようにセンサー較正は送信機のトリムを全てゼロに戻して行います。しかし機体には個々の癖があってトリムゼロではマニュアル飛行時に癖が出て非常に飛ばしにくくなります。特に、FBWAモード等で素直に飛行している状態からマニュアルモードに切り替えると、トリムズレで急激な機体姿勢変化を起こして飛ばしにくいことになります。また、センサー較正後にトリムを戻しておくとと、自律飛行時にそのトリム量だけパイロットオーバーライド機能が働いてしまい、思うように飛行しません。
このような問題に対処するためにArduPilotには自動トリム機能Automatic Trimがあります。パラメータ「SERVO_AUTO_TRIM」を1に設定すると、システムはFBWAやAUTO、CRUISE等の自律飛行に必要なエルロンとエレベータのトリム量を常時モニターして、10秒毎にその値を記憶します。これをマニュアルモードやアクロモードの時に自動的に適用してくれるので、モード変更に伴うトリムズレの問題が発生せず非常にスムースに移行できます。これもPX4には無い便利な機能です。
Synthetic Airspeed(合成対気速度計測)について
ArduPilotにはピトー管式対気速度センサーが無い状態でも他のセンサー情報を合成して対気速度を推測する機能があります。これをSynthetic Airspeedと言います。PX4にも備えられているようにマニュアルが読める部分もありますが、表立っていないので通常のユーザには利用できません。ArduPilotでは一般ユーザでも簡単に使えます。
Synthetic Airspeedの考え方は最近実機の分野でもピトー管式対気速度センサーを補完するものとして、ボーイング787や737MAXでも利用されているようです。速度推定の原理には各種あるようですが、ArduPilotではGPSの対地速度情報とジャイロの姿勢角情報から数学的に算出します。
ArduPilotではパラメータ「ARSPD_TYPE」を0(対気速度センサー非搭載)にすると自動的にこのSynthetic Airspeedになり、それを速度/高度の自動制御に用いる場合は更にTECS_SYNAIRSPEEDを1にセットします。するとこのSynthetic Airspeedが利用できピトー管式対気速度センサーを搭載した機体と同じような扱いができます。その推定精度も最早ピトー管式センサーは不要と思える程正確であることを確認しました。速度制御が重要な自動着陸もこのSynthetic Airspeedで問題なく実施できました。
結論
以上ArduPilotを実際に使用してPX4との違いを主に検討しました。この過程で判明したことはArduPilotはPX4より遥かに多彩な機能を備えていることです。特に自動チューニングや背面飛行、自律飛行時のパイロットオーバーライド機能、或いはグライダーの自動ソアリング機能などは大変面白い機能です。Synthetic Airspeed機能も素晴らしいものです。制御の質もPX4に遜色ないと思われ大変魅力的なファームウェアであることは確かです。
しかし、機能が豊富であるがゆえにそのマニュアルも膨大で全貌を理解するのが大変です。その上マニュアルの表記が冗長な上、理解に苦しむような表現も散見します。この点はPX4の方が遥かにコンサイスです。
従って、ArduPilotはある程度自動操縦に慣れた人が使用するのに向いており、全くの初心者はまずPX4から始められることをお勧めします。
尚、世界的にArduPilotの使用者は大勢いるようでそのコミュニティの活動も活発です。その情報交換場所であるArduPilot Discourceには日々種々の情報が掲載され、参考になります。また判らないことや疑問点があればここに掲示すると短時間のうちに回答が得られることが多く、非常に便利です。
この記事を参考にして自動操縦仲間が増えることを期待します。