ドローン関連のコラムを書いていることもあり、メディアの方々やコンサルティング先の方々から「日本はものづくりやロボット分野が強いのにドローンではなぜDJIに先行されているのか」とか、「DJIはコンスーマー用途で産業用途では使えないんでしょう?」といった質問をよくうける。
- Advertisement -
質問そのものに誤解や不正確な部分があると思っている。それは「日本はものづくりやロボット分野が強い」という部分で、果たして「日本はものづくりやロボット分野が強い」のかということだ。
これはある部分、特に精密部品やセンサー技術といったところ、そして、ロボットも工場等で使う産業用のアームロボットに関しては確かに世界でも名だたる技術を持っているけれど、ドローンのように、ソフトウェアが中心で、そして、「自律移動」を行う技術に関しては、日本は強いとはいえない。
日本にも10社以上のドローンメーカーがあるが、その中でも8割以上がDJIのフライトコントローラーを使って、「組立て」「調整」を行っているのみであり、それでは当然、DJIを超えることは難しい(多くの日本のドローンメーカーはDJIが標準では用意していない重いペイロード<積載物>を載せるためのドローンや耐久性のあるモーターを使用するなどしてオリジナル機としている)。
- Advertisement -
こういった技術は、ドローンメーカーだけの問題でなく、大学等の研究においても、「自律移動」の専門的な研究家が日本では少ない。
また、「コンスーマー用途」と「産業用途」というものも、現在、PCやスマートフォンに明確な「コンスーマー用途」と「産業用途」といった区分けがないように、DJIのドローンもある分野では産業で使えるし、ある分野では使えないといった、その用途によって異なるというものだ。単純にいえば、空撮を中心としたもの(RGBカメラだけでなく、サーマルカメラやマルチスペクトラムカメラなども含む)とそれ以外のものといった区分けが分かりやすいだろう。
そのため、それ以外のもので、より安全性や安定性が求められるといった点において、日本政府の施策といった部分もあるが、日本のドローンメーカー各社が物流にフォーカスしている会社が多いというのもそういった背景がある。
また、日本ではまだ本格的な議論は起きてはいないが、航行等のログデータ流出やトラブル時の解析といった観点から、各国でそういった管理をコントロール可能なものにしていくための議論が起こってきている。ドローンのような「自律移動」するロボット、それは空だけでなく、陸上、水上、水中などで様々なものが、現在、世界各国で開発されているけれど、そこに対して、日本でもキャッチアップしていくために必要な内容に関して解説していく。
自律移動のプロセス
移動型ロボットが自律移動するには以下のプロセスを経ていく。
- Advertisement -
1.自己位置推定 (Localization)
2.周辺環境の地図構築 (Mapping)
3.経路計画 (Path Planning)
4.経路追従 (Path Following)
1.自己位置推定 (Localization)
自己位置推定はドローン自身が今どこにいるのか,そしてドローンがどちらの方向を向いているのかを各種のセンサデータを使用して推定することをいう。これは各種のセンサデータには必ずノイズが含まれており、そのノイズをモデル化し、そのモデル化した内容を、確率手法を使って表現する。それらを統合することにより,ドローンの位置を決定するという手法が一般的に使用される。
これが後述する拡張カルマンフィルターで処理される部分だ。例えば、ドローンでは、フライトコントローラーに内蔵されている加速度計や人工衛星からの情報(GPSなど)を統合して、時々刻々と変化するドローンの位置を推定するために用いられている。カルマンフィルターは、目標物の時間変化を捉えるための法則を活用して、目標物の位置について現在(フィルター)、未来(予測)、過去(内挿あるいは平滑化)を推定することができる。
2.周辺環境の地図構築 (Mapping)
ドローンの周辺がどのような状態なのか、どこに障害物が存在するのかなどを判断するために,センサデータから地図を構築する。その際、センサデータにはノイズが含まれているため,確率的に地図を表現することが一般的だ。また、ドローンが移動するため、以前作成した地図と現在作成した地図同士を重ね合わせて、地図を拡張していくことも重要だ。
3.経路計画 (Path Planning)
経路計画では、自己位置推定と作成した地図情報を用いて、どの経路を飛行すれば安全で走行距離が短く、かつ各ドローンの力学モデルに沿った航行ができるかをドローン自身が判断するものだ。一般的に、各経路のコスト計算を複数回行い、経路コストが最小になるような経路を一意的に引くことで、経路計画を行う。なお、その方法は、使用する地図によってさまざまだ。
4.経路追従 (Path Following)
経路追従は、経路計画で引いた経路に対して、周辺環境を考慮しながら安全にドローンが経路を追従できるようにロボットを制御することをいう。ドローンの場合、風向きや風速などを考慮してドローンの速度などを制御することも含む。この実行に関しては、後述するPID制御が使われるケースが多い。
フライトコントロール内のプロセス
上記で解説した自律移動のプロセスの実行に特化しているのが、フライトコントローラーとなる。
フライトコントロール内のプロセス
上記解説の1.自己位置推定がEKFで行っており、2.周辺環境の地図構築および3.経路計画が主にコマンド部分、4.経路追従がコントロールで行っている。
■EKF(Extended Kalman Filter:拡張型カルマンフィルター)とは?
ジャイロ、加速度計、コンパス、GPS、気圧および超音波などのセンサーを使って、ドローンの位置、速度および角度の方向を推定している。しかし、前述したように各種のセンサーデータには必ずノイズが含まれており、その誤差のある観測値を用いて、ドローンといった移動型ロボットのような動的システムの状態を推定あるいは制御するための、無限インパルス応答フィルターの一種がカルマンフィルターである。
カルマンフィルターに対して、拡張型カルマンフィルターの違いは、比例関係が成り立っている線形を対象にしているものはカルマンフィルターで処理し、線形でない非線形を対象にしているものは、拡張型カルマンフィルターで処理される。
線形と非線形
フィルターは以下のプロセスで動作している。
1.IMU角速度を積分して角度位置を計算する
2.IMU加速度は、本体X、Y、Zから北、東および下軸への角度位置を使用して変換され、重力に対して補正される
3.加速度を積分して速度を計算する
4.速度を積分して位置を計算する
1)から4)までのこのプロセスは、「状態予測」と呼ばれる。「状態」は、ロール、ピッチヨー、高さ、風速などを推定しようとするための変数となっている。
5.推定されたジャイロと加速度計のノイズは、IMUデータを使用して計算された角度、速度および位置の誤差を推定するために使用される。
これらのパラメータを大きくすると、フィルター誤差推定値がより速く増加させる。他の測定値(GPSなど)を使用して修正が行われない場合、この誤差の見積もりは増加し続ける。これらの推定誤差は、「状態共分散行列」と呼ばれる大きな行列に取り込まれる。
ステップ1)から5)は、新しいIMUデータを得るたびに、別のセンサーからの新しい測定値が得られるまで繰り返される。完璧な初期推定、完璧なIMU測定、完璧な計算があれば、他の計算は必要なく、飛行中に1)〜4)を繰り返すことができる。しかし、初期値の誤差、IMU測定の誤差、および計算の丸め誤差が生じるため、速度と位置誤差が起こってしまう。
拡張カルマンフィルターアルゴリズムは、IMU、GPS、コンパス、気圧計、および他のセンサーからのデータを結合または融合して、位置、速度および角度方位のより正確で信頼できる推定値を計算する方法を提供している。
6.GPS測定値が到着すると、フィルターは、4)からの予測位置とGPSからの位置との間の差を計算する。この違いを「イノベーション」という。
7.6)の「イノベーション」、5)の「状態共分散行列」、およびで指定されたGPS測定誤差を組み合わせて、各フィルター状態の補正を計算する。これは「状態訂正」と呼ばれる。
このプロセスがカルマンフィルターの優れた部分だ。さまざまなエラーとさまざまな状態の間の相関の知識を使用して、測定されている状態以外の状態を修正することができるためだ。例えば、GPS位置測定は、位置、速度、角度及びジャイロバイアスの誤差を補正することができる。
補正量は、状態の誤差と測定誤差の仮定された比によって制御される。これは、フィルターが自身の計算された位置がGPS測定よりも正確であると考える場合、GPS測定からの補正がより小さくなることを意味する。自ら計算した位置がGPS測定値よりも正確でないと考えるならば、GPS測定値からの補正値が大きくなる。想定されるGPS測定の精度は、パラメータによって制御される。
8.「状態訂正」による不確実性の減少を計算し、「状態共分散行列」を更新し、ステップ1に戻る。
このプロセスがEKFとなるが、このフィルターをより正確にしていくためには、多くの実験データが必要となる。DJIは大量のユーザーの飛行ログデータをベースに、ディープラーニングなどのAIを使い、このフィルターの精度を向上させていった。そのため、Phantom3が開発されたころには、その他のドローンメーカーには追いつくことが出来ないくらい、精度の高いEKFを作ることに成功したのだ。
PID制御とは?
EKFおよびその後の操作やコマンドによって指示されたポジションに移動するコントロールで使われるのがPID制御である。PID制御(Proportional-Integral-Differential Controller)は、制御工学におけるフィードバック制御の一種であり、入力値の制御を出力値と目標値との偏差、その積分、および微分の3つの要素によって行う方法のことだ。
基本的なフィードバック制御として比例制御(P制御)がある。これは操作量を制御量と目標値の偏差の一次関数として制御するものである。ここで、ある制御対象の制御する量を制御量、出力などと呼び、制御量に追従させたい希望の値を目標値と呼び、目標値を得るため制御対象を操作する量あるいは制御対象に入力する量を操作量、入力などと呼ぶ。
PID制御では、この偏差に比例して操作量を変化させる動作を、比例動作あるいはP動作(PはProportionalの略)という。この定数は比例ゲイン、Pゲインと呼ばれる。
比例制御においてはPゲインを変えない限り、入力値に対して出力値は常に決まっている。 しかし、実際に制御を行う場合には同じ入力値に対しても周囲の環境などによって出力値を変えなければならないことがある。
例えば水槽に水を60ℓに保ちたいときにその水槽からの排出量が1ℓのときと5ℓのときではその水量を保つために必要な水量を変えなければならない。 このような状況下で5ℓの排出量の時に1ℓの排出量の時に60ℓを保つPゲインの値を使用して比例制御を行うと、水量が足りず目標値を保つことができない。このようにして生じる制御結果と目標値との偏差を定常偏差またはオフセットという。
残留偏差をなくすために周囲の環境が変わるたびに最適のPゲインを決定しなおすのは難しい。そこで残留偏差が存在する場合、その偏差の時間積分に比例して入力値を変化させる動作をする。つまり偏差のある状態が長い時間続けばそれだけ入力値の変化を大きくして目標値に近づけようとする役目を果たす。この定数は積分ゲイン、Iゲインと呼ばれる。
この偏差の積分に比例して入力値を変化させる動作を積分動作あるいはI動作(IはIntegralの略)という。このように比例動作と積分動作を組み合わせた制御方法はPI制御という。このPI制御に関して、積分時間が小さいほどI動作の寄与が大きくなり残留偏差の矯正が迅速に行われるが、小さすぎると目標値を行き過ぎたり(オーバーシュート)、目標値の前後を出力値が振動したり(ハンチング)する現象を起こすことがある。積分動作は制御系の位相を遅らせる効果を持つので系を不安定にしやすい。
一方、周囲の環境が変化したり制御対象に撹乱が加わったりすることで出力値が急に変動することがある。このような場合にもPI制御は出力値を目標値に常に近づけようとする。しかし、I動作はある程度時間が経過しないと働かないため、どうしても出力値を目標値に戻すために時間がかかる。このようなPI制御の問題点を解決するために、もう一つ項が追加する必要がある。
この項は急激な出力値の変化が起こった場合、その変化の大きさに比例した入力を行うことで、その変化に抗しようとする役目を果たす。この定数は微分ゲイン、Dゲインと呼ばれる。この急激な出力値の変化の状態は微分時間と呼ばれる。微分時間の物理的意味は、ある一定の変化率の出力値の変動が継続したときにP動作とD動作の項が同じになるのに要する時間である。微分時間が大きいほどD動作の寄与が大きくなり変動へ対処が迅速に行われるが、大きすぎると今度は逆方向へ変動したりすることになり制御が不安定になる。
この偏差の微分に比例して入力値を変化させる動作を微分動作あるいはD動作(DはDerivativeまたはDifferentialの略)という。上記のように比例動作、積分動作、微分動作を組み合わせた制御方法をPID制御という。操作量Uが比例項、積分項、微分項の3つの和となることから、3項制御とも呼ぶ。
PID制御において適切な比例ゲイン、積分ゲイン(または積分時間)、微分ゲイン(または微分時間)を決定するには制御対象の入力に対する応答を調べておく必要がある。 このためには入力値を階段状に変動させた時に出力値が応答しはじめるまでに要する時間(無駄時間)、応答しはじめてからの変化の速度(時定数)、入力値の変化量と出力値の変化量の比(プロセスゲイン)などを測定し、その値から設定する方法がある。無駄時間が長く時定数が小さい(応答開始に時間がかかるが、応答がはじまると急激に変化する)制御対象にはPID制御は不向きである。
以下は、各軸の姿勢制御がどのように行われているかを示すハイレベルの図だ。制御は、角度誤差(目標角度と実際の角度との間の差)を所望の回転速度に変換するPコントローラを使用して行われ、回転速度誤差を高レベルモータコマンドに変換するPIDコントローラが続く。図の「Square Root Controller」の部分は、角度制御のPコントローラで使用される曲線を示している。
姿勢制御図(Ardupilot.orgより)
この姿勢制御を安定させるためには、PID制御の各パラメータの値を、要求を満たす最適な値を決定する必要がある。しかし、一般的な制御対象に対して、最適なゲイン値を与える代数的な方法は存在せず、実際の調整は、数値シミュレーションを行ったり、実際の対象物に調整器を繋いで試行錯誤的に最適値を得たりする必要がある。
このPID制御の各パラメータの値の設定に関しても、姿勢制御の安定化のための最適値を得るため、大量の試験データが必要となる。このパラメータ設定でも、EKFと同様、DJIは大量のユーザーの飛行ログデータをベースに、シュミレーションを繰り返し行った。それにより競合に比べ、圧倒的な飛行の安定化を獲得したのだ。
今後の移動ロボットの開発で勝利するために
マルチコプターでのDJIの勝利は、大量のユーザーの飛行ログデータによるEKFとPID制御の安定にあったことは、ここで記したとおりだが、空の世界でも、大型機や超小型機のマルチコプター、Plane、VTOLなどまだまだ、各メーカー間の開発競争は続いている。また、空だけでなく、陸上や水上、水中といった領域でも自律型の移動ロボットの開発競争は始まったばかりだ。しかし、この自律型移動ロボットでの開発競争に勝利していくためには、今回記したEKFやPID制御といったソフトウェアやAIの活用といったところにきちんと踏み込んでいかないと、その勝利は覚束ないだろう。そして、それは自動走行自動車でも同様である。