(57)【要約】【課題】  ロボットに物体を配置する作業を効率的に教示できる。【解決手段】  上記の目的を達成する本発明に係る情報処理装置は、物体を供給領域から目標領域へ運搬するロボットを制御する情報処理装置であって、前記目標領域の初期の状態を撮影した第１の画像と、前記供給領域にある第１の物体を前記目標領域に運搬させた前記目標領域の状態を撮影した第２の画像とを取得する取得手段と、前記第１の画像と前記第２の画像とから推定された、前記第１の物体が配置された領域である第１の領域の特徴に基づいて、前記目標領域内において、前記供給領域にある物体を配置することが可能な前記第１の領域とは異なる複数の第２の領域を推定する推定手段と、前記第１の物体とは異なる第２の物体を、前記供給領域から前記第２の領域のいずれかへ前記ロボットに運搬させる制御手段とを有する。【選択図】  図１
2020055096.tif 000002
【特許請求の範囲】
【請求項１】
物体を供給領域から目標領域へ運搬するロボットを制御する情報処理装置であって、
前記目標領域の初期の状態を撮影した第１の画像と、前記供給領域にある第１の物体を前記目標領域に運搬させた前記目標領域の状態を撮影した第２の画像とを取得する取得手段と、
前記第１の画像と前記第２の画像とから推定された、前記第１の物体が配置された領域である第１の領域の特徴に基づいて、前記目標領域内において、前記供給領域にある物体を配置することが可能な前記第１の領域とは異なる複数の第２の領域を推定する推定手段と、
前記第１の物体とは異なる第２の物体を、前記供給領域から前記第２の領域のいずれかへ前記ロボットに運搬させる制御手段とを有することを特徴とする情報処理装置。
【請求項２】
前記制御手段は、前記第２の物体を、前記第１の物体が置かれていない前記第２の領域まで運搬させることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記制御手段は、前記供給領域に前記第２の物体が残っていない場合は前記ロボットを停止させることを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記制御手段は、前記目標領域に物体を配置することが可能な前記第２の領域が残っていない場合は前記ロボットを停止させることを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記目標領域は、前記第１の領域と同様の形状の部分領域が規則的に配置された領域であることを特徴とする請求項１乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
前記制御手段は、前記第２の物体を前記第１の物体の向きと揃えて配置するように運搬させることを特徴とする請求項１乃至５のいずれか１項に記載の情報処理装置。
【請求項７】
前記制御手段は、前記対象物体の表裏の向きを揃えて配置するように制御することを特徴とする請求項１乃至６のいずれか１項に記載の情報処理装置。
【請求項８】
前記推定手段は、前記第１の画像と前記第２の画像との差分に基づいて前記第１の物体が配置された前記第１の領域を推定することを特徴とする請求項１乃至７のいずれか１項に記載の情報処理装置。
【請求項９】
前記第１の領域の特徴は、前記第１の画像から取得されることを特徴とする請求項１乃至８のいずれか１項に記載の情報処理装置。
【請求項１０】
前記推定手段は、前記第１の領域の特徴と前記第１の画像の部分の特徴とをテンプレートマッチングすることによって、前記目標領域における前記第１の物体を配置することが可能である複数の前記第２の領域を推定することを特徴とする請求項１乃至９のいずれか１項に記載の情報処理装置。
【請求項１１】
前記第１の画像を撮影した後、ユーザーに前記第１の物体を前記供給領域から前記目標領域に運搬させる動作を行うよう指示する指示手段を更に有することを特徴とする請求項１乃至１０のいずれか１項に記載の情報処理装置。
【請求項１２】
前記指示手段は、前記供給領域に前記第２の物体が残っていない場合に、ユーザーに前記動作が終了したことを指示することを特徴とする請求項１１に記載の情報処理装置。
【請求項１３】
前記指示手段は、前記目標領域に物体を配置することが可能な前記第２の領域が残っていない場合はユーザーに前記動作が終了したことを指示することを特徴とする請求項１１または１２に記載の情報処理装置。
【請求項１４】
前記取得手段は、前記第１の物体が雑然と配置された前記供給領域を撮影した第３の画像をさらに取得し、
前記推定手段は、前記第３の画像と、前記第１の画像と前記第２の画像から推定された前記第１の物体が配置された領域の特徴とをテンプレートマッチングすることで前記把持位置の候補を推定することを特徴とする請求項１乃至１３のいずれか１項に記載の情報処理装置。
【請求項１５】
前記推定手段によって推定された前記第２の領域を所定の方法で提示する提示手段と、
前記第２の領域に前記第２の物体を運搬させることが適切か否かの判定をユーザーから受け付ける受け付け手段と、をさらに有し、
前記取得手段は、前記第１の判定手段によって適切でないと判定された場合、前記第１の物体を前記目標領域における第４の領域に置き直された状態で撮影した第３の画像を取得し、
前記推定手段は、前記第１の画像と前記第３の画像とに基づいて、前記第４の領域を前記第２の領域として推定することを特徴とする請求項１乃至１４のいずれか１項に記載の情報処理装置。
【請求項１６】
前記提示手段は、表示装置に前記第１の画像における前記第２領域に対応する領域を強調して表示させることを特徴とする請求項１５に記載の情報処理装置。
【請求項１７】
前記提示手段は、投影装置によって前記第２の領域に所定の画像を投影させることを特徴とする請求項１５に記載の情報処理装置。
【請求項１８】
コンピュータを、請求項１乃至１７のいずれか１項に記載の情報処理装置が有する各手段として機能させるためのプログラム。
【請求項１９】
物体を供給領域から目標領域へ運搬するロボットの制御値を生成する情報処理方法であって、
前記目標領域の初期の状態を撮影した第１の画像と、前記供給領域にある第１の物体を前記目標領域に運搬させた状態の前記目標領域の状態を撮影した第２の画像とを取得する取得工程と、
前記第１の画像と前記第２の画像とから推定された、前記第１の物体が配置された領域である第１の領域の特徴に基づいて、前記目標領域内において、前記供給領域にある物体を配置することが可能な前記第１の領域とは異なる少なくとも１つの第２の領域を推定する推定工程と、
前記第１の物体とは異なる第２の物体を、前記供給領域から前記第２の領域のいずれかへ前記ロボットが運搬する前記制御値を生成する生成工程とを有することを特徴とする情報処理方法。
【請求項２０】
物体を供給領域から目標領域に運搬するロボットの制御値を生成する情報処理システムであって、
前記目標領域の初期の状態を撮影した第１の画像と、前記供給領域にある第１の物体を前記目標領域に運搬させた状態の前記目標領域の状態を撮影した第２の画像とを撮影する撮影装置と、
前記撮像装置から前記第１の画像と前記第２の画像とを取得する取得手段と、
前記第１の画像と前記第２の画像とから推定された、前記第１の物体が配置された領域である第１の領域の特徴に基づいて、前記目標領域内において、前記供給領域にある物体を配置することが可能な前記第１の領域とは異なる複数の第２の領域を推定する推定手段と、
前記第１の物体とは異なる第２の物体を、前記供給領域から前記第２の領域のいずれかへ前記ロボットが運搬する前記制御値を生成する生成手段とを有する情報処理装置と、
前記制御値に基づいて前記物体を運搬する前記ロボットとを有することを特徴とする情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、物体を配置するロボットの制御技術に関する。
【背景技術】
【０００２】
自動化された工場において、部品の梱包作業等を人間の代わりにロボットが行う技術がある。従来、部品をパレットに整列させて載置する作業を繰り返しできるように、ロボットを制御する方法として、プログラミングやユーザーによる遠隔操作といった手段が用いられていた。特許文献１では、各トレイとそれに載置される各部品の種類との対応関係をロボットに教示することによって、トレイや部品の位置が変わっても部品を把持可能なロボットについて開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−３０３２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１では、各トレイとそれに載置される各部品の種類との対応関係を予めユーザーが行う必要があるため、その載置を行うロボットの設定に時間がかかるという問題があった。本発明は上記課題に鑑みてなされたものであり、ロボットに物体を配置する作業を効率的に教示する情報処理装置を提供する。
【課題を解決するための手段】
【０００５】
上記の目的を達成する本発明に係る情報処理装置は、物体を供給領域から目標領域へ運搬するロボットを制御する情報処理装置であって、前記目標領域の初期の状態を撮影した第１の画像と、前記供給領域にある第１の物体を前記目標領域に運搬させた前記目標領域の状態を撮影した第２の画像とを取得する取得手段と、前記第１の画像と前記第２の画像とから推定された、前記第１の物体が配置された領域である第１の領域の特徴に基づいて、前記目標領域内において、前記供給領域にある物体を配置することが可能な前記第１の領域とは異なる複数の第２の領域を推定する推定手段と、前記第１の物体とは異なる第２の物体を、前記供給領域から前記第２の領域のいずれかへ前記ロボットに運搬させる制御手段とを有する。
【発明の効果】
【０００６】
本発明によれば、ロボットに物体を配置する作業を効率的に教示できる。
【図面の簡単な説明】
【０００７】
【図１】情報処理システムの構成例を示す図。
【図２】情報処理装置のハードウェア構成例を示す図。
【図３】情報処理システムの機能構成例を示すブロック図。
【図４】情報処理システムが実行する処理を説明するフローチャート。
【図５】ユーザーへの指示方法の一例を説明する図。
【図６】プロジェクションによるユーザーへの指示方法の一例を説明する図。
【図７】仮想現実による表示を説明する図。
【図８】対象物体の決定する方法の一例を説明する図。
【図９】配置する領域の候補を推定する方法を説明する図。
【図１０】対象物体と配置領域の相対的位置関係を説明する図。
【図１１】対象物体と配置する領域の相対的位置関係を説明する図。
【図１２】情報処理システムの座標系の一例を示す図。
【図１３】情報処理システムの座標系の一例を示す図。
【図１４】情報処理システムの機能構成例を示すブロック図。
【図１５】情報処理システムが実行する処理を説明するためのフローチャート。
【図１６】情報処理システムが実行する処理を説明するためのフローチャート。
【図１７】情報処理装置が実行する処理を説明するためのフローチャート。
【図１８】配置領域の学習データの一例を示す図。
【図１９】ＧＵＩの一例を説明する図。
【図２０】ＧＵＩの一例を説明する図。
【図２１】ＧＵＩの一例を説明する図。
【図２２】ＧＵＩの一例を説明する図。
【発明を実施するための形態】
【０００８】
以下、添付の図面を参照して、本発明の好適な実施形態を説明する。
【０００９】
＜第１の実施形態＞
従来の工場では、部品を並び替える作業や入れ替える作業は人手で行っていた。しかしながら、近年では、部品の梱包や入れ替えをロボットが代わりに行う技術がある。この技術によって、工場の現場における生産性向上や労働者の負担軽減が期待される。一方で、部品の向きを認識し、正しい位置または姿勢で配置する作業をロボットに教える必要がある。プログラミングや遠隔操作といった方法は、専門的な知識が必要な為、工場現場でのロボットの設定は困難であった。また、ユーザーが例えばある物体を移動させるタスクを例示しても、ロボットが残りの物体をユーザーが例示したように移動させることは困難であった。そこで、本実施形態では、ユーザーが示した見本となる動作をロボットの視点から撮像した画像または動画を使って、ロボットが物体を供給領域から目標領域に運搬し、目標領域に含まれる配置領域の候補に配置する制御値を生成する情報処理装置を説明する。ここで説明するタスクは、ばら積みされた物体群をトレイ等の目標領域に整列させて運搬及び配置する作業である。また、物体を運搬及び配置する動作と移動は同義であるものとして説明する。ユーザーはこのタスクを１度実際に実行するだけでよいため、ユーザーは専門的な知識がなくてもロボットのセットアップを行える。その結果、ロボットに物体を移動させる作業を効率的に教示できる。
【００１０】
第１の実施形態では、まず、対象物体を目標領域へ移動させる前に、撮像装置によって初期状態である目標領域を撮影した画像を得る。次いで、ユーザーへ対象物体を目標領域へ運搬することを指示する。再び、撮像装置によって対象物体が目標領域に含まれる任意の配置領域に配置された状態であるシーン領域を撮像した画像を得る。そして、対象物体の移動前後の画像に基づいて、供給領域に残っている対象物体を目標領域に含まれる各配置領域に配置する制御値を生成する。生成された制御値に従ってロボットが対象物体を目標領域に含まれる配置領域まで運搬する。供給領域にあるすべての対象物体がなくなる、もしくは目的領域に配置領域の候補がなくなるまでロボットは繰り返しタスクを実行する。
【００１１】
本実施形態において、ロボットとは、アクチュエータを備え、対象物体を把持、運搬、配置する機械装置のことである。対象物体とは、ロボットが行うタスクにおいて移動及び配置の動作対象となる物体である。対象物体とは、具体的にはデジタルカメラの部品のような工業部品である。移動とは、対象物体をベルトコンベアで供給された位置から把持し、配置位置へ運搬し配置することである。
【００１２】
図１は、本実施形態における情報処理装置２０を備える情報処理システム１００の構成例を示す図である。図１は機器構成の一例であり、本発明の適用範囲を限定するものではない。
【００１３】
情報処理システム１００は、ロボット１０と、情報処理装置２０とを備える。また、情報処理システム１００は、撮像装置２と、光源６と、指示装置５とをさらに備える。
【００１４】
ロボット１０は、対象物体４１と配置領域４２を認識するための動作、および、情報処理装置２０が提示した制御値に基づき、対象物体４１を運搬及び配置する動作を実行する。ロボット１０は、例えば工場の生産ライン等で稼働する多関節ロボットである。ロボット１０は、ロボットアーム等のマニピュレータ１や、ロボットハンド等の把持装置３、マニピュレータ１と把持装置３を制御するコントローラ４を備える。また、ロボット１０は、マニピュレータ１の各関節の角度を変更することで把持装置３の位置姿勢を変更可能な位置姿勢変更機構を備える。位置姿勢変更機構は、電動モータによって駆動される。または、この機構は、油圧や空気圧等の流体圧で作動するアクチュエータによって駆動される。この機構は、情報処理装置２０から出力される動作指示情報に従って駆動される。また、ロボット１０は、多関節ロボットに限定されるものではない。ロボット１０は、数値制御（Ｎｕｍｅｒｉｃａｌ  Ｃｏｎｔｒｏｌ：ＮＣ）可能な可動式の機械であってもよい。
【００１５】
マニピュレータ１は、対象物体を任意の位置姿勢から撮像するために、撮像装置を移動可能に構成されている。マニピュレータ１の制御は、コントローラ４からの指示または情報処理装置２０で決定された制御値によって行われる。マニピュレータ１は、例えば、６軸ロボットにより構成することができ、ロボットのエンドエフェクタ付近に装着された撮像装置２を移動させることができる。
【００１６】
把持装置３は、ロボット１０による対象物体の種類に応じて、物体を把持するためのツールである。例えば、モータ駆動可能なチャック機構を有し対象物体を把持可能なハンドや、空気圧で対象物体を吸着する吸着パッドを用いたハンドである。ここで説明する把持装置３は、吸着パッドを用いたハンドで、対象物体の重心を吸引することで物体を把持する。なお、把持装置３は、マニピュレータ１に対して着脱可能に取り付けられており、対象物体の種類に応じて交換可能である。また、把持装置３は、必ずしも必要ではなく、マニピュレータ１により対象物体を移動できるのであればなくてもよい。例えば、対象物体を押し出す作業の場合、ロボット１０は１軸シリンダにより構成され、把持装置３を含まなくてもよい。
【００１７】
コントローラ４は、例えばロボットが移動する際の目標位置を入力されたとき、その目標位置と現在地の間をどのような軌跡で移動にするかを決定する。具体的には、マニピュレータ１に付随するロボットコントローラである。または、プログラマブルロジックコントローラ（ＰＬＣ）でもよいし、これら以外でもマニピュレータ１と把持装置３を制御できる装置であればよい。コントローラ４は、図１に示すように、ロボット１０の近くに設置される。或いは、マニピュレータ１と一体化していてもよいし、他の領域に設置されていてもよい。コントローラ４はマニピュレータ１、把持装置３の制御を行う。撮影時の場合、撮像装置２が対象物体４１または配置領域４２を撮影するため、マニピュレータ１が目標位置姿勢になるよう制御する。そして、撮像装置２が移動したら、コントローラ４は情報処理装置２０に撮像命令を送り、情報処理装置２０は撮像装置２に撮像トリガーを送る。もしくは情報処理装置を経由せずに、コントローラ４が直接、撮像装置に撮影命令を送る。なお、撮影に合わせて光源６も適宜制御する。タスク実行時の場合、コントローラ４は情報処理装置２０から取得した制御値に基づいて、把持装置３が対象物体４１を把持するため、マニピュレータ１が目標位置姿勢になるよう制御する。そして、把持装置３が対象物体４１を把持できる位置姿勢へ移動すると、コントローラ４は、把持装置３に把持トリガーを送る。
【００１８】
対象物体４１は、ロボット１０によって運搬される物体である。具体的には、デジタルカメラの部品のような工業用部品や、梱包された完成品等である。対象物体４１は、ベルトコンベア等で次々と供給され、１単位ずつ運搬される。ここで１単位とは、１回のトレイに配置できる対象物体の組合せを指す。対象物体４１はトレイに入っていてもよいし、入っていなくてもよい。また、対象物体４１は、ベルトコンベアで供給されず、ＡＧＶ（Ａｕｔｏｍａｔｉｃ  Ｇｕｉｄｅｄ  Ｖｅｈｉｃｌｅ）など別の方法により供給されてもよい。
【００１９】
配置領域４２ａ、４２ｂ、４２ｃ、４２ｄは、対象物体４１を目標領域に移動させる先の配置領域の候補である。ロボットは対象物体４１を整列させて配置するため、対象物体毎に配置領域が異なる。具体的には、１つ目の対象物体４１を配置領域４２ａに移動すると、配置領域４２ａは対象物体４１により埋まる。そのため、２つ目の対象物体４１の配置領域４２は、１つ目の対象物体４１の配置領域４２ａとは異なる位置、すなわち４２ｂ、４２ｃ、４２ｄのいずれかとなる。配置領域４２は、作業によって異なり、例えば、ピックアンドプレースの作業であれば、対象物体をプレースする位置である。なお、ピックアンドプレースとはロボットアームの先端に吸着パッド等の吸着部を取り付け、物体を吸着することによって運搬する作業を指す。対象物体がネジで作業がネジ締めならば、配置領域はネジで締められる位置である。対象物体がコネクタで作業がコネクタ挿入ならば、配置領域はコネクタを挿入される位置となる。
【００２０】
撮像装置２は、カメラや、光を検出するセンサ、フォトダイオードなどで構成される視覚センサであり、対象物体４１および目標領域４２を撮像して、画像を取得する。画像とは、例えば２次元カラー画像や、距離画像である。撮像装置２は、取得した画像を情報処理装置２０に出力する。撮像装置２は、光源６によって光が投射された対象物体４１および目標領域４２の画像を撮像する。なお、撮像装置２は、光源６によって光が投射されていない状態で、対象物体４１および他の対象物体４１の画像を撮像することもできる。距離画像の撮像方法は、光源６から投光した赤外線パターンを撮像装置２で読み取り、三角測量の原理で距離情報を得るＬｉｇｈｔ  Ｃｏｄｉｎｇ方式を用いる。もしくは、投光した赤外線パルスが反射して戻ってくるまでの時間から距離情報を得るＴｉｍｅ  ｏｆ  Ｆｌｉｇｈｔ（ＴｏＦ）方式を用いてもよい。或いは、三角測量の原理によりステレオカメラを使った視差情報から距離情報を得る方式を用いてもよいし、その他の方式を用いてもよい。撮像装置２および光源６は、図１に示すように、ロボット１０に搭載する。または、撮像対象空間の上方に固定配置したり、他の作業機械に搭載したりしてもよい。また、撮像装置２は複数配置してもよい。固定された撮像装置を用いる場合は、供給領域と目標領域を一度に撮像できる画角であるとよい。複数の撮像装置を用いる場合は、撮像装置毎に撮影する領域に合わせて設置場所を決定するとよい。なお、本実施形態において、撮像装置の位置と姿勢および画角は既知であるとする。
【００２１】
指示装置５は、情報処理システム１００からユーザーへ対象物体４１を、目標領域における任意の配置領域の候補へ移動させることを指示する。例えばスピーカーにより構成させ、指示部２０２から指定された自然言語を発することでユーザーに指示を行う。または、ディスプレイにより構成され、ＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）を表示することでユーザーに指示を行う。または、プロジェクタにより構成され、対象物体４１または目標領域４２に指示部２０２から指定された画像をプロジェクションすることでユーザーに指示を行う。または、ＨＭＤ（Ｈｅａｄ  Ｍｏｕｎｔｅｄ  Ｄｉｓｐｌａｙ）やＡＲ（Ａｕｇｍｅｎｔｅｄ  Ｒｅａｌｉｔｙ）グラスにより構成される。ＭＲ（Ｍｉｘｅｄ  Ｒｅａｌｉｔｙ）、ＡＲ、ＶＲ（Ｖｉｒｔｕａｌ  Ｒｅａｌｉｔｙ）により現実空間あるいは仮想空間の目標領域４２に重畳表示することでユーザーに指示を行う。
【００２２】
光源６は、例えばプロジェクタによって構成され、可視光を出射したり、レーザ光源から赤外光を出射したりすることで、対象物体４１および目標領域４２に対して均一照明光やパターン光を投射する。
【００２３】
情報処理装置２０は、ロボットによって物体を供給領域から目標領域に運搬する制御値を生成する装置である。情報処理装置２０は、例えばパーソナルコンピュータ（ＰＣ）により構成されている。図２は、情報処理装置２０のハードウェア構成の一例である。情報処理装置２０は、ＣＰＵ２１と、ＲＯＭ２２と、ＲＡＭ２３と、外部メモリ２４と、入力部２５と、表示部２６と、通信Ｉ／Ｆ２７と、システムバス２８とを備える。ＣＰＵ２１は、情報処理装置２０における動作を統括的に制御するものであり、システムバス２８を介して、各構成部（２１〜２７）を制御する。ＲＯＭ２２は、ＣＰＵ２１が処理を実行するために必要なプログラムを記憶する不揮発性メモリである。なお、当該プログラムは、外部メモリ２４や着脱可能な記憶媒体（不図示）に記憶されていてもよい。ＲＡＭ２３は、ＣＰＵ２１の主メモリ、ワークエリアとして機能する。すなわち、ＣＰＵ２１は、処理の実行に際してＲＯＭ２２から必要なプログラムをＲＡＭ２３にロードし、当該プログラムを実行することで各種の機能動作を実現する。外部メモリ２４は、例えば、ＣＰＵ２１がプログラムを用いた処理を行う際に必要な各種データや各種情報を記憶している。また、外部メモリ２４には、例えば、ＣＰＵ２１がプログラムを用いた処理を行うことにより得られた各種データや各種情報が記憶される。入力部２５は、例えばキーボードやマウスのポインティングデバイスにより構成され、ユーザーが入力部２５を介して当該情報処理装置２０に指示を与えることができるようになっている。表示部２６は、液晶ディスプレイ（ＬＣＤ）等のモニタで構成される。通信Ｉ／Ｆ２７は、外部機器と通信するためのインターフェースである。システムバス２８は、ＣＰＵ２１、ＲＯＭ２２、ＲＡＭ２３、外部メモリ２４、入力部２５、表示部２６及び通信Ｉ／Ｆ２７を通信可能に接続する。このように、情報処理装置２０は、通信Ｉ／Ｆ２７を介して、外部機器であるロボット１０、撮像装置２、光源６、指示装置５、確認装置７とそれぞれ通信可能に接続されており、これらの外部機器の動作を制御する。
【００２４】
図３は、情報処理システム１００および情報処理装置２０の機能構成例を示すブロック図である。ロボット１０は、コントローラ４、把持装置３、マニピュレータ１を備える。情報処理装置２０は、記憶部２００、取得部２０１、指示部２０２、推定部２０３、生成部２０４を備える。
【００２５】
記憶部２００は、ロボット１０が教示されたタスクを実行するのに必要な情報を記憶する。具体的には、目標領域または供給領域を撮像する際の撮像装置２の位置姿勢といったデータである。撮像装置２の画角についても記憶する。また、把持装置６のハンドの領域や大きさについてのデータを記憶する。具体的には、把持装置が吸着パッドである場合、そのパッドの直径についての情報を記憶する。把持装置がハンドである場合、ハンドの大きさについての情報を記憶する。また、対象物体の把持位置についての情報も記憶する。例えば、吸着パッドの場合は、対象物体の中心を把持位置とするといった情報である。この情報は、対象物体の種類ごとに設定する必要はない。
【００２６】
取得部２０１は、撮像装置２が目標領域または供給領域を含むシーンを撮像した画像または動画である視覚情報を取得する。まず、初期の状態である目標領域を撮像した第１の視覚情報を取得する。次に、ユーザーによって対象物体を１単位分（第１の物体）だけ移動させた後の状態の目標領域を撮像した第２の視覚情報を取得する。この第１の視覚情報と第２の視覚情報とに基づいて、画像の特徴点の差分をとることによって、対象物体が配置された領域を示すテクスチャ情報を推定できる。このテクスチャ情報を用いて、目標領域４２で対象物体を規則的に並べるタスクを行うことができる。また、取得部２０１は、対象物体が１つ以上置かれている供給領域を含むシーンを撮像した画像または動画である視覚情報（第３の視覚情報）を取得する。この第３の視覚情報から、把持可能である対象物体を認識し、物体毎に把持する位置を決定することができる。取得部２０１は、取得した視覚情報を、指示部２０２および提示部２０３に出力する。取得部２０１は、例えばキャプチャボードやメモリ（ＲＡＭ）によって構成される。また、目標領域を撮影する際の撮像装置２の位置と姿勢（第１の位置）と、対象物体４１が雑然とばら積みされている供給領域を含むシーンを撮像する際の撮像装置の位置と姿勢（第２の位置）を取得する。本実施形態では、第１の位置と第２の位置は予め記憶部２００が把持しているものとする。
【００２７】
指示部２０２は、所定の動作を行うようユーザーに指示する。所定の動作とは、供給領域にばら積みされた対象物体のうち１単位分（第１の物体）を、目標領域の領域４２ａ、４２ｂ、４３ｃ、４４ｄのいずれかに移動させる動作である。具体的な処理では、指示部２０２は、取得部２０１から目標領域４２を撮像した画像を取得した後、ユーザーに対象物体４１を状態へ移動させることをユーザーに指示するため、指示装置５に指示トリガーを送る。指示部２０２は、指示装置５に応じて指示内容を決定する。例えば、指示装置５がスピーカーの場合は、スピーカーにより発する音声ガイドの内容を決定する。指示装置５がプロジェクタの場合は、プロジェクションする画像を決定する。指示装置５がＨＭＤやＡＲグラスの場合は、重畳表示する内容を決定する。
【００２８】
推定部２０３は、取得部２０１から取得した第１の視覚情報と第２の視覚情報との差分に基づいて、対象物体が配置された第１の領域を推定する（第１の推定）。また、推定部２０３は、第１の領域に基づいて、目標領域に含まれる領域で、第１の領域と異なる複数の第２の領域を推定する（第２の推定）。さらに、推定部２０３は、第１の視覚情報と第２の視覚情報との差分画像に含まれる画像特徴と第３の視覚情報とをテンプレートマッチングすることによって、対象物体を把持する位置を推定する（第３の推定）。第１の推定については、第１の視覚情報と第２の視覚情報の変化した領域、すなわちユーザーによって対象物体が配置された領域の特徴を利用して、把持装置によって運搬する対象物体の領域を推定する。ここでは、対象物体の３次元領域を推定する。具体的には、第１の視覚情報と第２の視覚情報から画像の特徴点の差分をとることで２次元のテクスチャ情報を取得する。また、距離の計測結果を用いて、物体の高さ情報を得る。物体を把持、リリースする際に実物の高さ情報を用いて把持装置の位置姿勢を推定する。
【００２９】
第２の推定では、第１の視覚情報と第２の視覚情報から得た差分画像の特徴と、目標領域の幾何的特徴とに基づいて、目標領域内において、対象物体を配置する領域を推定する。詳しい処理については後述する。
【００３０】
第３の推定では、供給領域を撮像した第３の視覚情報に対して、対象物体の領域の特徴をテンプレートマッチングすることによって、対象物体を抽出する。さらに対象物体の領域における重心を、対象物体を把持する位置の候補として推定する。ここで、把持位置は把持装置の種類と対象物体の領域に対応させて推定する。例えば、把持装置が吸着パッドである場合、対象物体の重心を把持位置とする。把持装置がハンドである場合は、対象物体の端を掴む把持位置とする。これらの対応データは予め情報処理装置に与えておく。なお、目標位置姿勢は撮影した画像における画像座標系で求めるが、他の座標系に変換して求めてもよい。
【００３１】
生成部２０４は、第１の視覚情報と第２の視覚情報とに基づいて推定された対象物体の領域から推定される配置領域の候補と、供給領域にある対象物体の把持位置とに基づいて、対象物体毎にロボットが運搬する制御値を生成する。つまり、生成部２０４は対象物体４１を配置する際の位置姿勢を元にマニピュレータ１を動かすための制御値を生成する。生成された制御値はコントローラ４に入力される。コントローラ４はその制御値に基づいてロボット１０を制御する。もしくは、情報処理装置において図示しない制御部によってロボット１０を制御してもよい。詳しい処理は後述する。
【００３２】
以下、図１７を用いて情報処理装置２０が実行する処理について簡単に説明する。詳細な処理は情報処理システムにおけるフローチャートにて説明する。以下の説明では、各工程（ステップ）について先頭にＳを付けて表記することで、工程（ステップ）の表記を省略する。Ｓ１７０１では、記憶部２００が、情報処理装置２０に設定された各パラメータを初期化する。Ｓ１７０２では、取得部２０１が、初期状態である目標領域を撮像した第１の視覚情報を取得する。Ｓ１７０３では、指示部２０２が、所定の動作をユーザーに実行するように指示する。Ｓ１７０４では、取得部２０１が、ユーザーによって所定の動作が実行された後に目標領域を撮像した第２の視覚情報を取得する。Ｓ１７０５では、推定部２０３が、第１の視覚情報と第２の視覚情報とに基づいて対象物体の領域を推定する（第１の推定）。Ｓ１７０６では、推定部２０３が、物体の領域と目標領域を撮像した第２の視覚情報とに基づいて、次の対象物体を配置する位置を推定する（第２の推定）。Ｓ１７０７では、取得部２０１が、対象物体がばら積みされて置いてある供給領域を撮像した第３の視覚情報を取得する。Ｓ１７０８では、推定部２０３が、把持装置によって運搬する対象物体４１を把持する位置を推定する（第３の推定）。Ｓ１７０９では、生成部２０４が、把持位置と配置領域とに基づいて対象物体を運搬する制御値を生成する。Ｓ１７１０では、生成部２０４が、供給領域に対象物体もしくは目標領域に配置領域が残っているか否かを判定し、残っている場合はＳ１７０４に戻って同様のタスクを続ける。残っていない場合は処理を終了する。
【００３３】
ここから、情報処理システム１００が実行する処理について詳細に説明する。図４は、情報処理システム１００が実行する処理手順を示すフローチャートである。図４に示される処理は、図２に示す情報処理装置２０のＣＰＵ２１が、ＲＯＭ２２もしくは外部メモリ２４に格納されたプログラムを読み出して実行することにより実現される。ただし、図４の処理の一部または全部が、専用のハードウェアにより実現されてもよい。図４の処理は、例えばオペレータが情報処理システム１００を起動したときに開始される。ただし、開始のタイミングは、情報処理システム１００の起動時に限定されるものではない。
【００３４】
まずＳ１において、ＣＰＵ２１は、システムの初期化処理を行う。すなわち、ＣＰＵ２１は、ＲＯＭ２２もしくは外部メモリ２４に格納されたプログラムをロードし、ＲＡＭ２３上に展開して実行可能な状態とする。また、情報処理装置２０に接続された各機器のパラメータの読み込みや初期位置への復帰を行い、使用可能な状態にする。具体的には、取得部２０１が記憶部２００から撮像装置２の初期の位置姿勢、画角を取得する。また、把持装置の把持部分の大きさと領域のデータを読み込む。把持装置のデータとは、把持部分が吸着パッドである場合は、パッドの直径といったデータである。なお、図１７におけるＳ１７０１と同様の処理を行う。
【００３５】
次にＳ２では、取得部２０１が、目標領域を撮影する撮像装置２の位置姿勢を取得する。撮像装置２は、マニピュレータ１が移動することによって、第１の位置から目標領域を撮像する。あるいは、コントローラ４が第１の位置を取得する。決定される位置姿勢は、目標領域４２を撮像することができれば、どのような方法で決定してもよい。
【００３６】
Ｓ３では、コントローラ４が、撮像装置２が撮影を行う第１の位置に移動するようにマニピュレータ１を制御する。具体的には、Ｓ２で取得された位置姿勢になるようにマニピュレータ１を動かす制御値を決定する。例えば、Ｓ２で生成された位置姿勢に対してマニピュレータ１を移動させるために、まず目標領域を撮像する時の位置となる位置姿勢情報を順運動学によってマニピュレータ１の関節角度情報に変換する。次にマニピュレータ１の各関節のアクチュエータを動作させるための指令値を計算し、ロボットコントローラへ入力する。そして、その入力に基づき、マニピュレータ１が動作する。なお、撮像装置２とマニピュレータ１との位置関係は予めキャリブレーション済みであるとする。
【００３７】
Ｓ４では、コントローラ４が、情報処理装置２０に撮像命令を送り、情報処理装置２０は撮像装置２に撮像トリガーを送る。撮像トリガーに基づき、撮像装置２は、初期状態である目標領域４２を含むシーンの撮像を行う。ここで得られる画像を第１の視覚情報と呼ぶ。ここにおける説明では、目標領域４２にはまだ対象物体が１つも配置されていない状態（初期状態）であるものとして説明する。なお、１つ以上の対象物体が目標領域４２に配置されていてもよい。
【００３８】
Ｓ５では、取得部２０１が、初期状態である目標領域４２を写した第１の視覚情報を取得し、指示部２０２に送る。ここで初期状態とは、ユーザーによるタスク教示が行われる前の状態のことを指す。なお、図１７におけるＳ１７０２も同様の処理を行う。
【００３９】
Ｓ６では、指示部２０２が、ユーザーに対象物体の１単位分を供給領域から目標領域に移動させる所定の動作を所定の手段によって指示する。指示部２０２が、対象物体４１を目標領域に運搬する前の状態で撮像した第１の視覚情報を取得部２０１より取得し、ユーザーに対象物体４１を目標領域へ移動させることを指示装置５によりユーザーに指示する。一例として、対象物体４１をベルトコンベアで供給された領域からトレイ内に配置するタスクを行う場合について説明する。ここではユーザーが移動させる対象物体の単位は１つとして説明するが、複数を１単位として扱ってもよい。ユーザーへの指示を行う手段は、例えば音声、ＧＵＩ、プロジェクション、ＭＲ、ＡＲ、ＶＲなどである。音声の場合、スピーカーがユーザーに対象物体４１を目標領域へ運搬させるようにアナウンスを発する。なお、図１７におけるＳ１７０３も同様の処理を行う。
【００４０】
図５のようなＧＵＩの場合、ディスプレイにユーザーが対象物体４１を目標領域へ移動させることを示す。ディスプレイ５に、供給領域から対象物体を目標領域に移動させるよう矢印で表現したイラストを表示する。または、「物体を供給領域から目標領域に移動させてください」といった文字情報を表示する。ユーザーにとっては画面で確認できるのでわかりやすい。図６のようにプロジェクションの場合、目標領域４２に対してプロジェクタで対象物体４１の画像を投影したり、文字情報を投影したりする。ユーザーにとっては実物を見ながら作業できるといったメリットがある。図７のようにＭＲ、ＡＲ、ＶＲの場合、現実空間あるいは仮想空間の目標領域４２に対してＨＭＤやＡＲグラスで対象物体４１の画像を強調するよう重畳表示したり、文字情報を表示したりする。
【００４１】
Ｓ７では、撮像装置２が、ユーザーによって対象物体の１単位分が配置された目標領域４２を含むシーンを撮像する。Ｓ４では、まだ対象物体４１が１つも目標領域に配置されていない状態であったが、Ｓ７ではユーザーにより対象物体が１単位分だけ目標領域へ配置されている状態である。なお、Ｓ７はユーザーが対象物体４１の移動を完了した後に撮影する。または、ユーザーが対象物体４１の移動を開始してから撮影し続けてもよい。ユーザーに対象物体４１の移動指示を出してから撮影し続けてもよい。これら以外のタイミングから撮影し続けてもよい。なお、移動完了は、ユーザーがトリガー（「ＯＫ」のように言葉を発する・所定のボタンを押す）を指示装置５に入力するといった操作で判断する。または、システム側で判断（人や物体の動きを画像認識し追従、時間で区切る）するといったことができる。このような移動完了をシステムに入力することによって、安全に作業ができる。
【００４２】
Ｓ８では、取得部２０１が、ユーザーによる所定の動作を行った後の目標領域４２の状態を撮像した第２の視覚情報を取得する。例えば、図８（ａ）は初期状態であり、図８（ｂ）はユーザーによって対象物体が配置された状態である。第２の視覚情報が撮像するシーンには、ユーザーによって対象物体の１単位分が配置された配置領域４２ａが含まれる。第２の視覚情報は、推定部２０３に送られる。なお、図１７におけるＳ１７０４も同様の処理を行う。
【００４３】
Ｓ９では、推定部２０３が、Ｓ５で取得された第１の視覚情報と、Ｓ８で取得された第２の視覚情報に基づいて、対象物体が配置された領域（第１の領域）を推定する（第１の推定）。ここで、第１の領域は、ここでは物体を俯瞰した際に認識できる物体の形状と一致する。物体の領域を推定する方法は、例えば対象物体４１を目標領域４２に含まれる任意の配置領域に配置する前後の画像、すなわち第１の視覚情報と第２の視覚情報とから背景差分を取得する。図８のように、対象物体４１が目標領域４２に配置されたとき、撮像装置２により目標領域４２の上から撮影を行った場合、対象物体４１の目標領域４２への運搬前後で図９の画像８２のような差分画像を取得する。このとき、運搬後の画像８１（第２の視覚情報）と運搬前の画像８０（第１の視覚情報）の差分を取り、対象物体４１を求める。画像８０は、第１の視覚情報であって、対象物体が配置される前の目標領域を撮像した画像である。画像８１は、第２の視覚情報であって、ユーザーによって対象物体の１単位分が配置された目標領域を撮像した画像である。今回は対象物体を左上に配置しているが、左上、右下、右上の領域のいずれかに対象物体を配置していればよい。画像８２は対象物体４１の移動前後の目標領域４２の画像の差分により求めた対象物体４１である。具体的には、対象物体４１について、カラー画像よりテクスチャ情報を、距離情報より上面の領域と高さ情報を求めることができる。これらの情報により、対象物体４１の領域を推定する。対象物体４１の領域を画像から推定することによって、対象物体の領域データがなくてもユーザーは簡単にセットアップができる。なお、図１７におけるＳ１７０５も同様の処理を行う。
【００４４】
Ｓ１０では、推定部２０３が、Ｓ８で取得された第２の視覚情報と、Ｓ９で推定された対象物体の領域の特徴とに基づいて、第１の領域とは異なる領域で物体を配置することが可能な複数の第２の領域を推定する（第２の推定）。本実施形態で説明するロボットは、対象物体を目標領域に整列して並べるタスクを実行する。このタスクではユーザーによって配置された１つめの対象物体と同じ位置に対象物体を置くことはできない。すなわち、１つめの対象物体とは異なる位置に次の物体を配置する必要がある。図１０は、画像から配置位置の候補を推定する処理を説明する図である。画像８３は、第２の視覚情報であって、画像において９０の斜線部分は対象物体が配置された領域である。斜線部分９０は、図９における画像８２すなわち第１の視覚情報および第２の視覚情報から差分をとった画像を用いて推定される。次に、第１の視覚情報において、斜線部分９０に対応する領域における画像特徴を抽出する。抽出された画像特徴を第１の視覚情報においてテンプレートマッチングする。この処理によって抽出された画像特徴が一致する領域の中心位置を配置領域の候補として採用する。画像８４は、推定結果を示す画像である。配置領域の候補は、領域９１に示す部分領域の中心点となる。求めた部分領域を対象物体が配置される領域として推定する。なお、ここでは目標領域から抽出された領域の中心を配置領域として推定する。また、画像特徴を使ったテンプレートマッチング以外にも、デプスカメラによって奥行情報を得られる場合は、物体が配置された領域と対応する領域の奥行情報と合致する領域を推定する。または、ディープラーニングによって配置領域の候補を推定しても良い。ディープラーニングで配置領域を推定する方法は、例えば、画像を入力として、配置領域を出力とするように学習する。図１８は、学習用の入力画像と、ラベル付けした画像である。図１８の８３において、４２ａ〜ｄが配置領域であるとする。事前に学習を行う場合、ユーザーは、図１８の８４の４２ａ〜ｄの斜線部分のように、配置領域に対して対象物体が配置可能であることを示すラベルを付ける。こうすることで、画像が入力された際、画像のうちのどの領域が配置領域であるかを学習する。なお、必ずしもユーザーによる事前学習は必要ではなく、まずは前記のようにテンプレートマッチングを使った方法によってシステムを運用しながら入力画像と配置領域の結果のデータを収集し、十分にデータが集まったら学習を行ってもいい。領域を推定する方法としては、例えばＣＮＮ（Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ）を学習モデルとして用いる。また、学習用に収集したデータはそのまま使わず、拡大・縮小やガンマ補正、並進・回転移動などのデータ拡張を加えてもよい。なお、図１７におけるＳ１７０６も同様の処理を行う。
【００４５】
Ｓ１１では、取得部２０１が、対象物体４１がばら積みされている供給領域を含むシーンを撮像する際の撮像装置の位置姿勢を取得する。取得された第２の位置は、コントローラ４へ送る。撮像装置の位置（および姿勢）は、Ｓ５あるいはＳ８で取得した視覚情報から、Ｓ９で決定した結果に基づき決定してもよいし、対象物体４１を撮影することができればどのような方法で決定してもよい。さらに、推定部２０３が、Ｓ９で推定された対象物体の領域と、Ｓ１０で推定された目標領域における対象物体を配置する領域に基づいて、ロボット１０によって運搬される対象物体４１を配置する位置を選択する。図１１を用いてＳ１５の処理を説明する。図１１（ａ）は、ユーザーが移動させた対象物体４１の目標領域４２の目標領域座標系Σｌ１と、対象物体４１の対象物体座標系Σｏ１を示す。ここでは、目標領域４２の左上を目標領域座標系の原点、対象物体４１の重心を対象物体座標系の原点とする。ただし、原点は任意の領域に設定してもよい。ここで、Ｓ１０において次に対象物体を配置する領域４３が求まっているので、まだ対象物体４１が配置されていない領域の中から１箇所を次の設置領域４３として選択する。選択方法は、事前にユーザーが１つ１つ順番を設定する。または、左上から右下に順番に選択するようなルールを設定しておく。あるいは、ランダムに選択する。これら以外の方法で選択してもよい。領域４３を選択したら、Σｌ１を設定した場合と同様に、領域４３における原点を設定する（図１１（ｂ）のΣｌ２）。ここで、対象物体４１は目標領域４２に対して相対的に同じ位置姿勢で配置されるものとする。すると、Σｌ１からΣｏ１への並進・回転移動と同様の移動をΣｌ２に対して考えることで、次にロボット１０により運搬される対象物体４１の目標領域座標系Σｌ２に対する相対的位置姿勢が求まる（図１１（ｃ）のΣｏ２）。以上より、対象物体４１を配置する際の位置姿勢を求める。求めた結果はコントローラ４へ送る。なお、図１７におけるＳ１７０７も同様の処理を行う。
【００４６】
Ｓ１２では、コントローラ４が、供給領域にばら積みされた対象物体４１を含むシーンを撮像するため、撮像装置２をＳ１１で決定された位置姿勢になるようマニピュレータ１の制御を行う。Ｓ１３では、撮像装置２は、供給領域にばら積みされている対象物体４１を撮像する。ここで撮像された画像を第３の視覚情報と呼ぶ。第３の視覚情報を用いて、残っている対象物体についての位置や姿勢の情報を得る。Ｓ１４では、取得部２０１が、撮像装置２によって撮像された対象物体４１の第３の視覚情報を取得する。第３の視覚情報は、推定部２０３に送られる。
【００４７】
Ｓ１５では、推定部２０３が、把持装置によって運搬する対象物体４１（第２の物体）を把持する位置を推定する（第３の推定）。推定部２０３は、第１の視覚情報と第２の視覚情報との差分画像に含まれる画像特徴と第３の視覚情報とをテンプレートマッチングすることによって、対象物体を把持する位置を推定する。例えば、把持装置が吸引式の吸着パッドを有する構成である場合、対象物体の重心を吸着することで対象物体を把持できる。把持する際の位置姿勢の決定方法は、事前に対象物体４１ごとに位置姿勢を設定しておいてもよい。また、ユーザーが音声やＧＵＩ、ＭＲ、ＡＲ、ＶＲなどを利用して指定する。吸着の場合は吸着できそうな平面領域を求める。把持の場合は把持できそうな平行面を求める。または、ディープラーニングによって吸着・把持位置を推定してもよい。例えば、対象物体と、把持装置の情報を入力として、把持・吸着位置を求める。具体的には、まず、Ｓ９により求めた対象物体、事前に設定された把持装置の情報に基づき、対象物体のどの位置をどのように吸着・把持するかのラベルを付けることで学習データを生成する。ラベルを付ける方法は、事前にユーザーが人手作業で行ってもよいし、システムを運用しながら自動で行ってもよい。システムを運用しながら自動で行う方法としては、対象物体を吸着・把持するごとに、対象物体のどの部分を吸着・把持したかと、成否結果を学習データとして収集することによって、正しい吸着・把持位置のラベル付けを行い、学習データを生成する。そして、生成した学習データを用いて学習を行うことで、吸着・把持位置を推定する。推定する方法として、例えばＣＮＮを学習モデルとして用いる。把持位置の推定に画像を用いた学習を適用することによって、より効率的にタスクを設定できる。ただし、これら以外の方法で推定してもよい。
【００４８】
Ｓ１６では、生成部２０４が、対象物体の１単位分を配置可能な第２の領域のいずれかに、供給領域にある対象物体を抽出した物体を運搬するマニピュレータ１の制御値を生成する。具体的には、Ｓ１５で推定された把持位置およびＳ１０で推定された対象物体４１を配置する位置姿勢に基づいて、残りの物体を運搬する制御値を生成する。すでに対象物体が配置されている領域には運搬しないように制御値を生成する。
【００４９】
ここで、Ｓ１６で生成される制御値について、マニピュレータ１を制御するにはＳ１０で推定した配置領域とＳ１５で推定した把持位置をロボット座標系に変換する必要がある。図１２および図１３は、座標系の関係を示す図である。撮像装置２の座標系Σｃ、マニピュレータ１の座標系Σｒ、マニピュレータ１の先端座標系Σｔ、把持装置３の座標系Σｆ、対象物体４１を把持するときの座標系Σｏ、対象物体４１を配置するときの座標系Σｏ’、移動領域の座標系Σｌを統一して扱う。図１２に示すように、作業空間内で基準となる座標系として、ワールド座標系Σｗを設定する。まず、ワールド座標系Σｗからマニピュレータ座標系Σｒまでの変位を（ＲＸ，ＲＹ，ＲＺ）とする。また、マニピュレータ１の姿勢を表す３×３の回転行列をＲＭとする。マニピュレータ座標系Σｒからマニピュレータ先端座標系Σｔまでの変位は（ＴＸ，ＴＹ，ＴＺ）とする。また、マニピュレータ先端の姿勢を表す３×３の回転行列はＴＭとする。さらに、マニピュレータ先端座標系Σｔから把持装置３の座標系Σｆまでの変位は（ＦＸ，ＦＹ，ＦＺ）とする。また、把持装置３の先端の姿勢を表す３×３の回転行列はＦＭとする。なお、把持装置３の先端とは、把持装置３が対象物体４１に接触する部分である。マニピュレータ先端座標系Σｔから撮像装置座標系Σｃまでの変位は（ＣＸ，ＣＹ，ＣＺ）とする。また、撮像装置２の姿勢を表す３×３の回転行列はＣＭとする。さらに、撮像装置座標系Σｃから対象物体４１の対象物体座標系Σｏまでの変位は（ＯＸ，ＯＹ，ＯＺ）とする。また、対象物体４１の姿勢を表す３×３の回転行列はＯＭとする。ここで、ワールド座標系Σｗから見た対象物体４１の変位を（ＷＸ，ＷＹ，ＷＺ）、姿勢を表す３×３の回転行列をＷＭとする。ここで、マニピュレータ１の先端に取り付けられた把持装置３が対象物体４１に接触しているとき、マニピュレータ座標系Σｒからマニピュレータ先端座標系Σｔまでの変位を（ＴＸ１，ＴＹ１，ＴＺ１）とする。マニピュレータ先端の姿勢を表す３×３の回転行列をＴＭ１とすると、以下の数式（１）が成り立つ。
【００５０】
【数１】
2020055096.tif 000003
【００５１】
また、撮像装置２により対象物体４１が撮像されたとき、マニピュレータ座標系Σｒからマニピュレータ先端座標系Σｔまでの変位を（ＴＸ２，ＴＹ２，ＴＺ２）とする。マニピュレータ先端の姿勢を表す３×３の回転行列をＴＭ２とすると、以下の数式（２）が成り立つ。
【００５２】
【数２】
2020055096.tif 000004
【００５３】
上記数式（１）（２）はワールド座標系Σｗにおける対象物体４１の位置姿勢を表しているので、数式（３）が成り立つ。
【００５４】
【数３】
2020055096.tif 000005
【００５５】
数式（３）より、把持時のマニピュレータ１の位置姿勢が求まる。撮像時のマニピュレータ１の位置姿勢、マニピュレータ先端座標系Σｔと撮像装置座標系Σｃの位置姿勢の関係、撮像装置座標系Σｃと対象物体４１の位置姿勢の関係、マニピュレータ先端座標系Σｔと把持装置３の位置姿勢の関係より求まる。よって、撮像装置２が対象物体４１を撮影した画像から、マニピュレータ１が対象物体４１を把持したときのマニピュレータ１の位置姿勢を求めることができる。ここで、各変位、回転行列の求め方の一例を述べる。（ＲＸ，ＲＹ，ＲＺ）、ＲＭは、マニピュレータ１の設置時に、設定したワールド座標系Σｗとの位置関係から求められる。（ＴＸ，ＴＹ，ＴＺ）、ＴＭは、マニピュレータ１の関節角度情報から順運動学によって求められる。（ＦＸ，ＦＹ，ＦＺ）、ＦＭは、把持装置３の寸法から求められる。（ＣＸ，ＣＹ，ＣＺ）、ＣＭは、撮像装置２の寸法から求められる。もしくは、撮像装置２とマニピュレータ１の相対的な位置姿勢関係からキャリブレーションにより求めてもよい。例えば、マニピュレータ１が異なる複数の位置姿勢を取ったそれぞれの状態において、撮像装置２により、既知の２次元マーカーを撮像することによって求まるマニピュレータ１との相対的位置関係を使って求めてもよい。（ＯＸ，ＯＹ，ＯＺ）、ＯＭは、撮像装置２により対象物体４１を撮像することにより求まる。なお、ここではワールド座標系Σｗとマニピュレータ１の座標系Σｒを分けて考えたが、それらを一致させて考えてもよい。
【００５６】
また、ここでは対象物体４１を把持するときの座標系の関係について述べたが、配置するときも同様に考える。Ｓ１０にて配置領域が決定し、Ｓ１５にてΣｌ、Σｏ’の関係が求まるため、Σｏとした部分をΣｌからΣｏ’への変換を考慮して置き換えることで、対象物体４１を配置するときの座標系も同様に導出できるため、マニピュレータ１の制御を行うことができる。Ｓ１７では、コントローラ４が、Ｓ１６で生成された制御値に従って、対象物体４１を供給領域から目標領域に含まれる何れかの配置領域まで運搬するための把持装置３とマニピュレータ１を制御する。まず、把持のための把持装置３の制御を行う。Ｓ１７で求まった把持位置姿勢に基づきマニピュレータ１は把持位置姿勢に移動し、把持装置３は対象物体４１の把持を行う。次いで、対象物体４１を運搬・配置する動作のためのマニピュレータ１の制御を行う。ロボットアームがなるべく余計な動きをしないように、運搬の経由点は事前に設定しておくとよい。そして、Ｓ１６で決定された制御値に基づき、マニピュレータ１は対象物体４１の配置する領域に移動し、対象物体４１を目標領域４２に配置する。
【００５７】
Ｓ１８では、生成部２０４は、次に運搬可能な対象物体４１または、対象物体を配置可能な目標領域４２の第２の領域があるか否かの判定をする。そして、ＣＰＵ２１は、対象物体４１または目標領域４２が存在しない場合には、制御値を生成することを停止し、処理を終了すると判断して図４に示す処理を終了する。対象物体４１と目標領域４２が存在する場合には、処理を継続すると判断してＳ１０に戻る。判定方法は、例えば、Ｓ１４で取得した対象物体４１の画像に基づき対象物体４１の有無を、Ｓ８で取得した画像とＳ１８の把持・運搬・配置回数に基づき目標領域４２の有無を決定し、判定してもよい。または、事前に処理回数を設定しておき、その回数に達したかで判定する。または、対象物体４１の供給領域にセンサを配置しておき、そのセンサ情報から判定する。センサ情報とは、例えば供給領域に重量センサを配置しておき、供給領域の重さを計測することで秤量によって対象物体４１の残りの個数を計測してもよい。あるいは、撮像装置２によって対象物体４１の供給領域を撮影し、得られた画像情報によって判定する。これら以外の方法で判定してもよい。
【００５８】
なお、ただし、情報処理システム１００は必ずしもこのフローチャートで説明するすべてのステップを行わなくてもよい。例えば、撮像装置２が固定されているカメラである場合、撮影位置を決定する必要はないため、Ｓ２またはＳ１１の処理はスキップできる。また、本実施形態では、ロボット１０が待機しているタスク教示時（設定モード）と、ロボット１０が動作しているときのタスク実行時（動作モード）が１つのフローチャート内に両方存在する例について述べた。これは、ロボット１０が、近年、広まりつつある安全柵が不要な協働ロボットである場合、ロボット１０が動作中に人が作業範囲内に入り動作を指示することが想定できるためである。しかし、必ずしも１つのフローチャートで実現する必要はなく、設定モードと動作モードを明確に分離し、異なるフローチャートで実行してもよい。
【００５９】
なお、視覚情報が動画である場合は、動作の見本となるデータを推定する必要がある。その際、動画像からデータを推定する方法のひとつは、ユーザーの手を認識する方法がある。具体的には、ユーザーの手が写りはじめた時点を第１の視覚情報とし、ユーザーの手が消えた時点を第２の視覚情報として抽出する。なお、第１の視覚情報と第２の視覚情報の間の動画像を用いて、運搬方法をロボットに学習させてもよい。もう一つの方法としては、タスク教示動作の開始と終了をユーザーによってＵＩから入力する方法がある。例えば、ボタンやＧＵＩを用いて、開始と終了の指示を入力する。もしくは、音声認識のツールを使って開始と終了をユーザーが声掛けする。
【００６０】
また、第１の視覚情報と第２の視覚情報は他の方法で取得してもよい。例えば、前もって目標領域に対象物体が１つ置かれている状態をつくり、その対象物体を取り除くという動作をユーザーが行う。この場合、初期の対象物体が１つ置かれている状態を第２の視覚情報、タスク教示動作後に空の目標領域を撮像したものを第１の視覚情報として設定することで、目標領域に対象物体を並べる作業を教示できる。また、対象物体を１単位ではなく、複数個で１つのパターンを形成して、そのパターンに従って対象物体を並べるタスクを教示することも可能である。
【００６１】
推定部２０３は、学習モデルを用いた推定を行っても良い。例えば、第１の視覚情報と第２の視覚情報を入力とし、物体の配置領域の候補を出力する学習モデルを使っても良い。
【００６２】
Ｓ９において、対象物体の３次元領域を求める処理について説明したが、３次元領域のうち高さ情報を予め与え、記憶部２００に記憶しておいてもよい。高さ情報は、主に供給領域における物体を把持しにいくときと、目標領域の配置領域に置きにいくときに用いる情報である。対象物体の高さ情報が既知である場合は、Ｓ９における推定部２０３は距離情報から高さ情報の推定は行わない。
【００６３】
Ｓ１０における対象物体の配置領域は所定のルールに従って特定されてもよい。例えば、対象物体の向きを目標領域の天地と揃えて配置することが望ましい。また、対象物体が表裏の向きがある場合、表裏を揃えるように配置領域を決めてよい。また、対象物体に文字が印字されている場合は、その文字が同じ方向に読めるように配置領域を決めるようにする。また、マニピュレータにとっての配置方法が好ましい方が失敗せずに運搬タスクを行える可能性が増える。このような処理によって、工場における部品の梱包といった状況でも、専門家の手を借りずにユーザーの動作によって簡単に設定できる。
【００６４】
Ｓ１５における対象物体の把持位置は所定のルールに従って特定されてもよい。例えば、対象物体の向きを把持領域の天地と揃えて配置することが望ましい。また、対象物体が表裏の向きがある場合、表裏を揃えるように把持位置を決めてよい。また、対象物体に文字が印字されている場合は、その文字が読めるように把持位置を決めるようにする。また、マニピュレータにとっての配置方法が好ましい方が失敗せずに運搬タスクを行える可能性が増える。このような処理によって、工場における部品の梱包といった状況でも、専門家の手を借りずにユーザーの動作によって簡単に設定できる。
【００６５】
以上のように、ロボットに対象物体を並べて配置するタスクを効率的に教示できる。
【００６６】
＜第２の実施形態＞
次に、本発明の第２の実施形態について説明する。
【００６７】
第２の実施形態では、ロボット１０が対象物体４１を運搬する前に、ロボットを実際に動かすことなく、ロボット１０の動作のシミュレーションをユーザーに示す。ユーザーの事前確認を取ってから動く。ロボット１０が供給領域から目標領域まで対象物体を運搬する過程についてもフィードバックを行う。これは例えば、ユーザーが所望した通りにロボットがタスク動作を実行できるか確認したい場合に有効である。また、対象物体が特に高価なものであるといった理由で、失敗をなるべく減らしたい場合に有効な実施形態である。本実施形態において、ランタイム動作とは、ロボット１０が自動で実行する動作のことである。具体的には、ユーザーが対象物体４１の１単位分を動かす動作を終え、ロボット１０が自動で作業を実行する動作のことである。これに対して、タスク教示とは、ユーザーがロボットに教示したいタスクを実行することを指す。
【００６８】
第２の実施形態では、上述した第１実施形態と同様に、まず、対象物体を目標領域へ移動させる前に撮像装置によって目標領域を写した画像または動画を得る。次いで、ユーザーに対象物体を配置領域へ移動させることを指示する。次に、撮像装置によって対象物体が目標領域へ移動した後に目標領域を撮像した画像を得る。そして、対象物体の移動前後の画像に基づいて、次の対象物体を目標領域へ移動させる制御値を生成する。ここで、上述した第１実施形態とは異なり、ランタイム動作の１回目は、ロボットが動作する前に、ロボット１０が対象物体４１を運搬する前に、制御値に基づいて実行されるロボット１０の動作のシミュレーションをユーザーに示す。そして、ユーザーからシミュレーションで行ったロボットの動作が適切か否かの判定を得る。適切でないという判定を得た場合は、対象物体４１をさらにもう１単位分だけ目標領域へ移動させることをユーザーへ指示する。ロボットによるランタイム動作が適切であるという判定を得た場合は、ロボット１０を通常よりも遅く動作させて作業を実行する。こうすることで、ロボット１０が動作する前に、ロボット１０の動作と対象物体４１の移動後の配置領域を事前確認できる。その結果、作業のやり直しが減り、作業の効率化を図る。
【００６９】
図１４は、本実施形態における情報処理システム１１０の機能構成例を示すブロック図である。図１４に示す情報処理システム１１０は、図３に示す情報処理システム１００および情報処理装置２０に対して、確認装置７と、判定部２０５と、が追加されている点と、指示部２１２と、推定部２１３と、の処理が異なる。以下、第１の実施形態と差異がある部分について説明する。
【００７０】
確認装置７は、ロボット１０が対象物体４１を目標領域へ運搬する制御値に基づいたシミュレーションをユーザーへ示し、ユーザーからロボットの動作、すなわち制御値が適切か否かの判定結果を受ける。例えば、ロボット１０の近くに取り付けられている。もしくは、指示装置５と一体化していてもよいし、指示装置５と撮像装置２を利用することで確認装置７としてもよい。この確認装置７は、例えばマイクにより構成され、指示装置５により示された対象物体４１を目標領域へ移動させるためのロボット１０のシミュレーション動作をユーザーが確認した後、ユーザーが発する音声を聞き取ることにより、判定結果を受ける。または、指示装置５と１体化してロボット１０の近くに取り付けられたディスプレイや持ち運びできるタブレット端末により構成される。この場合、ＧＵＩにより示された対象物体４１を目標領域へ移動させるためのロボット１０の操作をユーザーが確認した後、タッチパネルによりＧＵＩで判定結果を受ける。または、カメラにより構成され、プロジェクタ、ＨＭＤ、ＡＲグラスなどにより示された対象物体４１を目標状態へ移動させるためのロボット１０のシミュレーション動作をユーザーが確認した後、ユーザーのジェスチャ操作により判定結果を受ける。または、これら以外の方法でも、ユーザーの判定結果を受けられる方法であれば他の方法でもよい。
【００７１】
指示部２１２は、取得部２０１から取得した画像に基づいて、ユーザーへ所定の動作をするよう指示を行う。具体的には、指示部２１２は、供給領域４１か目標領域４２の画像を取得したら、ユーザーに対象物体４１を目標領域へ移動させることをユーザーに指示するため、指示装置５に指示トリガーを送る。また、推定部２１３において、ロボット１０のシミュレーションが適切でないとユーザーによって判定された場合は、推定部２１３からの指令に基づき、指示装置５に指示トリガーを送る。
【００７２】
推定部２１３は、取得部２０１から取得した視覚情報に基づいて、把持装置によって運搬する対象物体の領域を推定する。また、視覚情報と、推定された対象物体の領域とに基づいて、目標領域に物体が置かれた領域の画像特徴を用いて対象物体を配置する位置を推定する。例えば、決定した対象物体４１を目標領域に含まれるいずれかの配置領域へ移動させるためのロボット１０の動作をユーザーへ示すため、推定部２１３はコントローラ４に制御値を送る。コントローラ４はマニピュレータ１を制御する前に、判定部２０５にシミュレーションを実行するための動作情報を送る。なお、動作情報の候補が複数ある場合、ロボット１０が実際に動作するときは、対象物体４１を目標領域へ移動させられる確率が最も高い動作情報を実行するが、判定部２０５へは候補の動作情報を複数送ってもよい。その場合はタスクの成功確率が高い動作情報を優先することによって、判定部２０５では確率が高い順にユーザーが動作情報を確認できるようにする。
【００７３】
また、取得部２１１は、コントローラ４が判定部２０５にシミュレーションを実行するための動作情報を送った後、判定部２０５から動作が適切か否かのユーザーからの判定結果を取得する。動作情報とは、ロボット１０が対象物体４１を目標領域へ移動させるための制御を実行する動作に関する情報であり、マニピュレータ１および把持装置３の移動する軌跡や速度といった物理的な変化に関する情報を含む。適切でないという判定を得た場合は、対象物体４１をさらにもう１つ目標領域へ移動させることをユーザーへ指示するため、指示部２１２に指令を送る。適切であるという判定を得た場合は、ロボット１０を通常よりも遅く動作させて作業を実行するよう制御する。
【００７４】
判定部２０５は、ロボット１０の動作情報に基づいて所定の動作のシミュレーションを実行した場合、ユーザーから制御値に基づいて実行されるシミュレーションが適切か否かの判定結果を受ける。ユーザーへ示すシミュレーションの内容は、ロボット１０が対象物体４１を操作するときにどのような軌跡をとるかといった移動完了までの動作の途中経過の情報や、どのような位置姿勢で対象物体４１を配置するかといった移動完了状態の情報である。事前判定部２０４は、コントローラ４からロボット１０のシミュレーションを実行するための情報を受け取ったら、ユーザーへ示し、判定結果を得るために確認装置７へ確認トリガーを送る。ただし、動作情報をユーザーへ示す際に指示装置５を利用する場合は指示装置５に確認トリガーを送る。ユーザーから判定結果を受け取ったら、推定部２１３に判定結果を送る。
【００７５】
本実施形態における情報処理システム１１０が実行する処理を示すフローチャートを図１５として示す。第１の実施形態に示した図４と処理内容が異なる部分があるため、それぞれについて説明する。
【００７６】
Ｓ６では、指示部２１２が、ユーザーに対して所定の動作を行うよう指示を行うため指示装置５に指示トリガーを送る。指示部２１２が、ユーザーへ示したロボット１０のシミュレーションが適切でないという判定結果に基づき指令を取得部２１１から取得したら、指示部２１２は、さらに対象物体４１を目標領域へ移動させることを指示装置５によりユーザーに指示する。このとき、ユーザーはなるべく精度良く物体を配置する。図１９は、ディスプレイにユーザーへの指示を表示する場合のＧＵＩの例である。
【００７７】
Ｓ２０では、判定部２０５が、ランタイム動作（ロボットによる物体運搬タスク）の１回目かどうかの判定をする。１回目でない場合は、Ｓ１７のマニピュレータ・把持制御を行う。１回目である場合は、Ｓ２１に進み、Ｓ１６までに決定したロボット１０の動作をシミュレーションとしてユーザーに示し、判定結果を得る処理を行う。
【００７８】
Ｓ２１では、指示部２０２が、ロボット１０が対象物体４１を配置領域へ移動させるシミュレーションをユーザーへ示し、ユーザーから対象物体４１の移動が適切か否かの判定結果を受け付ける。Ｓ１６までに決定したロボット１０の制御をユーザーに確認するために行う。ここで、ロボット１０が対象物体４１を目標状態へ移動させるためのシミュレーションをユーザーへ示す方法としては、Ｓ６の指示方法のように、音声、ＧＵＩ、プロジェクション、ＭＲ、ＡＲ、ＶＲなどを利用する。例えば、音声でロボット１０が対象物体４１のどの部分を把持し、どのように運搬し、どこに配置するかといった情報をユーザーに示す。ＧＵＩの場合は、ディスプレイにロボット１０の動作シミュレーションを表示してユーザーに示す。図２０は、ディスプレイにシミュレーション結果を示し、ユーザーへの判定を得る場合のＧＵＩの例である。ユーザーは、シミュレーション結果が正しければＯＫを、間違っていればＮＧボタンを押下する。プロジェクションの場合は、目標領域４２に対して対象物体４１をプロジェクションマッピングの要領で表示してユーザーに示す。ＭＲ、ＡＲ、ＶＲの場合は現実空間あるいは仮想空間において、ロボット１０が対象物体４１を運搬及び配置する様子の動作シミュレーションを重畳表示することによってユーザーに示す。
【００７９】
Ｓ２２では、判定部２０５が、Ｓ２１でユーザーから受け付けた事前確認結果に基づき、ロボット１０の制御値が適切かどうかを判定する。適切であるという判定を得た場合は、Ｓ２３に移行する。適切でないという判定を得た場合はＳ６に移行する。
【００８０】
Ｓ２３では、コントローラ４が、対象物体４１を移動するためのマニピュレータ１の制御を行う。その際、１回目のランタイム動作のため、ユーザーが事前確認で適切であると判定した動作が本当に適切かどうかを実機でも確認できるように、ロボット１０が通常よりも遅い速度で動作するように制御する。
【００８１】
以上のように、本実施形態では、ロボット１０が決定した動作をロボット１０が動作する前に制御値に基づいたシミュレーションをユーザーへ示し、ロボット１０による対象物体を目標領域へ移動させる動作が適切かどうかの判定を得る。適切でないという判定を得た場合は、対象物体４１をさらにもう１つ目標領域へ移動させることをユーザーへ指示する。教示データを増やすことによって推定精度をさせることが期待できる。また、適切であるという判定を得た場合は、ロボット１０を通常よりも遅く動作させて作業を実行する。
【００８２】
第２の実施形態によれば、ロボット１０が動作する前に、ロボット１０の動作と対象物体４１の移動後の状態を事前確認できるため、作業のやり直しが減る。その結果、作業の効率化が図れる。
【００８３】
＜第３の実施形態＞
次に、本発明の第３の実施形態について説明する。第３の実施形態では、上述した第１の実施形態に対して、さらに、ロボット１０が対象物体４１を移動した後に、対象物体４１が所望の目標領域に配置されたか否かをユーザーによって事後確認できるよう構成したものである。ユーザーが教示したタスクをロボットが実行できないケースについて、原因は複数考えられる。ひとつは、ユーザーの教示が好ましくなかった場合である。具体的には、ユーザーが対象物体を配置した位置がずれている、間違っていた場合である。この場合、ユーザーが動作を教示する際に対象物体を正確な位置に再配置することで改善する。また、推定部２０３における推定処理が上手くいかない場合も考えられる。例えば、対象物体のテンプレートを作る際に、光の反射が影響し、物体の領域データがうまく得られないケースである。この場合は、複数回教示動作を試行することによって改善する可能性がある。このような原因を克服するために、本実施形態ではロボットが実際に行った動作を改善するようにタスクの教示をユーザーが行う。こうすることで、ロボット１０が誤った動作を行ってもその場で容易に修正できるため、作業の効率化が図れる。
【００８４】
具体的には、ランタイム動作の１回目の場合は、ユーザーによって対象物体４１が目標領域に配置されたか否かを事後確認できる。適切であるという結果を得た場合は、そのまま処理を継続する。適切ではないという結果を得た場合は、目標領域へ適切に移動させることができなかった対象物体を適切な状態へ移動させることをユーザーへ指示する。移動結果に基づき、ロボット１０は対象物体４１の目標領域への移動方法を修正する。
【００８５】
図１４は、本実施形態における情報処理システム１１０の機能構成例を示すブロック図である。図１４に示す情報処理システム１１０は、図３に示す情報処理システム１００に対して、確認装置７と、判定部２０５と、が追加されている点と、取得部２１１と指示部２１２の処理が異なる。ただし、確認装置７は第２の実施形態で述べたものと同じである。
【００８６】
取得部２１１が、タスク教示時の場合、対象物体４１の目標状態への移動結果が適切かどうかをユーザーによって判定されたフィードバックを取得する。フィードバックは、ユーザーが実際の状態を確認した結果をコントローラ等に入力することで行う。ロボット１０が動作を実行し終えたら、取得部２０１から事後確認の判定結果を取得する。動作が適切であるという判定を得た場合は、そのまま処理を継続する。適切ではないと判定された場合は、対象物体４１を適切な状態へ移動させるようユーザーへ指示するため、指示部２１２に指令を送る。
【００８７】
判定部２０５は、対象物体が適切に運搬されたか否かについてのユーザーのフィードバックに基づいて、生成された制御値が適切か否かを判定する。ユーザーへの確認は、ランタイムの１回目か、前回のランタイム動作で失敗した場合に行う。判定は、対象物体がどこに配置されたかを確認することで行う。例えば、ピックアンドプレースで対象物体４１を所定の位置に配置するタスクの場合、対象物体４１が所定の位置に置かれていればユーザーは移動が適切であると判定する。しかし、対象物体４１が所定の位置からずれていたり、対象物体４１ではない別の物体を運搬していたりした場合は、ユーザーは移動が適切ではないと判定する。判定結果は推定部２１３に送る。
【００８８】
指示部２１２は、推定部２１３からの指示トリガーに基づき、対象物体４１を適切な目標領域へ移動させるように指示装置５に指示トリガーを送る。
【００８９】
本実施形態における情報処理システム１１０が実行する処理を示すフローチャートを図１６に示す。第１の実施形態に示した図３と処理内容が異なる部分があるため、それぞれについて説明する。
【００９０】
Ｓ２０では、判定部２０５が、ランタイム動作の１回目かどうかの判定をする。１回目でない場合は、Ｓ２４の判定処理を行う。１回目である場合は、Ｓ２５に移行し、ユーザーへシミュレーションの確認を行う。ただし、ランタイム動作の複数回目もチェックしたい場合は、ここでの回数を２回目、３回目と別の回数で設定しておいてもよく、必ずしもランタイム動作の１回目だけＳ２５に移行する設定にしなくてもよい。
【００９１】
Ｓ２４では、判定部２０５が、前回のランタイム動作が成功したかどうかの判定を行う。成功している場合はＳ１９の処理を行う。失敗している場合はＳ２５に移行し、ユーザーへ操作結果の確認を行う。これは、ランタイム動作の１回目では対象物体４１を目標領域へ移動できたが、２回目で失敗してしまったという場合でも確認を行えるようにするためである。また、フローチャートには前回のランタイム動作の成否に基づき次の処理を決定するよう記載しているが、失敗回数を考慮してもよい。例えば、同じ対象物体４１を運搬するにあたり、連続で２回失敗した場合は作業を中断し、ロボット１０を停止し、オペレータを呼ぶといった処理を行ってもよい。これは、この後の処理でユーザーへ再度、対象物体４１を適切な状態へ移動させるよう指示を行う。複数回の指示でも適切な動作を決定できない場合は動作決定が困難な状況だったり、システムの故障により適切な動作をできなかったりする可能性があるためである。
【００９２】
Ｓ２５では、取得部２１１が、ロボットによる対象物体４１の目標領域に移動させる動作が適切かどうかをユーザーによって判定されたフィードバックを取得する。フィードバックは、ユーザーが実際の状態を確認した結果をコントローラ等に入力することで行う。具体的には、物体を運搬するタスクである場合、物体を所望の場所に配置できたかどうかを確認する。図２１は、ディスプレイでユーザーへの確認を行う場合のＧＵＩの画面の例である。ユーザーへの確認のタイミングの指示は、コントローラ４がロボット１０の制御を終えたら制御完了トリガーを指示部２１２へ送り、指示部２１２が指示装置５からの入力を利用することで行ってもよいし、他の方法でもよい。ユーザーが指示装置５から指示を受けて判定結果を入力したら、確認装置７が判定結果を受けて、判定結果情報を判定部２０５が受け取り、判定結果を推定部２１３へ送る。
【００９３】
Ｓ２６では、判定部２０５が、ロボットによる対象物体４１の目標領域に移動させる動作が適切であったかどうかの判定をする。判定部２０５がＳ２５でユーザーから入力されたフィードバックを取得し、そのフィードバックに基づき次の処理を決定する。判定結果が適切である場合は、Ｓ１９の処理へ移行する。適切でない場合は、Ｓ２７の処理へ移行し、ロボット１０の動作を修正する処理を行う。
【００９４】
Ｓ２７では、指示部２１２が、対象物体４１の適切な状態への移動をユーザーに指示する。推定部２１３が対象物体４１の目標領域への運搬が適切ではなかったという判定結果を取得したら、ロボット１０の適切な動作を決定するため、不足している情報を補う必要がある。例えば、改めて正しい移動状態を認識するため、再度ユーザーへ対象物体４１の目標状態への移動方法を再現してもらう。なお、ユーザーが行う動作は、Ｓ６において実施したタスク教示と同じ動作でなくてもよい。例えば、対象物体を把持する位置を修正する必要があれば、ユーザーは対象物体を把持する位置を教示する。これは情報処理装置２０が把持位置として対象物体の重心を設定することをデフォルトのルールで与えている場合に有効である。図２２は、ディスプレイでユーザーに把持位置を教示してもらう場合のＧＵＩの画面の例である。把持する箇所をマウスでクリックしてもらったり、タッチパネルでタップしてもらったりすることで把持位置を教示してもらう。ロボットがタスクを失敗した原因がわかっている場合には、このようなフィードバックを与えることでタスク動作の失敗を減らすことが期待できる。指示部２１３は、ユーザーへ指示を行うため、指示装置５に指示トリガーを送る。その後、Ｓ７へ移行し、処理を継続する。
【００９５】
以上のように、本実施形態では、生成された制御値に基づいて実行したロボット１０の動作をその場でユーザーが判定し、誤っている場合はその場で修正する。ロボット１０が誤った動作を行ってもその場で容易に修正できるため、作業の効率化が図れる。
【００９６】
＜その他の実施形態＞
第１から第３の実施形態において、ユーザーが対象物体４１を移動させるとき、必ずしも初期状態から目標状態へ移動させなくてもいい。目標状態から初期状態へ移動させてもいい。例えば、ピックアンドプレースを行う場合、必ずしもピックする供給位置からプレースする配置領域へ移動させなくても良い。配置領域にある対象物体４１を供給位置へ移動させてもいい。ただし、その場合は移動前に目標領域に含まれる配置領域に物体が配置されてある状態になっていること、移動後が初期状態であることを情報処理装置２０に入力する。また、必ずしも初期状態から移動させなくても良い。初期状態が別の方法で分かるのであれば、途中の状態から移動させても良い。初期状態が別の方法で分かる例としては、対象物体４１の供給状態が常に一定で、情報処理システム２０もそのことを認識した上で処理を行う場合である。
【００９７】
第１から第３の実施形態において、取得する視覚情報は静止画でも動画でもよい。また、動画の場合、撮影開始と終了のタイミングは手動で設定するか、自動で設定する。手動で設定する場合は、開始、終了のタイミングでユーザーからトリガーを入力したり、予め決めた時間に基づき設定したりしてもよい。自動で設定する場合は、画像中の物体の動きをトラッキングすることによって、動き始めたら開始、止まったら終了としたり、ユーザーの手を認識して画像中に手がある間は撮影したりといった方法をとってもよい。
【符号の説明】
【００９８】
１  マニピュレータ
２  撮像装置
３  把持装置
４  コントローラ
５  指示装置
６  光源
１０  ロボット
２０  情報処理装置
４１  対象物体
４２  目標領域
１００  情報処理システム
【図１】
2020055096.tif 000006
【図２】
2020055096.tif 000007
【図３】
2020055096.tif 000008
【図４】
2020055096.tif 000009
【図５】
2020055096.tif 000010
【図６】
2020055096.tif 000011
【図７】
2020055096.tif 000012
【図８】
2020055096.tif 000013
【図９】
2020055096.tif 000014
【図１０】
2020055096.tif 000015
【図１１】
2020055096.tif 000016
【図１２】
2020055096.tif 000017
【図１３】
2020055096.tif 000018
【図１４】
2020055096.tif 000019
【図１５】
2020055096.tif 000020
【図１６】
2020055096.tif 000021
【図１７】
2020055096.tif 000022
【図１８】
2020055096.tif 000023
【図１９】
2020055096.tif 000024
【図２０】
2020055096.tif 000025
【図２１】
2020055096.tif 000026
【図２２】
2020055096.tif 000027