(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】2021065955
(43)【公開日】20210430
(54)【発明の名称】ロボット制御システム及びその制御方法及びプログラム
(51)【国際特許分類】
   B25J 13/08 20060101AFI20210402BHJP
【FI】
   !B25J13/08 A
【審査請求】未請求
【請求項の数】11
【出願形態】OL
【全頁数】13
(21)【出願番号】2019192132
(22)【出願日】20191021
(71)【出願人】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
【住所又は居所】東京都大田区下丸子3丁目30番2号
(74)【代理人】
【識別番号】110003281
【氏名又は名称】特許業務法人大塚国際特許事務所
(72)【発明者】
【氏名】和田 悠基
【住所又は居所】東京都大田区下丸子3丁目30番2号 キヤノン株式会社内
(72)【発明者】
【氏名】鳥井原 茂
【住所又は居所】東京都大田区下丸子3丁目30番2号 キヤノン株式会社内
【テーマコード(参考)】
3C707
【Fターム(参考)】
3C707AS04
3C707BS10
3C707KS15
3C707KT02
3C707KT05
3C707KT06
3C707LS20
3C707LW12
3C707LW15
(57)【要約】
【課題】 2枚の映像入力から、ロボット制御を実行できるニューラルネットワークを備えることで、直感的でかつ、シンプルな構成でロボットに所定の動作を行わせることができる。
【解決手段】 所定の動作を行うロボットを制御するロボット制御システムであって、ロボットの可動部とは独立した位置に配置され、ロボットの動作を撮像する第一撮像装置と、ロボットに固定され当該ロボットの動作を行う部位を画角内にして撮像する第二撮像装置とを含む複数の撮像装置により撮像された複数の画像を取得する取得部と、取得部により取得された複数の撮像画像を入力とし、ロボット制御命令を出力するニューラルネットワークとを有する。
【選択図】 図1
【特許請求の範囲】
【請求項1】
所定の動作を行うロボットを制御するロボット制御システムであって、
前記ロボットの可動部とは独立した位置に配置され、前記ロボットの動作を撮像する第一撮像装置と、前記ロボットに固定され当該ロボットの動作を行う部位を画角内にして撮像する第二撮像装置とを含む複数の撮像装置により撮像された複数の画像を取得する取得手段と、
前記取得手段により取得された複数の撮像画像を入力とし、ロボット制御命令を出力するニューラルネットワークと、
を有することを特徴とするロボット制御システム。
【請求項2】
前記ニューラルネットワークで得られたロボット制御命令に従って前記ロボットを制御する制御手段をさらに有する請求項1に記載のロボット制御システム。
【請求項3】
前記第二撮像装置はロボットの可動部に取り付けられていることを特徴とする請求項1に記載のロボット制御システム。
【請求項4】
前記第二撮像装置はロボットのアーム先端に取り付けられていることを特徴とする請求項1に記載のロボット制御システム。
【請求項5】
前記所定の動作は、ワークをピッキングする動作であることを特徴とする請求項1乃至4のいずれか1項に記載のロボット制御システム。
【請求項6】
前記ニューラルネットワークは、強化学習によって重みが更新されることを特徴とする請求項1乃至5のいずれか1項に記載のロボット制御システム。
【請求項7】
前記ニューラルネットワークの入力層は、前記第一撮像装置による映像から画像特徴量を抽出する層と、前記第二撮像装置による映像から画像特徴量を抽出する層とで構成されることを特徴とする請求項1乃至6のいずれか1項に記載のロボット制御システム。
【請求項8】
前記ニューラルネットワークの入力層は、前記第一撮像装置、第二撮像装置のそれぞれの映像を結合して得た1つの結合画像から画像特徴量を抽出する1つの層で構成されることを特徴とする請求項1乃至7のいずれか1項に記載のロボット制御システム。
【請求項9】
前記ニューラルネットワークは画像特徴量を抽出する層を含んでおり、前記ニューラルネットワークが画像内の着目領域を可視化する手段を更に有することを特徴とする請求項1乃至8のいずれか1項に記載のロボット制御システム。
【請求項10】
複数の撮像画像を入力とし、ロボット制御命令を出力するニューラルネットワークを有し、所定の動作を行うロボットを制御するロボット制御システムの制御方法であって、
前記ロボットの可動部とは独立した位置に配置され、前記ロボットの動作を撮像する第一撮像装置と、前記ロボットに固定され当該ロボットの動作を行う部位を画角内にして撮像する第二撮像装置とを含む複数の撮像装置により撮像された複数の画像を取得する取得工程と、
前記取得工程により取得された複数の撮像画像を前記ニューラルネットワークに供給し、ロボット制御命令を得る工程と、
を有することを特徴とするロボット制御システムの制御方法。
【請求項11】
コンピュータが読み込み実行することで、前記コンピュータに、請求項10に記載の方法の各工程を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ロボットアームの制御技術に関するものである。
【背景技術】
【0002】
FA(Factory Automation)の分野で、ロボットアームを用いた工場の作業自動化が注目されている。ロボットアームを活用したタスクの一例として、ピック&プレイスがある。ピック&プレイスを実現するには、ティーチングと呼ばれる、ロボットアームを制御するためのプログラム作成が必要となる。ティーチングは、主に、2Dまたは3Dカメラでワーク撮影、Computer Visionによる位置、形状推定、ロボットアームが特定の位置、姿勢になるよう制御、という流れなる(特許文献1)。その中でも、特に位置、形状推定は試行錯誤が必要となり工数を要する。しかし、実際の工場の現場では、様々な形状のワークが存在するため、ワークごとにティーチングを行う必要があり、またバラ積みなど、タスクが複雑になるとティーチングが更に困難となる。近年、AIブームの到来により、ロボットアーム制御にAIを用いた技術がある(非特許文献1)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2017−124450
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、特許文献1では、3Dモデルのマッチングにより位置姿勢推定を行っているが、高精度なワークの位置姿勢情報を取得するには、比較的高価な3Dカメラを用いる必要がある。
【課題を解決するための手段】
【0005】
この課題を解決するため、例えば本発明のロボット制御システムは以下の構成を備える。すなわち、
所定の動作を行うロボットを制御するロボット制御システムであって、
前記ロボットの可動部とは独立した位置に配置され、前記ロボットの動作を撮像する第一撮像装置と、前記ロボットに固定され当該ロボットの動作を行う部位を画角内にして撮像する第二撮像装置とを含む複数の撮像装置により撮像された複数の画像を取得する取得手段と、
前記取得手段により取得された複数の撮像画像を入力とし、ロボット制御命令を出力するニューラルネットワークとを有する。
【発明の効果】
【0006】
本発明によれば、2Dの映像入力から、ロボット制御を実行できるニューラルネットワークを備えることで、直感的でかつ、シンプルな構成でロボットに所定の作業を行わせることができる。
【図面の簡単な説明】
【0007】
【図1】実施形態のニューラルネットワークの学習を行う制御装置のブロック図。
【図2】実際のロボット、撮像装置、及びそれらを制御する制御装置のブロック図。
【図3】シミュレータ上または実際のロボットの構成を示す模式図。
【図4】撮像装置で撮影される画像の例を示す図。
【図5】実施形態におけるロボットが行う強化学習の流れを示す概略図。
【図6】実施形態に係る報酬発生条件と得られる報酬の例を示す図。
【図7】実施形態に係る学習モデル構築時の動作を示すフローチャート。
【図8】実施形態に係るニューラルネットワークのモデルの概略図。
【図9】実施形態に係るニューラルネットワークのモデルの概略図。
【図10】実施形態に係る学習済みモデルに基づくロボット制御のフローチャート。
【図11】実施形態に係るヒートマップを作成する方法を示す模式図。
【図12】実施形態に係るステップごとのヒートマップの例を示す図。
【発明を実施するための形態】
【0008】
以下、添付図面を参照して実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る発明を限定するものでない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
【0009】
以下に説明する2つの実施形態は、基本的な構成や、機械学習を行う点において共通するが、学習する環境がそれぞれ異なる。そこで、まずこれら2つの実施形態の概略について説明する。
【0010】
第1の実施形態では、ニューラルネットワークの学習をコンピュータのシミュレータ上で行い、学習済みモデルを実際のロボットに適用して、ロボット制御を行うロボット制御システムを説明する。シミュレータは実際のロボットより高速に動作させることができるため、学習を早く収束させることができる。
【0011】
第2の実施形態では、ニューラルネットワークの学習を実際のロボット上で行うロボット制御システムを説明する。第1の実施形態のシミュレータの利用は学習を高速化できるメリットがある一方で、シミュレータで学習した学習済みモデルを実際のロボットに適用する際にシミュレータと実際のロボットの差異を埋める工夫が必要となる。学習を実際のロボット上で行うことにより、学習時と推論時の環境の差異をなくすことができる。
【0012】
以上が2つの実施形態の概略である。次に、各実施形態それぞれの詳細について説明をする。なお、各実施形態において共通する部分については重複する説明を省略する。
【0013】
[第1の実施形態]
本第1の実施形態では、ロボットアームが初期状態から移動し、ワークを把持するまでのピッキング作業の学習モデル構築と利用の流れを説明する。把持した後の動作は特に問わないが、例えば他の場所への移動、整列、検品等が考えられる。把持した後の動作は、以後説明するニューラルネットワークを用いた構成で実現しても構わないし、モーションプラニングで移動、整列を行ってもよい。
【0014】
図1はニューラルネットワークの学習を行う制御装置のブロック図である。制御装置10はPCやサーバー等が考えられる。参照符号30は記憶装置で、アプリケーションソフトウェアやOS(Operating System)等の各種の制御用プログラムを格納したHDD(Hard Disk Drive)等の補助記憶装置や、演算処理装置がプログラムを実行する上で一時的に必要とされるデータを格納するためのRAM(Random Access Memory)といった主記憶装置等である。制御部20は、CPU(Central Processing Unit)等の演算処理装置を備える。また、学習に伴う演算量が多いため、例えば、GPU(Graphics Processing Units)を搭載してもよい。シミュレータ31は物理シミュレータで、物理現象をコンピュータ上で再現することが可能であり、記憶装置30にアプリケーションソフトウェアとしてインストールされている。シミュレーション精度が高いほど、多くの演算量が必要とされ、速度に影響する。すなわち、シミュレーション精度をある程度落とすことで、シミュレータ上のロボットを高速に動かすことが可能となる。シミュレータ31の映像はレンダリングしてディスプレイに表示してもよいし、メモリ上に展開するだけでもよい。例えば、クラウドサーバー上に複数の仮想マシンを生成し、シミュレータ映像の描画なしに学習を進めることも可能である。ニューラルネットワーク40は記憶装置30に記憶されており、学習済みモデルの場合はファイルとして保存される。推論時や学習時はCPUまたはGPUのメモリ上に展開して使用する。シミュレータ31には仮想的なロボットアーム32、第一撮像装置33、第二撮像装置34、ワーク35が存在する。
【0015】
図2は物理的なロボット及び撮像装置と、それらを制御する制御装置のブロック図である。制御装置10、制御部20、記憶装置30、ニューラルネットワーク40は図1と同じ構成である。図2は、制御装置10が、USB(Universal Serial Bus)やLAN(Local Area Network)等のインタフェースを介して、物理的なロボットアーム50、第一撮像装置60、第二撮像装置70と接続されている様を示している。
【0016】
図3はシミュレータ上、又は、物理的なロボットの構成を示す模式図である。シミュレータ上のロボット構成図と見た場合、図示のロボットアーム100、第一撮像装置110、第二撮像装置120は、図1のロボットアーム32、第一撮像装置33、第2撮像装置34に対応するものと理解されたい。
【0017】
また、図3を物理的なロボット構成図と見た場合、ロボットアーム100、第一撮像装置110、第二撮像装置120は、図2のロボットアーム50、第一撮像装置60、第2撮像装置70に対応すると理解されたい。
【0018】
また、実際のロボット100は、多関節構造とサーボモーターによって動作するロボットで、アームを備える。また、このロボットアームには対象物を把持するためのグリッパー101が装着される。なお、ロボットアーム100やグリッパー101の具体的な構成については、当業者によく知られているので、ここでは詳細な説明を省略する。
【0019】
また、第一撮像装置110、第二撮像装置120は二次元のRGBの各成分で構成されるカラー画像が取得できるカメラであるが、RGB以外の距離情報なども含まれていてもよい。ワーク130はロボットアーム100の把持の対象物で、シミュレータ上では位置座標を取得することができ、かつ配置位置も任意に指定することが可能である。
【0020】
図4は第一撮像装置110、第二撮像装置120で撮影される画像の例である。画像200は第一撮像装置110で撮影される画像の例である。この画像200を得るため、第一撮像装置110は、ワーク130全体とロボットアーム100の一部または全体が画角に入り、且つ、ロボットアーム100の動きには影響されないように、ロボットアーム100の可動部の動きとは独立した位置に設置される。画像210は、常時、グリッパー101の一部がワーク130を把持する状態を観察するために用いられる。このため、第二撮像装置210は、ロボットアーム100の所定位置(もしくは所定部位)に設置される。ここで第二撮像装置210をロボットアーム100の可動部に設置すれば、ロボットアーム100の移動に伴い第二撮像装置210も移動することになる。なお、上記で説明したロボットアーム100、第一撮像装置10、第2撮像装置120、ワーク130はシミュレータ上で実物に近い構成で再現することが可能である。なお、ロボットのミドルウェアのオープンソースROS(Robot Operating System, http://wiki.ros.org/)、 物理シミュレータのオープンソースGazebo(http://gazebosim.org/)等を用いることで、比較的容易にシミュレータ上のロボットと現実のロボットを実質的に同じ制御プログラムで動作させることができる。
【0021】
図5は本実施形態でロボットが学習を行う際のアルゴリズムである、強化学習の流れを示した概略図である。強化学習は、環境300内でエージェント310が現在の状態320を観測し、とるべき行動を決定する問題を扱う機械学習の一種である。エージェント310は、行動を選択することで環境から報酬330を得る。強化学習は一連の行動を通じて報酬が最も多く得られるような方策350を学習する。本実施形態ではニューラルネットワーク340を用いて強化学習を行うので、深層強化学習とも呼ばれる。ここで、環境300とはロボットアームが設置されている実際の工場内または、シミュレータである。エージェント310は、シミュレータ上または物理的なロボットアームである。状態320は第一撮像装置110、第二撮像装置120で撮影される画像である。例えば図4に示した画像200、画像210である。報酬330は条件を満たした時に発生する。
【0022】
図6は、上記の報酬の発生条件と、得られる報酬との関係を示すテーブル400を示している。なお、グリッパー101の座標位置は実際のロボットでも順運動学によって求めることができる。ワーク座標はシミュレータ上では取得可能である。画像200、210は必要に応じてリサイズ、前処理を行い、ニューラルネットワーク340への入力とする。方策350として、例えば、グリッパー付き6軸ロボットの場合、各軸を正方向または負方向に1度回転、グリッパーの開閉の計14の離散的な行動を定義する。ニューラルネットワーク340の出力である方策350は、この14個の行動の選択肢の中からどの行動を選択すべきかの確率である。その確率をもとにエージェントは行動を決定する。
【0023】
図7は学習モデル構築時の動作を示すフローチャートである。
【0024】
S10にて、制御部20は時刻Tを“0”で初期化する。次いで、S11にて、制御部20は、状態の初期化を行い、エピソードを開始する。エピソードとは、強化学習における、タスクの始まりから終わりでの一連の流れの単位である。本実施形態では、エピソード開始時はロボット、ワークの位置が初期状態になっていて、エピソード終了条件を満たした場合にエピソードを終了する。エピソード終了条件はエージェントがタスクに成功、またはエラーが発生した場合等である。エラーは、例えばロボットアームが自身や床に衝突してしまう等である。具体的な状態初期化は、ロボットアーム100を所定位置に移動、ワーク130を所定位置に配置、獲得報酬の累計を“0”にすることである。その際、ロボットアーム100は固定位置に戻しても構わないが、ワーク130はアームが届く範囲内でランダムに配置することで、ニューラルネットワークは入力画像内のワークの位置を考慮し行動選択できるように学習を行うことができる。S12にて、制御部20は、ステップ数tを“0”で初期化する。
【0025】
S13にて、制御部20は、第一撮像装置110、第二撮像装置120による撮影を行わせ、撮像画像を受信する。S14にて、制御部20は、それら撮像画像をニューラルネットワーク340へ入力する。入力の際、制御部20は、各撮像画像を、例えば84×84画素サイズ等の縮小画像へとリサイズを行う。S15にて、制御部20は、ニューラルネットワーク340が出力する制御命令に従い、ロボットアーム100を動作させる。ニューラルネットワークの出力である、ロボットの制御命令は、ソフトマックス関数の出力であり、どの軸を動かすべきかという確率で表現される。その確率に従い、ロボットを動作させる。
【0026】
S16にて、制御部20は、報酬付与条件(図6のテーブル400参照)を満たしているか判定する。満たしていると判定した場合、制御部20は処理をS17に処理を進める。このS17にて、制御部20は報酬を付与する(報酬を更新する)。報酬は図6のテーブル400に従い、点数を付与する。例えば、テーブル400のNo.1〜5の項目をそれぞれ達成した場合は、最終的に合計“+5”の報酬を獲得できる。S18にて、制御部20は時刻T、ステップ数tそれぞれをインクリメントする。
【0027】
S19にて、制御部20は、時刻Tが予め設定した閾値Th_a以上となったか否かを判定する。時刻Tが閾値Th_a以上となった場合、制御部20はニューラルネットワークの重みを学習済みモデルとして保存する。ここでS19の閾値Th_aは、10の8乗などの大きな値を指定する。ここでは、学習がいつ収束するかわからないため、閾値に大きな値を指定して学習ループを回すためである。ただし、学習が収束したことを判断して学習を終了することも可能である。
【0028】
一方、S18の判定結果が、時刻Tが閾値Th_aより小さいことを示す場合、制御部20は処理をS21に進める。このS21にて、制御部20はステップ数tが閾値Th_b以上であるか否かを判定する。ステップ数tが閾値Th_b以上である場合、制御部20は処理をS22に進める。このS22にて、制御部20は、複数ステップ分をバッチとして学習を行う。ステップ数tの閾値Th_bはバッチ学習を行う単位で、例えば“20”を指定する。この後、制御部20は処理をS12に戻す。
【0029】
また、S21の判定結果が、ステップ数tが閾値Th_bより小さいことを示す場合、制御部20は処理をS23に進める。このS23にて、制御部20は、エピソード終了時条件を満たしているか否かを判定する。制御部20は、エピソード終了時条件を満たしていないと判定した場合は、処理をS13に戻す。また、エピソード条件を満たしていると判定した場合、制御部20は処理をS24に進める。このS24にて、制御部20は、ニューラルネットワークの学習を行う。この時の学習のバッチサイズはステップ数tである。ニューラルネットワークの学習は、バックプロパゲーション(誤差逆伝搬法とも呼ばれる。)という手法により各パーセプトロンの出力の誤差を小さくするように重み付け値を調整する。学習の詳細は既知のため省略する。
【0030】
ここで、ニューラルネットの構成について、図8を用いて概略を説明する。本実施形態では、ニューラルネットワークのモデルとして、非特許文献3で提案されているUNREAL(Unsupervised Reinforcement and Auxiliary Learning)のモデル、または改変したものを利用する。詳細は非特許文献3に記載されているため、概略のみ説明する。UNREALは非特許文献2で提案されているA3C(Asynchronous Advantage Actor-Critic)と呼ばれるモデルを拡張したニューラルネットワークである。A3Cは以下で構成されている。
【0031】
参照符号401と402は畳み込み層と呼ばれる画像特徴量を抽出する層で、入力された画像データ410に対して所定のパラメータのフィルタをかける。このフィルタにおける所定のパラメータは、ニューラルネットワークの重みに相当している。参照符号403は、全結合層で、畳み込み層を通して特徴部分が取り出されたデータを一つのノードに結合する。参照符号404は長期短期記憶ニューラルネットワークと呼ばれる再帰型ニューラルネットワークの一種で、時系列データのタイムステップ間の長期的な依存関係を学習し保持する。参照符号405は全結合層で、その出力を、ソフトマックス関数を用いて確率に変換し方策とする。方策はある状態の時のいずれかの行動をとる確率である。参照符号406は全結合層で、出力は状態価値関数であり、その状態を起点に得られる報酬の予測値ある。以上がA3Cの構成で、UNREALはA3Cに加え、3つの補助タスクで構成されている。参照符号420はリプレイバッファで、最新の数ステップ分の画像、報酬、行動を保持する。3つの補助タスクの入力はリプレイバッファ420から取得する画像である。
【0032】
補助タスクの一つ目はreward prediction407で、報酬を獲得した過去の情報から即時報酬を推定する。一般的に強化学習はエージェントが報酬を得られた経験からした学習を行うことができず、タスクの成功時にしか報酬が得られない、いわゆる疎な報酬問題を抱える。例えば、本実施形態でも、ロボットアーム100を初期状態から1ステップ動作させても報酬は得られない。そのような環境下でreward predictionのタスクを用いることで、恣意的に報酬が発生するイベントをリプレイバッファから取り出し発生させる。補助タスクの2つ目はvalue function replayで全結合層406の出力と同じ働きで、入力画像がリプレイバッファからとなる。そして、3つ目は、pixel control408で入力画像が大きく変化するよう動作するような行動を学習する。出力は行動価値関数であり、行動をとった後の画素の変化量を推定する。
【0033】
図8の入力画像410は、第一撮像装置110、第二撮像装置120による撮影した2つの画像の結合画像であり、入力層である1つの畳み込み層401へ入力することを示している。
【0034】
図9は、第一撮像装置110、第二撮像装置120それぞれが撮像して得た画像が、入力画像510、520として畳み込み層501、503へそれぞれ入力される例を示している。そして、畳み込み層502、504の出力を全結合層505で結合する。全結合層505の入出力サイズは、全結合層403の2倍となる。reward predictionの出力用の全結合層506の入力サイズは407の全結合層の2倍として、畳み込み層502、504の出力を結合したものを入力とする。pixel control507は、入力画像520の変化量を推定するタスクとする。これはpixel controlが入力画像の画素値が大きくなるように行動を選択する特性をもち、第二撮像装置の映像の画角にワークが入った方がタスク成功に近づくので、入力画像520の画素の変化がタスク成功に関係すると考えられるためである。なお、図8、図9どちらのニューラルネットワークでもタスクを学習できるようになる。また、モデルは一例であり、画像を入力とし、ロボットの制御命令を出力するモデルであれば他の構成でも構わない。
【0035】
以上のようにして、入力データの特徴を学習し、入力からロボットアームの制御命令を推定するための学習モデルを帰納的に獲得する。
【0036】
本第1の実施形態は、シミュレータ上で学習したニューラルネットワークの学習済みモデルを実際のロボットに適用するものである。
【0037】
図10は学習済みモデルをロードして、実機ロボットを制御するフローチャートである。
【0038】
S100にて、制御部20は、図7のS20で保存した学習済みモデルをロードする。S101にて、制御部20は、物理的な第一撮像装置60、第二撮像装置70で撮影する。S102にて、制御部20は、撮影で得た撮像画像をニューラルネットワーク340に入力する。そして、S103にて、制御部103は、ニューラルネットワーク340が出力したロボット制御命令に従い、物理的なロボットアーム50を動作させる。S104にて、制御部20は、終了条件を満たしているか否かを判定する。否であると判定した場合、制御部20は処理をS101に戻す。終了条件の例としては、ピッキングを行う対象のワークが配置されているベルトコンベア上や箱の中にワークが存在するか否かをコンピュータビジョン等の認識技術で確認し、それが一つも存在しない場合である。ただし、終了条件はこれ以外であっても構わない。
【0039】
本第2の実施形態では、シミュレータで学習したモデルをそのまま実機に適用したが、シミュレータ上の映像と現実世界の映像の見え方は、光の当たり方や、物体の質感など、完全に同じになるとは限らない。よって、S102でニューラルネットワーク340に、現実世界の画像を入力しても、期待している制御命令が出力されない可能性がある。非特許文献5のDomain Randomizationと呼ばれる手法では、シミュレータで学習するときに、背景、ワークのテクスチャ、光源の位置、明るさ、色、カメラの位置、ノイズ等のパラメータを様々なバリエーションを振ることで、現実世界の映像にも適応できるロバストで一般化されたニューラルネットワークを構築することができる。本第1の実施形態の場合に、例えばエピソード毎にこれらのパラメータをランダムに変更し環境の見え方を変えることで、シミュレータと現実世界の映像の見え方のギャップを小さくするニューラルネットワークのモデルを構築できる。
【0040】
以上説明した動作により、ニューラルネットワークに二次元の撮像装置の映像のみを入力するだけで、ロボット制御の制御をすることが可能となる。
【0041】
ここで、ニューラルネットワークの畳み込み層が画像内のどこに注目しているかを示す、Grad-CAM(非特許文献4)と呼ばれる手法を用いることで、ニューラルネットワークが画像内のどこに着目して判断を下したかを可視化することができる。ディープラーニングは、一般的にニューラルネットワークの内部がブラックボックスとなっていて、解析が容易ではない。また、タスクが成功/失敗した際も、なぜ成功/失敗しているかがわかりにくい。そのため、ニューラルネットワークの着目点(もしくは着目領域)を可視化することは非常に重要である。一般的に、畳み込み層は空間情報を保持し、全結合層で失われる。そして畳み込み層の後段に行くにしたがって、より抽象化された情報を保持しているため、Grad-CAMでは畳み込み層の最終層の情報を利用し、ヒートマップを作成する。詳細は非特許文献4で述べているので、省略するが、本実施形態で使用したニューラルネットワークにGrad-CAMを適用する方法を簡単に説明する。
【0042】
図11はヒートマップを作成する方法を示した図である。図8のニューラルネットワークをもとにヒートマップを生成する場合、ニューラルネットワークから方策の出力後、実際に採用した行動を1、それ以外が0となるone hot vectorを作成し、バックプロパゲーションを行う。畳み込み層610までバックプロパゲーションを実施し、勾配640を算出する。入力画像600に対しての畳み込み層610の出力が特徴量マップ630であり、これと勾配640の組み合わせの数の積を演算し、足し合わせ、活性化関数650を通すことで、ヒートマップ660が生成される。図12はステップごとのヒートマップの例を示した図である。点線の丸はヒートマップが着目している領域を表している。入力画像700に対してのヒートマップ710を見ると、ステップの初期では、第一撮像装置110の映像の中の、アーム先端とワークに着目している。ステップの後半になり、第二撮像装置120の画角内にワークが入ると、第二撮像装置120の映像のワークに着目していることがわかる。このことから、アームがワークに近づくまでは、第一撮像装置110の映像から主に行動を選択し、ワークに近いてから把持するまでは第二撮像装置120の映像から行動を選択していることがわかり、ロボットアームが意図した行動をとっていると言える。
【0043】
[第2の実施形態]
次に第2の実施形態を説明する。なお、第2の実施形態と第1の実施形態は、基本的な構成及び動作について共通するので、これらの点についての重複する説明は省略する。第2の実施形態では、ニューラルネットワークの学習も実機を利用する。したがって、シミュレータで学習する際に必要となるDomain Randomizationは不要となる。また報酬に関して、シミュレータではワークとエンドエフェクターの距離が簡単に求まるが、現実では、エンドエフェクターの絶対位置は運動学から求められるものの、ワークの位置は機械的に求められないので、手動で配置して、位置を入力する等の作業が必要となる。これは第1の実施形態において、実機でファインチューニングを行う際も同様である。
【0044】
以上説明した動作により、ニューラルネットワークに二次元の撮像装置の映像のみを入力するだけで、ロボット制御の制御をすることが可能となる。
【0045】
(その他の実施例)
上記実施形態では、ロボットアームが移動してワークを把持する動作を行う、いわゆるピッキング作業について説明したが、他の作業にも応用可能である。例えば、ロボットアームの先端に異なる作業装置を取り付けることで、例えば溶接、計測、検査、手術などに適用することも可能である。
【0046】
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
【0047】
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【符号の説明】
【0048】
10…制御装置、20…制御部、30…記憶装置、40…ニューラルネットワーク、31…シミュレータ、32、50…ロボットアーム、33、60…第一撮像装置、34、70…第二撮像装置、34…ワーク
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】