ロボット制御システム、ロボットシステム及びプログラム
【課題】 動作の記述に用いられる命令の処理対象が集合パラメーターであったとしても、動作における命令の構成を変更することなく、容易に所望の動作を実現するロボット制御システム、ロボットシステム及びプログラム等を提供すること。
【解決手段】 ロボット制御システムは記憶部110と、命令を実行する処理部120と、処理部120の処理結果に基づきロボット30の制御を行うロボット制御部(ロボット制御装置50)を含み、記憶部110は処理部120が実行する命令の情報と命令の処理対象を表すパラメーターの情報を記憶し、処理部120は命令が複数の命令により構成されるシーケンス命令であり且つシーケンス命令のパラメーターの属性が集合パラメーターの属性である場合に、シーケンス命令を構成する複数の命令を変更することなく、パラメーターを変えながらシーケンス命令を複数回実行する。
【解決手段】 ロボット制御システムは記憶部110と、命令を実行する処理部120と、処理部120の処理結果に基づきロボット30の制御を行うロボット制御部(ロボット制御装置50)を含み、記憶部110は処理部120が実行する命令の情報と命令の処理対象を表すパラメーターの情報を記憶し、処理部120は命令が複数の命令により構成されるシーケンス命令であり且つシーケンス命令のパラメーターの属性が集合パラメーターの属性である場合に、シーケンス命令を構成する複数の命令を変更することなく、パラメーターを変えながらシーケンス命令を複数回実行する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ロボット制御システム、ロボットシステム及びプログラム等に関する。
【背景技術】
【0002】
近年、様々な分野で産業用ロボットが広く用いられている。これらの産業用ロボットに対してユーザーの意図通りの動作を行わせるために、ロボットに実行させる作業内容を教示することが必要となる。
【0003】
作業内容を教示するために、ロボットに行わせたい動作を、例えば動作ルーチン等の形式により記述する。そのため、今までロボットに対して行わせたことがないような新たな動作を指示するためには、新しく動作ルーチンを作成しなくてはならない。
【0004】
特許文献1には、標準的な基本動作(標準動作)を規定する標準動作ルーチンを、部位ごとの動作を規定する部位動作モジュール等の組み合わせとして準備しておき、新たな動作ルーチンを追加する際には、標準動作ルーチンに用いられている特定の部位動作モジュールの削除、入れ替え、或いは新たな部位動作モジュールの追加により処理する手法が提案されている。特許文献1によれば、下位レベル(例えばアクチュエーターの動作プログラミングのレベル等)のプログラミングを意識することなく、既存のモジュールの組み替え等で動作ルーチンの新規作成或いは書き換え等を容易に行うことができる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2000−153479号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献1の手法では、動作の対象が集合パラメーターとなったとき(例えば目標位置に移動させたいワークが複数存在する等の場合)には、例えば1つのワークを1箇所に移動させる動作ルーチンとは別に、複数のワークを移動させる動作ルーチンを新規作成する等の大きな変更が必要になってしまう。
【0007】
本発明の目的は、動作の記述に用いられる命令の処理対象が集合パラメーターであったとしても、動作における命令の構成を変更することなく、容易に所望の動作を実現するロボット制御システム、ロボットシステム及びプログラム等を提供することにある。
【課題を解決するための手段】
【0008】
本発明の一態様は、ロボットの制御に関する情報を記憶する記憶部と、命令の実行処理を行う処理部と、前記処理部の処理結果に基づいて前記ロボットの制御を行うロボット制御部と、を含み、前記記憶部は、前記処理部が実行する前記命令の情報と、前記命令の処理対象を表すパラメーターの情報を記憶し、前記処理部は、前記命令が複数の命令により構成されるシーケンス命令であり且つ前記シーケンス命令の処理対象を表す前記パラメーターの属性が集合パラメーターの属性である場合に、前記シーケンス命令を構成する前記複数の命令を変更することなく、前記パラメーターを順次変えながら前記シーケンス命令を複数回実行するロボット制御システムに関係する。
【0009】
本発明の一態様では、複数の命令によりシーケンス命令を記述するものとし、シーケンス命令の処理対象のパラメーターの属性が、集合パラメーターの属性であった場合に、シーケンス命令を記述する命令の構成は変更せずに、パラメーターを変えながらシーケンス命令を複数回実行する。これにより、集合パラメーターの属性を有するパラメーターが処理対象の場合にも、非集合パラメーターを処理対象とするシーケンス命令を複数回実行するだけでよいため、容易に処理を行うこと等が可能になる。
【0010】
また、本発明の一態様では、前記パラメーターが、ワークを指定するワークパラメーターであり、前記ワークパラメーターの属性が前記集合パラメーターの属性である場合には、前記処理部は、前記ワークを変えながら前記シーケンス命令を複数回実行してもよい。
【0011】
これにより、パラメーターがワークパラメーターであり、当該ワークパラメーターの属性が集合パラメーターの属性である場合にも、ワークを変えながら処理を実行することで、集合パラメーターに対する処理を行うことができる。
【0012】
また、本発明の一態様では、前記パラメーターが、目標位置を指定する位置パラメーターであり、前記位置パラメーターの属性が前記集合パラメーターの属性である場合には、前記処理部は、前記目標位置を変えながら前記シーケンス命令を複数回実行してもよい。
【0013】
これにより、パラメーターが位置パラメーターであり、当該位置パラメーターの属性が集合パラメーターの属性である場合にも、目標位置を変えながら処理を実行することで、集合パラメーターに対する処理を行うことができる。
【0014】
また、本発明の一態様では、前記シーケンス命令は、ワークを把持して、目標位置に移動する命令であってもよい。
【0015】
これにより、ワークを把持し目標位置に移動するという汎用性の高い動作指示に関して、パラメーター(ワークと目標位置)の属性が集合パラメーターになっても容易に処理を行うこと等が可能になる。
【0016】
また、本発明の一態様では、前記ワークを指定するワークパラメーターの属性が前記集合パラメーターの属性であり、前記目標位置を指定する位置パラメーターの属性が非集合パラメーターの属性である場合には、前記処理部は、第1〜第N(Nは2以上の整数)のワークを1箇所の前記目標位置に移動させることで前記シーケンス命令の実行処理を行ってもよい。
【0017】
これにより、複数個のワークを1箇所の目標位置に移動するシーケンス命令を容易に実行することができ、ワークをまとめたり、つみあげたり、目標位置に設けられた穴に落としたりする動作等が可能になる。
【0018】
また、本発明の一態様では、前記ワークを指定するワークパラメーターの属性が非集合パラメーターの属性であり、前記目標位置を指定する位置パラメーターの属性が前記集合パラメーターの属性である場合には、前記処理部は、1個の前記ワークを第1〜第M(Mは2以上の整数)の目標位置に移動させることで前記シーケンス命令の実行処理を行ってもよい。
【0019】
これにより、1個のワークを複数箇所の目標位置に移動するシーケンス命令を容易に実行することができ、印鑑を書類上の複数の箇所に捺印する動作等が可能になる。
【0020】
また、本発明の一態様では、前記ワークを指定するワークパラメーターの属性が前記集合パラメーターの属性であり、前記目標位置を指定する位置パラメーターの属性が前記集合パラメーターの属性である場合には、前記処理部は、第1〜第Nのワークのうち第i(iは1≦i≦Nを満たす整数)のワークを、第1〜第Mの目標位置のうち第j(jは1≦j≦Mを満たす整数)の目標位置に移動させることで前記シーケンス命令の実行処理を行ってもよい。
【0021】
これにより、複数個のワークを複数箇所の目標位置にそれぞれ移動するシーケンス命令を容易に実行することができ、移動するという命令の汎用性をさらに高めること等が可能になる。
【0022】
また、本発明の一態様では、前記記憶部は、前記パラメーターの情報として、前記パラメーターの属性が前記集合パラメーターの属性であるか否かの情報を記憶し、前記処理部は、前記命令の実行処理の際に、前記命令の実行対象となる前記パラメーターの情報を参照することで、前記パラメーターの属性が前記集合パラメーターの属性であるか否かの判定を行ってもよい。
【0023】
これにより、記憶部に記憶された情報に基づいて、処理対象を表すパラメーターの属性が集合パラメーターの属性であるか否かの判定を行うこと等が可能になる。
【0024】
前記記憶部は、前記シーケンス命令の記述に用いられる前記命令に関する情報である命令情報と、前記命令の処理対象を表すパラメーターとを結びつける命令テーブルを記憶するとともに、前記命令のうち条件命令とシーケンス命令とが、1又は複数の前記条件命令を実行することにより、前記シーケンス命令が実行されるという関係を有する場合に、1又は複数の前記条件命令と、前記シーケンス命令に関する情報とを結びつけるシーケンス命令テーブルを記憶してもよい。
【0025】
これにより、データベースのテーブルとして命令を記憶した上で、同様にデータベースのテーブルとしてシーケンス命令と条件命令の結びつけを記憶することが可能になる。
【0026】
また、本発明の一態様では、前記記憶部は、前記命令テーブルに第1〜第Q(Qは1以上の整数)の命令レコードを記憶するとともに、前記シーケンス命令テーブルに第1〜第P(Pは2以上の整数)のシーケンス命令レコードを記憶し、前記記憶部は、第s(sは1≦s≦Pの整数)のシーケンス命令レコードにおいては、第t(tは1≦t≦Qの整数)の命令レコードにより表される前記命令を前記条件命令として記憶するとともに、第u(uは1≦u≦P、s≠uの整数)のシーケンス命令レコードにおいては、前記第tの命令レコードにより表される前記命令を前記シーケンス命令として記憶してもよい。
【0027】
これにより、1つの命令をシーケンス命令として利用することも、条件命令として利用することもでき、命令構造の階層化が可能になる。
【0028】
また、本発明の他の態様は、請求項1乃至10のいずれかに記載のロボット制御システムと、前記ロボット制御システムにより制御されるロボットと、を含むロボットシステムに関係する。
【0029】
また、本発明の他の態様は、ロボットの制御に関する情報を記憶する記憶部と、命令の実行処理を行う処理部と、前記処理部の処理結果に基づいて前記ロボットの制御を行うロボット制御部として、コンピューターを機能させ、前記記憶部は、前記処理部が実行する前記命令の情報と、前記命令の処理対象を表すパラメーターの情報を記憶し、前記処理部は、前記命令が複数の命令により構成されるシーケンス命令であり且つ前記シーケンス命令の処理対象を表す前記パラメーターの属性が集合パラメーターの属性である場合に、前記シーケンス命令を構成する前記複数の命令を変更することなく、前記パラメーターを順次変えながら前記シーケンス命令を複数回実行するプログラムに関係する。
【図面の簡単な説明】
【0030】
【図1】本実施形態のシステム構成例。
【図2】本実施形態の詳細なシステム構成例。
【図3】図3(A)、図3(B)は編集処理に用いられる画面の例。
【図4】記憶部に記憶されるデータベースのデータ構造例。
【図5】本実施形態で用いられる命令群の階層的な構造を説明する図。
【図6】本実施形態の全体の処理を説明するためのフローチャート。
【図7】ルール実行処理を説明するためのフローチャート。
【図8】パラメーターチェック処理を説明するためのフローチャート。
【図9】ルール群実行処理を説明するためのフローチャート。
【図10】1ルール実行処理を説明するためのフローチャート。
【図11】1個のワークを1箇所の目標位置に移動する例。
【図12】複数のワークを複数の目標位置に移動する例。
【図13】複数のワークを1箇所の目標位置に移動する例。
【図14】1個のワークを複数の目標位置に移動する例。
【図15】複数のロボットを用いて、複数のワークを複数の目標位置に移動する例。
【図16】ワーク群の要素と位置群の要素との結び付けを説明する図。
【図17】複数のロボットによる強調動作の際に用いられるデータ構造の例。
【図18】本実施形態の他のシステム構成例。
【発明を実施するための形態】
【0031】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【0032】
1.本実施形態の手法
まず本実施形態の手法について説明する。ロボットにユーザーの意図通りの動作を行わせるためには、ロボットに実行させる作業内容を教示することが必要となる。教示は例えば、何らかの形で動作指示を記述し、記述された動作指示に従った信号をロボットに出力することで行われる。
【0033】
上述した特許文献1の手法では、動作ルーチンという形で動作指示を記述している。一般的には、動作指示の記述は例えばアクチュエーターの動作プログラミングのような下位レベルの記述を要するように、相応の知識が求められる。特許文献1においては、標準動作ルーチンを部位動作モジュールにより構成し、当該部位動作モジュールの削除、入れ替え及び追加を行うことで、システム利用者に下位レベルの処理を意識させないことができるため、新たな動作ルーチンの作成等が容易になるとしている。しかし、上述の手法を用いても、動作の対象が集合パラメーターの属性を持つ場合(複数のワークを目標位置に移動させる場合等)には、非集合パラメーターを対象にする動作ルーチンで対処することができず、大幅な変更が必要になるという問題がある。
【0034】
そこで、本出願人は以下の手法を提案する。まず、本実施形態においては動作指示の記述は、複数の命令から構成されるシーケンス命令を用いて行う。そして、非集合パラメーターを対象とするシーケンス命令が既に存在する場合、対象が集合パラメーターの属性を持つ動作指示をロボットに実行させる際に、命令を組み替えて別のシーケンス命令を作成する等の変更は行わない。非集合パラメーターを対象とする既存のシーケンス命令を構成する命令は変更せずに、パラメーターを変更しながら当該既存のシーケンス命令を実行することで対処する。
【0035】
具体例を示す。「移動する(work,point)」という1つの物(ワーク)を1箇所の目標位置に移動するシーケンス命令(パラメーターであるwork、pointはともに非集合パラメーター)が既にある場合に、「移動する(work群,point群)」という複数のワークをそれぞれ別の目標位置に移動させるシーケンス命令を実行させるケースを考える。この場合には、上述の「移動する(work群,point群)」を「移動する(第1のwork、第1のpoint)」〜「移動する(第Nのwork,第Nのpoint)」というN個(Nはwork群、point群の数に相当)のシーケンス命令の繰り返しにより実現する。処理としては、パラメーターの属性情報を読み取り、集合パラメーターの属性である場合には、インデックスを自動的に付加しインデックスに従って非集合パラメーターを対象とするシーケンス命令を複数回実行することになる。
【0036】
以下、システム構成例について説明した後、図4や図5等を用いて本実施形態において用いられる命令やシーケンス命令等の考え方について説明する。その後、フローチャートを用いて集合パラメーターの処理について説明する。
【0037】
2.システム構成例
本実施形態に係るロボット制御システムを含むロボットシステムの構成例を、図1を用いて説明する。ロボットシステムは、情報処理装置10と、撮像装置20と、ロボット30と、図1には不図示のロボット制御装置50と、を含む。ただし、ロボットシステムは図1の構成に限定されず、これらの一部の構成要素を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
【0038】
ロボット30は、アーム320及びハンド330を有し、情報処理装置10からの動作指示に従い処理を行う。例えばパレット40に載せられたワークに対して処理を行う。撮像装置20は、例えばワークを撮影可能な位置(パレットの直上でもよいし、ロボット30のハンド330に取り付けられてもよい)に設けられ、主にワークの撮影を行う。そして、撮像画像の情報からワークの位置や姿勢等に関する情報を検出する。検出した情報は例えば情報処理装置10等に送られてもよいし、直接ロボット30に送られてもよい。また、ワークの位置や姿勢等に関する情報を検出できればよいため、撮像装置20による撮像画像の取得以外の手法(例えばレーザー等を用いた3次元スキャン)を用いてもよい。
【0039】
具体的な構成について図2を用いて説明する。情報処理装置10は、記憶部110と、処理部120と、表示部150と、外部I/F部160を含む。
【0040】
記憶部110は、データベースを記憶したり、処理部120等のワーク領域となるもので、その機能はRAM等のメモリーやHDD(ハードディスクドライブ)などにより実現できる。記憶部110は、ロボット制御データベース111(以下データベースを適宜DBと表記する)を含む。ロボット制御データベース111は具体的には図4を用いて後述するデータベースであって、例えば命令テーブル113と、シーケンス命令テーブル115とを含む。命令テーブル113は命令に関するデータを記憶し、シーケンス命令テーブル115は、条件命令とシーケンス命令とを結びつけるもの(本実施形態においてはルールと呼ぶ)を記憶する。命令、条件命令、シーケンス命令、ルール等についての詳細は後述する。
【0041】
また、ロボットが図1に示すようにアーム320とハンド330を有するロボットである場合には、記憶部110は、ワークDB112と、ロボットDB114とを含み、ロボットDB114は、アームDB116と、ハンドDB118を含む。当該ロボットが複数のアームを備える場合は、アームDB116とハンドDB118は複数個であってもよい。ワークDB112は、ワークの大きさ、形状、姿勢等の情報を記憶する。ロボットDB114はロボットに関するデータを記憶する。具体的にはアームDB116でアームの形状、可動範囲等を記憶し、ハンドDB118でハンドの形状、大きさ等の情報を記憶する。ただし、記憶部110は図2の構成に限定されず、これらの一部の構成要素を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
【0042】
処理部120は、記憶部110からのデータや、外部I/F部160において受信した、撮像装置20或いはロボット30からの情報等に基づいて種々の処理を行う。この処理部120の機能は、各種プロセッサ(CPU等)、ASIC(ゲートアレイ等)などのハードウェアや、プログラムなどにより実現できる。
【0043】
処理部120は、実行部122と、編集処理部124と、シミュレーション処理部126と、画像処理部128とを含む。処理部120は図2の構成に限定されず、これらの一部の構成要素を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。実行部122は、編集処理部124により編集され、記憶部110に記憶されたシーケンス命令を実行する。シーケンス命令は例えば、外部I/F部160を介して、ロボット制御装置50に制御指示を行うことで実行される。編集処理部124は、シーケンス命令(或いはルール)の編集処理を行う。編集処理は、例えば図3(A)、図3(B)のような画面を用いて行われる。シミュレーション処理部126は、編集処理部124により編集され、記憶部に記憶されたシーケンス命令の実行のシミュレーション処理を行う。よって具体的にはロボット制御装置50の処理のシミュレーション等を行うことになる。また、画像処理部128は、撮像装置20からの撮像画像情報を取得し、種々の画像処理を行う。ここでは画像処理部128は、情報処理装置10の処理部120に設けられるものとしたがこれに限定されるものではない。画像処理部は撮像装置20に内蔵されてもよい。
【0044】
表示部150は、各種の表示画面を表示するためのものであり、例えば液晶ディスプレイや有機ELディスプレイなどにより実現できる。
【0045】
外部I/F部160は、情報処理装置10に対するユーザーからの入力等を行ったり、撮像装置20やロボット30からの情報を受け付けるためのインターフェースである。ユーザーからの入力等に関しては、スイッチやボタン、キーボード或いはマウス等から構成されてもよい。
【0046】
撮像装置20は、上述したように、例えばワークを撮影可能な位置に設けられ、主にワークの撮影を行う。本実施形態においては撮像画像情報をそのまま情報処理装置10に送信するものとするが、これに限定されるものではない。例えば、情報処理装置10の処理部120の一部(例えば画像処理部128等)を撮像装置20に持たせてもよい。その場合、撮像画像に対して画像処理が施された後の情報が出力されることになる。
【0047】
また、ロボット30は、アーム320及びハンド330を含む。
【0048】
ロボット制御装置50は、情報処理装置10からの情報を受け付けロボットの各部(アーム320及びハンド330等)の制御を行う。具体的にはロボット30に対して制御信号を送信することで制御を行うことになる。また、エラーが発生した際にはエラーコードを処理部120に対して出力する。
【0049】
3.命令及びシーケンス命令
3.1 命令及びシーケンス命令の定義
次に、本実施形態で用いる命令・条件命令・シーケンス命令等について説明する。まず、本実施形態のデータベースの構造例を、図4を用いて説明する。データベース(図2におけるロボット制御DB111)は、命令テーブル、シーケンス命令テーブル、シーケンス命令オフセットテーブル、パラメーターテーブル、パラメーターオフセットテーブル、文字列オフセットテーブル等を含む。
【0050】
命令テーブルは、命令IDと命令名、パラメーター数及び各パラメーターのIDを関連づける。シーケンス命令テーブルは、シーケンス命令IDと条件数及び各条件命令IDを関連づける。パラメーターテーブルは、パラメーターID、サイズ、タイプ、パラメーター名、パラメーターの値及びパラメーターの属性(集合パラメーターであるか非集合パラメーターであるか)を関連づける。シーケンス命令オフセットテーブル、パラメーターオフセットテーブル、文字列オフセットテーブルは、データベースにおける実際の値が記憶されているアドレスを求めるためのオフセットを記憶する。
【0051】
本実施形態における命令とは、命令テーブルのレコードとして記憶されるものであり、ロボットに対する動作指示を表す。各命令は、任意の個数のパラメーターを利用する。例えば「移動する(work,point)」という命令であれば、「work」及び「point」がパラメーターとなる。この場合、「work」で表されるワークを、「point」で表される目標位置へ移動する命令となる。「初期化」のようにパラメーターをとらない命令があってもよい。その他、「近づく(work)」、「つかむ(work)」、「動かす(point)」、「はなす(work)」等の命令がある。
【0052】
本実施形態においては、1又は複数の条件命令とシーケンス命令とが結びつけられる。この結びつけのことをルールとも表記する。ルールによりシーケンス命令と、1又は複数の条件命令とが結びつけられ、当該1又は複数の条件命令が全て実行された場合に、シーケンス命令が実行されたとみなされるという関係が成り立つ。シーケンス命令が1又は複数の条件命令により記述されるといってもよい。
【0053】
このような命令群の構造例を図5に示す。一例としては、あるルールにおいては、シーケンス命令「移動する(work,point)」と条件命令「初期化」「近づく(work)」「つかむ(work)」「動かす(point)」「はなす(work)」が結びつけられることになる。そして、「初期化」「近づく(work)」「つかむ(work)」「動かす(point)」「はなす(work)」がこの順に実行されたとき、「移動する(work,point)」が実行されたことになる。これらのルールに用いられるシーケンス命令及び条件命令はともに上述した命令テーブルのレコードとして記憶される命令群に含まれる命令が用いられる。
【0054】
ここで、1つの命令が、あるルールにおいてはシーケンス命令として用いられ且つ他のルールにおいては条件命令として用いられてもよい。例えば、「移動する(work,point)」の条件命令として用いられた「つかむ(work)」が、他のルールにおいてはシーケンス命令として記述されてもよい。例えば、「つかむ(work)」をシーケンス命令として、条件命令「ハンドを開く」「位置調整(work)」「ハンドを閉じる」が結びつけられることが考えられる。また、別の例としては、「移動する(work,point)」が条件命令として用いられてもよい。「ワークの位置認識後に移動する(work,point)」というシーケンス命令があったとすれば、当該シーケンス命令に対しては、条件命令として「位置認識(work)」「移動する(work,point)」が結びつけられることになる。つまり、命令テーブルのレコードとして記憶される命令は、シーケンス命令として用いられてもよいし、条件命令として用いられてもよい。命令を任意の構成により階層化することが可能になり、柔軟に動作指示を記述することができる。
【0055】
本実施形態においては、動作指示(例えば通常時に実行される通常動作指示及びエラー時に実行されるエラー処理動作指示等)は、上述のシーケンス命令単位(ルール単位)で記述する。例えば1つのエラー処理動作は、1つのシーケンス命令に対応することになり、当該シーケンス命令をエラー処理動作シーケンス命令と呼ぶ。同様に、1つの通常動作は1つのシーケンス命令に対応することになり、当該シーケンス命令を通常動作シーケンス命令と呼ぶ。ただし、上述の手法に限定されるものではなく、例えば複数のシーケンス命令からなるシナリオという概念を導入し、動作指示を1つのシナリオにより記述してもよい。この場合のシナリオも、当該シナリオを構成する複数のシーケンス命令を、それぞれ条件命令とみなし、各条件命令を実行したときに実行されたと見なされる動作を新たにシーケンス命令として規定することにより、1つのシーケンス命令で記述することが可能である。このようにすれば、結局動作指示を1つのシーケンス命令で記述することができる。よって、通常動作及びエラー処理動作をシーケンス命令で記述するか、シナリオで記述するかは設計事項であり、本実施形態においてはどちらを用いてもよい。
【0056】
3.2 編集処理部によるシーケンス命令の編集
処理部120の編集処理部124における、ルールの編集処理について説明する。上述したように、ルールとはシーケンス命令と条件命令とを結びつけるものであるから、ルールの記述とは、当該ルールにおけるシーケンス命令と、条件命令とを決定する処理に相当する。
【0057】
情報処理装置10の表示部150に表示される画面の例を図3(A)に示す。図3(A)の例では、一番上の行にシーケンス命令を記述し、その下に1又は複数の条件命令を記述する形式を取る。各命令の記述は、キーボード等により命令名に当たる文字列を直接入力してもよいし、図3(B)に示したようにドロップダウンメニューを用いて選択してもよい。
【0058】
命令単位でルールを記述することにより、システム利用者はハードウェアに近いレベルでのロボット制御(例えばアクチュエーターをどれだけ作動させるか、ジョイント角を何度にするか等の制御)を考慮する必要がなくなる。
【0059】
また、編集処理部124における命令の記述においては、記憶部110に記憶されたデータベースの命令テーブル113のレコードとして記憶されている命令以外は記述できないという制約を設けてもよい。これは処理の前提として、実行可能な命令は全て命令テーブル113のレコードとして記憶させておくということが想定されるためである。データベースに記憶されていない命令を実行しようとしても、何を実行してよいかわからず、処理は不可能であるから、上述のような制約はこのような例外的な処理を引き起こす可能性を抑止する効果が期待できる。ドロップダウンメニューを用いるのであれば、表示される命令の候補を、データベースに記憶してあるものに限定すればよいし、文字列を直接入力するのであれば、入力された文字列とデータベースの記録とを照合し、記憶していない命令名が入力された際には警告を表示するようにすればよい。
【0060】
4.集合パラメーターの処理
次にフローチャートを用いて処理対象が集合パラメーターの属性を持つ場合の処理の詳細について説明する。適宜具体例として、図12に示したように複数のワークをそれぞれ別の目標位置に移動させる「移動する(work群,point群)」を用いる。
【0061】
図6が全体の処理を説明するフローチャートである。この処理が開始されると、まず動作指示を読み出す(S101)。この動作指示は上述したシナリオ(つまり、1又は複数のシーケンス命令からなる)であってもよい。ここではシナリオであるものとして説明する。シナリオが読み出されると、次に当該シナリオのゴールをシーケンス命令として関連づけているルールを検索する(S102)。例えば、シナリオが「移動する(work,point)」という1つのシーケンス命令からなるとしたら、まず「移動する(work,point)」という命令をシーケンス命令として持つルールを検索してくることになる。上述の条件を満たすルールがあったかの判定を行い(S103)、ルールがなかった場合には処理を終了する。ルールがあった場合には、ルールの実行処理を行う(S104)。ルールの実行処理とは、当該ルールに結びつけられたシーケンス命令の実行処理のことであり、詳細な処理は図7を用いて後述する。
【0062】
図7がルールの実行処理を説明するフローチャートである。この処理が開始されると、まずパラメーターの属性チェックが行われる(S201)。パラメーターのチェック処理については図8を用いて詳述する。次にチェックしたパラメーターの中に集合パラメーターの属性を有するものがあったかの判定が行われ(S202)、集合パラメーターがない場合には1ルールの実行処理が行われ(S203)、集合パラメーターがある場合にはルール群の実行処理が行われる(S204)。S203の処理は図10を用いて、S204の処理は図9を用いて詳述する。
【0063】
次に図8を用いてS201のパラメーターチェック処理について説明する。この処理が開始されると、まずパラメーターを表す変数Pを1に設定し(S301)、パラメーターPがあるかの判定を行う(S302)。パラメーターPがあるかの判定とは、P番目のパラメーターが存在するか否かの判定のことである。これ以降も「パラメーターP」とは、P番目のパラメーターのことをさすものとして用いる。パラメーターPがなかった場合には処理を終了する。パラメーターPがある場合には、その属性を参照する(S303)。これは具体的には図4に示したパラメーターテーブルの「属性」の欄の値を参照することになる。そして、参照したパラメーターPの属性が非集合か集合かを記憶し(S304)、Pをインクリメントして次のパラメーターのチェックを行う(S305)。これは「移動する(work群,point群)」の例では、work群がパラメーター1、point群がパラメーター2となり、ここではwork群もpoint群も集合パラメーターの属性であると言うことが記憶されることになる。
【0064】
図7のS204において行われるルール群の実行処理について図9を用いて説明する。この処理が開始されると、まず変数I(集合パラメーターのインデックスを表す変数)に0を設定し(S401)、各集合パラメーターのI番目の要素をチェックする(S402)。そして、全ての集合パラメーターのI番目の要素が存在するかの判定を行い(S403)、存在しなかった場合には処理を終了する。存在した場合には、各集合パラメーターのI番目の要素について1ルールの実行処理(S203の処理)が実行される(S404)。そして、Iをインクリメントして(S405)、S402に戻る。
【0065】
これは「移動する(work群,point群)」の例では、S403において、work群[I](work群のI番目の要素)とpoint群[I]とが両方存在するかの判定が行われることになる。そしてS404における1ルールの実行処理とは「移動する(work群[I],point群[I])」の実行処理になる。ここで、work群[I]及びpoint群[I]は1要素を表すものであり、非集合パラメーターであるから、図7のS202において集合パラメーターがなかった場合と同様にS203の処理が可能である。具体的には図11に示したように、1個のワークを1箇所の目標位置に移動させる動作になる。Iをインクリメントしていくため、I番目の要素がある限り、work群及びpoint群の要素に対して処理を行うことになる。
【0066】
図7のS203及び図9の404において行われる1ルールの実行処理について図10を用いて説明する。この処理が開始されると、まず変数N(条件命令を表す変数)に1を設定し(S501)、条件Nがあるかの判定を行う(S502)。条件Nがあるかの判定とは、N番目の条件命令が存在するか否かの判定のことである。これ以降も「条件N」とは、N番目の条件命令のことをさすものとして用いる。そして、条件Nをシーケンス命令に持つルールを検索する(S503)。そのようなルールあるかの判定を行い(S504)、見つからなかった場合には、条件Nはシーケンス命令としては用いられていない(階層構造においてさらに下位の命令は存在しない)ということであるため、S505において条件Nの実行処理を行う。
【0067】
また、S504において、条件Nをシーケンス命令として持つルールがあった場合には、階層構造においてさらに下位の命令が存在すると言うことであるから、当該下位の命令の実行処理を行うために、1ルール実行モジュールを再帰的に呼び出すことになる(S506)。S506の処理の後、或いは上述したS505の処理の後に、Nをインクリメントして(S507)、S502に戻る。つまり、ここまでが1番目の条件命令についての処理であり、次にNをインクリメントして2番目の条件命令について処理を開始する。
【0068】
「移動する(work群[I],point群[I])」の例では、「初期化」が条件1、「近づく(work群[I])」が条件2といったようになる。また、条件3である「つかむ(work群[I])」はシーケンス命令でもあるため、S504においてYesと判定されS506に移行し、「ハンドを開く」「位置調整(work群[I])」「ハンドを閉じる」が実行される。この場合「つかむ(work群[I])」の実行時における条件1が「ハンドを開く」、条件2が「位置調整(work群[I])」、条件3が「ハンドを閉じる」となる。
【0069】
以上の処理を行うことで、処理対象が集合パラメーターであるシーケンス命令を、非集合パラメーターを取るシーケンス命令を複数回実行することにより実現することが可能になる。
【0070】
なお、上述の例では2つのパラメーターwork群、point群を両方集合パラメーターの属性であるものとして説明したが、これに限定されるものではない。例えば、図13に示したように、複数のワークを1箇所に移動させる命令「移動する(work群,point)」も実行可能である。これは例えば、複数のワークをまとめる、積み上げる、1つの穴に落とす等の処理に用いることができる。実際には、「移動する(work群[0],point)」「移動する(work群[1],point)等を順に実行していくことになる。
【0071】
逆に図14に示したように1個のワークを複数箇所に移動させる命令「移動する(work,point群)」も実行可能である。これは例えば、ワークとして印鑑を用いて、書類の複数箇所に捺印する等の処理に用いることができる。実際には、「移動する(work、point群[0])「移動する(work,point群[1])」等を順に実行していくことになる。
【0072】
また、上述の例では「移動する(work群、point群)」において、work群の要素数とpoint群の要素数が等しいものとして説明したが、これに限定されない。work群の要素数がNであり、point群の要素数がMであってもよい。ただしこの場合には、何らかの手法でwork群の要素とpoint群の要素との対応付けを行う必要がある。例えば図16のような対応付けがされていたとすれば、「移動する(work群[0]、point群[0])」「移動する(work群[0]、point群[1])」「移動する(work群[1]、point群[2])」を順に実行すればよい。
【0073】
さらに変形例として、図15に示したように複数ロボット(或いは複数のアーム・ハンドを持つ1つのロボット)を用いてもよい。「移動する(work群,point群)」の例では、複数のワークをそれぞれ別の場所に移動させる。そのため、第1のロボット(或いは第1のアーム)でwork群[0]に対応するワークをpoint群[0]に対応する目標位置に移動させているときに、並行して第2のロボットで別のワークを移動させることが可能である。ただしこの場合には、何らかの手法で複数のロボット間の調整を行う必要がある。例えば複数のロボットを管理する情報処理装置10等に、図17のようなデータを用意して、いずれか1つのロボットが着手したシーケンス命令(具体的には各シーケンス命令に対応するインデックス等)についてフラグを立てるようにする。そして各ロボットに対してフラグが立っていない処理のみを実行させるようにすればよい。
【0074】
以上の本実施形態では、ロボット制御システムは、ロボットの制御に関する情報を記憶する記憶部110と、命令の実行処理を行う処理部120と、処理部120の処理結果に基づいてロボット制御を行うロボット制御部(ロボット制御装置50)とを含む。記憶部110は、命令の情報と、命令の処理対象を表すパラメーターの情報を記憶する。そして実行処理を行う命令が複数の命令から構成されるシーケンス命令であり且つ当該シーケンス命令の処理対象を表すパラメーターの属性が集合パラメーターの属性である場合に、処理部120は、シーケンス命令を記述する複数の命令の構成を変更することなく、パラメーターを順次変えながらシーケンス命令を複数回実行することで、集合パラメーターを処理対象とする動作の実行処理を行う。
【0075】
ここで命令とは、上述してきたようにロボットに対する動作指示の記述に用いられるものであり、図4のデータベースの命令テーブルにおけるレコードとして記憶されるものである。シーケンス命令を構成する複数の命令とは、上述してきた条件命令のことである。シーケンス命令と条件命令とを結びつけるものがルールであり、1つの命令があるルールでは条件命令として用いられ、別のルールではシーケンス命令として用いられてもよい。
【0076】
これにより、シーケンス命令を用いてロボットの動作指示を行う場合に、当該シーケンス命令の処理対象が集合パラメーターの属性を有したとしても容易に処理を行うことが可能になる。よって例えば、複数個のワークを複数箇所の目標位置にそれぞれ移動させるようなシーケンス命令を実行する際にも、パラメーター(ここでは、ワークと位置)を変えながらシーケンス命令(例えば非集合パラメーターを処理対象とするシーケンス命令)を複数回実行するだけで済むため、既存の非集合パラメーターを対象とするシーケンス命令に対して大幅な変更を行う必要がない。
【0077】
また、パラメーターがワークを指定するワークパラメーターであり、ワークパラメーターが集合パラメーターの属性である場合には、処理部120は、ワークを変えながら前記シーケンス命令を複数回実行する。
【0078】
ここで、「ワークを変えながらシーケンス命令を複数回実行」とは、例えばワークパラメーターが第1〜第NのN個のワークを表すパラメーターである場合には、第1のワークを表す非集合パラメーターを対象にシーケンス命令を実行し、第2のワークを表す非集合パラメーターを対象にシーケンス命令を実行するといったように、N回シーケンス命令を実行することである。
【0079】
これにより、パラメーターが特にワークを表すワークパラメーターである場合に、対象となるワークを変えながらシーケンス命令を実行することで、集合パラメーターを対象とする処理を容易に実行することが可能になる。
【0080】
また、パラメーターが目標位置を指定する位置パラメーターであり、位置パラメーターが集合パラメーターの属性である場合には、処理部120は、目標位置を変えながら前記シーケンス命令を複数回実行する。
【0081】
ここで、「目標位置を変えながらシーケンス命令を複数回実行」とは、ワークパラメーターの例と同様に、例えば位置パラメーターが第1〜第MのM個の目標位置を表すパラメーターである場合には、第1の目標位置を表す非集合パラメーターを対象にシーケンス命令を実行し、第2の目標位置を表す非集合パラメーターを対象にシーケンス命令を実行するといったように、M回シーケンス命令を実行することである。
【0082】
これにより、パラメーターが特に目標位置を表す位置パラメーターである場合に、対象となる目標位置を変えながらシーケンス命令を実行することで、集合パラメーターを対象とする処理を容易に実行することが可能になる。
【0083】
また、シーケンス命令は、ワークを把持して目標位置に移動する命令であってもよい。
【0084】
これにより、具体的な動作指示として、ワークを把持し目標位置に移動させる動作を実行する際に、パラメーター(ワーク及び目標位置)が集合パラメーターであっても処理を容易に実行することが可能になる。つまり「移動する(work、point)」のパラメーターwork及びpointが集合パラメーターになってもよいということになる。ここで、移動させるとは、例えば図1に示したようなパレット40にワークを並べる(或いはパレット上のワークをピックアップする)動作の他、溝や穴に部品をはめる動作や、ねじ穴にねじをはめる際、当該ねじをねじ穴まで持って行く動作等、広範な作業に用いることができる。そのため、「移動する(work群、point群)」を実行可能にすることで、より汎用性の高い動作指示を実現することが可能になる。
【0085】
また、ワークが集合パラメーターの属性であり、目標位置が非集合パラメーターの属性である場合には、処理部120は、第1〜第N(Nは2以上の整数)のワークを1箇所の目標位置に移動させることで、シーケンス命令の実行処理を行ってもよい。
【0086】
これにより、図13に示したように、複数のワーク(図13の例ではwork群[0]〜work群[3]の4つ)を全て同じ目標位置に移動させることが可能になる。よって、複数箇所に分かれていたワークをまとめたり、ワークを積み上げたり、目標位置に穴等が設置されている場合には、当該穴等にワークをまとめて落としたりすることが可能になる。
【0087】
また、ワークが非集合パラメーターの属性であり、目標位置が集合パラメーターの属性である場合には、処理部120は、1個のワークを第1〜第M(Mは2以上の整数)の目標位置に移動させることで、シーケンス命令の実行処理を行ってもよい。
【0088】
これにより、図14に示したように、1つのワークを複数の目標位置(図14の例ではpoint群[0]〜point群[3]の4箇所)に順次移動させることが可能になる。よって、ワークが印鑑であり、書類上に複数の目標位置が設定されているような場合には、書類の各箇所に捺印する等の作業が可能になる。
【0089】
また、ワークが集合パラメーターの属性であり、目標位置が集合パラメーターの属性である場合には、処理部120は、第1〜第Nのワークのうち第i(iは1≦i≦Nを満たす整数)のワークを、第1〜第Mの目標位置のうち第j(jは1≦j≦Mを満たす整数)の目標位置に移動させることで、シーケンス命令の実行処理を行ってもよい。
【0090】
これにより、図12に示したように第1のワーク(図12の例ではwork群[0])を第1の目標位置(図12の例ではpoint群[0])に移動させ、第2のワーク(図12の例ではwork群[1])を第2の目標位置(図12の例ではpoint群[1])に移動させる等の処理が可能になる。よって、一般的な形で「移動する」というシーケンス命令を用いることが可能になり、汎用性の高い動作指示ができる。
【0091】
また、記憶部110は、パラメーターの情報として、当該パラメーターが集合パラメーターの属性であるか否かの情報を記憶する。そして処理部120は、命令の実行処理の際に、当該命令の実行対象となるパラメーターの情報を参照することで、パラメーターが集合パラメーターの属性であるか否かの判定を行ってもよい。
【0092】
これにより、図4に示したデータベースのパラメーターテーブル(具体的にはパラメーターテーブルの属性の列の値)に基づいて、パラメーターが集合パラメーターの属性であるか否かの判定を行うことが可能になる。テーブルの値の参照を行うだけでよいため、処理をシンプルにすることができる。
【0093】
また、記憶部110は、図2に示したように、命令情報と、命令の処理対象を表すパラメーターとを結びつける命令テーブル113を記憶するとともに、シーケンス命令と1又は複数の条件命令とを結びつけるシーケンス命令テーブル115を記憶してもよい。
【0094】
ここで、条件命令とは、命令テーブル113のレコードとして記憶される命令の中から選択されるものである。そして、条件命令とシーケンス命令とは、1又は複数の条件命令を記述された順序に実行することにより、当該条件命令に結びつけられたシーケンス命令が実行されることになるという関係を有する。
【0095】
これにより、図4に示したようなデータベースのうち、命令テーブル113及びシーケンス命令テーブル115を実現することが可能になる。本実施形態においては、シーケンス命令テーブル115により記述される、シーケンス命令と条件命令との結びつけをルールとも呼ぶ。シーケンス命令と条件命令との対応づけをおこなうことにより、動作指示を階層的且つ体系的に記述することが可能になる。
【0096】
また、記憶部110は命令テーブル113に第1〜第Q(Qは1以上の整数)の命令レコード(命令)を記憶するとともに、シーケンス命令テーブル115に第1〜第P(Pは2以上の整数)のシーケンス命令レコード(ルール)を記憶する。そして、記憶部110は、第s(sは1≦s≦Pの整数)のシーケンス命令レコードにおいては、第t(tは1≦t≦Qの整数)の命令レコードにより表される前記命令を前記条件命令として記憶するとともに、第u(uは1≦u≦P、s≠uの整数)のシーケンス命令レコードにおいては、前記第tの命令レコードにより表される前記命令を前記シーケンス命令として記憶してもよい。
【0097】
これにより、命令テーブル113のレコードとして記憶された命令は、あるルールにおいてはシーケンス命令として結びつけられ且つ他のルールにおいては条件命令として結びつけられてもよいことになる。よって、2階層にとどまらず、3階層以上の階層構造が可能になる。つまり、あるシーケンス命令に条件命令が結びつけられていたとき、当該条件命令にもシーケンス命令としての属性があり、その下にさらに条件命令が結びつけられるという構成も可能になるということである。図5の例で言えば、「移動する(work,point)」の条件命令として「つかむ(work)」が規定されているが、「つかむ(work)」自身もシーケンス命令であり、条件命令として、「ハンドを開く」「位置調整(work)」「ハンドを閉じる」が結びつけられている。
【0098】
また、本実施形態は上述のロボット制御システムと、ロボット制御システムにより制御されるロボットとを含むロボットシステムに関係する。
【0099】
これにより、上述してきたロボット制御装置がロボット30を制御することにより、連係して動作を行うロボットシステムを実現することが可能になる。
【0100】
また、以上の本実施形態は図18に示したように、ロボットの制御に関する情報を記憶する記憶部110と、命令の実行処理を行う処理部120と、処理部120の処理結果に基づいてロボット制御を行うロボット制御部170としてコンピューターを機能させるプログラムに関係する。記憶部110は、命令の情報と、命令の処理対象を表すパラメーターの情報を記憶する。そして実行処理を行う命令が複数の命令から構成されるシーケンス命令であり且つ当該シーケンス命令の処理対象を表すパラメーターの属性が集合パラメーターの属性である場合に、処理部120は、シーケンス命令を記述する複数の命令の構成を変更することなく、パラメーターを順次変えながらシーケンス命令を複数回実行することで、集合パラメーターを処理対象とする動作の実行処理を行う。
【0101】
これにより、ソフトウェア的にロボットを制御する処理を行うプログラムを実現することが可能になる。そして、上記プログラムは、情報記憶媒体180に記録される。ここで、情報記憶媒体180としては、DVDやCD等の光ディスク、光磁気ディスク、ハードディスク(HDD)、不揮発性メモリーやRAM等のメモリーなど、情報処理装置10等によって読み取り可能な種々の記録媒体を想定できる。例えば、図18に示したように、PC等の情報処理装置によって読み取り可能な種々の記録媒体にプログラムが記憶され、処理部120において実行されるケースが考えられる。
【0102】
なお、以上のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語と共に記載された用語は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。またロボット制御システム、ロボットシステム等の構成、動作も本実施形態で説明したものに限定されず、種々の変形実施が可能である。
【符号の説明】
【0103】
10 情報処理装置、20 撮像装置、30 ロボット、40 パレット、
50 ロボット制御装置、110 記憶部、111 ロボット制御DB、
112 ワークDB、113 命令テーブル、114 ロボットDB、
115 シーケンス命令テーブル、116 アームDB、
118 ハンドDB、120 処理部、122 実行部、124 編集処理部、
126 シミュレーション処理部、128 画像処理部、150 表示部、
160 外部I/F部、170 ロボット制御部、180 情報記憶媒体、
320 アーム、330 ハンド
【技術分野】
【0001】
本発明は、ロボット制御システム、ロボットシステム及びプログラム等に関する。
【背景技術】
【0002】
近年、様々な分野で産業用ロボットが広く用いられている。これらの産業用ロボットに対してユーザーの意図通りの動作を行わせるために、ロボットに実行させる作業内容を教示することが必要となる。
【0003】
作業内容を教示するために、ロボットに行わせたい動作を、例えば動作ルーチン等の形式により記述する。そのため、今までロボットに対して行わせたことがないような新たな動作を指示するためには、新しく動作ルーチンを作成しなくてはならない。
【0004】
特許文献1には、標準的な基本動作(標準動作)を規定する標準動作ルーチンを、部位ごとの動作を規定する部位動作モジュール等の組み合わせとして準備しておき、新たな動作ルーチンを追加する際には、標準動作ルーチンに用いられている特定の部位動作モジュールの削除、入れ替え、或いは新たな部位動作モジュールの追加により処理する手法が提案されている。特許文献1によれば、下位レベル(例えばアクチュエーターの動作プログラミングのレベル等)のプログラミングを意識することなく、既存のモジュールの組み替え等で動作ルーチンの新規作成或いは書き換え等を容易に行うことができる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2000−153479号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献1の手法では、動作の対象が集合パラメーターとなったとき(例えば目標位置に移動させたいワークが複数存在する等の場合)には、例えば1つのワークを1箇所に移動させる動作ルーチンとは別に、複数のワークを移動させる動作ルーチンを新規作成する等の大きな変更が必要になってしまう。
【0007】
本発明の目的は、動作の記述に用いられる命令の処理対象が集合パラメーターであったとしても、動作における命令の構成を変更することなく、容易に所望の動作を実現するロボット制御システム、ロボットシステム及びプログラム等を提供することにある。
【課題を解決するための手段】
【0008】
本発明の一態様は、ロボットの制御に関する情報を記憶する記憶部と、命令の実行処理を行う処理部と、前記処理部の処理結果に基づいて前記ロボットの制御を行うロボット制御部と、を含み、前記記憶部は、前記処理部が実行する前記命令の情報と、前記命令の処理対象を表すパラメーターの情報を記憶し、前記処理部は、前記命令が複数の命令により構成されるシーケンス命令であり且つ前記シーケンス命令の処理対象を表す前記パラメーターの属性が集合パラメーターの属性である場合に、前記シーケンス命令を構成する前記複数の命令を変更することなく、前記パラメーターを順次変えながら前記シーケンス命令を複数回実行するロボット制御システムに関係する。
【0009】
本発明の一態様では、複数の命令によりシーケンス命令を記述するものとし、シーケンス命令の処理対象のパラメーターの属性が、集合パラメーターの属性であった場合に、シーケンス命令を記述する命令の構成は変更せずに、パラメーターを変えながらシーケンス命令を複数回実行する。これにより、集合パラメーターの属性を有するパラメーターが処理対象の場合にも、非集合パラメーターを処理対象とするシーケンス命令を複数回実行するだけでよいため、容易に処理を行うこと等が可能になる。
【0010】
また、本発明の一態様では、前記パラメーターが、ワークを指定するワークパラメーターであり、前記ワークパラメーターの属性が前記集合パラメーターの属性である場合には、前記処理部は、前記ワークを変えながら前記シーケンス命令を複数回実行してもよい。
【0011】
これにより、パラメーターがワークパラメーターであり、当該ワークパラメーターの属性が集合パラメーターの属性である場合にも、ワークを変えながら処理を実行することで、集合パラメーターに対する処理を行うことができる。
【0012】
また、本発明の一態様では、前記パラメーターが、目標位置を指定する位置パラメーターであり、前記位置パラメーターの属性が前記集合パラメーターの属性である場合には、前記処理部は、前記目標位置を変えながら前記シーケンス命令を複数回実行してもよい。
【0013】
これにより、パラメーターが位置パラメーターであり、当該位置パラメーターの属性が集合パラメーターの属性である場合にも、目標位置を変えながら処理を実行することで、集合パラメーターに対する処理を行うことができる。
【0014】
また、本発明の一態様では、前記シーケンス命令は、ワークを把持して、目標位置に移動する命令であってもよい。
【0015】
これにより、ワークを把持し目標位置に移動するという汎用性の高い動作指示に関して、パラメーター(ワークと目標位置)の属性が集合パラメーターになっても容易に処理を行うこと等が可能になる。
【0016】
また、本発明の一態様では、前記ワークを指定するワークパラメーターの属性が前記集合パラメーターの属性であり、前記目標位置を指定する位置パラメーターの属性が非集合パラメーターの属性である場合には、前記処理部は、第1〜第N(Nは2以上の整数)のワークを1箇所の前記目標位置に移動させることで前記シーケンス命令の実行処理を行ってもよい。
【0017】
これにより、複数個のワークを1箇所の目標位置に移動するシーケンス命令を容易に実行することができ、ワークをまとめたり、つみあげたり、目標位置に設けられた穴に落としたりする動作等が可能になる。
【0018】
また、本発明の一態様では、前記ワークを指定するワークパラメーターの属性が非集合パラメーターの属性であり、前記目標位置を指定する位置パラメーターの属性が前記集合パラメーターの属性である場合には、前記処理部は、1個の前記ワークを第1〜第M(Mは2以上の整数)の目標位置に移動させることで前記シーケンス命令の実行処理を行ってもよい。
【0019】
これにより、1個のワークを複数箇所の目標位置に移動するシーケンス命令を容易に実行することができ、印鑑を書類上の複数の箇所に捺印する動作等が可能になる。
【0020】
また、本発明の一態様では、前記ワークを指定するワークパラメーターの属性が前記集合パラメーターの属性であり、前記目標位置を指定する位置パラメーターの属性が前記集合パラメーターの属性である場合には、前記処理部は、第1〜第Nのワークのうち第i(iは1≦i≦Nを満たす整数)のワークを、第1〜第Mの目標位置のうち第j(jは1≦j≦Mを満たす整数)の目標位置に移動させることで前記シーケンス命令の実行処理を行ってもよい。
【0021】
これにより、複数個のワークを複数箇所の目標位置にそれぞれ移動するシーケンス命令を容易に実行することができ、移動するという命令の汎用性をさらに高めること等が可能になる。
【0022】
また、本発明の一態様では、前記記憶部は、前記パラメーターの情報として、前記パラメーターの属性が前記集合パラメーターの属性であるか否かの情報を記憶し、前記処理部は、前記命令の実行処理の際に、前記命令の実行対象となる前記パラメーターの情報を参照することで、前記パラメーターの属性が前記集合パラメーターの属性であるか否かの判定を行ってもよい。
【0023】
これにより、記憶部に記憶された情報に基づいて、処理対象を表すパラメーターの属性が集合パラメーターの属性であるか否かの判定を行うこと等が可能になる。
【0024】
前記記憶部は、前記シーケンス命令の記述に用いられる前記命令に関する情報である命令情報と、前記命令の処理対象を表すパラメーターとを結びつける命令テーブルを記憶するとともに、前記命令のうち条件命令とシーケンス命令とが、1又は複数の前記条件命令を実行することにより、前記シーケンス命令が実行されるという関係を有する場合に、1又は複数の前記条件命令と、前記シーケンス命令に関する情報とを結びつけるシーケンス命令テーブルを記憶してもよい。
【0025】
これにより、データベースのテーブルとして命令を記憶した上で、同様にデータベースのテーブルとしてシーケンス命令と条件命令の結びつけを記憶することが可能になる。
【0026】
また、本発明の一態様では、前記記憶部は、前記命令テーブルに第1〜第Q(Qは1以上の整数)の命令レコードを記憶するとともに、前記シーケンス命令テーブルに第1〜第P(Pは2以上の整数)のシーケンス命令レコードを記憶し、前記記憶部は、第s(sは1≦s≦Pの整数)のシーケンス命令レコードにおいては、第t(tは1≦t≦Qの整数)の命令レコードにより表される前記命令を前記条件命令として記憶するとともに、第u(uは1≦u≦P、s≠uの整数)のシーケンス命令レコードにおいては、前記第tの命令レコードにより表される前記命令を前記シーケンス命令として記憶してもよい。
【0027】
これにより、1つの命令をシーケンス命令として利用することも、条件命令として利用することもでき、命令構造の階層化が可能になる。
【0028】
また、本発明の他の態様は、請求項1乃至10のいずれかに記載のロボット制御システムと、前記ロボット制御システムにより制御されるロボットと、を含むロボットシステムに関係する。
【0029】
また、本発明の他の態様は、ロボットの制御に関する情報を記憶する記憶部と、命令の実行処理を行う処理部と、前記処理部の処理結果に基づいて前記ロボットの制御を行うロボット制御部として、コンピューターを機能させ、前記記憶部は、前記処理部が実行する前記命令の情報と、前記命令の処理対象を表すパラメーターの情報を記憶し、前記処理部は、前記命令が複数の命令により構成されるシーケンス命令であり且つ前記シーケンス命令の処理対象を表す前記パラメーターの属性が集合パラメーターの属性である場合に、前記シーケンス命令を構成する前記複数の命令を変更することなく、前記パラメーターを順次変えながら前記シーケンス命令を複数回実行するプログラムに関係する。
【図面の簡単な説明】
【0030】
【図1】本実施形態のシステム構成例。
【図2】本実施形態の詳細なシステム構成例。
【図3】図3(A)、図3(B)は編集処理に用いられる画面の例。
【図4】記憶部に記憶されるデータベースのデータ構造例。
【図5】本実施形態で用いられる命令群の階層的な構造を説明する図。
【図6】本実施形態の全体の処理を説明するためのフローチャート。
【図7】ルール実行処理を説明するためのフローチャート。
【図8】パラメーターチェック処理を説明するためのフローチャート。
【図9】ルール群実行処理を説明するためのフローチャート。
【図10】1ルール実行処理を説明するためのフローチャート。
【図11】1個のワークを1箇所の目標位置に移動する例。
【図12】複数のワークを複数の目標位置に移動する例。
【図13】複数のワークを1箇所の目標位置に移動する例。
【図14】1個のワークを複数の目標位置に移動する例。
【図15】複数のロボットを用いて、複数のワークを複数の目標位置に移動する例。
【図16】ワーク群の要素と位置群の要素との結び付けを説明する図。
【図17】複数のロボットによる強調動作の際に用いられるデータ構造の例。
【図18】本実施形態の他のシステム構成例。
【発明を実施するための形態】
【0031】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【0032】
1.本実施形態の手法
まず本実施形態の手法について説明する。ロボットにユーザーの意図通りの動作を行わせるためには、ロボットに実行させる作業内容を教示することが必要となる。教示は例えば、何らかの形で動作指示を記述し、記述された動作指示に従った信号をロボットに出力することで行われる。
【0033】
上述した特許文献1の手法では、動作ルーチンという形で動作指示を記述している。一般的には、動作指示の記述は例えばアクチュエーターの動作プログラミングのような下位レベルの記述を要するように、相応の知識が求められる。特許文献1においては、標準動作ルーチンを部位動作モジュールにより構成し、当該部位動作モジュールの削除、入れ替え及び追加を行うことで、システム利用者に下位レベルの処理を意識させないことができるため、新たな動作ルーチンの作成等が容易になるとしている。しかし、上述の手法を用いても、動作の対象が集合パラメーターの属性を持つ場合(複数のワークを目標位置に移動させる場合等)には、非集合パラメーターを対象にする動作ルーチンで対処することができず、大幅な変更が必要になるという問題がある。
【0034】
そこで、本出願人は以下の手法を提案する。まず、本実施形態においては動作指示の記述は、複数の命令から構成されるシーケンス命令を用いて行う。そして、非集合パラメーターを対象とするシーケンス命令が既に存在する場合、対象が集合パラメーターの属性を持つ動作指示をロボットに実行させる際に、命令を組み替えて別のシーケンス命令を作成する等の変更は行わない。非集合パラメーターを対象とする既存のシーケンス命令を構成する命令は変更せずに、パラメーターを変更しながら当該既存のシーケンス命令を実行することで対処する。
【0035】
具体例を示す。「移動する(work,point)」という1つの物(ワーク)を1箇所の目標位置に移動するシーケンス命令(パラメーターであるwork、pointはともに非集合パラメーター)が既にある場合に、「移動する(work群,point群)」という複数のワークをそれぞれ別の目標位置に移動させるシーケンス命令を実行させるケースを考える。この場合には、上述の「移動する(work群,point群)」を「移動する(第1のwork、第1のpoint)」〜「移動する(第Nのwork,第Nのpoint)」というN個(Nはwork群、point群の数に相当)のシーケンス命令の繰り返しにより実現する。処理としては、パラメーターの属性情報を読み取り、集合パラメーターの属性である場合には、インデックスを自動的に付加しインデックスに従って非集合パラメーターを対象とするシーケンス命令を複数回実行することになる。
【0036】
以下、システム構成例について説明した後、図4や図5等を用いて本実施形態において用いられる命令やシーケンス命令等の考え方について説明する。その後、フローチャートを用いて集合パラメーターの処理について説明する。
【0037】
2.システム構成例
本実施形態に係るロボット制御システムを含むロボットシステムの構成例を、図1を用いて説明する。ロボットシステムは、情報処理装置10と、撮像装置20と、ロボット30と、図1には不図示のロボット制御装置50と、を含む。ただし、ロボットシステムは図1の構成に限定されず、これらの一部の構成要素を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
【0038】
ロボット30は、アーム320及びハンド330を有し、情報処理装置10からの動作指示に従い処理を行う。例えばパレット40に載せられたワークに対して処理を行う。撮像装置20は、例えばワークを撮影可能な位置(パレットの直上でもよいし、ロボット30のハンド330に取り付けられてもよい)に設けられ、主にワークの撮影を行う。そして、撮像画像の情報からワークの位置や姿勢等に関する情報を検出する。検出した情報は例えば情報処理装置10等に送られてもよいし、直接ロボット30に送られてもよい。また、ワークの位置や姿勢等に関する情報を検出できればよいため、撮像装置20による撮像画像の取得以外の手法(例えばレーザー等を用いた3次元スキャン)を用いてもよい。
【0039】
具体的な構成について図2を用いて説明する。情報処理装置10は、記憶部110と、処理部120と、表示部150と、外部I/F部160を含む。
【0040】
記憶部110は、データベースを記憶したり、処理部120等のワーク領域となるもので、その機能はRAM等のメモリーやHDD(ハードディスクドライブ)などにより実現できる。記憶部110は、ロボット制御データベース111(以下データベースを適宜DBと表記する)を含む。ロボット制御データベース111は具体的には図4を用いて後述するデータベースであって、例えば命令テーブル113と、シーケンス命令テーブル115とを含む。命令テーブル113は命令に関するデータを記憶し、シーケンス命令テーブル115は、条件命令とシーケンス命令とを結びつけるもの(本実施形態においてはルールと呼ぶ)を記憶する。命令、条件命令、シーケンス命令、ルール等についての詳細は後述する。
【0041】
また、ロボットが図1に示すようにアーム320とハンド330を有するロボットである場合には、記憶部110は、ワークDB112と、ロボットDB114とを含み、ロボットDB114は、アームDB116と、ハンドDB118を含む。当該ロボットが複数のアームを備える場合は、アームDB116とハンドDB118は複数個であってもよい。ワークDB112は、ワークの大きさ、形状、姿勢等の情報を記憶する。ロボットDB114はロボットに関するデータを記憶する。具体的にはアームDB116でアームの形状、可動範囲等を記憶し、ハンドDB118でハンドの形状、大きさ等の情報を記憶する。ただし、記憶部110は図2の構成に限定されず、これらの一部の構成要素を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
【0042】
処理部120は、記憶部110からのデータや、外部I/F部160において受信した、撮像装置20或いはロボット30からの情報等に基づいて種々の処理を行う。この処理部120の機能は、各種プロセッサ(CPU等)、ASIC(ゲートアレイ等)などのハードウェアや、プログラムなどにより実現できる。
【0043】
処理部120は、実行部122と、編集処理部124と、シミュレーション処理部126と、画像処理部128とを含む。処理部120は図2の構成に限定されず、これらの一部の構成要素を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。実行部122は、編集処理部124により編集され、記憶部110に記憶されたシーケンス命令を実行する。シーケンス命令は例えば、外部I/F部160を介して、ロボット制御装置50に制御指示を行うことで実行される。編集処理部124は、シーケンス命令(或いはルール)の編集処理を行う。編集処理は、例えば図3(A)、図3(B)のような画面を用いて行われる。シミュレーション処理部126は、編集処理部124により編集され、記憶部に記憶されたシーケンス命令の実行のシミュレーション処理を行う。よって具体的にはロボット制御装置50の処理のシミュレーション等を行うことになる。また、画像処理部128は、撮像装置20からの撮像画像情報を取得し、種々の画像処理を行う。ここでは画像処理部128は、情報処理装置10の処理部120に設けられるものとしたがこれに限定されるものではない。画像処理部は撮像装置20に内蔵されてもよい。
【0044】
表示部150は、各種の表示画面を表示するためのものであり、例えば液晶ディスプレイや有機ELディスプレイなどにより実現できる。
【0045】
外部I/F部160は、情報処理装置10に対するユーザーからの入力等を行ったり、撮像装置20やロボット30からの情報を受け付けるためのインターフェースである。ユーザーからの入力等に関しては、スイッチやボタン、キーボード或いはマウス等から構成されてもよい。
【0046】
撮像装置20は、上述したように、例えばワークを撮影可能な位置に設けられ、主にワークの撮影を行う。本実施形態においては撮像画像情報をそのまま情報処理装置10に送信するものとするが、これに限定されるものではない。例えば、情報処理装置10の処理部120の一部(例えば画像処理部128等)を撮像装置20に持たせてもよい。その場合、撮像画像に対して画像処理が施された後の情報が出力されることになる。
【0047】
また、ロボット30は、アーム320及びハンド330を含む。
【0048】
ロボット制御装置50は、情報処理装置10からの情報を受け付けロボットの各部(アーム320及びハンド330等)の制御を行う。具体的にはロボット30に対して制御信号を送信することで制御を行うことになる。また、エラーが発生した際にはエラーコードを処理部120に対して出力する。
【0049】
3.命令及びシーケンス命令
3.1 命令及びシーケンス命令の定義
次に、本実施形態で用いる命令・条件命令・シーケンス命令等について説明する。まず、本実施形態のデータベースの構造例を、図4を用いて説明する。データベース(図2におけるロボット制御DB111)は、命令テーブル、シーケンス命令テーブル、シーケンス命令オフセットテーブル、パラメーターテーブル、パラメーターオフセットテーブル、文字列オフセットテーブル等を含む。
【0050】
命令テーブルは、命令IDと命令名、パラメーター数及び各パラメーターのIDを関連づける。シーケンス命令テーブルは、シーケンス命令IDと条件数及び各条件命令IDを関連づける。パラメーターテーブルは、パラメーターID、サイズ、タイプ、パラメーター名、パラメーターの値及びパラメーターの属性(集合パラメーターであるか非集合パラメーターであるか)を関連づける。シーケンス命令オフセットテーブル、パラメーターオフセットテーブル、文字列オフセットテーブルは、データベースにおける実際の値が記憶されているアドレスを求めるためのオフセットを記憶する。
【0051】
本実施形態における命令とは、命令テーブルのレコードとして記憶されるものであり、ロボットに対する動作指示を表す。各命令は、任意の個数のパラメーターを利用する。例えば「移動する(work,point)」という命令であれば、「work」及び「point」がパラメーターとなる。この場合、「work」で表されるワークを、「point」で表される目標位置へ移動する命令となる。「初期化」のようにパラメーターをとらない命令があってもよい。その他、「近づく(work)」、「つかむ(work)」、「動かす(point)」、「はなす(work)」等の命令がある。
【0052】
本実施形態においては、1又は複数の条件命令とシーケンス命令とが結びつけられる。この結びつけのことをルールとも表記する。ルールによりシーケンス命令と、1又は複数の条件命令とが結びつけられ、当該1又は複数の条件命令が全て実行された場合に、シーケンス命令が実行されたとみなされるという関係が成り立つ。シーケンス命令が1又は複数の条件命令により記述されるといってもよい。
【0053】
このような命令群の構造例を図5に示す。一例としては、あるルールにおいては、シーケンス命令「移動する(work,point)」と条件命令「初期化」「近づく(work)」「つかむ(work)」「動かす(point)」「はなす(work)」が結びつけられることになる。そして、「初期化」「近づく(work)」「つかむ(work)」「動かす(point)」「はなす(work)」がこの順に実行されたとき、「移動する(work,point)」が実行されたことになる。これらのルールに用いられるシーケンス命令及び条件命令はともに上述した命令テーブルのレコードとして記憶される命令群に含まれる命令が用いられる。
【0054】
ここで、1つの命令が、あるルールにおいてはシーケンス命令として用いられ且つ他のルールにおいては条件命令として用いられてもよい。例えば、「移動する(work,point)」の条件命令として用いられた「つかむ(work)」が、他のルールにおいてはシーケンス命令として記述されてもよい。例えば、「つかむ(work)」をシーケンス命令として、条件命令「ハンドを開く」「位置調整(work)」「ハンドを閉じる」が結びつけられることが考えられる。また、別の例としては、「移動する(work,point)」が条件命令として用いられてもよい。「ワークの位置認識後に移動する(work,point)」というシーケンス命令があったとすれば、当該シーケンス命令に対しては、条件命令として「位置認識(work)」「移動する(work,point)」が結びつけられることになる。つまり、命令テーブルのレコードとして記憶される命令は、シーケンス命令として用いられてもよいし、条件命令として用いられてもよい。命令を任意の構成により階層化することが可能になり、柔軟に動作指示を記述することができる。
【0055】
本実施形態においては、動作指示(例えば通常時に実行される通常動作指示及びエラー時に実行されるエラー処理動作指示等)は、上述のシーケンス命令単位(ルール単位)で記述する。例えば1つのエラー処理動作は、1つのシーケンス命令に対応することになり、当該シーケンス命令をエラー処理動作シーケンス命令と呼ぶ。同様に、1つの通常動作は1つのシーケンス命令に対応することになり、当該シーケンス命令を通常動作シーケンス命令と呼ぶ。ただし、上述の手法に限定されるものではなく、例えば複数のシーケンス命令からなるシナリオという概念を導入し、動作指示を1つのシナリオにより記述してもよい。この場合のシナリオも、当該シナリオを構成する複数のシーケンス命令を、それぞれ条件命令とみなし、各条件命令を実行したときに実行されたと見なされる動作を新たにシーケンス命令として規定することにより、1つのシーケンス命令で記述することが可能である。このようにすれば、結局動作指示を1つのシーケンス命令で記述することができる。よって、通常動作及びエラー処理動作をシーケンス命令で記述するか、シナリオで記述するかは設計事項であり、本実施形態においてはどちらを用いてもよい。
【0056】
3.2 編集処理部によるシーケンス命令の編集
処理部120の編集処理部124における、ルールの編集処理について説明する。上述したように、ルールとはシーケンス命令と条件命令とを結びつけるものであるから、ルールの記述とは、当該ルールにおけるシーケンス命令と、条件命令とを決定する処理に相当する。
【0057】
情報処理装置10の表示部150に表示される画面の例を図3(A)に示す。図3(A)の例では、一番上の行にシーケンス命令を記述し、その下に1又は複数の条件命令を記述する形式を取る。各命令の記述は、キーボード等により命令名に当たる文字列を直接入力してもよいし、図3(B)に示したようにドロップダウンメニューを用いて選択してもよい。
【0058】
命令単位でルールを記述することにより、システム利用者はハードウェアに近いレベルでのロボット制御(例えばアクチュエーターをどれだけ作動させるか、ジョイント角を何度にするか等の制御)を考慮する必要がなくなる。
【0059】
また、編集処理部124における命令の記述においては、記憶部110に記憶されたデータベースの命令テーブル113のレコードとして記憶されている命令以外は記述できないという制約を設けてもよい。これは処理の前提として、実行可能な命令は全て命令テーブル113のレコードとして記憶させておくということが想定されるためである。データベースに記憶されていない命令を実行しようとしても、何を実行してよいかわからず、処理は不可能であるから、上述のような制約はこのような例外的な処理を引き起こす可能性を抑止する効果が期待できる。ドロップダウンメニューを用いるのであれば、表示される命令の候補を、データベースに記憶してあるものに限定すればよいし、文字列を直接入力するのであれば、入力された文字列とデータベースの記録とを照合し、記憶していない命令名が入力された際には警告を表示するようにすればよい。
【0060】
4.集合パラメーターの処理
次にフローチャートを用いて処理対象が集合パラメーターの属性を持つ場合の処理の詳細について説明する。適宜具体例として、図12に示したように複数のワークをそれぞれ別の目標位置に移動させる「移動する(work群,point群)」を用いる。
【0061】
図6が全体の処理を説明するフローチャートである。この処理が開始されると、まず動作指示を読み出す(S101)。この動作指示は上述したシナリオ(つまり、1又は複数のシーケンス命令からなる)であってもよい。ここではシナリオであるものとして説明する。シナリオが読み出されると、次に当該シナリオのゴールをシーケンス命令として関連づけているルールを検索する(S102)。例えば、シナリオが「移動する(work,point)」という1つのシーケンス命令からなるとしたら、まず「移動する(work,point)」という命令をシーケンス命令として持つルールを検索してくることになる。上述の条件を満たすルールがあったかの判定を行い(S103)、ルールがなかった場合には処理を終了する。ルールがあった場合には、ルールの実行処理を行う(S104)。ルールの実行処理とは、当該ルールに結びつけられたシーケンス命令の実行処理のことであり、詳細な処理は図7を用いて後述する。
【0062】
図7がルールの実行処理を説明するフローチャートである。この処理が開始されると、まずパラメーターの属性チェックが行われる(S201)。パラメーターのチェック処理については図8を用いて詳述する。次にチェックしたパラメーターの中に集合パラメーターの属性を有するものがあったかの判定が行われ(S202)、集合パラメーターがない場合には1ルールの実行処理が行われ(S203)、集合パラメーターがある場合にはルール群の実行処理が行われる(S204)。S203の処理は図10を用いて、S204の処理は図9を用いて詳述する。
【0063】
次に図8を用いてS201のパラメーターチェック処理について説明する。この処理が開始されると、まずパラメーターを表す変数Pを1に設定し(S301)、パラメーターPがあるかの判定を行う(S302)。パラメーターPがあるかの判定とは、P番目のパラメーターが存在するか否かの判定のことである。これ以降も「パラメーターP」とは、P番目のパラメーターのことをさすものとして用いる。パラメーターPがなかった場合には処理を終了する。パラメーターPがある場合には、その属性を参照する(S303)。これは具体的には図4に示したパラメーターテーブルの「属性」の欄の値を参照することになる。そして、参照したパラメーターPの属性が非集合か集合かを記憶し(S304)、Pをインクリメントして次のパラメーターのチェックを行う(S305)。これは「移動する(work群,point群)」の例では、work群がパラメーター1、point群がパラメーター2となり、ここではwork群もpoint群も集合パラメーターの属性であると言うことが記憶されることになる。
【0064】
図7のS204において行われるルール群の実行処理について図9を用いて説明する。この処理が開始されると、まず変数I(集合パラメーターのインデックスを表す変数)に0を設定し(S401)、各集合パラメーターのI番目の要素をチェックする(S402)。そして、全ての集合パラメーターのI番目の要素が存在するかの判定を行い(S403)、存在しなかった場合には処理を終了する。存在した場合には、各集合パラメーターのI番目の要素について1ルールの実行処理(S203の処理)が実行される(S404)。そして、Iをインクリメントして(S405)、S402に戻る。
【0065】
これは「移動する(work群,point群)」の例では、S403において、work群[I](work群のI番目の要素)とpoint群[I]とが両方存在するかの判定が行われることになる。そしてS404における1ルールの実行処理とは「移動する(work群[I],point群[I])」の実行処理になる。ここで、work群[I]及びpoint群[I]は1要素を表すものであり、非集合パラメーターであるから、図7のS202において集合パラメーターがなかった場合と同様にS203の処理が可能である。具体的には図11に示したように、1個のワークを1箇所の目標位置に移動させる動作になる。Iをインクリメントしていくため、I番目の要素がある限り、work群及びpoint群の要素に対して処理を行うことになる。
【0066】
図7のS203及び図9の404において行われる1ルールの実行処理について図10を用いて説明する。この処理が開始されると、まず変数N(条件命令を表す変数)に1を設定し(S501)、条件Nがあるかの判定を行う(S502)。条件Nがあるかの判定とは、N番目の条件命令が存在するか否かの判定のことである。これ以降も「条件N」とは、N番目の条件命令のことをさすものとして用いる。そして、条件Nをシーケンス命令に持つルールを検索する(S503)。そのようなルールあるかの判定を行い(S504)、見つからなかった場合には、条件Nはシーケンス命令としては用いられていない(階層構造においてさらに下位の命令は存在しない)ということであるため、S505において条件Nの実行処理を行う。
【0067】
また、S504において、条件Nをシーケンス命令として持つルールがあった場合には、階層構造においてさらに下位の命令が存在すると言うことであるから、当該下位の命令の実行処理を行うために、1ルール実行モジュールを再帰的に呼び出すことになる(S506)。S506の処理の後、或いは上述したS505の処理の後に、Nをインクリメントして(S507)、S502に戻る。つまり、ここまでが1番目の条件命令についての処理であり、次にNをインクリメントして2番目の条件命令について処理を開始する。
【0068】
「移動する(work群[I],point群[I])」の例では、「初期化」が条件1、「近づく(work群[I])」が条件2といったようになる。また、条件3である「つかむ(work群[I])」はシーケンス命令でもあるため、S504においてYesと判定されS506に移行し、「ハンドを開く」「位置調整(work群[I])」「ハンドを閉じる」が実行される。この場合「つかむ(work群[I])」の実行時における条件1が「ハンドを開く」、条件2が「位置調整(work群[I])」、条件3が「ハンドを閉じる」となる。
【0069】
以上の処理を行うことで、処理対象が集合パラメーターであるシーケンス命令を、非集合パラメーターを取るシーケンス命令を複数回実行することにより実現することが可能になる。
【0070】
なお、上述の例では2つのパラメーターwork群、point群を両方集合パラメーターの属性であるものとして説明したが、これに限定されるものではない。例えば、図13に示したように、複数のワークを1箇所に移動させる命令「移動する(work群,point)」も実行可能である。これは例えば、複数のワークをまとめる、積み上げる、1つの穴に落とす等の処理に用いることができる。実際には、「移動する(work群[0],point)」「移動する(work群[1],point)等を順に実行していくことになる。
【0071】
逆に図14に示したように1個のワークを複数箇所に移動させる命令「移動する(work,point群)」も実行可能である。これは例えば、ワークとして印鑑を用いて、書類の複数箇所に捺印する等の処理に用いることができる。実際には、「移動する(work、point群[0])「移動する(work,point群[1])」等を順に実行していくことになる。
【0072】
また、上述の例では「移動する(work群、point群)」において、work群の要素数とpoint群の要素数が等しいものとして説明したが、これに限定されない。work群の要素数がNであり、point群の要素数がMであってもよい。ただしこの場合には、何らかの手法でwork群の要素とpoint群の要素との対応付けを行う必要がある。例えば図16のような対応付けがされていたとすれば、「移動する(work群[0]、point群[0])」「移動する(work群[0]、point群[1])」「移動する(work群[1]、point群[2])」を順に実行すればよい。
【0073】
さらに変形例として、図15に示したように複数ロボット(或いは複数のアーム・ハンドを持つ1つのロボット)を用いてもよい。「移動する(work群,point群)」の例では、複数のワークをそれぞれ別の場所に移動させる。そのため、第1のロボット(或いは第1のアーム)でwork群[0]に対応するワークをpoint群[0]に対応する目標位置に移動させているときに、並行して第2のロボットで別のワークを移動させることが可能である。ただしこの場合には、何らかの手法で複数のロボット間の調整を行う必要がある。例えば複数のロボットを管理する情報処理装置10等に、図17のようなデータを用意して、いずれか1つのロボットが着手したシーケンス命令(具体的には各シーケンス命令に対応するインデックス等)についてフラグを立てるようにする。そして各ロボットに対してフラグが立っていない処理のみを実行させるようにすればよい。
【0074】
以上の本実施形態では、ロボット制御システムは、ロボットの制御に関する情報を記憶する記憶部110と、命令の実行処理を行う処理部120と、処理部120の処理結果に基づいてロボット制御を行うロボット制御部(ロボット制御装置50)とを含む。記憶部110は、命令の情報と、命令の処理対象を表すパラメーターの情報を記憶する。そして実行処理を行う命令が複数の命令から構成されるシーケンス命令であり且つ当該シーケンス命令の処理対象を表すパラメーターの属性が集合パラメーターの属性である場合に、処理部120は、シーケンス命令を記述する複数の命令の構成を変更することなく、パラメーターを順次変えながらシーケンス命令を複数回実行することで、集合パラメーターを処理対象とする動作の実行処理を行う。
【0075】
ここで命令とは、上述してきたようにロボットに対する動作指示の記述に用いられるものであり、図4のデータベースの命令テーブルにおけるレコードとして記憶されるものである。シーケンス命令を構成する複数の命令とは、上述してきた条件命令のことである。シーケンス命令と条件命令とを結びつけるものがルールであり、1つの命令があるルールでは条件命令として用いられ、別のルールではシーケンス命令として用いられてもよい。
【0076】
これにより、シーケンス命令を用いてロボットの動作指示を行う場合に、当該シーケンス命令の処理対象が集合パラメーターの属性を有したとしても容易に処理を行うことが可能になる。よって例えば、複数個のワークを複数箇所の目標位置にそれぞれ移動させるようなシーケンス命令を実行する際にも、パラメーター(ここでは、ワークと位置)を変えながらシーケンス命令(例えば非集合パラメーターを処理対象とするシーケンス命令)を複数回実行するだけで済むため、既存の非集合パラメーターを対象とするシーケンス命令に対して大幅な変更を行う必要がない。
【0077】
また、パラメーターがワークを指定するワークパラメーターであり、ワークパラメーターが集合パラメーターの属性である場合には、処理部120は、ワークを変えながら前記シーケンス命令を複数回実行する。
【0078】
ここで、「ワークを変えながらシーケンス命令を複数回実行」とは、例えばワークパラメーターが第1〜第NのN個のワークを表すパラメーターである場合には、第1のワークを表す非集合パラメーターを対象にシーケンス命令を実行し、第2のワークを表す非集合パラメーターを対象にシーケンス命令を実行するといったように、N回シーケンス命令を実行することである。
【0079】
これにより、パラメーターが特にワークを表すワークパラメーターである場合に、対象となるワークを変えながらシーケンス命令を実行することで、集合パラメーターを対象とする処理を容易に実行することが可能になる。
【0080】
また、パラメーターが目標位置を指定する位置パラメーターであり、位置パラメーターが集合パラメーターの属性である場合には、処理部120は、目標位置を変えながら前記シーケンス命令を複数回実行する。
【0081】
ここで、「目標位置を変えながらシーケンス命令を複数回実行」とは、ワークパラメーターの例と同様に、例えば位置パラメーターが第1〜第MのM個の目標位置を表すパラメーターである場合には、第1の目標位置を表す非集合パラメーターを対象にシーケンス命令を実行し、第2の目標位置を表す非集合パラメーターを対象にシーケンス命令を実行するといったように、M回シーケンス命令を実行することである。
【0082】
これにより、パラメーターが特に目標位置を表す位置パラメーターである場合に、対象となる目標位置を変えながらシーケンス命令を実行することで、集合パラメーターを対象とする処理を容易に実行することが可能になる。
【0083】
また、シーケンス命令は、ワークを把持して目標位置に移動する命令であってもよい。
【0084】
これにより、具体的な動作指示として、ワークを把持し目標位置に移動させる動作を実行する際に、パラメーター(ワーク及び目標位置)が集合パラメーターであっても処理を容易に実行することが可能になる。つまり「移動する(work、point)」のパラメーターwork及びpointが集合パラメーターになってもよいということになる。ここで、移動させるとは、例えば図1に示したようなパレット40にワークを並べる(或いはパレット上のワークをピックアップする)動作の他、溝や穴に部品をはめる動作や、ねじ穴にねじをはめる際、当該ねじをねじ穴まで持って行く動作等、広範な作業に用いることができる。そのため、「移動する(work群、point群)」を実行可能にすることで、より汎用性の高い動作指示を実現することが可能になる。
【0085】
また、ワークが集合パラメーターの属性であり、目標位置が非集合パラメーターの属性である場合には、処理部120は、第1〜第N(Nは2以上の整数)のワークを1箇所の目標位置に移動させることで、シーケンス命令の実行処理を行ってもよい。
【0086】
これにより、図13に示したように、複数のワーク(図13の例ではwork群[0]〜work群[3]の4つ)を全て同じ目標位置に移動させることが可能になる。よって、複数箇所に分かれていたワークをまとめたり、ワークを積み上げたり、目標位置に穴等が設置されている場合には、当該穴等にワークをまとめて落としたりすることが可能になる。
【0087】
また、ワークが非集合パラメーターの属性であり、目標位置が集合パラメーターの属性である場合には、処理部120は、1個のワークを第1〜第M(Mは2以上の整数)の目標位置に移動させることで、シーケンス命令の実行処理を行ってもよい。
【0088】
これにより、図14に示したように、1つのワークを複数の目標位置(図14の例ではpoint群[0]〜point群[3]の4箇所)に順次移動させることが可能になる。よって、ワークが印鑑であり、書類上に複数の目標位置が設定されているような場合には、書類の各箇所に捺印する等の作業が可能になる。
【0089】
また、ワークが集合パラメーターの属性であり、目標位置が集合パラメーターの属性である場合には、処理部120は、第1〜第Nのワークのうち第i(iは1≦i≦Nを満たす整数)のワークを、第1〜第Mの目標位置のうち第j(jは1≦j≦Mを満たす整数)の目標位置に移動させることで、シーケンス命令の実行処理を行ってもよい。
【0090】
これにより、図12に示したように第1のワーク(図12の例ではwork群[0])を第1の目標位置(図12の例ではpoint群[0])に移動させ、第2のワーク(図12の例ではwork群[1])を第2の目標位置(図12の例ではpoint群[1])に移動させる等の処理が可能になる。よって、一般的な形で「移動する」というシーケンス命令を用いることが可能になり、汎用性の高い動作指示ができる。
【0091】
また、記憶部110は、パラメーターの情報として、当該パラメーターが集合パラメーターの属性であるか否かの情報を記憶する。そして処理部120は、命令の実行処理の際に、当該命令の実行対象となるパラメーターの情報を参照することで、パラメーターが集合パラメーターの属性であるか否かの判定を行ってもよい。
【0092】
これにより、図4に示したデータベースのパラメーターテーブル(具体的にはパラメーターテーブルの属性の列の値)に基づいて、パラメーターが集合パラメーターの属性であるか否かの判定を行うことが可能になる。テーブルの値の参照を行うだけでよいため、処理をシンプルにすることができる。
【0093】
また、記憶部110は、図2に示したように、命令情報と、命令の処理対象を表すパラメーターとを結びつける命令テーブル113を記憶するとともに、シーケンス命令と1又は複数の条件命令とを結びつけるシーケンス命令テーブル115を記憶してもよい。
【0094】
ここで、条件命令とは、命令テーブル113のレコードとして記憶される命令の中から選択されるものである。そして、条件命令とシーケンス命令とは、1又は複数の条件命令を記述された順序に実行することにより、当該条件命令に結びつけられたシーケンス命令が実行されることになるという関係を有する。
【0095】
これにより、図4に示したようなデータベースのうち、命令テーブル113及びシーケンス命令テーブル115を実現することが可能になる。本実施形態においては、シーケンス命令テーブル115により記述される、シーケンス命令と条件命令との結びつけをルールとも呼ぶ。シーケンス命令と条件命令との対応づけをおこなうことにより、動作指示を階層的且つ体系的に記述することが可能になる。
【0096】
また、記憶部110は命令テーブル113に第1〜第Q(Qは1以上の整数)の命令レコード(命令)を記憶するとともに、シーケンス命令テーブル115に第1〜第P(Pは2以上の整数)のシーケンス命令レコード(ルール)を記憶する。そして、記憶部110は、第s(sは1≦s≦Pの整数)のシーケンス命令レコードにおいては、第t(tは1≦t≦Qの整数)の命令レコードにより表される前記命令を前記条件命令として記憶するとともに、第u(uは1≦u≦P、s≠uの整数)のシーケンス命令レコードにおいては、前記第tの命令レコードにより表される前記命令を前記シーケンス命令として記憶してもよい。
【0097】
これにより、命令テーブル113のレコードとして記憶された命令は、あるルールにおいてはシーケンス命令として結びつけられ且つ他のルールにおいては条件命令として結びつけられてもよいことになる。よって、2階層にとどまらず、3階層以上の階層構造が可能になる。つまり、あるシーケンス命令に条件命令が結びつけられていたとき、当該条件命令にもシーケンス命令としての属性があり、その下にさらに条件命令が結びつけられるという構成も可能になるということである。図5の例で言えば、「移動する(work,point)」の条件命令として「つかむ(work)」が規定されているが、「つかむ(work)」自身もシーケンス命令であり、条件命令として、「ハンドを開く」「位置調整(work)」「ハンドを閉じる」が結びつけられている。
【0098】
また、本実施形態は上述のロボット制御システムと、ロボット制御システムにより制御されるロボットとを含むロボットシステムに関係する。
【0099】
これにより、上述してきたロボット制御装置がロボット30を制御することにより、連係して動作を行うロボットシステムを実現することが可能になる。
【0100】
また、以上の本実施形態は図18に示したように、ロボットの制御に関する情報を記憶する記憶部110と、命令の実行処理を行う処理部120と、処理部120の処理結果に基づいてロボット制御を行うロボット制御部170としてコンピューターを機能させるプログラムに関係する。記憶部110は、命令の情報と、命令の処理対象を表すパラメーターの情報を記憶する。そして実行処理を行う命令が複数の命令から構成されるシーケンス命令であり且つ当該シーケンス命令の処理対象を表すパラメーターの属性が集合パラメーターの属性である場合に、処理部120は、シーケンス命令を記述する複数の命令の構成を変更することなく、パラメーターを順次変えながらシーケンス命令を複数回実行することで、集合パラメーターを処理対象とする動作の実行処理を行う。
【0101】
これにより、ソフトウェア的にロボットを制御する処理を行うプログラムを実現することが可能になる。そして、上記プログラムは、情報記憶媒体180に記録される。ここで、情報記憶媒体180としては、DVDやCD等の光ディスク、光磁気ディスク、ハードディスク(HDD)、不揮発性メモリーやRAM等のメモリーなど、情報処理装置10等によって読み取り可能な種々の記録媒体を想定できる。例えば、図18に示したように、PC等の情報処理装置によって読み取り可能な種々の記録媒体にプログラムが記憶され、処理部120において実行されるケースが考えられる。
【0102】
なお、以上のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語と共に記載された用語は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。またロボット制御システム、ロボットシステム等の構成、動作も本実施形態で説明したものに限定されず、種々の変形実施が可能である。
【符号の説明】
【0103】
10 情報処理装置、20 撮像装置、30 ロボット、40 パレット、
50 ロボット制御装置、110 記憶部、111 ロボット制御DB、
112 ワークDB、113 命令テーブル、114 ロボットDB、
115 シーケンス命令テーブル、116 アームDB、
118 ハンドDB、120 処理部、122 実行部、124 編集処理部、
126 シミュレーション処理部、128 画像処理部、150 表示部、
160 外部I/F部、170 ロボット制御部、180 情報記憶媒体、
320 アーム、330 ハンド
【特許請求の範囲】
【請求項1】
ロボットの制御に関する情報を記憶する記憶部と、
命令の実行処理を行う処理部と、
前記処理部の処理結果に基づいて前記ロボットの制御を行うロボット制御部と、
を含み、
前記記憶部は、
前記処理部が実行する前記命令の情報と、前記命令の処理対象を表すパラメーターの情報を記憶し、
前記処理部は、
前記命令が複数の命令により構成されるシーケンス命令であり且つ前記シーケンス命令の処理対象を表す前記パラメーターの属性が集合パラメーターの属性である場合に、前記シーケンス命令を構成する前記複数の命令を変更することなく、前記パラメーターを順次変えながら前記シーケンス命令を複数回実行することを特徴とするロボット制御システム。
【請求項2】
請求項1において、
前記パラメーターが、ワークを指定するワークパラメーターであり、前記ワークパラメーターの属性が前記集合パラメーターの属性である場合には、
前記処理部は、
前記ワークを変えながら前記シーケンス命令を複数回実行することを特徴とするロボット制御システム。
【請求項3】
請求項1において、
前記パラメーターが、目標位置を指定する位置パラメーターであり、前記位置パラメーターの属性が前記集合パラメーターの属性である場合には、
前記処理部は、
前記目標位置を変えながら前記シーケンス命令を複数回実行することを特徴とするロボット制御システム。
【請求項4】
請求項1乃至3のいずれかにおいて、
前記シーケンス命令は、
ワークを把持して、目標位置に移動する命令であることを特徴とするロボット制御システム。
【請求項5】
請求項4において、
前記ワークを指定するワークパラメーターの属性が前記集合パラメーターの属性であり、前記目標位置を指定する位置パラメーターの属性が非集合パラメーターの属性である場合には、
前記処理部は、
第1〜第N(Nは2以上の整数)のワークを1箇所の前記目標位置に移動させることで前記シーケンス命令の実行処理を行うことを特徴とするロボット制御システム。
【請求項6】
請求項4において、
前記ワークを指定するワークパラメーターの属性が非集合パラメーターの属性であり、前記目標位置を指定する位置パラメーターの属性が前記集合パラメーターの属性である場合には、
前記処理部は、
1個の前記ワークを第1〜第M(Mは2以上の整数)の目標位置に移動させることで前記シーケンス命令の実行処理を行うことを特徴とするロボット制御システム。
【請求項7】
請求項4において、
前記ワークを指定するワークパラメーターの属性が前記集合パラメーターの属性であり、前記目標位置を指定する位置パラメーターの属性が前記集合パラメーターの属性である場合には、
前記処理部は、
第1〜第Nのワークのうち第i(iは1≦i≦Nを満たす整数)のワークを、第1〜第Mの目標位置のうち第j(jは1≦j≦Mを満たす整数)の目標位置に移動させることで前記シーケンス命令の実行処理を行うことを特徴とするロボット制御システム。
【請求項8】
請求項1乃至7のいずれかにおいて、
前記記憶部は、
前記パラメーターの情報として、前記パラメーターの属性が前記集合パラメーターの属性であるか否かの情報を記憶し、
前記処理部は、
前記命令の実行処理の際に、前記命令の実行対象となる前記パラメーターの情報を参照することで、前記パラメーターの属性が前記集合パラメーターの属性であるか否かの判定を行うことを特徴とするロボット制御システム。
【請求項9】
請求項1乃至8のいずれかにおいて、
前記記憶部は、
前記シーケンス命令の記述に用いられる前記命令に関する情報である命令情報と、前記命令の処理対象を表すパラメーターとを結びつける命令テーブルを記憶するとともに、
前記命令のうち条件命令とシーケンス命令とが、1又は複数の前記条件命令を実行することにより、前記シーケンス命令が実行されるという関係を有する場合に、1又は複数の前記条件命令と、前記シーケンス命令に関する情報とを結びつけるシーケンス命令テーブルを記憶することを特徴とするロボット制御システム。
【請求項10】
請求項9において、
前記記憶部は、
前記命令テーブルに第1〜第Q(Qは1以上の整数)の命令レコードを記憶するとともに、前記シーケンス命令テーブルに第1〜第P(Pは2以上の整数)のシーケンス命令レコードを記憶し、
前記記憶部は、
第s(sは1≦s≦Pの整数)のシーケンス命令レコードにおいては、第t(tは1≦t≦Qの整数)の命令レコードにより表される前記命令を前記条件命令として記憶するとともに、第u(uは1≦u≦P、s≠uの整数)のシーケンス命令レコードにおいては、前記第tの命令レコードにより表される前記命令を前記シーケンス命令として記憶することを特徴とするロボット制御システム。
【請求項11】
請求項1乃至10のいずれかに記載のロボット制御システムと、
前記ロボット制御システムにより制御されるロボットと、
を含むことを特徴とするロボットシステム。
【請求項12】
ロボットの制御に関する情報を記憶する記憶部と、
命令の実行処理を行う処理部と、
前記処理部の処理結果に基づいて前記ロボットの制御を行うロボット制御部として、
コンピューターを機能させ、
前記記憶部は、
前記処理部が実行する前記命令の情報と、前記命令の処理対象を表すパラメーターの情報を記憶し、
前記処理部は、
前記命令が複数の命令により構成されるシーケンス命令であり且つ前記シーケンス命令の処理対象を表す前記パラメーターの属性が集合パラメーターの属性である場合に、前記シーケンス命令を構成する前記複数の命令を変更することなく、前記パラメーターを順次変えながら前記シーケンス命令を複数回実行することを特徴とするプログラム。
【請求項1】
ロボットの制御に関する情報を記憶する記憶部と、
命令の実行処理を行う処理部と、
前記処理部の処理結果に基づいて前記ロボットの制御を行うロボット制御部と、
を含み、
前記記憶部は、
前記処理部が実行する前記命令の情報と、前記命令の処理対象を表すパラメーターの情報を記憶し、
前記処理部は、
前記命令が複数の命令により構成されるシーケンス命令であり且つ前記シーケンス命令の処理対象を表す前記パラメーターの属性が集合パラメーターの属性である場合に、前記シーケンス命令を構成する前記複数の命令を変更することなく、前記パラメーターを順次変えながら前記シーケンス命令を複数回実行することを特徴とするロボット制御システム。
【請求項2】
請求項1において、
前記パラメーターが、ワークを指定するワークパラメーターであり、前記ワークパラメーターの属性が前記集合パラメーターの属性である場合には、
前記処理部は、
前記ワークを変えながら前記シーケンス命令を複数回実行することを特徴とするロボット制御システム。
【請求項3】
請求項1において、
前記パラメーターが、目標位置を指定する位置パラメーターであり、前記位置パラメーターの属性が前記集合パラメーターの属性である場合には、
前記処理部は、
前記目標位置を変えながら前記シーケンス命令を複数回実行することを特徴とするロボット制御システム。
【請求項4】
請求項1乃至3のいずれかにおいて、
前記シーケンス命令は、
ワークを把持して、目標位置に移動する命令であることを特徴とするロボット制御システム。
【請求項5】
請求項4において、
前記ワークを指定するワークパラメーターの属性が前記集合パラメーターの属性であり、前記目標位置を指定する位置パラメーターの属性が非集合パラメーターの属性である場合には、
前記処理部は、
第1〜第N(Nは2以上の整数)のワークを1箇所の前記目標位置に移動させることで前記シーケンス命令の実行処理を行うことを特徴とするロボット制御システム。
【請求項6】
請求項4において、
前記ワークを指定するワークパラメーターの属性が非集合パラメーターの属性であり、前記目標位置を指定する位置パラメーターの属性が前記集合パラメーターの属性である場合には、
前記処理部は、
1個の前記ワークを第1〜第M(Mは2以上の整数)の目標位置に移動させることで前記シーケンス命令の実行処理を行うことを特徴とするロボット制御システム。
【請求項7】
請求項4において、
前記ワークを指定するワークパラメーターの属性が前記集合パラメーターの属性であり、前記目標位置を指定する位置パラメーターの属性が前記集合パラメーターの属性である場合には、
前記処理部は、
第1〜第Nのワークのうち第i(iは1≦i≦Nを満たす整数)のワークを、第1〜第Mの目標位置のうち第j(jは1≦j≦Mを満たす整数)の目標位置に移動させることで前記シーケンス命令の実行処理を行うことを特徴とするロボット制御システム。
【請求項8】
請求項1乃至7のいずれかにおいて、
前記記憶部は、
前記パラメーターの情報として、前記パラメーターの属性が前記集合パラメーターの属性であるか否かの情報を記憶し、
前記処理部は、
前記命令の実行処理の際に、前記命令の実行対象となる前記パラメーターの情報を参照することで、前記パラメーターの属性が前記集合パラメーターの属性であるか否かの判定を行うことを特徴とするロボット制御システム。
【請求項9】
請求項1乃至8のいずれかにおいて、
前記記憶部は、
前記シーケンス命令の記述に用いられる前記命令に関する情報である命令情報と、前記命令の処理対象を表すパラメーターとを結びつける命令テーブルを記憶するとともに、
前記命令のうち条件命令とシーケンス命令とが、1又は複数の前記条件命令を実行することにより、前記シーケンス命令が実行されるという関係を有する場合に、1又は複数の前記条件命令と、前記シーケンス命令に関する情報とを結びつけるシーケンス命令テーブルを記憶することを特徴とするロボット制御システム。
【請求項10】
請求項9において、
前記記憶部は、
前記命令テーブルに第1〜第Q(Qは1以上の整数)の命令レコードを記憶するとともに、前記シーケンス命令テーブルに第1〜第P(Pは2以上の整数)のシーケンス命令レコードを記憶し、
前記記憶部は、
第s(sは1≦s≦Pの整数)のシーケンス命令レコードにおいては、第t(tは1≦t≦Qの整数)の命令レコードにより表される前記命令を前記条件命令として記憶するとともに、第u(uは1≦u≦P、s≠uの整数)のシーケンス命令レコードにおいては、前記第tの命令レコードにより表される前記命令を前記シーケンス命令として記憶することを特徴とするロボット制御システム。
【請求項11】
請求項1乃至10のいずれかに記載のロボット制御システムと、
前記ロボット制御システムにより制御されるロボットと、
を含むことを特徴とするロボットシステム。
【請求項12】
ロボットの制御に関する情報を記憶する記憶部と、
命令の実行処理を行う処理部と、
前記処理部の処理結果に基づいて前記ロボットの制御を行うロボット制御部として、
コンピューターを機能させ、
前記記憶部は、
前記処理部が実行する前記命令の情報と、前記命令の処理対象を表すパラメーターの情報を記憶し、
前記処理部は、
前記命令が複数の命令により構成されるシーケンス命令であり且つ前記シーケンス命令の処理対象を表す前記パラメーターの属性が集合パラメーターの属性である場合に、前記シーケンス命令を構成する前記複数の命令を変更することなく、前記パラメーターを順次変えながら前記シーケンス命令を複数回実行することを特徴とするプログラム。
【図1】
【図2】
【図4】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図3】
【図5】
【図2】
【図4】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図3】
【図5】
【公開番号】特開2012−240145(P2012−240145A)
【公開日】平成24年12月10日(2012.12.10)
【国際特許分類】
【出願番号】特願2011−111091(P2011−111091)
【出願日】平成23年5月18日(2011.5.18)
【出願人】(000002369)セイコーエプソン株式会社 (51,324)
【Fターム(参考)】
【公開日】平成24年12月10日(2012.12.10)
【国際特許分類】
【出願日】平成23年5月18日(2011.5.18)
【出願人】(000002369)セイコーエプソン株式会社 (51,324)
【Fターム(参考)】
[ Back to top ]