以下、本発明の実施形態について説明するが、最初に本発明の概要を説明する。本発明の一実施形態に係るロボットシステムは、予めロボットの動作に関する情報をデータベースに登録しておき、オペレータの動作をロボットに教示する際に、データベースからオペレータの動作と最も近いロボット動作を選択する事で、一度の教示のみで、オペレータと同様の動作をロボットに実行させる。
ここで、教示したオペレータ動作に最も近いデータベース上のロボット動作の情報を選択する際には、オペレータ動作とロボット動作がどの程度似ているか、という類似性を求める必要がある。しかし、オペレータ動作とロボット動作は、形状や機構の違う異質のものであるため、直接両者の類似性を計算する事はできない。これに対し、従来の機械学習方法を用い、上記対応関係の事例のサンプルを事前に与える事により、類似度の計算方法を推定することができ、新たなオペレータ動作が教示情報として入力されたときにも、データベースから最も近いデータを選択することが可能となる。
ただし、機械学習で、上記対応関係を推定するためには十分な数のサンプルを収集する必要があるが、多種多様な動作を教示可能とするためには、ロボット動作の種類・対象物・大きさ・位置など様々な条件を全てデータベースに登録しておき、それらを網羅できる程の大量の対応関係の事例サンプルを作っておく必要がある。一般には、人動作サンプルを集めるのは大きなコストがかかり、また、あらゆる環境の状態を事前に用意しておくのは難しい。すなわち、オペレータ動作とロボット動作の対応関係を機械学習で推定し対象物の形状と操作方法を認識したうえで、対象物の操作方法が既知であれば多少の環境変化が起きても動作を修正する等の動作修正手法を用いるのみでは、あらゆる形状・位置・大きさの対象物に関するサンプルを収集する必要がありコストが大きいという課題がある。
本発明の一実施形態に係るロボットシステムは、オペレータ動作とロボット動作の対応付けは、ロボット動作・作業対象物に関する代表的な事例(本明細書においては、これを「シーン」と呼ぶ)についてのみ行うこととし、シーンに対して対象物の位置や大きさなどの詳しい情報を追加した、より具体的な事例(本明細書においてはこれを「派生シーン」と呼ぶ)はシミュレーションで作成しておき、環境の状態に応じて選択することとする。
例えば、把持を対象とした場合には、シーンに関するデータベースには、対象物の掴み方(上から掴む、横から掴む、両手で掴む等)、対象物の形状の種類(角柱、球体、円柱等)に関する情報のみがあらかじめ登録される。ただし、対象物の形状の種類が少ない場合など、学習コストが大きくならない場合は、位置や大きさの情報がシーンに追加されていても良い。シーンに位置・大きさの情報も追加すると、当該シーンと後に示す派生シーンとの差異が少なくなるため、派生シーンにおけるロボット動作の計算が容易になる。
派生シーンに関するデータベースには、上記シーンに対し対象物の位置や大きさも含んだ情報、それに応じたロボットの動作手順が登録される。このようにすることで、前述のオペレータ動作とロボット動作の対応関係を算出するために必要な事例のサンプルは、掴み方と形状の種類に関する2条件のみとなり、サンプル収集コストは少なくて済む。また、条件数が減ることにより類似度の算出精度も高くなる。さらに派生シーンは、環境の状態に応じ、対象物の位置・大きさの差異に基づき選択される。ここで、実際にロボットの動作する環境内における対象物の位置や大きさなどの情報と、派生シーンに記録されている情報との類似度は、ともに空間内における形状の一致度を求めればよく、容易に計算が可能である。
本発明の一実施形態に係るロボットシステムは、オペレータによる教示動作と類似したロボット動作を選択するために、ロボット動作・作業対象物の代表的な事例(シーン)と、その具体的な事例(派生シーン)を別々にデータベースに登録しておき、選択処理を、オペレータ動作と最も近いシーンの選択、実環境と最も近い派生シーンの選択に分けることとした。これにより、オペレータの動作とロボットの動作という質の異なる動作の類似度の計算処理と、計算の容易な対象物の位置・大きさの比較という形状に関する一致度の比較の処理を分けることができ、人動作とロボット動作の対応関係の算出のために必要となる事例サンプル数を抑えつつ、あらゆる状況下でのロボット動作が可能となる。
以下、図面を用いて本発明の一実施例について説明する。
図1は、実施例1に係るロボットシステムの機能構成図である。まず、動作計測部100はオペレータの動作を計測するためのもので、対象物計測部101は操作対象となる物品を計測するためのものである。そして環境計測部102はロボットの動作時に、周囲の状況を計測するためのものである。
シーン記憶部103には、予めロボット動作・作業対象物の代表的な事例(シーン)を記憶しておく。本実施例における一例においては、対象物をどのように把持するかなどの操作方法の情報と操作対象物の形状事例を記録しておく。形状の事例はロボットの操作方法に関わる形状の種類で分類すれば良い。例えば、形状の種類に応じて3種類の握り方がある場合は、3種類のシーンを用意しておけばよい。
シーン選択部104は、シーン記憶部103に格納されているシーンの中から、動作計測部100の計測したオペレータ動作と対象物計測部101の計測した対象物の種類との組み合わせ(これを「教示情報」と呼ぶ)と最も類似するシーンを選択する。シーンに記録されている情報はロボットの操作方法(ロボット動作)についての情報であるため、シーン選択部104は、オペレータ動作とロボット動作という、異なる種類の情報の類似性を求める必要がある。そのため本実施例に係るロボットシステムでは、オペレータ動作とロボット動作の対応関係を学習部115によってあらかじめ学習させておき、シーン選択部104はそれに基づいてシーンの選択を行う。詳細は後述する。
派生シーン作成部105は、シーン記憶部103に記憶されたシーンの派生シーンを作成するための機能ブロックである。通常、1つのシーンに対して複数の派生シーンが作成される。「派生シーン」とは、元のシーンに記録されている対象物の位置や大きさを変化させたものである。また派生シーンには、位置や大きさを変化させた対象物を適切に操作できるためのロボット動作方法が対応付けられている。作成された派生シーンは、派生シーン記憶部106に記憶される。
派生シーン選択部108は、対象物計測部101で計測した対象物の形状と、派生シーン記憶部106に記憶されている対象物の形状を比較することで、ロボットが実際に動作する環境(以下ではこれを「実環境」と呼ぶ)に最も近い派生シーンを選択する。
本実施例に係るロボットシステムは、派生シーン選択部108によって選択された派生シーンに基づいて、ロボット動作実行部112がロボットの手や指を駆動させることで、オペレータの教示した動作通りに、ロボットを動作させる。なお、オペレータが教示動作を行った環境と、ロボットの置かれている環境は必ずしも一致しないこともある。その場合派生シーンに記録されているロボット動作の修正を行う必要があるため、ロボットシステムは以下に説明するロボット動作選択部109、動作修正部110、衝突回避部111を有していてもよい。
ロボット動作選択部109は、派生シーン選択部108によって選択された派生シーンに2種類以上のロボット動作が対応付けられて記録されていた場合に、環境全体の状況からどちらの動作が適切かを選択する。選択基準として、より安定動作する関節角や、より短い軌跡を選択するなどが挙げられる。
動作修正部110は、実環境下の対象物の位置・大きさと、派生シーンに記憶されている対象物の位置が異なっていた場合に、実環境下の対象物の位置・大きさに合わせてロボット動作を修正する。修正方法としては、上述の線形補間などが用いられると良い。
衝突回避部111は、環境計測部102の計測した周囲の環境の状態から、ロボットが周囲の存在物に衝突しないように動作の軌跡を変更する。たとえば衝突回避部111はロボットの手を対象物に到達させるまでの経路および、手先以外の腕の形状を変更する。ロボット動作実行部112は、ロボット動作選択部109、動作修正部110、衝突回避部111によって修正されたロボット動作情報に基づいて、ロボットを制御する。たとえばロボット動作実行部112はロボットに対し、各関節の角度を変更する命令群を発行し、ロボットはこれを受けて動作する。
シーン追加部107・派生シーン追加部113は、シーン・派生シーンを作成し、作成されたシーン・派生シーンをシーン記憶部103・派生シーン記憶部106に追加するための機能ブロックである。たとえば、新たな種類の動作を記録したシーンを追加したい場合や、ロボット動作の結果として未学習の状況が発生した場合に用いられる。本実施例では、シーン(派生シーン)の作成(追加)は、ロボットシステムのユーザ(オペレータ)によって行われるため、シーン追加部107(派生シーン追加部113)は、オペレータがシーンを構成する情報を作成するために用いるユーザインタフェース(たとえばグラフィカルユーザインタフェース)をオペレータに提供する。
ロボットシステムのユーザはシーン追加部107を用いて、作成対象のロボット動作の情報及びその動作によって操作される対象物品の情報を作成し、シーン記憶部103に記憶する。対象の物品はCADツール等によって作成され、それに対するロボットの動作についての情報は、ロボットシミュレーターのツールを用いて設定される。また、ロボットの動作の設定後、ロボットシステムのユーザは作成したシーンに対し、このシーンに対応するオペレータ動作の情報(教示情報)を対応付け、対応付けたシーンと教示情報の組を対応記憶部114に記憶させ、対応記憶部114に記憶した全学習データについて、再度機械学習を行わせる。
派生シーン追加部113は、所定のシーンに対して、新たな対象物の位置・大きさとなる派生シーンを追加する。追加の際は、対象物の位置・大きさ情報を入力とし、派生シーン作成部105に渡すことで、派生シーン作成部105は、当該対象物に対するロボット動作を算出することで派生シーンを作成し、派生シーン記憶部106に追加する。
図2は本実施例のロボットシステムの物理的な構成を示す図である。本実施例のロボットシステムは、プロセッサ1400、メモリ1401、補助記憶装置1402、通信インタフェース1403、入力インタフェース1404、出力インタフェース1405を有する計算機1410と、センシングデバイス1406を有する。なお、図2では「インタフェース」を「I/F」と略記している。また本明細書においても、「インタフェース」を「I/F」と略記することがある。
プロセッサ1400は、メモリ1401に格納されたプログラムを実行する。メモリ1401は不揮発性の記憶装置であるROMおよび揮発性のRAMを含む。ROMは、不変のプログラム(例えばBIOS)などを格納する。RAMは、DRAM(Dynamic Random Access Memory)のような揮発性の記憶装置であり、プロセッサ1400が実行するプログラム及びプログラムの実行時に使用するデータを一時的に格納する。
補助記憶装置1402は、大容量かつ不揮発性の記憶装置であり、プロセッサ1400が実行するプログラム及びプログラムの実行時に使用されるデータ(例えば、シーンや派生シーンなど)を格納する。すなわち、プログラムは、補助記憶装置1402から読み出されて、メモリ1401にロードされて、プロセッサ1400によって実行される。補助記憶装置1402には例えば、ハードディスクドライブ(HDD)等の磁気記憶デバイス、あるいはSolid State Drive(SSD)等の不揮発性半導体メモリを用いた記憶デバイスが用いられる。
本実施例に係るロボットシステムでは、メモリ1401にロードされたプログラムがプロセッサ1400に実行されることによって、計算機1410及びセンシングデバイス1406を、図1で説明した動作計測部100、対象物計測部101、環境計測部102、シーン記憶部103、シーン選択部104、派生シーン作成部105、派生シーン記憶部106、シーン追加部107、派生シーン選択部108、ロボット動作選択部109、動作修正部110、衝突回避部111、ロボット動作実行部112、派生シーン追加部113、対応記憶部114、学習部115として機能させる。また、シーン記憶部103、派生シーン記憶部106、対応記憶部114がシーン等の情報を記憶する記憶領域には、補助記憶装置1402の有する記憶領域が用いられる。
通信インタフェース1403は、所定のプロトコルに従って、他の装置との通信を行うインタフェース装置である。インタフェース装置はEthernet、USB、RS−232Cなどの通信が可能なポートであり、例えばEthernetであればTCP通信、UDP通信などを使い、装置間で通信を行う。またロボットシステムは、通信インタフェース1403を介してインターネット等の広域ネットワーク1420に接続可能に構成されていてもよい。その場合ロボットシステムは、データセンタ1100などの大容量記憶手段を有する拠点からデータをダウンロードしたり、逆に自身の有するデータをデータセンタ1100にアップロードしてもよい。
入力インタフェース1404は、ロボットシステムのユーザ(オペレータ)が使用するキーボード16やマウス17などの入力デバイスを接続するためのインタフェースデバイスである。出力インタフェース1405は、ディスプレイ19等の表示用デバイスを接続するためのインタフェースデバイスである。ロボットシステムは入力インタフェース1404を通してシーン作成や追加学習等のオペレータからの入力を受け付け、出力インタフェース1405を通して処理結果などをディスプレイ19に表示する。
センシングデバイス1406は、オペレータによる教示動作を計測するための、また対象物や周囲環境等の計測を行うためのデバイスで、図1を用いて説明した動作計測部100、対象物計測部101、環境計測部102を構成するデバイスである。センシングデバイス1406は例えばカメラ、モーションセンサ、レーザ距離センサ等のデバイスである。ただし、物品の位置や大きさ、或いは動作を計測できるデバイスであれば、任意のデバイスがセンシングデバイス1406に用いられて良い。
なおロボットシステムにはセンシングデバイス1406が複数含まれていてよい。あるいはロボットシステムには複数種類のセンシングデバイス1406が含まれていてよく、たとえばセンシングデバイス1406としてカメラとモーションセンサを有していてよい。ロボットシステムは通信インタフェース1403を介して、センシングデバイス1406の情報を取得しつつ、ロボット1407に対して制御命令を送信する。
ロボットシステムの物理構成は、必ずしも図2に示された構成に限定されない。たとえば図2では、計算機1410が1台だけ示されているが、複数の計算機からロボットシステムが構成されていてもよい。あるいは、計算機1410内の構成要素がロボット1407に組み込まれていて、ロボット1407が以下に説明するロボットシステムの各機能を実行するように構成されていてもよい。さらに、センシングデバイス1406もロボット内に組み込まれていてもよい。
次に、本実施例に係るロボットシステムが上で述べた各機能ブロックを用いてロボットを動作させる際の手順を、図3を用いて概説する。
本実施例に係るロボットシステムにおいて、ロボットを動作させるための工程には大きく分けて、教示工程1200と動作工程1201の2つがある。教示工程1200は、動作計測部100と対象物計測部101が、オペレータ1202が実施する教示動作(どのような操作対象物をどのように操作しているか)を計測し、計測結果をもとにロボットに実行させる動作(ロボット動作)を決定する。図3では一例として、対象物1203をオペレータ1202が片手で把持する動作が計測される例を示している。ただし動作の種類は、動作計測部100が計測できる動作であれば、把持に限定されない。
オペレータ1202の教示動作が計測されると、シーン選択部104はシーン記憶部103に記憶されているシーンの中から、計測されたオペレータ1202の動作と対象物1203の組み合わせに最も似たシーンを選択する。続いて派生シーン選択部108が、選択されたシーンに対応付けられた(複数の)派生シーンを、派生シーン記憶部106の中から抽出する。そして派生シーン選択部108は、抽出された各派生シーンに記録されている対象物の位置・大きさと、計測された対象物1203の位置・大きさとを比較し、計測された対象物1203との位置・大きさが最も類似する対象物が記録されている派生シーンを選択する。ここまでが教示工程1200で行われる処理である。
派生シーンが選択されると、ロボットシステムは次にロボットの動作工程1201を行う。動作工程1201では、選択された派生シーンを基に、ロボット1204が駆動される。たとえばロボット動作実行部112はロボットに対し、選択された派生シーンに記録されているロボット動作についての情報から、ロボットを実際に動かすための命令群(各関節の角度を変更する命令等)を作成してロボット1204に発行する。ロボット1204は受け取った命令群に基づいて動作する。このような工程が行われることで、本実施例に係るロボットシステムでは、オペレータの教示した動作通りに、リアルタイムにロボット1204が動作する。
なおロボット動作実行部112がロボット1204を動作させる際、対象物計測部101がロボットの操作対象である対象物1205の詳細な位置を認識し、動作修正部110はそれに基づいて、派生シーンに記録されているロボット動作の情報(把持時の軌道等)を修正してもよい。さらに衝突回避部111環境計測部102の計測結果を基にロボットの腕が環境内の存在物1206と衝突しないように、ロボット動作の変更を行わせてもよい。
続いて各機能ブロックの詳細を説明する。まず、主に教示工程で用いられる各機能ブロックの説明を行う。
図4に計測部(動作計測部100、対象物計測部101、環境計測部102)について示す。動作計測部100はオペレータ200の動作を計測し、シーン選択部104等にオペレータ200の動作情報を渡す。動作計測部100を構成するセンシングデバイスとしては、モーションセンサやカメラなど、オペレータ200の動作を計測できるデバイスが用いられるとよい。
対象物計測部101は、オペレータ200の操作対象となる対象物201、ロボットの操作対象となる対象物201をそれぞれ計測する。対象物計測部101により計測された情報は、シーン選択部104、派生シーン選択部108、動作修正部110等に渡される。対象物計測部101を構成するセンシングデバイスとしては、カメラやレーザ距離センサ等の対象物201の位置や姿勢、形状が計測できるものが用いられるとよい。なお、実環境において、対象物201のみでなくその周囲の形状も一緒に計測されてしまう場合は、ICPアルゴリズムやテンプレートマッチング等により、対象物201のみを抽出する事としてもよい。
環境計測部102は環境202の形状を計測し、環境202の形状情報を衝突回避部111等に渡す。環境計測部102を構成するセンシングデバイスとしては、カメラやレーザ距離センサ等の、周囲環境の形状が計測できるものが用いられるとよい。
動作計測部100、対象物計測部101、環境計測部102を構成するセンシングデバイスには、それぞれ異なるデバイスが用いられてもよい。その他の構成例として、動作計測部100のみモーションセンサ、対象物計測部101と環境計測部102が一つの形状計測センサとする場合や、全てを一つの形状計測センサとする場合などが挙げられる。1つのセンシングデバイスを2種類以上の計測部として機能させる場合は、センシングデバイスから得られたセンサ情報から、必要な情報(例えば対象物の情報や周囲環境の情報)を抽出または分離するための手段が設けられるとよい。
対象物計測部101と環境計測部102の機能を1つのセンシングデバイスにより実現する場合は、上記に述べたように環境202内から対象物201をテンプレートマッチングやICPアルゴリズム等で抽出すれば良い。さらに1つのセンシングデバイスを動作計測部100としても機能させる場合は、センサ情報から人物情報を抜き出し、オペレータ200の動作として抽出する手段が設けられると良い。抽出方法としては、既存の人物認識手法を利用すればよい。さらに、シーン選択部104において、オペレータ200の動作を陽に計測せずとも、環境202・対象物201・オペレータ200の外観画像のみで、シーンと対応付けられる場合は、オペレータ200の教示動作の計測において分類せずともよい。
またロボットシステムは2つの対象物計測部101を有していてもよい。その場合、一方の対象物計測部101は、オペレータが教示動作を実施する際にオペレータが操作(把持など)する対象物(本明細書ではこれを「教示対象物」と呼ぶ)を計測するために用いられ、もう一方の対象物計測部101は、ロボットが実行動作を行う時にロボットが操作すべき対象物(本明細書ではこれを「操作対象物」と呼ぶ)を観測するために用いられる。
図5にシーン選択部104の行う処理の概要を示す。シーン選択部104は、動作計測部100と対象物計測部101によって計測されたオペレータ300の動作および対象物301の形状に最も近いシーンをシーン記憶部103内から選択する。シーンは、対象物301の種類(形状)および対象物301に対するロボットの操作方法(ロボット動作)を対にして記録したもので、シーン記憶部103には複数のシーンが記録されているものとする。
シーン(または派生シーン)をシーン記憶部103等に記憶する際、対象物の形状やロボット動作を何らかの形式の情報に変換して記憶する必要があるが、この情報の形式には、任意の形式が採用されてよい。本実施例における一例では、対象物の形状はCADデータによって表現され、ロボットによる操作方法(ロボット動作)としては、対象物の表面上のどの位置にどの程度の力を加えるかの情報、およびアームを伸ばす際の関節角の設定値が記録されているものとする。なお、シーンに含まれる対象物の情報としては、対象物の種類(形状)を特定可能な情報が含まれているだけで良いが、対象物の位置や大きさが含まれていてもよい。本実施例では特に断りがない限り、シーンには対象物の位置や大きさが含まれている前提で説明する。
シーン選択部104が、計測されたオペレータ300の動作に最も近いロボット動作の情報を選択する際には、オペレータ300の動作とロボット動作がどの程度似ているか、という類似性を求める必要がある。しかし、オペレータ300の動作とロボット動作は、形状や機構の違い等、質が異なるため、直接両者の類似性を直接差分によって計算する事はできない。
そこで本実施例に係るロボットシステムでは、機械学習によって質の異なる両対象の対応関係を解決する。具体的にはロボットシステムでは、事前にオペレータ300の動作・対象物301の計測結果(教示情報)とシーンの対応事例を対応記憶部114に格納しておき、教示情報を入力データ、シーンを教師データとした分類問題として、学習部115に学習させておく。機械学習方法としてはSVM、Boosting、Neural Network等の手法を用いれば良い。また、質の異なる2種の対応関係を解決する手法であれば機械学習を用いずとも良い。
入力として与える計測結果の種類としては、オペレータ300の手指の関節角および対象物の形状、あるいは空間全体の画像データなどが挙げられる。前者の場合、モーションセンサや対象物のみの切り出しが必要となるが、入力データの次元が低いため、学習サンプル数を低減できる。後者のように画像のみから学習を行う場合は、計測部をカメラ一つにまとめ、分類をする必要がないが、学習に用いるサンプル数が大きくなる。
オペレータは学習指示部1000を用いて、教示情報とそれに対応するロボット動作の情報を対応付けて対応記憶部114に格納し、学習部115に学習の指示を出す。学習部115は、オペレータの動作と最も近いシーンを選択するための学習を行うことで、教示情報を、シーンを構成する情報(対象物の形状とロボット動作の情報で、シーンまたは派生シーンと同じ種類の情報が含まれるもの)に変換するためのルールを導出する。一例として学習部115は、教示情報を入力とし、シーンを構成する情報を出力とする関数を生成する。
そしてシーン選択部104がシーン記憶部103からシーンを選択する際、学習部115の生成した関数を用いて、動作計測部100と対象物計測部101から得られたオペレータの動作及び対象物の計測結果(教示情報)を、シーンを構成する情報に変換する。そしてシーン選択部104は、シーン記憶部103に記録された各シーンと、変換して得られた情報との類似度を求め、最も類似度の高いシーンを選択する。シーンを構成する情報は、シーンと同種の情報から構成されているため、公知の方法等を用いて容易に類似度を求めることができる。
また、オペレータが教示をロボットに与えた際に、ロボットが誤ったシーンを選択した場合には、オペレータは学習指示部1000を通し、オペレータの教示に対応する正しいシーンを設定させてもよい。学習部115は、この際の動作計測部100および対象物計測部101の計測結果(つまり教示情報)と、学習指示部1000によって設定された正しいシーンの対応関係を新たな学習用の事例サンプルとして対応記憶部114に追加し、学習部115では機械学習によって学習を行う。学習結果を基に、シーン選択部104は当該計測結果を用いて再度シーンを選択する。
図5においては、シーン記憶部103に記録されている対象物の形状としては丸・四角・三角の3種類が、一方持ち方としては片手・両手の2種類が記憶されている例を示している。この場合シーン記憶部103には、対象物と持ち方の組み合わせとして6種類のシーンが記憶される。これに対し、計測部(動作計測部100、対象物計測部101)によりオペレータ300が片手で丸い対象物301を把持する動作が計測された場合、シーン選択部104は、ロボット304が片手で丸い対象物303を把持するシーン302をシーン記憶部103から選択する。シーン選択部104は原則として、オペレータ300の動作(持ち方)、対象物301の種類(形状等)に基づいてシーンを選択する。この時点では、計測した対象物301とシーンに記録されている対象物303の位置や大きさは一致していなくてもよい。
図6に、派生シーン作成部105の動作概要を示す。シーン302は対象物303の種類(形状等)およびロボット304の操作方法が記録されていたのに対し、派生シーンはシーンに記録された対象物の位置や大きさを変更したものであり、これを派生シーン作成部105が作成する。
派生シーン作成部105はシーン毎に、それぞれ多数の派生シーンをシーンに対応付けて派生シーン記憶部106に記憶する。本実施例では、シーンに記録された対象物はCADデータであるため、派生シーンにおいてはCADデータの位置・大きさを変更し、派生シーンの形状データとする。位置と大きさの変更は、ランダムに多数作成するか、所定のステップサイズで位置と大きさを変化させることで作成すればよい。
派生シーン記憶部106に位置・大きさを変化させた対象物が記憶される際、派生シーン作成部105は更に当該対象物を操作できるロボット動作の情報を生成し、位置・大きさを変化させた対象物に、生成されたロボット動作の情報を対応付けて記録する。派生シーン作成部105が、位置・大きさを変化させた対象物の操作方法(ロボット動作)を生成する際には、シーン記憶部103に記憶された対象物の操作方法を、位置・大きさの変化後の対象物の形状に合わせて修正することで、操作方法を生成するとよい。
たとえば対象物を握る動作を記録する場合、派生シーン作成部105は、シーンに記録された握り方を、位置・大きさ変化後の対象物上に線形補間することで、派生シーンとして記憶すべき握り方の動作を求める。もしくは物理シミュレーション等を使い、対象物を安定して把持できる持ち方を探索してもよい。ロボットアームの軌道は、前記持ち方に至るまでの腕の軌跡を、経路探索法によって算出する。探索法としては、Probablistic Roadmap、Rapidly−exploring Random Treesなどを用いれば良い。線形補間で計算できないほどの形状の差異がある場合は、オペレータがその対象物の形状と操作方法を(人手で)求め、シーン追加部107を用いて、シーン記憶部103に新たにシーンを追加する。また、各派生シーンに含まれる対象物にロボット動作が対応付けられる際、前から掴む・横から掴む等、複数種類の動作が対応付けられてもよい。
派生シーンにおけるロボットの動作を生成した後、派生シーン作成部105は、作成した派生シーンを派生シーン記憶部106に記憶させる。さらに、2通り以上のロボットの動作方法がある場合は、派生シーン作成部105は派生シーンに2つ以上のロボット動作の情報を記録してもよい。図6の例で挙げられているシーン302にはロボットが片手で丸い対象物を把持する動作が記録されており、これに対応付けられる派生シーンとして、対象物の大きさとして3種類、位置として3種類、組み合わせることで9種類の派生シーンが記録されていることとする。なお、図6には、片手で丸い対象物を扱う場合の派生シーンのみ記載したが、図5の例に挙げられているその他の5種類のシーンについても、それぞれ派生シーンが作成される。
図7に派生シーン選択部108の動作概要を示す。派生シーン選択部108では、シーン選択部104で選択したシーン302に対応付けられた複数の派生シーンのうち、実環境と最も近い派生シーン501を選択する。派生シーンには、シーンが有する情報に加えて、対象物の形・位置・大きさがCADデータとして記憶されている。対象物計測部101により実環境内の対象物301の形・位置・大きさが計測されているので、派生シーン選択部108は、計測した対象物と、派生シーンに記録された対象物が最も一致するような派生シーン501を選択する。ここで、一致方法の算出は、空間を細かなグリッドに分割し、物体が存在する領域をON、存在しない領域をOFFとして、両者の論理積や相互情報量を取ることで、どの程度マッチしているかを算出できる。
図7の例においては、まず、計測したオペレータ300の動作と対象物301の種類に基づいて、シーン302が選択される。ここまではシーン選択部104によって行われる処理で、図5に示した処理と同じである。続いて派生シーン選択部108は、シーン302に対応付けられた派生シーン群に記録された対象物の位置・大きさと、計測した対象物301の位置・大きさを比較する事で、派生シーン501を選択する。図7では、机の奥側に小さな丸い対象物500が配置されている派生シーンが最も近く、結果としてオペレータ300の動作・対象物301の位置・大きさに合致した派生シーン501が選ばれていることとなる。
人の動作・対象物に関する計測結果と、大量に存在する派生シーンを機械学習によって直接対応付けようとした場合、大量の対応付け候補があることから、学習データを大量に用意する必要がある。これに対して、本実施例に係るロボットシステムでは、オペレータの動作・対象物に関する計測結果を、代表事例となる少数のシーンに対応付け、その上でシーンに派生シーンを対応付けるように構成されている。これにより本実施例に係るロボットシステムでは、人の動作・対象物に関する計測結果とシーンの対応付けの候補数を減らすことができ、機械学習実行時に用いる学習データが少なくて済む。派生シーンは、シミュレーションで作成できるため、物品の様々な配置状況に対応する事ができる。
図8に、オペレータが新たなシーンを作成・追加する際の、シーン追加部107が提供するユーザインタフェースの例を示す。シーン追加部107は、画面1300内に編集中の対象物1301および対象物を配置する基準面1302を表示する。基準面1302は、対象物の配置先となる面で、実環境ではたとえば机上などに相当する面である。
オペレータが新たなシーンを作成する際には、まずプリミティブ形状群1303から対象物の形状を選択し、画面に選択した形状を表示させる。例えば円筒形状の物体の把持動作のシーンを作成する場合、プリミティブ形状群1303から円筒が選択されるとよい。続いてオペレータは、編集ツール群1304を用いて、選択した対象物のサイズや位置・向きを設定する。さらにオペレータは、ロボットの操作位置を編集する操作ツール群1305を用いて、ロボットが対象物1301をどのように操作するかを設定する。例えば、本実施例における把持操作の場合は、把持する位置1306と、力を加える方向を画面に表示した1307を書き込む。シーン追加部107は、オペレータによって入力されたこれらの情報をもとに、シーンを構成する情報を生成し、生成された情報をシーン記憶部103に記憶する。なお、派生シーン追加部113もシーン追加部107と同様の機能を提供するものであるので、派生シーン追加部113についての説明は略す。
続いて、動作工程で用いられる各機能ブロックの説明を行う。
図9にロボット動作選択部109の動作事例を示す。ロボット動作選択部109は、ロボット動作実行部112がロボットを動作させる時に実行される。もし派生シーンに2種類以上のロボット動作が紐づいていた場合に、ロボット動作選択部109は環境全体の状況からどちらのロボット動作が適切かを選択する。逆に派生シーンに1種類のロボット動作しか対応付けられていない場合、ロボット動作選択部109は実行されなくてよい。
ロボット動作の選択基準として、より安定動作する関節角や、より短い軌跡を選択するなどが挙げられる。例えば、安定動作を基準とする場合であれば、ロボット動作選択部109はロボットの各関節の安定性を評価する関数を予め有しており、複数のロボット動作について、いずれのロボット動作が安定であるかを評価する。評価関数としては、各関節を微小に動かした際に手先の位置がどのくらい変化するかを算出し、変化量が小さいほど安定とすればよい。選択基準として、軌跡の長さを選択する場合は、手先の移動距離を比較すればよい。図9においては、動作候補A600と動作候補B601を比較し、軌跡長が短い動作候補B601が選択されることになる。
図10に動作修正部110について示す。動作修正部110は、実環境下の対象物の位置・大きさと、予め記憶しておいた派生シーン内の対象物の位置が異なっていた場合に、実環境下の対象物の位置・大きさに合わせてロボット動作を修正する。まず、派生シーン内の対象物700のCADデータの位置・大きさと、実環境の対象物701の位置・大きさとの差異を算出する。算出方法としては、ICPアルゴリズムやテンプレートマッチング等の手法を用いる。実環境の対象物701の位置に対して、どのようにロボット動作を行えば所望する操作703を実施できるかを、派生シーンに記録した動作704を線形補間することによって算出する。もしくは、実環境の形状とロボットが衝突しないように、環境計測部102を用いてロボット自身の手先を計測し、ビジュアルフィードバックを用いて制御してもよい。
図11に、動作修正部110において動作を線形補間し、本実施例において指先の位置を変更し、事前計算して求めてあった環境と、実際の環境が異なる場合においても把持できる動作方法を作成する処理の例を示す。本実施例ではグリッパ1500の各指機構の動作1501、1502、1503を、それぞれ対象物1504上の把持位置1505に応じて線形補間することで、把持動作を可能とする。派生シーン等において事前計算して求めておいた動作1501を変形することで、動作1506に変形する。この際の変形量としては、元の動作1501において定義された指機構の軌道上と、実際の対象物1504の把持位置1505が最も近くなるような曲げ具合を計算することで求まる。同様に基本動作1503は、動作1207に変形される。本処理は指先の位置の変化を線形に変換する事で求めたが、ターゲットとなる指先の位置が求まれば、腕の動作としては、指先が求めた位置を満たすような姿勢を算出すればよい。冗長自由度の腕の場合は、当該姿勢は一意に求まらないが、関節角度が一定範囲内になるようにするなどの制約を設けることで、全関節の目標姿勢を一意に決めることは可能である。なお、この処理は派生シーン作成部105で用いられてもよい。
図12に衝突回避部111について示す。衝突回避部111では環境計測部102の計測した周囲の環境の状態から、派生シーンに記録したロボットの軌跡を、周囲の存在物に衝突しないような動作の軌跡に変更する。例えば、把持動作の場合であれば、動作目標となる手先位置は不変であり、そこに到達するまでの経路および、手先以外の腕の形状を変更する。変更方法としては、既存の経路探索手段(Probablistic Roadmap、Rapidly−exploring Random Trees)などを用いれば良い。図12においては、予め決めていた軌道800上に、障害物801が計測され、障害物801と衝突しない軌道802に変化させている。この際、手先の状態803は変化させず、腕のみの軌跡・姿勢の変化で目的を達成できる。動作目標となる手先位置の変更が必要な場合であれば、どのように動作すれば目標を達成できるかを物理シミュレーションで算出し、それに従い動作を実行してもよい。ここでの目標は、シーンに依存し、把持動作であれば対象物を落とさないことを条件として、それを満たす状態を算出する。
以上が動作工程で用いられる各機能ブロックの説明である。なお、上ではロボット動作時に、派生シーンに記録された対象物の操作方法を実環境における対象物に合うように線形補間することでロボット動作を修正する例を説明した。しかしながらこのような方法では、実環境において存在する外的要因(重力や摩擦の影響)のために、実環境では十分な精度が出ない場合がある。そこで別の実施形態として、動作修正部110は実環境に合わせたロボット動作の修正を行ってもよい。
具体的な方法としては、動作修正部110は対象物計測部101によって実環境における対象物の形状を把握し、元の派生シーン情報901を初期状態として、その形状に応じて動作を修正する。修正方法として、動作をしつつ、どの関節を動かせば目標姿勢に近づくかのシミュレーションを行い、動作結果のフィードバックを受け、再度シミュレーションを行う処理を繰り返すことで、対象物を安定して把持できる持ち方を探索しながら動作を実施する。
また、動作修正部110によって派生シーンに記録されたロボット動作情報を修正した結果情報を、派生シーン記憶部106に反映するようにしてもよい。その場合の例を図13に示す。先に述べたとおり、動作工程では、派生シーン選択部108によって選択された派生シーンの情報(図13ではこれを「派生シーン情報901」と表記する)を、動作修正部110が実環境にあわせて修正する。なお、派生シーンに複数のロボット動作が対応付けられている場合には、ロボット動作選択部109によって1つのロボット動作が選択されるが、図13ではロボット動作選択部109についての記述は略している。
動作更新部902は、動作修正部110によって修正された派生シーン情報901を用いて、派生シーン記憶部106に記録されているロボット動作の情報を上書きする。これにより、派生シーン記憶部106に記憶されているロボット動作の情報が、実環境を考慮したロボット動作の情報に書き換えられ、今後同様の動作をロボットが行う際に、実環境の状態により適合したロボット動作が可能になる。
派生シーンを作成した際のシミュレーションとの違いは、派生シーン作成では関節角の制御命令に対して、ロボットがどのように動くかはシミュレーションで事前計算するため、命令数分の誤差が蓄積するのに対し、動作修正部110においては動作時に制御命令による動作の結果を常にフィードバックすることで、制御命令の誤差を把握し、誤差を減らす制御命令を更に送ることができるので、精度良い制御命令を与えられる。