• ArduX Japan

シミュレーションの活用でコードの品質を高める

ArduPilotには、ドローンの飛行力学モデル(FDM)を使用して、実際の動きに関連する物理法則をシミュレートするシミュレーターが用意されている。シミュレーターの活用は、優れたドローン制御コード開発において、とても重要な取り組みだとマッケイ氏は指摘する。その意義と技術の概要について聞いた。(田中亘)


シミュレーターの登場でコード開発が劇的に改善された

田中:

自動運転などでもシミュレーターの利用は制御プログラムの改善にとって有意義だと言われていますが、ドローンやローバーでもシミュレーターの活用は効果的でしょうか?


マッケイ氏:

はい。とても重要です。高品質なコードを開発するためには、ArduPilotに用意されているシミュレーターや自動テストなどの活用は必須です。


例えば、私がドローンの開発に取り組み始めた10年前には、シミュレーターが存在しませんでした。その為、コードを検証するためには、実際にドローンを飛行させる必要がありました。


もしも、その段階でドローンが破損してしまえば、修理するまでコードの改善にも取り組めません。しかし、シミュレーターがあれば、実際に飛ばす前に、コードの働きや問題を確認できます。


田中:

ArduPilotのシミュレーターが登場したのは、いつ頃でしょうか?


マッケイ氏:

8年前です。現在は、数多くのシミュレーターが提供されていますが、最初のシミュレーターが登場したときには、コード開発が劇的に改善されました。


マッケイ氏が紹介するArduPilotのシミュレーションに関連するサイトでは、具体的な仕組みや利用できるシミュレーターの種類が紹介されている。


https://ardupilot.org/dev/docs/simulation-2.html



シミュレーションは、ArduPilotファームウェア(ファームウェアのサーボ / モーター出力)を実行しているSITL(Software in the Loop)プログラムから入力を受け取る。


そして、センサーが実際の場合と同じように、それらの入力から得られたドローンのステータス、位置、速度などをファームウェア・シミュレーションに出力する。


飛行制御は、ジョイスティックやInterlinkなどのコントローラーや、MAVProxyやMission PlannerなどのGround Control Stationプログラム(GCS)からのMAVLinkコマンドを利用する。


開発者が利用するシミュレーターは、SITL(Software In The Loop)が一般的だが、その他にも用途に合わせて数多くのシミュレーターが用意されている。


マッケイ氏:

SITLシミュレーターは、あらゆるタイプのドローンやビークルをサポートできます。

ただし、より実際のフライトに近づけるためには、パラメーターの調整が必要になります。


特に、風や波など物理的な事象に関して、ドローンがどのように反応するかをシミュレーションするためには、精度の高いカスタマイズが重要です。


オートテストで制御コードのデバッグ効率を改善

田中:

シミュレーターを利用する効果がわかるエピソードなどはありますか?


マッケイ氏:

すべてのドローン開発者はシミュレーターを活用するべきだと思います。特に、自動テスト(Auto Test)の利用は効果的です。


自動テストでは、Pythonで書いたコードでシミュレーターを自動で実行して、コードや設計のミスを検証できます。例えば、同じシナリオを繰り返し実行して、開発プロセスを効率化できます。


また、トラブルなどを繰り返して再現することで、開発者が問題を究明できます。


この動画では、ヘキサコプターのモーターが故障したケースを想定したシミュレーターで、ドローンの飛行を検証しています。



田中:

シミュレーターや自動テストを利用するためには、どのくらいのスキルが必要でしょうか?


マッケイ氏:

シミュレーターのパラメータ設定には、C++の開発スキルが必要ですが、自動テストはPythonが書けるならば大丈夫です。


また、ArduPilotのYouTubeチャンネルにも、数多くの解説動画が投稿されているので、容易に自習できます。



(C++コードの例)

https://github.com/ArduPilot/ardupilot/blob/master/libraries/SITL/SIM_Frame.h


長距離飛行など実用化に向けたシミュレーション利用も進む

田中:

安全なコード開発にとって、シミュレーターの活用は重要だという点はわかりました。その他に、シミュレーターが効果的に活用されている事例はあるでしょうか?


マッケイ氏:

機体開発の他には、長距離飛行のシミュレーションがあります。


実際のドローンを数10km以上も飛行させるのは困難ですが、シミュレーターの中であれば地球一周も可能です。


特にロングフライトでは、バッテリーの限界を見極める必要があるので、実際に飛ばす前にシミュレーターでの検証が重要になります。私の知る限りでは、シミュレーターによる検証で、100kmが限界になっています。


こうした数字を見極めたり、その改善のためにもシミュレーターが活用されています。


【主なシミュレーターの一覧】

SITL Simulator

Gazebo

XPlane-10

XPlane-10 Soaring

RealFlight

Morse

Replay

JSBSim

AirSim

Silent Wings Soaring

Last Letter

CRRCSim

HITL Simulators

Autotest Framework

Unit Tests

SCRIMMAGE

Webots

MATLAB and Simulink

JSON interface


ライター:田中亘

IT & ドローン ジャーナリスト

1990年代からIT系ライターとして活躍し、インターネットやWindowsにエンタープライズシステムなど、海外の先端的なテクノロジーから日本企業の取り組みまで、幅広く取材してきた。現在も、AIやIoTにクラウドなど、デジタルトランスフォーメーションに関連するテクノロジーや事例を中心に執筆している。特に、B2B向けのITサービスやソリューションに精通し、国内外のIT企業を数多く取材し、産業新聞や業界紙に寄稿している。この数年は、ワークスタイル変革やシンクライアント、仮想デスクトップなどのテーマで連載や事例の取材を数多く行っている。一方、イベント・セミナーや企業の勉強会などで講師も務め、大手IT系ベンダーのプライベートショーやイベントでは、セミナーのスピーチ原稿やシナリオなども執筆する。