Deep Learningによるロボットアーム制御



イントロダクション

Deep Learningをロボット制御に活用するアイディアは、多くの研究者が長年取り組んできた課題の1つです[1;2;3]。しかし、物体を掴むといった人間には簡単に思える作業でも、特有の理論的な難しさを含んでおり、まだ研究余地を多く残す分野となっています。例えば、複数の掴み方があったときにその中から最適なものを選ぶということが、思わぬ障害となることもあります。目の前にある物体を取るときには、肩、肘、手首、指の角度を適切に組み合わせることで掴むことができるわけですが、同じ掴むということであれば、肘を上げたり、手首を回転させたり、代わりに別の指を閉じたりしても同様な結果が得られます。最適な解決策は1つでなく無数の解決策があり、探索すべき範囲が非常に広くなります。その上、それらの組み合わせで作られる空間はほとんどの場合非連続的で、掴める複数の姿勢の平均がまた掴める姿勢になっているとは限らないことも、問題の複雑性に拍車を掛けています。これは、拘束条件がある状況だとより頻繁に発生する問題になります。

従って、Deep Learningをロボット制御に適用する場合には、1つの姿勢を他の姿勢に優先させるなどの工夫を行い、可能な限り不連続性による問題を回避するよう問題設計を行うことが重要なポイントになります。興味深いことに、このように設計されたシステムは、生き物と同じような”好み”を持つことになり、より自然な見た目で振る舞うことになります。

Deep learningをロボットの制御に適用した事例としては、2015年にPintoとGuptaが[4]、2016年にLevine、Pastor、Krizhevsky、Quillenが報告した論文が挙げられます[5]。いずれの実験も、テーブル上に配置された対象物体を1つずつ把持することが課題として設定されています。これらの事例では、x軸、y軸、およびz軸まわりの回転が制御されており、把持位置の指定は本質的にはx-yの2次元平面内で行っていることになります。

開発したシステム

XCompassは、産業ロボットにおけるトップ企業である安川電機様チームと共同で、物体把持システムの開発を行いました。このシステムでは、x、y、z軸および各軸周りの回転まですべてAIによる制御を行っています。ロボットは、GP7に、標準的なグリッパを装着したものを使用しました。グリッパのすぐ上には2Dカメラを固定し、物体認識に使用しています。

安川電機様には、ロボットコントローラ、カメラ、データ通信システムの開発に加え、最大6台のロボットによる学習データ収集インフラ整備、および、デモシステム構築を行っていただきました。このシステムは、2017年11月に東京で開催された国際ロボット展 (iREX: International Robot Exhibition)に展示されました。

一方、XCompassチームはAIを実行するプラットフォーム開発と、AIモデル構造の設計および学習を担当しました。デモに使用したAIモデルは、Engine 1とEngine 2という2つの要素から構成されており、前者は対象物体の把持可能位置を推定・追跡する機能、後者はそれを受けてモーターの制御コマンドを生成する機能を受け持っています。

Engine 1

対象物体の把持可能位置を推定するEngine1では、Faster R-CNNアルゴリズム[6]を基本としたモデル構造を使用しています(図1参照)。Faster R-CNNは、画像内の物体にBounding Box(囲い枠)を表示すると共に、その中に含まれる物体のカテゴリ(例えば、人、車など)の認識を行います。

畳み込み層の重みは、ImageNetデータセット[7]による事前学習済みパラメータにより初期化した上で、さらに把持対象とした複数種の物体データを学習させました。


図1. Faster R-CNN の構造 (左図) と認識例 (右図)

今回開発したモデルではFaster R-CNNに改良を加え、物体全体にBounding Boxを付与する代わりに、把持可能な「点」を推定させるよう設計しています(図2)。

また、今回の課題では、バルク(山積み)状態からの把持を行うことが必要になるため、Faster R-CNNの出力をつなぎ合わせる処理を導入し、同一の把持可能点が最初から最後まで追尾され続けるようにしています。


図2. Faster R-CNNを利用した把持可能点の推定結果。
左から、パイプ、Yマーク、アイボルト。
上側は把持開始時点、下側は把持直前での画像を示す

Engine 2

Engine2は、Engine1で選定された物体を把持するための制御コマンドを生成する機能を持ち、モジュール型の構造を採る独自のNeural Networkモデルとして設計しています(図3参照)。Goalinitと呼ばれるモジュールでは、把持シーケンス開始時点に撮影された初期画像(Imginit)と、Engine1によって選択された把持可能点 (Dot init)を入力として受け取り、必要な情報を計算します。Goalcurrモジュールも同様の計算を、今度は各時点の画像(Imgcurr)と、追尾している把持可能点(Dotcurr)に対して行います。これらGoalモジュールは、続くActorモジュールの計算に必要な情報を集約するよう学習させています。

Actorモジュールは、Goalモジュールからの情報とロボットの現在位置(Poscurr)を組み合わせ、6軸それぞれに対する制御コマンドを計算しています。複雑なモデルよりも、単純なモデルを複数組み合わせた方がよい振る舞いを獲得できるという感覚運動制御の考え方にもとづき[8]、各自由度それぞれにモジュールを対応させたカスケード構造として設計しています。各モジュールは、前段モジュールが決めた制御コマンドを受け、把持可能な最適位置・角度を推定、もしくは、前の制御コマンドでは足りなかった分を修正するなどの処理を行っていきます。

初期的な学習データは、安川電機様の既存認識技術を用いて取得。自律的な把持ができるようになった後は、その把持データを用いた学習を行っています。


図3. Engine 2 概略図。2つのGoalモデルは、初期位置とそれ以降でそれぞれ学習・推論を行う。Actorモデルは、モジュールごとに各制御コマンドを出力するカスケード構造を採っており、高い柔軟性と短時間での学習を可能にしている

まとめ

XCompasは、安川電機様と共同で、ロボットの適応制御システムの開発を行いました。特に重要な要素として、以下が挙げられます:

  • 2Dカメラの利用(3Dカメラより安価)
  • バルクからの把持可能点の推定および追尾
  • 6軸制御による物体把持
  • カスケード構造による学習の加速

Engine 1は、Deep Learningによる把持可能点の推定と、古典手法による追尾の組み合わせにより実現している点が面白く、Engine 2は、モジュール化とカスケード構造という高度な仕組みを取り入れている点がユニークです。Levineら(2016)もdeep learningを利用していましたが、制御コマンドの生成を乱数に頼っていました。今回の手法では制御コマンドを直接生成している点も新しい試みで、推論のリアルタイム化に貢献しています。これら幾つかの手法を組み合わせたことにより、バルクからの把持という非常にチャレンジングな課題の解決を実現しています。

プロジェクトの詳細については、下記にも記載がありますので、御覧ください:https://www.yaskawa.co.jp/newsrelease/technology/35697

著者: Antoine Pasquali

XCompassチーム: Thomas Wilmotte, 根本学青木賢治佐々木雄一, Antoine Pasquali