(57)【要約】【課題】  ロボットの力制御による動作時間を短縮できるロボット動作計画装置を実現する。【解決手段】  実施形態によれば、ロボット動作計画装置は、観測情報取得部、目標位置決定部、計測情報取得部、差異算出部、および計画決定部を具備する。観測情報取得部は、ロボットが動作可能な範囲の少なくとも一部を観測して得られる観測情報を取得する。目標位置決定部は、前記観測情報取得部によって第１観測情報が取得された場合、観測情報と位置との関数であって、前記ロボットによる動作の価値を示す行動価値関数と、前記第１観測情報とを用いて、前記ロボットが動作すべき目標位置を決定する。計測情報取得部は前記ロボットの状態を計測することにより得られた計測情報を取得する。差異算出部は前記計測情報を用いて前記第１観測情報に対応する差異を算出する。計画決定部は前記目標位置と前記差異とに基づいて前記ロボットの力制御による動作計画を決定する。【選択図】  図１
2020082293.tif 000002
【特許請求の範囲】
【請求項１】
ロボットが動作可能な範囲の少なくとも一部を観測して得られる観測情報を取得する観測情報取得部と、
前記観測情報取得部によって第１観測情報が取得された場合、観測情報と位置との関数であって、前記ロボットによる動作の価値を示す行動価値関数と、前記第１観測情報とを用いて、前記ロボットが動作すべき第１目標位置を決定する目標位置決定部と、
前記ロボットの状態を計測することにより得られた計測情報を取得する計測情報取得部と、
前記計測情報を用いて前記第１観測情報に対応する第１差異を算出する差異算出部と、
前記第１目標位置と前記第１差異とに基づいて前記ロボットの力制御による動作計画を決定する計画決定部とを具備するロボット動作計画装置。
【請求項２】
前記計画決定部は、前記第１差異が大きいほど、前記力制御の開始点から終了点までの距離を長くする請求項１記載のロボット動作計画装置。
【請求項３】
前記動作計画に基づいて行われた前記ロボットによる動作に基づいて第１報酬を決定する報酬決定部と、
前記第１報酬を用いて前記行動価値関数を更新する更新部とをさらに具備する請求項１記載のロボット動作計画装置。
【請求項４】
前記更新部は、少なくとも前記第１報酬と前記行動価値関数とを用いて、前記行動価値関数の更新量を算出し、前記更新量を用いて前記行動価値関数を更新する請求項３記載のロボット動作計画装置。
【請求項５】
前記報酬決定部はさらに、前記動作計画に基づいて行われた前記ロボットによる動作に基づいて、複数の位置にそれぞれ対応する複数の第２報酬を決定し、
前記更新部はさらに、前記複数の第２報酬を用いて前記行動価値関数を更新する請求項３記載のロボット動作計画装置。
【請求項６】
前記目標位置決定部は、前記行動価値関数と前記第１差異とに基づいて決定される範囲からランダムに前記第１目標位置を決定する請求項３記載のロボット動作計画装置。
【請求項７】
前記計測情報取得部は、前記動作計画に基づいて動作する前記ロボットの状態を計測することにより得られた第１計測情報を取得し、
前記差異算出部は、前記第１計測情報を用いて前記第１差異を更新する請求項１乃至請求項６のいずれか一項に記載のロボット動作計画装置。
【請求項８】
前記差異算出部は、前記行動価値関数の内の前記第１観測情報に対応する第１行動価値関数の第１変化点と、前記第１計測情報の第２変化点との差分を用いて、前記第１差異を更新する請求項７記載のロボット動作計画装置。
【請求項９】
前記第１計測情報は、前記ロボットの可動部分の位置と当該位置で前記可動部分に加わった力とをそれぞれ示す複数の情報を含み、
前記差異算出部は、前記第１行動価値関数が第１閾値以上低下する第１位置と、前記第１計測情報が第２閾値を超える第２位置との差分を用いて、前記第１差異を更新する請求項８記載のロボット動作計画装置。
【請求項１０】
前記第１差異に関する情報を表示装置の画面に表示する表示制御部をさらに具備する請求項１乃至請求項９のいずれか一項に記載のロボット動作計画装置。
【請求項１１】
前記第１差異に関する情報は、時系列順の前記第１差異の変動に基づく前記ロボットの異常の有無を示す請求項１０記載のロボット動作計画装置。
【請求項１２】
前記観測情報取得部によって取得される１つ以上の観測情報にそれぞれ対応する１つ以上の差異に関する情報を、表示装置の画面に表示する表示制御部をさらに具備する請求項１乃至請求項９のいずれか一項に記載のロボット動作計画装置。
【請求項１３】
前記表示制御部は、オブジェクトの種類毎の前記１つ以上の差異の統計量を、前記１つ以上の差異に関する情報として前記画面に表示する請求項１２記載のロボット動作計画装置。
【請求項１４】
前記目標位置決定部は、前記行動価値関数から前記第１観測情報に対応する第１行動価値関数を取得し、前記第１行動価値関数を用いて前記第１目標位置を決定する請求項１記載のロボット動作計画装置。
【請求項１５】
前記目標位置決定部は、前記第１行動価値関数が最大である位置を前記第１目標位置に決定する請求項１４記載のロボット動作計画装置。
【請求項１６】
前記動作計画に基づく制御信号を前記ロボットに送出する送出部をさらに具備する請求項１記載のロボット動作計画装置。
【請求項１７】
前記ロボットが前記制御信号に基づいて動作する間に前記ロボットの状態を計測することにより得られた第１計測情報を取得する計測情報取得部をさらに具備し、
前記差異算出部は、前記第１計測情報を用いて前記第１差異を更新する請求項１６記載のロボット動作計画装置。
【請求項１８】
ロボットと、
請求項１乃至請求項１７のいずれか一項に記載のロボット動作計画装置とを具備するロボットシステム。
【請求項１９】
ロボットを含む環境を観測して得られる観測情報を取得し、
前記観測情報を取得することによって第１観測情報が取得された場合、観測情報と位置との関数であって、前記ロボットによる動作の価値を示す行動価値関数と、前記第１観測情報とを用いて、前記ロボットが動作すべき第１目標位置を決定し、
前記ロボットの状態を計測することにより得られた計測情報を取得し、
前記計測情報を用いて前記第１観測情報に対応する第１差異を算出し、
前記第１目標位置と前記第１差異とに基づいて前記ロボットの力制御による動作計画を決定する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ロボット動作計画装置、ロボットシステム、および方法に関する。
【背景技術】
【０００２】
加工、組み立て、塗装、運搬、荷積み・荷卸し等、様々な作業がロボットにより自動化されてきている。ロボットによる位置制御は、特定の動作を正確に反復することに適している。しかし、ロボットによる位置制御では、やわらかい物をつぶさずにつかむような、動作中に力の調整が必要とされる柔軟な制御は困難である。そこで、位置制御に加えて力制御も可能なロボットが開発されている。
【０００３】
力制御は、例えばロボットによる物品の箱詰めや荷積み作業に用いられる。ロボットは力制御により、物品を箱や他の物品に押し付けながら置くことができるので、物品を隙間なく効率的に詰め込むことができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１８−１２６７９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、位置制御だけでなく力制御も行うロボットの動作は、同様の作業を位置制御だけで行うロボットの動作よりも遅くなることがある。そのため、ロボットの力制御による動作時間を短縮できる新たな機能の実現が必要とされる。
【０００６】
本発明が解決しようとする課題は、ロボットの力制御による動作時間を短縮できるロボット動作計画装置、ロボットシステム、および方法を提供することである。
【課題を解決するための手段】
【０００７】
実施形態によれば、ロボット動作計画装置は、観測情報取得部と、目標位置決定部と、計測情報取得部と、差異算出部と、計画決定部とを具備する。観測情報取得部は、ロボットが動作可能な範囲の少なくとも一部を観測して得られる観測情報を取得する。目標位置決定部は、前記観測情報取得部によって第１観測情報が取得された場合、観測情報と位置との関数であって、前記ロボットによる動作の価値を示す行動価値関数と、前記第１観測情報とを用いて、前記ロボットが動作すべき第１目標位置を決定する。計測情報取得部は、前記ロボットの状態を計測することにより得られた計測情報を取得する。差異算出部は、前記計測情報を用いて前記第１観測情報に対応する第１差異を算出する。計画決定部は、前記第１目標位置と前記第１差異とに基づいて前記ロボットの力制御による動作計画を決定する。
【図面の簡単な説明】
【０００８】
【図１】第１実施形態に係るロボット動作計画装置を備えるロボットシステムの一構成例を示す図。
【図２】第１実施形態のロボット動作計画装置の機能構成例を示すブロック図。
【図３】第１実施形態のロボット動作計画装置によって、行動価値関数と計測情報との差分が算出される例を説明するための図。
【図４】第１実施形態のロボット動作計画装置によって用いられる力制御パラメータの例を説明するための図。
【図５】第１実施形態のロボット動作計画装置によって実行される制御処理の手順の例を示すフローチャート。
【図６】図５の制御処理に含まれる箱詰め制御処理の手順の例を示すフローチャート。
【図７】第１実施形態のロボット動作計画装置のシステム構成例を示すブロック図。
【図８】第２実施形態に係るロボット動作計画装置の機能構成例を示すブロック図。
【図９】第２実施形態のロボット動作計画装置によって実行される制御処理の手順の例を示すフローチャート。
【発明を実施するための形態】
【０００９】
以下、実施の形態について図面を参照して説明する。
【００１０】
（第１実施形態）  
まず図１を参照して、第１実施形態に係るロボット動作計画装置を含むロボットシステムの一構成例を説明する。このロボットシステムは、多関節ロボットや直行ロボット等のロボット本体１００（以下、単にロボットとも称する）の動作を制御するためのシステムである。ロボットシステムは、ロボット１００と、１つ以上の観測情報生成部１１０Ａ，１１０Ｂと、ロボット動作計画装置１２０とを備える。
【００１１】
これらコンポーネント１００，１１０Ａ，１１０Ｂ，１２０は、有線または無線のネットワーク１３０を介して相互に接続される。したがって、ロボット１００、観測情報生成部１１０Ａ，１１０Ｂ、およびロボット動作計画装置１２０は、ネットワーク１３０を介してデータ（信号）を送受信できる。なお、データの送受信はネットワーク１３０を介することなく、コンポーネント間の直接的な有線接続または無線接続を用いて行われてもよい。
【００１２】
ロボット１００は、当該ロボット１００の状態を計測するためのロボットセンサ１０１を備える。ロボットセンサ１０１はロボット１００に内蔵されていてもよいし、ロボット１００に取り付けられていてもよい。ロボットセンサ１０１は、力センサ、角度センサ、加速度センサ、距離センサ（デプスセンサ）、カメラ等の各種センサの少なくとも１つを含む。
【００１３】
以下では、ロボット１００がエンドエフェクタ１０２、アクチュエータ１０３、および多関節アーム１０４を備える多関節ロボットである場合を例示する。エンドエフェクタ１０２は操作対象のオブジェクト（例えば物品）を移動させるために、多関節アーム１０４の先端に取り付けられている。エンドエフェクタ１０２は、例えば操作対象のオブジェクトを把持可能なグリッパーである。
【００１４】
多関節アーム１０４およびエンドエフェクタ１０２は複数のアクチュエータ１０３による駆動に応じて制御される。多関節アーム１０４を構成する２つのアーム部分が結合される関節部分には、例えばモータであるアクチュエータ１０３が設けられている。多関節アーム１０４は各アクチュエータ１０３による駆動に応じて、移動、回転、伸縮（すなわち関節間の角度の変更）等を行う。また多関節アーム１０４の先端に位置するアーム部分とエンドエフェクタ１０２とが結合される関節部分にも、アクチュエータ１０３が設けられている。エンドエフェクタ１０２はアクチュエータ１０３による駆動に応じて、オブジェクトの把持（グリップ）およびその解除（リリース）を行う。
【００１５】
観測情報生成部１１０Ａ，１１０Ｂは、ロボット１００が動作可能な範囲の少なくとも一部を観測することにより観測情報を生成する。この範囲内には、ロボット１００による操作の対象となる１つ以上のオブジェクトが含まれ得る。観測情報生成部１１０Ａ，１１０Ｂは、例えば画像を生成するカメラ、デプスデータを生成する距離センサ等である。観測情報生成部１１０Ａ，１１０Ｂはロボット１００を含む環境内（例えば室内の柱、天井等）に設置されていてもよいし、ロボット１００に取り付けられていてもよい。各観測情報生成部１１０Ａ，１１０Ｂは、例えば、ロボット１００が動作し得る間、常時、ロボット１００が動作可能な範囲の少なくとも一部を観測し、観測情報を生成する。
【００１６】
ロボット動作計画装置１２０はロボット１００の動作を制御する。ロボット動作計画装置１２０は、コンピュータや、ロボット１００の動作を制御するための専用の制御装置等として実現され得る。
【００１７】
ロボット動作計画装置１２０には表示部１４０と指示入力部１５０とが接続され得る。表示部１４０は液晶ディスプレイ（ＬＣＤ）等の表示装置であり、ロボット１００に関する設定、ロボット１００の状態、ロボット１００による作業状況等が表示され得る。指示入力部１５０は、キーボードや、マウス等のポインティングデバイスを含む入力装置である。表示部１４０および指示入力部１５０は、ロボット動作計画装置１２０内に組み込まれていてもよい。
【００１８】
本実施形態では、説明を分かりやすくするために、ロボット１００による作業が物品を箱詰めする作業である場合について説明する。なお、本実施形態の構成が適用されるロボット１００による作業は、物品を箱詰めする作業に限られず、力制御を伴う作業であればいずれであってもよい。力制御は、例えばロボット１００の少なくとも一部（例えばエンドエフェクタ１０２）に加わる力に基づく、ロボット１００による動作の制御である。この力制御により、ロボット１００とその動作可能範囲内のオブジェクト（例えば箱詰めのための物品および箱）のいずれも破損させることなく、作業を実施することができる。
【００１９】
図１に示すように、ロボット１００は箱１６０に１つ以上の物品１７０を詰め込むように動作する。箱１６０は出荷等の用途に用いられる容器（コンテナ）であり、例えば段ボール箱、運送用のパレット等である。
【００２０】
箱１６０および物品１７０は作業台上にそれぞれ配置されている。また、箱１６０および物品１７０は、各々を搬送可能なベルトコンベア上に配置されていてもよい。その場合、箱１６０および物品１７０は、ベルトコンベアの動作によりロボット１００が動作可能な範囲に配置される。
【００２１】
観測情報生成部１１０Ａは、物品１７０の状態を観測可能であるように、例えば物品１７０の上方に配置されている。なお、観測情報生成部１１０Ａは、ロボット１００の一部に取り付けられていてもよい。観測情報生成部１１０Ａは、上方から物品１７０の状態を計測することにより観測情報を生成する。この観測情報は、例えば物品１７０の画像とデプスデータの少なくとも一方を含む。
【００２２】
観測情報生成部１１０Ｂは、箱１６０の状態を観測可能であるように、例えば箱１６０の上方に配置されている。なお、観測情報生成部１１０Ｂは、ロボット１００の一部に取り付けられていてもよい。観測情報生成部１１０Ｂは、上方から箱１６０の状態を計測することにより観測情報を生成する。この観測情報は、例えば箱１６０の画像とデプスデータの少なくとも一方を含む。
【００２３】
ロボット動作計画装置１２０は、これら観測情報生成部１１０Ａ，１１０Ｂにより生成された観測情報を用いて、少なくとも、物品１７０の１つを把持し、移動し、箱１６０に詰め込むまでの動作計画を作成する。ロボット動作計画装置１２０は、作成された動作計画に基づく制御信号をロボット１００のアクチュエータ１０３に送出することにより、ロボット１００を動作させる。
【００２４】
ロボットシステムには、ロボット１００による動作を模擬したシミュレータ１８０が設けられていてもよい。シミュレータ１８０は、例えばコンピュータ等の情報処理装置として実現され、ロボット１００による動作の価値を示す行動価値関数の学習に用いられる。
【００２５】
シミュレータ１８０による強化学習では、箱１６０に詰め込むことができた物品１７０の数、体積、重量等に基づいて正の報酬が与えられ、また物品１７０を箱１６０に詰めるときに箱１６０や他の物品１７０に衝突（すなわち接触）したことに基づいて負の報酬が与えられる。強化学習のアルゴリズムには、例えばＱ−Ｌｅａｒｎｉｎｇ、Ｓａｒｓａ、Ａｃｔｏｒ−Ｃｒｉｔｉｃ等が用いられる。
【００２６】
学習により得られた行動価値関数はロボット動作計画装置１２０に移植される。シミュレータ１８０は、行動価値関数を例えばネットワーク１３０を介してロボット動作計画装置１２０に配信する。
【００２７】
なお、シミュレータ１８０はロボットシステムの外部に設けられていてもよい。その場合、学習により得られた行動価値関数は、ＵＳＢフラッシュメモリのような各種の記憶媒体を介してロボット動作計画装置１２０内に取得されてもよい。
【００２８】
図２はロボット動作計画装置１２０の機能構成の例を示す。ロボット動作計画装置１２０は、観測情報取得部２１０、目標位置決定部２２０、関数差異評価部２３０、力制御計画部２４０、動作計画・制御部２５０、計測情報取得部２６０、表示制御部２７０、および記憶部２８０を備える。
【００２９】
観測情報取得部２１０は、例えばネットワーク１３０を介して、観測情報生成部１１０Ａ，１１０Ｂから観測情報Ｓを取得（受信）する。上述したように観測情報Ｓは、例えば物品１７０と箱１６０の各々について、画像とデプスデータの少なくとも一方を含む。
【００３０】
計測情報取得部２６０は、例えばネットワーク１３０を介して、ロボット１００に設けられるロボットセンサ１０１から計測情報Ｆ（Ａ）を取得する。計測情報Ｆ（Ａ）は、ロボット１００が、ロボット動作計画装置１２０（より詳しくは、後述する動作計画・制御部２５０）によって送出された制御信号に基づいて動作する間に、ロボットセンサ１０１がロボット１００の状態を計測することにより得られたものである。計測情報Ｆ（Ａ）は、例えば、ロボット１００のある可動部分（ここではエンドエフェクタ１０２）の位置データと、当該可動部分に加わる力を示す力センサ信号とを含む。つまり計測情報Ｆ（Ａ）は、ロボット１００の可動部分の位置と、当該位置にあったときに可動部分に加わった力とを示し、したがってそれら位置（位置データ）と力（力センサ信号）とは同期されている。計測情報取得部２６０は計測情報Ｆ（Ａ）を関数差異評価部２３０に出力する。
【００３１】
目標位置決定部２２０は観測情報Ｓと行動価値関数Ｑ（Ｓ，Ａ）とを用いて、１つ以上の物品１７０の内のある１つの物品（以下、操作対象物品とも称する）１７１が置かれるべき、箱１６０内の目標位置Ａ０を決定する。決定される目標位置Ａ０は、操作対象物品１７１が置かれるべき位置や領域を示し、例えば１つ以上の座標で表される。またこの目標位置Ａ０は、操作対象物品１７１が置かれるべき向きや傾き等の姿勢もさらに示し得る。
【００３２】
目標位置決定部２２０は、観測情報Ｓに対して位置検出処理、形状推定処理、姿勢推定処理等の各種の処理を施し得る。これにより、物品１７０および箱１６０の位置、形状、姿勢等を示すデータが得られる。なお、観測情報取得部２１０によって取得される観測情報Ｓが、すなわち観測情報生成部１１０Ａ，１１０Ｂによって提供される観測情報Ｓが、物品１７０および箱１６０の位置、形状、姿勢等を示すデータを含んでいてもよい。
【００３３】
行動価値関数Ｑ（Ｓ，Ａ）は観測情報Ｓと位置Ａの関数であって、ロボット１００による動作の価値を示す。つまり行動価値関数Ｑ（Ｓ，Ａ）は、観測情報Ｓが入力された条件下での物品を置く位置Ａの価値を評価する関数である。行動価値関数Ｑ（Ｓ，Ａ）は、箱１６０に物品１７０が多く詰め込める位置ほど価値が高く、他の物品１７０や箱１６０の一部と衝突したり、荷崩れを起こしたりする位置は価値が低くなるように学習されている。
【００３４】
目標位置Ａ０は行動価値関数Ｑ（Ｓ，Ａ）が最大である位置、すなわち、  
【数１】
2020082293.tif 000003
に決定される。
【００３５】
行動価値関数Ｑ（Ｓ，Ａ）は、例えばルックアップテーブルやニューラルネットワーク等として実現され得る。行動価値関数Ｑ（Ｓ，Ａ）は、ロボット１００の動作を模擬したシミュレータ１８０がＱ−ＬｅａｒｎｉｎｇやＳａｒｓａ等の強化学習アルゴリズムを用いた学習を行うことにより、取得されたものである。
【００３６】
目標位置決定部２２０は、取得された観測情報Ｓまたは観測情報Ｓを処理することにより得られたデータと、行動価値関数Ｑ（Ｓ，Ａ）とを用いて、目標位置Ａ０を決定する。より具体的には第１観測情報Ｓ１が取得されている場合、目標位置決定部２２０は行動価値関数Ｑ（Ｓ，Ａ）から第１観測情報Ｓ１に対応する第１行動価値関数Ｑ（Ｓ１，Ａ）を取得し、この第１行動価値関数Ｑ（Ｓ１，Ａ）を用いて目標位置Ａ０を決定する。目標位置Ａ０は第１行動価値関数Ｑ（Ｓ１，Ａ）が最大である位置である。
【００３７】
目標位置決定部２２０は、決定された目標位置Ａ０を力制御計画部２４０に出力する。また目標位置決定部２２０は、第１行動価値関数Ｑ（Ｓ１，Ａ）を関数差異評価部２３０に出力する。
【００３８】
関数差異評価部２３０は、計測情報取得部２６０により取得されていた計測情報Ｆ（Ａ）を用いて観測情報Ｓに対応する差異Ｄ（Ｓ）を算出する。より具体的には、関数差異評価部２３０は、過去に関数差異評価部２３０に入力された、ある観測情報Ｓに対応する行動価値関数Ｑ（Ｓ，Ａ）と、当該行動価値関数Ｑ（Ｓ，Ａ）を用いて行われたロボット１００による動作を計測した計測情報Ｆ（Ａ）との組を用いて、観測情報Ｓに対応する差異Ｄ（Ｓ）を算出する。
【００３９】
ある観測情報Ｓに対応する差異Ｄ（Ｓ）は、その観測情報Ｓが取得された場合に力制御による動作で操作対象物品１７１が移動され得る最大の距離を示す。したがって、差異Ｄ（Ｓ）が小さいほど、力制御による動作で操作対象物品１７１が移動され得る最大の距離は短くなるので、力制御による動作で操作対象物品１７１が移動される速度が一定であるならば、力制御による動作時間が短縮される可能性が高まる。一方、差異Ｄ（Ｓ）が大きいほど、力制御による動作で操作対象物品１７１が移動され得る最大の距離は長くなるので、力制御による動作で操作対象物品１７１が移動される速度が一定であるならば、力制御による動作時間が長くなる可能性が高まる。
【００４０】
関数差異評価部２３０は、例えば、第１観測情報Ｓ１に対応する第１行動価値関数Ｑ（Ｓ１，Ａ）と、第１行動価値関数Ｑ（Ｓ１，Ａ）を用いて行われたロボット１００による動作を計測した計測情報Ｆ（Ａ）との組を用いて、第１観測情報Ｓ１に対応する差異Ｄ（Ｓ１）を算出（更新）する。この計測情報Ｆ（Ａ）は、第１行動価値関数Ｑ（Ｓ１，Ａ）を用いて決定された目標位置Ａ０に対して、ロボット１００が力制御による動作を実際に行った間に計測されたものである。
【００４１】
なお、過去に入力された行動価値関数Ｑ（Ｓ，Ａ）と計測情報Ｆ（Ａ）との組の数が十分でない場合（例えば閾値未満である場合）、関数差異評価部２３０は観測情報Ｓに対応する差異Ｄ（Ｓ）に特定の値を設定してもよい。この特定の値は、例えばあらかじめ決められた初期値である。
【００４２】
図３を参照して、第１観測情報Ｓ１に対応する行動価値関数Ｑ（Ｓ１，Ａ）と計測情報Ｆ（Ａ）との組を用いて、第１観測情報Ｓ１に対応する差異Ｄ（Ｓ１）が算出される例を説明する。図３に示す例では、横軸を位置Ａとし、縦軸を価値Ｑおよび力Ｆとして、行動価値関数Ｑ（Ｓ１，Ａ）３００および計測情報Ｆ（Ａ）３１０が示されている。なお図３では、説明を分かりやすくするために位置Ａを１次元で例示しているが、位置Ａは２次元または３次元であってもよい。
【００４３】
関数差異評価部２３０は、まず、行動価値関数Ｑ（Ｓ１，Ａ）３００の第１変化点と計測情報Ｆ（Ａ）３１０の第２変化点とをそれぞれ検出する。行動価値関数Ｑ（Ｓ１，Ａ）３００の第１変化点は、行動価値関数Ｑ（Ｓ１，Ａ）３００が急激に低下する（例えば第１閾値以上低下する）第１位置Ａ１である。この第１位置Ａ１は、目標位置決定部２２０が行動価値関数Ｑ（Ｓ１，Ａ）３００に基づいて、操作対象物品１７１が箱１６０や他の物品（例えば箱１６０内に既に置かれている物品）に接触すると判断する位置に相当する。
【００４４】
計測情報Ｆ（Ａ）３１０の第２変化点は、計測情報Ｆ（Ａ）３１０が第２閾値を超える第２位置Ａ２である。この第２位置Ａ２は、操作対象物品１７１が箱１６０や他の物品に実際に接触した位置に相当する。
【００４５】
関数差異評価部２３０は第１位置Ａ１（第１変化点）と第２位置Ａ２（第２変化点）との差分値３２０を算出し、この差分値３２０を第１観測情報Ｓ１と関連付けて記憶部２８０に記録する。関数差異評価部２３０は、記憶部２８０から、第１観測情報Ｓ１に関連付けられた１つ以上の差分値を読み出し、それら１つ以上の差分値を統計処理することにより得られた統計値を、第１観測情報Ｓ１に対応する差異Ｄ（Ｓ１）として算出する。記憶部２８０には、観測情報生成部１１０Ａ，１１０Ｂによって生成され得る複数の観測情報Ｓにそれぞれ対応する複数の差異Ｄ（Ｓ）が格納されている。また１つ以上の差分値の統計値には、例えば平均値（μ）、平均値に定数ａ倍した分散（σ）を加えた値（μ＋ａσ）等が用いられる。
【００４６】
なお、関数差異評価部２３０は、第１観測情報Ｓ１に対応する行動価値関数Ｑ（Ｓ１，Ａ）と計測情報Ｆ（Ａ）との組が得られる毎に、差分値を算出し、この差分値を用いた統計処理により第１観測情報Ｓ１に対応する差異Ｄ（Ｓ１）を更新してもよい。
【００４７】
多数の様々な観測情報Ｓが得られている場合には、観測情報Ｓを部分集合に分割し、部分集合毎に差分値の統計量（すなわち、部分集合に対応する差異Ｄ（Ｓ））を算出してもよい。部分集合を構成する方法としては、物品の種類毎に分割する方法や、ｋ平均法等のクラスタリングアルゴリズムを用いる方法がある。
【００４８】
また差異Ｄ（Ｓ）は、差分値３２０をサンプルとした回帰分析で求めてもよい。回帰分析には、あらかじめ決められた関数モデルで近似する方法や、ニューラルネットワークで学習する方法等が用いられ得る。
【００４９】
図２に戻り、力制御計画部２４０は、目標位置決定部２２０により決定された目標位置Ａ０と、関数差異評価部２３０により算出された差異Ｄ（Ｓ）とに基づいて、ロボット１００の力制御による動作計画を決定する。この動作計画は、例えば力制御のパラメータを含む。
【００５０】
図４を参照して、力制御のパラメータの例を説明する。図４に示す例では、ロボット１００が操作対象物品１７１を箱１６０に詰める場合を想定する。箱１６０には、操作対象物品１７１とは別の物品４１０が既に詰められている。また目標位置決定部２２０によって操作対象物品１７１を置く目標位置４２０（Ａ０）が決定され、関数差異評価部２３０によって対応する差異Ｄ（Ｓ）が算出されているものとする。
【００５１】
力制御計画部２４０は、ロボット１００による力制御の動作の開始点４３０と終了点４４０とを決定する。開始点４３０は、ロボット１００が力制御による動作を開始する位置である。終了点４４０は、ロボット１００が力制御による動作を行い得る限界位置である。
【００５２】
例えば、開始点４３０は、目標位置４２０から周辺の障害物（図４に示す例では物品４１０）への方向とは逆方向で、且つ目標位置４２０からｃＤ（Ｓ）の距離を有する位置に決定される。ここでｃは定数である。終了点４４０は、目標位置４２０から開始点４３０への方向とは逆方向で、且つ目標位置４２０からｃＤ（Ｓ）の距離を有する位置に決定される。
【００５３】
ロボット１００（より具体的にはアクチュエータ１０３）は、操作対象物品１７１が開始点４３０に到達した後に、操作対象物品１７１を、開始点４３０から目標位置４２０への方向に、操作対象物品１７１を把持するエンドエフェクタ１０２に特定の値の力が加わるまで、移動させるように動作する。ロボット１００はさらに、操作対象物品１７１を把持するエンドエフェクタ１０２に特定の値の力が加わっていない場合であっても、操作対象物品１７１が終了点４４０に到達したならば、操作対象物品１７１の移動を終了するように動作する。
【００５４】
力制御計画部２４０は、ロボット１００に上記の動作を行わせるための力制御パラメータを生成する。力制御パラメータは、例えば目標位置４２０、開始点４３０、および終了点４４０を含む。力制御パラメータに基づき動作するロボット１００は、安全に作業を行うための差異Ｄ（Ｓ）が大きいほど、力制御が行われる区間（距離）を長くすることにより、操作対象物品１７１が箱１６０や他の物品４１０に接触する位置よりも手前から力制御による動作を開始するので、ロボット１００、物品１７１，４１０、および箱１６０のいずれも破損させることなく、安全に作業を行うことができる。また、安全に作業を行うための差異Ｄ（Ｓ）が小さいほど、力制御が行われる区間（距離）を短くできるので、ロボット１００等の安全が保障された状態で、ロボット１００による力制御の動作時間を短縮できる。
【００５５】
図２に戻り、動作計画・制御部２５０は、力制御計画部２４０によって決定されたロボット１００の力制御による動作計画以外の動作計画を生成する。すなわち、動作計画・制御部２５０は、操作対象物品１７１の把持、力制御の開始点４３０までの移動、力制御による動作終了後の操作対象物品１７１のリリース、特定の位置（例えば初期位置）への移動等を含む動作計画を生成する。
【００５６】
そして動作計画・制御部２５０は、力制御計画部２４０によって決定された力制御の動作計画を含む、ロボット１００による操作対象物品１７１の箱詰めのための全体の動作計画に基づく制御信号をロボット１００に送出する。より具体的には、動作計画・制御部２５０は、ロボット１００をこの動作計画に従って動作させるためにアクチュエータ１０３に送出される制御信号を生成する。つまり、動作計画がアクチュエータ制御のための制御信号に変換される。この制御信号は、例えば、エンドエフェクタ１０２で操作対象物品１７１を把持し、開始点４３０まで移動し、開始点４３０から終了点４４０まで移動する間にエンドエフェクタ１０２に加わる力が閾値を超えたならば、またはエンドエフェクタ１０２に加わる力が閾値を超えることなく終了点４４０まで到達したならば、移動を停止し、操作対象物品１７１をリリースすることを指示する制御信号である。制御信号はさらに、リリース後に、ロボット１００の可動部分（例えばエンドエフェクタ１０２および多関節アーム１０４）が特定の初期位置まで戻ることを指示していてもよい。
【００５７】
動作計画・制御部２５０は、ネットワーク１３０を介して、生成された制御信号をロボット１００（より詳しくはアクチュエータ１０３）に送出する。これにより、制御信号に基づくアクチュエータ１０３の駆動に応じて、ロボット１００が動作計画に従う動作を行う。
【００５８】
表示制御部２７０は、ロボット１００の動作計画に関する各種の情報が表示部１４０の画面に表示されるように制御する。表示される情報は、例えば関数差異評価部２３０によって算出された差異Ｄ（Ｓ）に関する情報、力制御による動作に関する情報等である。差異Ｄ（Ｓ）に関する情報は、１つ以上の観測情報Ｓにそれぞれ対応する１つ以上の差異Ｄ（Ｓ）に関する情報であり、例えば差異Ｄ（Ｓ）の平均、分散、ヒストグラム、時系列的な変化のグラフ等を含み得る。また力制御による動作に関する情報は、例えば力制御による動作が行われた距離、時間等を含み得る。
【００５９】
また、表示制御部２７０は、物品１７０の種類毎の差異Ｄ（Ｓ）の統計量を、差異Ｄ（Ｓ）に関する情報として画面に表示してもよい。これによりユーザは、物品１７０の種類毎に力制御が行われ得る最大の長さ（距離）を認識することができる。力制御が行われ得る最大の長さがより長い種類の物品１７０は、ロボット１００による箱詰めに時間を要する可能性が高い。ユーザはそのような物品１７０の箱詰め動作が改善されるようにロボット動作計画装置１２０を改良することができる。
【００６０】
表示制御部２７０は、複数の種類の物品から差異Ｄ（Ｓ）が大きい種類の物品１７０（例えば、差異Ｄ（Ｓ）が閾値を超えている物品１７０、差異Ｄ（Ｓ）が大きい順に特定の数の物品１７０、等）を選択し、選択された物品１７０に関する情報を画面に表示してもよい。これによりユーザは、差異Ｄ（Ｓ）が大きい種類の物品１７０を、力制御による動作時間が長くなる可能性が高い物品として認識できる。
【００６１】
さらに表示制御部２７０は、時系列順の差異Ｄ（Ｓ）の変動を監視することにより、その監視結果に基づいてロボット１００の異常の有無を画面に表示してもよい。表示制御部２７０は、例えば差異Ｄ（Ｓ）または単位時間当たりの差異Ｄ（Ｓ）の変動量が閾値を超えた場合に、故障の警告を画面に表示する。なお故障の警告はユーザに警告を通知できるいずれの形態で行われてもよく、例えば音声を用いて行われてもよい。
【００６２】
以上の構成により、ロボット１００を安全に動作させながら、ロボット１００の力制御による動作時間を短縮できる。ロボット動作計画装置１２０は、観測情報Ｓ毎の、および位置Ａ毎の価値を評価した行動価値関数Ｑ（Ｓ，Ａ）と、ロボットセンサ１０１によって得られた計測情報Ｆ（Ａ）との差異を評価して、安全な力制御によるロボット１００の動作を計画する。これにより、シミュレータ１８０を用いて学習された行動価値関数Ｑ（Ｓ，Ａ）に基づく目標位置Ａ０に対するロボット１００の動作の安全性を保障しながら、当該動作に要する時間を短縮できる。
【００６３】
ところで、強化学習を用いて力制御による動作のパラメータ（力制御パラメータ）を設定する方法として、例えば実際のロボットシステムにおいて、力制御による動作時間が短いときに正の報酬を与え、物品が破損したときに負の報酬を与える強化学習を用いる方法がある。この方法では、物品を破損せず、且つ動作時間が短い力制御パラメータを学習できる。しかし実際のロボットシステムを用いた強化学習は、ロボットが実際の動作を行うために時間を要する上、十分に学習できるまでは物品やロボットを破損してしまうことがあるので、コストが高い。
【００６４】
そのため、シミュレータを用いてコンピュータ上で強化学習を行い、十分に学習した後に、その学習結果をロボットシステムに実装する方法が考えられる。この方法では、ロボットシステムはシミュレータにより学習された力制御パラメータを初期値として用い、ロボットによる実際の動作でさらに強化学習を行い、最適化される。
【００６５】
しかしながら、シミュレータにより模擬されるロボットの動作と実際のロボットの動作とには差異がある場合がある。またシミュレータにより学習されたパラメータは、そのシミュレータに最適化された力制御パラメータである。そのため、この力制御パラメータをそのまま用いて実際のロボットを動作させた場合には、シミュレータと実際のロボットとの差異が原因となって、物品やロボットに破損が生じる虞がある。
【００６６】
上述した本実施形態の構成では、シミュレータ１８０による学習で生成された力制御パラメータである行動価値関数Ｑ（Ｓ，Ａ）だけでなく差異Ｄ（Ｓ）も用いることにより、実際のロボット１００を安全に動作させながら、ロボット１００の力制御による動作時間を短縮できる。
【００６７】
図５のフローチャートは、ロボット動作計画装置１２０によって実行される制御処理の手順の例を示す。
【００６８】
まずロボット動作計画装置１２０は、ロボット１００の動作を模擬可能なシミュレータ１８０を用いた強化学習により生成された行動価値関数Ｑ（Ｓ，Ａ）を取得する（ステップＳ１１）。ロボット動作計画装置１２０は、例えばシミュレータ１８０による強化学習が完了したことに応じて、あるいはロボットシステムの管理者による操作に応じて、行動価値関数Ｑ（Ｓ，Ａ）を取得する。
【００６９】
強化学習がＱ−Ｌｅａｒｎｉｎｇ、Ｓａｒｓａ等を用いて行われる場合には、行動価値関数Ｑ（Ｓ，Ａ）が直接学習できる。また強化学習がＡｃｔｏｒ−Ｃｒｉｔｉｃを用いて行われる場合には、行動価値関数Ｑ（Ｓ，Ａ）の代わりに、評価のためのアドバンテージ関数が用いられてもよい。一方、一部の方策勾配に基づく強化学習方法等では、行動価値関数Ｑ（Ｓ，Ａ）が用いられない。このような学習方法が用いられる場合には、図３に示した行動価値関数Ｑ（Ｓ，Ａ）３００の変化点（すなわち行動価値関数Ｑ（Ｓ，Ａ）３００が急激に低下する第１位置Ａ１）の代わりに、目標位置決定部２２０により決定された目標位置Ａ０を近似的に用いて力制御のパラメータが決定され、学習が行われてもよい。
【００７０】
行動価値関数Ｑ（Ｓ，Ａ）が取得された後、ロボット動作計画装置１２０は観測情報Ｓ毎の差異Ｄ（Ｓ）を初期化する（ステップＳ１２）。つまりロボット動作計画装置１２０は、観測情報生成部１１０Ａ，１１０Ｂによって観測され得る複数の観測情報Ｓにそれぞれ対応する複数の差異Ｄ（Ｓ）に対して、それぞれ初期値を設定する。
【００７１】
そして、ロボット動作計画装置１２０は観測情報生成部１１０Ａ，１１０Ｂから観測情報Ｓを取得する（ステップＳ１３）。ロボット動作計画装置１２０は観測情報Ｓを用いて箱詰め対象の物品１７０があるか否かを判定する（ステップＳ１４）。箱詰め対象の物品１７０がない場合（ステップＳ１４のＮＯ）、ステップＳ１３に戻り、箱詰め対象の物品１７０があるか否かが再度判定される。
【００７２】
箱詰め対象の物品１７０がある場合（ステップＳ１４のＹＥＳ）、ロボット動作計画装置１２０は物品１７０の内の１つを箱１６０に詰めるための箱詰め制御処理を行う（ステップＳ１５）。箱詰め制御処理では、ロボット１００に力制御による動作を含む箱詰め動作を行わせるための処理が行われる。箱詰め制御処理の具体的な手順については図６のフローチャートを参照して後述する。
【００７３】
次いでロボット動作計画装置１２０は、箱詰め制御処理において取得された計測情報Ｆ（Ａ）を用いて、ステップＳ１３で取得された観測情報Ｓに対応する差異Ｄ（Ｓ）を更新する（ステップＳ１６）。計測情報Ｆ（Ａ）は、例えば、ロボット１００による箱詰め動作中のエンドエフェクタ１０２の位置データとエンドエフェクタ１０２に加わる力を示す力センサ信号とを含む。ロボット動作計画装置１２０は、観測情報Ｓに対応する行動価値関数Ｑ（Ｓ，Ａ）と取得された計測情報Ｆ（Ａ）との差分値を用いて、観測情報Ｓに対応する差異Ｄ（Ｓ）を更新する。差分値は記憶部２８０に保存されてもよい。
【００７４】
ロボット動作計画装置１２０は、箱１６０内に、別の１つの物品１７０が詰められる空き容量があるか否かを判定する（ステップＳ１７）。空き容量がある場合（ステップＳ１７のＹＥＳ）、ステップＳ１３に戻り、別の１つの物品１７０を箱１６０に詰めるための処理が行われる。
【００７５】
一方、空き容量がない場合（ステップＳ１７のＮＯ）、ロボット動作計画装置１２０は新たな箱１６０の配置を要求し（ステップＳ１８）、ステップＳ１３に戻る。この要求に応じて、例えばベルトコンベアが動作することによって、現在の箱１６０が搬出されると共に新たな箱１６０が搬入される。これにより、ロボット１００が物品１７０を箱詰め可能な特定の位置にその新たな箱１６０が配置される。
【００７６】
このようにステップＳ１３からステップＳ１８までの手順が繰り返し行われることにより、１つの物品１７０を箱１６０に詰める箱詰め動作をロボット１００に繰り返し行わせることができる。また箱詰め動作で計測情報Ｆ（Ａ）が得られる毎に、これをフィードバックとして、対応する差異Ｄ（Ｓ）が更新されるので、差異Ｄ（Ｓ）をロボット１００の実際の構成および環境に応じて最適化していくことができる。
【００７７】
なお、シミュレータ１８０から新たな行動価値関数Ｑ（Ｓ，Ａ）が提供される場合や、ロボットシステムの構成が変更される場合等には、再度ステップＳ１１から処理が実行され得る。
【００７８】
図６のフローチャートを参照して、ロボット動作計画装置１２０によって実行される箱詰め制御処理の手順の例を説明する。この箱詰め制御処理は、図５を参照して上述した制御処理のステップＳ１５に相当する。
【００７９】
まず、ロボット動作計画装置１２０は箱詰め対象の物品１７０から１つの操作対象物品１７１を選択する（ステップＳ１５１）。ロボット動作計画装置１２０は、例えば各物品のサイズ、体積、重量等に基づいて、箱詰め対象の物品１７０から箱１６０に詰められる１つの操作対象物品１７１を選択する。
【００８０】
ロボット動作計画装置１２０は、観測情報Ｓと行動価値関数Ｑ（Ｓ，Ａ）とを用いて、操作対象物品１７１を詰める目標位置Ａ０を決定する（ステップＳ１５２）。ロボット動作計画装置１２０は、観測情報Ｓに対応する行動価値関数Ｑ（Ｓ，Ａ）が最大となる位置を目標位置Ａ０に決定する。
【００８１】
次いでロボット動作計画装置１２０は、記憶部２８０から観測情報Ｓに対応する差異Ｄ（Ｓ）を取得する（ステップＳ１５３）。ある観測情報Ｓに対応する差異Ｄ（Ｓ）は、過去にその観測情報Ｓが得られた際の箱詰め動作において計測された計測情報Ｆ（Ａ）を用いて算出される。より具体的には、当該観測情報Ｓに対応する行動価値関数Ｑ（Ｓ，Ａ）と、計測情報Ｆ（Ａ）との差分値を用いて、観測情報Ｓに対応する差異Ｄ（Ｓ）が算出される。この算出方法については、図３を参照して上述した通りである。
【００８２】
ロボット動作計画装置１２０は、目標位置Ａ０と観測情報Ｓに対応する差異Ｄ（Ｓ）とを用いて、力制御の開始点および終了点を決定する（ステップＳ１５４）。力制御の開始点および終了点を決定する方法については、図４を参照して上述した通りである。
【００８３】
ロボット動作計画装置１２０は、目標位置Ａ０と、力制御の開始点および終了点とに基づいて、ロボット１００の動作計画を作成する（ステップＳ１５５）。そして、ロボット動作計画装置１２０は、この動作計画に従ってロボット１００を動作させるための制御信号をロボット１００に送出する（ステップＳ１５６）。
【００８４】
次いでロボット動作計画装置１２０は、ロボット１００から計測情報Ｆ（Ａ）を取得する（ステップＳ１５７）。そしてロボット動作計画装置１２０は、ステップＳ１５６で送出された制御信号に基づくロボット１００の動作が完了したか否かを判定する（ステップＳ１５８）。ロボット１００の動作が完了していない場合（ステップＳ１５８のＮＯ）、ステップＳ１５７に戻り、計測情報Ｆ（Ａ）の取得が続行される。
【００８５】
一方、ロボット１００の動作が完了した場合（ステップＳ１５８のＹＥＳ）、処理を終了する。
【００８６】
以上により、１つの操作対象物品１７１を箱１６０に詰めるための動作が行われるようにロボット１００を制御できると共に、その動作中のロボット１００の状態を計測した計測情報Ｆ（Ａ）を取得できる。
【００８７】
図７はロボット動作計画装置１２０のシステム構成例を示す。ロボット動作計画装置１２０は、ＣＰＵ７１、システムコントローラ７２、主メモリ７３、グラフィクスコントローラ７４、ＢＩＯＳ−ＲＯＭ７５、不揮発性メモリ７６、通信デバイス７７、エンベデッドコントローラ（ＥＣ）７８等を備える。
【００８８】
ＣＰＵ７１は、ロボット動作計画装置１２０内の様々なコンポーネントの動作を制御するプロセッサである。ＣＰＵ７１は、ストレージデバイスである不揮発性メモリ７６から主メモリ７３にロードされる様々なプログラムを実行する。これらプログラムには、オペレーティングシステム（ＯＳ）７３Ａ、および様々なアプリケーションプログラムが含まれている。アプリケーションプログラムには、ロボット動作計画プログラム７３Ｂが含まれている。このロボット動作計画プログラム７３Ｂは、図２示した観測情報取得部２１０、目標位置決定部２２０、関数差異評価部２３０、力制御計画部２４０、動作計画・制御部２５０、および計測情報取得部２６０の各機能を実現するための命令群を含む。また、不揮発性メモリ７６の一部の記憶領域が、記憶部２８０として用いられ得る。
【００８９】
ＣＰＵ７１は、ＢＩＯＳ−ＲＯＭ７５に格納された基本入出力システム（ＢＩＯＳ）も実行する。ＢＩＯＳは、ハードウェア制御のためのプログラムである。
【００９０】
システムコントローラ７２は、ＣＰＵ７１のローカルバスと各種コンポーネントとの間を接続するデバイスである。システムコントローラ７２には、主メモリ７３をアクセス制御するメモリコントローラも内蔵されている。また、システムコントローラ７２は、ＰＣＩ  ＥＸＰＲＥＳＳ規格のシリアルバスなどを介してグラフィクスコントローラ７４との通信を実行する機能も有している。
【００９１】
グラフィクスコントローラ７４は、ロボット動作計画装置１２０に接続される表示部１４０を制御する表示コントローラである。このグラフィクスコントローラ７４によって生成される表示信号は表示部１４０に送られる。表示部１４０は表示信号に基づいて画面イメージを表示する。
【００９２】
システムコントローラ７２はＵＳＢコントローラをさらに内蔵する。ＵＳＢコントローラは、例えばロボット動作計画装置１２０に設けられるＵＳＢ端子を介して接続される指示入力部１５０との間のデータの送受信を制御する。
【００９３】
通信デバイス７７は、有線通信または無線通信を実行するように構成されたデバイスである。通信デバイス７７は、信号を送信する送信部と信号を受信する受信部とを含む。
【００９４】
ＥＣ７８は、電力管理のためのエンベデッドコントローラを含むワンチップマイクロコンピュータである。ＥＣ７８は、ユーザによるパワーボタンの操作に応じてロボット動作計画装置１２０を電源オンまたは電源オフする機能を有している。
【００９５】
（第２実施形態）  
第１実施形態では、観測情報Ｓに対応する差異Ｄ（Ｓ）がロボット１００による実際の動作に応じて更新される。これに対して第２実施形態では、差異Ｄ（Ｓ）だけでなく行動価値関数Ｑ（Ｓ，Ａ）もロボット１００による実際の動作に応じて更新される。
【００９６】
第２実施形態に係るロボット動作計画装置１２０の構成は第１実施形態のロボット動作計画装置１２０の構成と同様であり、第２実施形態と第１実施形態とでは、行動価値関数Ｑ（Ｓ，Ａ）を更新するために追加された処理の手順のみが異なる。以下、第１実施形態と異なる点のみを説明する。
【００９７】
図８は第２実施形態に係るロボット動作計画装置１２０の機能構成を示す。この構成では、図２に示した第１実施形態のロボット動作計画装置１２０の機能構成に、報酬評価部６００と更新量計算部６１０とが追加されている。
【００９８】
報酬評価部６００は、操作対象物品１７１を箱１６０に詰めるための動作計画に基づいて行われたロボット１００による実際の動作を評価し、その動作に対する報酬Ｒを決定する。例えば操作対象物品１７１を箱１６０に詰める動作中に、ロボット１００の一部や操作対象物品１７１が箱１６０や他の物品と衝突していた場合には、その動作に対する報酬Ｒとして大きな負の値が設定される。一方、ロボット１００の一部や操作対象物品１７１が箱１６０や他の物品と衝突することなく、操作対象物品１７１が箱１６０に詰められていた場合には、その動作に対する報酬Ｒとして０または正の値が設定される。
【００９９】
また、箱１６０に物品１７０をさらに詰めるための空き容量がなくなった場合、その箱１６０に詰められた物品１７０の数、体積、および重さ、箱１６０の容量に対する物品１７０の充填率等に基づく指標に応じて、当該指標が大きいほど、報酬Ｒとして大きな正の値が設定される。操作対象物品１７１の把持から箱詰めまでに要した時間に応じた値が、報酬Ｒにさらに加えられてもよい。
【０１００】
操作対象物品１７１を箱１６０に詰める動作中の衝突、箱１６０に物品１７０をさらに詰めるための空き容量がなくなった等の事象は、観測情報生成部１１０Ａ，１１０Ｂによって生成される観測情報Ｓやロボットセンサ１０１によって生成される計測情報Ｆ（Ａ）を用いて自動で検出されてもよいし、指示入力部１５０を用いたユーザによる操作で入力されてもよい。  
報酬評価部６００は決定された報酬Ｒを更新量計算部６１０に送出する。
【０１０１】
更新量計算部６１０および目標位置決定部２２０は、報酬評価部６００から送出された報酬Ｒを用いて行動価値関数Ｑ（Ｓ，Ａ）を更新する。より具体的には、更新量計算部６１０は、報酬Ｒと、目標位置決定部２２０によって用いられている行動価値関数Ｑ（Ｓ，Ａ）とから、行動価値関数Ｑ（Ｓ，Ａ）の更新量Δを算出する。例えばＱ−Ｌｅａｒｎｉｎｇを用いて行動価値関数Ｑ（Ｓ，Ａ）が学習される場合、更新量計算部６１０は下記の式２を用いて更新量Δを算出する。
【数２】
2020082293.tif 000004
ここで、  
Ａ＊：実際に操作対象物品が置かれた位置、  
Ｓ’：次の操作対象物品に対する観測情報、  
Ａ’：次の操作対象物品の目標位置、  
γ：割引率と称される定数（０＜γ≦１）、  
α：定数  
である。
【０１０２】
なお、力制御による動作で操作対象物品１７１を移動させるときに、ロボット１００が目標位置４２０よりも力制御の開始点４３０側でその力制御による動作を終了した場合には、更新量計算部６１０は、仮想的に物品が目標位置４２０（Ａ０）において箱１６０または他の物品に衝突したものとして、下記の式３を用いて更新量Δ’を算出する。
【数３】
2020082293.tif 000005
ここで、  
Ｒ’：操作対象物品が衝突したときの報酬、  
γ’：定数（０≦γ’≦１）  
である。
【０１０３】
なお、実際に操作対象物品１７１が置かれた位置Ａ＊または目標位置Ａ０だけでなく、複数の位置に対してそれぞれ報酬Ｒを決定し、行動価値関数Ｑ（Ｓ，Ａ）を更新するようにしてもよい。動作計画に基づいて行われたロボット１００の動作に基づいて、例えば、力制御の開始点４３０から力制御による動作が終了した点までの位置に対しては０または正の報酬Ｒ（またはＲ’）が設定され、力制御による動作が終了した点から力制御の終了点４４０までの位置に対しては物品が衝突した際に与えられる負の報酬Ｒ（またはＲ’）が設定される。更新量計算部６１０は、このような位置および報酬を用いて行動価値関数Ｑ（Ｓ，Ａ）の更新量ΔまたはΔ’を算出してもよい。
【０１０４】
更新量計算部６１０は、更新量Δの算出に必要な（Ｓ，Ａ＊，Ｒ，Ｓ’）の組、または更新量Δ’の算出に必要な（Ｓ，Ａ０，Ｒ’，Ｓ’）の組をバッファに記録しておき、１組以上をランダムに取り出して更新量ΔまたはΔ’を算出するようにしてもよい。算出された更新量ΔまたはΔ’は目標位置決定部２２０に送出される。
【０１０５】
目標位置決定部２２０は、算出された更新量ΔまたはΔ’を用いて行動価値関数Ｑ（Ｓ，Ａ）を更新する。目標位置決定部２２０は、行動価値関数Ｑ（Ｓ，Ａ）がニューラルネットワークで学習されている場合、Δ２／２またはΔ’２／２を損失関数としてバックプロパゲーションを行うことにより行動価値関数Ｑ（Ｓ，Ａ）を更新する。
【０１０６】
上記のように行動価値関数Ｑ（Ｓ，Ａ）を更新することにより、関数差異評価部２３０によって算出される差異Ｄ（Ｓ）を徐々に小さくできる。その結果、力制御による動作の長さ、すなわち、力制御の開始点から終了点までの長さが短くなるので、動作時間を短縮できる。
【０１０７】
さらに目標位置決定部２２０は、目標位置４２０（Ａ０）を決定する場合に、ある特定の位置の範囲から、一定の確率εでランダムに目標位置を選択してもよい。この特定の位置の範囲は、例えば観測情報Ｓが得られている場合、観測情報Ｓに対応する行動価値関数Ｑ（Ｓ，Ａ）が最大になる位置を含む範囲、例えばこの行動価値関数Ｑ（Ｓ，Ａ）が最大になる位置を中心とする各座標軸に対して±Ｔの範囲である。Ｔはあらかじめ決められた値であってもよいし、関数差異評価部２３０によって算出される差異Ｄ（Ｓ）が大きいほど大きく、差異Ｄ（Ｓ）が小さいほど小さくなる値であってもよい。目標位置４２０がランダムに選択されることにより、行動価値関数Ｑ（Ｓ，Ａ）および差異Ｄ（Ｓ）を効率的に最適化することができる。
【０１０８】
図９のフローチャートは、ロボット動作計画装置１２０によって実行される制御処理の手順の例を示す。ステップＳ２０１からＳ２０６までの手順は、図５のフローチャートを参照して上述したステップＳ１１からＳ１６までの手順と同様である。
【０１０９】
ロボット１００による箱詰め動作が完了し、その箱詰め動作の内、力制御による動作中の計測情報Ｆ（Ａ）を用いて差異Ｄ（Ｓ）が更新された後、ロボット動作計画装置１２０は、目標位置４２０（Ａ０）よりも開始点４３０側で力制御による動作が終了したか否かを判定する（ステップＳ２０７）。
【０１１０】
目標位置４２０から終了点４４０までの間で力制御による動作が終了した場合（ステップＳ２０７のＮＯ）、ロボット動作計画装置１２０は箱詰め動作（より詳しくは箱詰め動作内の力制御による動作）に対する報酬Ｒを決定する（ステップＳ２０８）。ロボット動作計画装置１２０は決定された報酬Ｒと行動価値関数Ｑ（Ｓ，Ａ）とを用いて、行動価値関数Ｑ（Ｓ，Ａ）の更新量Δを決定する（ステップＳ２０９）。更新量Δの算出には上述した式２が用いられる。ロボット動作計画装置１２０は更新量Δを用いて行動価値関数Ｑ（Ｓ，Ａ）を更新し（ステップＳ２１０）、ステップＳ２１４に進む。
【０１１１】
一方、目標位置４２０よりも開始点４３０側で力制御による動作が終了した場合（ステップＳ２０７のＹＥＳ）、ロボット動作計画装置１２０は箱詰め動作に対する報酬Ｒ’を決定する（ステップＳ２１１）。ロボット動作計画装置１２０は決定された報酬Ｒ’と行動価値関数Ｑ（Ｓ，Ａ）とを用いて、行動価値関数Ｑ（Ｓ，Ａ）の更新量Δ’を決定する（ステップＳ２１２）。更新量Δ’の算出には上述した式３が用いられる。ロボット動作計画装置１２０は更新量Δ’を用いて行動価値関数Ｑ（Ｓ，Ａ）を更新し（ステップＳ２１３）、ステップＳ２１４に進む。
【０１１２】
ステップＳ２１４およびＳ２１５の手順は、図５のフローチャートを参照して上述したステップＳ１７およびＳ１８の手順と同様である。
【０１１３】
以上により、実際の箱詰め動作で得られた計測情報Ｆ（Ａ）に応じて差異Ｄ（Ｓ）が更新されるだけでなく、箱詰め動作の結果に応じて与えられる報酬Ｒに応じて行動価値関数Ｑ（Ｓ，Ａ）も更新されるので、これらパラメータをロボット１００の実際の構成および環境に応じて最適化していくことができる。
【０１１４】
以上説明したように、第１および第２実施形態によれば、ロボットの力制御による動作時間を短縮できる。観測情報取得部２１０は、ロボット１００が動作可能な範囲の少なくとも一部を観測して得られる観測情報Ｓを取得する。目標位置決定部２２０は、観測情報取得部２１０によって第１観測情報Ｓ１が取得された場合、観測情報Ｓと位置Ａとの関数であって、ロボット１００による動作の価値を示す行動価値関数Ｑ（Ｓ，Ａ）と、第１観測情報Ｓ１とを用いて、ロボット１００が動作すべき第１目標位置Ａ０を決定する。計測情報取得部２６０は、ロボット１００の状態を計測することにより得られた計測情報Ｆ（Ａ）を取得する。関数差異評価部２３０は、計測情報Ｆ（Ａ）を用いて第１観測情報Ｓ１に対応する第１差異Ｄ（Ｓ１）を算出する。力制御計画部２４０は、第１目標位置Ａ０と第１差異Ｄ（Ｓ１）とに基づいてロボット１００の力制御による動作計画を決定する。
【０１１５】
上記構成により、例えばシミュレータ１８０による学習で生成される行動価値関数Ｑ（Ｓ，Ａ）だけでなく、差異Ｄ（Ｓ）も用いて決定される動作計画によって、ロボット１００を安全に動作させながら、ロボット１００の力制御による動作時間を短縮できる。
【０１１６】
第１および第２実施形態に記載された様々な機能の各々は、回路（処理回路）によって実現されてもよい。処理回路の例には、中央処理装置（ＣＰＵ）のような、プログラムされたプロセッサが含まれる。このプロセッサは、メモリに格納されたコンピュータプログラム（命令群）を実行することによって、記載された機能それぞれを実行する。このプロセッサは、電気回路を含むマイクロプロセッサであってもよい。処理回路の例には、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、マイクロコントローラ、コントローラ、他の電気回路部品も含まれる。これら実施形態に記載されたＣＰＵ以外の他のコンポーネントの各々もまた処理回路によって実現されてもよい。
【０１１７】
また、第１および第２実施形態の各種処理はコンピュータプログラムによって実現することができるので、このコンピュータプログラムを格納したコンピュータ読み取り可能な記憶媒体を通じてこのコンピュータプログラムをコンピュータにインストールして実行するだけで、これら実施形態と同様の効果を容易に実現することができる。
【０１１８】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１１９】
１００…ロボット（ロボット本体）、１０１…ロボットセンサ、１０２…エンドエフェクタ、１０３…アクチュエータ、１０４…多関節アーム、１１０…観測情報生成部、１２０…ロボット動作計画装置、１３０…ネットワーク、１４０…表示部、１５０…指示入力部、１６０…箱、１７０…物品、２１０…観測情報取得部、２２０…目標位置決定部、２３０…関数差異評価部、２４０…力制御計画部、２５０…動作計画・制御部、２６０…計測情報取得部、２７０…表示制御部、２８０…記憶部、６００…報酬評価部、６１０…更新量計算部。
【図１】
2020082293.tif 000006
【図２】
2020082293.tif 000007
【図３】
2020082293.tif 000008
【図４】
2020082293.tif 000009
【図５】
2020082293.tif 000010
【図６】
2020082293.tif 000011
【図７】
2020082293.tif 000012
【図８】
2020082293.tif 000013
【図９】
2020082293.tif 000014