CEATEC2016に出展してきました 〜ドローン編〜

PreferredNetworks

2016-10-17 15:58:17

PFNは2016年10月4-6日に千葉幕張メッセで開催されたCEATEC2016で、深層強化学習に基づくドローン(マルチコプター)の自律飛行に関する展示を行ってきました。ドローンの他にもロボットやDIMoに関する展示も一緒に行いました。こちらに関しては関連記事をご参照ください。

ドローンスペースでは実機による自律飛行を披露しただけではなく、説明用のデモ動画を作って上映しました。以下がその動画となります。

 

以下では、この動画よりも少し踏み込んだ内容について知りたい方向けに解説したいと思います。

 

展示内容

ドローンが障害物を避けながらウェイポイント(目的地)に向かって自律飛行をするデモを行いました。
以下の動画が実際に会場で撮影したドローンです。
(上:真上のカメラから見た俯瞰映像、下:横からビデオカメラで撮影した映像)


ドローンは高さのあるところを飛んでいて位置関係が分かり辛いため、俯瞰映像で説明したいと思います。
暗めの青の円がドローンの床面での現在地、赤い矢印がドローンへの移動命令、緑の線がドローンの位置の軌跡を表しています。旗の位置(と丸いスポットライトが照らされている位置)をウェイポイントと呼び、ドローンはここに向かって移動します。また、半透明の旗の位置(と点滅するスポットライトの位置)はその次に通るウェイポイントの位置を表しています。

障害物(床面のLEDバーの赤い光)はある場所に現れたり消えたりします。また、障害物が現れる直前は黄色信号(LEDバー点滅する薄黄色い光)のようにヒントが与えられ、ドローンはそれを見て障害物にぶつからないような経路を選びます。ウェイポイントにドローンがたどり着くと次のウェイポイントに向かって移動する動作を繰り返します。ドローンはウェイポイント、その次のウェイポイント、そして障害物を観測しながら、時間内にたくさんのウェイポイントを周るように自分で経路を考えて飛行します。

 

技術的な背景

以前のCESデモのドローン版であり、今回は模型自動車にくらべて挙動の制御が難しく、リアルタイム性の制約がより厳しいドローンへの深層学習の応用です。深層強化学習を用いてドローンが一から自律飛行を学んで行きます。ここでのタスクは、ランダムに出現するウェイポイントを次々に訪れていくことです。ウェイポイントにたどり着くと報酬が与えられ、障害物にぶつかると罰が与えられます。その経験を学習していくことで次第に賢い行動を取るようになります。

ドローンは非常に複雑な、非線形なシステムです。ドローンの挙動は、4枚のプロペラの回転数によって決められますが、これらの回転数を決めるのは、4kHzのフレームレートでフィードバック制御を行うオンボードコントローラです。このドローンを、ラジコン用の送信機からの電波で制御します。このシステムに、今回のデモではさらにもう1段のフィードバック制御をかけて、ドローンの位置による制御を行います。ドローンの位置推定は、ドローンに取り付けられた位置測定用の赤外線発光ダイオードを、外部の2台のカメラで測定することによって行っています。ドローンの一番外側の制御ループは、2フレーム/秒です。通常、機械の制御は、その機械の挙動を数理的にモデル化して、それに対してフィードバックをかける、という制御理論の考え方に基いて行われます。しかし、今回のドローンのように、物理的要素・デジタル的要素が混在した複雑なCPS (Cyber-Physical System)においては、そもそも全体を数理的に正確にモデル化することは容易ではありません。

一方、人間は試行錯誤をすることによって、徐々にドローンの操縦を覚えていきます。この試行錯誤のやり方を取り入れたのが、深層強化学習に基づく制御です。実際に様々な制御をしてみて、その挙動を見ることによって、「どのような制御入力を与えれば報酬を最大化できるか」を学習していきます。
ただし、その学習は主にシミュレーター上で行いました。実機で学習すると、1) 実時間で学習するため、学習に時間がかかってしまう、2) 特に学習初期は、試行錯誤を行うために安定した学習ができない、という問題があります。しかしながら、ドローンの物理モデルを単純にシミュレーションするだけでは、実機の動きと大きく異なり、シミュレーター上で学習したモデルが全く役に立たないという問題が出てきます。そこで実機の行動ログ(ある制御命令を与えたときにどのような行動をするか)から挙動予測モデルを作り、それをシミュレーターに反映させることで、より精度の高いシミュレーターを作りました。さらに、改善されたシミュレータを使って、強化学習を再度走らせる、という手順を交互に繰り返すことによって、高精度な制御モデルを短時間で生成することに成功しました。この、強化学習による制御入力モデルと、実機ログによる挙動予測モデルを並行して学習させる手法を、私たちはスパイラル学習法と呼んでいます。

今回のデモで使用したドローンは、デモのために用意した自作のものです。デモ会場で長時間耐えられるように有線ケーブルを繋いで長時間安定して動き続けることができます。また、市販のドローンの多くはwifiによる通信で制御しますが、展示会場ではwifiは混線してつながらないことが多いため、ラジコン用無線で制御できるようにしました。ドローンは位置型のPID制御(かなり大雑把に説明すると、ある位置を指定したとき、そこに近づくように飛行速度を調整する制御で、自身よりも遠くの位置の場合は速く、逆に近い場合はゆっくり移動するようにするフィードバック制御)で動作し、強化学習アルゴリズムはマップ全ての位置を行動として選択できます。

今回のデモでは、強化学習による制御を中心にお見せしたかったため、ドローンの位置の推定や、ウェイポイント、障害物の位置指定はすべて外部のPCによって行いました。強化学習アルゴリズムに対しては、障害物の位置はシミュレートされた32本のLIDARによって与えられます。適切なセンサーと、十分なオンボードの計算パワーがあれば、これらの処理をすべてオンボードで行わせることも可能と考えています。

 

これまでのドローン制御とは異なる点

ドローンの制御は研究から実用化まで幅広く行われていますが、そのほとんどは、制御理論に基づくモデルベースの制御を行っていると考えられます。このデモでは、低レベルの制御をモデルベースで、高レベルの制御を深層強化学習で行う、というハイブリッド制御を行っています。強化学習によるアプローチを取っているため、1) 低レベルの制御を含めた系全体をブラックボックスとして扱うことができる、2) ルールベースによる実装では想定していなかった不測の事態にも対応可能、というメリットがあります。また、問題設定が多少変わっても学習のコードを大きく書き直す必要はありません。

 

まとめ

今回、ドローンのような非常に複雑なシステムを制御することに挑戦しました。CES2016での模型自動車の展示では人手でシミュレーターを作成していましたが、今回は実機の飛行ログから挙動予測モデルを学習させ、シミュレーターと実機の差を吸収するというアプローチを行いました。これによってシミュレーターのチューニング作業に時間をかけずに制御入力モデルの学習を行うことができました。また、従来のモデルベースの制御をブラックボックスとみなして、深層強化学習で高レベルな制御を行うハイブリッド制御の知見を得ることができました。これらの技術はドローンに限らず、建設機械や航空機など、複雑なCyber-Physicalシステムの自律制御にも応用可能だと考えています。

 

Leave a Reply