(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-14
(45)【発行日】2024-06-24
(54)【発明の名称】軌道生成装置、軌道生成方法、及び軌道生成プログラム
(51)【国際特許分類】
B25J 9/22 20060101AFI20240617BHJP
【FI】
B25J9/22 Z
(21)【出願番号】P 2020175009
(22)【出願日】2020-10-16
【審査請求日】2023-08-09
(73)【特許権者】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(73)【特許権者】
【識別番号】504143441
【氏名又は名称】国立大学法人 奈良先端科学技術大学院大学
(74)【代理人】
【識別番号】110001519
【氏名又は名称】弁理士法人太陽国際特許事務所
(72)【発明者】
【氏名】▲濱▼屋 政志
(72)【発明者】
【氏名】松原 崇充
【審査官】亀田 貴志
(56)【参考文献】
【文献】特開平11-85240(JP,A)
【文献】米国特許出願公開第2020/0230815(US,A1)
【文献】特開2018-97616(JP,A)
【文献】特開2018-206286(JP,A)
【文献】特開2019-101799(JP,A)
【文献】ENAYATI, Nima et al.,Variable-Impedance and Force Control for Robust Learning of Contact-rich Manipulation Tasks from User Demonstration,IFAC-PapersOnline,Volume 53, No.2,2021年04月14日,Pages 9834-9840
(58)【調査した分野】(Int.Cl.,DB名)
B25J 1/00 - 21/02
G05B 19/18 - 19/46
Science Direct
(57)【特許請求の範囲】
【請求項1】
教示者によって教示される制御対象の一連の状態を表す軌道情報であって、前記制御対象が行うタスクが成功する場合の軌道情報である成功軌道情報と、前記タスクが失敗する場合の軌道情報である失敗軌道情報と、を取得する取得部と、
前記成功軌道情報に属する前記制御対象の状態と前記失敗軌道情報に属する前記制御対象の状態とから前記制御対象の状態についての成功クラスのクラスタを生成するクラスタリング部と、
前記成功クラスのクラスタに基づいて、前記タスクを前記制御対象に実行させる際に制御目標として使用できる、前記制御対象の一連の状態を表す目標軌道情報を生成する生成部と、
を備えた軌道生成装置。
【請求項2】
前記クラスタリング部は、混合ガウスモデルを用いたクラスタリング手法を適用するとともに、前記成功軌道情報及び前記失敗軌道情報に属する前記制御対象の状態同士の類似度を算出し、算出した類似度に基づいて、前記成功クラスのクラスタを生成する
請求項1記載の軌道生成装置。
【請求項3】
前記制御対象の状態は、前記制御対象の位置又は前記制御対象の位置及び姿勢であり、
前記クラスタリング部は、前記成功軌道情報及び前記失敗軌道情報に属する前記制御対象の各状態に含まれる位置又は位置及び姿勢から前記各状態における前記制御対象の速度を算出し、前記各状態における位置又は位置及び姿勢と前記各状態における速度とから前記類似度を算出する、
請求項2記載の軌道生成装置。
【請求項4】
前記クラスタリング部は、前記制御対象の状態同士の類似度を調整する調整パラメータにより前記類似度を調整する
請求項2又は請求項3記載の軌道生成装置。
【請求項5】
前記クラスタリング部は、前記成功軌道情報に属する前記制御対象の状態同士の間の類似度が大きくなり、前記成功軌道情報に属する前記制御対象の状態と前記失敗軌道情報に属する前記制御対象の状態との間の類似度が小さくなるように前記調整パラメータを設定する
請求項4記載の軌道生成装置。
【請求項6】
前記生成部は、前記成功クラスのクラスタに対して混合ガウス回帰手法を適用して前記目標軌道情報を生成する
請求項2~5の何れか1項に記載の軌道生成装置。
【請求項7】
前記取得部は、さらに、教示すべき軌道を案内するための表示をさせる
請求項1~6の何れか1項に記載の軌道生成装置。
【請求項8】
コンピュータが、
教示者によって教示される制御対象の一連の状態を表す軌道情報であって、前記制御対象が行うタスクが成功する場合の軌道情報である成功軌道情報と、前記タスクが失敗する場合の軌道情報である失敗軌道情報と、を取得し、
前記成功軌道情報に属する前記制御対象の状態と前記失敗軌道情報に属する前記制御対象の状態とから前記制御対象の状態についての成功クラスのクラスタを生成し、
前記成功クラスのクラスタに基づいて、前記タスクを前記制御対象に実行させる際に制御目標として使用できる、前記制御対象の一連の状態を表す目標軌道情報を生成する
処理を実行する軌道生成方法。
【請求項9】
コンピュータに、
制御対象の動作が成功した場合の成功軌道に関する成功軌道情報と、前記制御対象の動作が失敗した場合の失敗軌道に関する失敗軌道情報と、を取得し、
前記成功軌道情報及び前記失敗軌道情報に基づいて、前記成功軌道における前記制御対象の各位置及び前記失敗軌道における前記制御対象の各位置を、予め定めたクラスタリング手法により成功クラス及び失敗クラスにクラスタリングし、
前記成功クラスにクラスタリングされた前記制御対象の位置に基づいて、前記制御対象の目標軌道に関する目標軌道情報を生成する
処理を実行させる軌道生成プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、軌道生成装置、軌道生成方法、及び軌道生成プログラムに関する。
【背景技術】
【0002】
物理的に柔軟な柔軟部を有するソフトロボットは、柔軟部を有しない硬いロボットに比べて安全な接触が可能であり、組立動作への応用が期待されている。
【0003】
その一方で、柔軟さによるダイナミクスの複雑さから、手動で制御器を設計するのは困難である。
【0004】
制御器の設計には学習(例えば強化学習)のアプローチが有効であるが、制御目的(報酬関数)の設計も難しい。なぜならば、硬いロボットと比べて、目標状態(位置)などに正確に追従することが困難だからである。
【0005】
例えば、ロボットがペグを穴に挿入する挿入タスクにおいて、挿入位置の誤差を報酬関数とした場合、ペグが穴の上に到達しないまま差し込みを行ってしまったり、ペグを穴にフィットさせるときに、勢いが余ってオーバーシュートしてしまったりしてしまう場合がある。
【0006】
非特許文献1には、ペグの挿入タスクを複数のサブタスクに区分化して、各区分の制御則を手動で設計する方法が開示されている。
【0007】
また、非特許文献2には、ロボットの運動学習にモデルベース強化学習(Guided Policy Search)を用いる方法が開示されている。この方法では、ロボットが学習中に経験してきた失敗軌道から遠ざかるように方策を更新する。
【0008】
また、非特許文献3には、逆強化学習を用いて、教示者の成功軌道及び失敗軌道から 報酬及び方策を学習する方法が開示されている。この方法では、方策及び報酬の更新の際に、失敗軌道から離れるような拘束を与える。
【先行技術文献】
【非特許文献】
【0009】
【文献】Nishimura et al., "Peg-in-hole under state uncertainties via a passive wrist joint with push-activate-rotation function," 2017 IEEE-RAS 17th International Conference on Humanoid Robotics (Humanoids), pp 67-74, 2020.
【文献】Esteban et al, "Learning Deep Robot Controllers by Exploiting Successful and Failed Executions," 2018 IEEE-RAS 18th International Conference on Humanoid Robots (Humanoids), pp 1-9, 2018.
【文献】Shiarlis et al., "Inverse reinforcement learning from failure," International Conference on Autonomous Agents & Multiagent Systems, pp 1060-1068, 2016.
【発明の概要】
【発明が解決しようとする課題】
【0010】
非特許文献1に開示の方法では、タスクに関する知識を十分に持った設計者しか複数のサブタスクへの区分化ができない、という問題があった。
【0011】
また、非特許文献2に開示の方法では、タスクの失敗は学習中に初めてわかるので、どのような失敗をするかで性能が大きく変化する可能性がある、という問題があった。
【0012】
また、非特許文献3に開示の方法では、更新した方策及び報酬の正しさを確認するために、方策及び報酬が与えられたときのエージェントの振る舞いのデータを繰り返し取得しなければならない、という問題があった。また、この方法は、離散状態空間表現でありシミュレーション上でしか扱っておらず、実機に適用できるとは限らない、という問題があった。
【0013】
本発明は、上記の点に鑑みてなされたものであり、より高い成功率でタスクを達成するための目標軌道情報を生成することができる軌道生成装置、軌道生成方法、及び軌道生成プログラムを提供することを目的とする。
【課題を解決するための手段】
【0014】
開示の第1態様は、軌道生成装置であって、教示者によって教示される制御対象の一連の状態を表す軌道情報であって、前記制御対象が行うタスクが成功する場合の軌道情報である成功軌道情報と、前記タスクが失敗する場合の軌道情報である失敗軌道情報と、を取得する取得部と、前記成功軌道情報に属する前記制御対象の状態と前記失敗軌道情報に属する前記制御対象の状態とから前記制御対象の状態についての成功クラスのクラスタを生成するクラスタリング部と、前記成功クラスのクラスタに基づいて、前記タスクを前記制御対象に実行させる際に制御目標として使用できる、前記制御対象の一連の状態を表す目標軌道情報を生成する生成部と、を備える。
【0015】
上記第1態様において、前記クラスタリング部は、混合ガウスモデルを用いたクラスタリング手法を適用するとともに、前記成功軌道情報及び前記失敗軌道情報に属する前記制御対象の状態同士の類似度を算出し、算出した類似度に基づいて、前記成功クラスのクラスタを生成するようにしてもよい。
【0016】
上記第1態様において、前記制御対象の状態は、前記制御対象の位置又は前記制御対象の位置及び姿勢であり、前記クラスタリング部は、前記成功軌道情報及び前記失敗軌道情報に属する前記制御対象の各状態に含まれる位置又は位置及び姿勢から前記各状態における前記制御対象の速度を算出し、前記各状態における位置又は位置及び姿勢と前記各状態における速度とから前記類似度を算出するようにしてもよい。
【0017】
上記第1態様において、前記クラスタリング部は、前記制御対象の状態同士の類似度を調整する調整パラメータにより前記類似度を調整するようにしてもよい。
【0018】
上記第1態様において、前記クラスタリング部は、前記成功軌道情報に属する前記制御対象の状態同士の間の類似度が大きくなり、前記成功軌道情報に属する前記制御対象の状態と前記失敗軌道情報に属する前記制御対象の状態との間の類似度が小さくなるように前記調整パラメータを設定するようにしてもよい。
【0019】
上記第1態様において、前記生成部は、前記成功クラスのクラスタに対して混合ガウス回帰手法を適用して前記目標軌道情報を生成するようにしてもよい。
【0020】
上記第1態様において、前記取得部は、さらに、教示すべき軌道を案内するための表示をさせるようにしてもよい。
【0021】
開示の第2態様は、軌道生成方法であって、コンピュータが、教示者によって教示される制御対象の一連の状態を表す軌道情報であって、前記制御対象が行うタスクが成功する場合の軌道情報である成功軌道情報と、前記タスクが失敗する場合の軌道情報である失敗軌道情報と、を取得し、前記成功軌道情報に属する前記制御対象の状態と前記失敗軌道情報に属する前記制御対象の状態とから前記制御対象の状態についての成功クラスのクラスタを生成し、前記成功クラスのクラスタに基づいて、前記タスクを前記制御対象に実行させる際に制御目標として使用できる、前記制御対象の一連の状態を表す目標軌道情報を生成する。
【0022】
開示の第3態様は、軌道生成プログラムであって、コンピュータに、制御対象の動作が成功した場合の成功軌道に関する成功軌道情報と、前記制御対象の動作が失敗した場合の失敗軌道に関する失敗軌道情報と、を取得し、前記成功軌道情報及び前記失敗軌道情報に基づいて、前記成功軌道における前記制御対象の各位置及び前記失敗軌道における前記制御対象の各位置を、予め定めたクラスタリング手法により成功クラス及び失敗クラスにクラスタリングし、前記成功クラスにクラスタリングされた前記制御対象の位置に基づいて、前記制御対象の目標軌道に関する目標軌道情報を生成する処理を実行させる。
【発明の効果】
【0023】
本発明によれば、より高い成功率でタスクを達成するための目標軌道情報を生成することができる。
【図面の簡単な説明】
【0024】
【
図2】(A)はロボット10の概略構成を示す図、(B)はロボットのアームの先端側を拡大した図である。
【
図3】ペグの嵌め込み作業を構成する動作区分を説明するための図である。
【
図7】ハンド機構を手で持った状態を示す図である。
【
図8】ハンド機構の指を閉じた状態を示す図である。
【
図9】ハンド機構の指を開いた状態を示す図である。
【
図10】軌道生成装置のハードウェア構成を示すブロック図である。
【
図12】教示する軌道のガイド表示を示す図である。
【
図14】成功クラスのクラスタ及び失敗クラスのクラスタについて説明するための図である。
【
図16】成功軌道情報及び失敗軌道情報を用いて生成された目標軌道と、成功軌道情報のみを用いて生成された目標軌道と、について説明するための図である。
【発明を実施するための形態】
【0025】
以下、本発明の実施形態の一例を、図面を参照しつつ説明する。なお、各図面において同一又は等価な構成要素及び部分には同一の参照符号を付与している。また、図面の寸法比率は、説明の都合上誇張されている場合があり、実際の比率とは異なる場合がある。
【0026】
図1は、ロボット10を制御するための学習モデルを学習するためのロボットシステム1の構成を示す。ロボットシステム1は、ロボット10、ロボット教示装置20、状態観測センサ14、軌道生成装置40、及び学習装置50を有する。
【0027】
(ロボット)
【0028】
図2(A)、
図2(B)は、制御対象の一例としてのロボット10の概略構成を示す図である。本実施形態におけるロボット10は、6軸垂直多関節ロボットであり、アーム11の先端11aに柔軟部13を介してグリッパ(ハンド)12が設けられる。ロボット10は、グリッパ12によって部品(例えばペグ)を把持して穴に嵌め込む嵌め込み作業を行う。
【0029】
図2(A)に示すように、ロボット10は、関節J1~J6を備えた6自由度のアーム11を有する。各関節J1~J6は、図示しないモータによりリンク同士を矢印C1~C6の方向に回転可能に接続する。ここでは、垂直多関節ロボットを例に挙げたが、水平多関節ロボット(スカラーロボット)であってもよい。また、6軸ロボットを例に挙げたが、5軸や7軸などその他の自由度の多関節ロボットであってもよく、パラレルリンクロボットであってもよい。
【0030】
グリッパ12は、1組の挟持部12aを有し、挟持部12aを制御して部品を挟持する。グリッパ12は、柔軟部13を介してアーム11の先端11aと接続され、アーム11の移動に伴って移動する。本実施形態では、柔軟部13は各バネの基部が正三角形の各頂点になる位置関係に配置された3つのバネ13a~13cにより構成されるが、バネの数はいくつであってもよい。また、柔軟部13は、位置の変動に対して復元力を生じて、柔軟性が得られる機構であればその他の機構であってもよい。例えば、柔軟部13は、バネやゴムのような弾性体、ダンパ、空気圧または液圧シリンダなどであってもよい。柔軟部13は、受動要素によって構成されることが好ましい。柔軟部13により、アーム11の先端11aとグリッパ12は、水平方向および垂直方向に、5mm以上、好ましくは1cm以上、更に好ましくは2cm以上、相対移動可能に構成される。
【0031】
グリッパ12がアーム11に対して柔軟な状態と固定された状態とを切り替えられるような機構を設けてもよい。
【0032】
また、ここではアーム11の先端11aとグリッパ12の間に柔軟部13を設ける構成を例示したが、グリッパ12の途中(例えば、指関節の場所または指の柱状部分の途中)、アームの途中(例えば、関節J1~J6のいずれかの場所またはアームの柱状部分の途中)に設けられてもよい。また、柔軟部13は、これらのうちの複数の箇所に設けられてもよい。
【0033】
ロボットシステム1は、上記のように柔軟部13を備えるロボット10の制御を行うためのモデルを、機械学習(例えばモデルベース強化学習)を用いて獲得する。ロボット10は柔軟部13を有しているため、把持した部品を環境に接触させても安全であり、また、制御周期が遅くても嵌め込み作業などを実現可能である。一方、柔軟部13によってグリッパ12および部品の位置が不確定となるため、解析的な制御モデルを得ることは困難である。そこで、本実施形態では機械学習を用いて制御モデルを獲得する。
【0034】
本実施形態では、一例として、ペグの嵌め込み作業という1つの作業(タスク)をロボット10に教示するための軌道情報を、ロボット教示装置20を用いて生成する。ペグの嵌め込み作業を複数の動作区分に分割して説明する。本実施形態では、ロボット教示装置20を用いて、1の動作区分又は連続する複数の動作区分に対応する軌道情報を生成する。
【0035】
図3を参照して、本実施形態におけるペグの嵌め込み作業を構成する動作区分について説明する。
図3においては、51はアーム先端、52はグリッパ、53は柔軟部、54は把持対象物(ペグ)、55は穴を表す。
図3の、符号56および57はそれぞれ、各動作区分において考慮する状態および行動を示す。
【0036】
ペグ嵌め込み作業全体の目的は、ペグ54を穴55に挿入することである。ペグの嵌め込み作業は、次の5つの動作区分に分割すると理解しやすい。
n1:アプローチ
n2:コンタクト
n3:フィット
n4:アライン
n5:インサート
【0037】
「n1:アプローチ」は、グリッパ52を任意の初期位置から穴55付近まで接近させる動作である。「n2:コンタクト」は、ペグ54を穴55付近の表面に接触させる動作である。柔軟部53を固定モードと柔軟モードで切り替え可能な場合には、接触前に柔軟部53を柔軟モードに切り替える。「n3:フィット」は、ペグ54が表面に接触した状態を保ったままペグ54を移動させて、ペグ54の先端が穴55の先端に嵌まるようにする動作である。「n4:アライン」は、ペグ54の先端が穴55に嵌まって接触している状態を保ったまま、ペグ54の姿勢が穴55の軸に平行(この例では鉛直)になるようにする動作である。「n5:インサート」は、ペグ54を穴55の底まで挿入する動作である。
【0038】
教示者は、後述するロボット教示装置20を用いて上記の動作区分の内の1の動作区分又は連続する複数の動作区分に対応させて、ペグ54の挿入が成功する動作及び失敗する動作を実行することにより、成功軌道及び失敗軌道の軌道情報を生成させる。
【0039】
(ロボット教示装置)
【0040】
図4に示すように、ロボット教示装置20は、ハンド機構21、状態検出部22、出力部24、入力部28を含む。詳細は後述するが、状態検出部22は、変位センサ25a、25b、IMU、及び触覚センサ27a、27bを備える。
【0041】
図5には、ハンド機構21の三面図を示した。また、
図6には、ハンド機構21の斜視図を示した。
【0042】
図5、6に示すように、ハンド機構21は、ハンドル30と、ハンドル30の一端に取り付けられた操作部32と、を備える。ハンドル30は、本実施形態では一例として円筒状である。
【0043】
操作部32は、操作対象を把持する2つの指34a、34bと、2つの指34a、34bを開閉可能な開閉機構36と、を備える。
【0044】
なお、本実施形態においては、指34a、34bは、
図2における挟持部12aに対応する。また、指34a、34bが把持する操作対象は、
図3におけるペグ54に対応する。
【0045】
指34aには、ベルト38aが取り付けられている。また、指34bには、ベルト38aと同様のベルト38bが取り付けられている。
【0046】
図7に示すように、教示者としてのユーザは、ベルト38aに親指40aを挿入し、ベルト38bに一差し指40bを挿入し、残りの指でハンドル30を握ることにより、ハンド機構21を持つことができる。すなわち、ハンド機構21は、ユーザが手持ち可能な形状となっている。
【0047】
開閉機構36は、本実施形態では一例として、指34a、34bを
図4に示すハンド機構座標系におけるX軸方向に開閉可能に案内するリニアガイドであり、矩形枠37に取り付けられている。
【0048】
図8に示すように、ユーザが親指40aをベルト38aに挿入し、人差し指40bをベルト38bに挿入した状態で親指40aと人差し指40bとの間を狭める動作を行うことにより、指34a、34bが開閉機構36に沿ってX軸方向に移動し、指34a、34bを閉じることができる。
【0049】
また、
図9に示すように、ユーザが親指40aと人差し指40bとの間を広げる動作を行うことにより、指34a、34bが開閉機構36に沿ってX軸方向に移動し、指34a、34bを開くことができる。
【0050】
状態検出部22は、ハンド機構21の位置又はハンド機構21の位置及び姿勢をロボット10の状態として検出する。状態検出部22は、さらにハンド機構21における複数の指34a、34bの位置を検出してもよい。
【0051】
具体的には、状態検出部22は、ハンド機構21自体の位置及び姿勢を検出するIMU(Inertial Measurement Unit:慣性計測装置)26を備える。IMU26は、
図5等では図示は省略しているが、例えば矩形枠37上に取り付けられる。IMU26は、直交する3軸方向の並進運動及び回転運動を検出する装置である。IMU26は、例えば加速度センサ及びジャイロセンサを含み、加速度センサにより並進運動を検出し、ジャイロセンサにより回転運動を検出する。
【0052】
IMU26は、ハンド機構21の位置、具体的には、ハンド機構21の各軸方向の変位量を検出する。また、IMU26は、ハンド機構21の姿勢、具体的には、ハンド機構21の各軸方向に対する傾き角度を検出する。
【0053】
なお、ロボット10のグリッパ12が鉛直方向下向きの姿勢を維持する動作を教示する場合のように、一定の姿勢を維持する動作を教示する場合には、ハンド機構21の位置を検出できればよいため、ハンド機構21の姿勢を検出するセンサは省略してもよい。
【0054】
また、状態検出部22は、指34a、34bの位置を検出する変位センサ25a、25bを備える。
【0055】
変位センサ25a、25bは、開閉機構36と矩形枠37との間に設けられている。変位センサ25aは、指34aのX軸方向における位置、具体的には、例えば予め定めた基準位置(例えば指34a、34bを閉じた位置)からのX軸方向における変位量を検出する。同様に、変位センサ25bは、指34bのX軸方向における位置を検出する。変位センサ25a、25bには、一例としてポテンショメータやリニアエンコーダを用いることができるが、これに限られるものではない。
【0056】
状態検出部22は、指34a、34bが対称に動く構造になっている場合には、各指の位置を独立に検出せずに、指34aと指34bとの間の間隔又はどちらか一方の指の位置だけを検出してもよい。その検出結果から、指34a、34bの位置を求めることができるので、このような検出をすることも複数の指の位置を検出することに含まれる。
【0057】
また、状態検出部22は、操作対象であるペグ54を把持する側の指34aの表面に取り付けられた触覚センサ27aを備える。同様に、状態検出部22は、ペグ54を把持する側の指34bの表面に取り付けられた触覚センサ27bを備える。状態検出部22は、触覚センサ27a、27bのいずれか一方だけを備えるようにしてもよい。
【0058】
触覚センサ27a、27bは、指34a、34bがペグ54を把持したときに触覚センサ27a、27bに接触したペグ54から受ける押圧力を検出する。
【0059】
出力部24は、状態検出部22により検出された一連の状態をロボット10の軌道情報として出力する。例えば、ユーザがロボット教示装置20を用いてロボット10に教示すべき動作を行っている間に時系列でIMU26により検出されたハンド機構21の位置及び姿勢を含む軌道情報を出力する。具体的には、出力部24は、例えば無線通信機能を備えた構成とし、軌道情報を軌道生成装置40に送信する。また、出力部24は、軌道情報を図示しないメモリに出力して記憶させるようにしてもよい。
【0060】
出力部24が出力する軌道情報には、変位センサ25aで検出された指34a、34bの位置を含めてもよく、さらに、触覚センサ27a、27bで検出された押圧力を含めてもよい。
【0061】
入力部28は、ユーザがタスクの成功又は失敗を入力するためのものである。例えば入力部28として、ペグ54を穴55に挿入するタスクが成功したことを入力するための成功ボタン及びペグ54を穴55に挿入するタスクが失敗したことを入力するための失敗ボタンをハンド機構21の矩形枠37に設ける。そして、ユーザがロボット教示装置20を用いて、ペグ54を穴55に挿入するタスクが成功した場合の動作を行った場合には成功ボタンを押下する。これにより、出力部24は、生成された軌道情報を成功軌道情報として軌道生成装置40に出力する。例えば、出力部24は、成功を示す情報と軌道情報とを出力する。また、ペグ54を穴55に挿入するタスクが失敗した場合の動作を行った場合には失敗ボタンを押下する。この場合、出力部24は、生成された軌道情報を失敗軌道情報として軌道生成装置40に出力する。例えば、出力部24は、失敗を示す情報と軌道情報とを出力する。
【0062】
(状態観測センサ)
【0063】
状態観測センサ14は、ロボット10の状態を観測し、観測したデータを状態観測データとして出力する。状態観測センサ14としては、例えば、ロボット10の関節のエンコーダ、視覚センサ(カメラ)、モーションキャプチャ等が用いられる。ロボット10の状態として、各関節の角度からアーム11の先端11aの位置及び姿勢が特定でき、視覚センサから部品(作業対象物)の姿勢が推定できる。モーションキャプチャ用のマーカーがグリッパ12に取り付けられている場合には、ロボット10の状態としてグリッパ12の位置及び姿勢が特定でき、グリッパ12の位置・姿勢から部品(作業対象物)の姿勢が推定できる。
【0064】
また、視覚センサによっても、グリッパ12自体やグリッパ12が把持している部品の位置及び姿勢をロボット10の状態として検出できる。グリッパ12とアーム11との間が柔軟部である場合、アーム11に対するグリッパ12の変位を検出する変位センサによってもアーム11に対するグリッパ12の位置及び姿勢をロボット10の状態として特定することができる。
【0065】
このように、各種のセンサによって、柔軟部13、柔軟部13よりも対象物を把持する側のロボット10の部位、および把持されている部品の少なくとも何れかについての状態を検出することができ、各種センサの検出結果を状態観測データとして取得することができる。
【0066】
状態観測データの例としては、ロボット10の関節のエンコーダから取得される各関節の角度および角速度、ロボット10のアームに取り付けられた視覚センサによって得られる画像、柔軟部13に設けた変位センサによって測定される柔軟部13を挟む部位の間の相対的な変位、モーションキャプチャによって測定されるグリッパ12の位置及び姿勢が挙げられる。
【0067】
関節エンコーダからのデータから、アーム11の先端11aの位置、姿勢(角度)、速度、姿勢の変化についての角速度が求められる。なお、各時刻の位置及び姿勢(角度)が取得できればその時間変化(速度、角速度)は取得できるので、以下では時間変化が取得可能であることの言及は省略することもある。視覚センサからのデータによって、アーム11に対するグリッパ12および把持対象物の位置及び姿勢が求められる。
【0068】
また、グリッパ12にモーションキャプチャ用のマーカーが取り付けられている場合には、モーションキャプチャデータのみによってグリッパ12の位置及び姿勢を取得できる。アームに対する把持対象物の位置及び姿勢は視覚センサを用いて求めてもよい。また、把持対象物にもマーカーが取り付けられていれば、把持対象物の位置及び姿勢も取得できる。
【0069】
(軌道生成装置)
【0070】
図10は、本実施形態に係る軌道生成装置のハードウェア構成を示すブロック図である。
図10に示すように、軌道生成装置40は、一般的なコンピュータ(情報処理装置)と同様の構成であり、CPU(Central Processing Unit)40A、ROM(Read Only Memory)40B、RAM(Random Access Memory)40C、ストレージ40D、キーボード40E、マウス40F、モニタ40G、及び通信インタフェース40Hを有する。各構成は、バス40Iを介して相互に通信可能に接続されている。
【0071】
本実施形態では、ROM40B又はストレージ40Dには、軌道生成処理を実行するための軌道生成プログラムが格納されている。CPU40Aは、中央演算処理ユニットであり、各種プログラムを実行したり、各構成を制御したりする。すなわち、CPU40Aは、ROM40B又はストレージ40Dからプログラムを読み出し、RAM40Cを作業領域としてプログラムを実行する。CPU40Aは、ROM40B又はストレージ40Dに記録されているプログラムに従って、上記各構成の制御及び各種の演算処理を行う。ROM40Bは、各種プログラム及び各種データを格納する。RAM40Cは、作業領域として一時的にプログラム又はデータを記憶する。ストレージ40Dは、HDD(Hard Disk Drive)、SSD(Solid State Drive)、又はフラッシュメモリにより構成され、オペレーティングシステムを含む各種プログラム、及び各種データを格納する。キーボード40E及びマウス40Fは入力装置の一例であり、各種の入力を行うために使用される。モニタ40Gは、例えば、液晶ディスプレイであり、ユーザインタフェースを表示する。モニタ40Gは、タッチパネル方式を採用して、入力部として機能してもよい。通信インタフェース40Hは、他の機器と通信するためのインタフェースであり、例えば、イーサネット(登録商標)、FDDI又はWi-Fi(登録商標)等の規格が用いられる。
【0072】
次に、軌道生成装置40の機能構成について説明する。
【0073】
図11に示すように、軌道生成装置40は、その機能構成として、取得部42、クラスタリング部44、及び生成部46を有する。各機能構成は、CPU40AがROM40Bまたはストレージ40Dに記憶された軌道生成プログラムを読み出して、RAM40Cに展開して実行することにより実現される。なお、一部または全部の機能は専用のハードウェア装置によって実現されても構わない。
【0074】
取得部42は、教示者によって教示される制御対象の一連の状態を表す軌道情報であって、制御対象が行うタスクが成功する場合の軌道情報である成功軌道情報と、タスクが失敗する場合の軌道情報である失敗軌道情報と、を取得する。本実施形態では、制御対象はロボット10、特にそのグリッパ12であり、制御対象の状態は、少なくともグリッパ12の位置を含む。グリッパ12の位置は、一般に3自由度の値で表されるが、グリッパ12が把持している対象物が平面に接触している場合のように運動の1自由度が拘束されている場合には、拘束されている1自由度を固定値として、残りの2自由度の値を実質的な軌道情報としてもよい。グリッパ12の位置は、TCP(ツール・センタ・ポイント)の位置で代表させてもよい。また、グリッパ12の姿勢が変化する場合には、制御対象の状態は、グリッパ12の姿勢(例えば3自由度の値で表される)を含むことが好ましい。さらに、グリッパ12の指34a、34bの位置を含んでもよい。このように、軌道情報は、制御対象の3次元空間内の位置情報又は位置情報及び姿勢情報に限らず、制御対象の状態に関するより多くの次元の情報を含んでもよい。
【0075】
教示者は、ロボット教示装置20を用いてロボット10が行うタスクの開始から終了まで、又はその一部についての軌道情報を生成させる。ロボット10が行うタスクは、本実施形態では一例としてグリッパ12によってペグを把持して穴に嵌め込む嵌め込み作業であるが、これに限られるものではない。
【0076】
教示者は、ロボット教示装置20を用いてロボット10が行うタスクが成功する動作及び失敗する動作を実行することにより、成功軌道及び失敗軌道の軌道情報を生成させる。
【0077】
具体的には、教示者は、ロボット教示装置20を用いて、ペグ54を穴55に挿入するタスクが成功する動作を少なくとも1回行って成功軌道情報を生成させる。また、教示者は、ロボット教示装置20を用いて、ペグ54を穴55に挿入するタスクが失敗する動作を少なくとも1回行って失敗軌道情報を生成させる。タスクが失敗する動作については、複数回行って複数の失敗軌道情報を生成することが好ましい。この場合、例えば穴55に向かう方向と異なる方向にペグ54を移動させる軌道や、穴55の上をペグ54が通り過ぎてしまう軌道等、様々な軌道でロボット教示装置20を動かして複数の失敗軌道情報を生成することが好ましい。特に、穴55の近傍で挿入を失敗する軌道の失敗軌道情報を生成することが好ましい。
【0078】
取得部42は、教示すべき軌道を案内するための表示をさせてもよい。例えば、教示者がどのような成功軌道及び失敗軌道を教示させるべきかをモニタ40G又は軌道生成装置40の外部にある表示装置に表示させ、教示者による教示を支援するようにしてもよい。
【0079】
図12は、教示すべき軌道のガイド表示を示す図である。
図12では、モニタ40Gの画面40G1に穴55を有する円形で一定の厚みを有する部品Pが表示されている。部品Pの画像は、部品Pを撮影した画像又は部品PのCADデータに基づいて作成される。あるいは、「ペグを穴に挿入するタスク」というタスクの種類が指定されることに基づいて、部品Pの外形を表示することなく穴を示す図形だけを表示してもよい。このようにすれば部品Pの形状についての情報を取得する必要がない。
図12(A)では、さらに成功軌道のガイド表示である1つの矢線と矢線に沿えてSの文字が表示されている。この成功軌道のガイド表示によって示される成功軌道を成功軌道Sとよぶ。
図12(B)では、さらに失敗軌道のガイド表示である4つの矢線と各矢線に沿えてF1、F2、F3又はF4の文字が表示されている。これらの失敗軌道のガイド表示によって示される各失敗軌道を失敗軌道F1、F2、F3、F4とよぶ。軌道を示す矢線は曲線であってもよい。また、ペグ54が部品Pに接触する前の軌道も含めて、教示すべき軌道を立体的に把握できるように表示してもよい。
【0080】
図12(A)の成功軌道のガイド表示は、ロボット教示装置20で把持したペグ54を矢線の始点付近で部品Pに接触させ、接触を維持したままペグ54を矢線の終点に向かって移動させ、穴55への挿入を実行することを案内している。もっとも、このような図による表示をしなくても教示者にとってタスクを成功させることが容易であると考えられる場合には、「ペグを穴に挿入してください。」又は「ペグを穴の手前で部品に接触させた後、ペグを穴に挿入してください。」のようにタスクを実行することを文字で要求するだけのガイド表示をしてもよい。
【0081】
図12(B)の失敗軌道のガイド表示は、ロボット教示装置20で把持したペグ54を各矢線の始点付近で部品Pに接触させ、接触を維持したままペグ54を各矢線の終点に向かって移動させ、穴55への挿入を実行することを案内している。例えば、失敗軌道F1については、矢線の始点である穴55の手前でペグ54を部品Pに接触させ、その後接触を維持したまま穴55を超えた反対側までペグ54の先端を移動させることを案内している。同様に、失敗軌道F2については穴55とは反対側に、失敗軌道F3については穴55の左側に逸れて、失敗軌道F4については穴55の右側に逸れて、それぞれペグ54を移動させることを案内している。
【0082】
このように、成功軌道又は失敗軌道のガイド表示に従ってロボット教示装置20の操作を行わせる場合には、軌道生成装置40においてロボット教示装置20から取得する軌道が成功軌道か失敗軌道かがあらかじめ判明しているため、ロボット教示装置20の成功ボタン、失敗ボタンを使用する必要はない。
【0083】
図11のクラスタリング部44は、成功軌道情報に属するロボット10の状態と失敗軌道情報に属するロボット10の状態とからロボット10の状態についての成功クラスのクラスタを生成する。
【0084】
クラスタリング部44は、例えば混合ガウスモデル(GMM:Gaussian Mixture Model)を用いたクラスタリング手法を適用するとともに、成功軌道情報及び失敗軌道情報に属するロボット10の状態同士の類似度を算出し、算出した類似度に基づいて、成功クラスのクラスタを生成してもよい。
【0085】
また、クラスタリング部44は、成功軌道情報及び失敗軌道情報に属するロボット10の各状態に含まれる位置又は位置及び姿勢から各状態におけるロボット10の速度を算出し、各状態における位置又は位置及び姿勢と各状態における速度とから類似度を算出してもよい。
【0086】
クラスタリング部44は、ロボット10の状態同士の類似度を調整する調整パラメータにより類似度を調整してもよい。
【0087】
クラスタリング部44は、成功軌道情報に属するロボット10の状態同士の間の類似度が大きくなり、成功軌道情報に属するロボット10の状態と失敗軌道情報に属するロボット10の状態との間の類似度が小さくなるように調整パラメータを設定してもよい。
【0088】
生成部46は、成功クラスのクラスタに基づいて、タスクをロボット10に実行させる際に制御目標として使用できる、ロボット10の一連の状態を表す目標軌道情報を生成する。
【0089】
また、生成部46は、成功クラスのクラスタに対して混合ガウス回帰手法(GMR:Gaussian Mixture Regression)を適用して目標軌道情報を生成してもよい。
【0090】
(軌道生成処理)
【0091】
図13は、軌道生成装置40が目標軌道情報を生成する軌道生成処理のフローチャートである。
【0092】
なお、
図13に示す処理に先立ち、ユーザは、ロボット教示装置20を用いて成功軌道情報を少なくとも1つ生成させると共に、失敗軌道情報を少なくとも1つ生成させる。ロボット教示装置20は、生成した成功軌道情報及び失敗軌道情報を軌道生成装置40に送信する。
【0093】
一般的な模倣学習では、教示された成功軌道を表す成功軌道情報のみを用いてロボットの動作を学習する。しかしながら、柔軟なロボットを使用したときや、教示のための装置とロボットのキネマティクス又はダイナミクスが異なるとき、教示された成功軌道を必ずしもロボットが正確に追従できるとは限らない。また、成功軌道のみに過適合された軌道を追従することは、タスクの失敗を招く虞もある。
【0094】
このため、本実施形態では、ロボット10が行うタスクにおける動作を学習する際に用いる目標軌道情報を、成功軌道情報だけでなく失敗軌道情報も用いて生成する。これにより、失敗軌道を避けるような目標軌道の目標軌道情報が生成される。
【0095】
ステップS100では、CPU40Aが、取得部42として、成功軌道情報及び失敗軌道情報をロボット教示装置20から取得する。
【0096】
ステップS102では、CPU40Aが、クラスタリング部44として、成功軌道情報に属するロボット10の状態と失敗軌道情報に属するロボット10の状態とからロボット10の状態についての成功クラスのクラスタを生成する。
【0097】
本実施形態では、混合ガウスモデル(Gaussian Mixture Model、以下GMM)を用いたクラスタリング手法を適用して成功クラスのクラスタを生成する。GMMは、データセットを複数のガウス分布の重ね合わせで表現する。しかしながら、一般的なGMMの手法では表現能力が低く、成功軌道及び失敗軌道の切り分けが困難であるという問題点がある。
【0098】
また、成功軌道情報及び失敗軌道情報の各軌道情報から成功クラスのクラスタを生成するために、各軌道情報に最も当てはまるようなガウス分布(クラスタ)の数、各ガウス分布の平均や分散、並びに各ガウス分布を重ね合わせる場合の重みを計算する必要がある。
【0099】
そこで、本実施形態では、より明確に成功軌道及び失敗軌道を分類すると共に、クラスタの数等を自動的に求めるために、下記参考文献1に記載されたPC-GMM(Physically-Consisted GMM)を使用する。
【0100】
(参考文献1)
FIGUEROA, Nadia; BILLARD, Aude. "A Physically-Consistent Bayesian Non-Parametric Mixture Model for Dynamical System Learning." In: CoRL. 2018. p. 927-946.
【0101】
ステップS102では、ステップS100で取得した成功軌道情報及び失敗軌道情報の各々についてPC-GMMを適用し、成功クラスのクラスタを生成する。
【0102】
本実施形態では、最適なガウス分布の数を生成するために、PC-GMMを用いて、成功軌道情報及び失敗軌道情報に属するロボット10の状態同士の類似度を算出し、算出した類似度に基づいて、成功クラスのクラスタを生成する。
【0103】
また、本実施形態では、ロボット10の状態i,j同士の類似度を調整する調整パラメータηにより類似度を調整する。具体的には、次式により類似度Δを算出する。
【0104】
【0105】
ここで、xはロボット10の位置である。また、
はロボット10の速度である。また、lは尺度パラメータである。
【0106】
すなわち、ステップS102では、成功軌道情報及び失敗軌道情報に属するロボット10の各状態に含まれる位置及び姿勢から各状態におけるロボット10の速度を算出し、各状態における位置及び姿勢と各状態における速度とから類似度Δを算出する。
【0107】
この類似度Δに基づいて、成功軌道情報及び失敗軌道情報に含まれるロボット10の各状態をどのクラスタに割り当てるかが決められる。
【0108】
ロボット10の位置及び速度に基づく類似度を用いることにより、従来の一般的なGMMを用いた手法と比較して、ロボット10の状態を正確に表現することができる。
【0109】
さらに、本実施形態では、成功軌道と失敗軌道とをより明確に分けるため、上記(2)式に示すように、ロボット10の状態i,j同士の類似度を調整する調整パラメータηを用いて類似度Δを調整する。
【0110】
本実施形態では、成功軌道情報に属するロボット10の状態同士の間の類似度が大きくなり、成功軌道情報に属するロボット10の状態と失敗軌道情報に属するロボット10の状態との間の類似度が小さくなるように調整パラメータηを設定する。
【0111】
具体的には、2組の状態が成功軌道同士の場合は一例としてη=1.0に設定し、2組の状態が成功軌道及び失敗軌道の場合は一例としてη=0.01とする。これにより、成功軌道情報に属する状態と失敗軌道情報に属する状態とが別のクラスタにクラスタリングされやすくなる。従って、成功クラスを表すクラスタと失敗クラスを表すクラスタとが明確に分離されやすくなる。
【0112】
図14~16のグラフの縦軸はロボット教示装置20の位置、横軸は時間である。ここで、ロボット教示装置20の位置は、
図12の各軌道の開始位置から穴55の中心に向かう方向の成分を表しており、
図12において上に向かう方向が
図14~16において下に向かう方向に対応している。
図14~16には、時間の経過に伴うロボット教示装置20の位置の測定値がプロットされている。図中のsuccessfulの点は成功軌道を教示したときの測定値(成功軌道情報)、failedの点は失敗軌道を教示したときの測定値(失敗軌道情報)である。
図14~16には、さらに、成功クラスのクラスタCSと失敗クラスのクラスタCFがそれぞれ楕円で示されている。成功クラスのクラスタCS及び失敗クラスのクラスタCFは、成功軌道情報及び失敗軌道情報についてPC-GMMを適用して生成した。実際のクラスタはガウス分布に従う値の分布で表現されており、図示されている楕円はクラスタの値の等高線を示している。
図15は、
図14から成功軌道情報及び成功クラスのクラスタCSを抽出して示している。
【0113】
図14において、最初の時間帯では成功軌道がグラフの下方(
図12の上方)に向かっている。この部分は、
図3のフィットに対応するロボット教示装置20の動きを表している。
図14における成功軌道の最下点はフィットの終了状態に対応しており、このとき、ペグ54の先端が穴55に引っかかってペグ54の姿勢はわずかに傾いており、ロボット教示装置20は穴55の真上をわずかに通り過ぎている。その後の、成功軌道がグラフの上方(
図12の下方)に向かって変化している部分は、
図3のアラインに対応している。この部分では、ロボット教示装置20の移動方向が反転して、ペグ54の姿勢が垂直に引き起こされる。
図14の後半の成功軌道の位置の変化が少ない部分は、
図3のインサートに対応している。この部分では、成功軌道は穴の軸方向に向かっているので、
図14の縦方向が表している位置成分はほとんど変化しない。
【0114】
図14において、成功軌道よりも上方の失敗軌道及び失敗クラスのクラスタCFは、
図12の失敗軌道F2のように、ロボット教示装置20を穴55に向かう方向とは反対方向に動かした場合の結果である。また、成功軌道よりも下方の失敗軌道及び失敗クラスのクラスタCFは、
図12の失敗軌道F3及びF4のように、ロボット教示装置20を穴55に向かう方向から左又は右にそれた方向に動かした場合の結果である。
【0115】
図16の左側の図は、成功軌道情報及び失敗軌道情報の両方から生成された成功クラスのクラスタCSと、成功軌道情報及び失敗軌道情報の両方から生成された失敗クラスのクラスタCFとを示している。また、
図16の中央の図は、成功軌道情報のみから生成された成功クラスのクラスタCSを示している。また、
図16の右側の図は、
図16の左側の図に示される成功クラスのクラスタCSにGMRを適用して生成した目標軌道K1(success and failure)と、
図16の中央の図に示される成功クラスのクラスタCSにGMRを適用して生成した目標軌道K2(success only)と、を示している。
図16に示されるように、目標軌道K2と比較して、目標軌道K1の方が急激な変化が少ない軌道になっていることがわかる。このことは、目標軌道K1の方が最大加速度が小さくて済むことを意味する。目標軌道K1の方が、成功軌道情報のみに過適合していないと評価できる。
【0116】
図13のステップS104では、CPU40Aが、生成部46として、成功クラスのクラスタCSに基づいて、タスクをロボット10に実行させる際に制御目標として使用できる、ロボット10の一連の状態を表す目標軌道情報を生成する。具体的には、成功クラスのクラスタCSに対してGMRを適用して目標軌道情報を生成する。GMRにより得られるのはガウス分布で表された位置の時間変化であるが、制御目標としては位置の分布の最大値又は平均値の時間変化を用いることができる。ここでは1次元の位置情報についてだけ説明したが、実際には多次元の成功軌道情報及び失敗軌道情報に基づいて多次元の目標軌道情報が生成される。
【0117】
ステップS106では、ステップS104で生成した目標軌道情報を修正する。ステップS104で生成した目標軌道情報は、ロボット教示装置20の軌道(例えば位置及び姿勢)を表しているため、ロボット10の軌道に修正(変換)する必要がある。そこで、ステップS106では、例えばペグ54が穴55に挿入された状態におけるロボット10の位置及び姿勢と、ロボット教示装置20の位置及び姿勢との差分をオフセットとして、ステップS104で生成された目標軌道情報を修正する。
【0118】
なお、本実施形態では、タスクの実行中においてグリッパ12に対するペグ54の位置にばらつきがない場合を前提としているが、実際にはペグ54を把持する毎にグリッパ12に対するペグ54の位置が異なりうる。この場合、外部カメラで撮影した画像に基づいてグリッパ12に対するペグ54の位置を算出し、算出した位置に基づいて目標軌道情報を修正してもよい。
【0119】
(学習装置)
【0120】
学習装置50は、機械学習を用いてロボット10の学習モデルを獲得する。本実施形態では教師データなしで試行錯誤により学習が行える強化学習として、特にデータ効率の高いモデルベース機械学習を用いる。
【0121】
学習装置50によって獲得された学習モデル(学習済みモデル)は、ロボット10を制御する制御装置に搭載されて、実作業に供される。この制御装置は、学習機能を有していてもよく、その場合には追加の学習を行ってもよい。
【0122】
本実施形態では、ロボット10が柔軟部13を有しているため、複雑な力制御を行うことなく、グリッパ12または対象物を環境に接触させながら動作することが容易である。また、あまり減速せずにグリッパまたは対象物を環境に接触させることが可能であるので、高速な作業ができる。また、機械学習によって学習モデルを獲得するため、簡便にシステム構築が行える。
【0123】
図17に示すように、学習装置50は、記憶部61、モデル更新部62、学習モデル63、報酬算出部64、及び行動決定部65を備える。
【0124】
記憶部61は、状態観測センサ14により計測されたロボット10の状態に関する状態観測データ及び行動決定部65から出力された速度指令値を記憶する。
【0125】
モデル更新部62は、記憶部61に記憶されている状態観測データ及び速度指令値の中から、ある時刻tの状態xtの状態観測データと、速度指令値utと、次の時刻t+1における状態xt+1の状態観測データと、を1組の計測データとして、ランダムに選んだ複数の時刻tにおける複数組(例えば300組)の計測データを取得する。
【0126】
そして、取得した複数組の計測データから、ある時刻tにおいて計測された状態xt及び速度指令値utから学習モデル63が求めた時刻t+1における状態xの予測値f(xt、ut)と時刻t+1において計測された状態xtとの誤差が最小となることを目標として、制御周期毎に学習モデル63のモデルパラメータを更新する。このように、所謂勾配法(gradient method)を用いてモデルパラメータの更新を行い、更新したモデルパラメータを学習モデル63に出力する。モデルパラメータの更新は、1つの制御周期内で制御周期の開始時に他の処理に先立って1回又は複数回行う。なお、モデルパラメータの更新は、上記の計測データの組が十分多く収集できている場合には、制御周期毎ではなくタスク開始前に行ってもよい。例えばペグを穴に挿入するタスクのような同じタスクを繰り返し実行する場合には、一つのタスクの実行を終了してから次のタスクの実行を開始するまでの間にモデルパラメータの更新を行ってもよい。別の例として、特定のタスクが実行できるようになるまでの試行動作中にモデルパラメータの更新を完了させ、タスクの本番実行を開始した後はモデルパラメータの更新を行わないようにしてもよい。
【0127】
学習モデル63としては、例えば状態遷移モデルが用いられる。状態遷移モデルは、状態xtと、そのときのロボット10の行動である速度指令値utと、を入力として、行動後の次の状態xt+1を出力するモデルである。
【0128】
学習モデル63には、行動決定部65からn個の速度指令値の候補が入力され、n個の状態の予測値を生成し、報酬算出部64へ出力する。
【0129】
報酬算出部64は、学習モデル63から出力されたn個の状態の予測値f(xt、ut )のそれぞれについて、次式により報酬値rt+1を算出し、行動決定部65へ出力する。
【0130】
rt+1=-(xdt+1-f(xt、ut))2 ・・・(1)
【0131】
ここで、xdはロボット10の状態の目標値、すなわちロボット10の位置及び姿勢を表す6次元の値の目標値である。目標値は、軌道生成装置40により生成された目標軌道情報から得られる。また、fは学習モデルを表す関数であり、f(xt、ut)はロボット10の位置及び姿勢を表す6次元の値の予測値である。
【0132】
なお、学習モデル63は、次の時刻t+1、すなわち次の時間ステップ(制御周期)における予測値を出力するが、複数ステップ先までの予測値を出力してもよい。そして、報酬算出部64は、各予測値と各予測値に対応する目標値とから各時間ステップの報酬値rを求め、その総和である報酬値Rを出力するようにしてもよい。
【0133】
行動決定部65は、n個の速度指令値の候補とそのそれぞれに対応する報酬値r又は報酬値Rとの関係に基づいて、報酬値を最大化できる速度指令値を求め、その速度指令値をロボット10に出力する。本実施形態では一例として所謂クロスエントロピー法(cross-entropy method:CEM)を用いて、報酬値を最大化できる速度指令値を特定し、ロボット10に出力する。
【0134】
なお、記憶部61にデータが十分蓄積されていない学習初期の状態では、学習モデル63を使用せず、また行動決定部65における行動の決定に報酬値を使用しなくてもよい。この場合、行動決定部65からランダムな速度指令値をロボット10に出力し、その結果として計測された状態観測データを収集することを制御周期毎に繰り返し、状態観測データがある程度収集できた時点からモデルパラメータの更新を開始するようにしてもよい。
【0135】
(学習処理)
【0136】
図18は、機械学習を用いて学習装置50が学習モデル63を学習する学習処理の流れを示すフローチャートである。
【0137】
以下で説明するステップS200~ステップS214の処理は、制御周期に従って一定の時間間隔で実行される。
【0138】
ステップS200では、モデル更新部62が、学習モデルを更新する。具体的には、まず記憶部61に記憶されている中からランダムに選んだ例えば100個の時刻tについての状態(位置及び姿勢)xt、速度指令値ut、状態xt+1の組を取得する。なお、状態xt+1は、選択した時刻tの次の時刻であるt+1について記憶されている、計測された状態である。
【0139】
次に、前回のモデルパラメータを修正した新たなモデルパラメータを決定する。モデルパラメータの修正は、状態xt+1と予測値f(xt、ut)との誤差が最小となることを目標として行う。
【0140】
そして、新たなモデルパラメータを学習モデル63に設定する。新たなモデルパラメータは、次の制御周期において「前回のモデルパラメータ」として使用するためにモデル更新部62内に記憶する。
【0141】
ステップS202では、行動決定部65が、n個(例えば300個)の速度指令値候補をランダムに生成し、学習モデル63に出力する。
【0142】
ステップS204では、学習モデル63が、ステップS202で生成されたn個の速度指令値候補に対応するn個の状態の予測値を生成して報酬算出部64に出力する。
【0143】
ステップS206では、報酬算出部64が、ステップS204で生成したn個の状態の予測値の各々についての報酬値を算出する。
【0144】
ステップS208では、本ルーチンを所定回数(例えば2回)ループしたか否かを判定し、所定回数ループしていない場合はステップS210へ移行し、所定回数ループした場合はステップS212へ移行する。
【0145】
ステップS210では、行動決定部65が、n組の速度指令値候補及び報酬値から報酬値が上位である速度指令値候補をm個抽出する。なお、mはnの30%程度の値(例えば100)に設定される。そして、抽出したm個の速度指令値候補の平均及び分散を算出し、正規分布を生成する。次に、生成した正規分布と確率密度が一致する新しいn個の速度指令値候補を生成する。その後、ステップS204に戻り、そこではステップS210で生成されたn個の速度指令値候補が用いられる。
【0146】
ステップS212では、状態観測センサ14から、前回の速度指令の結果である現在の計測された状態xを取得し、記憶部61に記憶する。
【0147】
ステップS214では、行動決定部65が、報酬値を最大化できる速度指令値uをロボット10に出力すると共に、記憶部61に記憶する。
【0148】
このように、本実施形態では、ロボット10が行うタスクにおける動作を学習する際に用いる目標軌道情報を、成功軌道情報だけでなく失敗軌道情報も用いて生成する。これにより、失敗軌道を避けるような、また成功軌道情報のみに過適合していない目標軌道についての目標軌道情報が生成される。そして、このようにして生成された目標軌道情報を用いてロボット10を制御するため、より高い成功率でタスクを達成することができる。
【0149】
上記実施形態は、本発明の構成例を例示的に説明するものに過ぎない。本発明は上記の具体的な形態には限定されることはなく、その技術的思想の範囲内で種々の変形が可能である。
【0150】
上各実施形態でCPUがソフトウェア(プログラム)を読み込んで実行した軌道生成処理を、CPU以外の各種のプロセッサが実行してもよい。この場合のプロセッサとしては、FPGA(Field-Programmable Gate Array)等の製造後に回路構成を変更可能なPLD(Programmable Logic Device)、及びASIC(Application Specific Integrated Circuit)等の特定の処理を実行させるために専用に設計された回路構成を有するプロセッサである専用電気回路等が例示される。また、軌道生成処理を、これらの各種のプロセッサのうちの1つで実行してもよいし、同種又は異種の2つ以上のプロセッサの組み合わせ(例えば、複数のFPGA、及びCPUとFPGAとの組み合わせ等)で実行してもよい。また、これらの各種のプロセッサのハードウェア的な構造は、より具体的には、半導体素子等の回路素子を組み合わせた電気回路である。
【0151】
また、上記各実施形態では、軌道生成プログラムがストレージ40D又はROM40Bに予め記憶(インストール)されている態様を説明したが、これに限定されない。プログラムは、CD-ROM(Compact Disk Read Only Memory)、DVD-ROM(Digital Versatile Disk Read Only Memory)、及びUSB(Universal Serial Bus)メモリ等の記録媒体に記録された形態で提供されてもよい。また、プログラムは、ネットワークを介して外部装置からダウンロードされる形態としてもよい。
【符号の説明】
【0152】
1 ロボットシステム
10 ロボット
11 アーム
12 グリッパ
13 柔軟部
14 状態観測センサ
20 ロボット教示装置
40 軌道生成装置
42 取得部
44 クラスタリング部
46 生成部
50 学習装置