(58)【調査した分野】(Int.Cl.,DB名)
ロボットがワーク置き場から取得したワークを、作業者に対してワークを受け渡す領域であるワーク受渡領域内で受け渡す場合に、前記ロボットの状態情報を取得する状態情報取得手段と、
前記状態情報の調整情報である行動情報を出力する行動情報出力手段と、
ワークの受け渡しにかかる受渡時間を判定情報とし、前記判定情報に基づいて強化学習における報酬の値を算出する報酬算出手段と、
前記報酬算出手段により算出された前記報酬の値と、前記状態情報と、前記行動情報とに基づいて前記強化学習を行うことにより価値関数を更新する価値関数更新手段と、
を備え、
前記報酬算出手段は、前記状態情報に係る前記受渡時間を前回の受渡時間とし、前記行動情報に基づいて前記状態情報を修正した修正後の状態情報に係る前記受渡時間を今回の受渡時間とした場合に、
前記判定情報である前記今回の受渡時間が前記前回の受渡時間よりも短い場合に、前記報酬の値を正の値とし、
前記判定情報である前記今回の受渡時間が前記前回の受渡時間よりも長い場合に、前記報酬の値を負の値とする行動情報学習装置。
状態情報取得手段が、ロボットがワーク置き場から取得したワークを、作業者に対してワークを受け渡す領域であるワーク受渡領域内で受け渡す場合に、前記ロボットの状態情報を取得するステップと、
行動情報出力手段が、前記状態情報の調整情報である行動情報を出力するステップと、
報酬算出手段が、ワークの受け渡しにかかる受渡時間を判定情報とし、前記判定情報に基づいて強化学習における報酬の値を算出するステップと、
価値関数更新手段が、算出された前記報酬の値と、前記状態情報と、前記行動情報とに基づいて前記強化学習を行うことにより価値関数を更新するステップと、
を含み、
前記報酬算出手段は、前記状態情報に係る前記受渡時間を前回の受渡時間とし、前記行動情報に基づいて前記状態情報を修正した修正後の状態情報に係る前記受渡時間を今回の受渡時間とした場合に、
前記判定情報である前記今回の受渡時間が前記前回の受渡時間よりも短い場合に、前記報酬の値を正の値とし、
前記判定情報である前記今回の受渡時間が前記前回の受渡時間よりも長い場合に、前記報酬の値を負の値とするステップを含む行動情報学習方法。
【発明を実施するための形態】
【0016】
(実施形態)
まず、本発明の実施形態の概略を説明する。本実施形態において、
図1に示すように、ロボット100と、作業者Pとは、作業空間内にて共同で作業をする。そして、ロボット100は、ワーク7(
図3参照)を作業者Pに運搬し、作業者Pは、ロボット100からワーク7を受け取って作業をする。そして、ロボット制御システム1000では、ロボット100がワーク7を運搬してから、作業者Pがワーク7を受け取るまでの時間が最短になるように、ロボット100の行動情報を学習する。
【0017】
次に、本実施形態に係るロボット制御システム1000の構成について説明する。ロボット制御システム1000は、ロボット100、ロボット制御装置200、行動情報学習装置300及びネットワーク400を備えている。
ここで、ロボット制御装置200とロボット100とは、1対1の組とされて、通信可能に接続されている。なお、ロボット制御装置200とロボット100とは、接続インタフェースを介して直接接続されても、また、LAN(Local Area Network)等のネットワークを介して接続されてもよい。
【0018】
また、ロボット制御装置200と、行動情報学習装置300とは、それぞれ接続インタフェースを介して直接に接続、又は、それぞれネットワーク400を介して接続されており、相互に通信を行うことが可能である。なお、ネットワーク400は、例えば、工場内に構築されたLANや、インターネット、公衆電話網、或いは、これらの組み合わせである。ネットワーク400における具体的な通信方式や、有線接続及び無線接続のいずれであるか等については、特に限定されない。
【0019】
次に、ロボット制御システム1000に含まれるこれら装置の機能について、
図2を参照して説明する。ここで、
図2は、各装置に含まれる機能ブロックを表すブロック図である。なお、各装置間に存在するネットワーク400については、その図示を省略する。
【0020】
ロボット100は、ロボット制御装置200に設定されたロボット制御プログラム及びロボット制御装置200に設定されたパラメータの設定値に基づいて生成される動作指令にしたがって、例えば、部品等のワーク7を運搬する。ロボット100は、モータ部110と、開放ボタン120とを備える。
モータ部110は、ロボット100のハンド部13(後述する)等の駆動軸を駆動させるサーボモータである。
開放ボタン120は、ハンド部13に把持したワーク7を取り外す処理を行うためのボタンである。開放ボタン120は、作業者Pにより操作される。開放ボタン120を操作したことによる押下情報は、ロボット制御装置200に送られる。
【0021】
ここで、ロボット100による動作について、
図3に基づき説明する。
図3は、本発明の実施形態におけるロボット100の動作を説明するための図である。
ロボット100は、例えば、6軸多関節型のロボットである。ロボット100の各関節部の駆動軸及びハンド部13の駆動軸は、モータ部110によって駆動するが、ロボット制御装置200によって制御される。
ロボット100は、例えば、ワーク置き場に載置されたワーク7を取得し、作業台上の受渡領域8の所定位置にワーク7を運搬する。このロボット100がワーク7を取得してから受渡領域8の所定位置までワーク7を運搬するまでの時間を、移動時間T1とする。
【0022】
作業者Pによるロボット100への操作、例えば、作業者Pがロボット100のハンド部13の近傍を掴んで動かす動作をすることによって、ロボット100は、位置及び姿勢を変える。また、作業者Pによる開放ボタン120の押下操作によって、ロボット制御装置200のモータ制御部210は、ワーク7をハンド部13から取り外す制御を行い、作業者Pは、ロボット100からワーク7を受け取る。このロボット100がワーク7を受渡領域8の所定位置まで運搬してから作業者Pがワーク7を受け取るまでの時間を、開放時間T2とする。そして、移動時間T1と、開放時間T2とをあわせた時間を、受渡時間Tとする。
【0023】
以上、ロボット100の機能ブロックについて説明したが、上述した機能ブロックは、本実施形態の動作に特に関連する部分である。ロボット100は、上述した機能ブロック以外にも、例えば、動作指令を増幅するモータ駆動アンプや、ユーザの操作を受け付けるための操作盤等、一般的な機能ブロックを備えている。しかしながら、これらの一般的な機能ブロックについては、当業者によく知られているので、詳細な説明及び図示を省略する。
【0024】
図2に戻り、ロボット制御装置200は、ロボット100を制御することにより、ロボット100に所定の動作を行わせる装置である。また、ロボット制御装置200は、行動情報学習装置300に対して状態情報(「ステータス」ともいう。)を送信する。更に、ロボット制御装置200は、行動情報学習装置300から行動情報(「アクション」ともいう。)を受信する。これら各情報の詳細については、行動情報学習装置300の機能ブロックの説明と併せて説明をする。
【0025】
ロボット制御装置200は、モータ制御部210と、パラメータ設定部220と、プログラム修正部230と、受渡時間計測部240とを備える。
【0026】
モータ制御部210は、ロボット制御プログラム及びパラメータ(例えば、ハンド部13を含むロボット100の受渡領域8内での姿勢、受渡領域8内における位置、ワーク7を取得してから受渡領域8内の位置に達するまでのロボット100の移動経路に関する値)の設定値に基づいて動作指令を生成し、生成した動作指令をロボット100に送出する。そして、モータ制御部210は、ロボット100に動作指令を送出することにより、ロボット100のモータ部110等の駆動を制御する。この処理により、ロボット100によるワーク7の運搬動作が実現される。ここで、ロボット制御プログラムには、運搬のための諸条件(例えば、障害物を避けるためのマップ情報、移動速度等)が定義されている。
【0027】
パラメータ設定部220は、ロボット100の当該ロボット制御プログラムによるワーク7の運搬時における移動処理に関するパラメータを設定する部分である。ロボット100のパラメータとは、例えば、ハンド部13を含むロボット100の受渡領域8内での姿勢や、受渡領域8内の位置や、ロボット100の移動経路に関するパラメータである。ハンド部13を含むロボット100の姿勢を示すパラメータは、例えば、ハンド部13の角度に関するデータである。また、受渡領域8内の位置を示すパラメータは、例えば、ハンド部13の位置をXYZ座標で表したデータである。ロボット100の移動経路に関するパラメータは、例えば、ロボット100がワーク7を取得したワーク置き場の位置から受渡領域8までのロボット100の教示点のデータである。ここで、ロボット100の教示点とは、ロボット100のハンド部13の先端部の位置をいう。
かかるパラメータの設定値は、行動情報学習装置300から出力される行動情報や、最適化行動情報に基づいて調整される。
【0028】
プログラム修正部230は、ロボット制御プログラムを直接修正する。具体的には、プログラム修正部230は、当該ロボット制御プログラムで記述されたハンド部13を含むロボット100の受渡領域8内での姿勢や、受渡領域8内の位置等を、行動情報学習装置300から出力される行動情報や、最適化行動情報に基づいて、プログラムコードを直接修正する。
【0029】
受渡時間計測部240は、時間を計測する制御部である。受渡時間計測部240は、ロボット100がワーク置き場に載置されたワーク7を取得し、受渡領域8の所定位置にワーク7を運搬するまでの時間である移動時間T1を計測する。また、受渡時間計測部240は、受渡領域8の所定位置にワーク7を運搬してから作業者Pがワーク7を受け取るまでの時間である開放時間T2を計測する。
【0030】
行動情報学習装置300は、強化学習を行う装置である。行動情報学習装置300に含まれる各機能ブロックの説明に先立って、まずは、強化学習の基本的な仕組みについて説明する。エージェント(本実施形態における行動情報学習装置300に相当)は、環境の状態を観測し、ある行動を選択し、当該行動に基づいて環境が変化する。環境の変化に伴って、何らかの報酬が与えられ、エージェントはより良い行動の選択(意思決定)を学習する。
教師あり学習が、完全な正解を示すのに対して、強化学習における報酬は、環境の一部の変化に基づく断片的な値であることが多い。
このため、エージェントは、将来にわたっての報酬の合計を最大にするように行動を選択するように学習する。
【0031】
このように、強化学習では、行動を学習することにより、環境に行動が与える相互作用を踏まえて適切な行動を学習、すなわち将来的に得られる報酬を最大にするための学
習方法を学ぶ。これは、本実施形態において、例えば、受渡時間Tを短縮し、更に、開放時間T2を短縮するための行動情報を選択するという、未来に影響をおよぼすような行動を獲得できることを表している。
【0032】
ここで、強化学習としては、任意の学習方法を用いることができるが、以下の説明では、或る環境の状態sの下で、行動aを選択する価値Q(s,a)を学習する方法であるQ学習(Q−learning)を用いる場合を例にとって説明をする。
Q学習では、或る状態sのとき、取り得る行動aのなかから、価値Q(s,a)の最も高い行動aを最適な行動として選択することを目的とする。
【0033】
しかしながら、Q学習を最初に開始する時点では、状態sと行動aとの組み合わせについて、価値Q(s,a)の正しい値は全く分かっていない。そこで、エージェントは、或る状態sの下で様々な行動aを選択し、その時の行動aに対して、与えられる報酬に基づいて、より良い行動の選択をすることにより、正しい価値Q(s,a)を学習していく。
【0034】
また、将来にわたって得られる報酬の合計を最大化したいので、最終的に価値Q(s,a)=E[Σ(γ
t)r
t]となるようにすることを目指す。ここでE[]は期待値を表し、tは時刻、γは後述する割引率と呼ばれるパラメータ、r
tは時刻tにおける報酬、Σは時刻tによる合計である。この式における期待値は、最適な行動にしたがって状態変化した場合の期待値である。しかしQ学習の過程において、最適な行動が何であるのかは不明であるので、様々な行動を行うことにより、探索しながら強化学習をする。このような価値Q(s,a)の更新式は、例えば、次の式(1)により表すことができる。
【0036】
上記の式(1)において、s
tは、時刻tにおける環境の状態を表し、a
tは、時刻tにおける行動を表す。行動a
tにより、状態はs
t+1に変化する。r
t+1は、その状態の変化により得られる報酬を表している。また、maxの付いた項は、状態s
t+1の下で、その時に分かっている最もQ値の高い行動aを選択した場合のQ値にγを乗じたものになる。ここで、γは、0<γ≦1のパラメータで、割引率と呼ばれる。また、αは、学習係数で、0<α≦1の範囲とする。
【0037】
上述した式(1)は、試行a
tの結果、返ってきた報酬r
t+1を元に、状態s
tにおける行動a
tの価値Q(s
t,a
t)を更新する方法を表している
。この更新式は、状態s
tにおける行動a
tの価値Q(s
t,a
t)よりも、行動a
tによる次の状態s
t+1における最良の行動の価値max
aQ(s
t+1,a)の方が大きければ、価値Q(s
t,a
t)を大きくし、逆に小さければ、価値Q(s
t,a
t)を小さくすることを示している。つまり、或る状態における或る行動の価値を、それによる次の状態における最良の行動の価値に近づける。ただし、その差は、割引率γと報酬r
t+1のあり方により変わってくるが、基本的には、ある状態における最良の行動の価値が、それに至る一つ前の状態における行動の価値に伝播していく仕組みになっている。
【0038】
ここで、Q学習では、すべての状態行動ペア(s,a)についての価値Q(s,a)のテーブルを作成して、学習を行う方法がある。しかし、すべての状態行動ペアの価値Q(s,a)の値を求めるには状態数が多すぎて、Q学習が収束するのに多くの時間を要してしまう場合がある。
【0039】
そこで、公知のDQN(Deep Q−Network)と呼ばれる技術を利用するようにしてもよい。具体的には、価値関数Qを適当なニューラルネットワークを用いて構成し、ニューラルネットワークのパラメータを調整することにより、価値関数Qを適当なニューラルネットワークで近似することにより価値Q(s,a)の値を算出するようにしてもよい。DQNを利用することにより、Q学習が収束するのに要する時間を短くすることが可能となる。なお、DQNについては、例えば、以下の非特許文献に詳細な記載がある。
【0040】
<非特許文献>
「Human−level control through deep reinforcement learning」、Volodymyr Mnih1著[online]、[平成29年3月17日検索]、インターネット〈URL:http://files.davidqiu.com/research/nature14236.pdf〉
【0041】
行動情報学習装置300は、上記において説明をしたQ学習を行う。具体的には、行動情報学習装置300は、ロボット100において設定されたロボット制御プログラムの内容及び当該ロボット制御プログラム実行時におけるパラメータの組み合わせを状態sとし、当該状態sに係る当該ロボット制御プログラムの修正及びパラメータの調整を行動aとして、選択する価値関数Qを学習する。
【0042】
行動情報学習装置300は、ロボット100において設定されたロボット制御プログラム及びパラメータ等の状態sを観測して、行動aを決定する。行動情報学習装置300は、行動aをするたびに報酬が返ってくる。行動情報学習装置300は、将来にわたっての報酬の合計が最大になるように、最適な行動aを試行錯誤的に探索する。そうすることで、行動情報学習装置300は、ロボット100において設定されたロボット制御プログラムの内容及び当該ロボット制御プログラム実行時におけるパラメータの組み合わせ等である状態sに対して、最適な行動aを選択することが可能となる。
【0043】
すなわち、行動情報学習装置300により学習された価値関数Qに基づいて、或る状態sに係るロボット制御プログラムの内容及び当該ロボット制御プログラム実行時におけるパラメータの組み合わせに対して、適用される行動aのうち、価値関数Qの値が最大となるような行動aを選択することで、ワーク7の受け渡しに係る時間である受渡時間T及び開放時間T2が最短になるような行動aを選択することが可能となる。
【0044】
以上の強化学習を行うために、行動情報学習装置300は、状態情報取得部310、行動情報出力部320、学習部330及び価値関数記憶部340を備える。
【0045】
状態情報取得部310は、ロボット制御プログラムの内容及び当該ロボット制御プログラム実行時におけるパラメータの組み合わせである状態情報(状態s)を、ロボット制御装置200(及び/又はロボット100)から取得する部分である。この状態sは、Q学習における、環境の状態sに相当する。
【0046】
具体的には、本実施形態における状態sには、ロボット100を制御するためのロボット制御プログラムの内容及び当該ロボット制御プログラム実行時におけるパラメータの組み合わせが含まれ、パラメータには、当該ロボット制御プログラム等によるハンド部13を含むロボット100の受渡領域8内での姿勢、受渡領域8内における位置、ワーク7を取得してから受渡領域8内の位置に達するまでの移動経路に関する情報が含まれる。状態情報取得部310は、取得した状態sを学習部330に対して出力する。
【0047】
また、状態情報取得部310は、Q学習を行うための報酬を算出するための判定情報も取得する。具体的には、状態sに係るロボット制御プログラム及び当該ロボット制御プログラム実行時におけるパラメータの組み合わせを実行後の受渡時間Tを、Q学習を行うための報酬を算出するための判定情報とする。受渡時間Tは、上述したように、ロボット100がワーク7を取得してから受渡領域8内の位置まで移動する時間である移動時間T1と、受渡領域8内の位置に移動してから作業者Pにワーク7が受け渡されるまでの開放時間T2とからなる。
【0048】
行動情報出力部320は、学習部330が生成した行動情報(行動a)を、ロボット制御装置200に対して送信する部分である。ロボット制御装置200は、上述したように、この行動aに基づいて、現在の状態s、すなわち現在設定されているロボット制御プログラム及びパラメータを修正することで、次の状態s´(すなわち修正されたロボット制御プログラム、修正されたパラメータ及び当該修正されたロボット制御プログラムと修正されたパラメータによる移動処理を実行した場合の状態)に遷移する。
【0049】
学習部330は、或る環境の状態sの下で、ある行動aを選択する場合の価値Q(s,a)を学習する部分である。具体的には、学習部330は、報酬算出部331、価値関数更新部332及び行動情報生成部333を備える。
【0050】
報酬算出部331は、或る状態sの下で、行動aを選択した場合の報酬を、判定情報に基づいて算出する部分である。ここで、本実施形態では、行動aにより修正された状態s´に係る修正後のロボット制御プログラム及び当該修正後のロボット制御プログラム実行時における修正後のパラメータに基づいて動作したロボット100の受渡時間Tが、行動aにより修正される前の状態sに係る修正前のロボット制御プログラム及び当該修正前のロボット制御プログラム実行時における修正前のパラメータに基づいて動作したロボット100の受渡時間Tよりも長くなった場合に、報酬の値を負の値とする。
【0051】
一方で、行動aにより修正された状態s´に係る修正後のロボット制御プログラム及び当該修正後のロボット制御プログラム実行時における修正後のパラメータに基づいて動作したロボット100の受渡時間Tが、行動aにより修正される前の状態sに係る修正前のロボット制御プログラム及び当該修正前のロボット制御プログラム実行時における修正前のパラメータに基づいて動作したロボット100の受渡時間Tよりも短くなった場合に、報酬の値を正の値とする。
【0052】
また、報酬の値については重みづけを与えるようにすることができる。例えば、移動時間T1と、開放時間T2とでは、開放時間T2が短くなった場合の方が、移動時間T1が短くなった場合に比べて、報酬の正の値を大きくすることが好ましい。つまり、開放時間T2が短くなった度合いに応じて、正の値が大きくなるようにするとよい。
なお、上記の報酬の値の算出方法は、一例であって、これに限定されない。例えば、状態s´と状態sにおける受渡時間Tの偏差、移動時間T1の偏差、及び開放時間T2の偏差と、報酬の値を対応付ける報酬対応テーブ
ルを予め任意に作成しておき、報酬対応テーブルに基づいて、報酬の値を算出するようにしてもよい。また、受渡時間Tの偏差、移動時間T1の偏差、及び開放時間T2の偏差を入力とする報酬関
数を予め任意に作成しておき、報酬関数に基づいて、報酬の値を算出するようにしてもよい。
【0053】
価値関数更新部332は、状態sと、行動aと、行動aを状態sに適用した場合の状態s´と、上記のようにして算出された報酬の値とに基づいてQ学習を行うことにより、価値関数記憶部340が記憶する価値関数Qを更新する。
【0054】
価値関数Qの更新は、オンライン学習で行ってもよく、バッチ学習で行ってもよく、ミニバッチ学習で行ってもよい。
オンライン学習とは、或る行動aを現在の状態sに適用することにより、状態sが新たな状態s´に遷移する都度、即座に価値関数Qの更新を行うという学習方法である。また、バッチ学習とは、或る行動aを現在の状態sに適用することにより、状態sが新たな状態s´に遷移することを繰り返すことにより、学習用のデータを収集し、収集したすべての学習用データを用いて、価値関数Qの更新を行うという学習方法である。更に、ミニバッチ学習とは、オンライン学習と、バッチ学習の中間的な、ある程度学習用データが溜まるたびに価値関数Qの更新を行うという学習方法である。
【0055】
行動情報生成部333は、Q学習の過程において、ロボット100に様々な動作(Q学習における行動aに相当する。)を行わせるために、行動aを生成して、生成した行動aを行動情報出力部320に対して出力する。
【0056】
具体的には、行動情報生成部333は、現在の状態sに対して、Q学習の過程における行動aを選択する。本実施形態における行動aには、現在の状態sに係るロボット制御プログラムで記述された内容に関する修正情報、及び現在の状態sに係るパラメータ(例えば、ハンド部13を含むロボット100の姿勢、受渡領域8内における位置、ワーク7を取得してから受渡領域8内の位置に達するまでのロボット100の移動経路に関する値)の設定値が含まれる。
【0057】
行動情報生成部333は、例えば、状態sに含まれるロボット制御プログラム及びパラメータに対して行動aに含まれるパラメータ(例えば、ハンド部13を含むロボット100の姿勢、受渡領域8内における位置、ワーク7を取得してから受渡領域8内の位置に達するまでのロボット100の移動経路に関する値)の設定値を適用して、状態s´に遷移して、プラスの報酬(正の値の報酬)が返った場合、次の行動a´としては、例えば、受渡領域8内の位置を、ワーク7を取り外した位置である開放位置側に少し移動させたり、ロボット100の姿勢を、ワーク7を取り外した姿勢である開放姿勢の方向に少し変化させたりして、受渡時間Tがより短くなるような行動a´を選択する方策を取るようにしてもよい。
【0058】
また、逆に、マイナスの報酬(負の値の報酬)が返った場合、行動情報生成部333は、例えば、状態s´よりも状態s寄りになるように、行動a´を選択するようにしてもよい。又は、状態s´寄りになるような行動a´を選択することで、マイナスの報酬になると思われる行動を集めるようにしてもよい。
更に、行動情報生成部333は、現在の推定される行動aの価値の中で、最も価値Q(s,a)の高い行動a´を選択するグリーディ法や、ある小さな確率εでランダムに行動a´
を選択し、それ以外では最も価値Q(s,a)の高い行動a´を選択するεグリーディ法といった公知の方法により、行動a´を選択する方策を取るようにしてもよい。
【0059】
価値関数記憶部340は、価値関数Qを記憶する記憶装置である。価値関数記憶部340に記憶された価値関数Qは、価値関数更新部332により更新される。
【0060】
また、行動情報学習装置300は、価値関数更新部332がQ学習を行うことにより更新した価値関数Qに基づいて、価値Q(s,a)が最大となる動作をロボット100に行わせるための行動a(以下、「最適化行動情報」と呼ぶ。)を生成する。
【0061】
行動情報学習装置300は、最適化行動情報出力部350を備えている。
最適化行動情報出力部350は、価値関数記憶部340が記憶している価値関数Qを取得する。この価値関数Qは、上述したように、価値関数更新部332がQ学習を行うことにより更新したものである。そして、最適化行動情報出力部350は、価値関数Qに基づいて、最適化行動情報を生成し、生成した最適化行動情報をロボット制御装置200に対して出力する。この最適化行動情報には、行動情報出力部320がQ学習の過程において出力する行動情報と同様に、修正後のロボット制御プログラム及び当該修正後のロボット制御プログラム実行時における修正後のパラメータが含まれる。
【0062】
ロボット制御装置200が、この最適化行動情報に基づいて現在設定されているロボット制御プログラム及びパラメータを修正して、動作指令を生成することにより、ロボット100は、受渡時間T及び開放時間T2が最短になるように動作することができる。
【0063】
以上、ロボット制御装置200や行動情報学習装置300に含まれる機能ブロックについて説明した。
これらの機能ブロックを実現するために、ロボット制御装置200及び行動情報学習装置300は、CPU(Central Processing Unit)等の演算処理装置を備える。また、ロボット制御装置200及び行動情報学習装置300は、アプリケーションソフトウェアやOS(Operating System)等の各種の制御用プログラムを格納したHDD(Hard Disk Drive)等の補助記憶装置や、演算処理装置がプログラムを実行する上で一時的に必要とされるデータを格納するためのRAM(Random Access Memory)といった主記憶装置も備える。
【0064】
そして、ロボット制御装置200及び行動情報学習装置300は、演算処理装置が補助記憶装置からアプリケーションソフトウェアやOSを読み込み、読み込んだアプリケーションソフトウェアやOSを主記憶装置に展開させながら、これらのアプリケーションソフトウェアやOSに基づいた演算処理を行う。また、ロボット制御装置200及び行動情報学習装置300は、この演算結果に基づいて、各装置が備える各種のハードウェアを制御する。これにより、本実施形態の機能ブロックは実現される。つまり、本実施形態は、ハードウェアとソフトウェアが協働することにより実現することができる。
【0065】
具体例として、ロボット制御装置200は、一般的なロボット100の制御装置に本実施形態を実現するためのアプリケーションソフトウェアを組み込むことにより実現できる。また、行動情報学習装置300は、一般的なパーソナルコンピュータに、本実施形態を実現するためのアプリケーションソフトウェアを組み込むこと
により実現できる。
【0066】
ただし、行動情報学習装置300については、機械学習に伴う演算量が多いため、例えば、パーソナルコンピュータにGPU(Graphics Processing Units)を搭載し、GPGPU(General−Purpose computing on Graphics Processing Units)と呼ばれる技術により、GPUを機械学習に伴う演算処理に利用するようにすると、高速処理できるようになるのでよい。更には、より高速な処理を行うために、行動情報学習装置300は、このようなGPUを搭載したコンピュータを複数台用いてコンピュータ・クラスターを構築し、このコンピュータ・クラスターに含まれる複数のコンピュータにて並列処理を行うようにしてもよい。
【0067】
次に、
図4のフローチャートを参照して本実施形態における行動情報学習処理として、Q学習を行う行動情報学習装置300の動作について説明をする。
【0068】
まず、ステップS11(以下、単に「S」という。)において、状態情報取得部310がロボット制御装置200から状態情報を取得する。取得した状態情報は、価値関数更新部332や行動情報生成部333に対して出力される。上述したように、この状態情報は、Q学習における環境の状態sに相当する情報であり、S11時点での、ロボット制御プログラムの内容とパラメータの設定値である、ハンド部13を含むロボット100の受渡領域8内での姿勢、受渡領域8内の位置、移動経路に関する情報が含まれる。なお、最初にQ学習を開始する時点でのロボット制御プログラム及びパラメータの設定値は、予めユーザが生成するようにする。つまり、本実施形態では、ユーザが作成したロボット制御プログラム及びパラメータの初期設定値を、強化学習により最適なものに調整する。
【0069】
S12において、行動情報生成部333が新たな行動情報を生成し、生成した新たな行動情報(行動a)を、行動情報出力部320を介してロボット制御装置200に対して出力する。行動情報を受信したロボット制御装置200は、受信した行動情報に基づいて現在の状態sに係るロボット制御プログラム及びパラメータを修正した状態s´により、ロボット100を駆動させて、ワーク7の受け渡し処理を行う。上述したように、この行動情報は、Q学習における行動aに相当するものである。ここで、行動情報には、例えば、ロボット制御プログラムの修正値と、パラメータの設定値が含まれる点については、上述した通りである。
【0070】
S13において、状態情報取得部310は、新たな状態s´についての判定情報を取得する。ここで、新たな状態s´には、状態s´に係るロボット制御プログラム及びパラメータを含む。また、判定情報は、状態s´に係る移動処理
を行うために要した移動時間T1及び開放時間T2からなる受渡時間Tを含む。取得した判定情報は、報酬算出部331に対して出力される。
【0071】
報酬算出部331は、入力された判定情報に基づいて報酬を算出する。そのために、S14において、報酬算出部331は、判定情報に含まれる受渡時間Tが短くなったか否かを判定する。かかる判定は、状態s´の判定情報に含まれる、状態s´に係る移動処理を行うために要した受渡時間Tと、状態s´の前の状態である状態sの判定情報に含まれる、状態sに係る移動処理を行うために要した受渡時間Tとを比較することにより行うことができる。受渡時間Tが短くなったのであれば(S14:Yes)、報酬算出部331は、処理をS15に移す。他方、受渡時間Tが長くなったのであれば(S14:NO)、報酬算出部331は、処理をS18に移す。
【0072】
S15において、報酬算出部331は、判定情報に含まれる開放時間T2が、状態s´の前の状態である状態sの判定情報に含まれる、状態sに係る移動処理を行うために要した開放時間T2より短くなったか否かを判定する。開放時間T2が短くなったのであれば(S15:Yes)、報酬算出部331は、処理をS16に移す。他方、開放時間T2が長くなったのであれば(S15:NO)、報酬算出部331は、処理をS17に移す。
【0073】
S16において、報酬算出部331は、報酬を第1の値とする。ここで、第1の値は正の値とする。その後、学習部330は、処理をS19に移す。
S17において、報酬算出部331は、報酬を第2の値とする。ここで、第2の値は正の値とする。また、第2の値は、第1の値より小さいものとする。その後、学習部330は、処理をS19に移す。
S18において、報酬算出部331は、報酬を第3の値とする。ここで、第3の値は負の値とする。
なお、第1の値、第2の値及び第3の値については、前回と比較した時間の差の大きさによって、更に重みづけを行うようにしてもよい。
【0074】
S19において、価値関数更新部332は、上述にて算出された報酬の値に基づいて、価値関数記憶部340が記憶している価値関数Qを更新する。そして、学習部330は、再度S11に戻り、上述した処理を繰り返すことにより、価値関数Qは、適切な値に収束していく。なお、学習部330は、上述した処理を、所定回数繰り返したことや、所定時間繰り返したことを条件として終了するようにしてもよい。
以上、行動情報学習装置300の動作について説明したが、例えば、S14からS18にかけての報酬の値を算出する処理は、一例であって、これに限定されない。例えば、上述したように、状態s´と状態sにおける受渡時間Tの偏差、移動時間T1の偏差、及び開放時間T2の偏差と、を予め設定された報酬対応テーブ
ル又は報酬関
数に入力して、報酬の値を算出するようにしてもよい。
【0075】
以上、
図4を参照して説明した動作により、本実施形態では、受渡時間T及び開放時間T2を短縮するための行動情報を生成するための価値関数Qを生成することができる、という効果を奏する。
【0076】
次に、
図5のフローチャートを参照して、行動情報学習装置300による最適化行動情報の生成時の動作について説明をする。
まず、S21において、行動情報学習装置300の最適化行動情報出力部350は、価値関数記憶部340が記憶している価値関数Qを取得する。この価値関数Qは、上述したように価値関数更新部332がQ学習を行うことにより更新したものである。
【0077】
S22において、最適化行動情報出力部350は、この価値関数Qに基づいて、例えば現在設定されている状態sにおいて、取り得る行動aのなかから価値Q(s,a)の最も高い行動aを最適な行動として選択することで最適化行動情報を生成し、生成した最適化行動情報をロボット制御装置200に対して出力する。
【0078】
以上により、ロボット制御装置200が、この最適化行動情報に基づいて現在設定されている状態s(すなわち、現在設定されているロボット制御プログラム及びパラメータ)を修正して、動作指令を生成する。そして、ロボット制御装置200は、生成した動作指令をロボット100に送ることにより、ロボット100は、受渡時間Tが最短になるように動作することができる、という効果を奏する。
【0079】
また、
図5を参照して説明した動作により、本実施形態では、行動情報学習装置300は、価値関数Qに基づいて最適化行動情報を生成し、ロボット制御装置200は、この最適化行動情報に基づいて現在設定されているロボット制御プログラム及びパラメータを修正して、動作指令を生成する。そして、ロボット制御装置200は、生成した動作指令をロボット100に送ることにより、受渡時間Tを短縮して、ロボット100を制御することが可能となる、という効果も奏する。
【0080】
本実施形態では、上述したように、ロボット制御プログラムやパラメータの設定値を調整しながら強化学習を行うことにより、受渡時間Tを短縮することができる。すなわち、本実施形態は、一般的な技術に比べて、有利な効果を奏する。
【0081】
なお、上記のロボット制御システム1000に含まれる各装置のそれぞれは、ハードウェア、ソフトウェア又はこれらの組み合わせにより実現することができる。また、上記のロボット制御システム1000に含まれる各装置のそれぞれの協働により行われる行動情報学習方法も、ハードウェア、ソフトウェア又はこれらの組み合わせにより実現することができる。ここで、ソフトウェアによって実現されるとは、コンピュータがプログラムを読み込んで実行することにより実現されることを意味する。
【0082】
プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non−transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えば、フレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば、光磁気ディスク)、CD−ROM(Read Only Memory)、CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(random access memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【0083】
また、上述した実施形態は、本発明の好適な実施形態ではあるが、上記実施形態のみに本発明の範囲を限定するものではなく、本発明の要旨を逸脱しない範囲において種々の変更を施した形態での実施が可能である。
【0084】
上述した実施形態では、行動情報学習装置300を、ロボット100やロボット制御装置200とは別体の装置により実現することを想定していたが、行動情報学習装置300の機能の一部又は全部を、例えば、ロボット制御装置200により実現するようにしてもよい。
【0085】
上述した実施形態では、行動情報学習装置300を、学習を行う機能と、行動情報を生成する機能とを有するものとしたが、学習を行う機能と、行動情報を生成する機能とを別の装置で行うようにしてもよい。
【0086】
上述した実施形態では、行動情報学習装置300が強化学習を行うものを説明した。この点、
図6に示すように、ロボット制御システム1000−2が、m個の行動情報学習装置300に対してネットワーク500を介して接続された管理装置600を備えるものとしてもよい。例えば、ロボット制御装置200ごとに行動情報学習装置300を備えた場合には、mは、ロボット制御装置200の数である。
そして、ロボット100と作業者Pの相対的な作業環境が同じ条件(例えば、ロボット100の位置、受渡領域8、ロボット100のハンド部13の移動可能領域等が相対的に同じであること)を満たす場合、複数の行動情報学習装置300−1〜300−mに対してネットワーク500を介して管理装置600を接続することで、管理装置600は、各行動情報学習装置300の価値関数Qを集約することができる。そうすることで、価値関数Qは、すべての行動情報学習装置300との間で共有される。価値関数Qを複数の行動情報学習装置300で共有するようにすれば、各行動情報学習装置300にて分散して強化学習を行うことが可能となるので、強化学習の効率を向上させることが可能となる。
【0087】
そして、管理装置600が、集約した価値関数Qを、各行動情報学習装置300に対して送信するようにしてもよい。
なお、管理装置600は、各行動情報学習装置300から学習用のデータを収集し、価値関数Qを更新するようにしてもよい。
また、管理装置600が、最適化行動情報を、各ロボット制御装置200に対して出力するようにしてもよい。