(57)【要約】【課題】  動作の記述に用いられる命令の処理対象が集合パラメーターであったとしても、動作における命令の構成を変更することなく、容易に所望の動作を実現するロボット制御システム、ロボットシステム及びプログラム等を提供すること。【解決手段】  ロボット制御システムは記憶部１１０と、命令を実行する処理部１２０と、処理部１２０の処理結果に基づきロボット３０の制御を行うロボット制御部（ロボット制御装置５０）を含み、記憶部１１０は処理部１２０が実行する命令の情報と命令の処理対象を表すパラメーターの情報を記憶し、処理部１２０は命令が複数の命令により構成されるシーケンス命令であり且つシーケンス命令のパラメーターの属性が集合パラメーターの属性である場合に、シーケンス命令を構成する複数の命令を変更することなく、パラメーターを変えながらシーケンス命令を複数回実行する。【選択図】      図２
2012240145.tif 000002
【特許請求の範囲】
【請求項１】
ロボットの制御に関する情報を記憶する記憶部と、
命令の実行処理を行う処理部と、
前記処理部の処理結果に基づいて前記ロボットの制御を行うロボット制御部と、
を含み、
前記記憶部は、
前記処理部が実行する前記命令の情報と、前記命令の処理対象を表すパラメーターの情報を記憶し、
前記処理部は、
前記命令が複数の命令により構成されるシーケンス命令であり且つ前記シーケンス命令の処理対象を表す前記パラメーターの属性が集合パラメーターの属性である場合に、前記シーケンス命令を構成する前記複数の命令を変更することなく、前記パラメーターを順次変えながら前記シーケンス命令を複数回実行することを特徴とするロボット制御システム。
【請求項２】
請求項１において、
前記パラメーターが、ワークを指定するワークパラメーターであり、前記ワークパラメーターの属性が前記集合パラメーターの属性である場合には、
前記処理部は、
前記ワークを変えながら前記シーケンス命令を複数回実行することを特徴とするロボット制御システム。
【請求項３】
請求項１において、
前記パラメーターが、目標位置を指定する位置パラメーターであり、前記位置パラメーターの属性が前記集合パラメーターの属性である場合には、
前記処理部は、
前記目標位置を変えながら前記シーケンス命令を複数回実行することを特徴とするロボット制御システム。
【請求項４】
請求項１乃至３のいずれかにおいて、
前記シーケンス命令は、
ワークを把持して、目標位置に移動する命令であることを特徴とするロボット制御システム。
【請求項５】
請求項４において、
前記ワークを指定するワークパラメーターの属性が前記集合パラメーターの属性であり、前記目標位置を指定する位置パラメーターの属性が非集合パラメーターの属性である場合には、
前記処理部は、
第１〜第Ｎ（Ｎは２以上の整数）のワークを１箇所の前記目標位置に移動させることで前記シーケンス命令の実行処理を行うことを特徴とするロボット制御システム。
【請求項６】
請求項４において、
前記ワークを指定するワークパラメーターの属性が非集合パラメーターの属性であり、前記目標位置を指定する位置パラメーターの属性が前記集合パラメーターの属性である場合には、
前記処理部は、
１個の前記ワークを第１〜第Ｍ（Ｍは２以上の整数）の目標位置に移動させることで前記シーケンス命令の実行処理を行うことを特徴とするロボット制御システム。
【請求項７】
請求項４において、
前記ワークを指定するワークパラメーターの属性が前記集合パラメーターの属性であり、前記目標位置を指定する位置パラメーターの属性が前記集合パラメーターの属性である場合には、
前記処理部は、
第１〜第Ｎのワークのうち第ｉ（ｉは１≦ｉ≦Ｎを満たす整数）のワークを、第１〜第Ｍの目標位置のうち第ｊ（ｊは１≦ｊ≦Ｍを満たす整数）の目標位置に移動させることで前記シーケンス命令の実行処理を行うことを特徴とするロボット制御システム。
【請求項８】
請求項１乃至７のいずれかにおいて、
前記記憶部は、
前記パラメーターの情報として、前記パラメーターの属性が前記集合パラメーターの属性であるか否かの情報を記憶し、
前記処理部は、
前記命令の実行処理の際に、前記命令の実行対象となる前記パラメーターの情報を参照することで、前記パラメーターの属性が前記集合パラメーターの属性であるか否かの判定を行うことを特徴とするロボット制御システム。
【請求項９】
請求項１乃至８のいずれかにおいて、
前記記憶部は、
前記シーケンス命令の記述に用いられる前記命令に関する情報である命令情報と、前記命令の処理対象を表すパラメーターとを結びつける命令テーブルを記憶するとともに、
前記命令のうち条件命令とシーケンス命令とが、１又は複数の前記条件命令を実行することにより、前記シーケンス命令が実行されるという関係を有する場合に、１又は複数の前記条件命令と、前記シーケンス命令に関する情報とを結びつけるシーケンス命令テーブルを記憶することを特徴とするロボット制御システム。
【請求項１０】
請求項９において、
前記記憶部は、
前記命令テーブルに第１〜第Ｑ（Ｑは１以上の整数）の命令レコードを記憶するとともに、前記シーケンス命令テーブルに第１〜第Ｐ（Ｐは２以上の整数）のシーケンス命令レコードを記憶し、
前記記憶部は、
第ｓ（ｓは１≦ｓ≦Ｐの整数）のシーケンス命令レコードにおいては、第ｔ（ｔは１≦ｔ≦Ｑの整数）の命令レコードにより表される前記命令を前記条件命令として記憶するとともに、第ｕ（ｕは１≦ｕ≦Ｐ、ｓ≠ｕの整数）のシーケンス命令レコードにおいては、前記第ｔの命令レコードにより表される前記命令を前記シーケンス命令として記憶することを特徴とするロボット制御システム。
【請求項１１】
請求項１乃至１０のいずれかに記載のロボット制御システムと、
前記ロボット制御システムにより制御されるロボットと、
を含むことを特徴とするロボットシステム。
【請求項１２】
ロボットの制御に関する情報を記憶する記憶部と、
命令の実行処理を行う処理部と、
前記処理部の処理結果に基づいて前記ロボットの制御を行うロボット制御部として、
コンピューターを機能させ、
前記記憶部は、
前記処理部が実行する前記命令の情報と、前記命令の処理対象を表すパラメーターの情報を記憶し、
前記処理部は、
前記命令が複数の命令により構成されるシーケンス命令であり且つ前記シーケンス命令の処理対象を表す前記パラメーターの属性が集合パラメーターの属性である場合に、前記シーケンス命令を構成する前記複数の命令を変更することなく、前記パラメーターを順次変えながら前記シーケンス命令を複数回実行することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボット制御システム、ロボットシステム及びプログラム等に関する。
【背景技術】
【０００２】
近年、様々な分野で産業用ロボットが広く用いられている。これらの産業用ロボットに対してユーザーの意図通りの動作を行わせるために、ロボットに実行させる作業内容を教示することが必要となる。
【０００３】
作業内容を教示するために、ロボットに行わせたい動作を、例えば動作ルーチン等の形式により記述する。そのため、今までロボットに対して行わせたことがないような新たな動作を指示するためには、新しく動作ルーチンを作成しなくてはならない。
【０００４】
特許文献１には、標準的な基本動作（標準動作）を規定する標準動作ルーチンを、部位ごとの動作を規定する部位動作モジュール等の組み合わせとして準備しておき、新たな動作ルーチンを追加する際には、標準動作ルーチンに用いられている特定の部位動作モジュールの削除、入れ替え、或いは新たな部位動作モジュールの追加により処理する手法が提案されている。特許文献１によれば、下位レベル（例えばアクチュエーターの動作プログラミングのレベル等）のプログラミングを意識することなく、既存のモジュールの組み替え等で動作ルーチンの新規作成或いは書き換え等を容易に行うことができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−１５３４７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１の手法では、動作の対象が集合パラメーターとなったとき（例えば目標位置に移動させたいワークが複数存在する等の場合）には、例えば１つのワークを１箇所に移動させる動作ルーチンとは別に、複数のワークを移動させる動作ルーチンを新規作成する等の大きな変更が必要になってしまう。
【０００７】
本発明の目的は、動作の記述に用いられる命令の処理対象が集合パラメーターであったとしても、動作における命令の構成を変更することなく、容易に所望の動作を実現するロボット制御システム、ロボットシステム及びプログラム等を提供することにある。
【課題を解決するための手段】
【０００８】
本発明の一態様は、ロボットの制御に関する情報を記憶する記憶部と、命令の実行処理を行う処理部と、前記処理部の処理結果に基づいて前記ロボットの制御を行うロボット制御部と、を含み、前記記憶部は、前記処理部が実行する前記命令の情報と、前記命令の処理対象を表すパラメーターの情報を記憶し、前記処理部は、前記命令が複数の命令により構成されるシーケンス命令であり且つ前記シーケンス命令の処理対象を表す前記パラメーターの属性が集合パラメーターの属性である場合に、前記シーケンス命令を構成する前記複数の命令を変更することなく、前記パラメーターを順次変えながら前記シーケンス命令を複数回実行するロボット制御システムに関係する。
【０００９】
本発明の一態様では、複数の命令によりシーケンス命令を記述するものとし、シーケンス命令の処理対象のパラメーターの属性が、集合パラメーターの属性であった場合に、シーケンス命令を記述する命令の構成は変更せずに、パラメーターを変えながらシーケンス命令を複数回実行する。これにより、集合パラメーターの属性を有するパラメーターが処理対象の場合にも、非集合パラメーターを処理対象とするシーケンス命令を複数回実行するだけでよいため、容易に処理を行うこと等が可能になる。
【００１０】
また、本発明の一態様では、前記パラメーターが、ワークを指定するワークパラメーターであり、前記ワークパラメーターの属性が前記集合パラメーターの属性である場合には、前記処理部は、前記ワークを変えながら前記シーケンス命令を複数回実行してもよい。
【００１１】
これにより、パラメーターがワークパラメーターであり、当該ワークパラメーターの属性が集合パラメーターの属性である場合にも、ワークを変えながら処理を実行することで、集合パラメーターに対する処理を行うことができる。
【００１２】
また、本発明の一態様では、前記パラメーターが、目標位置を指定する位置パラメーターであり、前記位置パラメーターの属性が前記集合パラメーターの属性である場合には、前記処理部は、前記目標位置を変えながら前記シーケンス命令を複数回実行してもよい。
【００１３】
これにより、パラメーターが位置パラメーターであり、当該位置パラメーターの属性が集合パラメーターの属性である場合にも、目標位置を変えながら処理を実行することで、集合パラメーターに対する処理を行うことができる。
【００１４】
また、本発明の一態様では、前記シーケンス命令は、ワークを把持して、目標位置に移動する命令であってもよい。
【００１５】
これにより、ワークを把持し目標位置に移動するという汎用性の高い動作指示に関して、パラメーター（ワークと目標位置）の属性が集合パラメーターになっても容易に処理を行うこと等が可能になる。
【００１６】
また、本発明の一態様では、前記ワークを指定するワークパラメーターの属性が前記集合パラメーターの属性であり、前記目標位置を指定する位置パラメーターの属性が非集合パラメーターの属性である場合には、前記処理部は、第１〜第Ｎ（Ｎは２以上の整数）のワークを１箇所の前記目標位置に移動させることで前記シーケンス命令の実行処理を行ってもよい。
【００１７】
これにより、複数個のワークを１箇所の目標位置に移動するシーケンス命令を容易に実行することができ、ワークをまとめたり、つみあげたり、目標位置に設けられた穴に落としたりする動作等が可能になる。
【００１８】
また、本発明の一態様では、前記ワークを指定するワークパラメーターの属性が非集合パラメーターの属性であり、前記目標位置を指定する位置パラメーターの属性が前記集合パラメーターの属性である場合には、前記処理部は、１個の前記ワークを第１〜第Ｍ（Ｍは２以上の整数）の目標位置に移動させることで前記シーケンス命令の実行処理を行ってもよい。
【００１９】
これにより、１個のワークを複数箇所の目標位置に移動するシーケンス命令を容易に実行することができ、印鑑を書類上の複数の箇所に捺印する動作等が可能になる。
【００２０】
また、本発明の一態様では、前記ワークを指定するワークパラメーターの属性が前記集合パラメーターの属性であり、前記目標位置を指定する位置パラメーターの属性が前記集合パラメーターの属性である場合には、前記処理部は、第１〜第Ｎのワークのうち第ｉ（ｉは１≦ｉ≦Ｎを満たす整数）のワークを、第１〜第Ｍの目標位置のうち第ｊ（ｊは１≦ｊ≦Ｍを満たす整数）の目標位置に移動させることで前記シーケンス命令の実行処理を行ってもよい。
【００２１】
これにより、複数個のワークを複数箇所の目標位置にそれぞれ移動するシーケンス命令を容易に実行することができ、移動するという命令の汎用性をさらに高めること等が可能になる。
【００２２】
また、本発明の一態様では、前記記憶部は、前記パラメーターの情報として、前記パラメーターの属性が前記集合パラメーターの属性であるか否かの情報を記憶し、前記処理部は、前記命令の実行処理の際に、前記命令の実行対象となる前記パラメーターの情報を参照することで、前記パラメーターの属性が前記集合パラメーターの属性であるか否かの判定を行ってもよい。
【００２３】
これにより、記憶部に記憶された情報に基づいて、処理対象を表すパラメーターの属性が集合パラメーターの属性であるか否かの判定を行うこと等が可能になる。
【００２４】
前記記憶部は、前記シーケンス命令の記述に用いられる前記命令に関する情報である命令情報と、前記命令の処理対象を表すパラメーターとを結びつける命令テーブルを記憶するとともに、前記命令のうち条件命令とシーケンス命令とが、１又は複数の前記条件命令を実行することにより、前記シーケンス命令が実行されるという関係を有する場合に、１又は複数の前記条件命令と、前記シーケンス命令に関する情報とを結びつけるシーケンス命令テーブルを記憶してもよい。
【００２５】
これにより、データベースのテーブルとして命令を記憶した上で、同様にデータベースのテーブルとしてシーケンス命令と条件命令の結びつけを記憶することが可能になる。
【００２６】
また、本発明の一態様では、前記記憶部は、前記命令テーブルに第１〜第Ｑ（Ｑは１以上の整数）の命令レコードを記憶するとともに、前記シーケンス命令テーブルに第１〜第Ｐ（Ｐは２以上の整数）のシーケンス命令レコードを記憶し、前記記憶部は、第ｓ（ｓは１≦ｓ≦Ｐの整数）のシーケンス命令レコードにおいては、第ｔ（ｔは１≦ｔ≦Ｑの整数）の命令レコードにより表される前記命令を前記条件命令として記憶するとともに、第ｕ（ｕは１≦ｕ≦Ｐ、ｓ≠ｕの整数）のシーケンス命令レコードにおいては、前記第ｔの命令レコードにより表される前記命令を前記シーケンス命令として記憶してもよい。
【００２７】
これにより、１つの命令をシーケンス命令として利用することも、条件命令として利用することもでき、命令構造の階層化が可能になる。
【００２８】
また、本発明の他の態様は、請求項１乃至１０のいずれかに記載のロボット制御システムと、前記ロボット制御システムにより制御されるロボットと、を含むロボットシステムに関係する。
【００２９】
また、本発明の他の態様は、ロボットの制御に関する情報を記憶する記憶部と、命令の実行処理を行う処理部と、前記処理部の処理結果に基づいて前記ロボットの制御を行うロボット制御部として、コンピューターを機能させ、前記記憶部は、前記処理部が実行する前記命令の情報と、前記命令の処理対象を表すパラメーターの情報を記憶し、前記処理部は、前記命令が複数の命令により構成されるシーケンス命令であり且つ前記シーケンス命令の処理対象を表す前記パラメーターの属性が集合パラメーターの属性である場合に、前記シーケンス命令を構成する前記複数の命令を変更することなく、前記パラメーターを順次変えながら前記シーケンス命令を複数回実行するプログラムに関係する。
【図面の簡単な説明】
【００３０】
【図１】本実施形態のシステム構成例。
【図２】本実施形態の詳細なシステム構成例。
【図３】図３（Ａ）、図３（Ｂ）は編集処理に用いられる画面の例。
【図４】記憶部に記憶されるデータベースのデータ構造例。
【図５】本実施形態で用いられる命令群の階層的な構造を説明する図。
【図６】本実施形態の全体の処理を説明するためのフローチャート。
【図７】ルール実行処理を説明するためのフローチャート。
【図８】パラメーターチェック処理を説明するためのフローチャート。
【図９】ルール群実行処理を説明するためのフローチャート。
【図１０】1ルール実行処理を説明するためのフローチャート。
【図１１】１個のワークを１箇所の目標位置に移動する例。
【図１２】複数のワークを複数の目標位置に移動する例。
【図１３】複数のワークを１箇所の目標位置に移動する例。
【図１４】１個のワークを複数の目標位置に移動する例。
【図１５】複数のロボットを用いて、複数のワークを複数の目標位置に移動する例。
【図１６】ワーク群の要素と位置群の要素との結び付けを説明する図。
【図１７】複数のロボットによる強調動作の際に用いられるデータ構造の例。
【図１８】本実施形態の他のシステム構成例。
【発明を実施するための形態】
【００３１】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【００３２】
１．本実施形態の手法
まず本実施形態の手法について説明する。ロボットにユーザーの意図通りの動作を行わせるためには、ロボットに実行させる作業内容を教示することが必要となる。教示は例えば、何らかの形で動作指示を記述し、記述された動作指示に従った信号をロボットに出力することで行われる。
【００３３】
上述した特許文献１の手法では、動作ルーチンという形で動作指示を記述している。一般的には、動作指示の記述は例えばアクチュエーターの動作プログラミングのような下位レベルの記述を要するように、相応の知識が求められる。特許文献１においては、標準動作ルーチンを部位動作モジュールにより構成し、当該部位動作モジュールの削除、入れ替え及び追加を行うことで、システム利用者に下位レベルの処理を意識させないことができるため、新たな動作ルーチンの作成等が容易になるとしている。しかし、上述の手法を用いても、動作の対象が集合パラメーターの属性を持つ場合（複数のワークを目標位置に移動させる場合等）には、非集合パラメーターを対象にする動作ルーチンで対処することができず、大幅な変更が必要になるという問題がある。
【００３４】
そこで、本出願人は以下の手法を提案する。まず、本実施形態においては動作指示の記述は、複数の命令から構成されるシーケンス命令を用いて行う。そして、非集合パラメーターを対象とするシーケンス命令が既に存在する場合、対象が集合パラメーターの属性を持つ動作指示をロボットに実行させる際に、命令を組み替えて別のシーケンス命令を作成する等の変更は行わない。非集合パラメーターを対象とする既存のシーケンス命令を構成する命令は変更せずに、パラメーターを変更しながら当該既存のシーケンス命令を実行することで対処する。
【００３５】
具体例を示す。「移動する（ｗｏｒｋ，ｐｏｉｎｔ）」という１つの物（ワーク）を１箇所の目標位置に移動するシーケンス命令（パラメーターであるｗｏｒｋ、ｐｏｉｎｔはともに非集合パラメーター）が既にある場合に、「移動する（ｗｏｒｋ群，ｐｏｉｎｔ群）」という複数のワークをそれぞれ別の目標位置に移動させるシーケンス命令を実行させるケースを考える。この場合には、上述の「移動する（ｗｏｒｋ群，ｐｏｉｎｔ群）」を「移動する（第１のｗｏｒｋ、第１のｐｏｉｎｔ）」〜「移動する（第Ｎのｗｏｒｋ，第Ｎのｐｏｉｎｔ）」というＮ個（Ｎはｗｏｒｋ群、ｐｏｉｎｔ群の数に相当）のシーケンス命令の繰り返しにより実現する。処理としては、パラメーターの属性情報を読み取り、集合パラメーターの属性である場合には、インデックスを自動的に付加しインデックスに従って非集合パラメーターを対象とするシーケンス命令を複数回実行することになる。
【００３６】
以下、システム構成例について説明した後、図４や図５等を用いて本実施形態において用いられる命令やシーケンス命令等の考え方について説明する。その後、フローチャートを用いて集合パラメーターの処理について説明する。
【００３７】
２．システム構成例
本実施形態に係るロボット制御システムを含むロボットシステムの構成例を、図１を用いて説明する。ロボットシステムは、情報処理装置１０と、撮像装置２０と、ロボット３０と、図１には不図示のロボット制御装置５０と、を含む。ただし、ロボットシステムは図１の構成に限定されず、これらの一部の構成要素を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
【００３８】
ロボット３０は、アーム３２０及びハンド３３０を有し、情報処理装置１０からの動作指示に従い処理を行う。例えばパレット４０に載せられたワークに対して処理を行う。撮像装置２０は、例えばワークを撮影可能な位置（パレットの直上でもよいし、ロボット３０のハンド３３０に取り付けられてもよい）に設けられ、主にワークの撮影を行う。そして、撮像画像の情報からワークの位置や姿勢等に関する情報を検出する。検出した情報は例えば情報処理装置１０等に送られてもよいし、直接ロボット３０に送られてもよい。また、ワークの位置や姿勢等に関する情報を検出できればよいため、撮像装置２０による撮像画像の取得以外の手法（例えばレーザー等を用いた３次元スキャン）を用いてもよい。
【００３９】
具体的な構成について図２を用いて説明する。情報処理装置１０は、記憶部１１０と、処理部１２０と、表示部１５０と、外部Ｉ／Ｆ部１６０を含む。
【００４０】
記憶部１１０は、データベースを記憶したり、処理部１２０等のワーク領域となるもので、その機能はＲＡＭ等のメモリーやＨＤＤ（ハードディスクドライブ）などにより実現できる。記憶部１１０は、ロボット制御データベース１１１（以下データベースを適宜ＤＢと表記する）を含む。ロボット制御データベース１１１は具体的には図４を用いて後述するデータベースであって、例えば命令テーブル１１３と、シーケンス命令テーブル１１５とを含む。命令テーブル１１３は命令に関するデータを記憶し、シーケンス命令テーブル１１５は、条件命令とシーケンス命令とを結びつけるもの（本実施形態においてはルールと呼ぶ）を記憶する。命令、条件命令、シーケンス命令、ルール等についての詳細は後述する。
【００４１】
また、ロボットが図１に示すようにアーム３２０とハンド３３０を有するロボットである場合には、記憶部１１０は、ワークＤＢ１１２と、ロボットＤＢ１１４とを含み、ロボットＤＢ１１４は、アームＤＢ１１６と、ハンドＤＢ１１８を含む。当該ロボットが複数のアームを備える場合は、アームＤＢ１１６とハンドＤＢ１１８は複数個であってもよい。ワークＤＢ１１２は、ワークの大きさ、形状、姿勢等の情報を記憶する。ロボットＤＢ１１４はロボットに関するデータを記憶する。具体的にはアームＤＢ１１６でアームの形状、可動範囲等を記憶し、ハンドＤＢ１１８でハンドの形状、大きさ等の情報を記憶する。ただし、記憶部１１０は図２の構成に限定されず、これらの一部の構成要素を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
【００４２】
処理部１２０は、記憶部１１０からのデータや、外部Ｉ／Ｆ部１６０において受信した、撮像装置２０或いはロボット３０からの情報等に基づいて種々の処理を行う。この処理部１２０の機能は、各種プロセッサ（ＣＰＵ等）、ＡＳＩＣ（ゲートアレイ等）などのハードウェアや、プログラムなどにより実現できる。
【００４３】
処理部１２０は、実行部１２２と、編集処理部１２４と、シミュレーション処理部１２６と、画像処理部１２８とを含む。処理部１２０は図２の構成に限定されず、これらの一部の構成要素を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。実行部１２２は、編集処理部１２４により編集され、記憶部１１０に記憶されたシーケンス命令を実行する。シーケンス命令は例えば、外部Ｉ／Ｆ部１６０を介して、ロボット制御装置５０に制御指示を行うことで実行される。編集処理部１２４は、シーケンス命令（或いはルール）の編集処理を行う。編集処理は、例えば図３（Ａ）、図３（Ｂ）のような画面を用いて行われる。シミュレーション処理部１２６は、編集処理部１２４により編集され、記憶部に記憶されたシーケンス命令の実行のシミュレーション処理を行う。よって具体的にはロボット制御装置５０の処理のシミュレーション等を行うことになる。また、画像処理部１２８は、撮像装置２０からの撮像画像情報を取得し、種々の画像処理を行う。ここでは画像処理部１２８は、情報処理装置１０の処理部１２０に設けられるものとしたがこれに限定されるものではない。画像処理部は撮像装置２０に内蔵されてもよい。
【００４４】
表示部１５０は、各種の表示画面を表示するためのものであり、例えば液晶ディスプレイや有機ＥＬディスプレイなどにより実現できる。
【００４５】
外部Ｉ／Ｆ部１６０は、情報処理装置１０に対するユーザーからの入力等を行ったり、撮像装置２０やロボット３０からの情報を受け付けるためのインターフェースである。ユーザーからの入力等に関しては、スイッチやボタン、キーボード或いはマウス等から構成されてもよい。
【００４６】
撮像装置２０は、上述したように、例えばワークを撮影可能な位置に設けられ、主にワークの撮影を行う。本実施形態においては撮像画像情報をそのまま情報処理装置１０に送信するものとするが、これに限定されるものではない。例えば、情報処理装置１０の処理部１２０の一部（例えば画像処理部１２８等）を撮像装置２０に持たせてもよい。その場合、撮像画像に対して画像処理が施された後の情報が出力されることになる。
【００４７】
また、ロボット３０は、アーム３２０及びハンド３３０を含む。
【００４８】
ロボット制御装置５０は、情報処理装置１０からの情報を受け付けロボットの各部（アーム３２０及びハンド３３０等）の制御を行う。具体的にはロボット３０に対して制御信号を送信することで制御を行うことになる。また、エラーが発生した際にはエラーコードを処理部１２０に対して出力する。
【００４９】
３．命令及びシーケンス命令
３．１  命令及びシーケンス命令の定義
次に、本実施形態で用いる命令・条件命令・シーケンス命令等について説明する。まず、本実施形態のデータベースの構造例を、図４を用いて説明する。データベース（図２におけるロボット制御ＤＢ１１１）は、命令テーブル、シーケンス命令テーブル、シーケンス命令オフセットテーブル、パラメーターテーブル、パラメーターオフセットテーブル、文字列オフセットテーブル等を含む。
【００５０】
命令テーブルは、命令ＩＤと命令名、パラメーター数及び各パラメーターのＩＤを関連づける。シーケンス命令テーブルは、シーケンス命令ＩＤと条件数及び各条件命令ＩＤを関連づける。パラメーターテーブルは、パラメーターＩＤ、サイズ、タイプ、パラメーター名、パラメーターの値及びパラメーターの属性（集合パラメーターであるか非集合パラメーターであるか）を関連づける。シーケンス命令オフセットテーブル、パラメーターオフセットテーブル、文字列オフセットテーブルは、データベースにおける実際の値が記憶されているアドレスを求めるためのオフセットを記憶する。
【００５１】
本実施形態における命令とは、命令テーブルのレコードとして記憶されるものであり、ロボットに対する動作指示を表す。各命令は、任意の個数のパラメーターを利用する。例えば「移動する（ｗｏｒｋ，ｐｏｉｎｔ）」という命令であれば、「ｗｏｒｋ」及び「ｐｏｉｎｔ」がパラメーターとなる。この場合、「ｗｏｒｋ」で表されるワークを、「ｐｏｉｎｔ」で表される目標位置へ移動する命令となる。「初期化」のようにパラメーターをとらない命令があってもよい。その他、「近づく（ｗｏｒｋ）」、「つかむ（ｗｏｒｋ）」、「動かす（ｐｏｉｎｔ）」、「はなす（ｗｏｒｋ）」等の命令がある。
【００５２】
本実施形態においては、１又は複数の条件命令とシーケンス命令とが結びつけられる。この結びつけのことをルールとも表記する。ルールによりシーケンス命令と、１又は複数の条件命令とが結びつけられ、当該１又は複数の条件命令が全て実行された場合に、シーケンス命令が実行されたとみなされるという関係が成り立つ。シーケンス命令が１又は複数の条件命令により記述されるといってもよい。
【００５３】
このような命令群の構造例を図５に示す。一例としては、あるルールにおいては、シーケンス命令「移動する（ｗｏｒｋ，ｐｏｉｎｔ）」と条件命令「初期化」「近づく（ｗｏｒｋ）」「つかむ（ｗｏｒｋ）」「動かす（ｐｏｉｎｔ）」「はなす（ｗｏｒｋ）」が結びつけられることになる。そして、「初期化」「近づく（ｗｏｒｋ）」「つかむ（ｗｏｒｋ）」「動かす（ｐｏｉｎｔ）」「はなす（ｗｏｒｋ）」がこの順に実行されたとき、「移動する（ｗｏｒｋ，ｐｏｉｎｔ）」が実行されたことになる。これらのルールに用いられるシーケンス命令及び条件命令はともに上述した命令テーブルのレコードとして記憶される命令群に含まれる命令が用いられる。
【００５４】
ここで、１つの命令が、あるルールにおいてはシーケンス命令として用いられ且つ他のルールにおいては条件命令として用いられてもよい。例えば、「移動する（ｗｏｒｋ，ｐｏｉｎｔ）」の条件命令として用いられた「つかむ（ｗｏｒｋ）」が、他のルールにおいてはシーケンス命令として記述されてもよい。例えば、「つかむ（ｗｏｒｋ）」をシーケンス命令として、条件命令「ハンドを開く」「位置調整（ｗｏｒｋ）」「ハンドを閉じる」が結びつけられることが考えられる。また、別の例としては、「移動する（ｗｏｒｋ，ｐｏｉｎｔ）」が条件命令として用いられてもよい。「ワークの位置認識後に移動する（ｗｏｒｋ，ｐｏｉｎｔ）」というシーケンス命令があったとすれば、当該シーケンス命令に対しては、条件命令として「位置認識（ｗｏｒｋ）」「移動する（ｗｏｒｋ，ｐｏｉｎｔ）」が結びつけられることになる。つまり、命令テーブルのレコードとして記憶される命令は、シーケンス命令として用いられてもよいし、条件命令として用いられてもよい。命令を任意の構成により階層化することが可能になり、柔軟に動作指示を記述することができる。
【００５５】
本実施形態においては、動作指示（例えば通常時に実行される通常動作指示及びエラー時に実行されるエラー処理動作指示等）は、上述のシーケンス命令単位（ルール単位）で記述する。例えば１つのエラー処理動作は、１つのシーケンス命令に対応することになり、当該シーケンス命令をエラー処理動作シーケンス命令と呼ぶ。同様に、１つの通常動作は１つのシーケンス命令に対応することになり、当該シーケンス命令を通常動作シーケンス命令と呼ぶ。ただし、上述の手法に限定されるものではなく、例えば複数のシーケンス命令からなるシナリオという概念を導入し、動作指示を１つのシナリオにより記述してもよい。この場合のシナリオも、当該シナリオを構成する複数のシーケンス命令を、それぞれ条件命令とみなし、各条件命令を実行したときに実行されたと見なされる動作を新たにシーケンス命令として規定することにより、１つのシーケンス命令で記述することが可能である。このようにすれば、結局動作指示を１つのシーケンス命令で記述することができる。よって、通常動作及びエラー処理動作をシーケンス命令で記述するか、シナリオで記述するかは設計事項であり、本実施形態においてはどちらを用いてもよい。
【００５６】
３．２  編集処理部によるシーケンス命令の編集
処理部１２０の編集処理部１２４における、ルールの編集処理について説明する。上述したように、ルールとはシーケンス命令と条件命令とを結びつけるものであるから、ルールの記述とは、当該ルールにおけるシーケンス命令と、条件命令とを決定する処理に相当する。
【００５７】
情報処理装置１０の表示部１５０に表示される画面の例を図３（Ａ）に示す。図３（Ａ）の例では、一番上の行にシーケンス命令を記述し、その下に１又は複数の条件命令を記述する形式を取る。各命令の記述は、キーボード等により命令名に当たる文字列を直接入力してもよいし、図３（Ｂ）に示したようにドロップダウンメニューを用いて選択してもよい。
【００５８】
命令単位でルールを記述することにより、システム利用者はハードウェアに近いレベルでのロボット制御（例えばアクチュエーターをどれだけ作動させるか、ジョイント角を何度にするか等の制御）を考慮する必要がなくなる。
【００５９】
また、編集処理部１２４における命令の記述においては、記憶部１１０に記憶されたデータベースの命令テーブル１１３のレコードとして記憶されている命令以外は記述できないという制約を設けてもよい。これは処理の前提として、実行可能な命令は全て命令テーブル１１３のレコードとして記憶させておくということが想定されるためである。データベースに記憶されていない命令を実行しようとしても、何を実行してよいかわからず、処理は不可能であるから、上述のような制約はこのような例外的な処理を引き起こす可能性を抑止する効果が期待できる。ドロップダウンメニューを用いるのであれば、表示される命令の候補を、データベースに記憶してあるものに限定すればよいし、文字列を直接入力するのであれば、入力された文字列とデータベースの記録とを照合し、記憶していない命令名が入力された際には警告を表示するようにすればよい。
【００６０】
４．集合パラメーターの処理
次にフローチャートを用いて処理対象が集合パラメーターの属性を持つ場合の処理の詳細について説明する。適宜具体例として、図１２に示したように複数のワークをそれぞれ別の目標位置に移動させる「移動する（ｗｏｒｋ群，ｐｏｉｎｔ群）」を用いる。
【００６１】
図６が全体の処理を説明するフローチャートである。この処理が開始されると、まず動作指示を読み出す（Ｓ１０１）。この動作指示は上述したシナリオ（つまり、１又は複数のシーケンス命令からなる）であってもよい。ここではシナリオであるものとして説明する。シナリオが読み出されると、次に当該シナリオのゴールをシーケンス命令として関連づけているルールを検索する（Ｓ１０２）。例えば、シナリオが「移動する（ｗｏｒｋ，ｐｏｉｎｔ）」という１つのシーケンス命令からなるとしたら、まず「移動する（ｗｏｒｋ，ｐｏｉｎｔ）」という命令をシーケンス命令として持つルールを検索してくることになる。上述の条件を満たすルールがあったかの判定を行い（Ｓ１０３）、ルールがなかった場合には処理を終了する。ルールがあった場合には、ルールの実行処理を行う（Ｓ１０４）。ルールの実行処理とは、当該ルールに結びつけられたシーケンス命令の実行処理のことであり、詳細な処理は図７を用いて後述する。
【００６２】
図７がルールの実行処理を説明するフローチャートである。この処理が開始されると、まずパラメーターの属性チェックが行われる（Ｓ２０１）。パラメーターのチェック処理については図８を用いて詳述する。次にチェックしたパラメーターの中に集合パラメーターの属性を有するものがあったかの判定が行われ（Ｓ２０２）、集合パラメーターがない場合には１ルールの実行処理が行われ（Ｓ２０３）、集合パラメーターがある場合にはルール群の実行処理が行われる（Ｓ２０４）。Ｓ２０３の処理は図１０を用いて、Ｓ２０４の処理は図９を用いて詳述する。
【００６３】
次に図８を用いてＳ２０１のパラメーターチェック処理について説明する。この処理が開始されると、まずパラメーターを表す変数Ｐを１に設定し（Ｓ３０１）、パラメーターＰがあるかの判定を行う（Ｓ３０２）。パラメーターＰがあるかの判定とは、Ｐ番目のパラメーターが存在するか否かの判定のことである。これ以降も「パラメーターＰ」とは、Ｐ番目のパラメーターのことをさすものとして用いる。パラメーターＰがなかった場合には処理を終了する。パラメーターＰがある場合には、その属性を参照する（Ｓ３０３）。これは具体的には図４に示したパラメーターテーブルの「属性」の欄の値を参照することになる。そして、参照したパラメーターＰの属性が非集合か集合かを記憶し（Ｓ３０４）、Ｐをインクリメントして次のパラメーターのチェックを行う（Ｓ３０５）。これは「移動する（ｗｏｒｋ群，ｐｏｉｎｔ群）」の例では、ｗｏｒｋ群がパラメーター１、ｐｏｉｎｔ群がパラメーター２となり、ここではｗｏｒｋ群もｐｏｉｎｔ群も集合パラメーターの属性であると言うことが記憶されることになる。
【００６４】
図７のＳ２０４において行われるルール群の実行処理について図９を用いて説明する。この処理が開始されると、まず変数Ｉ（集合パラメーターのインデックスを表す変数）に０を設定し（Ｓ４０１）、各集合パラメーターのＩ番目の要素をチェックする（Ｓ４０２）。そして、全ての集合パラメーターのＩ番目の要素が存在するかの判定を行い（Ｓ４０３）、存在しなかった場合には処理を終了する。存在した場合には、各集合パラメーターのＩ番目の要素について１ルールの実行処理（Ｓ２０３の処理）が実行される（Ｓ４０４）。そして、Ｉをインクリメントして（Ｓ４０５）、Ｓ４０２に戻る。
【００６５】
これは「移動する（ｗｏｒｋ群，ｐｏｉｎｔ群）」の例では、Ｓ４０３において、ｗｏｒｋ群［Ｉ］（ｗｏｒｋ群のＩ番目の要素）とｐｏｉｎｔ群［Ｉ］とが両方存在するかの判定が行われることになる。そしてＳ４０４における１ルールの実行処理とは「移動する（ｗｏｒｋ群［Ｉ］，ｐｏｉｎｔ群［Ｉ］）」の実行処理になる。ここで、ｗｏｒｋ群［Ｉ］及びｐｏｉｎｔ群［Ｉ］は１要素を表すものであり、非集合パラメーターであるから、図７のＳ２０２において集合パラメーターがなかった場合と同様にＳ２０３の処理が可能である。具体的には図１１に示したように、１個のワークを１箇所の目標位置に移動させる動作になる。Ｉをインクリメントしていくため、Ｉ番目の要素がある限り、ｗｏｒｋ群及びｐｏｉｎｔ群の要素に対して処理を行うことになる。
【００６６】
図７のＳ２０３及び図９の４０４において行われる１ルールの実行処理について図１０を用いて説明する。この処理が開始されると、まず変数Ｎ（条件命令を表す変数）に１を設定し（Ｓ５０１）、条件Ｎがあるかの判定を行う（Ｓ５０２）。条件Ｎがあるかの判定とは、Ｎ番目の条件命令が存在するか否かの判定のことである。これ以降も「条件Ｎ」とは、Ｎ番目の条件命令のことをさすものとして用いる。そして、条件Ｎをシーケンス命令に持つルールを検索する（Ｓ５０３）。そのようなルールあるかの判定を行い（Ｓ５０４）、見つからなかった場合には、条件Ｎはシーケンス命令としては用いられていない（階層構造においてさらに下位の命令は存在しない）ということであるため、Ｓ５０５において条件Ｎの実行処理を行う。
【００６７】
また、Ｓ５０４において、条件Ｎをシーケンス命令として持つルールがあった場合には、階層構造においてさらに下位の命令が存在すると言うことであるから、当該下位の命令の実行処理を行うために、１ルール実行モジュールを再帰的に呼び出すことになる（Ｓ５０６）。Ｓ５０６の処理の後、或いは上述したＳ５０５の処理の後に、Ｎをインクリメントして（Ｓ５０７）、Ｓ５０２に戻る。つまり、ここまでが１番目の条件命令についての処理であり、次にＮをインクリメントして２番目の条件命令について処理を開始する。
【００６８】
「移動する（ｗｏｒｋ群［Ｉ］，ｐｏｉｎｔ群［Ｉ］）」の例では、「初期化」が条件１、「近づく（ｗｏｒｋ群［Ｉ］）」が条件２といったようになる。また、条件３である「つかむ（ｗｏｒｋ群［Ｉ］）」はシーケンス命令でもあるため、Ｓ５０４においてＹｅｓと判定されＳ５０６に移行し、「ハンドを開く」「位置調整（ｗｏｒｋ群［Ｉ］）」「ハンドを閉じる」が実行される。この場合「つかむ（ｗｏｒｋ群［Ｉ］）」の実行時における条件１が「ハンドを開く」、条件２が「位置調整（ｗｏｒｋ群［Ｉ］）」、条件３が「ハンドを閉じる」となる。
【００６９】
以上の処理を行うことで、処理対象が集合パラメーターであるシーケンス命令を、非集合パラメーターを取るシーケンス命令を複数回実行することにより実現することが可能になる。
【００７０】
なお、上述の例では２つのパラメーターｗｏｒｋ群、ｐｏｉｎｔ群を両方集合パラメーターの属性であるものとして説明したが、これに限定されるものではない。例えば、図１３に示したように、複数のワークを１箇所に移動させる命令「移動する（ｗｏｒｋ群，ｐｏｉｎｔ）」も実行可能である。これは例えば、複数のワークをまとめる、積み上げる、１つの穴に落とす等の処理に用いることができる。実際には、「移動する（ｗｏｒｋ群［０］，ｐｏｉｎｔ）」「移動する（ｗｏｒｋ群［１］，ｐｏｉｎｔ）等を順に実行していくことになる。
【００７１】
逆に図１４に示したように１個のワークを複数箇所に移動させる命令「移動する（ｗｏｒｋ，ｐｏｉｎｔ群）」も実行可能である。これは例えば、ワークとして印鑑を用いて、書類の複数箇所に捺印する等の処理に用いることができる。実際には、「移動する（ｗｏｒｋ、ｐｏｉｎｔ群［０］）「移動する（ｗｏｒｋ，ｐｏｉｎｔ群［１］）」等を順に実行していくことになる。
【００７２】
また、上述の例では「移動する（ｗｏｒｋ群、ｐｏｉｎｔ群）」において、ｗｏｒｋ群の要素数とｐｏｉｎｔ群の要素数が等しいものとして説明したが、これに限定されない。ｗｏｒｋ群の要素数がＮであり、ｐｏｉｎｔ群の要素数がＭであってもよい。ただしこの場合には、何らかの手法でｗｏｒｋ群の要素とｐｏｉｎｔ群の要素との対応付けを行う必要がある。例えば図１６のような対応付けがされていたとすれば、「移動する（ｗｏｒｋ群［０］、ｐｏｉｎｔ群［０］）」「移動する（ｗｏｒｋ群［０］、ｐｏｉｎｔ群［１］）」「移動する（ｗｏｒｋ群［１］、ｐｏｉｎｔ群［２］）」を順に実行すればよい。
【００７３】
さらに変形例として、図１５に示したように複数ロボット（或いは複数のアーム・ハンドを持つ１つのロボット）を用いてもよい。「移動する（ｗｏｒｋ群，ｐｏｉｎｔ群）」の例では、複数のワークをそれぞれ別の場所に移動させる。そのため、第１のロボット（或いは第１のアーム）でｗｏｒｋ群［０］に対応するワークをｐｏｉｎｔ群［０］に対応する目標位置に移動させているときに、並行して第２のロボットで別のワークを移動させることが可能である。ただしこの場合には、何らかの手法で複数のロボット間の調整を行う必要がある。例えば複数のロボットを管理する情報処理装置１０等に、図１７のようなデータを用意して、いずれか１つのロボットが着手したシーケンス命令（具体的には各シーケンス命令に対応するインデックス等）についてフラグを立てるようにする。そして各ロボットに対してフラグが立っていない処理のみを実行させるようにすればよい。
【００７４】
以上の本実施形態では、ロボット制御システムは、ロボットの制御に関する情報を記憶する記憶部１１０と、命令の実行処理を行う処理部１２０と、処理部１２０の処理結果に基づいてロボット制御を行うロボット制御部（ロボット制御装置５０）とを含む。記憶部１１０は、命令の情報と、命令の処理対象を表すパラメーターの情報を記憶する。そして実行処理を行う命令が複数の命令から構成されるシーケンス命令であり且つ当該シーケンス命令の処理対象を表すパラメーターの属性が集合パラメーターの属性である場合に、処理部１２０は、シーケンス命令を記述する複数の命令の構成を変更することなく、パラメーターを順次変えながらシーケンス命令を複数回実行することで、集合パラメーターを処理対象とする動作の実行処理を行う。
【００７５】
ここで命令とは、上述してきたようにロボットに対する動作指示の記述に用いられるものであり、図４のデータベースの命令テーブルにおけるレコードとして記憶されるものである。シーケンス命令を構成する複数の命令とは、上述してきた条件命令のことである。シーケンス命令と条件命令とを結びつけるものがルールであり、１つの命令があるルールでは条件命令として用いられ、別のルールではシーケンス命令として用いられてもよい。
【００７６】
これにより、シーケンス命令を用いてロボットの動作指示を行う場合に、当該シーケンス命令の処理対象が集合パラメーターの属性を有したとしても容易に処理を行うことが可能になる。よって例えば、複数個のワークを複数箇所の目標位置にそれぞれ移動させるようなシーケンス命令を実行する際にも、パラメーター（ここでは、ワークと位置）を変えながらシーケンス命令（例えば非集合パラメーターを処理対象とするシーケンス命令）を複数回実行するだけで済むため、既存の非集合パラメーターを対象とするシーケンス命令に対して大幅な変更を行う必要がない。
【００７７】
また、パラメーターがワークを指定するワークパラメーターであり、ワークパラメーターが集合パラメーターの属性である場合には、処理部１２０は、ワークを変えながら前記シーケンス命令を複数回実行する。
【００７８】
ここで、「ワークを変えながらシーケンス命令を複数回実行」とは、例えばワークパラメーターが第１〜第ＮのＮ個のワークを表すパラメーターである場合には、第１のワークを表す非集合パラメーターを対象にシーケンス命令を実行し、第２のワークを表す非集合パラメーターを対象にシーケンス命令を実行するといったように、Ｎ回シーケンス命令を実行することである。
【００７９】
これにより、パラメーターが特にワークを表すワークパラメーターである場合に、対象となるワークを変えながらシーケンス命令を実行することで、集合パラメーターを対象とする処理を容易に実行することが可能になる。
【００８０】
また、パラメーターが目標位置を指定する位置パラメーターであり、位置パラメーターが集合パラメーターの属性である場合には、処理部１２０は、目標位置を変えながら前記シーケンス命令を複数回実行する。
【００８１】
ここで、「目標位置を変えながらシーケンス命令を複数回実行」とは、ワークパラメーターの例と同様に、例えば位置パラメーターが第１〜第ＭのＭ個の目標位置を表すパラメーターである場合には、第１の目標位置を表す非集合パラメーターを対象にシーケンス命令を実行し、第２の目標位置を表す非集合パラメーターを対象にシーケンス命令を実行するといったように、Ｍ回シーケンス命令を実行することである。
【００８２】
これにより、パラメーターが特に目標位置を表す位置パラメーターである場合に、対象となる目標位置を変えながらシーケンス命令を実行することで、集合パラメーターを対象とする処理を容易に実行することが可能になる。
【００８３】
また、シーケンス命令は、ワークを把持して目標位置に移動する命令であってもよい。
【００８４】
これにより、具体的な動作指示として、ワークを把持し目標位置に移動させる動作を実行する際に、パラメーター（ワーク及び目標位置）が集合パラメーターであっても処理を容易に実行することが可能になる。つまり「移動する（ｗｏｒｋ、ｐｏｉｎｔ）」のパラメーターｗｏｒｋ及びｐｏｉｎｔが集合パラメーターになってもよいということになる。ここで、移動させるとは、例えば図１に示したようなパレット４０にワークを並べる（或いはパレット上のワークをピックアップする）動作の他、溝や穴に部品をはめる動作や、ねじ穴にねじをはめる際、当該ねじをねじ穴まで持って行く動作等、広範な作業に用いることができる。そのため、「移動する（ｗｏｒｋ群、ｐｏｉｎｔ群）」を実行可能にすることで、より汎用性の高い動作指示を実現することが可能になる。
【００８５】
また、ワークが集合パラメーターの属性であり、目標位置が非集合パラメーターの属性である場合には、処理部１２０は、第１〜第Ｎ（Ｎは２以上の整数）のワークを１箇所の目標位置に移動させることで、シーケンス命令の実行処理を行ってもよい。
【００８６】
これにより、図１３に示したように、複数のワーク（図１３の例ではｗｏｒｋ群［０］〜ｗｏｒｋ群［３］の４つ）を全て同じ目標位置に移動させることが可能になる。よって、複数箇所に分かれていたワークをまとめたり、ワークを積み上げたり、目標位置に穴等が設置されている場合には、当該穴等にワークをまとめて落としたりすることが可能になる。
【００８７】
また、ワークが非集合パラメーターの属性であり、目標位置が集合パラメーターの属性である場合には、処理部１２０は、１個のワークを第１〜第Ｍ（Ｍは２以上の整数）の目標位置に移動させることで、シーケンス命令の実行処理を行ってもよい。
【００８８】
これにより、図１４に示したように、１つのワークを複数の目標位置（図１４の例ではｐｏｉｎｔ群［０］〜ｐｏｉｎｔ群［３］の４箇所）に順次移動させることが可能になる。よって、ワークが印鑑であり、書類上に複数の目標位置が設定されているような場合には、書類の各箇所に捺印する等の作業が可能になる。
【００８９】
また、ワークが集合パラメーターの属性であり、目標位置が集合パラメーターの属性である場合には、処理部１２０は、第１〜第Ｎのワークのうち第ｉ（ｉは１≦ｉ≦Ｎを満たす整数）のワークを、第１〜第Ｍの目標位置のうち第ｊ（ｊは１≦ｊ≦Ｍを満たす整数）の目標位置に移動させることで、シーケンス命令の実行処理を行ってもよい。
【００９０】
これにより、図１２に示したように第１のワーク（図１２の例ではｗｏｒｋ群［０］）を第１の目標位置（図１２の例ではｐｏｉｎｔ群［０］）に移動させ、第２のワーク（図１２の例ではｗｏｒｋ群［１］）を第２の目標位置（図１２の例ではｐｏｉｎｔ群［１］）に移動させる等の処理が可能になる。よって、一般的な形で「移動する」というシーケンス命令を用いることが可能になり、汎用性の高い動作指示ができる。
【００９１】
また、記憶部１１０は、パラメーターの情報として、当該パラメーターが集合パラメーターの属性であるか否かの情報を記憶する。そして処理部１２０は、命令の実行処理の際に、当該命令の実行対象となるパラメーターの情報を参照することで、パラメーターが集合パラメーターの属性であるか否かの判定を行ってもよい。
【００９２】
これにより、図４に示したデータベースのパラメーターテーブル（具体的にはパラメーターテーブルの属性の列の値）に基づいて、パラメーターが集合パラメーターの属性であるか否かの判定を行うことが可能になる。テーブルの値の参照を行うだけでよいため、処理をシンプルにすることができる。
【００９３】
また、記憶部１１０は、図２に示したように、命令情報と、命令の処理対象を表すパラメーターとを結びつける命令テーブル１１３を記憶するとともに、シーケンス命令と１又は複数の条件命令とを結びつけるシーケンス命令テーブル１１５を記憶してもよい。
【００９４】
ここで、条件命令とは、命令テーブル１１３のレコードとして記憶される命令の中から選択されるものである。そして、条件命令とシーケンス命令とは、１又は複数の条件命令を記述された順序に実行することにより、当該条件命令に結びつけられたシーケンス命令が実行されることになるという関係を有する。
【００９５】
これにより、図４に示したようなデータベースのうち、命令テーブル１１３及びシーケンス命令テーブル１１５を実現することが可能になる。本実施形態においては、シーケンス命令テーブル１１５により記述される、シーケンス命令と条件命令との結びつけをルールとも呼ぶ。シーケンス命令と条件命令との対応づけをおこなうことにより、動作指示を階層的且つ体系的に記述することが可能になる。
【００９６】
また、記憶部１１０は命令テーブル１１３に第１〜第Ｑ（Ｑは１以上の整数）の命令レコード（命令）を記憶するとともに、シーケンス命令テーブル１１５に第１〜第Ｐ（Ｐは２以上の整数）のシーケンス命令レコード（ルール）を記憶する。そして、記憶部１１０は、第ｓ（ｓは１≦ｓ≦Ｐの整数）のシーケンス命令レコードにおいては、第ｔ（ｔは１≦ｔ≦Ｑの整数）の命令レコードにより表される前記命令を前記条件命令として記憶するとともに、第ｕ（ｕは１≦ｕ≦Ｐ、ｓ≠ｕの整数）のシーケンス命令レコードにおいては、前記第ｔの命令レコードにより表される前記命令を前記シーケンス命令として記憶してもよい。
【００９７】
これにより、命令テーブル１１３のレコードとして記憶された命令は、あるルールにおいてはシーケンス命令として結びつけられ且つ他のルールにおいては条件命令として結びつけられてもよいことになる。よって、２階層にとどまらず、３階層以上の階層構造が可能になる。つまり、あるシーケンス命令に条件命令が結びつけられていたとき、当該条件命令にもシーケンス命令としての属性があり、その下にさらに条件命令が結びつけられるという構成も可能になるということである。図５の例で言えば、「移動する（ｗｏｒｋ，ｐｏｉｎｔ）」の条件命令として「つかむ（ｗｏｒｋ）」が規定されているが、「つかむ（ｗｏｒｋ）」自身もシーケンス命令であり、条件命令として、「ハンドを開く」「位置調整（ｗｏｒｋ）」「ハンドを閉じる」が結びつけられている。
【００９８】
また、本実施形態は上述のロボット制御システムと、ロボット制御システムにより制御されるロボットとを含むロボットシステムに関係する。
【００９９】
これにより、上述してきたロボット制御装置がロボット３０を制御することにより、連係して動作を行うロボットシステムを実現することが可能になる。
【０１００】
また、以上の本実施形態は図１８に示したように、ロボットの制御に関する情報を記憶する記憶部１１０と、命令の実行処理を行う処理部１２０と、処理部１２０の処理結果に基づいてロボット制御を行うロボット制御部１７０としてコンピューターを機能させるプログラムに関係する。記憶部１１０は、命令の情報と、命令の処理対象を表すパラメーターの情報を記憶する。そして実行処理を行う命令が複数の命令から構成されるシーケンス命令であり且つ当該シーケンス命令の処理対象を表すパラメーターの属性が集合パラメーターの属性である場合に、処理部１２０は、シーケンス命令を記述する複数の命令の構成を変更することなく、パラメーターを順次変えながらシーケンス命令を複数回実行することで、集合パラメーターを処理対象とする動作の実行処理を行う。
【０１０１】
これにより、ソフトウェア的にロボットを制御する処理を行うプログラムを実現することが可能になる。そして、上記プログラムは、情報記憶媒体１８０に記録される。ここで、情報記憶媒体１８０としては、ＤＶＤやＣＤ等の光ディスク、光磁気ディスク、ハードディスク（ＨＤＤ）、不揮発性メモリーやＲＡＭ等のメモリーなど、情報処理装置１０等によって読み取り可能な種々の記録媒体を想定できる。例えば、図１８に示したように、ＰＣ等の情報処理装置によって読み取り可能な種々の記録媒体にプログラムが記憶され、処理部１２０において実行されるケースが考えられる。
【０１０２】
なお、以上のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語と共に記載された用語は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。またロボット制御システム、ロボットシステム等の構成、動作も本実施形態で説明したものに限定されず、種々の変形実施が可能である。
【符号の説明】
【０１０３】
１０  情報処理装置、２０  撮像装置、３０  ロボット、４０  パレット、
５０  ロボット制御装置、１１０  記憶部、１１１  ロボット制御ＤＢ、
１１２  ワークＤＢ、１１３  命令テーブル、１１４  ロボットＤＢ、
１１５  シーケンス命令テーブル、１１６  アームＤＢ、
１１８  ハンドＤＢ、１２０  処理部、１２２  実行部、１２４  編集処理部、
１２６  シミュレーション処理部、１２８  画像処理部、１５０  表示部、
１６０  外部Ｉ／Ｆ部、１７０  ロボット制御部、１８０  情報記憶媒体、
３２０  アーム、３３０  ハンド
【図１】
2012240145.tif 000003
【図２】
2012240145.tif 000004
【図４】
2012240145.tif 000005
【図６】
2012240145.tif 000006
【図７】
2012240145.tif 000007
【図８】
2012240145.tif 000008
【図９】
2012240145.tif 000009
【図１０】
2012240145.tif 000010
【図１１】
2012240145.tif 000011
【図１２】
2012240145.tif 000012
【図１３】
2012240145.tif 000013
【図１４】
2012240145.tif 000014
【図１５】
2012240145.tif 000015
【図１６】
2012240145.tif 000016
【図１７】
2012240145.tif 000017
【図１８】
2012240145.tif 000018
【図３】
2012240145.tif 000019
【図５】
2012240145.tif 000020