(57)【要約】【課題】  ワークが撮像された撮像画像を用いることで、精度の高い教示を可能にし、且つ当該教示に基づいて妥当性の高いシナリオ情報を生成する情報処理装置、ロボット、シナリオ情報生成方法及びプログラム等を提供すること。【解決手段】  情報処理装置１００は、ワーク２０が撮像された撮像画像を取得する撮像画像取得部１１０と、取得した撮像画像からワーク２０の３次元位置情報を求める位置情報取得部（３次元位置情報取得部１３０）と、３次元位置情報に基づいて、ロボットにワーク２０を移動させるための複数の命令を含むシナリオ情報を生成するシナリオ情報生成部１５０を含む。【選択図】      図３
2015054378.tif 000002
【特許請求の範囲】
【請求項１】
ワークが撮像された撮像画像を取得する撮像画像取得部と、
取得した前記撮像画像から前記ワークの３次元位置情報を求める位置情報取得部と、
前記３次元位置情報に基づいて、ロボットに前記ワークを移動させるための複数の命令を含むシナリオ情報を生成するシナリオ情報生成部と、
を含むことを特徴とする情報処理装置。
【請求項２】
請求項１において、
前記撮像画像取得部は、
移動する前記ワークを複数回撮像した時系列の前記撮像画像を取得し、
前記位置情報取得部は、
前記複数回撮像した時系列の前記撮像画像から、前記ワークの前記３次元位置情報を求めることを特徴とする情報処理装置。
【請求項３】
請求項１又は２において、
前記シナリオ情報生成部は、
前記ロボットの可動部分の可動範囲情報に基づいて、前記シナリオ情報を生成することを特徴とする情報処理装置。
【請求項４】
請求項３において、
前記ロボットは、
各アームがエンドエフェクターを有する複数のアームを含み、
前記シナリオ情報生成部は、
前記エンドエフェクターの前記可動範囲情報と、前記３次元位置情報とに基づいて、前記エンドエフェクターが前記３次元位置情報により表される３次元位置に到達できるアームを前記複数のアームから特定し、特定された前記アームに設けられる前記エンドエフェクターを、前記３次元位置情報により表される前記３次元位置に移動させる前記命令を含む前記シナリオ情報を生成することを特徴とする情報処理装置。
【請求項５】
請求項４において、
前記エンドエフェクターの前記可動範囲情報と前記３次元位置情報とに基づいて、前記複数のアームのうち前記ワークを把持している第１のアームに設けられる第１のエンドエフェクターが前記３次元位置に到達できず、且つ前記第１のアームとは異なる第２のアームに設けられる第２のエンドエフェクターが前記３次元位置に到達できると判定された場合に、
前記シナリオ情報生成部は、
前記ワークを前記第１のエンドエフェクターから前記第２のエンドエフェクターに持ち替える持ち替え命令と、前記ワークを把持した前記第２のエンドエフェクターを前記３次元位置に移動させる移動命令と、を含む前記シナリオ情報を生成することを特徴とする情報処理装置。
【請求項６】
請求項５において、
前記シナリオ情報生成部は、
前記第２のエンドエフェクターを持ち替え位置まで移動させる移動命令と、前記第２のエンドエフェクターにより前記ワークを把持する把持命令と、前記第１のエンドエフェクターから前記ワークを解放する解放命令とを、前記持ち替え命令として生成することを特徴とする情報処理装置。
【請求項７】
請求項１乃至６のいずれかにおいて、
前記位置情報取得部は、
前記３次元位置情報を求める処理の処理結果を、ユーザーに確認させるための確認画面情報を生成する確認画面情報生成部を含むことを特徴とする情報処理装置。
【請求項８】
請求項７において、
前記位置情報取得部は、
前記確認画面情報の提示に対してユーザーから入力される編集情報を取得し、取得した前記編集情報に基づいて、前記３次元位置情報を求める処理の前記処理結果に対する編集処理を行う編集処理部を含むことを特徴とする情報処理装置。
【請求項９】
請求項１乃至８のいずれかにおいて、
前記シナリオ情報生成部は、
前記３次元位置情報をパラメーターとする把持命令、移動命令及び解放命令の少なくとも１つから構成される前記シナリオ情報を生成することを特徴とする情報処理装置。
【請求項１０】
請求項９において、
前記シナリオ情報生成部は、
前記ロボットによる前記ワークの把持状態を表す状態変数に基づいて、前記把持命令、前記移動命令、前記解放命令のうちから、前記３次元位置情報をパラメーターとする前記命令を選択することを特徴とする情報処理装置。
【請求項１１】
請求項９又は１０において、
前記シナリオ情報生成部は、
前記ワークの移動経路に沿った各３次元位置情報を処理対象として、前記３次元位置情報をパラメーターとする前記命令の生成処理を行い、前記処理対象となる前記３次元位置情報がないと判定された場合に、前記命令として前記解放命令を選択することを特徴とする情報処理装置。
【請求項１２】
請求項１乃至１１のいずれかに記載の情報処理装置を含むことを特徴とするロボット。
【請求項１３】
ユーザーがワークを所与の移動経路に沿って移動させた状態を撮像部により撮像し、
撮像により得られた撮像画像に基づいて前記ワークの３次元位置情報を求め、
求めた３次元位置情報に基づいて、ロボットに前記ワークを前記移動経路に沿って移動させるため複数の命令を含むシナリオ情報を生成する、
ことを特徴とするシナリオ情報生成方法。
【請求項１４】
ワークが撮像された撮像画像を取得する撮像画像取得部と、
取得した前記撮像画像から前記ワークの３次元位置情報を求める位置情報取得部と、
前記３次元位置情報に基づいて、ロボットに前記ワークを移動させるための複数の命令を含むシナリオ情報を生成するシナリオ情報生成部として、
コンピューターを機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、ロボット、シナリオ情報生成方法及びプログラム等に関する。
【背景技術】
【０００２】
ロボットに対して所望の動作を行わせるために、ユーザーによる教示を用いる手法が広く知られている。例えば、アーム及びハンドを有するロボットに対して、初期位置にあるワークを把持し、目標位置まで移動させる作業を行わせようとした場合には、種々の情報を教示しなければ、ロボットに当該動作を行わせることはできない。具体的には、ロボットにとってはワークの初期位置や目標位置は自明な情報とは言えないため、それらをユーザーが教示する必要がある。また、初期位置と目標位置との間の移動経路も、そのままでは多数の経路が候補となってしまうため、所望の移動経路を教示する、或いは移動経路を限定するための中間点を教示する等の作業が必要となる。
【０００３】
ただし、アーム等に含まれるモーター（広義にはアクチュエーター）の動作パラメーターを、当該モーターの制御タイミングごとに１つ１つ決定していくような手法では、入力する情報量が非常に多く、且つ入力する動作パラメーターも専門的なユーザーでなくては決定できないため、ユーザー負担が大きい。そのため、従来手法においても、ユーザーにとってわかりやすく負担の小さい形態で、ロボットに対して所望の動作を行わせるための情報を入力する教示手法が知られている。
【０００４】
例えば特許文献１では、指示手段によって教示位置を指し示し、指示方向に存在する床面や壁面や物体平面との交点を求め、求めた交点を教示位置として特定するロボットの教示方法が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−３２２２９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１の手法では、指示手段を撮像することで、当該指示手段により示される指示方向を計測し、当該指示方向の延長線上（狭義には指示方向と床面等との交点）を教示位置としている。しかし、撮像画像から指示方向を求める処理も、当該指示方向と何らかの面との交点を求める処理もある程度大きな誤差を生じうるものであり、求められる教示位置の精度が充分とは言えない。
【０００７】
また、特許文献１では、教示位置を求めた場合や、複数の当該教示位置を補間することで移動経路を求めた場合に、当該位置や移動経路から適切なロボット制御用の情報（狭義にはシナリオ情報）を生成する点には触れられていない。例えば、求めた移動経路がワークの移動経路を示すものである場合、ワークを当該移動経路に沿って移動させるためには、用いるアームの選択等、さらなる条件決定が必要であるが、その決定手法等は開示されていない。
【０００８】
本発明の幾つかの態様によれば、ワークが撮像された撮像画像を用いることで、精度の高い教示を可能にし、且つ当該教示に基づいて妥当性の高いシナリオ情報を生成する情報処理装置、ロボット、シナリオ情報生成方法及びプログラム等を提供することができる。
【課題を解決するための手段】
【０００９】
本発明の一態様は、ワークが撮像された撮像画像を取得する撮像画像取得部と、取得した前記撮像画像から前記ワークの３次元位置情報を求める位置情報取得部と、前記３次元位置情報に基づいて、ロボットに前記ワークを移動させるための複数の命令を含むシナリオ情報を生成するシナリオ情報生成部と、を含む情報処理装置に関係する。
【００１０】
本発明の一態様では、ワークが撮像された撮像画像からワークの３次元位置情報を求め、求めた３次元位置情報を用いてロボット制御に用いるシナリオ情報の生成を行う。これにより、ワークを所望の位置に実際に配置することでワークの位置を教示することができるため、ユーザーによる教示を直感的でわかりやすいものとすること等が可能になる。また、３次元位置情報を用いたシナリオ情報の生成処理を行うことで、ワークの位置を再現するように、当該ワークを移動させるロボット動作を実現すること等も可能になる。
【００１１】
また、本発明の一態様では、前記撮像画像取得部は、移動する前記ワークを複数回撮像した時系列の前記撮像画像を取得し、前記位置情報取得部は、前記複数回撮像した時系列の前記撮像画像から、前記ワークの前記３次元位置情報を求めてもよい。
【００１２】
これにより、時系列の撮像画像を用いることで、ワークの移動経路を教示すること、或いは当該移動経路に沿ってワークを移動させるロボット動作を実現すること等が可能になる。
【００１３】
また、本発明の一態様では、前記シナリオ情報生成部は、前記ロボットの可動部分の可動範囲情報に基づいて、前記シナリオ情報を生成してもよい。
【００１４】
これにより、３次元位置情報に加えて、ロボットの可動範囲情報を用いてシナリオ情報を生成すること等が可能になる。
【００１５】
また、本発明の一態様では、前記ロボットは、各アームがエンドエフェクターを有する複数のアームを含み、前記シナリオ情報生成部は、前記エンドエフェクターの前記可動範囲情報と、前記３次元位置情報とに基づいて、前記エンドエフェクターが前記３次元位置情報により表される３次元位置に到達できるアームを前記複数のアームから特定し、特定された前記アームに設けられる前記エンドエフェクターを、前記３次元位置情報により表される前記３次元位置に移動させる前記命令を含む前記シナリオ情報を生成してもよい。
【００１６】
これにより、ロボットが複数のアームを含み、各アームがエンドエフェクターを有する場合に、エンドエフェクターが３次元位置に到達できるか否かをエンドエフェクターの可動範囲情報に基づいて判定することで、適切なシナリオ情報を生成すること等が可能になる。
【００１７】
また、本発明の一態様では、前記エンドエフェクターの前記可動範囲情報と前記３次元位置情報とに基づいて、前記複数のアームのうち前記ワークを把持している第１のアームに設けられる第１のエンドエフェクターが前記３次元位置に到達できず、且つ前記第１のアームとは異なる第２のアームに設けられる第２のエンドエフェクターが前記３次元位置に到達できると判定された場合に、前記シナリオ情報生成部は、前記ワークを前記第１のエンドエフェクターから前記第２のエンドエフェクターに持ち替える持ち替え命令と、前記ワークを把持した前記第２のエンドエフェクターを前記３次元位置に移動させる移動命令と、を含む前記シナリオ情報を生成してもよい。
【００１８】
これにより、必要に応じて持ち替え命令を含むシナリオ情報を生成すること等が可能になる。
【００１９】
また、本発明の一態様では、前記シナリオ情報生成部は、前記第２のエンドエフェクターを持ち替え位置まで移動させる移動命令と、前記第２のエンドエフェクターにより前記ワークを把持する把持命令と、前記第１のエンドエフェクターから前記ワークを解放する解放命令とを、前記持ち替え命令として生成してもよい。
【００２０】
これにより、移動命令、把持命令、解放命令を組み合わせることで、持ち替え命令を実現すること等が可能になる。
【００２１】
また、本発明の一態様では、前記位置情報取得部は、前記３次元位置情報を求める処理の処理結果を、ユーザーに確認させるための確認画面情報を生成する確認画面情報生成部を含んでもよい。
【００２２】
これにより、位置情報取得部での処理結果を、確認画面情報を用いてユーザーに提示すること等が可能になる。
【００２３】
また、本発明の一態様では、前記位置情報取得部は、前記確認画面情報の提示に対してユーザーから入力される編集情報を取得し、取得した前記編集情報に基づいて、前記３次元位置情報を求める処理の前記処理結果に対する編集処理を行う編集処理部を含んでもよい。
【００２４】
これにより、確認画面情報の提示に基づくユーザーの編集作業を受け付けることで、より精度の高いシナリオ情報を生成すること等が可能になる。
【００２５】
また、本発明の一態様では、前記シナリオ情報生成部は、前記３次元位置情報をパラメーターとする把持命令、移動命令及び解放命令の少なくとも１つから構成される前記シナリオ情報を生成してもよい。
【００２６】
これにより、３次元位置情報をパラメーターとする命令を適宜組み合わせることで、シナリオ情報を生成すること等が可能になる。
【００２７】
また、本発明の一態様では、前記シナリオ情報生成部は、前記ロボットによる前記ワークの把持状態を表す状態変数に基づいて、前記把持命令、前記移動命令、前記解放命令のうちから、前記３次元位置情報をパラメーターとする前記命令を選択してもよい。
【００２８】
これにより、３次元位置情報をパラメーターとする命令の選択を、状態変数に基づいて行うこと等が可能になる。
【００２９】
また、本発明の一態様では、前記シナリオ情報生成部は、前記ワークの移動経路に沿った各３次元位置情報を処理対象として、前記３次元位置情報をパラメーターとする前記命令の生成処理を行い、前記処理対象となる前記３次元位置情報がないと判定された場合に、前記命令として前記解放命令を選択してもよい。
【００３０】
これにより、３次元位置情報を順次処理することでシナリオ情報を生成すること、及び３次元位置情報がない場合に解放命令を選択すること等が可能になる。
【００３１】
また、本発明の他の態様は、上記の情報処理装置を含むロボットに関係する。
【００３２】
また、本発明の他の態様は、ユーザーがワークを所与の移動経路に沿って移動させた状態を撮像部により撮像し、撮像により得られた撮像画像に基づいて前記ワークの３次元位置情報を求め、求めた３次元位置情報に基づいて、ロボットに前記ワークを前記移動経路に沿って移動させるため複数の命令を含むシナリオ情報を生成する、シナリオ情報生成方法に関係する。
【００３３】
また、本発明の他の態様は、ワークが撮像された撮像画像を取得する撮像画像取得部と、取得した前記撮像画像から前記ワークの３次元位置情報を求める位置情報取得部と、前記３次元位置情報に基づいて、ロボットに前記ワークを移動させるための複数の命令を含むシナリオ情報を生成するシナリオ情報生成部として、コンピューターを機能させるプログラムに関係する。
【図面の簡単な説明】
【００３４】
【図１】本実施形態におけるユーザーの教示手法を説明する図。
【図２】３次元位置情報に基づくロボット制御の例。
【図３】本実施形態に係る情報処理装置を含むロボットシステムの例。
【図４】本実施形態に係るロボットの例。
【図５】本実施形態に係るロボットの他の例。
【図６】本実施形態の処理を説明するフローチャート。
【図７】３次元位置情報の取得処理を説明するフローチャート。
【図８】シナリオ情報生成処理を説明するフローチャート。
【図９】３次元位置情報をパラメーターとする命令生成処理を説明するフローチャート。
【図１０】把持命令の生成処理を説明するフローチャート。
【図１１】移動命令の生成処理を説明するフローチャート。
【図１２】図１２（Ａ）は求められる３次元位置情報の例、図１２（Ｂ）はワークの基準位置及び基準姿勢に基づく３次元位置情報の表現例。
【図１３】確認画面情報の具体例。
【図１４】３次元位置情報に基づいて作成されるシナリオ情報の例。
【発明を実施するための形態】
【００３５】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【００３６】
１．本実施形態の手法
まず本実施形態の手法について説明する。ロボットに所望の動作を行わせるためには、当該動作に必要な情報をロボットに与える必要がある。その際、ロボットのアーム等に設けられるモーター（広義にはアクチュエーター）の動作量を細かく規定する、或いはロボットの各関節の関節角の値を細かく規定するといった手法では、入力する情報量が非常に多く、且つ入力する動作パラメーターも専門的なユーザーでなくては決定できないため、ユーザー負担が大きい。そのため、従来手法においても、ユーザーにとってわかりやすく負担の小さい形態で、ロボットに対して所望の動作を行わせるための情報を入力する教示手法が知られている。
【００３７】
ロボットに対する教示においては、ユーザーがロボットのアーム等に力を加えることで、当該アーム等に行わせたい動作をユーザーの手で実現する手法や、ティーチペンダント等の操作部からの操作により、ロボットに行わせたい動作を実現する手法が広く知られている。この場合には、教示時の動作（狭義には関節角の値等）を記憶しておき、実際のロボット動作においては記憶しておいた動作を再現することで、所望の動作をロボットに実行させる。
【００３８】
しかしこれらの手法では、教示時にもロボットの実機を用意する必要がある、或いは教示を行うユーザーの技量によって教示精度が大きく異なる等の課題がある。よって近年では、ユーザーにとってより簡便でわかりやすい教示手法が知られるようになってきた。
【００３９】
例えば特許文献１では、指示手段によって教示位置を指し示し、指示方向に存在する床面や壁面や物体平面との交点を求め、求めた交点を教示位置として特定するロボットの教示方法が開示されている。特許文献１には、教示手段を用いるユーザーと教示位置が離れている場合等でも教示が可能になる等の記載がある。
【００４０】
しかし、特許文献１では指示手段を撮像した撮像画像に基づいて、その指示方向を３次元的に求める必要がある。さらにその指示方向と何らかの面（例えば壁面）との交点を求めなくては教示位置を決定できない。画像情報から３次元的な方向を精度よく求めることは難しく、さらに指示手段と壁面等との距離が大きい場合には、指示方向における誤差が小さかったとしても、求められる教示位置の誤差は大きいものとなってしまう。つまり、特許文献１の手法では、精度の高い位置情報を教示することが困難である。
【００４１】
また特許文献１では、求めた教示位置が、ロボット制御においてどのように用いられるかについて触れられていない。例えば、求められた教示位置を通過するような移動経路を設定できたとして、当該移動経路がロボット本体の移動経路なのか、ロボットに含まれる所与のハンドの移動経路なのか、ロボットにより把持されるワークの移動経路なのかは特許文献１の手法では考慮していない。そのため、教示を行うユーザーにとって、自身の教示動作により、ロボットがどのような動作を実行するかを直感的に把握することが困難な場合も考えられ、必ずしもわかりやすい教示手法とは言えない。
【００４２】
さらに、教示した位置により求められる移動経路がワークの移動経路であると仮定した場合には、さらなる問題も発生する。第１に、ワークの移動経路が決定されたとしても、当該ワークの移動を実現するロボットの動作は種々考えられるため、何らかの条件をさらに決定しなくてはならない。例えば、ロボットが複数のアームを有する多腕ロボットである場合、ワークをどの腕で把持するかを決定しなくては適切なロボット制御はできない。また、ロボットによっては、第１のアームであればワークを上記移動経路で移動できるが、第２のアームではワークを上記移動経路で移動することができない、といった場合も考えられる。つまり、位置の教示によりワークの移動経路を求めるだけでは足らず、当該ワークの移動を実現するロボット動作を規定する必要があるところ、特許文献１等の従来手法ではその点は考慮されていない。
【００４３】
第２に、特許文献１をワークの移動経路の教示に利用したと仮定した場合、当該教示はワークの大きさ等を考慮したものとなっていない。特許文献１等の手法は教示位置を点として決定する。それに対してワークは必ず大きさを有した物体である。そのため、教示に基づいて移動経路が求められた場合、例えば当該移動経路上の点とワーク中の所与の基準点とを対応づける等の処理を行わなければ、当該移動経路に沿ったワークの移動を規定することができない。また、何らかの基準点を決定したとしても、環境に配置された物体（他のワークやロボット、壁や床等）と、ワークとの干渉は考慮されていない。点の集合としての移動経路そのものは、他のワーク等と干渉していなかったとしても、当該移動経路と基準点が一致するように所与のワークを移動させた場合に、当該ワークが他のワークと干渉（衝突）するおそれがある。
【００４４】
以上のことからわかるように、特許文献１等の従来手法では、ワークの移動経路を教示する手法として用いることができるということはそもそも明示されていないし、仮に教示により求められた移動経路をワークの移動経路であると仮定した場合にも、それにより発生する課題に対応する手法が開示されていない。
【００４５】
そこで本出願人は、移動するワークが撮像された時系列の撮像画像に基づいて、当該ワークの移動経路上での３次元位置情報を求めるとともに、求めた３次元位置情報に基づいて、上記移動経路に沿ってワークをロボットにより移動させるためのシナリオ情報を生成する手法を提案する。
【００４６】
具体的には、教示時には図１に示したように、ユーザーに対して所望のワークＡを、所望の移動経路で移動させる作業を行わせる。図１の例であれば、ユーザーはＸ１に置かれていたワークＡを把持し、障害物を避けながらＸ２，Ｘ３を経由してＸ４まで移動する、という作業を行っている。本実施形態ではこのワークＡの移動を、第１の撮像部３０−１と第２の撮像部３０−２を含むステレオカメラ３０で撮像してワークＡの３次元位置情報を取得する。３次元位置情報の取得処理の詳細については後述する。
【００４７】
このような教示形態とすることで、ユーザーは所望のワークの移動経路を当該ワーク自体を用いて直感的に、わかりやすく指示することが可能になる。また、ワークの実物を移動させることになるため、教示された教示位置（及びそこから求められる移動経路）に沿ってワークを移動させた場合に、当該ワークが障害物等に衝突する可能性は低く、安全なワークの移動が可能なロボット制御を実現できる。
【００４８】
また、本実施形態では、求められた３次元位置情報に基づいてシナリオ情報の生成も行う。例えば、ロボットの可動範囲情報に基づいて、ワークの把持に用いるアームを決定する処理等を行ってもよい。このようにすれば、図１の作業をロボットを用いて再現しようとした場合に、図２に示したように、ワークの把持に用いるハンドを適切に決定すること等ができ、教示内容に従った適切なロボット制御が可能になる。図２の例であれば、Ｘ１はＨａｎｄ０が近いからワークＡをＨａｎｄ０で把持する、Ｘ３はＨａｎｄ０では届かないのでワークＡをＨａｎｄ０からＨａｎｄ１に持ち替える等の制御を実現している。シナリオ情報の生成処理についての詳細は後述する。
【００４９】
以下、本実施形態の情報処理装置のシステム構成例を説明し、その後、３次元位置情報の取得処理、及びシナリオ情報の生成処理について詳しく説明する。最後に本実施形態の具体例について述べる。
【００５０】
２．システム構成例
図３に本実施形態に係る情報処理装置１００を含むロボット（ロボットシステム）のシステム構成例を示す。図３に示したように、ロボットは、情報処理装置１００と、ロボット制御装置２００と、ロボット本体３００を含む。ただし、ロボットや情報処理装置１００は、図３の構成に限定されず、これらの一部の構成要素を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
【００５１】
本実施形態では、ユーザー１０により行われるワーク２０の移動を、ステレオカメラ３０により撮像する。ステレオカメラ３０は、図３に示したように第１の撮像部３０−１と、第２の撮像部３０−２を含み、第１の撮像部３０−１からの撮像画像及び第２の撮像部３０−２からの撮像画像を、ステレオ画像として出力する。情報処理装置１００は、ステレオカメラ３０からの出力画像を取得して、ユーザーにより教示されたワーク２０の移動経路に従って、ワーク２０をロボットにより移動させるためのシナリオ情報の生成を行う。なお、図３の例では情報処理装置１００において、シナリオ情報の実行処理も行うものとしているが、これに限定されない。
【００５２】
情報処理装置１００は、図３に示したように、撮像画像取得部１１０と、３次元位置情報取得部１３０（位置情報取得部）と、シナリオ情報生成部１５０と、シナリオプレーヤー（シナリオ実行部）１７０を含む。
【００５３】
撮像画像取得部１１０は、ステレオカメラ３０からの撮像画像を取得する。本実施形態では、ステレオカメラ３０は上述したように、右画像（例えば第１の撮像部３０−１からの撮像画像）と左画像（例えば第２の撮像部３０−２からの撮像画像）から構成されるステレオ画像を出力する。よって撮像画像取得部１１０は、１タイミングにつき１つのステレオ画像を、ユーザー１０によるワーク２０の移動に併せて時系列に取得することになる。
【００５４】
３次元位置情報取得部１３０は、撮像画像取得部１１０が取得した撮像画像に基づいて、ユーザー１０によるワーク２０の移動経路に沿って、ワーク２０の３次元位置情報を求める。３次元位置情報取得部１３０における処理の詳細は後述する。
【００５５】
なお、３次元位置情報取得部１３０は、図３に示したように確認画面情報生成部１３１と、編集処理部１３３を含んでもよい。確認画面情報生成部１３１は、求めた３次元位置情報をユーザー１０に確認させるための確認画面情報を生成する。編集処理部１３３は、確認画面情報を閲覧したユーザー１０による入力を受け付け、３次元位置情報の編集処理を行う。ここでユーザー１０による入力とは、確認画面情報により提示された３次元位置情報に対する、ユーザー１０の編集指示に対応する編集情報である。確認画面情報生成部１３１、編集処理部１３３における処理の詳細についても後述する。
【００５６】
シナリオ情報生成部１５０は、３次元位置情報取得部１３０で求められたワーク２０の３次元位置情報に基づいて、ロボットに対する命令から構成されるシナリオ情報を生成する。ここでの命令とは、具体的にはロボットに対して、ワーク２０をユーザー１０により行われた移動と同様の移動経路で移動させるための命令である。シナリオ情報生成部１５０における処理の詳細は後述する。
【００５７】
また、シナリオ情報生成部１５０は、データベース５０に接続される。データベース５０は、シナリオ情報５１や、ワークデータ５３や、ロボットデータ５５等を記憶する。具体的には、シナリオ情報生成部１５０は、ロボットデータ５５としてロボットの可動範囲情報等を読み出すことで、シナリオ情報の生成を行ってもよい。そして作成されたシナリオ情報を、シナリオ情報５１としてデータベース５０に書き込む。
【００５８】
シナリオプレーヤー１７０は、シナリオ情報生成部１５０で生成されたシナリオ情報の実行処理を行う。生成されるシナリオ情報は例えば図１４の一番右の列に示した情報であり、ロボット制御を実際に行うには抽象的な情報である。よってシナリオプレーヤー１７０では、シナリオ情報に含まれる各命令を順次実行するだけではなく、必要な補間処理等を行って、ロボット制御を可能にする具体的な制御情報の生成等も行ってもよい。例えば、図１４のシナリオ情報であれば、各３次元位置の間の移動経路は特に規定されていないため、この間を補間する処理等を行ってもよい。
【００５９】
ロボット制御装置２００は、シナリオプレーヤー１７０によりシナリオ情報の解釈、実行結果に基づいて、実際にロボット本体３００のハードウェア制御を行う。具体的には、ロボット本体３００に含まれる関節を駆動する各モーターに対して、モーターの動作パラメーター（回転量やトルク等）を指示する制御を行ってもよい。
【００６０】
ロボット本体３００は、ロボット制御装置２００による制御に従って動作し、ワーク２０をユーザー１０による移動と同様の移動経路により移動させる。
【００６１】
ロボット本体３００は、例えば図４に示したように双腕ロボットであってもよい。図４の例では、ロボット本体３００は、第１のアーム３１０と、第２のアーム３２０を含む。そして各アームは、関節３１１，３１３と、関節の間に設けられるフレーム３１５，３１７から構成される。また、アーム３１０の先端にはエンドエフェクター３１９が設けられる。ここでのエンドエフェクター３１９とは、ロボットが作業対象に直接働きかける機構を持つ部分であり、狭義にはハンドであってもよい。
【００６２】
なお、図４では２本のアームを有する双腕ロボットの例を示したが、本実施形態のロボットはこれに限定されない。例えばアームは図５に示すロボットのように１本であってもよい。或いは不図示であるが本実施形態のロボットに含まれるアームは、３本以上であってもよい。また、各アームに含まれる関節やフレームの数も種々の変形実施が可能である。例えば図４のようにシンプルな構成のアームを用いてもよいし、人間の腕に近いとされている６自由度、７自由度のアームを用いてもよい。
【００６３】
また、本実施形態のロボットは、図４に示したようにベースユニット部４００を含んでもよい。ベースユニット部４００は、ロボット本体３００の下部に設けられ、ロボット本体３００を支持する。図４の例では、ベースユニット部４００には車輪等が設けられ、ロボット全体が移動可能な構成となっている。ただし、ベースユニット部４００が車輪等を持たず、床面等に固定される構成であってもよい。そして、本実施形態に係る情報処理装置１００は、ベースユニット部４００に格納されてもよい。この場合、ロボット（ロボットシステム）において、情報処理装置１００とロボット本体３００とが一体として構成されることになる。
【００６４】
ただし、図５に示したように、ロボット本体３００と、情報処理装置１００とが別体として構成されてもよい。なお、図５ではＰＣにより情報処理装置１００を実現する例を示しているが、これに限定されるものではない。
【００６５】
図６に本実施形態の全体処理を説明するフローチャートを示す。この処理が開始されると、まず移動するワークのステレオカメラ３０による撮像が行われる（Ｓ１０１）。Ｓ１０１での撮像は、例えば動画像と同程度の高頻度（３０ｆｐｓ等）で行われてもよいし、３次元位置情報の算出に対応するタイミングだけで行われてもよい。図１の例であれば、Ｘ１とＸ２の間でも高頻度で撮像を行ってもよいし、或いはＸ１，Ｘ２では撮像を行うがその間では撮像を行わないものとしてもよい。
【００６６】
そしてＳ１０１での撮像により取得された撮像画像に基づいて、３次元位置情報を求め（Ｓ１０２）、求めた３次元位置情報に基づいてシナリオ情報を生成する（Ｓ１０３）。Ｓ１０２及びＳ１０３の処理の詳細については後述する。
【００６７】
そしてＳ１０３でのシナリオ情報の生成が成功したかの判定を行い（Ｓ１０４）、成功した場合には、シナリオを実行する（Ｓ１０５）。一方、シナリオ情報の生成に失敗した場合には、シナリオを実行せずに処理を終了する。
【００６８】
３．３次元位置情報の取得
次にワーク２０の３次元位置情報の取得処理について説明する。この処理は図６におけるＳ１０２の処理に相当する。本実施形態では、図１に示したようにユーザー１０によるワーク２０の移動を、ステレオカメラ３０により撮像する。なお、図１ではワーク２０として物体Ａ（ワークＡ）を用いるものとしている。
【００６９】
撮像画像取得部１１０における撮像画像の取得タイミングでは、１タイミング当たり１つのステレオ画像、すなわち右画像１枚と左画像１枚が取得される。ステレオ画像からは公知のステレオマッチング処理により、奥行き方向（ステレオカメラ３０の光軸方向に沿った方向）での距離を求めることができる。つまり、右画像又は左画像におけるワークＡの位置、及びステレオマッチング処理により求められる奥行き方向の距離の両方を用いることで、ワークＡの空間的な位置を表す３次元位置情報を取得することができる。
【００７０】
具体的には、右画像からワークＡが撮像されている領域を、パターンマッチング処理等で抽出する。同様に左画像からワークＡが撮像されている領域を、パターンマッチング処理等で抽出する。右画像中のワークＡの撮像領域、及び左画像中のワークＡの撮像領域の少なくとも一方を用いることで、撮像部の光軸方向に交差する面におけるワークＡの位置を決定できる。これは撮像部から見たときの上下左右方向でのワークＡの位置を求める処理と言うこともできる。
【００７１】
また、右画像中のワークＡの撮像領域の位置と、左画像中のワークＡの撮像領域の位置の差異から視差情報を求めることができ、当該視差情報は奥行き方向での距離に変換可能である。この視差情報を求める処理及び視差情報から距離情報を求める処理は、ステレオマッチング処理として公知であるため詳細な説明は省略する。
【００７２】
以上のことから、１つのステレオ画像により、ワーク２０の３次元位置情報を１つ求めることが可能になる。よって、撮像画像取得部１１０により取得される時系列の撮像画像に対して、上記処理を行うことでワーク２０の移動経路に沿った複数の３次元位置情報を求めることができる。
【００７３】
求められる３次元位置情報の例を図１２（Ａ）に示す。図１２（Ｂ）に示したように、ワーク２０の基準位置を３次元座標（ｘ，ｙ，ｚ）により表し、且つ当該ワーク２０の基準姿勢に対する回転を（ｕ，ｖ，ｗ）とすれば、１つの３次元位置情報は（ｘ，ｙ，ｚ，ｕ，ｖ，ｗ）により表現できる。なお、基準姿勢に対する回転（ｕ，ｖ，ｗ）は、ｘｙｚの各軸まわりの回転であってもよいし、他の軸まわりの回転であってもよい。図１２（Ａ）の例であれば、物体Ａをワーク２０とした場合に、Ｘ１〜Ｘ４の４つの３次元位置情報が求められている。
【００７４】
ただし、上記手法により求めた３次元位置情報の精度が充分でない場合も考えられる。例えば、図１に示したように、ユーザー１０がワークＡを移動させようとすると、当該ワークＡを手で把持する等の動作が必要となる。すると、ユーザー１０の指等により遮蔽されることで、ワークＡの一部が撮像画像に撮像されない場合も生じうる。右画像及び左画像からワークが撮像された領域を抽出する際には、通常全く遮蔽されていないワークのモデル情報をパターンマッチング等に用いる。そのため、遮蔽の度合いによっては右画像、左画像からワークが撮像された領域を抽出する処理の精度が低くなるおそれがあり、結果として求められる３次元位置情報の精度も低下するおそれがある。
【００７５】
そこで本実施形態では、３次元位置情報取得部１３０での処理結果を一度ユーザー１０に対して提示し、ユーザー１０による編集（訂正）を行ってもよい。例えば、図１２（Ａ）に示したように求められた３次元位置情報を示す確認画面情報を生成し、当該確認画面情報を表示部等に表示してもよい。そしてユーザー１０は、表示された確認画面情報を閲覧し、適切でないと判断した３次元位置情報に対して編集を行ってもよい。例えば、図１２（Ａ）に示したように（ｘ，ｙ，ｚ，ｕ，ｖ，ｗ）の値を適宜書き換えてもよい。編集処理部１３３は、ユーザー１０からの入力を編集情報として受け取り、当該編集情報に従って３次元位置情報の編集処理を行う。
【００７６】
しかし、図１２（Ａ）に示したような（ｘ，ｙ，ｚ，ｕ，ｖ，ｗ）で表される３次元位置情報の編集作業は、専門的な知識を有するユーザーでなければ実行が困難である。上述の例であれば、ｘｙｚの各軸はどのように設定されているか、ｘｙｚで表されるワーク２０の基準位置とはワーク中のどの位置であるか、ワーク２０の基準姿勢がどのような姿勢であるか、といった情報を知らなければ、３次元位置情報により表される３次元位置を正確に把握することができず、編集作業を適切に行うこともできない。
【００７７】
よって、確認画面情報生成部１３１で生成される確認画面情報は、異なる情報であってもよい。例えば、上述したように右画像及び左画像に対するパターンマッチング処理の精度により３次元位置情報の精度低下が問題となるのであれば、当該パターンマッチング処理の結果に対してユーザー１０の編集を可能としてもよい。
【００７８】
この場合の確認画面情報としては、例えば図１３に示したように、実際に取得された右画像及び左画像を表示するとともに、パターンマッチング処理の結果を各画像に重畳して表示する情報であってもよい。図１３のＡ１で示した点線が左画像におけるパターンマッチング処理の結果を表し、Ａ２で示した点線が右画像におけるパターンマッチング処理の結果を表す。図１３の例では、指による遮蔽等の影響により、パターンマッチング処理が正確に行えていない。
【００７９】
図１３に示したように、パターンマッチング処理の結果と実際の撮像画像とを併せて表示すれば、パターンマッチング処理が正確に行えていないことを、ユーザー１０は容易に把握できる。よってユーザー１０は、例えばＡ１やＡ２等の点線を移動（必要に応じて回転や拡大、縮小を含む）して、実際に撮像されたワーク２０と重なるように操作すればよい。編集処理部１３３は、ユーザー１０による点線の移動操作を編集情報として取得し、移動後の点線により表される範囲を、各画像に対するパターンマッチング処理の結果として出力すればよい。その後の視差情報を求める処理等は同様である。
【００８０】
パターンマッチング処理以外の部分での誤差が小さいのであれば、図１３に示した編集作業により３次元位置情報を精度よく求めることが可能になる。この場合、図１２（Ａ）に示した３次元位置情報を直接編集する場合に比べて、ユーザー１０にとって容易な形式で編集を行うことが可能になる。
【００８１】
以上で説明した３次元位置情報の取得処理の流れを、図７のフローチャートに示す。この処理が開始されると、まず変数Ｊを１で初期化する（Ｓ２０１）。この変数Ｊは、求められる３次元位置情報の数に対応する変数である。
【００８２】
次に図６のＳ１０１で取得したステレオ画像の再生処理を行う（Ｓ２０２）。ここで再生と表記したのは、ステレオ画像を動画像と同程度に高頻度で取得していることを想定したものである。ステレオ画像の再生が終了したかの判定を行い（Ｓ２０３）、終了している場合には３次元位置情報の取得処理も終了する。
【００８３】
未処理のステレオ画像が残っている場合には、移動対象としているワーク（ここでは物体Ａ）の３次元位置情報の出力指示があるか否かの判定を行う（Ｓ２０４）。ここでの出力指示とは、そのタイミングでの撮像画像を対象として３次元位置情報を求めるか否かを決定する指示のことであり、例えばユーザー１０により入力されるものであってもよい。
【００８４】
図１の例であれば、ステレオカメラ３０による撮像が高頻度で行われていれば、Ｘ１からＸ４までの移動経路上では、Ｘ２，Ｘ３以外の箇所でもステレオ画像は取得されている。しかし、全てのステレオ画像を対象として３次元位置情報を求めたのでは、処理負荷が重く、且つ似通った位置の３次元位置情報が多く求められるため、各情報の重要性が低くなる。
【００８５】
それに対して、障害物Ｂと物体Ａとの衝突回避という観点から図１を見ると、Ｘ１からＸ４まで直線的に移動させたのでは衝突が起こるため、一旦Ｘ２やＸ３の方向に回避するものとしていることがわかる。この際、回避経路も細かく指定する必要はなく、代表的な点を指定すれば足りる。図１の例であれば、Ｘ１の後、Ｘ２，Ｘ３を経由してＸ４に到達する移動経路とすれば、各点の間を直線的に補間したとしても、物体Ａは障害物Ｂに衝突することなく移動することが期待できる。つまり、ユーザー１０が教示時に指定した移動経路については、当該移動経路上の全ての点が等価というわけではなく、重要度の高い代表点（中間点）を規定することが可能である。そしてロボットによるワーク２０の移動時にも、教示時の移動経路を１００％トレースする必要はなく、そのうちの代表点を少なくとも通過することが期待される制御を行えばよい。
【００８６】
以上の点を鑑み、本実施形態では各タイミングのステレオ画像に対して、当該ステレオ画像から３次元位置情報を求める必要があるか否か（当該ステレオ画像が移動経路上の中間点に対応するか）を、Ｓ２０４において判定する。この判定は、上述したようにユーザー１０が行ってもよいし、情報処理装置１００側で行ってもよい。
【００８７】
３次元位置情報の出力指示がない場合、Ｓ２０４でＮｏとなり、３次元位置情報を求めることなく、Ｓ２０２に戻って次のステレオ画像を対象とした処理を行う。３次元位置情報の出力指示がある場合には、Ｓ２０４でＹｅｓとなり、３次元位置情報を求め、データベース５０に記憶する（Ｓ２０５）。Ｓ２０５で求められた３次元位置情報は、Ｓ２０１で設定した変数Ｊを用いて、ＸＪと表記する。
【００８８】
その後、上述したように、必要に応じて確認画面情報生成部１３１、編集処理部１３３による確認画面の提示処理、編集処理等を行ってもよい（Ｓ２０６）。Ｓ２０５，Ｓ２０６により１つの３次元位置情報の取得処理が終了するため、変数Ｊをインクリメントし（Ｓ２０７）、Ｓ２０２に戻って次のステレオ画像を対象とした処理を行う。
【００８９】
４．シナリオ情報の生成
次に求められた３次元位置情報に基づくシナリオ情報の生成処理について説明する。この処理は図６におけるＳ１０３の処理に相当する。なお、以下の説明では図１２（Ａ）に示したＸ１〜Ｘ４の３次元位置情報が求められたものとし、ロボットとしては図４に示したように双腕ロボットを対象とした処理について説明するが、これに限定されないことは言うまでもない。
【００９０】
４．１  具体的な命令セット
本実施形態では、求められた複数の３次元位置情報のそれぞれについて、当該３次元位置情報をパラメーターとする命令を決定することで、シナリオ情報を生成する。本実施形態では、図１及び図２に示したように、ワークの移動経路を教示し、ロボットは当該移動経路に従ってワークを移動させる。つまりロボットによる作業がワークの移動となるため、ロボット制御において求められるシナリオ情報も，幾つかの典型的な命令を組み合わせることで実現できる。
【００９１】
具体的には、本実施形態では３次元位置情報をパラメーターとした把持命令、移動命令、解放命令から構成されるシナリオ情報を生成する。ここで３次元位置情報ＸＪをパラメーターとする把持命令とは、ＸＪの位置にあるワークをいずれかのハンドにより把持することを指示する命令である。また、ＸＪをパラメーターとする移動命令とは、ロボットのいずれかのハンドで既に把持しているワークを、いずれかのハンドを用いてＸＪまで移動させることを指示する命令である。また、ＸＪをパラメーターとする解放命令とは、ロボットのいずれかのハンドで既に把持しているワークを、ＸＪにおいて解放する（離す）ことを指示する命令である。
【００９２】
例えば図１２（Ａ）に示したように、Ｘ１〜Ｘ４の４つの３次元位置情報が入力された場合には、Ｘ１をパラメーターとして把持命令、移動命令、解放命令のいずれかの命令を決定する処理を行い、Ｘ２〜Ｘ４についても同様にいずれかの命令を決定する処理を行って、複数の命令から構成されるシナリオ情報を生成することになる。なお、図８のフローチャート等を用いて後述するように、本実施形態では最後の３次元位置情報（例えばＸ４）については把持命令と移動命令のいずれかの命令に加えて解放命令も生成される。よって、Ｘ１〜Ｘ４をパラメーターとする命令は全部で５つとなるが、３次元位置情報の数と、シナリオ情報を構成する命令数との関係は種々の変形実施が可能である。
【００９３】
ただし、以上に示したものはそれぞれ広義の把持命令、広義の移動命令、広義の解放命令であり、それよりも細かい単位でのロボット制御を指示する狭義の把持命令、狭義の移動命令、狭義の解放命令を定義してもよい。
【００９４】
例えば、広義の把持命令は上述したように、ＸＪの位置にあるワークをいずれかのハンドにより把持することを指示する命令である。しかしＸＪにおいてワークを把持するハンドが、はじめからＸＪにより表される位置にあるとは限らず、むしろＸＪ以外の位置にあることが一般的である。つまり、広義の把持命令として、Ｈａｎｄ０でＸＪの位置にあるワークＡを把持することを指示する場合には、まずＨａｎｄ０をＸＪまで移動させる移動命令”Hand0 Move to XJ”を行い、その後ＸＪにおいてＨａｎｄ０によりワークＡを把持する把持命令”Hand0 Grasp A”を組み合わせて実行する必要がある。
【００９５】
”Hand0 Move to XJ”により表される移動命令は、広義の命令を構成する１つの小命令である点、及びワークの存在を意識しなくてよい点を考慮すれば、上述の広義の移動命令とは異なるものであるため、本実施形態では「狭義の移動命令」と表記する。また、”Hand0 Grasp A”により表される把持命令も、広義の命令を構成する１つの小命令である点、及びハンドは現在位置で把持を行えばよく、必ずしも３次元位置情報を意識する必要がない点を考慮すれば、上述の広義の把持命令とは異なるものであるため、本実施形態では「狭義の把持命令」と表記する。
【００９６】
同様に、広義の移動命令についても複数の狭義の命令から構成されることが考えられる。例えば、３次元位置情報ＸＪにおいてＨａｎｄ０でワークＡを把持している状態から、当該ワークＡを他の３次元位置情報ＸＪ＋１により表される位置へ移動させる広義の移動命令を実行する場合を考える。その際、ロボットの構成によってはＨａｎｄ０はＸＪ＋１には到達できないが、他のハンドＨａｎｄ１であればＸＪ＋１に到達できるという場合があり得る。ここでユーザー１０による教示はＸＪ，ＸＪ＋１を含む移動経路でワークＡを移動させることを指示するものであり、その際に用いるハンドまで限定していない。つまり上記のような状況であれば、Ｈａｎｄ０で持っているワークＡをＨａｎｄ１に持ち替え、Ｈａｎｄ１によりＸＪ＋１まで移動させるシナリオ情報を作成するとよい。
【００９７】
この場合、Ｈａｎｄ１は一般的にはＸＪ以外の位置にあるため、まずＨａｎｄ１をＸＪまで移動させる移動命令”Hand1 Move to XJ”を行う。この移動命令は上述したように狭義の移動命令である。そして、位置ＸＪにおいてワークＡの持ち替え作業を行う。具体的には、ＸＪにおいてＨａｎｄ１によりワークＡを把持する把持命令”Hand1 Grasp A”を行い、その後ＸＪにおいてＨａｎｄ０によりワークＡを解放する解放命令”Hand0 Release A”を行う。これにより、ＸＪにおいてＨａｎｄ１だけでワークＡを把持した状態となったため、Ｈａｎｄ１をＸＪ＋１に移動させる移動命令”Hand1 Move to XJ+1”を実行すれば、広義の移動命令を実行できる。なお、ここでの”Hand1 Move to XJ+1”という移動命令は、実際にはワークＡの移動を伴っているが、命令上ワークＡの存在を意識しなくてよいものであるため狭義の移動命令である。
【００９８】
なお、ＸＪにおいてＨａｎｄ０でワークＡを把持している状態から、当該ワークＡを他の３次元位置情報ＸＪ＋１により表される位置へ移動させる広義の移動命令において、Ｈａｎｄ０がＸＪ＋１に到達できる場合であれば、”Hand0 Move to XJ+1”によりこの命令は実現可能である。つまり広義の命令は必ずしも複数の狭義の命令から構成される必要はなく、場合によっては１つの狭義の命令により広義の命令が構成されることもあり得る。
【００９９】
また、上述のワークの持ち替えの例では、ＸＪにおいてワークを持ち替えていたがこれに限定されるものではない。例えば、Ｈａｎｄ１がＸＪには到達できない場合もあり得る。その場合には、Ｈａｎｄ０もＨａｎｄ１も到達できる位置ＸＫを設定し、当該位置ＸＫにおいて持ち替え作業を行えばよい。この場合の広義の移動命令は、例えば”Hand0 Move to XK” ”Hand1 Move to XK” ”Hand1 Grasp A” ”Hand0 Release A” ”Hand1 Move to XJ+1”という狭義の命令を順次実行することで実現してもよい。なお、ワークＡの移動経路がユーザー１０により教示された移動経路から外れないことが望ましいため、ＸＫも教示された移動経路上の位置を設定するとよい。
【０１００】
また、以上の持ち替え作業においては、ワークＡを作業台等におろすことがないものとしていたため、持ち替え位置においてまずＨａｎｄ１で把持してからＨａｎｄ０で解放していた。しかし作業台等におろすことが許容されるのであれば、狭義の把持命令と狭義の解放命令の順序を逆にしてもよい。その他、広義の命令を狭義の命令のどのような組み合わせにより実現するかは種々の変形実施が可能である。
【０１０１】
４．２  シナリオ情報生成処理の流れ
図８〜図１１のフローチャートを用いて本実施形態のシナリオ情報生成処理の流れを説明する。ここでのシナリオ情報生成処理は、図６のＳ１０３の処理に相当する。なお、図８〜図１１では双腕ロボットを想定してハンドがＨａｎｄ０とＨａｎｄ１の２つとしているが、３つ以上のハンドを持つ場合にも拡張可能である。
【０１０２】
図８にシナリオ情報生成処理の全体処理フローを示す。この処理が開始されると、まず変数Ｊを１で初期化するとともに、状態変数を空で初期化する（Ｓ３０１）。ここでのＪは図７のＳ２０１のＪと同様のものであり、Ｓ２０５でデータベース５０に記憶された３次元位置情報を時系列順に読み出してくる際に使用する。また、状態変数とはロボットのハンドによるワークの把持状態を表すものであり、ロボットのいずれのハンドでもワークを把持していない場合には、状態変数＝空となる。また、Ｈａｎｄｉ（ここではｉ＝０，１）によりワークが把持されている場合には、状態変数＝Ｈａｎｄｉとなる。なお、図８ではワークを把持していない状態からロボット制御が開始されるものとしているため、状態変数の初期値は空としているが、いずれかのハンドでワークが把持された状態からロボット制御を開始してもよく、その場合、状態変数はワークを把持しているハンドを表す値で初期化される。
【０１０３】
次にデータベース５０を参照して３次元位置情報ＸＪが記憶されているかを判定する（Ｓ３０２）。例えば最初のＳ３０２の処理においてはＸ１が記憶されているかの判定となる。Ｓ３０２でＮｏの場合とは、例えば図１２（Ａ）のようにＸ１〜Ｘ４が記憶されている際にＸ５を処理対象とした場合に対応し、記憶された３次元位置情報に対する処理を終了したことになる。よって、記憶された最後の３次元位置情報であるＸＪ−１をパラメーターとする解放命令を生成し（Ｓ３０６）、シナリオ情報生成処理を終了する。
【０１０４】
ＸＪがデータベース５０に記憶されている場合には、Ｓ３０２でＹｅｓとなり、当該３次元位置情報ＸＪをパラメーターとする命令生成処理を行う（Ｓ３０３）。Ｓ３０３の処理の詳細は図９〜図１１を用いて後述する。
【０１０５】
Ｓ３０３の処理後、命令生成が成功したか否かの判定を行う（Ｓ３０４）。命令生成が失敗した場合には、シナリオ情報の生成にも失敗したものとしてシナリオ情報生成処理を終了する。この場合、図６のＳ１０４の判定においてＮｏとなるため、シナリオ情報は実行されずに本実施形態の処理が終了する。Ｓ３０４でＮｏとなるのは、後述する図１０のＳ５０４や図１１のＳ６０７でＮｏと判定されるケースである。具体的には、ロボットのいずれのハンドでもＸＪに到達できず、教示により求められた３次元位置情報を通過する移動経路でのワークの移動を、対象としているロボットでは実現できない場合に対応する。
【０１０６】
命令生成に成功した場合には、Ｓ３０４でＹｅｓとなり、Ｊをインクリメントして（Ｓ３０５）、Ｓ３０２に戻ってデータベース５０に記憶された次の３次元位置情報を対象とした処理を行う。
【０１０７】
次に図９を用いてＳ３０３におけるＸＪをパラメーターとする命令生成処理の流れを説明する。この処理が開始されると、まず状態変数が空であるか否かの判定を行う（Ｓ４０１）。Ｓ４０１でＹｅｓの場合には、ワークがいずれのハンドでも把持されていない状態となる。本実施形態ではワークの移動を行うことがロボット制御の目的であり、当該ワークの移動はハンドにより行われることを想定している以上、この場合にはいずれかのハンドでワークを把持することが必要となる。よって、Ｓ４０１でＹｅｓの場合には、ＸＪをパラメーターとする把持命令を生成する（Ｓ４０２）。
【０１０８】
Ｓ４０２の把持命令生成処理の流れを図１０に示す。把持命令の生成処理においては、まずＨａｎｄ０がＸＪに到達できるか否かの判定を行う（Ｓ５０１）。ここでの判定は、データベース５０に記憶されたロボットデータ５５のうち、ハンドの可動範囲を表す可動範囲情報を併せて読み出すことで行えばよい。Ｓ５０１でＹｅｓの場合、ワークＡをＨａｎｄ０で把持すればよい。よって上述したように、Ｈａｎｄ０をＸＪまで移動させる狭義の移動命令”Hand0 Move to XJ”を生成し、その後ＸＪにおいてＨａｎｄ０によりワークＡを把持する狭義の把持命令”Hand0 Grasp A”を生成する（Ｓ５０２）。また、Ｓ５０２で生成された命令が実行される場合には、ワークはＨａｎｄ０により把持されることになるため、状態変数をＨａｎｄ０に更新し（Ｓ５０３）、把持命令の生成処理を終了する。
【０１０９】
一方、Ｓ５０１でＮｏの場合にはＨａｎｄ１がＸＪに到達できるか否かの判定を行う（Ｓ５０４）。Ｓ５０４でＹｅｓの場合、ワークＡをＨａｎｄ１で把持すればよいため、Ｓ５０２と同様に”Hand1 Move to XJ”及び”Hand1 Grasp A”から広義の把持命令を構成すればよい（Ｓ５０５）。そしてＳ５０３と同様に、状態変数をＨａｎｄ１に更新し（Ｓ５０６）、把持命令の生成処理を終了する。
【０１１０】
また、Ｓ５０４でもＮｏの場合、対象としているロボットではいずれのハンドもＸＪに到達できず、当該ロボットを用いてＸＪを含む移動経路でワークＡを移動することは不可能となる。この場合、命令生成処理が失敗となり、さらにシナリオ情報生成処理も失敗となるため、シナリオが実行されることなく処理が終了する（図６のＳ１０４でＮｏとなる）。
【０１１１】
また、Ｓ４０１でＮｏの場合には、いずれかのハンドでワークＡを把持していることになる。よってＸＪをパラメーターとする移動命令を生成する（Ｓ４０３）。Ｓ４０３の移動命令生成処理の流れを図１１に示す。移動命令の生成処理においては、まずロボットのハンドのうち、いずれのハンドによりワークＡが把持されているかの判定を行う。具体的には、状態変数がＨａｎｄ０かの判定を行う（Ｓ６０１）。Ｓ６０１でＹｅｓの場合には、Ｈａｎｄ０によりワークが把持されていることになるため、把持中のハンドを表す変数ＨＡＮＤｃｕｒをＨａｎｄ０とし、ワークを把持していないハンドを表す変数ＨＡＮＤｏｔｈｅｒをＨａｎｄ１とする。また、Ｓ６０１でＮｏの場合、ここではハンドは２つであるものとしているため、Ｈａｎｄ１によりワークが把持されていることになる。よってＨＡＮＤｃｕｒをＨａｎｄ１とし、ＨＡＮＤｏｔｈｅｒをＨａｎｄ０となる。なお、ハンドが３つ以上の場合でも同様であり、状態変数に基づいてワーク把持中のハンドと空のハンドを識別すればよい。
【０１１２】
その後、ワークを把持しているＨＡＮＤｃｕｒがＸＪに到達できるかの判定を行う（Ｓ６０４）。Ｓ６０４でＹｅｓの場合、ワーク把持中のハンドをＸＪまで移動させれば、ワークＡをＸＪまで移動できることになる。よって”HANDcur Move to XJ”を移動命令として生成する（Ｓ６０５）。この場合、ワークは変わらずＨＡＮＤｃｕｒにより把持されていることになるため、状態変数はＨＡＮＤｃｕｒとして（Ｓ６０６）、移動命令の生成処理を終了する。
【０１１３】
一方、Ｓ６０４でＮｏの場合には、空のハンドであるＨＡＮＤｏｔｈｅｒがＸＪに到達できるかの判定を行う（Ｓ６０７）。Ｓ６０７でＹｅｓの場合には、上述したようにＨＡＮＤｃｕｒからＨＡＮＤｏｔｈｅｒへワークの持ち替えを行う。具体的には、”HANDother Move to HANDcur”、”HANDother Grasp A”、”HANDcur Release A”、”HANDother Move to XJ”を移動命令として生成すればよい（Ｓ６０８）。なおＳ６０８では持ち替え位置を特定せずに、空のハンドをワーク把持中のハンドと同じ位置に移動させるものとして、狭義の移動命令を”HANDother Move to HANDcur”と記載している。Ｓ６０８で生成される命令を実行した場合、それまで空だったハンドにワークを持ち替えることになるため、状態変数をＨＡＮＤｏｔｈｅｒに更新し（Ｓ６０９）、移動命令の生成処理を終了する。
【０１１４】
また、Ｓ６０７でＮｏの場合には、図１０のＳ５０４でＮｏの場合と同様に、対象としているロボットではいずれのハンドもＸＪに到達できず、当該ロボットを用いてＸＪを含む移動経路でワークＡを移動することは不可能となる。その後の処理もＳ５０４でＮｏの場合と同様であり、命令生成処理が失敗となり、さらにシナリオ情報生成処理も失敗となるため、シナリオが実行されることなく処理が終了する（図６のＳ１０４でＮｏとなる）。
【０１１５】
以上の処理により求められるシナリオ情報の例を図１４に示す。図１４に示したように３次元位置情報をパラメーターとする命令（広義の命令）が決定され、さらに当該命令を１又は複数の狭義の命令により構成する。シナリオ情報としては狭義の命令の組み合わせを用いればよく、各狭義の命令を上から順次解釈、実行することでロボット制御が実現可能である。
【０１１６】
５．本実施形態の具体例
以上の本実施形態では、情報処理装置１００は図３に示したように、ワーク２０が撮像された撮像画像を取得する撮像画像取得部１１０と、取得した撮像画像からワーク２０の３次元位置情報を求める位置情報取得部（図３の３次元位置情報取得部１３０に対応）と、３次元位置情報に基づいて、ロボット（狭義にはロボット本体３００）にワーク２０を移動させるための複数の命令を含むシナリオ情報を生成するシナリオ情報生成部１５０を含む。
【０１１７】
ここで、３次元位置情報とは、ワークの３次元位置を表す情報であり、例えばｘｙｚの３軸により規定される空間における所与の座標値（ｘ，ｙ，ｚ）を３次元位置情報としてもよい。ただし、ワークは点ではなく大きさを有する物体であることから、ワークの姿勢も考慮することができ、当該姿勢の情報も３次元位置情報に含めてもよい。例えば、図１２（Ｂ）に示したように、基準姿勢に対するｘｙｚの各軸まわりのワークの回転をｕｖｗとして、図１２（Ａ）に示したように（ｘ，ｙ，ｚ，ｕ，ｖ，ｗ）により１つの３次元位置情報を表現してもよい。
【０１１８】
これにより、ワーク２０が撮像された撮像画像に基づいて、当該撮像画像上でのワーク２０の３次元位置と同様の３次元位置を基準として、ロボットにワーク２０を移動させるシナリオ情報を生成することが可能になる。この場合、ワーク２０の配置（或いは移動）はユーザー１０の教示により実現することが想定されるが、ユーザー１０にとっては実際のワーク２０を所望の３次元位置に配置することで、同様の位置を基準とする（狭義には同様の位置を通過する）ワーク２０の移動をロボットに実行させることができる。そのため、ユーザー１０からすれば、自身の教示作業と、その後ロボットにより行われるロボット動作との関係が明確であり、直感的にわかりやすい教示が可能になる。さらに、ワーク２０の実物を用いているため、教示に従ったシナリオ情報を用いてロボット制御を行えば、当該ワーク２０が環境に配置された物体と衝突する可能性は低く、安全な動作が実現できる。また、３次元位置を求めるだけにとどまらず、複数の命令から構成されるシナリオ情報の生成まで行うため、ワーク２０の移動をどのようなロボット動作により実現するかを適切に決定することも可能になる。
【０１１９】
また、撮像画像取得部１１０は、移動するワーク２０を複数回撮像した時系列の撮像画像を取得し、位置情報取得部は、複数回撮像した時系列の撮像画像から、ワーク２０の３次元位置情報を求めてもよい。
【０１２０】
ここで、移動するワークを複数回撮像した撮像画像（時系列の撮像画像）とは、例えば図１に示したようにユーザー１０により移動されるワークＡを撮像部（狭義にはステレオカメラ３０の第１の撮像部３０−１と第２の撮像部３０−２）により撮像することで取得される画像である。
【０１２１】
これにより、移動するワーク２０を複数回撮像した時系列の撮像画像を取得することで、ワーク２０の１つの３次元位置を求めるだけでなく、複数の３次元位置の時系列的な変化、すなわちワーク２０の移動経路を求めることが可能になる。そのため、撮像画像上でのワーク２０の移動経路と同様の移動経路で、ロボットにワーク２０を移動させるシナリオ情報を生成することができる。ユーザー１０にとっては、実際のワーク２０を所望の経路に沿って移動させることで、同様の経路でのワーク２０の移動をロボットに実行させることができるため、直感的にわかりやすい教示が可能である。
【０１２２】
また、シナリオ情報生成部１５０は、ロボットの可動範囲情報に基づいて、シナリオ情報を生成してもよい。
【０１２３】
ここで、ロボットの可動範囲情報とは図３におけるデータベース５０のロボットデータ５５に含まれるものであってもよい。可動範囲情報とは具体的にはロボットの可動部分（具体的には可動機構により構成される可動部分）が到達できる３次元位置、姿勢を表すものである。通常のロボットでは、各関節の関節角の値は取り得る範囲が決まっている。例えば人型のロボットであれば、腰部分の回転範囲、肩関節の回転範囲、肘関節の回転範囲、手首関節の回転範囲は設計により決定されている。腰関節のとれる範囲が決まっていれば、肩関節のとれる位置姿勢の範囲は決まることになるし、さらに肩関節のとれる範囲が決まっていれば、腰と肩の関節の状態から肘のとれる位置姿勢の範囲は決まることになる。つまり、広く知られているフォワードキネマティクス等を用いることで、ロボットの可動部分（狭義にはハンド）の可動範囲を事前に求めておくことができる。
【０１２４】
なお、ロボットの可動機構とは、ロボットの可動部分を構成する機械機構であり、例えばロボットのアーム、エンドエフェクター、又はロボットの移動機構などである。アームはリンクと関節（ジョイント）により構成される。ロボットの移動機構とは、ロボットを移動させるための機構であり、車輪機構や歩行機構などである。
【０１２５】
これにより、ワーク２０の移動経路上での３次元位置情報に加えて、ロボットの可動範囲情報に基づいて、シナリオ情報を適切に生成することが可能になる。教示により得られた移動経路がロボットの移動経路であるならば、当該教示に従ったロボット制御においては、ロボットを当該移動経路上で移動させればよいため容易に実現可能である。しかし教示により得られた移動経路がワークの移動経路である場合、ワークがその移動経路に従って移動すればよいため、それを実現するためのロボット動作は自由度が非常に高い。例えば、図４に示したベースユニット部４００のキャスターをロボット制御により動作可能であれば、ロボットはアームやハンドを固定したまま、キャスターによるロボット本体ごとの移動によりワークを移動させてもよい。また、アームやハンドは固定しつつ、腰部分の回転によりワークを移動させることができるかもしれないし、腰を固定しつつアームとハンドの動きによりワークを移動させることができるかもしれない。つまり、ワークの移動経路を与えられた場合には、対象としているロボットにより実現可能であることを最低条件としつつ、何らかの制約を加えることで実行するロボット制御を特定する必要がある。その点、ロボットの可動範囲情報は、ロボット動作が当該ロボットにより実現可能であるかを判定可能な情報であるため、適切な制約を加えてシナリオ情報を生成することを可能にするものである。
【０１２６】
また、ロボット（狭義にはロボット本体３００）は、各アームがエンドエフェクター（例えば図４の３１９）を有する複数のアームを含んでもよい。そしてシナリオ情報生成部１５０は、エンドエフェクターの可動範囲情報と、３次元位置情報とに基づいて、エンドエフェクターが３次元位置情報により表される３次元位置に到達できるアームを複数のアームから特定し、特定されたアームに設けられるエンドエフェクターを、３次元位置情報により表される３次元位置に移動させる命令を含むシナリオ情報を生成してもよい。
【０１２７】
ここでエンドエフェクターとは、ロボットが作業対象に対して直接働きかける機能を有する部分であり、ハンド（把持部）や、手先に取り付けられるナット締め具等の各種ツールなどである。
【０１２８】
これにより、ロボット本体３００が２本以上のアームを有する場合に、各アームに設けられエンドエフェクターが、対象としている３次元位置情報に対応する位置に到達できるか否かに基づいて、ロボット動作に用いるアームを決定することが可能になる。エンドエフェクターの可動範囲情報を用いてシナリオ情報を生成することで、当該シナリオ情報に従ったロボット制御では、ロボットの構造的にとることができない制御（例えば所与の関節角が可動範囲を超える指示を行う制御）を行うことない。よって、シナリオ情報の生成に成功したのであれば、当該シナリオ情報は対象としているロボットにより無理なく実行可能であることが保証される。また、対象としているロボットではどうやっても教示された移動経路に沿ったワークの移動ができない場合には、強引にシナリオ情報を生成するのではなく、シナリオ情報の生成失敗等の判定を行うことも可能になる。
【０１２９】
なお、３次元位置情報に姿勢の情報を含めてもよいように、可動範囲情報に姿勢の情報を含めてもよい。例えば、所与のハンドが所定位置（ｘ，ｙ，ｚ）に到達することはできるが、そこでとれる姿勢（ｕ，ｖ，ｗ）は所与の範囲に制限されると言うことは充分考えられる。この場合、３次元位置情報により表されるワークの３次元の位置姿勢を、エンドエフェクターの可動範囲情報により表されるエンドエフェクターの３次元の位置姿勢により実現できるか否かで、ロボット動作に用いるアームを決定すればよい。なお、この場合には、エンドエフェクターによるワークの把持状態も考慮するとよい。例えば、２本の指でワークを挟み込むハンドを用いて、細長い柱状のワークを把持する場合、短辺方向であれば把持できるが、長辺方向では把持できないといった制限が生じることがある。よってその場合、可動範囲情報により表されるエンドエフェクターの３次元の位置姿勢と、エンドエフェクターによるワークの把持状態とから、当該エンドエフェクターにより実現可能なワークの３次元での位置姿勢を推定し、推定した情報と３次元位置情報により表されるワークの３次元の位置姿勢との比較処理等を行ってもよい。
【０１３０】
つまり本実施形態のシナリオ情報生成部１５０は、エンドエフェクターの可動範囲情報と、３次元位置情報とに基づいて、エンドエフェクターにより３次元位置情報により表される３次元位置及び姿勢にワークを到達させることができるアームを複数のアームから特定し、特定されたアームに設けられるエンドエフェクターにより、３次元位置情報により表される３次元位置及び姿勢にワークを移動させる命令を含むシナリオ情報を生成してもよい。
【０１３１】
また、エンドエフェクターの可動範囲情報と３次元位置情報とに基づいて、複数のアームのうちワークを把持している第１のアームに設けられる第１のエンドエフェクターが３次元位置に到達できず、且つ第１のアームとは異なる第２のアームに設けられる第２のエンドエフェクターが３次元位置に到達できると判定された場合に、シナリオ情報生成部１５０は、ワークを第１のエンドエフェクターから第２のエンドエフェクターに持ち替える持ち替え命令と、ワークを把持した第２のエンドエフェクターを３次元位置に移動させる移動命令と、を含むシナリオ情報を生成してもよい。
【０１３２】
これにより、１つのアームのエンドエフェクターではワークの移動経路に沿った移動ができない場合にも、他のアームに持ち替えて移動を継続するシナリオ情報を生成することが可能になる。よって、持ち替えを考慮しない場合に比べて、シナリオ情報の生成に失敗する可能性を抑止することができ、ロボットの構成を効果的に活用したロボット動作を実現するシナリオ情報の生成が可能になる。なお、ここでの「ワークを把持した第２のエンドエフェクターを３次元位置に移動させる移動命令」は、上述の定義を用いた場合、狭義の移動命令に対応するものである。
【０１３３】
また、シナリオ情報生成部１５０は、第２のエンドエフェクターを持ち替え位置まで移動させる移動命令と、第２のエンドエフェクターによりワークを把持する把持命令と、第１のエンドエフェクターから前記ワークを解放する解放命令とを、持ち替え命令として生成してもよい。
【０１３４】
これにより、狭義の移動命令、狭義の把持命令、狭義の解放命令を組み合わせることで、持ち替え命令を実現することが可能になる。なお、持ち替え命令と狭義の移動命令の組み合わせにより、広義の移動命令が実現される。上述したように、持ち替え位置とは第１のエンドエフェクターがそれまでいた位置（例えばＸＪ−１）であってもよいし、他の位置ＸＫであってもよい。また、これらの狭義の命令の実行順序等について、種々の変形実施が可能であることも上述したとおりである。
【０１３５】
また、位置情報取得部（３次元位置情報取得部１３０）は、図３に示したように、３次元位置情報を求める処理の処理結果を、ユーザーに確認させるための確認画面情報を生成する確認画面情報生成部１３１を含んでもよい。
【０１３６】
ここで、３次元位置情報を求める処理の結果とは、図１２（Ａ）に示したように実際に求めた３次元位置情報そのものであってもよく、この場合の確認画面情報とは、例えば図１２（Ａ）に示した表を提示する画面情報である。或いは、３次元位置情報を求める処理の処理結果とは、３次元位置情報を求める際に得られる中間結果であってもよく、例えば図１３に示したように、右画像左画像のそれぞれに対するパターンマッチング処理の結果であってもよい。この場合の確認画面情報とは、例えば図１３に示した画面情報である。
【０１３７】
これにより、３次元位置情報を求める処理の結果をユーザーに対して提示することが可能になる。３次元位置情報の算出は、例えばステレオマッチング処理等を用いることになり、何らかの理由により高精度で行うことが難しい場合もある。例えば、上述したようにワーク２０がユーザーの指に遮蔽されることでパターンマッチング処理の精度が低下することが考えられる。その際、処理結果をユーザーに確認させることで、精度の低い情報を発見、場合によっては修正することができるため、作成されるシナリオ情報を、よりユーザーによる教示に近い高精度なものとすることが可能になる。
【０１３８】
また、位置情報取得部（３次元位置情報取得部１３０）は、図３に示したように、確認画面情報の提示に対してユーザーから入力される編集情報を取得し、取得した編集情報に基づいて、３次元位置情報を求める処理の処理結果に対する編集処理を行う編集処理部１３３を含んでもよい。
【０１３９】
これにより、確認画面情報の提示に対してユーザーが修正（編集）を望んだ場合に、ユーザー入力を編集情報として受け付け、当該編集情報に従った編集処理を行うことが可能になる。ここでの編集情報とは、図１２（Ａ）を確認画面とした場合には入力される数値情報であるし、図１３を確認画面とした場合には、Ａ１，Ａ２で示したマッチング結果の画像上での移動情報である。また、確認画面として他の画面を用いることもでき、その場合の編集情報も種々の変形実施が可能である。図１３に示したように、ユーザーが手動で編集することで、高精度で処理を行うことが可能な場面も多く、編集処理により高精度なシナリオ情報の生成が可能となる。
【０１４０】
また、シナリオ情報生成部１５０は、３次元位置情報をパラメーターとする把持命令、移動命令及び解放命令の少なくとも１つから構成されるシナリオ情報を生成してもよい。
【０１４１】
ここでの把持命令、移動命令、解放命令は、上述の定義に従えば、広義の把持命令、広義の移動命令、広義の解放命令に対応する。
【０１４２】
これにより、３次元位置情報をパラメーターとして把持、移動、解放のいずれかの命令を作成することでシナリオ情報を生成することが可能になる。よって図１４に示したように、１つの３次元位置情報に対して基本的には１つの命令を対応づけることができ、シンプルでわかりやすいシナリオ情報の生成処理が可能になる。なお、広義の命令を、それぞれ１又は複数の狭義の命令から構成することで、図１４の右の列に示したように、詳細なシナリオ情報においては柔軟なロボット動作を実行可能である。
【０１４３】
また、シナリオ情報生成部１５０は、ロボットによるワークの把持状態を表す状態変数に基づいて、把持命令、移動命令、解放命令のうちから、３次元位置情報をパラメーターとする命令を選択してもよい。
【０１４４】
これにより、命令の選択を状態変数に基づいて行うことが可能になる。ここでの状態変数とは、図９のＳ４０１や図１１のＳ６０１の判定で用いられるものであり、ロボットのいずれのハンドでもワークを把持していなければ値が空となり、いずれかのハンドでワークを把持しているのであれば、把持しているハンドを表す値となる変数である。ロボットによるワークの移動においては、ハンドにより把持されていなければワークは移動することができないということが基本となる。よってワークが把持されていなければ、ワークの移動のためにはいずれかのハンドでワークを把持する必要があるし、既にワークが把持されているのであれば移動を開始させることが可能である。つまり、把持状態を表す状態変数は、命令を適切に決定するにあたり有効と言える。
【０１４５】
また、シナリオ情報生成部１５０は、ワーク２０の移動経路に沿った各３次元位置情報を処理対象として、３次元位置情報をパラメーターとする命令の生成処理を行い、処理対象となる３次元位置情報がないと判定された場合に、命令として解放命令を選択してもよい。
【０１４６】
これにより、データベース５０に記憶された複数の３次元位置情報を、時系列に順次処理対象としていくことで、当該複数の３次元位置情報を含む移動経路に沿ったワークの移動を実現するシナリオ情報を生成することが可能になる。なお、ワークが目標位置まで到達した場合、ロボットのハンドにより把持し続けるのではなく、所定位置に置く、或いは所定の機構にはめ込む等の操作により移動が終了することが多い。よって、全ての３次元位置情報に対する処理が終了した場合には、時系列的に最後の３次元位置情報をパラメーターとして解放命令を選択すればよい。なお、目標位置においてハンドでワークを把持し続け、他のロボットに対してワークの受け渡しを行う場合のように、最後の３次元位置情報をパラメーターとした解放命令が不要な場合もあり、状況に応じて解放命令を選択するか否かを決定するものとしてもよい。
【０１４７】
また以上の本実施形態は、図３に示したように上述の情報処理装置１００を含むロボット（ロボットシステム）に適用できる。
【０１４８】
これにより、ユーザー１０からの教示に関する情報を撮像画像として取得し、当該教示に基づくシナリオ情報の生成と、当該シナリオ情報に基づくロボット制御を行い、さらに当該ロボット制御に従ってアームやハンド等を用いた動作を行うロボットを実現することができる。なお、ステレオカメラ３０については、ロボットシステムに含まれなくてもよく、その場合、ユーザーによる教示は、ワーク２０については実物を用いるもののロボットシステムとは無関係に行われる。また、ロボットシステムがステレオカメラ３０を含んでもよい。例えば図４にＧｃａｍとして示したように、ロボットの上部（頭部）にステレオカメラであるグローバルカメラＧｃａｍが設けられる場合もある。この場合、教示による情報の取得用途と、実際のロボット制御用途の両方に、共通の撮像部を用いること等も可能である。なお、撮像部を用いた実際のロボット制御としては、撮像画像に基づいてロボット自身や周囲環境の変化を検出し、検出結果をフィードバックループにおいて利用するビジュアルサーボ等が考えられる。
【０１４９】
なお、本実施形態の情報処理装置１００等は、その処理の一部または大部分をプログラムにより実現してもよい。この場合には、ＣＰＵ等のプロセッサーがプログラムを実行することで、本実施形態の情報処理装置１００等が実現される。具体的には、非一時的な情報記憶媒体に記憶されたプログラムが読み出され、読み出されたプログラムをＣＰＵ等のプロセッサーが実行する。ここで、情報記憶媒体（コンピューターにより読み取り可能な媒体）は、プログラムやデータなどを格納するものであり、その機能は、光ディスク（ＤＶＤ、ＣＤ等）、ＨＤＤ（ハードディスクドライブ）、或いはメモリー（カード型メモリー、ＲＯＭ等）などにより実現できる。そして、ＣＰＵ等のプロセッサーは、情報記憶媒体に格納されるプログラム（データ）に基づいて本実施形態の種々の処理を行う。即ち、情報記憶媒体には、本実施形態の各部としてコンピューター（操作部、処理部、記憶部、出力部を備える装置）を機能させるためのプログラム（各部の処理をコンピューターに実行させるためのプログラム）が記憶される。
【０１５０】
なお、以上のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語と共に記載された用語は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。また情報処理装置１００等の構成、動作も本実施形態で説明したものに限定されず、種々の変形実施が可能である。
【符号の説明】
【０１５１】
１０  ユーザー、２０  ワーク、３０  ステレオカメラ、３０−１  第１の撮像部、
３０−２  第２の撮像部、５０  データベース、５１  シナリオ情報、
５３  ワークデータ、５５  ロボットデータ、１００  情報処理装置、
１１０  撮像画像取得部、１３０  ３次元位置情報取得部、
１３１  確認画面情報生成部、１３３  編集処理部、１５０  シナリオ情報生成部、
１７０  シナリオプレーヤー、２００  ロボット制御装置、３００  ロボット本体、
３１０  アーム、３１１，３１３  関節、３１５，３１７  フレーム、
３１９  エンドエフェクター、３２０  アーム、４００  ベースユニット部、
Ｇｃａｍ  グローバルカメラ
【図１】
2015054378.tif 000003
【図２】
2015054378.tif 000004
【図３】
2015054378.tif 000005
【図４】
2015054378.tif 000006
【図５】
2015054378.tif 000007
【図６】
2015054378.tif 000008
【図７】
2015054378.tif 000009
【図８】
2015054378.tif 000010
【図９】
2015054378.tif 000011
【図１０】
2015054378.tif 000012
【図１１】
2015054378.tif 000013
【図１２】
2015054378.tif 000014
【図１３】
2015054378.tif 000015
【図１４】
2015054378.tif 000016