• ArduX Japan

自動航行ボートを実現するArduPilotのチューニング技術と柔軟性




田中:

公開されているボートの自動航行では、どのような点に注目するべきでしょうか。


ランディ氏:

このビデオでは、自動運転のボートが四角形の航路を移動しています。注目してもらいたいのは、どれだけボートが指定された航路を正確に航行しているかです。もう一つのポイントは、ボートが波や風などの抵抗を受けながら、自動で舵と推力を調整して、目的の位置に移動している点です。さらに注目してもらいたいのは、曲がり角での動きです。直線的な移動に比べて、直角に曲がるのは制御が難しい技術です。しかし、それを円滑に自動で処理して航行している制御方法がポイントです。


田中:

とてもスムーズに航行しているので、動画の様子からだけでは、高度な制御が行われているとは感じられなかったのですが。


ランディ氏:

確かに、航行の様子だけを見ていると、簡単に移動しているように見えるでしょう。しかし、実際には見た目ほど容易ではなく、高度な自動処理が行われています。その一端が分かるビデオが、以前に撮影したブギーボートの様子です。



このビデオを見てもらうとわかるのですが、かなり速い流れの川で、ブギーボートが一箇所にとどまっています。これは、ボート自身の位置を正確に計算して、そこから動かないように推力と舵を高度に制御しなければ、実現できない自動航行です。おそらく、手動による操作では、ここまで正確に一箇所にとどまることはできないでしょう。


田中:

確かに、人の操縦でこのように静止させるのは、ほぼ不可能でしょうね。ここでは、どのような制御技術が使われているのでしょうか。


ランディ氏:

ここで使われているArduPilotの技術は、L1ナビゲーションコントローラーというものです。


https://ardupilot.org/dev/docs/rover-L1.html


この図は、スタート地点のA(origin)からゴールのB(distination)に向かうローバーが、外的な要因で軌道を外れてしまったときに、元のルートに復帰するために必要な推力や舵を計算する式になります。ArduPilotでは、この高度な計算式が組み込まれているので、実際のローバーやボートにインプリメンテーションするときには、パラメーターを調整するだけになっています。


田中:

つまり、複雑な起動修正の計算は、すべてArduPilotが引き受けてくれるので、開発者はその部分を新たにコーディングする必要がないのですね。しかし、そのパラメーターの調整とは、どういった作業になるのでしょうか。


ランディ氏:

実際の作業は、チューニングナビゲーションという画面で設定します。


https://ardupilot.org/rover/docs/rover-tuning-navigation.html


ArduPilotのメリットは、柔軟性の高さにあります。そのため、パラメーターの調整にも、高度な技術は求められません。例えば、ボートの場合には、最大速度やエラー(コースを外れたとき)に対する反応の強弱(ゲイン)などを設定します。仮に、ゲインを強くしておくと、軌道を外れたときに、できるだけ早くコースに戻そうとします。反対に、ゲインを弱くすれば、ゆっくりとコースに戻ります。


ArduPilotのチューニング用パラメーターは、とても柔軟に設計されているので、対象となるボートやローバーなどのビークルに合わせて調整できます。そのビークルが、大きくても小さくても、チューニング次第で柔軟な自動航行が可能になります。


田中:

ちなみに、そのチューニングには技量が求められますか。


ランディ氏:

多少のスキルは求められますが、ArduPilotのWiKiでも多くのサンプルや情報を公開しています。実際の設定で必要になるのは、開発しているボートやローバーの最大スピードや舵などの制御方法に対して、どのように軌道修正を制御したいのかというイメージというか想像力に近いアーティスティックな考え方になります。


具体的なチューニングには、何段階かのレイヤーがあります。最初のレイヤーでは、スピードを調整します。次のレイヤーでは、旋回を調整します。そのあとに、ナビゲーション方法をチューニングします。


チューニングは、プログラミングではないので、開発者でなくても調整が可能です。むしろ、プログラマーよりもドローンの操縦に長けた人の方が、より的確なチューニングが行えます。しっかりした開発体制を備えている組織やチームでは、チューニング専門のスキルを備えた人材もいます。


田中:

今回の動画で自動航行しているボートには、どのようなハードウェアが搭載されているのでしょうか。ボートならではのデバイスとかセンサーなどが、使われていたりするのでしょうか。


ランディ氏:

ハードウェアとしては、とてもシンプルです。高価なモーターやオートパイロットシステムなどは使用していません。ドローンでも利用しているCube オレンジと Here 3 GPSを搭載しています。


http://www.japandrones.com/shopdetail/000000000168/


推進に利用しているスクリューも数千円のものです。

ハードウェアは、とても安価な部品で構成できますが、ボートの自動航行において注意する点があるとすれば、サイズによる推進ラグになります。


田中:

それは、どういう問題なのでしょうか。


ランディ氏:

例えば、大きなボートであれば、推力を上げてもすぐには加速しません。オートパイロットの制御に対して、より迅速に対応させるためには、サイズに合わせた高性能な推力を組み合わせる必要があるでしょうか。


田中:

実際のところ、どのくらいのサイズのボートをArduPilotで制御できるのでしょうか。


ランディ氏:

私の知る限りでは、4〜5メートルほどのボートをArduPilotで制御した事例があります。



最大ではないですが、もっとも高価なArduPilotベースのボートだと思います。ArduPilotをベースに、数々のコンパニオンコンピュータシステムを組み合わせて、自動航行を実現しています。


田中:

こちらも興味深い事例ですね。ちなみに、今回はスクリューを動力としたボートの動画でしたが、ArduPilotによる自動航行は、ヨットのような帆船でも可能なのでしょうか。


ランディ氏:

はい。数年前から対応しています。ちょうどいいビデオがあります。



帆船の制御はとても難しいものです。帆に風が強くあたれば、ボートは転覆してしまいます。そこで、ボートが大きく傾いたときには、帆の角度を変えて風を逃さなければなりません。また、ヨットの場合には、向かい風を受けて前進する帆の制御を行う必要があります。とてもチャレンジングな取り組みですが、こうした制御が可能になるのも、ArduPilotによる自動航行の柔軟性ならではでしょう。


田中:

これは興味深い事例ですね。ArduPilotによる自動航行は、動力が風でも大丈夫というわけですね。


ランディ氏:

そうです。風力だけで自動走行するランドヨットの事例もあります。



それと、もう一つ注目してもらいたいのは、ArduPilotのシミュレーターです。

シミュレーターでは、実際にボートを航行させなくても、波や風などの条件をシミュレーションできるので、新たなボートの開発にも役に立ちます。


次回、シミュレーターにつづく


ライター:田中亘

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

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