IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社日立製作所の特許一覧

<>
  • 特許-計算機システム及び機械学習方法 図1
  • 特許-計算機システム及び機械学習方法 図2
  • 特許-計算機システム及び機械学習方法 図3
  • 特許-計算機システム及び機械学習方法 図4
  • 特許-計算機システム及び機械学習方法 図5
  • 特許-計算機システム及び機械学習方法 図6
  • 特許-計算機システム及び機械学習方法 図7
  • 特許-計算機システム及び機械学習方法 図8
  • 特許-計算機システム及び機械学習方法 図9
  • 特許-計算機システム及び機械学習方法 図10
  • 特許-計算機システム及び機械学習方法 図11
  • 特許-計算機システム及び機械学習方法 図12
  • 特許-計算機システム及び機械学習方法 図13
  • 特許-計算機システム及び機械学習方法 図14
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-11-18
(45)【発行日】2022-11-29
(54)【発明の名称】計算機システム及び機械学習方法
(51)【国際特許分類】
   B25J 9/22 20060101AFI20221121BHJP
   G06N 20/00 20190101ALI20221121BHJP
【FI】
B25J9/22 A
G06N20/00
【請求項の数】 8
(21)【出願番号】P 2019082488
(22)【出願日】2019-04-24
(65)【公開番号】P2020179438
(43)【公開日】2020-11-05
【審査請求日】2021-12-23
(73)【特許権者】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110001678
【氏名又は名称】藤央弁理士法人
(72)【発明者】
【氏名】三木 崇弘
(72)【発明者】
【氏名】坂井 亮
【審査官】臼井 卓巳
(56)【参考文献】
【文献】特開2017-185578(JP,A)
【文献】特開2018-202550(JP,A)
【文献】特開2018-205929(JP,A)
【文献】特開2019-016025(JP,A)
【文献】特開2019-032782(JP,A)
【文献】特開2019-056966(JP,A)
【文献】米国特許出願公開第2016/0101519(US,A1)
【文献】米国特許出願公開第2019/0012611(US,A1)
【文献】米国特許第9694494(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 9/16-13/08
G06N 3/00-20/00
(57)【特許請求の範囲】
【請求項1】
把持装置が物体を把持するための制御アルゴリズムを学習する計算機システムであって、
前記計算機システムは、演算装置及び前記演算装置に接続される記憶装置を有する少なくとも一つの計算機を備え、
前記少なくとも一つの計算機は、
前記物体の形状に関する情報を含む物体データ、当該物体を把持する位置の基準となる把持点、及び前記物体の把持の成否を示す情報を含む学習データを用いて、当該物体の把持成功確率を出力する第一モデルを生成するための第一学習処理と、
基準物体の形状を変形させた物体の前記物体データを出力する第二モデルを生成するための第二学習処理と、を実行し、
前記少なくとも一つの計算機は、前記第二学習処理において、
前記第二モデルに基づいて、前記基準物体の形状を変形した第一物体の前記物体データを生成し、
前記第一物体の把持点を決定し、
前記第一物体の物体データ及び前記第一物体の把持点の複数の組を前記第一モデルに入力し、
前記第一モデルより出力された前記第一物体の把持成功確率の最大値及び目標確率の差に基づいて、前記第二モデルを更新することを特徴とする計算機システム。
【請求項2】
請求項1に記載の計算機システムであって、
前記少なくとも一つの計算機は、前記第二学習処理において、
前記第一モデルの学習が停滞している場合、前記基準物体からの形状の変化量が前記第一物体より小さい物体の前記物体データが生成されるように前記第二モデルを更新し、
前記第一モデルの学習が進捗している場合、前記基準物体からの形状の変化量が前記第一物体より大きい物体の前記物体データが生成されるように前記第二モデルを更新することを特徴とする計算機システム。
【請求項3】
請求項2に記載の計算機システムであって、
前記少なくとも一つの計算機は、前記第二学習処理において、
前記第二モデルに基づいて生成された前記物体データに対応する物体の形状と前記基準物体の形状との間の類似度の目標範囲を設定し、
前記第一物体の把持成功確率の最大値及び前記目標確率の差が小さくなり、かつ、前記更新された第二モデルに基づいて生成された前記物体データに対応する第二物体の形状と前記基準物体の形状との間の類似度が前記目標範囲内になるように前記第二モデルを更新することを特徴とする計算機システム。
【請求項4】
請求項1に記載の計算機システムであって、
前記第一モデルの更新履歴を管理するための履歴管理情報を保持し、
前記少なくとも一つの計算機は、前記第二学習処理において、
前記第一モデルより出力された前記第一物体の把持成功確率の最大値が目標確率以下である場合、前記第一物体の把持成功確率の統計値及び前記第一物体の把持成功確率の最大値の変化量のいずれかを評価値として算出し、
前記評価値に基づいて、前記第一モデルの学習が停滞しているか否かを判定し、
前記第一モデルの学習が停滞していると判定された場合、前記履歴管理情報を用いて、前記第一モデルを更新することを特徴とする計算機システム。
【請求項5】
把持装置が物体を把持するための制御アルゴリズムを学習する計算機システムが実行する機械学習方法であって、
前記計算機システムは、演算装置及び前記演算装置に接続される記憶装置を有する少なくとも一つの計算機から構成され、
前記機械学習方法は、
前記少なくとも一つの計算機が、前記物体の形状に関する情報を含む物体データ、当該物体を把持する位置の基準となる把持点、及び前記物体の把持の成否を示す情報を含む学習データを用いて、当該物体の把持成功確率を出力する第一モデルを生成するための第一学習処理を実行するステップと、
基準物体の前記物体データに基づいて、前記基準物体の形状を変形させた物体の前記物体データを出力する第二モデルを生成するための第二学習処理を実行するステップと、を含み、
前記第二学習処理は、
前記少なくとも一つの計算機が、前記第二モデルに基づいて、前記基準物体の形状を変形した第一物体の前記物体データを生成する第1のステップと、
前記少なくとも一つの計算機が、前記第一物体の把持点を決定する第2のステップと、
前記少なくとも一つの計算機が、前記第一物体の物体データ及び前記第一物体の把持点の複数の組を前記第一モデルに入力する第3のステップと、
前記第一モデルより出力された前記第一物体の把持成功確率の最大値及び目標確率の差に基づいて、前記第二モデルを更新する第4のステップと、を含むことを特徴とする機械学習方法。
【請求項6】
請求項5に記載の機械学習方法であって、
前記第4のステップは、
前記第一モデルの学習が停滞している場合、前記少なくとも一つの計算機が、前記基準物体からの形状の変化量が前記第一物体より小さい物体の前記物体データが生成されるように前記第二モデルを更新するステップと、
前記第一モデルの学習が進捗している場合、前記少なくとも一つの計算機が、前記基準物体からの形状の変化量が前記第一物体より大きい物体の前記物体データが生成されるように前記第二モデルを更新するステップと、を含むことを特徴とする機械学習方法。
【請求項7】
請求項6に記載の機械学習方法であって、
前記第4のステップは、
前記少なくとも一つの計算機が、前記第二モデルに基づいて生成された前記物体データに対応する物体の形状と前記基準物体の形状との間の類似度の目標範囲を設定するステップと、
前記少なくとも一つの計算機が、前記第一物体の把持成功確率の最大値及び前記目標確率の差が小さくなり、かつ、前記更新された第二モデルに基づいて生成された前記物体データに対応する第二物体の形状と前記基準物体の形状との間の類似度が前記目標範囲内になるように前記第二モデルを更新するステップと、を含むことを特徴とする機械学習方法。
【請求項8】
請求項5に記載の機械学習方法であって、
前記計算機システムは、前記第一モデルの更新履歴を管理するための履歴管理情報を保持し、
前記機械学習方法は、
前記少なくとも一つの計算機が、前記第一物体の把持成功確率の統計値及び前記第一物体の把持成功確率の最大値の変化量のいずれかを評価値として算出するステップと、
前記少なくとも一つの計算機が、前記評価値に基づいて、前記第一モデルの学習が停滞しているか否かを判定するステップと、
前記第一モデルの学習が停滞していると判定された場合、前記少なくとも一つの計算機が、前記履歴管理情報を用いて、前記第一モデルを更新するステップと、を含むことを特徴とする機械学習方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、物体を把持する装置の制御モデルを生成するための機械学習の技術に関する。
【背景技術】
【0002】
機械学習の技術の高度化に伴って、自動車及びロボット等を制御するためのアルゴリズム(モデル)の開発が進展している。例えば、物体を把持する装置(把持装置)を制御するためのアルゴリズムを開発する技術として特許文献1に記載の技術が知られている。
【0003】
特許文献1には、「DB1の過去の取り出し成否の情報をもとに、計測特徴識別部52で、センサ2で計測したワークの一部の掴みやすさを推定し、把持動作演算部53、開閉動作演算部54において、掴みにくそうなものは優先して掴まないが、他に掴めそうなものがないときは、ハンドの開閉量・動作速度・把持力のうち少なくとも一つを調整し、より丁寧な取り出し動作をおこなう」装置が記載されている。また、特許文献1には、ニューラルネットワーク等の識別器を用いてワークのつかみやすさを推定することが記載されている。
【0004】
従来技術では、既知の形状の物体に関する学習データを用いて識別器が生成される。そのため、既知の形状の物体については把持の可否を予測できるが、未知の形状の物体については把持の可否を予測できない。
【先行技術文献】
【特許文献】
【0005】
【文献】特開2013-52490号公報
【非特許文献】
【0006】
【文献】Hiroharu Kato, Yoshitaka Ushiku, Tatsuya Harada、"Neural 3D Mesh Renderer"、[online]、2017年11月20日、[2019年3月25日検索]、インターネット<https://arxiv.org/abs/1711.07566>
【発明の概要】
【発明が解決しようとする課題】
【0007】
識別器の精度を向上させるためには、様々な形状の物体に関する学習データを用いた学習が必要である。
【0008】
本発明は、様々な形状の物体に関する学習データを自動的に生成し、当該学習データを用いて効率的に識別器の精度を向上させるための技術を提供する。
【課題を解決するための手段】
【0009】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、把持装置が物体を把持するための制御アルゴリズムを学習する計算機システムであって、前記計算機システムは、演算装置及び前記演算装置に接続される記憶装置を有する少なくとも一つの計算機を備え、前記少なくとも一つの計算機は、前記物体の形状に関する情報を含む物体データ、当該物体を把持する位置の基準となる把持点、及び前記物体の把持の成否を示す情報を含む学習データを用いて、当該物体の把持成功確率を出力する第一モデルを生成するための第一学習処理と、基準物体の形状を変形させた物体の前記物体データを出力する第二モデルを生成するための第二学習処理と、を実行し、前記少なくとも一つの計算機は、前記第二学習処理において、前記第二モデルに基づいて、前記基準物体の形状を変形した第一物体の前記物体データを生成し、前記第一物体の把持点を決定し、前記第一物体の物体データ及び前記第一物体の把持点の複数の組を前記第一モデルに入力し、前記第一モデルより出力された前記第一物体の把持成功確率の最大値及び目標確率の差に基づいて、前記第二モデルを更新する。
【発明の効果】
【0010】
本発明によれば、様々な形状の物体に関する学習データを識別器(第一モデル)の学習状態に合わせて自動的に生成し、当該学習データを用いた学習処理を実行することにより識別器の精度を効率的に向上させることができる。上記した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【0011】
図1】実施例1の計算機システムの構成例を示す図である。
図2】実施例1の学習対象のモデルの一例を示す図である。
図3】実施例1の計算機のハードウェア構成を示す図である。
図4】実施例1の計算機システムによって提示される設定画面の一例を示す図である。
図5】実施例1の第一学習部が実行する処理の一例を説明するフローチャートである。
図6】実施例1の第一学習部が実行する第一学習処理の一例を説明するフローチャートである。
図7】実施例1の第二学習部が実行する処理の一例を説明するフローチャートである。
図8】実施例1の第二学習部が実行する第二学習処理の一例を説明するフローチャートである。
図9】実施例1の把持装置の制御の一例を説明するフローチャートである。
図10】実施例2の第二学習部が実行する処理の一例を説明するフローチャートである。
図11】実施例2の第二学習部が実行する第二学習処理の一例を説明するフローチャートである。
図12】実施例3の計算機システムの構成例を示す図である。
図13】実施例3の第一学習部が実行する処理の一例を説明するフローチャートである。
図14】実施例3の第二学習部が実行する処理の一例を説明するフローチャートである。
【発明を実施するための形態】
【0012】
まず、本発明の概要について説明する。本発明では、GAN(Generative Adversarial Networks)を応用して、把持装置の制御アルゴリズム(モデル)を学習する。GANでは、画像を生成するGeneratorと、Generatorによって生成された画像であるか否かを識別するDiscriminatorとがそれぞれ学習される。
【0013】
本発明の計算機システムは、任意の把持点で任意の形状の物体を把持できる確率(把持成功確率)を算出する確率モデルと、任意の形状の物体の形状に関する情報を含む物体データを生成する物体データ生成モデルとをそれぞれ学習する。
【0014】
確率モデルの学習では、物体データ生成モデルによって生成された物体データを用いて、任意の形状の物体の把持成功確率の最大値が閾値(目標確率)より大きくなるように確率モデルが学習される。これによって、様々な形状の物体を把持するための確率モデルを効率的に学習できる。
【0015】
物体データ生成モデルの学習では、目標確率及び把持成功確率の最大値の差が小さくなるように物体データ生成モデルが学習される。すなわち、確率モデルの学習の進捗状態に合わせるように物体データ生成モデルが更新される。これによって、把持成功確率が目標確率と近くなるような物体データを効率的に生成できる。したがって、より効率的な確率モデルの学習を実現できる。
【0016】
以下、本発明の実施例を、図面を用いて説明する。ただし、本発明は以下に示す実施例の記載内容に限定して解釈されるものではない。本発明の思想ないし趣旨から逸脱しない範囲で、その具体的構成を変更し得ることは当業者であれば容易に理解される。
【0017】
以下に説明する発明の構成において、同一又は類似する構成又は機能には同一の符号を付し、重複する説明は省略する。
【0018】
本明細書等における「第1」、「第2」、「第3」等の表記は、構成要素を識別するために付するものであり、必ずしも、数又は順序を限定するものではない。
【0019】
図面等において示す各構成の位置、大きさ、形状、及び範囲等は、発明の理解を容易にするため、実際の位置、大きさ、形状、及び範囲等を表していない場合がある。したがって、本発明では、図面等に開示された位置、大きさ、形状、及び範囲等に限定されない。
【実施例1】
【0020】
図1は、実施例1の計算機システムの構成例を示す図である。図2は、実施例1の学習対象のモデルの一例を示す図である。図3は、実施例1の計算機100のハードウェア構成を示す図である。
【0021】
まず、図2を用いて、実施例1の計算機システムが学習するモデルについて説明する。
【0022】
倉庫及び工場等の作業空間において、把持装置200が物体210の把持作業を行う。把持装置200は、制御装置201及びアーム202から構成される。なお、把持装置200は、カメラ等のセンサ、並びに、タイヤ及びモータ等の移動装置を有してもよい。
【0023】
制御装置201は、把持装置200全体を制御する。制御装置201には、図示しないコントローラ及び駆動装置等が含まれる。アーム202は、制御装置201による制御に従って物体を把持する。アーム202は、力覚センサ及び触覚センサ等を有してもよい。なお、本発明は、アーム202の形態に限定されない。物体210を把持できる形態であればどのような形態でもよい。
【0024】
ここで、把持装置200の把持作業における処理の概要について説明する。
【0025】
制御装置201は、センサ等から物体210が存在する空間の画像を取得する。制御装置201は、確率モデルに基づいて、物体210の把持点220を選択する。ここで、把持点220は、例えば、アーム202が物体210を把持する位置の基準となる座標である。
【0026】
制御装置201は、把持点220への軌道計画を生成する。ここで、軌道計画は、アーム202を把持点220まで移動させるためのアーム202及び把持装置200の移動軌道に関する情報である。
【0027】
制御装置201は、軌道計画に基づいて、把持装置200の動作を制御するための制御情報を生成し、出力する。把持装置200は、制御情報に基づいて、アーム202が把持点220において物体210を把持するように動く。
【0028】
実施例1の計算機システムは、把持装置200が物体を把持するための制御アルゴリズムである確率モデルを生成するための学習処理を実行する。図1の説明に戻る。
【0029】
計算機システムは、複数の計算機100-1、100-2から構成される。各計算機100-1、100-2は、直接又はネットワークを介して互いに接続される。
【0030】
計算機100-1は、任意の把持点220で任意の形状の物体210を把持できる確率(把持成功確率)を算出する確率モデルを生成するための学習処理を実行する。
【0031】
確率モデルは、物体210の形状に関する情報を含む物体データ及び把持点220を含む入力データから把持成功確率を算出するモデルである。なお、計算機100-1は、物体データそのものを確率モデルに入力してもよいし、VAE(Variational AutoEncoder)等を用いて抽出された物体データの特徴量を確率モデルに入力してもよい。
【0032】
計算機100-2は、学習用物体データ170を生成する物体データ生成モデルを生成するための学習処理を実行する。計算機100-2には、学習用物体データ170を生成するために用いる基準物体データ101が入力される。基準物体データ101は、基準となる物体に関するデータである。基準物体データ101及び学習用物体データ170は、例えば、ポリゴンメッシュをレンダリングすることによって生成された画像データである。
【0033】
物体データ生成モデルは、基準物体データ101を入力データとして受け付けて、学習用物体データ170を生成するモデルである。
【0034】
ここで、図3を用いて計算機100-1、100-2のハードウェア構成について説明する。図3では、計算機100-1のハードウェア構成を説明する。なお、計算機100-2のハードウェア構成は計算機100-1と同一である。
【0035】
計算機100-1は、プロセッサ300、主記憶装置301、副記憶装置302、ネットワークインタフェース303、及びIOインタフェース304を有する。各ハードウェアは内部バスを介して互いに接続される。
【0036】
なお、図2に示す計算機100-1のハードウェア構成は一例であってこれに限定されない。例えば、計算機100-1は、図示しないハードウェアを有してもよいし、副記憶装置302及びIOインタフェース304等の一部のハードウェアを有していなくてもよい。
【0037】
プロセッサ300は、主記憶装置301に格納されるプログラムを実行する。プロセッサ300がプログラムにしたがって処理を実行することによって、特定の機能を実現する機能部(モジュール)として動作する。以下の説明では、機能部を主語に処理を説明する場合、プロセッサ300が当該モジュールを実現するプログラムを実行していることを示す。
【0038】
主記憶装置301は、DRAM(Dynamic Random Access Memory)等の記憶装置であり、プロセッサ300が実行するプログラム及びプログラムが使用する情報を格納する。また、主記憶装置301は、プログラムが使用するワークエリアとしても用いられる。計算機100-1、100-2の主記憶装置301に格納されるプログラム及び情報については後述する。
【0039】
なお、プログラム及び情報は副記憶装置302等、主記憶装置301以外のデバイス又は装置に格納されてもよい。この場合、プロセッサ300が、デバイス又は装置からプログラム及び情報を読み出し、主記憶装置301にロードする。
【0040】
副記憶装置302は、HDD(Hard Disk Drive)及びSSD(Solid State Drive)等の記憶装置であり、データを永続的に格納する。
【0041】
ネットワークインタフェース303は、ネットワーク310を介して端末320等の外部装置と通信するためのインタフェースである。
【0042】
IOインタフェース304は、入力装置330及び出力装置331等に接続するためのインタフェースである。なお、入力装置330は、キーボード、マウス、及びタッチパネル等であり、出力装置331は、ディスプレイ及びプリンタ等である。
【0043】
図1の説明に戻る。次に、計算機100-1、100-2の主記憶装置301に格納されるプログラム及び情報について説明する。
【0044】
計算機100-1の主記憶装置301は、第一学習部110を実現するプログラム及び確率モデル管理情報130を格納する。
【0045】
確率モデル管理情報130は、確率モデルを管理するための情報である。確率モデル管理情報130は、少なくとも確率モデルを定義するパラメタを含む。確率モデル管理情報130には、確率モデルの構造等に関する情報が含まれてもよい。例えば、確率モデルがニューラルネットワークである場合、確率モデル管理情報130には、階層の構造等に関する情報が含まれてよい。
【0046】
第一学習部110は、確率モデルを生成するための学習処理(第一学習処理)を実行する。第一学習部110は、把持確率算出部111、パラメタ更新部112、及びシミュレーション部113を含む。
【0047】
把持確率算出部111は、把持点及び物体データの組と、確率モデル管理情報130によって定義される確率モデルとに基づいて、把持点における物体の把持成功確率を算出する。パラメタ更新部112は、確率モデルを定義するパラメタを更新する。すなわち、パラメタ更新部112は確率モデルを更新する。
【0048】
シミュレーション部113は、学習用物体データ170を用いたシミュレーションを実行することによって学習データ150及び確率データ160を生成する。シミュレーションは、例えば、物理シミュレーションが考えられる。ここで、学習データ150は、学習用物体データ170及び把持点(座標)を含む。確率データ160は、把持点及び把持成功確率を含む。
【0049】
計算機100-2の主記憶装置301は、第二学習部120を実現するプログラム及び物体データ生成モデル管理情報140を格納する。
【0050】
物体データ生成モデル管理情報140は、物体データ生成モデルを管理するための情報である。物体データ生成モデル管理情報140は、少なくとも物体データ生成モデルを定義するパラメタを含む。物体データ生成モデル管理情報140には、物体データ生成モデルの構造等に関する情報が含まれてもよい。例えば、物体データ生成モデルがニューラルネットワークである場合、物体データ生成モデル管理情報140には、階層の構造等に関する情報が含まれてよい。
【0051】
第二学習部120は、物体データ生成モデルを生成するための学習処理(第二学習処理)を実行する。第二学習部120は、物体データ生成部121、パラメタ更新部122、及び把持点データ生成部123を含む。
【0052】
物体データ生成部121は、基準物体データ101と、物体データ生成モデル管理情報140によって定義される物体データ生成モデルとに基づいて学習用物体データ170を生成する。物体データ生成部121は、内部で、自身の生成したデータも含めた繰り返し処理により学習用物体データ170を生成してもよい。パラメタ更新部122は、物体データ生成モデルを定義するパラメタを更新する。すなわち、パラメタ更新部122は物体データ生成モデルを更新する。
【0053】
把持点データ生成部123は、学習用物体データ170に対応する物体の把持点を決定し、学習用物体データ170及び把持点を含む評価用入力データ180を生成する。
【0054】
なお、計算機100-1、100-2が有する各機能部については、複数の機能部を一つの機能部にまとめてもよいし、一つの機能部を機能毎に複数の機能部に分けてもよい。また、一つの計算機上で稼働する仮想計算機を用いて各機能部を実現してもよい。
【0055】
なお、第一学習部110の一部の機能部が第二学習部120に含まれてもよいし、第二学習部120の一部の機能部が第一学習部110に含まれてもよい。例えば、第二学習部120がシミュレーション部113を含んでもよい。
【0056】
なお、図1の実線は、第一学習処理におけるデータの入出力を示し、図1の点線は、第二学習処理におけるデータの入出力を示す。本明細書では、第一学習処理及び第二学習処理が循環するように実行されることを敵対的学習と記載する。
【0057】
図4は、実施例1の計算機システムによって提示される設定画面400の一例を示す図である。
【0058】
設定画面400は、第一学習部110及び第二学習部120が実行する学習処理に必要な設定を行うための画面であり、端末320又は出力装置331に表示される。なお、設定画面400は、第一学習部110及び第二学習部120のどちらが提示してもよい。また、第一学習部110及び第二学習部120とは異なる機能部が設定画面400を提示してもよい。
【0059】
設定画面400は、基準物体データ欄401、確率モデル欄402、物体データ生成モデル欄403、学習回数欄404、学習回数欄405、目標確率欄406、設定ボタン410、及び開始ボタン411を含む。
【0060】
基準物体データ欄401は、第二学習部120に入力する基準物体データ101を設定する欄である。確率モデル欄402は、確率モデルを格納する確率モデル管理情報130を設定する欄である。物体データ生成モデル欄403は、物体データ生成モデルを格納する物体データ生成モデル管理情報140を設定する欄である。
【0061】
基準物体データ欄401、確率モデル欄402、及び物体データ生成モデル欄403には、例えば、ファイルパス等が設定される。
【0062】
学習回数欄404は、確率モデルの更新回数の上限値(学習回数の上限値)を設定する欄である。学習回数欄405は、物体データ生成モデルの更新回数の上限値(学習回数の上限値)を設定する欄である。目標確率欄406は、目標確率を設定する欄である。
【0063】
設定ボタン410は、計算機100-1、100-2に、各欄に設定された値を設定するための操作ボタンである。ユーザが設定ボタン410を操作した場合、各欄に設定された値を含む設定指示が計算機システムに送信される。
【0064】
このとき、第一学習部110は、初期の確率モデルを確率モデル管理情報130に登録し、学習回数欄404及び目標確率欄406に設定された値をワークエリアに格納する。また、第二学習部120は、初期の物体データ生成モデルを物体データ生成モデル管理情報140に登録し、基準物体データ101及び目標確率欄406に設定された値をワークエリアに格納する。
【0065】
開始ボタン411は、計算機システムに学習開始指示を入力するための操作ボタンである。当該学習開始指示は、計算機100-1及び計算機100-2のいずれかに送信される。
【0066】
図5は、実施例1の第一学習部110が実行する処理の一例を説明するフローチャートである。
【0067】
第一学習部110は、学習開始指示を受信した場合、以下で説明する処理を開始する。学習開始指示は、入力装置330、端末320、又は第二学習部120から送信される。なお、入力装置330及び端末320は、設定画面400を介して学習開始指示を送信する。
【0068】
まず、第一学習部110は、学習用物体データ170を取得する(ステップS101)。
【0069】
具体的には、第一学習部110は、学習用物体データ170の生成指示を第二学習部120に送信する。第二学習部120の物体データ生成部121は、基準物体データ101及び物体データ生成モデル管理情報140に基づいて学習用物体データ170を生成し、第一学習部110に学習用物体データ170を送信する。
【0070】
次に、第一学習部110は、取得した学習用物体データ170を用いて学習データ150及び確率データ160を生成する(ステップS102)。具体的には、以下のような処理が実行される。
【0071】
シミュレーション部113は、仮想的な空間に、学習用物体データ170に対応する物体を配置する。仮想的な空間における物体の位置及び向き等は任意に設定される。シミュレーション部113は、物体の把持点を決定し、当該把持点を基準に物体を把持できるか否かをシミュレーションする。なお、シミュレーション部113は、同一の把持点について複数回シミュレーションを実行してもよい。
【0072】
シミュレーション部113は、学習用物体データ170及び把持点を含む学習データ150を生成し、把持確率算出部111に学習データ150を送信する。
【0073】
シミュレーション部113は、シミュレーションの結果に基づいて、把持点毎の把持成功確率を算出する。以下の説明では、シミュレーション部113によって算出される把持成功確率を比較用確率とも記載する。
【0074】
シミュレーション部113は、把持点及び比較用確率を含む確率データ160を生成し、パラメタ更新部112に確率データ160を送信する。以上がステップS102の処理の説明である。
【0075】
次に、第一学習部110は、学習データ150及び確率データ160を用いて第一学習処理を実行する(ステップS103)。第一学習処理の詳細は図6を用いて後述する。
【0076】
次に、第一学習部110は、敵対的学習を終了するか否かを判定する(ステップS104)。
【0077】
例えば、第一学習部110は、第一学習処理の実行回数が閾値より大きい場合、敵対的学習を終了すると判定する。
【0078】
敵対的学習を継続すると判定された場合、第一学習部110は、第二学習部120に学習開始指示を送信し(ステップS105)、その後、処理を終了する。敵対的学習を終了すると判定された場合、第一学習部110は処理を終了する。
【0079】
なお、シミュレーション部113は、物体データ、把持点、及びシミュレーションの結果の組を学習データ150として生成し、把持確率算出部111及びパラメタ更新部112に出力してもよい。
【0080】
図6は、実施例1の第一学習部110が実行する第一学習処理の一例を説明するフローチャートである。
【0081】
把持確率算出部111は、学習データ150を確率モデルに入力することによって、任意の把持点における物体の把持成功確率を算出する(ステップS201)。把持確率算出部111は、各把持点の把持成功確率をパラメタ更新部112に送信する。
【0082】
次に、パラメタ更新部112は、各把持点の把持成功確率及び比較用確率に基づいて確率モデルを更新する(ステップS202)。
【0083】
例えば、パラメタ更新部112は、各把持点の把持成功確率及び比較用確率の差が小さくなるように確率モデルを定義するパラメタ(確率モデル管理情報130)を更新する。
【0084】
次に、パラメタ更新部112は、確率モデルの学習を終了するか否かを判定する(ステップS203)。
【0085】
例えば、確率モデルの更新回数が学習回数欄404の値より大きい場合、パラメタ更新部112は確率モデルの学習を終了すると判定する。また、パラメタ更新部112は、テスト用入力データを把持確率算出部111に入力し、把持確率算出部111より出力された把持成功確率の最大値が目標確率より大きい場合、確率モデルの学習を終了すると判定する。
【0086】
確率モデルの学習を継続すると判定された場合、第一学習部110は、ステップS201に戻り、同様の処理を実行する。確率モデルの学習を終了すると判定された場合、第一学習部110は第一学習処理を終了する。
【0087】
図7は、実施例1の第二学習部120が実行する処理の一例を説明するフローチャートである。
【0088】
第二学習部120は、学習開始指示を受信した場合、以下で説明する処理を開始する。学習開始指示は、入力装置330、端末320、又は第一学習部110から送信される。
【0089】
まず、第二学習部120は、評価用入力データ180を生成する(ステップS301)。具体的には、以下のような処理が実行される。
【0090】
物体データ生成部121は、基準物体データ101及び物体データ生成モデルに基づいて、任意の形状の物体のポリゴンメッシュを生成する。物体データ生成部121は、ポリゴンメッシュをレンダリングすることによって画像データを生成する。物体データ生成部121は、画像データを含む学習用物体データ170を生成し、把持点データ生成部123に送信する。
【0091】
レンダリングの手法としては例えば非特許文献1に記載の手法を用いる。なお、本発明は、レンダリングの手法に限定されない。
【0092】
把持点データ生成部123は、学習用物体データ170に対応する物体の複数の把持点を決定し、学習用物体データ170及び把持点を含む評価用入力データ180を生成する。なお、学習用物体データ170及び一つの把持点の組に対して一つの評価用入力データ180が生成される。以上がステップS301の処理の説明である。
【0093】
次に、第二学習部120は、評価用入力データ180を第一学習部110に送信し、参照用確率データ190を取得する(ステップS302)。
【0094】
第一学習部110の把持確率算出部111は、評価用入力データ180を受信した場合、各把持点における物体の把持成功確率を算出し、算出された把持成功確率を含む参照用確率データ190を第二学習部120に送信する。一つの評価用入力データ180に対して一つの参照用確率データ190が生成される。
【0095】
次に、第二学習部120は、第二学習処理を実行する(ステップS303)。第二学習処理の詳細は図8を用いて後述する。
【0096】
次に、第二学習部120は、敵対的学習を終了するか否かを判定する(ステップS304)。
【0097】
例えば、第二学習部120は、第二学習処理の実行回数が閾値より大きい場合、敵対的学習を終了すると判定する。
【0098】
敵対的学習を終了すると判定された場合、第二学習部120は処理を終了する。
【0099】
敵対的学習を継続すると判定された場合、第二学習部120は、第一学習部110に学習開始指示を送信する(ステップS305)。その後、第二学習部120は処理を終了する。
【0100】
図8は、実施例1の第二学習部120が実行する第二学習処理の一例を説明するフローチャートである。
【0101】
パラメタ更新部122は、各把持点の把持成功確率及び目標確率に基づいて物体データ生成モデルを更新する(ステップS401)。
【0102】
具体的には、パラメタ更新部122は、把持成功確率の最大値及び目標確率の差が小さくなるように物体データ生成モデルを定義するパラメタ(物体データ生成モデル管理情報140)を更新する。例えば、ランダムに物体データ生成モデルを定義するパラメタ(物体データ生成モデル管理情報140)を更新してもよいし、ユーザが手動でパラメタを更新してもよい。なお、前述した更新方法は一例であってこれに限定されない。このように物体データ生成モデルを更新することによって、確率モデルから出力される把持成功確率の最大値が目標確率と近くなるような物体データを効率的に生成することができる。
【0103】
次に、パラメタ更新部122は、確率モデルの学習を終了するか否かを判定する(ステップS402)。
【0104】
例えば、物体データ生成モデルの更新回数が学習回数欄405の値より大きい場合、パラメタ更新部122は物体データ生成モデルの学習を終了すると判定する。また、パラメタ更新部122は、テスト用入力データを把持確率算出部111に入力し、把持確率算出部111より出力された把持成功確率の最大値が目標確率より大きい場合、確率モデルの学習を終了すると判定する。
【0105】
物体データ生成モデルの学習を継続すると判定された場合、第二学習部120は、ステップS401に戻り、同様の処理を実行する。物体データ生成モデルの学習を終了すると判定された場合、第二学習部120は第二学習処理を終了する。
【0106】
次に、確率モデルに基づく把持装置200の制御の一例を説明する。図9は、実施例1の把持装置200の制御の一例を説明するフローチャートである。
【0107】
制御装置201は、物体210が存在する空間(作業空間)の画像データを取得する(ステップS501)。
【0108】
次に、制御装置201は、画像データ及び確率モデルを用いて、対象空間における把持成功確率の分布を算出する(ステップS502)。
【0109】
具体的には、制御装置201は、画像データ及び座標を確率モデルに入力し、各座標の把持成功確率を算出する。制御装置201は、公知の画像処理を用いて、画像データに含まれる物体を抽出する処理等を実行してもよい。
【0110】
次に、制御装置201は、作業空間における把持成功確率の分布に基づいて、物体210の把持点を決定し、決定された把持点の軌道計画を生成する(ステップS503)。
【0111】
次に、制御装置201は、軌道計画に基づいてアーム202を制御する(ステップS504)。これによって、把持装置200が物体210を把持する。
【0112】
以上で説明したように、実施例1によれば、第一学習処理において、物体データ生成モデルに基づいて生成された物体データを用いることによって様々な形状の物体を把持するための確率モデルを生成できる。また、把持成功確率の最大値及び目標確率の差に基づいて物体データ生成モデルを更新することによって、把持成功確率の最大値が目標確率と近くなるような物体データを効率的に生成できる。これによって、より効率的な確率モデルの学習を実現できる。
【実施例2】
【0113】
実施例2では、第二学習部120が実行する処理が一部異なる。以下、実施例1との差異を中心に実施例2について説明する。
【0114】
実施例2の計算機システムの構成は実施例1と同一である。計算機100のハードウェア構成は実施例1と同一である。実施例2の計算機100のソフトウェア構成は実施例1と同一である。
【0115】
ただし、実施例2の第二学習部120は進捗フラグを管理する。進捗フラグには、「0」、「1」、「2」のいずれかが設定される。進捗フラグの初期値は「0」に設定されているものとする。「1」は確率モデルの学習が停滞している状態を示し、「2」は確率モデルの学習が進捗している状態を示す。「0」は、前述のいずれにも該当しない状態を示す。
【0116】
実施例2では、確率モデルの学習の進捗状況に応じて第二学習処理の学習を調整する。これによって、効率的な確率モデルの学習を実現できる。
【0117】
実施例2の第一学習部110が実行する処理は実施例1と同一である。実施例2では、第二学習部120が実行する処理が一部異なる。図10は、実施例2の第二学習部120が実行する処理の一例を説明するフローチャートである。
【0118】
ステップS301、ステップS302の処理は実施例1と同一である。ステップS302の処理が実行された後、第二学習部120は、確率モデルの学習が停滞しているか否かを判定する(ステップS351)。判定方法としては以下のような方法が考えられる。
【0119】
(判定方法1)第二学習部120は、各把持点の把持成功確率から把持成功確率の平均値を算出し、当該平均値が閾値より小さいか否かを判定する。把持成功確率の平均値が閾値より小さい場合、第二学習部120は確率モデルの学習が停滞していると判定する。なお、平均値以外の統計値を用いてもよい。
【0120】
(判定方法2)第二学習部120は、把持成功確率の最大値を履歴として管理し、前回の最大値及び今回の最大値に基づいて変化率を算出する。第二学習部120は、把持成功確率の最大値及び目標確率の差が第一閾値より小さく、かつ、変化率が第二閾値より小さいか否かを判定する。前述の条件を満たす場合、第二学習部120は、確率モデルの学習が停滞していると判定する。
【0121】
確率モデルの学習が停滞していると判定された場合、第二学習部120は、進捗フラグに「1」を設定し(ステップS352)、第二学習処理を実行する(ステップS303)。
【0122】
確率モデルの学習が停滞していないと判定された場合、第二学習部120は、第二学習処理を実行する(ステップS303)。
【0123】
ステップS304において敵対的学習を終了しないと判定された場合、第二学習部120は、確率モデルの学習が進捗しているか否かを判定する(ステップS353)。
【0124】
例えば、第二学習部120は、把持成功確率の最大値が目標確率より大きくなる回数が閾値より大きい場合、確率モデルの学習が進捗していると判定する。
【0125】
確率モデルの学習が進捗していないと判定された場合、第二学習部120は、第一学習部110に学習開始指示を送信する(ステップS305)。その後、第二学習部120は処理を終了する。
【0126】
確率モデルの学習が進捗していると判定された場合、第二学習部120は、進捗フラグに「2」を設定し(ステップS354)、第一学習部110に学習開始指示を送信する(ステップS305)。その後、第二学習部120は処理を終了する。
【0127】
実施例2では第二学習処理も異なる。図11は、実施例2の第二学習部120が実行する第二学習処理の一例を説明するフローチャートである。
【0128】
第二学習部120は、進捗フラグが「0」であるか否かを判定する(ステップS451)。
【0129】
進捗フラグが「0」であると判定された場合、第二学習部120は、ステップS453に進む。
【0130】
進捗フラグが「0」でないと判定された場合、第二学習部120は、目標範囲を更新する(ステップS452)。
【0131】
具体的には、第二学習部120は変数α及び変数βを変更する。変数α及び変数βは、基準物体と、更新後の物体データ生成モデルに基づいて生成された物体との間の類似度の範囲を指定するための変数である。なお、第二学習部120は、変数α及び変数βの初期値を保持しているものとする。変数α及び変数βの初期値は設定画面400を介して設定されてもよい。
【0132】
第二学習部120は、把持成功確率の最大値及び目標確率の差に基づいて、変数α、βを更新する。具体的には以下のように設定される。
【0133】
進捗フラグが「1」である場合、第二学習部120は、当該差に基づいて、前回の変数α、βより大きな値を設定する。これによって、更新前の物体データ生成モデルに基づいて生成された物体より、基準物体からの変化量が小さい物体の物体データが生成されるように物体データ生成モデルを更新できる。
【0134】
進捗フラグが「2」である場合、第二学習部120は、当該差に基づいて、前回の変数α、βより小さい値を設定する。これによって、更新前の物体データ生成モデルに基づいて生成された物体より、基準物体からの変化量が大きい物体の物体データが生成されるように物体データ生成モデルを更新できる。
【0135】
前述のような処理を実行することによって、把持成功確率の最大値及び目標確率の差を、物体データ生成モデルの更新に伝搬させることができる。以上がステップS452の処理の説明である。
【0136】
ステップS453では、第二学習部120は、目標範囲を設定する(ステップS453)。
【0137】
次に、パラメタ更新部122は、物体データ生成モデルを更新する(ステップS454)。物体データ生成モデルの更新方法は実施例1と同一である。
【0138】
次に、物体データ生成部121は、更新後の物体データ生成モデルに基づいて、学習用物体データ170を生成する(ステップS455)。
【0139】
次に、パラメタ更新部122は、基準物体と学習用物体データ170に対応する物体との間の類似度を算出する(ステップS456)。
【0140】
次に、パラメタ更新部122は、物体データ生成モデルの学習を終了するか否かを判定する(ステップS457)。具体的には、以下のような処理が実行される。
【0141】
パラメタ更新部122は、類似度が目標範囲内であるか否かを判定する。具体的には、パラメタ更新部122は、類似度が変数α以上、かつ、変数β以下であるか否かを判定する。類似度が目標範囲内である場合、パラメタ更新部122は、物体データ生成モデルの学習を終了すると判定する。
【0142】
類似度が目標範囲外であると判定された場合、パラメタ更新部122は、物体データ生成モデルの更新回数が学習回数欄405の値より大きいか否かを判定する。
【0143】
物体データ生成モデルの更新回数が学習回数欄405の値より大きい場合、パラメタ更新部122は、物体データ生成モデルの学習を終了すると判定する。物体データ生成モデルの更新回数が学習回数欄405の値以下であると判定された場合、パラメタ更新部122は、物体データ生成モデルの学習を継続すると判定する。以上がステップS457の処理の説明である。
【0144】
物体データ生成モデルの学習を継続すると判定された場合、第二学習部120は、ステップS454に戻り、同様の処理を実行する。
【0145】
物体データ生成モデルの学習を終了すると判定された場合、第二学習部120は、進捗フラグに「0」を設定し(ステップS458)、その後、第二学習処理を終了する。
【0146】
変数αの値又は変数βを小さくした場合、基準物体からの変化量が大きい物体の物体データを生成する物体データ生成モデルに更新される。変数α又は変数βを大きくした場合、基準物体からの変化量が小さい物体の物体データを生成する物体データ生成モデルに更新される。
【0147】
変数βを調整は、物体の多様性を調整することに対応する。変数αを調整は、変化量が非常に大きい物体の生成を抑止することに対応する。目標範囲の幅の調整は、物体データ生成モデルの変化量の調整に対応する。
【0148】
複雑な形状の物体の物体データを学習データとして入力した場合、確率モデルの学習が停滞する可能性がある。そこで、実施例2の計算機システムは、確率モデルの学習が停滞している場合、簡易な形状の物体が生成されるように物体データ生成モデルを更新する。すなわち、基準物体からの形状の変化量が更新前の物体データ生成モデルから生成された物体より小さくなるように、物体データ生成モデルが更新される。簡易な形状の物体の物体データを入力することによって、確率モデルの学習の停滞を防止できる。
【0149】
一方、確率モデルの学習が進捗している場合、第二学習部120は、より複雑な形状の物体が生成されるように物体データ生成モデルを更新する。すなわち、基準物体からの形状の変化量が更新前の物体データ生成モデルから生成された物体より大きくなるように、物体データ生成モデルが更新される。これによって、より複雑な形状の物体を把持するための確率モデルを効率的に生成することができる。
【0150】
実施例2によれば、確率モデルの学習の停滞を防止し、かつ、効率的な学習を実現できる。
【実施例3】
【0151】
実施例3では、確率モデルの学習処理の停滞が検出された場合、第二学習部120の指示に基づいて、第一学習部110が確率モデルの再学習処理を実行する。以下、実施例1との差異を中心に実施例3について説明する。
【0152】
図12は、実施例3の計算機システムの構成例を示す図である。
【0153】
実施例3の計算機システムの構成は実施例1と同一である。計算機100のハードウェア構成は実施例1と同一である。実施例3の計算機100-2のソフトウェア構成は実施例1と同一である。
【0154】
実施例3では、計算機100-1の主記憶装置301に履歴管理情報1200が格納される。その他の構成は実施例1と同一である。
【0155】
履歴管理情報1200は、確率モデル管理情報130の履歴を管理するための情報である。履歴管理情報1200では、確率モデル管理情報130及び更新日時が対応づけて管理される。
【0156】
実施例3では、第一学習部110及び第二学習部120が実行する処理が一部異なる。
【0157】
図13は、実施例3の第一学習部110が実行する処理の一例を説明するフローチャートである。
【0158】
第一学習部110は、受信した指示が再学習開始指示であるか否かを判定する(ステップS151)。
【0159】
受信した指示が学習開始指示であると判定された場合、第一学習部110はステップS101に進む。
【0160】
受信した指示が再学習開始指示であると判定された場合、第一学習部110のパラメタ更新部112は、履歴管理情報1200に格納される履歴に基づいて確率モデルを更新する(ステップS152)。その後、第一学習部110はステップS101に進む。
【0161】
例えば、パラメタ更新部112は、更新日時が最も新しい確率モデルの履歴を読出し、確率モデルを更新する。なお、前述の更新方法は一例であって、これに限定されない。例えば、一定期間前の確率モデルの履歴に基づいて確率モデルが更新されてもよい。
【0162】
実施例3のステップS101からステップS105までの処理は実施例1と同一である。
【0163】
図14は、実施例3の第二学習部120が実行する処理の一例を説明するフローチャートである。
【0164】
実施例1のステップS301からステップS302、ステップS303からステップS305の処理は実施例1の処理と同一である。ステップS351の処理は実施例2の処理と同一である。
【0165】
ステップS351において、確率モデルの学習が停滞していないと判定された場合、第二学習部120はステップS303に進む。
【0166】
ステップS351において、確率モデルの学習が停滞していると判定された場合、第二学習部120は第一学習部110に再学習開始指示を出力する(ステップS361)。その後、第二学習部120は処理を終了する。
【0167】
実施例3によれば、確率モデルの学習が停滞している場合、第一学習部110は、過去の確率モデルに戻した上で学習処理を実行する。これによって、学習の停滞を回避することができる。
【0168】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、例えば、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、各実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。
【0169】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるプロセッサが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、CD-ROM、DVD-ROM、ハードディスク、SSD(Solid State Drive)、光ディスク、光磁気ディスク、CD-R、磁気テープ、不揮発性のメモリカード、ROMなどが用いられる。
【0170】
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、C/C++、perl、Shell、PHP、Python、Java(登録商標)等の広範囲のプログラム又はスクリプト言語で実装できる。
【0171】
さらに、実施例の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することによって、それをコンピュータのハードディスクやメモリ等の記憶手段又はCD-RW、CD-R等の記憶媒体に格納し、コンピュータが備えるプロセッサが当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしてもよい。
【0172】
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。
【符号の説明】
【0173】
100 計算機
101 基準物体データ
110 第一学習部
111 把持確率算出部
112、122 パラメタ更新部
113 シミュレーション部
120 第二学習部
121 物体データ生成部
123 把持点データ生成部
130 確率モデル管理情報
140 物体データ生成モデル管理情報
150 学習データ
160 確率データ
170 学習用物体データ
180 評価用入力データ
190 参照用確率データ
200 把持装置
201 制御装置
202 アーム
210 物体
220 把持点
300 プロセッサ
301 主記憶装置
302 副記憶装置
303 ネットワークインタフェース
304 IOインタフェース
310 ネットワーク
320 端末
330 入力装置
331 出力装置
400 設定画面
1200 履歴管理情報
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14