(57)【要約】【課題】編集画面の表示処理を行うことで、ユーザーにとってわかりやすく、且つユーザーによる意図を反映させやすい形態で教示を行う処理装置、ロボット、ロボットシステム及び処理方法等を提供すること。【解決手段】処理装置は、ロボットが行う作業を編集するための編集画面を表示させる処理部１２０を含み、作業は、第１作業と第２作業とを含み、処理部１２０は、編集画面で第１作業における作業対象物又は作業内容が選択された場合に、第２作業の作業対象の候補を編集画面に表示させる。【選択図】      図１
2015136762.tif 000002
【特許請求の範囲】
【請求項１】
ロボットが行う作業を編集するための編集画面を表示させる処理部を含み、
前記作業は、第１作業と第２作業とを含み、
前記処理部は、
前記編集画面で前記第１作業における作業対象物又は作業内容が選択された場合に、前記第２作業の作業対象の候補を前記編集画面に表示させることを特徴とする処理装置。
【請求項２】
請求項１において、
前記作業が、時系列的に実行される第１作業〜第Ｎ（Ｎは２以上の整数）作業を含む場合に、
複数のサブプログラムの各サブプログラムを、前記第１作業〜前記第Ｎ作業のいずれかの作業に分類して記憶する記憶部をさらに含み、
前記処理部は、
前記第１作業〜前記第Ｎ作業のうち、第ｉ（ｉは１≦ｉ≦Ｎ−１を満たす整数）作業のサブプログラムが、前記複数のサブプログラムから、実行対象となるサブプログラムである実行サブプログラムとして選択された場合に、
第ｉ＋１作業に含まれる前記実行サブプログラムの候補が表示された、前記編集画面を表示させることを特徴とする処理装置。
【請求項３】
請求項２において、
前記記憶部は、
前記複数のサブプログラムの各サブプログラムとして、処理実行前の前記ロボットの状態を表す入力状態情報と、処理実行後の前記ロボットの前記状態を表す出力状態情報とが対応づけられた情報を記憶することを特徴とする処理装置。
【請求項４】
請求項３において、
前記処理部は、
前記第ｉ作業のサブプログラムが、前記実行サブプログラムとして、前記複数のサブプログラムから選択された場合に、
前記複数のサブプログラムのうち、前記第ｉ＋１作業に分類され、且つ前記入力状態情報が、前記実行サブプログラムとして選択された前記第ｉ作業のサブプログラムの前記出力状態情報と合致する前記サブプログラムを、前記実行サブプログラムの候補として前記編集画面に表示させることを特徴とする処理装置。
【請求項５】
請求項２乃至４のいずれかにおいて、
前記記憶部は、
複数の作業対象物に関する情報を作業対象物情報として記憶し、
前記複数のサブプログラムの各サブプログラムとして、前記複数の作業対象物のうち作業対象として選択可能な作業対象物である選択可能作業対象物を特定する選択可能作業対象物情報が対応づけられた情報を記憶することを特徴とする処理装置。
【請求項６】
請求項５において、
前記ロボットによる前記作業対象物が決定された場合に、
前記処理部は、
前記複数のサブプログラムのうち、前記選択可能作業対象物情報に基づいて、決定された前記作業対象物が前記選択可能作業対象物であると判定された前記サブプログラムを、前記実行サブプログラムの候補として前記編集画面に表示させることを特徴とする処理装置。
【請求項７】
請求項２乃至６のいずれかにおいて、
前記第１作業〜第Ｎ作業の各作業から、１つの前記実行サブプログラムが選択されることで、Ｎ個の前記実行サブプログラムが選択された場合に、
前記処理部は、
時系列的に実行されるＮ個の前記実行サブプログラムをリスト表示する画面を、前記編集画面として表示させることを特徴とする処理装置。
【請求項８】
請求項７において、
前記ロボットによる前記作業が、前記第１作業〜前記第Ｎ作業の集合を１ブロックとする、第１作業ブロック〜第Ｍ（Ｍは２以上の整数）作業ブロックから構成される場合に、
前記第１作業ブロック〜前記第Ｍ作業ブロックの各作業ブロックに対して、前記第１作業〜前記第Ｎ作業の各作業から１つの前記実行サブプログラムが選択されることでＮ個の前記実行サブプログラムが選択され、
前記ロボットによる前記作業に対して、Ｍ×Ｎ個の前記実行サブプログラムが選択された場合に、
前記処理部は、
時系列的に実行されるＭ×Ｎ個の前記実行サブプログラムをリスト表示する画面を、前記編集画面として表示させることを特徴とする処理装置。
【請求項９】
請求項８において、
前記処理部は、
前記ロボットの作業対象物に基づいて、前記作業を前記作業対象物単位で設定される前記第１作業ブロック〜前記第Ｍ作業ブロックに分割し、
前記第１作業ブロック〜前記第Ｍ作業ブロックの各作業ブロックについて、前記第１作業〜前記第Ｎ作業の各作業についての前記実行サブプログラムの選択に用いられる前記編集画面を表示させることを特徴とする処理装置。
【請求項１０】
請求項２乃至９のいずれかにおいて、
前記第１作業〜前記第Ｎ作業は、
前記作業対象物の給材を行う給材作業、作業位置を決定する位置決め作業、前記作業対象物に対する処理を行う処理作業、及び処理後の前記作業対象物の除材を行う除材作業であることを特徴とする処理装置。
【請求項１１】
ロボットが行う作業を編集するための編集画面を表示させる処理部を含み、
前記作業は、第１作業と第２作業とを含み、
前記処理部は、
前記編集画面で前記第１作業における作業対象物又は作業内容が選択された場合に、前記第２作業の作業対象の候補を前記編集画面に表示させることを特徴とするロボット。
【請求項１２】
ロボットと、
前記ロボットが行う作業を編集するための編集画面を表示する表示部と、を含み、
前記作業は、第１作業と第２作業とを含み、
前記表示部は、
前記編集画面で前記第１作業における作業対象物又は作業内容が選択されることによって、前記第２作業の作業対象の候補を前記編集画面に表示する、
ことを特徴とするロボットシステム。
【請求項１３】
ロボットが行う第１作業を編集するための編集画面を表示することと、
前記編集画面で前記第１作業における作業対象物又は作業内容が選択された場合に、前記ロボットが行う第２作業の作業対象の候補を前記編集画面に表示することと、
を含むことを特徴とする処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、処理装置、ロボット、ロボットシステム及び処理方法等に関する。
【背景技術】
【０００２】
ロボットに対して所望の作業を行わせるために、作業の内容を記載したプログラム（教示プログラム）を生成する手法が広く知られている。その際、特定のプログラミング言語を用いて、作業プログラムのコーディングをユーザーに行わせるものとすると、ユーザーは、当該プログラミング言語やロボット等について専門的な知識を要求されることになり、負担が大きい。
【０００３】
それに対して、作業プログラムの作成を容易にする、或いは自動化する手法が提案されている。例えば特許文献１では、複数の教示プログラムを記憶しておき、当該複数の教示プログラムから、作業対象物に関係する教示プログラムをサブプログラムとして呼び出すことで、メインプログラムを生成する手法が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−３１３１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１の手法では、各教示プログラムに対して、作業対象物の品番や、適用順序を属性情報として付加して記憶しておく。そのため、所定の作業対象物についてのメインプログラムを作成しようとした場合、サブプログラムとして選択される教示プログラムはほぼ固定化されてしまう。結果として、メインプログラムに対するユーザーの意図が反映されづらく、各教示プログラムの汎用性、再利用性も低い。
【課題を解決するための手段】
【０００６】
本発明の一態様は、ロボットが行う作業を編集するための編集画面を表示させる処理部を含み、前記作業は、第１作業と第２作業とを含み、前記処理部は、前記編集画面で前記第１作業における作業対象物又は作業内容が選択された場合に、前記第２作業の作業対象の候補を前記編集画面に表示させる処理装置に関係する。
【０００７】
本発明の一態様では、第１作業における作業対象物又は作業内容が選択された場合に、第２作業の作業対象の候補を表示させる。そのため、第１作業の具体的な内容に応じて、表示する第２作業の作業対象の候補を選択すること等ができ、ユーザーによるロボット動作の教示を容易にすること等が可能になる。
【０００８】
また、本発明の一態様では、前記作業が、時系列的に実行される第１作業〜第Ｎ（Ｎは２以上の整数）作業を含む場合に、複数のサブプログラムの各サブプログラムを、前記第１作業〜前記第Ｎ作業のいずれかの作業に分類して記憶する記憶部をさらに含み、前記処理部は、前記第１作業〜前記第Ｎ作業のうち、第ｉ（ｉは１≦ｉ≦Ｎ−１を満たす整数）作業のサブプログラムが、前記複数のサブプログラムから、実行対象となるサブプログラムである実行サブプログラムとして選択された場合に、第ｉ＋１作業に含まれる前記実行サブプログラムの候補が表示された、前記編集画面を表示させてもよい。
【０００９】
これにより、第１作業〜第Ｎ作業を用いることで複数のサブプログラムのうち適切なものを表示対象とできるため、ユーザーによる実行サブプログラムの選択を容易にすることや、生成される作業シナリオを適切なものとすること等が可能になる。
【００１０】
また、本発明の一態様では、前記記憶部は、前記複数のサブプログラムの各サブプログラムとして、処理実行前の前記ロボットの状態を表す入力状態情報と、処理実行後の前記ロボットの前記状態を表す出力状態情報とが対応づけられた情報を記憶してもよい。
【００１１】
これにより、サブプログラムとして入力、出力の各状態情報が対応づけられた情報を記憶することが可能になる。
【００１２】
また、本発明の一態様では、前記処理部は、前記第ｉの作業カテゴリのサブプログラムが、前記実行サブプログラムとして、前記複数のサブプログラムから選択された場合に、前記複数のサブプログラムのうち、前記第ｉ＋１の作業カテゴリに分類され、且つ前記入力状態情報が、前記実行サブプログラムとして選択された前記第ｉの作業カテゴリのサブプログラムの前記出力状態情報と合致する前記サブプログラムを、前記実行サブプログラムの候補として前記編集画面に表示させてもよい。
【００１３】
これにより、作業カテゴリだけでなく、入力、出力の各状態情報を用いて、表示対象となるサブプログラムを限定すること等が可能になる。
【００１４】
また、本発明の一態様では、前記記憶部は、複数の作業対象物に関する情報を作業対象物情報として記憶し、前記複数のサブプログラムの各サブプログラムとして、前記複数の作業対象物のうち作業対象として選択可能な作業対象物である選択可能作業対象物を特定する選択可能作業対象物情報が対応づけられた情報を記憶してもよい。
【００１５】
これにより、作業対象物情報を記憶すること、及びサブプログラムとして選択可能作業対象物情報が対応づけられた情報を記憶すること等が可能になる。
【００１６】
また、本発明の一態様では、前記ロボットによる前記作業対象物が決定された場合に、前記処理部は、前記複数のサブプログラムのうち、前記選択可能作業対象物情報に基づいて、決定された前記作業対象物が前記選択可能作業対象物であると判定された前記サブプログラムを、前記実行サブプログラムの候補として前記編集画面に表示させてもよい。
【００１７】
これにより、作業カテゴリだけでなく、作業対象ワークと選択可能ワーク情報を用いて、表示対象となるサブプログラムを限定すること等が可能になる。
【００１８】
また、本発明の一態様では、前記第１作業〜第Ｎ作業の各作業から、１つの前記実行サブプログラムが選択されることで、Ｎ個の前記実行サブプログラムが選択された場合に、前記処理部は、時系列的に実行されるＮ個の前記実行サブプログラムをリスト表示する画面を、前記編集画面として表示させてもよい。
【００１９】
これにより、ユーザーによるロボット動作の教示内容を、編集画面上でわかりやすくユーザーに提示すること等が可能になる。
【００２０】
また、本発明の一態様では、前記ロボットによる前記作業が、前記第１作業〜前記第Ｎ作業の集合を１ブロックとする、第１作業ブロック〜第Ｍ（Ｍは２以上の整数）作業ブロックから構成される場合に、前記第１作業ブロック〜前記第Ｍ作業ブロックの各作業ブロックに対して、前記第１作業〜前記第Ｎ作業の各作業から１つの前記実行サブプログラムが選択されることでＮ個の前記実行サブプログラムが選択され、前記ロボットによる前記作業に対して、Ｍ×Ｎ個の前記実行サブプログラムが選択された場合に、前記処理部は、時系列的に実行されるＭ×Ｎ個の前記実行サブプログラムをリスト表示する画面を、前記編集画面として表示させてもよい。
【００２１】
これにより、ユーザーによるロボット動作の教示内容を、編集画面上でわかりやすくユーザーに提示すること等が可能になる。
【００２２】
また、本発明の一態様では、前記処理部は、前記ロボットの作業対象物に基づいて、前記作業を前記作業対象物単位で設定される前記第１作業ブロック〜前記第Ｍ作業ブロックに分割し、前記第１作業ブロック〜前記第Ｍ作業ブロックの各作業ブロックについて、前記第１作業〜前記第Ｎ作業の各作業についての前記実行サブプログラムの選択に用いられる前記編集画面を表示させてもよい。
【００２３】
これにより、ロボットの作業の対象となる作業対象物に基づいて、作業ブロックを設定すること等が可能になる。
【００２４】
また、本発明の一態様では、前記第１作業〜前記第Ｎ作業は、前記作業対象物の給材を行う給材作業、作業位置を決定する位置決め作業、前記作業対象物に対する処理を行う処理作業、及び処理後の前記作業対象物の除材を行う除材作業であってもよい。
【００２５】
これにより、第１作業〜第Ｎ作業として具体的に「給材」、「位置決め」、「処理」、「除材」の４つの作業を用いることが可能になる。
【００２６】
また、本発明の他の態様は、ロボットが行う作業を編集するための編集画面を表示させる処理部を含み、前記作業は、第１作業と第２作業とを含み、前記処理部は、前記編集画面で前記第１作業における作業対象物又は作業内容が選択された場合に、前記第２作業の作業対象の候補を前記編集画面に表示させるロボットに関係する。
【００２７】
本発明の他の態様では、第１作業における作業対象物又は作業内容が選択された場合に、第２作業の作業対象の候補を表示させる。そのため、第１作業の具体的な内容に応じて、表示する第２作業の作業対象の候補を選択すること等ができ、ユーザーによるロボット動作の教示を容易にすること等が可能になる。さらに、作成した作業シナリオに基づいて動作を行うロボットを実現することが可能になる。
【００２８】
また、本発明の他の態様は、ロボットと、前記ロボットが行う作業を編集するための編集画面を表示する表示部と、を含み、前記作業は、第１作業と第２作業とを含み、前記表示部は、前記編集画面で前記第１作業における作業対象物又は作業内容が選択されることによって、前記第２作業の作業対象の候補を前記編集画面に表示するロボットシステムに関係する。
【００２９】
本発明の他の態様では、第１作業における作業対象物又は作業内容が選択された場合に、第２作業の作業対象の候補を表示する。そのため、第１作業の具体的な内容に応じて、表示する第２作業の作業対象の候補を選択すること等ができ、ユーザーによるロボット動作の教示を容易にすること等が可能になる。
【００３０】
また、本発明の他の態様は、ロボットが行う第１作業を編集するための編集画面を表示することと、前記編集画面で前記第１作業における作業対象物又は作業内容が選択された場合に、前記ロボットが行う第２作業の作業対象の候補を前記編集画面に表示することと、を含む処理方法に関係する。
【００３１】
本発明の他の態様では、第１作業における作業対象物又は作業内容が選択された場合に、第２作業の作業対象の候補を表示する。そのため、第１作業の具体的な内容に応じて、表示する第２作業の作業対象の候補を選択すること等ができ、ユーザーによるロボット動作の教示を容易にすること等が可能になる。
【００３２】
本発明の幾つかの態様によれば、作業対象の候補を含む編集画面の表示処理を行うことで、ユーザーにとってわかりやすく、且つユーザーによる意図を反映させやすい形態で教示を行う処理装置、ロボット、ロボットシステム及び処理方法等を提供することができる。
【図面の簡単な説明】
【００３３】
【図１】本実施形態に係る処理装置の構成例。
【図２】本実施形態に係るロボットの構成例。
【図３】本実施形態に係るロボットの他の構成例。
【図４】本実施形態の処理を表す模式図。
【図５】図５（Ａ）〜図５（Ｃ）は本実施形態で用いられるデータの構造例。
【図６】作業カテゴリごとの作業内容の例。
【図７】サブプログラムに含まれる動作内容情報の例。
【図８】本実施形態の処理を説明するフローチャート。
【図９】編集画面の例。
【図１０】編集画面に含まれるワーク検索画面の例。
【図１１】編集画面に含まれる実行サブプログラムの抽出結果画面の例。
【図１２】図１２（Ａ）〜図１２（Ｄ）は作業シナリオの作成結果を表示する編集画面の例。
【図１３】図１３（Ａ）、図１３（Ｂ）はコンテキストの合致判定の例。
【図１４】作業対象ワークが１つの場合のロボット作業を表す模式図。
【図１５】作業対象ワークが２つの場合のロボット作業を表す模式図。
【図１６】本実施形態の処理を説明する他のフローチャート。
【図１７】編集画面に含まれる作業対象ワーク選択画面の例。
【図１８】作業シナリオの作成結果を表示する編集画面の他の例。
【図１９】より複雑なロボット作業を表す模式図。
【図２０】作業シナリオの作成結果を表示する編集画面の他の例。
【発明を実施するための形態】
【００３４】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【００３５】
１．本実施形態の手法
まず本実施形態の手法について説明する。上述したように、ユーザーにとってわかりやすい形態で、作業シナリオ（或いは作業プログラム）の作成を行う手法が提案されるようになっている。しかし特許文献１のように、作成されるメインプログラムが硬直化しやすい手法では、メインプログラムに対してユーザーの意図、要求が反映されにくいという課題がある。また、教示プログラム（サブプログラム）の汎用性、再利用性が低く、所定の教示プログラムを複数の作業対象物、或いは複数のロボット作業において利用することも難しい。そのため、作成されるメインプログラムの多様性、柔軟性が損なわれるおそれがあるし、同様の作業を行う場合にも異なる教示プログラムを用意しておく必要が生じるおそれもある。
【００３６】
その点、充分な種類のサブプログラムをライブラリとして用意しておき、ユーザーに対して所望のサブプログラムの選択を行わせれば、作成される作業シナリオにユーザーの意図を反映させることが可能である。しかし、特許文献１等に比べて汎用性の高いサブプログラム群を用意したとしても、多様な作業シナリオの作成を可能にするためには、大量のサブプログラムを記憶しておく必要がある。
【００３７】
例えば、２つのワークを結合するという作業だけでも、結合の仕方としてねじ留めの場合もあればスナップフィットが用いられる場合もある。さらにねじ留めについても、どのようなねじを用いるのか、ねじを回すのに用いる工具は何か、ねじ留めの際に治具を用いるか否か等、種々の手法が考えられる。各サブプログラムの抽象度を高くした場合、ロボットを実際に制御するに足る抽象度の低いプログラムの生成処理の処理負荷が高くなるため、過剰に抽象度を高めることは適切でない。具体的には、「ねじ留め」というサブプログラムを１つだけ用意するのではなく、「ねじＡを工具Ｂを用いてねじ留め」、「ねじＣを工具Ｄを用いて、治具Ｅで位置決めをしてねじ留め」といったように、「ねじ留め」についても複数のサブプログラムを用意しておくのが現実的である。
【００３８】
以上の点を鑑みるに、ユーザーに所望のサブプログラムを選択させるという手法をとるに当たって、記憶している全てのサブプログラムを提示したのではユーザー負担が大きい。特に、ユーザーによるサブプログラムの手動選択においては、特許文献１のようにサブプログラムを自動選択する手法に比べて、サブプログラムの総数は大きな問題となり得る。
【００３９】
さらに、全てのサブプログラムを提示した場合、作成される作業シナリオが妥当でない場合も生じうる。例えば、所定のワークが所定の位置に位置決めされていることを前提として動作するといったように、所与のサブプログラムが特定の動作条件を有している場合があり得る。その場合、上記所定のワークが所定の位置以外の位置に配置されている、或いは、そもそも所定のワークがロボットの作業空間まで給材されていないといった状態で上記所定のサブプログラムが実行されてしまうと、当該所定のサブプログラムは動作条件を満たしていないのに呼び出されてしまうことになる。つまり、全てのサブプログラムを提示することで、作成される作業シナリオの妥当性を保証できないという課題も生じうる。
【００４０】
そこで本出願人は、作成される作業シナリオにユーザーの意図を反映させることができ、且つユーザーの負担が軽く、且つ妥当性の高い作業シナリオの作成を可能とする手法を提案する。具体的には、本実施形態の処理装置は図１に示したように、ロボットが行う作業を編集するための編集画面を表示させる処理部１２０を含み、作業は、第１作業と第２作業とを含み、処理部１２０は、編集画面で第１作業における作業対象物又は作業内容が選択された場合に、第２作業の作業対象の候補を編集画面に表示させる。なお、編集画面は表示部２００に表示されることになるが、表示部２００は本実施形態に係る処理装置に含まれるものであってもよいし、他の機器に設けられるものであってもよい。
【００４１】
ここで第１作業及び第２作業とは、ロボットの作業全体をいくつかの工程に分割した場合に、分割後の工程の単位となる小作業を表す。例えば、作業全体が第１作業と第２作業のみから構成される場合であれば、まず第１作業を行い、その後第２作業を行うことで作業全体が実行されることになる。ただし、作業に含まれるのは第１作業と第２作業のみに限定されるものではなく、３つ以上の作業が含まれてもよい。
【００４２】
また、図５（Ｂ）等を用いて後述するように、第１作業や第２作業は、ロボットの典型的な作業をカテゴリ分けした場合の作業カテゴリに対応するものであってもよい。その場合、ロボットの作業中で第１作業や第２作業が複数回実行されることも考えられる。例えば、第１作業が作業対象物（ワーク）を給材し、第２作業が当該作業対象物を配置する作業である場合、第１作業と第２作業を１回ずつ行えば所与のワークを所定位置に配置することができる。この場合、ロボット作業が「３個のワークをそれぞれ所定の位置に配置する」というものであれば、１つめのワークに対して第１作業と第２作業を行い、２つめのワークに対して第１作業と第２作業を行い、３つめのワークに対して第１作業と第２作業を行うことで作業全体が完了する。
【００４３】
また、作業対象物とは、処理（例えば結合する、折り曲げるといった処理）の対象となるワークである。以下でも作業対象物をワークとして説明するが、作業対象物には処理に利用されるツール等が含まれてもよい。
【００４４】
また、作業内容とは、第１作業や第２作業において行われる作業を、ロボットにより実行可能な程度に具体的に規定したものである。図６を用いて後述するように、第１作業がを給材（取る、ｐｉｃｋ）とした場合であっても、給材のやり方はパレットやバラ置き等、種々の手法が考えられるため、その具体的な内容を決定しなければロボットは動作できない。ここでの作業内容の選択とは、当該具体的な内容を選択するものであり、例えば図７を用いて後述する程度の内容を選択する。
【００４５】
このようにすれば、第１作業における作業対象物又は作業内容を選択した場合に、第２作業の作業対象の候補を編集画面に表示させることができる。ここで、作業対象の候補とは、作業対象物であってもよいし、作業内容であってもよいし、作業対象物及び作業内容が規定されたサブプログラムであってもよい。第１作業に関する情報を用いるため、第２作業の作業対象の候補を適切に限定してユーザーに対して提示することが可能となり、ユーザーにとってはロボット動作を容易に教示することが可能になる。
【００４６】
また具体的には、本実施形態に係る処理装置は、作業が、時系列的に実行される第１作業〜第Ｎ（Ｎは２以上の整数）作業を含む場合に、複数のサブプログラムの各サブプログラムを、第１作業〜第Ｎ作業のいずれかの作業に分類して記憶する記憶部１１０をさらに含んでもよい。そして処理部１２０は、第１作業〜第Ｎ作業のうち、第ｉ（ｉは１≦ｉ≦Ｎ−１を満たす整数）作業のサブプログラムが、複数のサブプログラムから、実行対象となるサブプログラムである実行サブプログラムとして選択された場合に、第ｉ＋１作業に含まれる実行サブプログラムの候補が表示された、編集画面を表示させる。
【００４７】
ここで、第１作業〜第Ｎ作業は、上述したようにそれぞれが作業カテゴリに対応するものであってもよい。つまり、第１作業〜第Ｎ作業は、第１〜第Ｎの作業カテゴリに置き換えて考えることが可能である。第１〜第Ｎの作業カテゴリとは、図５（Ｂ）に示すように、給材、位置決め、処理、除材の４つのカテゴリであってもよい。ただし、作業カテゴリはこの４つに限定されず、一部の作業カテゴリを削除したり、他の作業カテゴリを追加する等の変形実施が可能である。「時系列的に実行される第１作業〜第Ｎ作業（第１〜第Ｎの作業カテゴリ）」とは、典型的な作業手順において、所与の作業カテゴリに属する作業が実行された後に、次の作業カテゴリに属する作業が実行されるといったように、作業カテゴリごとの実行順序が定まっていることを表す。例えば、所与のワークの位置決め作業は、当該ワークが給材エリアからロボットの作業エリアまで供給されていなければ実行できないため、給材→位置決めという順序が設定できるし、所与のワークに対する作業はワークの位置決め後でないと実行できないため、位置決め→処理という順序が設定できる。
【００４８】
また、処理部１２０により表示される編集画面を用いることで、作業シナリオが作成されるものとしてもよい。ここでの作業シナリオとはロボットに作業を実行させるためのシナリオ（プログラム）であり、複数のサブプログラムを組み合わせることで構成される。作業シナリオの編集画面とは、作業シナリオを構成するサブプログラムをユーザーに選択させる際に、当該ユーザーに対して提示されるインターフェース画面である。編集画面の詳細については後述するが、例えば図９〜図１１や図１７等に示した画面を用いてもよい。なお、本実施形態では、記憶部１１０に記憶されるサブプログラムのうち、ユーザーにより選択され、作業シナリオに含まれることになったサブプログラムを実行サブプログラムとも表記する。
【００４９】
これにより、サブプログラムを作業カテゴリに分類しておき、所与のサブプログラムが選択された場合に、次に選択される候補となるサブプログラムを作業カテゴリに基づいて限定して編集画面で提示することで、ユーザーによる作業シナリオの生成を容易にすることが可能になる。具体的には、第ｉの作業カテゴリに属するサブプログラムの次には、第ｉ＋１の作業カテゴリに属するサブプログラムが実行されるという前提があることから、第１〜第ｉ−１の作業カテゴリ及び第ｉ＋２〜第Ｎの作業カテゴリのサブプログラムを候補から外すことができ、ユーザーによるサブプログラムの選択を容易にしている。さらに、作業カテゴリを用いることで、不適切な作業順序である作業シナリオの作成を抑止できる。例えば本実施形態の手法を用いれば、ワークの給材前に当該ワークの位置決めを行うような作業シナリオが作成される可能性を抑止（狭義には防止）できる。
【００５０】
なお、本実施形態の処理装置は、ロボット（ロボットシステム）に含まれる制御装置とは異なる機器であってもよい。この場合、処理装置は作業シナリオの生成を行うが、当該作業シナリオに従ったロボット制御にまで関係するものではない。作成された作業シナリオを処理装置とは異なるロボット制御装置に対して入力し、当該ロボット制御装置において、作業シナリオに従ったロボット制御が行われる。
【００５１】
ただし、本実施形態の手法は、図２に示したように、ロボットが行う作業を編集するための編集画面を表示させる処理部１２０を含み、作業は、第１作業と第２作業とを含み、処理部１２０は、編集画面で第１作業における作業対象物又は作業内容が選択された場合に、第２作業の作業対象の候補を編集画面に表示させるロボットに適用できる。さらに具体的には、上記の記憶部１１０と、処理部１２０を含むロボットに適用できる。図２の構成であれば、本実施形態に係るロボットは制御装置１００と、ロボット本体３００を含み、記憶部１１０及び処理部１２０は、例えば制御装置１００に含まれることになる。ロボット本体３００は、アーム３１０と、当該アーム３１０の先端等に設けられるエンドエフェクター３１９を含む。ここでのエンドエフェクター３１９とは、ワークを把持するハンドであってもよいし、アーム３１０に対して取り付けられる工具等であってもよい。
【００５２】
この場合、制御装置１００は、表示部２００に図９等の編集画面を表示し、操作部５００等を用いたユーザーからの入力情報を受け付けることで、作業シナリオの生成を行うとともに、生成された作業シナリオに基づいて、ロボット本体３００の制御を行う。
【００５３】
なお、本実施形態に係るロボットの構成例は図２に限定されない。例えば、図３に示したように、ロボットは、ロボット本体３００と、ベースユニット部４００を含んでもよい。ロボット本体３００は双腕ロボットであってもよく、頭部や胴体に相当する部分に加え、第１のアーム３１０と第２のアーム３２０を含む。図３では第１のアーム３１０は、関節３１１，３１３と、関節の間に設けられるフレーム３１５，３１７から構成され、第２のアーム３２０についても同様のものとしたがこれに限定されない。なお、図３では２本のアームを有する双腕ロボットの例を示したが、本実施形態のロボットは３本以上のアームを有してもよい。
【００５４】
ベースユニット部４００は、ロボット本体３００の下部に設けられ、ロボット本体３００を支持する。図３の例では、ベースユニット部４００には車輪等が設けられ、ロボット全体が移動可能な構成となっている。ただし、ベースユニット部４００が車輪等を持たず、床面等に固定される構成であってもよい。図３のロボットでは、ベースユニット部４００に制御装置１００が格納されることで、ロボット本体３００と制御装置１００とが一体として構成される。
【００５５】
その他、本実施形態の手法をロボットに適用する場合に、当該ロボットの構成や、ロボットに含まれるロボット本体３００の構成は、種々の変形実施が可能である。
【００５６】
また、本実施形態の手法は、ロボットと、ロボットが行う作業を編集するための編集画面を表示する表示部と、を含み、作業は、第１作業と第２作業とを含み、表示部は、編集画面で第１作業における作業対象物又は作業内容が選択されることによって、第２作業の作業対象の候補を前記編集画面に表示するロボットシステムに適用できる。ここでの表示部とは例えば図２の２００に対応するものであり、ロボットとは図２の３００に対応するものであってもよい。また、ロボットシステムは編集画面の生成処理を行う処理装置を含んでもよく、処理装置は例えば図２の１００に対応するものであってもよい。
【００５７】
この場合、ユーザーはロボットシステムの表示部に表示される編集画面に沿って操作（選択）を行っていくことで、ロボットシステムのロボットに対して動作を教示し、当該教示に従ってロボットを動作させることが可能になる。
【００５８】
以下、本実施形態の手法について詳細に説明する。まず各サブプログラムのデータ構造の例を示す。その後、本実施形態の処理の流れを、各ステップにおいて表示される編集画面を用いて詳細に説明する。
【００５９】
２．データ構造
図４に本実施形態の手法の概念図を示す。本実施形態では、サブプログラムＤＢ（作業ライブラリ）と、ワークＤＢから情報を読み出して編集画面（作業シナリオエディタ）に表示する。そして編集画面に対するユーザーの入力に基づいて、作業シナリオを作成する。編集画面の詳細及び作業シナリオの作成手法の詳細については後述するものとし、ここでは記憶部１１０に記憶されるサブプログラムＤＢと、ワークＤＢについて説明する。
【００６０】
サブプログラムＤＢに記憶されるサブプログラムのデータ構造の例を図５（Ａ）〜図５（Ｃ）に示す。サブプログラムＤＢは、図５（Ａ）〜図５（Ｃ）に示されるデータ構造を有するサブプログラムを複数記憶するデータベースである。
【００６１】
図５（Ａ）が、サブプログラムのデータ構造の例であり、各サブプログラムは、動作内容情報と、カテゴリ情報と、入力コンテキスト（入力状態情報）と、出力コンテキスト（出力状態情報）と、作業対象として選択可能なワークを表す情報（選択可能ワーク情報）とを含む。
【００６２】
動作内容情報は、各サブプログラムを呼び出すことで実行されるロボットの動作の内容を具体的に記載した情報である。動作内容情報の詳細については後述する。
【００６３】
カテゴリ情報は、第１〜第Ｎの作業カテゴリのうち、サブプログラムがいずれのカテゴリに属するかを表す情報である。本実施形態の記憶部１１０は、複数のサブプログラムの各サブプログラムを、時系列的に実行される給材カテゴリ、位置決めカテゴリ、処理カテゴリ、及び除材カテゴリのいずれかの作業カテゴリに分類して記憶してもよい。これは、第１作業〜第Ｎ作業が、作業対象物の給材を行う給材作業、作業位置を決定する位置決め作業、作業対象物に対する処理を行う処理作業、及び処理後の作業対象物の除材を行う除材作業である、と言い換えることが可能である。その場合、図５（Ａ）の「カテゴリ」の項目に入れられる具体的な情報は、図５（Ｂ）に示したように、「給材」、「位置決め」、「処理」、「除材」のいずれかの値となる。
【００６４】
まず「処理」のカテゴリを設けることで、ワークに対する具体的な作業を実現することができる。具体的な作業とは、２つ以上のワークを結合するものであってもよいし、１つのワークを折り曲げたり、回したり、ワークに対して何らかの部材を注入するものであってもよい。
【００６５】
しかし、ロボットは基本的には人間とは異なり、ワーク位置を逐一確認しながら作業位置を調整することが困難である。ビジュアルサーボ等の技術も知られるようになっているが、それでも「処理」を行うためにはある程度ワークの位置を決定しておくことが必要となる。よって本実施形態では、「処理」のカテゴリの前のカテゴリとして「位置決め」のカテゴリを設けている。
【００６６】
さらに、そもそも位置決めを行うためには、作業の対象であるワークがロボットの作業エリア（例えばロボットの正面）になくてはならない。工場のライン等では、ワークの給材エリアを設けておき、作業対象のワークを一旦給材エリアに置いておき、当該給材エリアから作業エリアまでワークを移動させる給材動作を行うことが一般的である。よって本実施形態では「位置決め」のカテゴリの前のカテゴリとして「給材」のカテゴリを設ける。「給材」カテゴリを設けることによって、何らかの手法によりワークを給材エリアまで供給しておけば、後の作業はロボットに委ねることが可能になり、作業の効率化等が可能である。
【００６７】
また、「処理」の終わったワークをいつまでも作業エリアにとどめておいたのでは、後の作業の障害となるし、処理後のワークを次の工程に移行させることもできない。よって本実施形態では「処理」のカテゴリの次のカテゴリとして「除材」のカテゴリを設け、処理の終わったワークを、作業エリアから所定の除材エリアまで移動させるものとしている。
【００６８】
以上で説明したように、「給材」、「位置決め」、「処理」、「除材」の４つのカテゴリを設けることで、典型的なロボットの作業をスムーズに実行することが可能である。もちろん、上述したように他のカテゴリを追加したり、いくつかのカテゴリを削除する等の変形実施を行ってもよい。例えば、高精度のビジュアルサーボを高速で実行可能になるのであれば、「位置決め」のカテゴリを削除してもよい。
【００６９】
また、本実施形態の記憶部１１０は、複数のサブプログラムの各サブプログラムとして、処理実行前のロボットの状態を表す入力状態情報と、処理実行後のロボットの状態を表す出力状態情報とが対応づけられた情報を記憶する。
【００７０】
具体的には、図５（Ａ）に示したように、サブプログラムＤＢに含まれる各サブプログラムは、入力コンテキスト（入力状態情報）と、出力コンテキスト（出力状態情報）を含む情報となる。
【００７１】
本実施形態では、後述するようにサブプログラムにコンテキストを含めることで、編集画面に表示する実行サブプログラムの候補を限定する。よって、サブプログラムにコンテキストを含めておけば、作業カテゴリによる限定の他に、さらに候補となるサブプログラムを絞り込むことができるため、ユーザーによる選択を容易にするとともに、生成される作業シナリオをより適切なものとすることが可能になる。
【００７２】
各コンテキストは、例えば図５（Ｃ）に示すデータ構造を有する情報である。図５（Ｃ）の例であれば、コンテキストはロボットの左手、左腕、右手、右腕、腰の各状態を表す情報となる。ロボットが図３に示す構成であれば、左腕とは第２のアーム３２０に対応し、左手とは第２のアーム３２０に設けられるエンドエフェクター３２９に対応する。同様に、右腕とは第１のアーム３１０に対応し、右手とは第１のアーム３１０に設けられるエンドエフェクター３１９に対応する。腰とは、右腕と左腕が接続される本体部に設けられれ、ここでは当該腰部分に関節が設けられ、腰回りでの回転が可能であることを想定している。図３のロボットの例であって、本体部の３３０の部分に、矢印の方向に回転可能な関節が設けられるとすれば、３３０が腰に対応することになる。
【００７３】
コンテキストの各項目に実際に入力される値は、それぞれの項目の状態を表す値となる。図５（Ｃ）の例であれば、右手、左手については、どのようなワークを把持しているか、或いは何も把持していない（空である）という状態に対応する値となる。
【００７４】
右腕、左腕については、各腕の姿勢を表す値となる。腕の姿勢は、各腕に含まれる関節角の値により定義でき、例えばアームが人同様に肩、肘、手首のそれぞれに２つの自由度を有する６自由度のアームであれば、６つの関節角の値の組により１つの姿勢が表現される。広義には、アームの自由度の数だけの関節角の組を、腕に関する状態情報として用いることが可能である。或いは、アームの姿勢を厳密に区別する必要がないのであれば、アームの典型的な姿勢として複数の姿勢を定義しておき、当該複数の姿勢のうち、現在のアーム状態に最も近い姿勢をアームを表す状態情報として用いてもよい。
【００７５】
腰については、腰の基準方向に対する腰関節の回転角を、腰の状態を表す情報として用いればよい。
【００７６】
なお、コンテキストに含まれる要素は、図５（Ｃ）に限定されず、いくつかの要素を削除してもよいし、他の要素を追加してもよい。例えば、ロボットが図２に示したように単腕のロボットであれば、ハンド及びアームに関する要素は１つずつあれば充分である。逆に、３本以上のアームを有するロボットであれば、ハンド及びアームに関する要素をアームの本数分だけ用いてもよい。また、ワークの検査用やビジュアルサーボ用に撮像部を含むロボットであれば、当該撮像部の情報をコンテキストの要素として含んでもよい。
【００７７】
また、コンテキストの各要素の値として入力される情報も種々の変形実施が可能である。例えばハンドについての値として、図５（Ｃ）のように把持しているか否か、把持しているワークが何かを表す情報を用いてもよいし、さらに細かい情報として把持状態でのハンドの可動部（例えば指構造等）の位置姿勢を含む値としてもよい。撮像部をコンテキストの要素として加える場合にも、オン／オフを表す情報を値としてもよいし、撮像方向や撮像画像における物体認識処理の結果情報等を値としてもよい。その他、コンテキスト（入力状態情報、出力状態情報）については種々の変形実施が考えられる。
【００７８】
また、図４に示したように、本実施形態の記憶部１１０は、複数のワークに関する情報をワーク情報（ワークＤＢ、作業対象物情報）として記憶する。それとともに、記憶部１１０は図５（Ａ）に示したように、複数のサブプログラムの各サブプログラムとして、複数のワークのうち作業対象として選択可能なワークである選択可能ワークを特定する選択可能ワーク情報（選択可能作業対象物情報）が対応づけられた情報を記憶する。
【００７９】
ワークＤＢには、ロボットの作業対象となり得るワークの情報をワーク情報として記憶しておく。ワーク情報は、ワークを識別可能な最低限の情報であってもよい。例えば、ワークＡ、ワークＢ、・・・といった複数のワークが作業対象となり得るということだけを記憶しておき、ワークＡやワークＢが具体的にどのような大きさ、形状のワークであるかという情報は保持していなくてもよい。
【００８０】
或いは、各ワークの大まかな種別、形状、重量、色等のワークの特性を表す種々の情報を、ワークを識別する情報（例えばワークの名称）と合わせて記憶しておいてもよい。なお、本実施形態の手法において、実行サブプログラムの候補を限定する際に、ワーク情報に含まれるいずれの情報を用いるかは任意である。詳細については後述する。
【００８１】
図５（Ａ）に示したサブプログラムに含まれる選択可能ワーク情報とは、ワークＤＢに含まれる複数のワークのうち、当該サブプログラムの作業対象として選択可能なワークを表す情報である。
【００８２】
例えば「処理」カテゴリに含まれ、２つのワークをスナップフィットにより結合する処理を行うサブプログラムでは、一方のワークの凸部を、他方のワークの凹部にはめ込んで引っかける作業を行う。つまり対象となるワークは、射出成形の段階で凸部や凹部を有している、或いはスナップボタン等の機構が取り付けられるワークに限定され、凸部や凹部を持たないワークをスナップフィットにより結合することはできない。よって、このようなサブプログラムでは、選択可能ワーク情報として、凸部又は凹部を含むワークを表す情報を記憶しておく。このようにすれば、スナップフィットを実行できないワークを対象としているのに、スナップフィット用のサブプログラムを呼び出してしまうという、不適切な作業シナリオの生成を抑止できる。
【００８３】
なお、本実施形態では後述するように、ワークＤＢを参照して、ユーザーに対して作業対象であるワーク（作業対象ワーク）を選択させ、選択されたワークと各サブプログラムの選択可能ワーク情報に基づいて、実行可能なサブプログラムを限定して、編集画面の表示処理を行う。
【００８４】
つまり本実施形態では、上述してきたように、作業カテゴリ、コンテキスト、ワークのそれぞれを用いて、サブプログラムＤＢに含まれる複数のサブプログラムから実行サブプログラムの候補を抽出して編集画面に表示する。これにより、適切なサブプログラムが表示対象となるため、ユーザーの選択が容易になるし、作成された作業シナリオの妥当性も高いものとなる。具体的な抽出、表示処理については後述する。
【００８５】
次に、サブプログラムの動作内容情報の具体例について説明する。図６に「給材（取る、ｐｉｃｋ）」、「位置決め（セットする、ｓｅｔ）」、「処理（結合する／処理する、ｃｏｎｎｅｃｔ／ｐｒｏｃｅｓｓ）」、「除材（置く、ｐｌａｃｅ）」のそれぞれの作業カテゴリで、想定される作業の内容を示す。
【００８６】
例えば、「給材」のカテゴリでは、給材エリアにパレタイズされている（パレットの上に特定の位置関係で配置されている）ワークを作業エリアまで移動させる作業を表す「パレット」や、特に位置関係が規定されずに置かれているワークを作業エリアまで移動させる作業を表す「バラ置き」、山状に積み上げられたねじ等の小型部品を作業エリアまで移動させる作業を表す「ビン置き」等の作業が考えられる。その他、「給材」のカテゴリには、それ以前のロボット作業による生成され、作業エリアのいずれかの位置（例えば他の作業の障害とならない端の位置）に退避されていた物を作業が容易な位置（例えばロボット正面）まで移動させる「作業エリア」や、ベルトコンベアで供給されるワークを作業エリアまで移動させる「ベルトコンベア」等がある。また、人が適切な位置までワークを持って行く場合や、以前のロボット作業の終了時に作業エリアの適切な対置にワークが配置されている場合のように、給材作業が不要な場合もあり得る。そこで本実施形態では、「給材」のカテゴリ作業には、何も行わない「なし」も含まれるものとしている。
【００８７】
また、「位置決め」のカテゴリでは、所定位置にワークを配置する「置く」や、位置決め穴を有する治具等にワークを配置する「差し込む」等の作業、或いは何もしない「なし」等が考えられる。
【００８８】
また、「処理」のカテゴリでは、２つ以上のパーツを結合する作業であれば「スナップフィット」、「ねじ留め」、「リング留め」、「圧入」、「挿入」、「半田付け」、「接着」が考えられる。また主として１つのワークを対象とする場合には「折り曲げ」、「注入」、「押す」、「回す」、「取る」等の作業が考えられる。また、パーツの数によらず「なし」を作業に含めてもよい。
【００８９】
また、「除材」のカテゴリでは、「給材」のカテゴリの逆の作業を行えばよいため、作業エリアにあるワークを除材エリアのパレット状にパレタイズする「パレット」等の作業が考えられ、その他「バラ置き」、「ビン置き」、「作業エリア」、「ベルトコンベア」、「なし」といった作業が含まれる。
【００９０】
本実施形態では、図６に示した各作業を１つのサブプログラムにより表現してもよい。しかし上述したように、１つの作業（例えば「ねじ留め」という作業）であっても多くの作業のやり方が考えられる。よって、「ねじ留め」という１つの作業に対して、複数のサブプログラムが用意されることが想定され、本実施形態の各サブプログラムの動作内容情報は、図６に示した各作業よりも詳細な情報を含むことになる。
【００９１】
図７にサブプログラムの動作内容情報の一例を示す。図７は「ねじ留め」を実行するサブプログラムの例であり、具体的にはサブプログラムを一意に識別する識別情報と、作業の概要を示す概要情報と、作業に必要な条件を示す条件情報を含む。
【００９２】
ここでの識別情報とは、図７のＤ１に示したように作業の名称である。
【００９３】
また、概要情報とは、図７の例であればＤ２に示したように、「裏面の４箇所のネジをＢ１からＢ４の順に電動ドライバーを使用してトルクＮで止める」という情報である。概要情報と同等の（或いはより詳細な）情報は、後述する条件情報に含まれているため、概要情報はシステム側（処理装置の処理部１２０）にとってはそこまで重要とならない。しかし、ユーザーに対してサブプログラムが実行する作業内容を容易に理解させるという点で意義のある情報である。
【００９４】
条件情報は、図７のＤ３に示したように、使用部品（ワーク、工具、治具）と、作業手順等を示す情報である。ここでは、使用するネジや電動ドライバー、締結物のメーカーや品番等を規定するとともに、ねじ留め順序や止める個数、その際のトルクを規定している。さらに、作業実行時に行う動作に関する条件だけではなく、作業を実行する前提となる制約条件を記憶していてもよい。ここでは電動ドライバーの把持状態、締結物の位置関係、ねじの供給方法等が制約条件として記憶されるものとしている。
【００９５】
図７は「ねじ留め」を実行するサブプログラムの一例であり、上述したように別のねじ留め作業を行う「ねじ留め２」、「ねじ留め３」といったサブプログラムが用意されることになる。また、「スナップフィット」についても同様であり、「スナップフィット」を実行するサブプログラムとしても「スナップフィット１」、「スナップフィット２」といった複数のサブプログラムが用意される。つまり、図６に示したように、各作業カテゴリが複数の（図６の例では必ず複数だが１つでもよい）具体的な作業を含むものであり、各作業が１又は複数のサブプログラムにより実現されることになる。
【００９６】
３．画面フロー
次に、図８のフローチャートと、各ステップでの編集画面の例を用いて、本実施形態で行われる処理の詳細について説明する。図９に本実施形態で用いられる編集画面の一例を示す。編集画面（作業シナリオエディタ）は図９に示したように、作業で用いられる材料・部品（ワーク）を入力する領域Ａ１と、作業で用いられる機械、治具、工具を入力する領域Ａ２と、実際に作業シナリオを構成するサブプログラムを選択、表示していく領域Ａ３を含む。なお、本実施形態で用いられる編集画面は図９や、後述する図１０、図１１、図１７等に限定されるものではない。
【００９７】
以下では、まずロボット作業において対象となるワークが１つの例について説明し、その後、ワークが複数用いられる場合について説明する。
【００９８】
３．１  ワークが１つの場合の画面フロー
図８のフローチャートを用いて、本実施形態の処理の流れを説明する。本実施形態の処理が開始されると、まず作業の対象となるワークを決定するため、ワークの検索処理が行われる（Ｓ１０１）。具体的には、図９の編集画面のＡ１の領域のうち、Ａ１１に示した検索ボタンの押下を検出することで、図１０に示した検索画面を表示する処理を行ってもよい。図１０の検索画面では、領域Ｂ１を用いることで、ワークの種別や、形状、重量、色、名称を入力可能となっている。処理装置の処理部１２０は、領域Ｂ１を用いたユーザー入力に基づいて、入力された種別、形状、重量、色、名称と一致するワークを、記憶部１１０のワークＤＢに記憶されたデータから検索し、検索結果をＢ２に表示する処理を行う。もちろん、種別、形状、重量、色、名称の全てを入力する必要はなく、非入力の項目があってもよい。例えば、重量が非入力の場合には、重量については全てのワークが対象として選択される。また、全ての項目を非入力とすることが可能な仕様としてもよく、その場合にはワークＤＢに記憶された全てのワークが検索結果として表示されることになる。
【００９９】
検索結果はＢ２にリストとして表示される。この際、特定の項目によりソートする等の処理を行ってもよい。ユーザーは、リスト表示されたワークから、作業の対象となるワークを選択し、Ｂ２１に示した決定ボタンを押下する。処理部１２０は、決定ボタンの押下を検出した際に、選択状態にあったワークを作業対象のワークであると特定し、その結果を図９のＡ１に表示する処理を行う（Ｓ１０２）。ここでは、１つのワークを対象とする作業について説明しているため、Ｓ１０１、Ｓ１０２の処理は一回行えばよい。後述するように複数のワークを作業対象とする場合には、上述したワークの検索処理を複数回繰り返すことになる。また、使用機械や、治具、工具については特に説明しないが、これらについてもワークと同様に検索処理を行えばよい。
【０１００】
作業対象となるワーク（作業対象ワーク）が選択されたら、当該作業対象ワークの情報に基づいて、サブプログラムを決定していく。具体的には、作業対象となるワークである作業対象ワークが決定された場合に、処理部１２０は、複数のサブプログラムのうち、選択可能ワーク情報に基づいて、作業対象ワークが選択可能ワークであると判定されたサブプログラムを、実行サブプログラムの候補として編集画面に表示する処理を行う。
【０１０１】
さらに具体的には、処理部１２０は、まずＳ１０２で選択されたワークの中から、最初に作業対象となるワークを決定する。ここでは１つの作業対象ワークが１つである例をまず説明するため、この処理をスキップしてもよい。作業対象ワークが複数の場合には、例えば、Ａ３の領域のうち、Ａ３１の矢印ボタンが押下された場合に、領域Ａ１を用いて選択されたワークをリスト表示し、そのうちの１つの選択をユーザーに促してもよい。
【０１０２】
次に、作業カテゴリのうち最初の作業カテゴリに属する実行サブプログラムを決定する。具体的には、処理部１２０はサブプログラムＤＢに記憶された複数のサブプログラムのうち、決定された作業対象ワークを作業対象として選択可能なサブプログラムを抽出する（Ｓ１０３）。この処理は、サブプログラムのうち図５（Ａ）に示した選択可能ワーク情報を参照し、選択可能なワークに作業対象ワークが含まれるものを抽出することで実現できる。さらに、抽出されたサブプログラムのうち、作業カテゴリが最初のカテゴリ（ここでは「給材」のカテゴリ）に属するサブプログラムを抽出する。
【０１０３】
そして抽出結果を編集画面に表示する処理を行う。これは例えば、作業対象ワークが決定されたタイミングや、Ａ３２に示した給材カテゴリ用の矢印ボタンが押下されたタイミングで、抽出結果画面を表示すればよい。抽出結果画面は、例えば図１１に示したように抽出結果であるサブプログラムをリスト表示する画面である。ただし、抽出結果画面の表示タイミングや、表示される内容等は種々の変形実施が可能である。図１１のような抽出結果画面を図９の画面に重ねるように（或いは図９の画面とは別画面として）ポップアップ表示してもよいし、Ａ３２のボタンが押下された際のセレクトボックスとして表示してもよい。また、各サブプログラムの名称だけを表示するのではなく、具体的な処理内容等の詳細な情報を合わせて表示してもよい。処理部１２０は、抽出結果画面等を用いたユーザーの選択を受け付け、「給材」のカテゴリでの実行サブプログラムを決定し、図１２（Ａ）に示したようにＡ３の領域に表示する（Ｓ１０４）。
【０１０４】
このようにすれば、全てのサブプログラムがユーザーによる選択の対象となるわけではなく、作業対象ワークを選択可能なサブプログラムに選択対象を限定することができる。そのため、ユーザーによる選択が容易で、且つ所与のサブプログラムを、当該所与のサブプログラムでは対象とすることができないワークについて呼び出すような不適切な作業シナリオの生成を抑止できる。
【０１０５】
次に、処理部１２０は、第ｉの作業カテゴリのサブプログラムが、実行サブプログラムとして、複数のサブプログラムから選択された場合に、複数のサブプログラムのうち、第ｉ＋１の作業カテゴリに分類され、且つ入力状態情報が、実行サブプログラムとして選択された第ｉの作業カテゴリのサブプログラムの出力状態情報と合致するサブプログラムを、実行サブプログラムの候補として編集画面に表示する処理を行う。
【０１０６】
具体的には、「給材」のカテゴリのサブプログラムがＳ１０４で選択されたので、「給材」のカテゴリの次のカテゴリ（ここでは「位置決め」のカテゴリ）の実行サブプログラムを決定する。さらに具体的には、Ｓ１０３の抽出結果のうち、作業カテゴリが「位置決め」のカテゴリに属するサブプログラムを抽出する。
【０１０７】
また本実施形態では、作業カテゴリによる抽出だけでなく、入力状態情報（入力コンテキスト）、出力状態情報（出力コンテキスト）を用いた抽出もさらに行う。本実施形態で生成される作業シナリオでは、第ｉの作業カテゴリの実行サブプログラムと、第ｉ＋１の作業カテゴリの実行サブプログラムは連続して呼び出されることが想定される。そのため第ｉの作業カテゴリの実行サブプログラムが実行終了した際のロボットの状態と、第ｉ＋１の作業カテゴリの実行サブプログラムの実行前のロボットの状態は近い（狭義には一致する）ことが望ましい。逆に、状態が異なる場合には、２つの実行サブプログラムを連続的に呼ぶことができず、適切なロボット制御ができなかったり、適切なロボット制御を実現するために、２つのサブプログラムをブリッジする別のプログラムを用意する必要が生じたりする。
【０１０８】
そこで本実施形態では、第ｉの作業カテゴリの実行サブプログラムの出力コンテキストと、第ｉ＋１の作業カテゴリの実行サブプログラムの入力コンテキストとの比較処理を行うことで、２つの状態が近くなることを保証する。コンテキストの比較処理の例を図１３（Ａ）、図１３（Ｂ）に示す。図１３（Ａ）に示したように、コンテキストを構成する各要素をそれぞれ比較し、その全てが合致する場合には、出力コンテキストと入力コンテキストが合致すると判定する。一方、図１３（Ｂ）の「左手」や「右手」の項目に示したように、コンテキストを構成する要素のうち異なる要素がある場合には、出力コンテキストと入力コンテキストが合致しないと判定する。
【０１０９】
ただし、ここでの「コンテキストが合致する」とは完全一致である必要はない。例えば、コンテキストが複数の項目から構成される場合、所定の閾値以上の数の項目が合致していれば、他の項目が合致していなくても（部分一致であっても）、コンテキストとしては合致するという判定を行ってもよい。また、項目同士の比較処理においても、値が同一の場合だけ合致すると判定する必要はなく、値が所与の範囲にある場合には当該項目が合致すると判定する等、種々の変形実施が可能である。例えば、図１３（Ａ）等の「腰」の値について、０度の位置と１度の位置は厳密には異なる値であるが、それらは非常に近いものであるため、「腰」という項目については合致するといった判定が可能である。
【０１１０】
以上の処理を行い、「位置決め」のカテゴリの実行サブプログラムの選択においては、Ｓ１０３の抽出結果に対して、作業カテゴリ、コンテキストによる抽出処理をさらに行い（Ｓ１０５）、その結果が抽出結果画面として表示される。抽出結果画面の表示処理については「給材」カテゴリの場合と同様である。そして、表示された抽出結果画面によるユーザー入力を受け付けて、「位置決め」のカテゴリでの実行サブプログラムを決定する（Ｓ１０６）。Ｓ１０６の処理後の編集画面の例が図１２（Ｂ）である。
【０１１１】
以下同様であり、Ｓ１０３の抽出結果に含まれ（選択可能ワークに作業対象ワークが含まれ）、且つ作業カテゴリが「位置決め」の次の「処理」カテゴリに属し、且つ「位置決め」カテゴリの実行サブプログラムの出力コンテキストと入力コンテキストが合致するサブプログラムを、「処理」のカテゴリでの実行サブプログラムの候補として抽出し（Ｓ１０７）、抽出結果画面等を用いて実行サブプログラムを選択する（Ｓ１０８）。Ｓ１０８の処理後の編集画面の例が図１２（Ｃ）である。
【０１１２】
さらに、Ｓ１０３の抽出結果に含まれ（選択可能ワークに作業対象ワークが含まれ）、且つ作業カテゴリが「処理」の次の「除材」カテゴリに属し、且つ「処理」カテゴリの実行サブプログラムの出力コンテキストと入力コンテキストが合致するサブプログラムを、「除材」のカテゴリでの実行サブプログラムの候補として抽出し（Ｓ１０９）、抽出結果画面等を用いて実行サブプログラムを選択する（Ｓ１１０）。Ｓ１１０の処理後の編集画面の例が図１２（Ｄ）である。
【０１１３】
図８のフローチャートで想定しているロボット作業は、図１４に示したように１つのワークを対象として、「給材」、「位置決め」、「処理」、「除材」の各処理を行って、１つのワークを作業結果として取得するものである。上述した本実施形態の手法を用いれば、ユーザーは図９の画面を操作し、図１０や図１１等の画面を用いて提示された候補から所望の項目を選択していくだけで、図１４に示したロボット作業を実現する作業シナリオを容易に作成することができる。
【０１１４】
また、図８のフローチャートを用いて上述した処理を実行して、第１〜第Ｎの作業カテゴリの各作業カテゴリから、１つの実行サブプログラムが選択されることで、Ｎ個の実行サブプログラムが選択された場合に、処理部１２０は、時系列的に実行されるＮ個の実行サブプログラムをリスト表示する画面を、編集画面として表示する処理を行う。
【０１１５】
具体的には、ユーザーは候補を選択していくだけで、結果として図１２（Ｄ）に示した編集画面が表示される。図１２（Ｄ）の画面では、点線で囲んだ部分に作業対象ワークであるワークＡと、各作業カテゴリでの実行サブプログラムpick_1、set_1、process_1、place_1とが一列で表示（広義にはリスト表示）されることになる。つまり、ユーザーの選択操作の結果として図１２（Ｄ）の画面を表示することで、どのワークに対してどのようなサブプログラムをどの順番で呼び出すかという作業プログラムの概要を、わかりやすい形でユーザーに対して提示することが可能になる。
【０１１６】
なお、ここでの「Ｎ個」のカウントにおいては、図６を用いて上述した「なし（ｎｏｎｅ）」というサブプログラムも１つとして扱う。つまり、いずれかの作業カテゴリの作業がスキップされた場合であっても、スキップ用の実行サブプログラムが選択されるという場合に「Ｎ個」と言っているのであり、作業をスキップする際に「なし」という空命令を選択しないという実装であれば、リスト表示する実行サブプログラムは作業カテゴリ数よりも少なくなる。具体的には、第１〜第Ｎの作業カテゴリのうち、実行対象となる作業カテゴリの数だけの実行サブプログラムがリスト表示される。
【０１１７】
３．２  ワークが２つ以上の場合の画面フロー
ロボットの作業としては、ワークＡとワークＢを持ってきて、それを結合させてワークＡＢを作成するというものが考えられる。そのような作業は、図１５に示した模式図により表現される。具体的には、ワークＡを給材し位置決めする。その段階ではワークＢがないため、処理（結合）はできないし、ワークＡＢの作成もできていないので除材もできない。そこでワークＡに対する処理、除材はスキップする。ここでのスキップとは、作業内容が空命令「なし」である実行サブプログラムを選択する処理等で実現される。その後、ワークＢを給材し、位置決めすれば、ワークＡとワークＢを組み付ける作業ができるため、この段階で処理、除材を行えばよい。
【０１１８】
具体的な処理の流れを図１６に示す。具体的には図１５に示した作業を想定して説明するが、図１６のフローチャートは３つ以上のワークを用いる場合等、他の状況にも対応するものである。
【０１１９】
この処理が開始されると、まず図８のＳ１０１，Ｓ１０２と同様にワークの検索、選択処理を行う（Ｓ２０１，Ｓ２０２）。ただしここでは、作業対象となるワークが複数あることを想定しているため、Ｓ２０３でワーク選択が終了したかの判定を行い、終了していない場合にはＳ２０１に戻って検索、選択を繰り返す。具体的には、１回目のＳ２０１，Ｓ２０２の処理でワークＡを選択し、２回目のＳ２０１，Ｓ２０２の処理でワークＢを選択する。
【０１２０】
ワークの選択が終了したら、選択された複数のワークの中から、サブ作業における作業対象ワークを決定する（Ｓ２０４）。ここでのサブ作業とはロボット作業をより細かい単位に分割した場合の作業単位を表すものである。或いは、ここでのサブ作業とは、給材、位置決め、処理、除材の４つの作業カテゴリの集合として構成されるブロックであることから、サブ作業を作業ブロックとも表記する。以下ではサブ作業という用語を用いて説明するが、ロボット作業が第１〜第Ｍのサブ作業に分割される（第１〜第Ｍのサブ作業から構成される）とは、ロボット作業が第１作業ブロック〜第Ｍ作業ブロックの集合として構成されるということと同義である。
【０１２１】
具体的には、サブ作業（作業ブロック）は作業対象ワークに基づいて決定されてもよい。その場合、処理部１２０は、ロボットによる作業の対象であるワークに基づいて、作業をワーク単位で設定される第１〜第Ｍのサブ作業に分割し、第１〜第Ｍのサブ作業の各サブ作業について、第１〜第Ｎの作業カテゴリの各作業カテゴリについての実行サブプログラムの選択に用いられる編集画面の表示処理を行う。これは言い換えれば、処理部１２０は、ロボットの作業対象物に基づいて、作業を作業対象物単位で設定される第１作業ブロック〜第Ｍ作業ブロックに分割し、第１作業ブロック〜第Ｍ作業ブロックの各作業ブロックについて、第１作業〜第Ｎ作業の各作業についての実行サブプログラムの選択に用いられる編集画面を表示させる、ということに対応する。
【０１２２】
例えば、図１５で示したワークＡとワークＢを結合する作業を双腕ロボットで行う場合、一方のアームでワークＡを給材、位置決めする作業と、他方のアームでワークＢを給材、位置決めする作業を同時に実行することは不可能ではない。しかしワークＡを給材、位置決めし、その後にワークＢを給材、位置決めする場合に比べて、作業に用いる腕の制約も増えるし、ロボット制御も難しくなる。そこで本実施形態では、１つのワークを対象として処理を行い、当該ワークに対する処理の終了後に他のワークを対象として処理を行うものとする。つまり、ロボット作業全体をいくつかのサブ作業に分割する場合には、対象としているワークを１つ決定すれば、当該ワークに対する一連の作業から構成される作業を１つのサブ作業として設定することができる。このようにすれば、作業シナリオの作成、及び作成された作業シナリオに沿ったロボット制御の両方を容易に実行することが可能になる。
【０１２３】
つまりＳ２０４では、Ｓ２０１〜Ｓ２０２のループで選択した複数のワークに基づいて、次に作業対象とするワークを１つ選択する処理を行えばよい。図１５の作業例では、Ｓ２０４が最初に実行されるとワークＡが選択される。この処理は、例えば図９のＡ３１の矢印の押下に対して、図１７のワーク選択画面を表示する制御を行い、ワーク選択画面に基づくユーザーの選択操作を受け付けることで実現できる。
【０１２４】
図１７で表示されるワークは、狭義にはＳ２０１〜Ｓ２０２のループで選択した複数のワークであり、図１５で示した作業であれば図１７のようにワークＡとワークＢを表示すればよい。ただし、Ｓ２０１〜Ｓ２０２でワークＡとワークＢしか選択されていなくても、それらを組み付けることで作成されるワークＡＢに対する作業が行われる可能性もある。つまり、ワーク選択画面においては、Ｓ２０１〜Ｓ２０２に選択されたワークだけではなく、それらに基づいて求められる作業対象となり得るワークを全て表示するものとしてもよい。
【０１２５】
サブ作業での作業対象ワークが選択された後の、「給材」、「位置決め」のカテゴリの実行サブプログラムを選択するＳ２０５〜Ｓ２０８の処理は、図８のＳ１０３〜Ｓ１０６と同様である。また、「処理」、「除材」のカテゴリの実行サブプログラムを選択するＳ２０９〜Ｓ２１２の処理も、フローチャート上は図８のＳ１０７〜Ｓ１１０と同様である。ただし、上述したようにワークＡに対しては「処理」と「除材」のカテゴリの作業は一旦スキップされるため、ユーザーは作業内容が「なし」となるサブプログラムを選択する操作を行い、処理部１２０も図１８のＥ２の部分に示したように「処理」と「除材」が「なし（ｎｏｎｅ）」となる編集画面を表示することになる。
【０１２６】
Ｓ２１２の処理後に、全てのサブ作業に対する処理が終了したかの判定を行う（Ｓ２１３）。ワークＡに対応するサブ作業についての処理が終了した時点では、まだワークＢを結合するサブ作業が行われていない。よってＳ２１３でＮｏとなり、Ｓ２０４に戻る。
【０１２７】
その後、Ｓ２０４でワークＢを選択する処理を行い、Ｓ２０５〜Ｓ２０８によりワークＢを給材、位置決めする。その後、Ｓ２０９〜Ｓ２１０で、ワークＡとワークＢを結合する実行サブプログラムの選択処理が行われ、Ｓ２１１〜Ｓ２１２で、結合後のワークであるワークＡＢを除材する実行サブプログラムの選択処理が行われる。そして、ワークＡＢを除材する実行サブプログラムの選択後には、Ｓ２１３の判定でＹｅｓとなり処理が終了する。
【０１２８】
図１６のフローチャートを用いて上述した処理を実行することにより、ロボットによる作業が、第１〜第Ｍ（Ｍは２以上の整数）のサブ作業から構成され、第１〜第Ｍのサブ作業の各サブ作業に対して、第１〜第Ｎの作業カテゴリの各作業カテゴリから１つの実行サブプログラムが選択されることでＮ個の実行サブプログラムが選択され、ロボットによる作業に対して、Ｍ×Ｎ個の実行サブプログラムが選択された場合に、処理部１２０は、時系列的に実行されるＭ×Ｎ個の実行サブプログラムをリスト表示する画面を、編集画面として表示する処理を行う。これは言い換えれば、第１作業ブロック〜第Ｍ作業ブロックの各作業ブロックに対して、第１作業〜第Ｎ作業の各作業から１つの実行サブプログラムが選択されることでＮ個の実行サブプログラムが選択され、ロボットによる作業に対して、Ｍ×Ｎ個の実行サブプログラムが選択された場合に、処理部１２０は、時系列的に実行されるＭ×Ｎ個の実行サブプログラムをリスト表示する画面を、編集画面として表示させる、ということに対応する。
【０１２９】
具体的には、ユーザーは候補を選択していくだけで、結果として図１８に示した編集画面が表示される。図１８の画面では、Ｅ１で示した部分のうちの一行が１つのサブ作業に対応し、当該一行において、サブ作業における作業対象ワークと、当該作業対象ワークに対する各作業カテゴリでの実行サブプログラムが表示される。一番上の行が最初のサブ作業を表し、２番目の行が次のサブ作業を表すように、サブ作業についても時系列順に表示される。図１８の例であれば、一行目にA、pick_1、set_1、none、noneと表示され、２行目にB、pick_2、set_2、connect_2、place_2と表示（広義にはリスト表示）されることになる。つまり、ユーザーの選択操作の結果として図１８の画面を表示することで、ロボット作業がどのようなサブ作業をどの順番で実行するか、さらに各サブ作業がどのワークに対してどのようなサブプログラムをどの順番で呼び出すかという作業プログラムの概要を、わかりやすい形でユーザーに対して提示することが可能になる。
【０１３０】
なお、ロボット作業はより複雑なものであってもよい。例えば図１９のロボット作業では、ワークＡとワークＢを結合してワークＡＢを作成する作業、ワークＣに対して処理（例えば折り曲げ）を行ってワークＤを作成する作業、ワークＥとワークＡＢとワークＤを結合してワークＡＢＤＥを作成する作業を行う。
【０１３１】
この場合の作業シナリオ作成結果を表す編集画面は図２０のようになり、１〜２行目は図１８と同様にワークＡとワークＢからワークＡＢを作成する作業に対応する。また、３行目がワークＣからワークＤを作成する作業に対応する。そして、４行目でワークＥの位置決めまでを行い、５行目でワークＡＢの位置決めまでを行う。４〜５行目の「処理」、「除材」のカテゴリは「なし（ｎｏｎｅ）」となる。そして６行目でワークＤの給材と位置決め、及びワークＥ、ワークＡＢ、ワークＤの結合作業、作成されるワークＡＢＤＥの除材作業を行う。
【０１３２】
このようにすれば、図１９に示したような複雑な作業を実行する作業シナリオを生成する場合にも、ユーザーは選択した複数のワークに基づき決定される作業対象ワークの候補の中から、順次１つの作業対象ワークを選択していくことでサブ作業の設定ができるし、サブ作業ごとに表示される候補の中からサブプログラムを選択するだけでサブ作業を実現する実行サブプログラムの選択が可能になる。図１９の作業であれば、入力となるワークはＡ，Ｂ，Ｃ，Ｅの４つであるが、ＡとＢから作成されるワークＡＢや、Ｃから作成されるワークＤの存在も考慮して、６つの適切なサブ作業を容易に設定できる。また、各サブ作業で実行するサブプログラムを容易に選択可能とする点は、上述してきた単純な作業の場合と同様である。さらに、図１８の例と同様に、図２０の画面を表示することで、作成された作業シナリオをわかりやすい形でユーザーに対して提示することが可能である。
【０１３３】
なお、本実施形態の処理装置等は、その処理の一部または大部分をプログラムにより実現してもよい。この場合には、ＣＰＵ等のプロセッサーがプログラムを実行することで、本実施形態の処理装置等が実現される。具体的には、非一時的な情報記憶媒体に記憶されたプログラムが読み出され、読み出されたプログラムをＣＰＵ等のプロセッサーが実行する。ここで、情報記憶媒体（コンピューターにより読み取り可能な媒体）は、プログラムやデータなどを格納するものであり、その機能は、光ディスク（ＤＶＤ、ＣＤ等）、ＨＤＤ（ハードディスクドライブ）、或いはメモリー（カード型メモリー、ＲＯＭ等）などにより実現できる。そして、ＣＰＵ等のプロセッサーは、情報記憶媒体に格納されるプログラム（データ）に基づいて本実施形態の種々の処理を行う。即ち、情報記憶媒体には、本実施形態の各部としてコンピューター（操作部、処理部、記憶部、出力部を備える装置）を機能させるためのプログラム（各部の処理をコンピューターに実行させるためのプログラム）が記憶される。
【０１３４】
なお、以上のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語と共に記載された用語は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。また処理装置等の構成、動作も本実施形態で説明したものに限定されず、種々の変形実施が可能である。
【符号の説明】
【０１３５】
１００  制御装置、１１０  記憶部、１２０  処理部、３００  ロボット本体、
３１０  アーム、３１１，３１３  関節、３１５，３１７  フレーム、
３１９  エンドエフェクター、３２０  アーム、３２９  エンドエフェクター、
４００  ベースユニット部
【図１】
2015136762.tif 000003
【図２】
2015136762.tif 000004
【図３】
2015136762.tif 000005
【図４】
2015136762.tif 000006
【図５】
2015136762.tif 000007
【図６】
2015136762.tif 000008
【図７】
2015136762.tif 000009
【図８】
2015136762.tif 000010
【図９】
2015136762.tif 000011
【図１０】
2015136762.tif 000012
【図１１】
2015136762.tif 000013
【図１２】
2015136762.tif 000014
【図１３】
2015136762.tif 000015
【図１４】
2015136762.tif 000016
【図１５】
2015136762.tif 000017
【図１６】
2015136762.tif 000018
【図１７】
2015136762.tif 000019
【図１８】
2015136762.tif 000020
【図１９】
2015136762.tif 000021
【図２０】
2015136762.tif 000022