ロボット制御システム、ロボットシステム及びプログラム
【課題】 エラー処理動作の記述に用いられる命令として、通常動作の記述に用いられる命令と同じ命令体系を用いることで、容易且つ柔軟にエラー処理を記述可能なロボット制御システム、ロボットシステム及びプログラム等を提供すること。
【解決手段】 ロボット制御システムは1又は複数の命令により記述されるシーケンス命令を記憶する記憶部110と、シーケンス命令の実行処理を行う実行部122を有する処理部120と、処理部120の処理結果に基づいてロボットの制御を行うロボット制御部(ロボット制御装置50)を含み、記憶部110は通常動作シーケンス命令と、通常動作シーケンス命令と同じ命令体系の複数のエラー処理動作シーケンス命令を記憶し、実行部122は通常動作時に通常動作シーケンス命令を実行し、エラー発生時にエラー状況に応じたエラー処理動作シーケンス命令を実行する。
【解決手段】 ロボット制御システムは1又は複数の命令により記述されるシーケンス命令を記憶する記憶部110と、シーケンス命令の実行処理を行う実行部122を有する処理部120と、処理部120の処理結果に基づいてロボットの制御を行うロボット制御部(ロボット制御装置50)を含み、記憶部110は通常動作シーケンス命令と、通常動作シーケンス命令と同じ命令体系の複数のエラー処理動作シーケンス命令を記憶し、実行部122は通常動作時に通常動作シーケンス命令を実行し、エラー発生時にエラー状況に応じたエラー処理動作シーケンス命令を実行する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ロボット制御システム、ロボットシステム及びプログラム等に関する。
【背景技術】
【0002】
近年、様々な分野で産業用ロボットが広く用いられている。これらの産業用ロボットに対してユーザーの意図通りの動作を行わせるために、ロボットに実行させる作業内容を教示することが必要となる。
【0003】
作業内容を教示されたロボットは、その作業内容に従って作業を行うが、場合によっては作業途中でエラーが発生することがある。アーム及びハンドを有するロボットを用いて、ワークを把持し移動させる作業を例として考えたときには、把持したワークを途中で落としてしまったり、アームが障害物に衝突して所望の位置に移動できなかったりすることで、エラーが発生する。
【0004】
このようにエラーが発生した場合には、エラー処理を実行することで、ロボットやワークを適切な状態に復帰させることが必要になる。エラー処理としては例えば、ロボットを停止させる・ロボットを待機位置に戻す・処理を再実行する・処理を省略する・コマンド入力する・作業記述しておく等が考えられる。ここで、コマンド入力するとは、特許文献1に記載されているように、ロボット自身が作業動作を監視しておき、動作中にエラーが検出された場合には、エラー検出結果に基づいて自律的にエラー回避処理を行うという物である。また、作業記述しておくとは、特許文献2に記載されているように、あらかじめエラー処理を記述しておき、エラーが発生した際には記述された当該エラー処理を実行するというものである。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2004−148493号公報
【特許文献2】特開2010−149255号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献1の手法では、エラーを検出するために動作を監視しておく必要がある。また、エラー検出結果に基づいてエラー回避処理を入力する必要が生じる。そのため、監視及び入力のための負荷が大きいという問題がある。
【0007】
また、特許文献2の手法では、あらかじめ作業記述をしておくため、特許文献1のような負荷の問題は生じない。しかし、作業を記述する手法が難解であり、また、記述した処理により適切にエラーに対処できるかが確認できないという問題がある。さらに、エラー時に行われる代替動作は1種類しか用意されないため、様々なエラーに対応することができない。
【0008】
本発明の目的は、エラー処理動作の記述に用いられる命令として、通常動作の記述に用いられる命令と同じ命令体系を用いることで、容易且つ柔軟にエラー処理を記述可能なロボット制御システム、ロボットシステム及びプログラム等を提供することにある。
【課題を解決するための手段】
【0009】
本発明の一態様は、1又は複数の命令により記述されるシーケンス命令を記憶する記憶部と、前記記憶部に記憶された前記シーケンス命令の実行処理を行う実行部を有する処理部と、前記処理部の処理結果に基づいてロボットの制御を行うロボット制御部と、を含み、前記記憶部は、前記シーケンス命令として、複数の通常動作シーケンス命令と、前記通常動作シーケンス命令の記述に用いられる前記命令と同じ命令体系により記述される複数のエラー処理動作シーケンス命令とを記憶し、前記実行部は、通常動作時には前記通常動作シーケンス命令の実行処理を行い、エラー発生時には複数の前記エラー処理動作シーケンス命令の中から、エラー状況に応じて選択されたエラー処理動作シーケンス命令の実行処理を行うロボット制御システムに関係する。
【0010】
本発明の一態様では、1又は複数の命令によりシーケンス命令を記述するものとし、シーケンス命令として同じ命令体系で記述された通常動作シーケンス命令と、エラー処理動作シーケンス命令を記憶する。そして、通常動作時には通常動作シーケンス命令を実行し、エラー発生時にはエラー処理動作シーケンス命令を実行する。これにより、エラー処理動作も通常動作と同様に記述できるため、処理を共通化でき、容易且つ柔軟にエラー処理を行うことが可能になる。
【0011】
また、本発明の一態様では、前記記憶部は、前記シーケンス命令の記述に用いられる前記命令に関する情報である命令情報と、前記命令の処理対象を表すパラメーターとを結びつける命令テーブルを記憶するとともに、前記命令のうち条件命令とシーケンス命令とが、1又は複数の前記条件命令を実行することにより、前記シーケンス命令が実行されるという関係を有する場合に、1又は複数の前記条件命令と、前記シーケンス命令に関する情報とを結びつけるシーケンス命令テーブルを記憶してもよい。
【0012】
これにより、データベースのテーブルとして命令を記憶した上で、同様にデータベースのテーブルとしてシーケンス命令と条件命令の結びつけを記憶することが可能になる。
【0013】
また、本発明の一態様では、前記処理部は、前記通常動作時は、前記シーケンス命令テーブル及び前記命令テーブルを参照して、前記通常動作シーケンス命令を構成する1又は複数の条件命令を実行し、前記エラー発生時においても、前記シーケンス命令テーブル及び前記命令テーブルを参照して、前記エラー処理動作シーケンス命令を構成する1又は複数の条件命令を実行してもよい。
【0014】
これにより、通常動作シーケンス命令を記述する際にも、エラー処理動作シーケンス命令を記述する際にも、条件命令の候補として共通の命令群を用いることができ、2つのシーケンス命令の記述に用いる命令の命令体系を同じにすることが可能になる。
【0015】
また、本発明の一態様では、前記記憶部は、前記命令テーブルに第1〜第M(Mは1以上の整数)の命令レコードを記憶するとともに、前記シーケンス命令テーブルに第1〜第N(Nは2以上の整数)のシーケンス命令レコードを記憶し、前記記憶部は、第i(iは1≦i≦Nの整数)のシーケンス命令レコードにおいては、第k(kは1≦k≦Mの整数)の命令レコードにより表される前記命令を前記条件命令として記憶するとともに、第j(jは1≦j≦N、i≠jの整数)のシーケンス命令レコードにおいては、前記第kの命令レコードにより表される前記命令を前記シーケンス命令として記憶してもよい。
【0016】
これにより、1つの命令をシーケンス命令として利用することも、条件命令として利用することもでき、命令構造の階層化が可能になる。
【0017】
また、本発明の一態様では、前記記憶部は、前記通常動作シーケンス命令として、第1のアプローチ命令、把持命令及びムーブ命令により構成される第1の通常動作シーケンス命令を記憶するとともに、前記エラー処理動作シーケンス命令として、前記第1のアプローチ命令とは異なる位置にアプローチする第2のアプローチ命令、前記第1のアプローチ命令、前記把持命令及び前記ムーブ命令により構成される第1のエラー処理動作シーケンス命令を記憶してもよい。
【0018】
これにより、具体例として、ワークへのアプローチ・把持・ムーブの各命令からなる通常動作シーケンス命令の処理中に発生したエラーに対するエラー処理として、別の地点へのアプローチ・ワークへのアプローチ・把持・ムーブの各命令からなるエラー処理動作シーケンス命令を実行することが可能になり、同じエラーの繰り返しを抑止することができる。
【0019】
また、本発明の一態様では、前記ロボット制御部は、前記エラー状況に応じたエラーコードを前記処理部に出力し、前記実行部は、前記エラーコードに応じた前記エラー処理動作シーケンス命令の実行処理を行ってもよい。
【0020】
これにより、エラーコードに応じたエラー処理が可能になる。
【0021】
また、本発明の一態様では、前記処理部は、前記通常動作シーケンス命令及び前記エラー処理動作シーケンス命令の編集処理を行う編集処理部を含んでもよい。
【0022】
これにより、シーケンス命令を編集することが可能になる。
【0023】
また、本発明の一態様では、前記編集処理部は、前回に編集処理が行われた前記通常動作シーケンス命令又は前記エラー処理動作シーケンス命令において用いられた前記命令を、今回の通常動作シーケンス命令又は他のエラー処理動作シーケンス命令の編集処理において用いてもよい。
【0024】
これにより、以前の編集処理に用いた命令を、それ以降の編集処理において流用することが可能になり、シーケンス命令の記述を簡単化することができる。
【0025】
また、本発明の一態様では、前記編集処理部は、前回に編集処理が行われた前記通常動作シーケンス命令において用いられた前記命令を、今回のエラー処理動作シーケンス命令の編集処理において用いてもよい。
【0026】
これにより、通常動作シーケンス命令かエラー処理動作シーケンス命令かによらず、命令の流用が可能になる。
【0027】
また、本発明の一態様では、前記編集処理部は、前回に編集処理が行われた前記エラー処理動作シーケンス命令において用いられた前記命令を、今回の通常動作シーケンス命令の編集処理において用いてもよい。
【0028】
これにより、通常動作シーケンス命令かエラー処理動作シーケンス命令かによらず、命令の流用が可能になる。
【0029】
また、本発明の一態様では、前記処理部は、前記通常動作シーケンス命令及び前記エラー処理動作シーケンス命令が実行される際の前記ロボット制御部の動作シミュレーション処理を行うシミュレーション処理部を含んでもよい。
【0030】
これにより、ロボットの実機を用いることなくシーケンス命令の検証を行うことが可能になる。
【0031】
また、本発明の一態様では、前記シミュレーション処理部は、エラー処理の確認用の擬似エラーに対応するエラーコードを発生させてもよい。
【0032】
これにより、シミュレーション処理においてもエラーコードを発生させることで、通常動作シーケンス命令からエラー処理動作シーケンス命令へ移行させ、エラー処理が適切か否かの検証を行うことが可能になる。
【0033】
また、本発明の他の態様は、請求項1乃至12のいずれかに記載のロボット制御システムと、前記ロボット制御システムにより制御されるロボットと、を含むロボットシステムに関係する。
【0034】
また、本発明の他の態様は、1又は複数の命令により記述されるシーケンス命令を記憶する記憶部と、前記記憶部に記憶された前記シーケンス命令の実行処理を行う実行部を有する処理部と、前記処理部の処理結果に基づいてロボットの制御を行うロボット制御部として、コンピューターを機能させ、前記記憶部は、前記シーケンス命令として、複数の通常動作シーケンス命令と、前記通常動作シーケンス命令の記述に用いられる前記命令と同じ命令体系により記述される複数のエラー処理動作シーケンス命令とを記憶し、前記実行部は、通常動作時には前記通常動作シーケンス命令の実行処理を行い、エラー発生時には複数の前記エラー処理動作シーケンス命令の中から、エラー状況に応じて選択されたエラー処理動作シーケンス命令の実行処理を行うプログラムに関係する。
【図面の簡単な説明】
【0035】
【図1】本実施形態のシステム構成例。
【図2】本実施形態の詳細なシステム構成例。
【図3】図3(A)、図3(B)は編集処理に用いられる画面の例。
【図4】記憶部に記憶されるデータベースのデータ構造例。
【図5】本実施形態で用いられる命令群の階層的な構造を説明する図。
【図6】図6(A)〜図6(F)はワークの移動中のエラーに対するエラー処理の具体例を説明する図。
【図7】本実施形態の全体の処理を説明するフローチャート。
【図8】動作指示の実行処理を説明するためのフローチャート。
【図9】ルール(シーケンス命令)の実行処理を説明するためのフローチャート。
【図10】シミュレーション処理を説明するためのフローチャート。
【図11】本実施形態の他のシステム構成例。
【発明を実施するための形態】
【0036】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【0037】
1.本実施形態の手法
ロボットが教示された作業内容に従って作業を行っているときにエラーが発生した場合、エラー処理としては例えば、ロボットを停止させる・ロボットを待機位置に戻す・処理を再実行する・処理を省略する・コマンド入力する・作業記述しておく等が考えられる。
【0038】
しかし、ロボットを停止させたり、ロボットを待機位置に戻したりするのでは、所望の動作が完了しないという問題がある。また、処理を再実行するのでは、エラーに対する対策が講じられないため、再度同様のエラーが発生する可能性が高い。処理を省略する場合には、動作工程が不足することになり、処理が適切に完了しない可能性がある。
【0039】
上述した特許文献1に記載されているように、コマンド入力をすれば作業が適切に完了する可能性が出てくるが、動作の監視と、エラー発生時の処理の入力に工数がかかることになる。また、上述した特許文献2に記載されているように、作業記述をしておくことで、コマンド入力において発生する問題は回避できるが、特許文献2の手法ではエラー処理の記述が難しい上、記述した処理によりエラーに適切に対処できるかが確認できない。また、記述される代替処理は1処理のみであり、様々なエラーに対応することが困難である。
【0040】
そこで、本出願人は以下の手法を提案する。まずエラー発生時の処理は、エラー処理動作として記述しておく。その記述の際に、エラー処理動作と通常動作とを、同じ記述手法により記述可能にしておくことで、容易且つ柔軟なエラー処理の記述を可能にする。具体的には、各処理(通常動作の処理及びエラー処理)はルールベースで記述される。ここでルールとは、1又は複数の条件命令と、当該条件命令が全て実行されたときに実行されたとみなされるシーケンス命令とを結びつけるものである。図5の例においては、「移動する」命令がシーケンス命令であり、「初期化」「近づく」「つかむ」「動かす」「はなす」の各命令が条件命令となる。
【0041】
図4を用いて後述するように、データベースには命令テーブルが用意され、命令テーブルのレコードとして各命令が記憶されている。通常動作及びエラー処理動作はデータベースに記憶された複数の命令を、共通の命令群として利用することでルールの形で記述されることになる。つまり、「初期化」「近づく」等の各命令は、通常動作を表すルールで用いられることもあれば、エラー処理動作を表すルールで用いられることもある。このように命令群を共通化し、通常動作とエラー処理動作の記述で併用することにより、エラー処理動作の記述を容易にする。また、命令単位での並べ替え等が可能になり、柔軟な記述をすることができる。
【0042】
また、通常動作の実行中にエラーが発生した場合には、発生したエラーに応じたエラーコードを生成し、生成したエラーコードに応じてエラー処理動作を実行する。つまり、エラーコード及びエラー処理動作を複数用意しておけば、エラーに応じたエラー処理が可能になる。また、記述したエラー処理動作に関して、シミュレーションを行うことで、適切な対処が可能であるかの判断を行うこともできる。
【0043】
以下、システム構成例に説明した後、図4や図5等を用いて本実施形態において用いられる命令やルール等の考え方について説明する。その後、具体例を用いてエラー処理の詳細について説明した後、フローチャートに基づいて処理の詳細について説明する。
【0044】
2.システム構成例
本実施形態に係るロボット制御システムを含むロボットシステムの構成例を図1を用いて説明する。ロボットシステムは、情報処理装置10と、撮像装置20と、ロボット30と、図1には不図示のロボット制御装置50と、を含む。ただし、ロボットシステムは図1の構成に限定されず、これらの一部の構成要素を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。ロボット30は、アーム320及びハンド330を有し、情報処理装置10からの動作指示に従い処理を行う。例えばパレット40に載せられたワークに対して処理を行う。撮像装置20は、例えばワークを撮影可能な位置(パレットの直上でもよいし、ロボット30のハンド330に取り付けられてもよい)に設けられ、主にワークの撮影を行う。そして、撮像画像の情報からワークの位置や姿勢等に関する情報を検出する。検出した情報は例えば情報処理装置10等に送られてもよいし、直接ロボット30に送られてもよい。また、ワークの位置や姿勢等に関する情報を検出できればよいため、撮像装置20による撮像画像の取得以外の手法(例えばレーザー等を用いた3次元スキャン)を用いてもよい。
【0045】
具体的な構成について図2を用いて説明する。情報処理装置10は、記憶部110と、処理部120と、表示部150と、外部I/F部160を含む。
【0046】
記憶部110は、データベースを記憶したり、処理部120等のワーク領域となるもので、その機能はRAM等のメモリーやHDD(ハードディスクドライブ)などにより実現できる。記憶部110は、ロボット制御データベース111(以下データベースを適宜DBと表記する)を含む。ロボット制御データベース111は具体的には図4を用いて後述するデータベースであって、例えば命令テーブル113と、シーケンス命令テーブル115とを含む。命令テーブル113は命令に関するデータを記憶し、シーケンス命令テーブル115は、条件命令とシーケンス命令とを結びつけるルールを記憶する。命令、条件命令、シーケンス命令、ルール等についての詳細は後述する。
【0047】
また、記憶部110は、ワークDB112と、ロボットDB114とを含み、ロボットが図1に示すようにアーム320とハンド330を有するロボットである場合には、ロボットDB114は、アームDB116と、ハンドDB118を含む。当該ロボットが複数のアームを備える場合は、アームDB116とハンドDB118は複数個であってもよい。ワークDB112は、ワークの大きさ、形状、姿勢等の情報を記憶する。ロボットDB114はロボットに関するデータを記憶する。具体的にはアームDB116でアームの形状、可動範囲等を記憶し、ハンドDB118でハンドの形状、大きさ等の情報を記憶する。ただし、記憶部110は図2の構成に限定されず、これらの一部の構成要素を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
【0048】
処理部120は、記憶部110からのデータや、外部I/F部160において受信した撮像装置或いはロボットからの情報等に基づいて種々の処理を行う。この処理部120の機能は、各種プロセッサ(CPU等)、ASIC(ゲートアレイ等)などのハードウェアや、プログラムなどにより実現できる。
【0049】
処理部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に内蔵されてもよい。
【0050】
表示部150は、各種の表示画面を表示するためのものであり、例えば液晶ディスプレイや有機ELディスプレイなどにより実現できる。
【0051】
外部I/F部160は、情報処理装置10に対するユーザーからの入力等を行ったり、撮像装置20やロボット30からの情報を受け付けるためのインターフェースである。ユーザーからの入力等に関しては、スイッチやボタン、キーボード或いはマウス等から構成されてもよい。
【0052】
撮像装置20は、上述したように、例えばワークを撮影可能な位置に設けられ、主にワークの撮影を行う。本実施形態においては撮像画像情報をそのまま情報処理装置10に送信するものとするが、これに限定されるものではない。例えば、情報処理装置10の処理部120の一部(例えば画像処理部128等)を撮像装置20に持たせてもよい。その場合、撮像画像に対して画像処理が施された後の情報が出力されることになる。
【0053】
また、ロボット30は、アーム320及びハンド330を含む。
【0054】
ロボット制御装置50は、情報処理装置10からの情報を受け付けロボットの各部(アーム320及びハンド330等)の制御を行う。具体的にはロボット30に対して制御信号を送信することで制御を行うことになる。また、エラーが発生した際にはエラーコードを処理部120に対して出力する。
【0055】
3.命令及びシーケンス命令
3.1 命令及びシーケンス命令の定義
次に、本実施形態で用いる命令・条件命令・シーケンス命令等について説明する。まず、本実施形態のデータベースの構造例を図4を用いて説明する。データベース(図2におけるロボット制御DB111)は、命令テーブル、シーケンス命令テーブル、シーケンス命令オフセットテーブル、パラメーターテーブル、パラメーターオフセットテーブル、文字列オフセットテーブル等を含む。
【0056】
命令テーブルは、命令IDと命令名、パラメーター数及び各パラメーターのIDを関連づける。シーケンス命令テーブルは、シーケンス命令IDと条件数及び各条件命令IDを関連づける。パラメーターテーブルは、パラメーターID、サイズ、タイプ、パラメーター名、及びパラメーターの値を関連づける。シーケンス命令オフセットテーブル、パラメーターオフセットテーブル、文字列オフセットテーブルは、データベースにおける実際の値が記憶されているアドレスを求めるためのオフセットを記憶する。
【0057】
本実施形態における命令とは、命令テーブルのレコードとして記憶されるものであり、ロボットに対する動作指示を表す。各命令は、任意の個数のパラメーターを利用する。例えば「移動する(work,point)」という命令であれば、work及びpointがパラメーターとなる。この場合、workで表されるワークを、pointで表される位置へ移動する命令となる。「初期化」のようにパラメーターをとらない命令があってもよい。その他、「近づく(work)」、「つかむ(work)」、「動かす(point)」、「はなす(work)」等の命令がある。
【0058】
本実施形態においては、1又は複数の条件命令とシーケンス命令とを結びつけられる。この結びつけのことをルールとも表記する。ルールによりシーケンス命令と、1又は複数の条件命令とが結びつけられ、当該1又は複数の条件命令が全て実行された場合に、シーケンス命令が実行されたとみなされるという関係が成り立つ。シーケンス命令が1又は複数の条件命令により記述されるといってもよい。一例としては、あるルールにおいては、シーケンス命令「移動する(work,point)」と条件命令「初期化」「近づく(work)」「つかむ(work)」「動かす(point)」「はなす(work)」が結びつけられることになる。そして、「初期化」「近づく(work)」「つかむ(work)」「動かす(point)」「はなす(work)」がこの順に実行されたとき、「移動する(work,point)」が実行されたことになる。これらのルールに用いられるシーケンス命令及び条件命令はともに上述した命令テーブルのレコードとして記憶される命令群に含まれる命令が用いられる。
【0059】
ここで、1つの命令が、あるルールにおいてはシーケンス命令として用いられ且つ他のルールにおいては条件命令として用いられてもよい。例えば、「移動する(work,point)」の条件命令として用いられた「つかむ(work)」が、他のルールにおいてはシーケンス命令として記述されてもよい。例えば、「つかむ(work)」をシーケンス命令として、条件命令「ハンドを開く」「位置調整(work)」「ハンドを閉じる」が結びつけられることが考えられる。また、別の例としては、「移動する(work,point)」が条件命令として用いられてもよい。「2回移動する(work,point1,point2)」という1つのワークを順に2箇所に移動するシーケンス命令があったとすれば、当該シーケンス命令に対しては、条件命令として「移動する(work,point1)」「移動する(work,point2)」が結びつけられることになる。つまり、命令テーブルのレコードとして記憶される命令は、シーケンス命令として用いられてもよいし、条件命令として用いられてもよい。命令を任意の構成により階層化することが可能になり、柔軟に動作指示を記述することができる。
【0060】
本実施形態においては、通常動作及びエラー処理動作は、上述のシーケンス命令単位(ルール単位)で記述する。例えば1つのエラー処理動作は、1つのシーケンス命令に対応することになり、当該シーケンス命令をエラー処理動作シーケンス命令と呼ぶ。同様に、1つの通常動作は1つのシーケンス命令に対応することになり、当該シーケンス命令を通常動作シーケンス命令と呼ぶ。ただし、上述の手法に限定されるものではなく、例えば複数のシーケンス命令からなるシナリオという概念を導入し、通常動作及びエラー処理動作を1つのシナリオにより記述してもよい。この場合のシナリオも、当該シナリオを構成する複数のシーケンス命令を、それぞれ条件命令とみなし、各条件命令を実行したときに実行されたと見なされる動作を新たにシーケンス命令として規定することにより、1つのシーケンス命令で記述することが可能である。このようにすれば、結局通常動作及びエラー処理動作を1つのシーケンス命令で記述することができる。よって、通常動作及びエラー処理動作をシーケンス命令で記述するか、シナリオで記述するかは設計事項であり、本実施形態においてはどちらを用いてもよい。
【0061】
3.2 編集処理部によるシーケンス命令の編集
処理部120の編集処理部124における、ルールの編集処理について説明する。上述したように、ルールとはシーケンス命令と条件命令とを結びつけるものであるから、ルールの記述とは、当該ルールにおけるシーケンス命令と、条件命令とを決定する処理に相当する。
【0062】
情報処理装置10の表示部150に表示される画面の例を図3(A)に示す。図3(A)の例では、一番上の行にシーケンス命令を記述し、その下に1又は複数の条件命令を記述する形式を取る。各命令の記述は、キーボード等により命令名に当たる文字列を直接入力してもよいし、図3(B)に示したようにドロップダウンメニューを用いて選択してもよい。
【0063】
命令単位でルールを記述することにより、システム利用者は低レベルでのロボット制御(例えばマニピュレーターをどれだけ作動させるか、ジョイント角を何度にするか等の制御)を考慮する必要がなくなる。
【0064】
また、編集処理部124における命令の記述においては、記憶部110に記憶されたデータベースの命令テーブル113のレコードとして記憶されている命令以外は記述できないという制約を設けてもよい。これは処理の前提として、実行可能な命令は全て命令テーブル113のレコードとして記憶させておくということが想定されるためである。データベースに記憶されていない命令を実行しようとしても、何を実行してよいかわからず、処理は不可能であるから、上述のような制約はこのような例外的な処理を引き起こす可能性を抑止する効果が期待できる。ドロップダウンメニューを用いるのであれば、表示される命令の候補を、データベースに記憶してあるものに限定すればよいし、文字列を直接入力するのであれば、入力された文字列とデータベースの記録とを照合し、記憶していない命令名が入力された際には警告を表示するようにすればよい。
【0065】
4.エラー処理
4.1 エラーコードによるエラー処理
上述したように、通常動作はシーケンス命令により記述され、当該シーケンス命令はルールにより1又は複数の条件命令に結びつけられている。よって、通常動作が実行される場合には、1又は複数の条件命令が順に実行されることになる。
【0066】
この条件命令の実行時にエラーが発生した場合には、通常動作の処理を中断して、エラー処理に移行することになる。エラー処理動作も上述のようにシーケンス命令で記述され、ルールにより条件命令と結びつけられている。このとき、エラー処理動作シーケンス命令は、複数記述しておくことが可能であるから、複数のエラー処理動作シーケンス命令のうちどのシーケンス命令を実行すればよいか決定する必要がある。
【0067】
そこで本実施形態では、エラー発生時にエラーコードを生成する。具体的には、ロボット制御装置50においてエラーの内容に従ったエラーコードを生成し、外部I/F部160を介して、処理部120に送信して、処理部120の実行部122で実行される処理をエラーコードに応じたエラー処理動作に切り替えることになる。このようにすることで、複数用意されたエラー処理動作シーケンス命令のうち、エラーの状況に合わせた適切なものを選択、実行することが可能になる。
【0068】
例えば、エラーコードとして0001〜0005の5つのエラーコードを準備しておく。そして、0001に対応するエラー処理動作シーケンス命令としてError0001、0002に対応するエラー処理動作シーケンス命令としてError0002といったように、各エラーコードに対して、エラー処理動作シーケンス命令を準備すればよい。また、1つのエラーコードに対応するエラー処理動作シーケンス命令は1つとは限らない。例えばエラーコード0005が1回目に発生したときにはError0005を実行し、エラーコード0005が2回目に発生したときにはError0005とは別のError0006を実行するといったように、1つのエラーコードに複数のエラー処理動作シーケンス命令を割り当ててもよい。
【0069】
4.2 シミュレーション処理
また、本実施形態においては、上述の手法により記述したシーケンス命令のうち、エラー処理動作シーケンス命令についてシミュレーション処理をおこなうことが可能である。具体的には、処理部120のシミュレーション処理部126において、ロボット制御装置50の制御処理のシミュレーションを行うことになる。
【0070】
シミュレーション処理部126では、通常動作シーケンス命令の実行シミュレーションを行い、実行中にランダムに擬似エラーを発生させる。擬似エラーの発生は任意のタイミングで任意のエラーコードを生成することにより行う。
【0071】
エラーコードを受け取ったら、当該エラーコードに応じたエラー処理動作シーケンス命令を実行する。そして、エラーが発生した状況と、シミュレーションしていた通常動作シーケンス命令が適切に完了した場合に想定される状況及びエラー処理動作シーケンス命令をシミュレーション処理した結果の状況とを考慮して、シミュレーションを行ったエラー処理動作シーケンス命令が適切に記述されているかを判定する。この判定は自律的に行う必要はなく、ユーザーにより判定されればよい。
【0072】
例えば、エラー処理動作シーケンス命令を実行(シミュレーション)した結果、通常動作シーケンス命令の完了時に想定される状況と同じ状況にすることができたなら、当該エラー処理動作シーケンス命令は適切に記述されたものと判断できる。また、ロボットを停止させる、或いは、ロボットを待機位置に戻す等のエラー処理が行われることもある。この場合には、エラー処理動作シーケンス命令の実行目的は、通常動作シーケンス命令の実行と同等の効果を求めるものではなく、安全な停止等を目的としていると考えられる。よって、これらのエラー処理動作シーケンス命令が実行された場合には、エラー発生時の状況がロボットの停止等が必要な状況であったか、エラー処理動作シーケンス命令の実行により、ロボット・ワーク・その他機器を傷つけるようなことなく安全に停止したか等を考慮して、適切なエラー処理動作シーケンス命令であるかの判定を行う。
【0073】
4.3 具体例
次に具体例を用いてエラー処理について説明する。ここでは、通常動作シーケンス命令として「移動する(work,point)」が実行されているときに、ワークの脱落というエラーが発生した場合について考える。
【0074】
この場合、エラーコード0005が返され、エラーコードに対応したエラー処理動作シーケンス命令Error0005が実行されることになる。ここでは、「移動する(work,point)」が完了した場合と同様の状況にすることが可能なエラー処理動作を実行するものとする。そのときに考えられる例としては、図5のError0005に示したように、「近づく(point1)」を初めに実行し、「初期化」の結果とは別の位置であるpoint1にロボットを移動させてから、「近づく(work)」「つかむ(work)」「動かす(point)」「はなす(work)」を実行するシーケンス命令が考えられる。
【0075】
つまりロボットの初期位置(待機位置)であるワークの上方から図6(A)のように近づき、図6(B)のように上方からワークをつかみ、図6(C)のように移動させている途中に、図6(D)のようにワークを脱落するというエラーが発生したとする。この場合に、再度通常動作シーケンス命令(初期化等の5つの条件命令)をそのまま実行したのでは、ワークの落下地点にもよるが、同様の角度からワークを把持し移動することが想定されるため、同じ理由により再度エラーが発生(ワークが脱落)する可能性が高い。よってここでは、まず、「近づく(point1)」を行うことで、ロボットをpoint1(ここでは図6(E)に示したように下に)移動させ、その後、「近づく(work)」を実行し、図6(F)に示したように、上からではなく横からワークをつかむ。このようにすることで、ワークをつかむ角度が変わるため、少なくとも前回と同様の理由によるエラー発生を抑止することが可能になる。
【0076】
上述したように、エラー処理動作シーケンス命令は複数記述しておくことが可能である。ここでは図5に示したように、Error0001として「停止」、Error0002として「初期化」「停止」、Error0003として「移動する(work,point)」、Error0004として「初期化」「移動する(work,point)」が記述されている。例えば、ロボットが何かに衝突し、それ以上の移動等はロボット等の損傷を激しくしかねないというケースではError0001を呼んで即座に停止させることが考えられる。また、停止が望ましい場合でも初期位置に戻すことが可能な場合には、Error0002を呼べばよい。また、とりあえずもう一回試行することも重要なケースがあるため、その場合にはError0003を呼ぶ。Error0004は「移動する(work,point)」の条件命令の最初に「初期化」があるため、この場合はError3と大差ないが、その他のシーケンス命令においては、そのまま再実行したのではロボットの位置が初期位置とは異なることを理由としてうまくいかないケースが考えられる。そのような場合には、ロボットを初期位置に戻してから再実行を行うError0004を呼べばよい。
【0077】
5.処理の詳細
次に本実施形態のロボット制御システムにおいて行われる処理の詳細についてフローチャートを用いて説明する。具体的には、図7を用いて全体の処理について説明した後、図8で動作指示の実行処理について説明する。そして、図9で動作指示の実行処理において行われるシーケンス命令の実行処理について説明する。また、図10を用いてシミュレーション処理部126におけるシミュレーション処理について説明する。
【0078】
図7が、全体の処理を表すフローチャートである。この処理が開始されると、まず記憶部110のデータベースに記憶されたシーケンス命令(命令テーブル113のレコードとして記憶されている)を読み出す(S101)。そして、必要に応じて図3(A)等の画面で編集処理を行い(S102)、記憶部110に記憶する(S103)。シーケンス命令の編集及び保存が完了したら、シーケンス命令の実行処理を行う(S104)。この実行処理はロボットの実機を動作させるものであってもよいし、シミュレーションによる動作確認であってもよい。
【0079】
図8が、動作指示の実行処理を表すフローチャートである。この処理が開始されると、まず動作指示を読み出す(S201)。この動作指示は上述したシナリオ(つまり、1又は複数のシーケンス命令からなる)であってもよい。ここではシナリオであるものとして説明する。シナリオが読み出されると、次に当該シナリオのゴールをシーケンス命令として関連づけているルールを検索する(S202)。例えば、シナリオが「ワークの位置を認識する(work)」「移動する(work,point)」の2つのシーケンス命令からなるとしたら、まず「ワークの位置を認識する(work)」という命令をシーケンス命令として持つルール、及び「移動する(work,point)」という命令をシーケンス命令として持つルールの2つのルールを検索してくることになる。上述の条件を満たすルールがあったかの判定を行い(S203)、ルールがなかった場合には処理を終了する。ルールがあった場合には、ルールの実行処理を行う(S204)。ルールの実行処理とは、当該ルールに結びつけられたシーケンス命令の実行処理のことであり、詳細な処理は図9を用いて後述する。
【0080】
そして、ルールを実行したときにエラーが発生したかの判定を行い(S205)、エラーが発生しなかった場合には処理を終了する。エラーが発生した場合には、エラーコードに対応したゴールをシーケンス命令に持つルールを検索する。例えば、エラーコード0005が送信された場合には、Error0005をシーケンス命令として持つルールが検索されることになる。この場合、エラーコードに対応するゴールをシーケンス命令に持つルールがあったかの判定をS203で行い、あった場合はS204で当該ルールを実行することでエラー処理を行うことになる。なお、エラー処理中にエラーが発生することもあるため、その場合は再度S205、S206等の処理を行うことになる。
【0081】
次に図9を用いてS204のルールの実行処理(シーケンス命令の実行処理)の詳細について説明する。この処理が開始されると、まずシーケンス命令のパラメーターに呼び出し元のパラメーターを代入する。これは、動作指示(シナリオ)において規定されたパラメーターをシーケンス命令のパラメーターとして設定することに相当する。また、S308における再帰呼び出しの場合には、シーケンス命令の実行処理が1又は複数の条件命令の実行処理により行われることになり、シーケンス命令のパラメーターを条件命令のパラメーターとして用いることに相当する。
【0082】
次に変数N(条件命令を表す変数)に1を設定し(S302)、条件Nがあるかの判定を行う(S303)。条件Nがあるかの判定とは、N番目の条件命令が存在するか否かの判定のことである。これ以降も「条件N」とは、N番目の条件命令のことを差すものとして用いる。そして、条件Nをシーケンス命令に持つルールを検索する(S304)。そのようなルールが見つからなかった場合には、条件Nはシーケンス命令としては用いられていない(階層構造においてさらに下位の命令は存在しない)ということであるため、S306もしくはS307において条件Nの実行処理を行う。ここで、S306は実機で動作を行っている場合の例であり、S307がシミュレーターで処理を行っている例である。S306もしくはS307の処理が行われた後は、エラーが発生したかの判定が行われ(S309)、エラーが発生していたらエラーコードを設定し(S311)、処理を終了する。エラーが発生していなければS310に移行する。
【0083】
また、S305において、条件Nをシーケンス命令として持つルールがあった場合には、階層構造においてさらに下位の命令が存在すると言うことであるから、当該下位の命令の実行処理を行うために、ルール実行モジュールを再帰的に呼び出すことになる(S308)。S308の処理の後、或いは上述したS309においてNoと判定された場合には、Nをインクリメントして(S310)、S303に戻る。つまり、ここまでが1番目の条件命令についての処理であり、次にNをインクリメントして2番目の条件命令について処理を開始する。
【0084】
最後に、図10を用いてS307のシミュレーターにおける命令実行処理について説明する。この処理が開始されると、まず乱数を発生させ、当該乱数がエラー発生率より小さいか否かの判定が行われる(S401)。Yesの場合には、処理の戻り値としてエラー発生に相当する値を設定する。それとともに、エラーコードの値を所望の擬似エラーの値(これはランダムに決めてもよい)に設定する(S402)。
【0085】
S401でNoの場合には、シミュレーターの表示部に命令の実行結果を描画し(S403)、処理の戻り値として正常値を設定する(S404)。
【0086】
以上の本実施形態では、ロボット制御システムは、図2に示したようにシーケンス命令を記憶する記憶部110と、記憶部110に記憶されたシーケンス命令の実行処理を行う実行部122を有する処理部120と、処理部120の処理結果に基づいてロボットの制御を行うロボット制御部(ロボット制御装置50)とを含む。そして記憶部110はシーケンス命令として、複数の通常動作シーケンス命令を記憶するとともに、通常動作シーケンス命令と同じ命令体系で記述される複数のエラー処理動作シーケンス命令を記憶する。実行部122は、通常動作時には通常動作シーケンス命令の実行処理を行い、エラー発生時にはエラー状況に応じて選択されたエラー処理動作シーケンス命令の実行処理を行う。
【0087】
ここで、シーケンス命令とは1又は複数の命令により記述される。また、通常動作シーケンス命令とエラー処理動作シーケンス命令とが同じ命令体系により記述されるとは、例えば後述するように共通の命令群を用いて通常動作シーケンス命令とエラー処理動作シーケンス命令の両方を記述可能であることをさす。
【0088】
これにより、複数の命令の集合としてシーケンス命令を設定した上で、当該シーケンス命令として同じ命令体系を用いて通常動作シーケンス命令とエラー処理動作シーケンス命令の両方を記述することが可能になる。さらに、通常動作時には通常動作シーケンス命令を実行し、エラー発生時には複数のエラー処理動作シーケンス命令の中から、エラー状況に応じて選択されたエラー処理動作シーケンス命令の実行処理を行う。よって、複数の命令(上述してきた条件命令)とシーケンス命令との結びつけ(上述してきたルール)により動作指示を記述することができるため、動作指示の体系的な記述が可能になる。その上で、通常動作シーケンス命令とエラー処理動作シーケンス命令とを同じ命令体系で記述することができるため、エラー処理動作が容易且つ柔軟に記述することが可能になる。エラー処理動作の記述が容易であるため、複数通りのエラー処理動作を準備しておくのも容易であり、エラー状況に応じて複数のエラー処理動作の中から適切なものを選択可能になるため、エラー発生時に適切、柔軟な対処ができる。
【0089】
また、記憶部110は、図2に示したように、命令情報と、命令の処理対象を表すパラメーターとを結びつける命令テーブル113を記憶するとともに、シーケンス命令と1又は複数の条件命令とを結びつけるシーケンス命令テーブル115を記憶してもよい。
【0090】
ここで、条件命令とは、命令テーブル113のレコードとして記憶される命令の中から選択されるものである。そして、条件命令とシーケンス命令とは、1又は複数の条件命令を記述された順序に実行することにより、当該条件命令に結びつけられたシーケンス命令が実行されることになるという関係を有する。
【0091】
これにより、図4に示したようなデータベースのうち、命令テーブル113及びシーケンス命令テーブル115を実現することが可能になる。本実施形態においては、シーケンス命令テーブル115により記述される、シーケンス命令と条件命令との結びつけをルールとも呼ぶ。シーケンス命令と条件命令との対応づけをおこなうことにより、動作指示を階層的且つ体系的に記述することが可能になる。
【0092】
また、処理部120は、通常動作時にはシーケンス命令テーブル115と命令テーブル113とを参照して、通常動作シーケンス命令を構成する1又は複数の条件命令を実行する。また、エラー発生時においてもシーケンス命令テーブル115と命令テーブル113とを参照して、エラー処理動作シーケンス命令を構成する1又は複数の条件命令を実行する。
【0093】
これにより、通常動作シーケンス命令とエラー処理動作シーケンス命令を共通の命令群を用いて記述することが可能になる。つまり、命令テーブル113のレコードとして記憶される命令は、通常動作用、エラー処理動作用といった区別はなく、どちらにも用いることが可能である。上述したように、通常動作シーケンス命令とエラー処理動作シーケンス命令が同じ命令体系で記述されるとは、例えばこのように両方のシーケンス命令が共通の命令群に基づいて記述されるということである。
【0094】
また、記憶部110は命令テーブル113に第1〜第M(Mは1以上の整数)の命令レコード(命令)を記憶するとともに、シーケンス命令テーブル115に第1〜第N(Nは2以上の整数)のシーケンス命令レコード(ルール)を記憶する。そして、記憶部110は、第i(iは1≦i≦Nの整数)のシーケンス命令レコードにおいては、第k(kは1≦k≦Mの整数)の命令レコードにより表される前記命令を前記条件命令として記憶するとともに、第j(jは1≦j≦N、i≠jの整数)のシーケンス命令レコードにおいては、前記第kの命令レコードにより表される前記命令を前記シーケンス命令として記憶してもよい。
【0095】
これにより、命令テーブル113のレコードとして記憶された命令は、あるルールにおいてはシーケンス命令として結びつけられ且つ他のルールにおいては条件命令として結びつけられてもよいことになる。よって、2階層にとどまらず、3階層以上の階層構造が可能になる。つまり、あるシーケンス命令に条件命令が結びつけられていたとき、当該条件命令にもシーケンス命令としての属性があり、その下にさらに条件命令が結びつけられるという構成も可能になるということである。図5の例で言えば、「移動する(work,point)」の条件命令として「つかむ(work)」が規定されているが、「つかむ(work)」自身もシーケンス命令であり、条件命令として、「ハンドを開く」「位置調整(work)」「ハンドを閉じる」が結びつけられている。
【0096】
また、記憶部110は、通常動作シーケンス命令として、第1のアプローチ命令、把持命令及びムーブ命令により構成される第1の通常動作シーケンス命令を記憶する。それとともに、エラー処理動作シーケンス命令として、第1のアプローチ命令とは異なる位置にアプローチする第2のアプローチ命令、第1のアプローチ命令、把持命令及びムーブ命令により構成される第1のエラー処理動作シーケンス命令を記憶してもよい。
【0097】
これにより、図6(A)〜図6(F)に示したようなエラー処理が可能になる。これは、通常動作シーケンス命令として、移動する(ワークに近づき、ワークを把持し、動かす)命令があった場合に、その処理の中でエラーが発生した(例えばワークが脱落した等)場合の対処の一例を示すものである。ここでは、第2のアプローチ命令を用いることで、第1のアプローチ命令により指示される位置とは異なる位置にアプローチを行う。このようにすることで、図6(B)、図6(F)に示したようにワークを把持する角度等を通常動作シーケンス命令を実行した場合とは異ならせることが可能になる。よって、少なくとも通常動作シーケンス命令の実行時と同様の理由によるエラーの発生をよくすることができる。
【0098】
また、ロボット制御部(ロボット制御装置50)は、エラー状況に応じたエラーコードを処理部120に出力し、実行部122は、エラーコードに応じたエラー処理動作シーケンス命令の実行処理を行う。
【0099】
これにより、エラーコードを用いることにより、エラー状況に応じた処理を行うことが可能になる。例えば上述したようにエラーコードを0001〜0005の5種類を用意しておき、それぞれにError0001〜Error0005のエラー処理動作シーケンス命令を対応付けておくことにより、5種類のエラー状況に応じてそれぞれ異なったエラー処理を行うことができ、柔軟なエラー処理が可能になる。なお、上述したように、1つのエラーコードに複数のエラー処理動作シーケンス命令を対応付けておき、エラーコードが呼ばれた回数等を用いて実行するエラー処理動作シーケンス命令を選択してもよい。
【0100】
また、処理部120は、図2に示したように通常動作シーケンス命令及びエラー処理動作シーケンス命令の編集処理を行う編集処理部124を含んでもよい。
【0101】
これにより、通常動作シーケンス命令及びエラー処理動作シーケンス命令の編集処理を行うことが可能になる。例えば図3(A)、図3(B)を用いて説明したように、シーケンス命令及び条件命令を命令群(命令テーブル113のレコードとして記憶された命令)の中から選択することにより編集処理を行うことが考えられる。
【0102】
また、編集処理部124は、前回編集処理が行われた通常動作シーケンス命令又はエラー処理動作シーケンス命令において用いられた命令を、今回の通常動作シーケンス命令又はエラー処理動作シーケンス命令の編集処理において用いてもよい。特に、前回編集処理が行われた通常動作シーケンス命令において用いられた命令を今回のエラー処理動作シーケンス命令の編集処理で用いてもよいし、前回編集処理が行われたエラー処理動作シーケンス命令において用いられた命令を今回の通常動作シーケンス命令の編集処理で用いてもよい。
【0103】
これにより、以前に用いた命令をそれ以降のシーケンス命令の編集処理において流用することが可能になる。よって、例えば図3(B)のドロップダウンメニューに示したように、ボタンを押すだけで、以前用いた命令を選択できるようになり、シーケンス命令の編集が容易になる。このとき、通常動作シーケンス命令とエラー処理動作シーケンス命令とが、共通の命令群を用いて記述可能であるという上述してきた特徴があることから、以前の編集対象が通常動作シーケンス命令であるかエラー処理動作シーケンス命令であるか、また、今回の編集対象が通常動作シーケンス命令であるかエラー処理動作シーケンス命令であるかといったことを気にすることなく、編集が可能である。
【0104】
また、処理部120は、図2に示したように、通常動作シーケンス命令及びエラー処理動作シーケンス命令が実行される際のロボット制御部の動作シミュレーション処理を行うシミュレーション処理部126を含んでもよい。
【0105】
これにより、ロボットの実機を動かすことなくエラー処理動作が適切に記述されたか否かを判断することが可能になる。シミュレーション処理部126においてソフトウェア的に処理が行われるため、実機を用いる場合に比べて容易且つ高速に検証が可能である。
【0106】
また、シミュレーション処理部126は、エラー処理の確認用の擬似エラーに対応するエラーコードを発生させてもよい。
【0107】
これにより、シミュレーションにおいてもエラーを発生させ、当該エラーの状況に応じたエラー処理を実行するとともに、実行したエラー処理が適切であるか否かの検証を行うことが可能になる。
【0108】
また、本実施形態は上述のロボット制御システムと、ロボット制御システムにより制御されるロボットとを含むロボットシステムに関係する。
【0109】
これにより、上述してきたロボット制御装置がロボット30を制御することにより、連係して動作を行うロボットシステムを実現することが可能になる。
【0110】
また、本実施形態は図11に示したように、シーケンス命令を記憶する記憶部110と、記憶部110に記憶されたシーケンス命令の実行処理を行う実行部122を有する処理部120と、処理部120の処理結果に基づいてロボットの制御を行うロボット制御部170としてコンピューターを機能させるプログラムに関係する。そして記憶部110はシーケンス命令として、複数の通常動作シーケンス命令を記憶するとともに、通常動作シーケンス命令と同じ命令体系で記述される複数のエラー処理動作シーケンス命令を記憶する。実行部122は、通常動作時には通常動作シーケンス命令の実行処理を行い、エラー発生時にはエラー状況に応じて選択されたエラー処理動作シーケンス命令の実行処理を行う。
【0111】
これにより、ソフトウェア的にロボットを制御する処理を行うプログラムを実現することが可能になる。そして、上記プログラムは、情報記憶媒体180に記録される。ここで、情報記憶媒体180としては、DVDやCD等の光ディスク、光磁気ディスク、ハードディスク(HDD)、不揮発性メモリーやRAM等のメモリーなど、情報処理装置10等によって読み取り可能な種々の記録媒体を想定できる。例えば、図11に示したように、PC等の情報処理装置によって読み取り可能な種々の記録媒体にプログラムが記憶され、処理部120において実行されるケースが考えられる。
【0112】
なお、以上のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語と共に記載された用語は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。またロボット制御システム、ロボットシステム等の構成、動作も本実施形態で説明したものに限定されず、種々の変形実施が可能である。
【符号の説明】
【0113】
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に記載されているように、ロボット自身が作業動作を監視しておき、動作中にエラーが検出された場合には、エラー検出結果に基づいて自律的にエラー回避処理を行うという物である。また、作業記述しておくとは、特許文献2に記載されているように、あらかじめエラー処理を記述しておき、エラーが発生した際には記述された当該エラー処理を実行するというものである。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2004−148493号公報
【特許文献2】特開2010−149255号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献1の手法では、エラーを検出するために動作を監視しておく必要がある。また、エラー検出結果に基づいてエラー回避処理を入力する必要が生じる。そのため、監視及び入力のための負荷が大きいという問題がある。
【0007】
また、特許文献2の手法では、あらかじめ作業記述をしておくため、特許文献1のような負荷の問題は生じない。しかし、作業を記述する手法が難解であり、また、記述した処理により適切にエラーに対処できるかが確認できないという問題がある。さらに、エラー時に行われる代替動作は1種類しか用意されないため、様々なエラーに対応することができない。
【0008】
本発明の目的は、エラー処理動作の記述に用いられる命令として、通常動作の記述に用いられる命令と同じ命令体系を用いることで、容易且つ柔軟にエラー処理を記述可能なロボット制御システム、ロボットシステム及びプログラム等を提供することにある。
【課題を解決するための手段】
【0009】
本発明の一態様は、1又は複数の命令により記述されるシーケンス命令を記憶する記憶部と、前記記憶部に記憶された前記シーケンス命令の実行処理を行う実行部を有する処理部と、前記処理部の処理結果に基づいてロボットの制御を行うロボット制御部と、を含み、前記記憶部は、前記シーケンス命令として、複数の通常動作シーケンス命令と、前記通常動作シーケンス命令の記述に用いられる前記命令と同じ命令体系により記述される複数のエラー処理動作シーケンス命令とを記憶し、前記実行部は、通常動作時には前記通常動作シーケンス命令の実行処理を行い、エラー発生時には複数の前記エラー処理動作シーケンス命令の中から、エラー状況に応じて選択されたエラー処理動作シーケンス命令の実行処理を行うロボット制御システムに関係する。
【0010】
本発明の一態様では、1又は複数の命令によりシーケンス命令を記述するものとし、シーケンス命令として同じ命令体系で記述された通常動作シーケンス命令と、エラー処理動作シーケンス命令を記憶する。そして、通常動作時には通常動作シーケンス命令を実行し、エラー発生時にはエラー処理動作シーケンス命令を実行する。これにより、エラー処理動作も通常動作と同様に記述できるため、処理を共通化でき、容易且つ柔軟にエラー処理を行うことが可能になる。
【0011】
また、本発明の一態様では、前記記憶部は、前記シーケンス命令の記述に用いられる前記命令に関する情報である命令情報と、前記命令の処理対象を表すパラメーターとを結びつける命令テーブルを記憶するとともに、前記命令のうち条件命令とシーケンス命令とが、1又は複数の前記条件命令を実行することにより、前記シーケンス命令が実行されるという関係を有する場合に、1又は複数の前記条件命令と、前記シーケンス命令に関する情報とを結びつけるシーケンス命令テーブルを記憶してもよい。
【0012】
これにより、データベースのテーブルとして命令を記憶した上で、同様にデータベースのテーブルとしてシーケンス命令と条件命令の結びつけを記憶することが可能になる。
【0013】
また、本発明の一態様では、前記処理部は、前記通常動作時は、前記シーケンス命令テーブル及び前記命令テーブルを参照して、前記通常動作シーケンス命令を構成する1又は複数の条件命令を実行し、前記エラー発生時においても、前記シーケンス命令テーブル及び前記命令テーブルを参照して、前記エラー処理動作シーケンス命令を構成する1又は複数の条件命令を実行してもよい。
【0014】
これにより、通常動作シーケンス命令を記述する際にも、エラー処理動作シーケンス命令を記述する際にも、条件命令の候補として共通の命令群を用いることができ、2つのシーケンス命令の記述に用いる命令の命令体系を同じにすることが可能になる。
【0015】
また、本発明の一態様では、前記記憶部は、前記命令テーブルに第1〜第M(Mは1以上の整数)の命令レコードを記憶するとともに、前記シーケンス命令テーブルに第1〜第N(Nは2以上の整数)のシーケンス命令レコードを記憶し、前記記憶部は、第i(iは1≦i≦Nの整数)のシーケンス命令レコードにおいては、第k(kは1≦k≦Mの整数)の命令レコードにより表される前記命令を前記条件命令として記憶するとともに、第j(jは1≦j≦N、i≠jの整数)のシーケンス命令レコードにおいては、前記第kの命令レコードにより表される前記命令を前記シーケンス命令として記憶してもよい。
【0016】
これにより、1つの命令をシーケンス命令として利用することも、条件命令として利用することもでき、命令構造の階層化が可能になる。
【0017】
また、本発明の一態様では、前記記憶部は、前記通常動作シーケンス命令として、第1のアプローチ命令、把持命令及びムーブ命令により構成される第1の通常動作シーケンス命令を記憶するとともに、前記エラー処理動作シーケンス命令として、前記第1のアプローチ命令とは異なる位置にアプローチする第2のアプローチ命令、前記第1のアプローチ命令、前記把持命令及び前記ムーブ命令により構成される第1のエラー処理動作シーケンス命令を記憶してもよい。
【0018】
これにより、具体例として、ワークへのアプローチ・把持・ムーブの各命令からなる通常動作シーケンス命令の処理中に発生したエラーに対するエラー処理として、別の地点へのアプローチ・ワークへのアプローチ・把持・ムーブの各命令からなるエラー処理動作シーケンス命令を実行することが可能になり、同じエラーの繰り返しを抑止することができる。
【0019】
また、本発明の一態様では、前記ロボット制御部は、前記エラー状況に応じたエラーコードを前記処理部に出力し、前記実行部は、前記エラーコードに応じた前記エラー処理動作シーケンス命令の実行処理を行ってもよい。
【0020】
これにより、エラーコードに応じたエラー処理が可能になる。
【0021】
また、本発明の一態様では、前記処理部は、前記通常動作シーケンス命令及び前記エラー処理動作シーケンス命令の編集処理を行う編集処理部を含んでもよい。
【0022】
これにより、シーケンス命令を編集することが可能になる。
【0023】
また、本発明の一態様では、前記編集処理部は、前回に編集処理が行われた前記通常動作シーケンス命令又は前記エラー処理動作シーケンス命令において用いられた前記命令を、今回の通常動作シーケンス命令又は他のエラー処理動作シーケンス命令の編集処理において用いてもよい。
【0024】
これにより、以前の編集処理に用いた命令を、それ以降の編集処理において流用することが可能になり、シーケンス命令の記述を簡単化することができる。
【0025】
また、本発明の一態様では、前記編集処理部は、前回に編集処理が行われた前記通常動作シーケンス命令において用いられた前記命令を、今回のエラー処理動作シーケンス命令の編集処理において用いてもよい。
【0026】
これにより、通常動作シーケンス命令かエラー処理動作シーケンス命令かによらず、命令の流用が可能になる。
【0027】
また、本発明の一態様では、前記編集処理部は、前回に編集処理が行われた前記エラー処理動作シーケンス命令において用いられた前記命令を、今回の通常動作シーケンス命令の編集処理において用いてもよい。
【0028】
これにより、通常動作シーケンス命令かエラー処理動作シーケンス命令かによらず、命令の流用が可能になる。
【0029】
また、本発明の一態様では、前記処理部は、前記通常動作シーケンス命令及び前記エラー処理動作シーケンス命令が実行される際の前記ロボット制御部の動作シミュレーション処理を行うシミュレーション処理部を含んでもよい。
【0030】
これにより、ロボットの実機を用いることなくシーケンス命令の検証を行うことが可能になる。
【0031】
また、本発明の一態様では、前記シミュレーション処理部は、エラー処理の確認用の擬似エラーに対応するエラーコードを発生させてもよい。
【0032】
これにより、シミュレーション処理においてもエラーコードを発生させることで、通常動作シーケンス命令からエラー処理動作シーケンス命令へ移行させ、エラー処理が適切か否かの検証を行うことが可能になる。
【0033】
また、本発明の他の態様は、請求項1乃至12のいずれかに記載のロボット制御システムと、前記ロボット制御システムにより制御されるロボットと、を含むロボットシステムに関係する。
【0034】
また、本発明の他の態様は、1又は複数の命令により記述されるシーケンス命令を記憶する記憶部と、前記記憶部に記憶された前記シーケンス命令の実行処理を行う実行部を有する処理部と、前記処理部の処理結果に基づいてロボットの制御を行うロボット制御部として、コンピューターを機能させ、前記記憶部は、前記シーケンス命令として、複数の通常動作シーケンス命令と、前記通常動作シーケンス命令の記述に用いられる前記命令と同じ命令体系により記述される複数のエラー処理動作シーケンス命令とを記憶し、前記実行部は、通常動作時には前記通常動作シーケンス命令の実行処理を行い、エラー発生時には複数の前記エラー処理動作シーケンス命令の中から、エラー状況に応じて選択されたエラー処理動作シーケンス命令の実行処理を行うプログラムに関係する。
【図面の簡単な説明】
【0035】
【図1】本実施形態のシステム構成例。
【図2】本実施形態の詳細なシステム構成例。
【図3】図3(A)、図3(B)は編集処理に用いられる画面の例。
【図4】記憶部に記憶されるデータベースのデータ構造例。
【図5】本実施形態で用いられる命令群の階層的な構造を説明する図。
【図6】図6(A)〜図6(F)はワークの移動中のエラーに対するエラー処理の具体例を説明する図。
【図7】本実施形態の全体の処理を説明するフローチャート。
【図8】動作指示の実行処理を説明するためのフローチャート。
【図9】ルール(シーケンス命令)の実行処理を説明するためのフローチャート。
【図10】シミュレーション処理を説明するためのフローチャート。
【図11】本実施形態の他のシステム構成例。
【発明を実施するための形態】
【0036】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【0037】
1.本実施形態の手法
ロボットが教示された作業内容に従って作業を行っているときにエラーが発生した場合、エラー処理としては例えば、ロボットを停止させる・ロボットを待機位置に戻す・処理を再実行する・処理を省略する・コマンド入力する・作業記述しておく等が考えられる。
【0038】
しかし、ロボットを停止させたり、ロボットを待機位置に戻したりするのでは、所望の動作が完了しないという問題がある。また、処理を再実行するのでは、エラーに対する対策が講じられないため、再度同様のエラーが発生する可能性が高い。処理を省略する場合には、動作工程が不足することになり、処理が適切に完了しない可能性がある。
【0039】
上述した特許文献1に記載されているように、コマンド入力をすれば作業が適切に完了する可能性が出てくるが、動作の監視と、エラー発生時の処理の入力に工数がかかることになる。また、上述した特許文献2に記載されているように、作業記述をしておくことで、コマンド入力において発生する問題は回避できるが、特許文献2の手法ではエラー処理の記述が難しい上、記述した処理によりエラーに適切に対処できるかが確認できない。また、記述される代替処理は1処理のみであり、様々なエラーに対応することが困難である。
【0040】
そこで、本出願人は以下の手法を提案する。まずエラー発生時の処理は、エラー処理動作として記述しておく。その記述の際に、エラー処理動作と通常動作とを、同じ記述手法により記述可能にしておくことで、容易且つ柔軟なエラー処理の記述を可能にする。具体的には、各処理(通常動作の処理及びエラー処理)はルールベースで記述される。ここでルールとは、1又は複数の条件命令と、当該条件命令が全て実行されたときに実行されたとみなされるシーケンス命令とを結びつけるものである。図5の例においては、「移動する」命令がシーケンス命令であり、「初期化」「近づく」「つかむ」「動かす」「はなす」の各命令が条件命令となる。
【0041】
図4を用いて後述するように、データベースには命令テーブルが用意され、命令テーブルのレコードとして各命令が記憶されている。通常動作及びエラー処理動作はデータベースに記憶された複数の命令を、共通の命令群として利用することでルールの形で記述されることになる。つまり、「初期化」「近づく」等の各命令は、通常動作を表すルールで用いられることもあれば、エラー処理動作を表すルールで用いられることもある。このように命令群を共通化し、通常動作とエラー処理動作の記述で併用することにより、エラー処理動作の記述を容易にする。また、命令単位での並べ替え等が可能になり、柔軟な記述をすることができる。
【0042】
また、通常動作の実行中にエラーが発生した場合には、発生したエラーに応じたエラーコードを生成し、生成したエラーコードに応じてエラー処理動作を実行する。つまり、エラーコード及びエラー処理動作を複数用意しておけば、エラーに応じたエラー処理が可能になる。また、記述したエラー処理動作に関して、シミュレーションを行うことで、適切な対処が可能であるかの判断を行うこともできる。
【0043】
以下、システム構成例に説明した後、図4や図5等を用いて本実施形態において用いられる命令やルール等の考え方について説明する。その後、具体例を用いてエラー処理の詳細について説明した後、フローチャートに基づいて処理の詳細について説明する。
【0044】
2.システム構成例
本実施形態に係るロボット制御システムを含むロボットシステムの構成例を図1を用いて説明する。ロボットシステムは、情報処理装置10と、撮像装置20と、ロボット30と、図1には不図示のロボット制御装置50と、を含む。ただし、ロボットシステムは図1の構成に限定されず、これらの一部の構成要素を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。ロボット30は、アーム320及びハンド330を有し、情報処理装置10からの動作指示に従い処理を行う。例えばパレット40に載せられたワークに対して処理を行う。撮像装置20は、例えばワークを撮影可能な位置(パレットの直上でもよいし、ロボット30のハンド330に取り付けられてもよい)に設けられ、主にワークの撮影を行う。そして、撮像画像の情報からワークの位置や姿勢等に関する情報を検出する。検出した情報は例えば情報処理装置10等に送られてもよいし、直接ロボット30に送られてもよい。また、ワークの位置や姿勢等に関する情報を検出できればよいため、撮像装置20による撮像画像の取得以外の手法(例えばレーザー等を用いた3次元スキャン)を用いてもよい。
【0045】
具体的な構成について図2を用いて説明する。情報処理装置10は、記憶部110と、処理部120と、表示部150と、外部I/F部160を含む。
【0046】
記憶部110は、データベースを記憶したり、処理部120等のワーク領域となるもので、その機能はRAM等のメモリーやHDD(ハードディスクドライブ)などにより実現できる。記憶部110は、ロボット制御データベース111(以下データベースを適宜DBと表記する)を含む。ロボット制御データベース111は具体的には図4を用いて後述するデータベースであって、例えば命令テーブル113と、シーケンス命令テーブル115とを含む。命令テーブル113は命令に関するデータを記憶し、シーケンス命令テーブル115は、条件命令とシーケンス命令とを結びつけるルールを記憶する。命令、条件命令、シーケンス命令、ルール等についての詳細は後述する。
【0047】
また、記憶部110は、ワークDB112と、ロボットDB114とを含み、ロボットが図1に示すようにアーム320とハンド330を有するロボットである場合には、ロボットDB114は、アームDB116と、ハンドDB118を含む。当該ロボットが複数のアームを備える場合は、アームDB116とハンドDB118は複数個であってもよい。ワークDB112は、ワークの大きさ、形状、姿勢等の情報を記憶する。ロボットDB114はロボットに関するデータを記憶する。具体的にはアームDB116でアームの形状、可動範囲等を記憶し、ハンドDB118でハンドの形状、大きさ等の情報を記憶する。ただし、記憶部110は図2の構成に限定されず、これらの一部の構成要素を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
【0048】
処理部120は、記憶部110からのデータや、外部I/F部160において受信した撮像装置或いはロボットからの情報等に基づいて種々の処理を行う。この処理部120の機能は、各種プロセッサ(CPU等)、ASIC(ゲートアレイ等)などのハードウェアや、プログラムなどにより実現できる。
【0049】
処理部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に内蔵されてもよい。
【0050】
表示部150は、各種の表示画面を表示するためのものであり、例えば液晶ディスプレイや有機ELディスプレイなどにより実現できる。
【0051】
外部I/F部160は、情報処理装置10に対するユーザーからの入力等を行ったり、撮像装置20やロボット30からの情報を受け付けるためのインターフェースである。ユーザーからの入力等に関しては、スイッチやボタン、キーボード或いはマウス等から構成されてもよい。
【0052】
撮像装置20は、上述したように、例えばワークを撮影可能な位置に設けられ、主にワークの撮影を行う。本実施形態においては撮像画像情報をそのまま情報処理装置10に送信するものとするが、これに限定されるものではない。例えば、情報処理装置10の処理部120の一部(例えば画像処理部128等)を撮像装置20に持たせてもよい。その場合、撮像画像に対して画像処理が施された後の情報が出力されることになる。
【0053】
また、ロボット30は、アーム320及びハンド330を含む。
【0054】
ロボット制御装置50は、情報処理装置10からの情報を受け付けロボットの各部(アーム320及びハンド330等)の制御を行う。具体的にはロボット30に対して制御信号を送信することで制御を行うことになる。また、エラーが発生した際にはエラーコードを処理部120に対して出力する。
【0055】
3.命令及びシーケンス命令
3.1 命令及びシーケンス命令の定義
次に、本実施形態で用いる命令・条件命令・シーケンス命令等について説明する。まず、本実施形態のデータベースの構造例を図4を用いて説明する。データベース(図2におけるロボット制御DB111)は、命令テーブル、シーケンス命令テーブル、シーケンス命令オフセットテーブル、パラメーターテーブル、パラメーターオフセットテーブル、文字列オフセットテーブル等を含む。
【0056】
命令テーブルは、命令IDと命令名、パラメーター数及び各パラメーターのIDを関連づける。シーケンス命令テーブルは、シーケンス命令IDと条件数及び各条件命令IDを関連づける。パラメーターテーブルは、パラメーターID、サイズ、タイプ、パラメーター名、及びパラメーターの値を関連づける。シーケンス命令オフセットテーブル、パラメーターオフセットテーブル、文字列オフセットテーブルは、データベースにおける実際の値が記憶されているアドレスを求めるためのオフセットを記憶する。
【0057】
本実施形態における命令とは、命令テーブルのレコードとして記憶されるものであり、ロボットに対する動作指示を表す。各命令は、任意の個数のパラメーターを利用する。例えば「移動する(work,point)」という命令であれば、work及びpointがパラメーターとなる。この場合、workで表されるワークを、pointで表される位置へ移動する命令となる。「初期化」のようにパラメーターをとらない命令があってもよい。その他、「近づく(work)」、「つかむ(work)」、「動かす(point)」、「はなす(work)」等の命令がある。
【0058】
本実施形態においては、1又は複数の条件命令とシーケンス命令とを結びつけられる。この結びつけのことをルールとも表記する。ルールによりシーケンス命令と、1又は複数の条件命令とが結びつけられ、当該1又は複数の条件命令が全て実行された場合に、シーケンス命令が実行されたとみなされるという関係が成り立つ。シーケンス命令が1又は複数の条件命令により記述されるといってもよい。一例としては、あるルールにおいては、シーケンス命令「移動する(work,point)」と条件命令「初期化」「近づく(work)」「つかむ(work)」「動かす(point)」「はなす(work)」が結びつけられることになる。そして、「初期化」「近づく(work)」「つかむ(work)」「動かす(point)」「はなす(work)」がこの順に実行されたとき、「移動する(work,point)」が実行されたことになる。これらのルールに用いられるシーケンス命令及び条件命令はともに上述した命令テーブルのレコードとして記憶される命令群に含まれる命令が用いられる。
【0059】
ここで、1つの命令が、あるルールにおいてはシーケンス命令として用いられ且つ他のルールにおいては条件命令として用いられてもよい。例えば、「移動する(work,point)」の条件命令として用いられた「つかむ(work)」が、他のルールにおいてはシーケンス命令として記述されてもよい。例えば、「つかむ(work)」をシーケンス命令として、条件命令「ハンドを開く」「位置調整(work)」「ハンドを閉じる」が結びつけられることが考えられる。また、別の例としては、「移動する(work,point)」が条件命令として用いられてもよい。「2回移動する(work,point1,point2)」という1つのワークを順に2箇所に移動するシーケンス命令があったとすれば、当該シーケンス命令に対しては、条件命令として「移動する(work,point1)」「移動する(work,point2)」が結びつけられることになる。つまり、命令テーブルのレコードとして記憶される命令は、シーケンス命令として用いられてもよいし、条件命令として用いられてもよい。命令を任意の構成により階層化することが可能になり、柔軟に動作指示を記述することができる。
【0060】
本実施形態においては、通常動作及びエラー処理動作は、上述のシーケンス命令単位(ルール単位)で記述する。例えば1つのエラー処理動作は、1つのシーケンス命令に対応することになり、当該シーケンス命令をエラー処理動作シーケンス命令と呼ぶ。同様に、1つの通常動作は1つのシーケンス命令に対応することになり、当該シーケンス命令を通常動作シーケンス命令と呼ぶ。ただし、上述の手法に限定されるものではなく、例えば複数のシーケンス命令からなるシナリオという概念を導入し、通常動作及びエラー処理動作を1つのシナリオにより記述してもよい。この場合のシナリオも、当該シナリオを構成する複数のシーケンス命令を、それぞれ条件命令とみなし、各条件命令を実行したときに実行されたと見なされる動作を新たにシーケンス命令として規定することにより、1つのシーケンス命令で記述することが可能である。このようにすれば、結局通常動作及びエラー処理動作を1つのシーケンス命令で記述することができる。よって、通常動作及びエラー処理動作をシーケンス命令で記述するか、シナリオで記述するかは設計事項であり、本実施形態においてはどちらを用いてもよい。
【0061】
3.2 編集処理部によるシーケンス命令の編集
処理部120の編集処理部124における、ルールの編集処理について説明する。上述したように、ルールとはシーケンス命令と条件命令とを結びつけるものであるから、ルールの記述とは、当該ルールにおけるシーケンス命令と、条件命令とを決定する処理に相当する。
【0062】
情報処理装置10の表示部150に表示される画面の例を図3(A)に示す。図3(A)の例では、一番上の行にシーケンス命令を記述し、その下に1又は複数の条件命令を記述する形式を取る。各命令の記述は、キーボード等により命令名に当たる文字列を直接入力してもよいし、図3(B)に示したようにドロップダウンメニューを用いて選択してもよい。
【0063】
命令単位でルールを記述することにより、システム利用者は低レベルでのロボット制御(例えばマニピュレーターをどれだけ作動させるか、ジョイント角を何度にするか等の制御)を考慮する必要がなくなる。
【0064】
また、編集処理部124における命令の記述においては、記憶部110に記憶されたデータベースの命令テーブル113のレコードとして記憶されている命令以外は記述できないという制約を設けてもよい。これは処理の前提として、実行可能な命令は全て命令テーブル113のレコードとして記憶させておくということが想定されるためである。データベースに記憶されていない命令を実行しようとしても、何を実行してよいかわからず、処理は不可能であるから、上述のような制約はこのような例外的な処理を引き起こす可能性を抑止する効果が期待できる。ドロップダウンメニューを用いるのであれば、表示される命令の候補を、データベースに記憶してあるものに限定すればよいし、文字列を直接入力するのであれば、入力された文字列とデータベースの記録とを照合し、記憶していない命令名が入力された際には警告を表示するようにすればよい。
【0065】
4.エラー処理
4.1 エラーコードによるエラー処理
上述したように、通常動作はシーケンス命令により記述され、当該シーケンス命令はルールにより1又は複数の条件命令に結びつけられている。よって、通常動作が実行される場合には、1又は複数の条件命令が順に実行されることになる。
【0066】
この条件命令の実行時にエラーが発生した場合には、通常動作の処理を中断して、エラー処理に移行することになる。エラー処理動作も上述のようにシーケンス命令で記述され、ルールにより条件命令と結びつけられている。このとき、エラー処理動作シーケンス命令は、複数記述しておくことが可能であるから、複数のエラー処理動作シーケンス命令のうちどのシーケンス命令を実行すればよいか決定する必要がある。
【0067】
そこで本実施形態では、エラー発生時にエラーコードを生成する。具体的には、ロボット制御装置50においてエラーの内容に従ったエラーコードを生成し、外部I/F部160を介して、処理部120に送信して、処理部120の実行部122で実行される処理をエラーコードに応じたエラー処理動作に切り替えることになる。このようにすることで、複数用意されたエラー処理動作シーケンス命令のうち、エラーの状況に合わせた適切なものを選択、実行することが可能になる。
【0068】
例えば、エラーコードとして0001〜0005の5つのエラーコードを準備しておく。そして、0001に対応するエラー処理動作シーケンス命令としてError0001、0002に対応するエラー処理動作シーケンス命令としてError0002といったように、各エラーコードに対して、エラー処理動作シーケンス命令を準備すればよい。また、1つのエラーコードに対応するエラー処理動作シーケンス命令は1つとは限らない。例えばエラーコード0005が1回目に発生したときにはError0005を実行し、エラーコード0005が2回目に発生したときにはError0005とは別のError0006を実行するといったように、1つのエラーコードに複数のエラー処理動作シーケンス命令を割り当ててもよい。
【0069】
4.2 シミュレーション処理
また、本実施形態においては、上述の手法により記述したシーケンス命令のうち、エラー処理動作シーケンス命令についてシミュレーション処理をおこなうことが可能である。具体的には、処理部120のシミュレーション処理部126において、ロボット制御装置50の制御処理のシミュレーションを行うことになる。
【0070】
シミュレーション処理部126では、通常動作シーケンス命令の実行シミュレーションを行い、実行中にランダムに擬似エラーを発生させる。擬似エラーの発生は任意のタイミングで任意のエラーコードを生成することにより行う。
【0071】
エラーコードを受け取ったら、当該エラーコードに応じたエラー処理動作シーケンス命令を実行する。そして、エラーが発生した状況と、シミュレーションしていた通常動作シーケンス命令が適切に完了した場合に想定される状況及びエラー処理動作シーケンス命令をシミュレーション処理した結果の状況とを考慮して、シミュレーションを行ったエラー処理動作シーケンス命令が適切に記述されているかを判定する。この判定は自律的に行う必要はなく、ユーザーにより判定されればよい。
【0072】
例えば、エラー処理動作シーケンス命令を実行(シミュレーション)した結果、通常動作シーケンス命令の完了時に想定される状況と同じ状況にすることができたなら、当該エラー処理動作シーケンス命令は適切に記述されたものと判断できる。また、ロボットを停止させる、或いは、ロボットを待機位置に戻す等のエラー処理が行われることもある。この場合には、エラー処理動作シーケンス命令の実行目的は、通常動作シーケンス命令の実行と同等の効果を求めるものではなく、安全な停止等を目的としていると考えられる。よって、これらのエラー処理動作シーケンス命令が実行された場合には、エラー発生時の状況がロボットの停止等が必要な状況であったか、エラー処理動作シーケンス命令の実行により、ロボット・ワーク・その他機器を傷つけるようなことなく安全に停止したか等を考慮して、適切なエラー処理動作シーケンス命令であるかの判定を行う。
【0073】
4.3 具体例
次に具体例を用いてエラー処理について説明する。ここでは、通常動作シーケンス命令として「移動する(work,point)」が実行されているときに、ワークの脱落というエラーが発生した場合について考える。
【0074】
この場合、エラーコード0005が返され、エラーコードに対応したエラー処理動作シーケンス命令Error0005が実行されることになる。ここでは、「移動する(work,point)」が完了した場合と同様の状況にすることが可能なエラー処理動作を実行するものとする。そのときに考えられる例としては、図5のError0005に示したように、「近づく(point1)」を初めに実行し、「初期化」の結果とは別の位置であるpoint1にロボットを移動させてから、「近づく(work)」「つかむ(work)」「動かす(point)」「はなす(work)」を実行するシーケンス命令が考えられる。
【0075】
つまりロボットの初期位置(待機位置)であるワークの上方から図6(A)のように近づき、図6(B)のように上方からワークをつかみ、図6(C)のように移動させている途中に、図6(D)のようにワークを脱落するというエラーが発生したとする。この場合に、再度通常動作シーケンス命令(初期化等の5つの条件命令)をそのまま実行したのでは、ワークの落下地点にもよるが、同様の角度からワークを把持し移動することが想定されるため、同じ理由により再度エラーが発生(ワークが脱落)する可能性が高い。よってここでは、まず、「近づく(point1)」を行うことで、ロボットをpoint1(ここでは図6(E)に示したように下に)移動させ、その後、「近づく(work)」を実行し、図6(F)に示したように、上からではなく横からワークをつかむ。このようにすることで、ワークをつかむ角度が変わるため、少なくとも前回と同様の理由によるエラー発生を抑止することが可能になる。
【0076】
上述したように、エラー処理動作シーケンス命令は複数記述しておくことが可能である。ここでは図5に示したように、Error0001として「停止」、Error0002として「初期化」「停止」、Error0003として「移動する(work,point)」、Error0004として「初期化」「移動する(work,point)」が記述されている。例えば、ロボットが何かに衝突し、それ以上の移動等はロボット等の損傷を激しくしかねないというケースではError0001を呼んで即座に停止させることが考えられる。また、停止が望ましい場合でも初期位置に戻すことが可能な場合には、Error0002を呼べばよい。また、とりあえずもう一回試行することも重要なケースがあるため、その場合にはError0003を呼ぶ。Error0004は「移動する(work,point)」の条件命令の最初に「初期化」があるため、この場合はError3と大差ないが、その他のシーケンス命令においては、そのまま再実行したのではロボットの位置が初期位置とは異なることを理由としてうまくいかないケースが考えられる。そのような場合には、ロボットを初期位置に戻してから再実行を行うError0004を呼べばよい。
【0077】
5.処理の詳細
次に本実施形態のロボット制御システムにおいて行われる処理の詳細についてフローチャートを用いて説明する。具体的には、図7を用いて全体の処理について説明した後、図8で動作指示の実行処理について説明する。そして、図9で動作指示の実行処理において行われるシーケンス命令の実行処理について説明する。また、図10を用いてシミュレーション処理部126におけるシミュレーション処理について説明する。
【0078】
図7が、全体の処理を表すフローチャートである。この処理が開始されると、まず記憶部110のデータベースに記憶されたシーケンス命令(命令テーブル113のレコードとして記憶されている)を読み出す(S101)。そして、必要に応じて図3(A)等の画面で編集処理を行い(S102)、記憶部110に記憶する(S103)。シーケンス命令の編集及び保存が完了したら、シーケンス命令の実行処理を行う(S104)。この実行処理はロボットの実機を動作させるものであってもよいし、シミュレーションによる動作確認であってもよい。
【0079】
図8が、動作指示の実行処理を表すフローチャートである。この処理が開始されると、まず動作指示を読み出す(S201)。この動作指示は上述したシナリオ(つまり、1又は複数のシーケンス命令からなる)であってもよい。ここではシナリオであるものとして説明する。シナリオが読み出されると、次に当該シナリオのゴールをシーケンス命令として関連づけているルールを検索する(S202)。例えば、シナリオが「ワークの位置を認識する(work)」「移動する(work,point)」の2つのシーケンス命令からなるとしたら、まず「ワークの位置を認識する(work)」という命令をシーケンス命令として持つルール、及び「移動する(work,point)」という命令をシーケンス命令として持つルールの2つのルールを検索してくることになる。上述の条件を満たすルールがあったかの判定を行い(S203)、ルールがなかった場合には処理を終了する。ルールがあった場合には、ルールの実行処理を行う(S204)。ルールの実行処理とは、当該ルールに結びつけられたシーケンス命令の実行処理のことであり、詳細な処理は図9を用いて後述する。
【0080】
そして、ルールを実行したときにエラーが発生したかの判定を行い(S205)、エラーが発生しなかった場合には処理を終了する。エラーが発生した場合には、エラーコードに対応したゴールをシーケンス命令に持つルールを検索する。例えば、エラーコード0005が送信された場合には、Error0005をシーケンス命令として持つルールが検索されることになる。この場合、エラーコードに対応するゴールをシーケンス命令に持つルールがあったかの判定をS203で行い、あった場合はS204で当該ルールを実行することでエラー処理を行うことになる。なお、エラー処理中にエラーが発生することもあるため、その場合は再度S205、S206等の処理を行うことになる。
【0081】
次に図9を用いてS204のルールの実行処理(シーケンス命令の実行処理)の詳細について説明する。この処理が開始されると、まずシーケンス命令のパラメーターに呼び出し元のパラメーターを代入する。これは、動作指示(シナリオ)において規定されたパラメーターをシーケンス命令のパラメーターとして設定することに相当する。また、S308における再帰呼び出しの場合には、シーケンス命令の実行処理が1又は複数の条件命令の実行処理により行われることになり、シーケンス命令のパラメーターを条件命令のパラメーターとして用いることに相当する。
【0082】
次に変数N(条件命令を表す変数)に1を設定し(S302)、条件Nがあるかの判定を行う(S303)。条件Nがあるかの判定とは、N番目の条件命令が存在するか否かの判定のことである。これ以降も「条件N」とは、N番目の条件命令のことを差すものとして用いる。そして、条件Nをシーケンス命令に持つルールを検索する(S304)。そのようなルールが見つからなかった場合には、条件Nはシーケンス命令としては用いられていない(階層構造においてさらに下位の命令は存在しない)ということであるため、S306もしくはS307において条件Nの実行処理を行う。ここで、S306は実機で動作を行っている場合の例であり、S307がシミュレーターで処理を行っている例である。S306もしくはS307の処理が行われた後は、エラーが発生したかの判定が行われ(S309)、エラーが発生していたらエラーコードを設定し(S311)、処理を終了する。エラーが発生していなければS310に移行する。
【0083】
また、S305において、条件Nをシーケンス命令として持つルールがあった場合には、階層構造においてさらに下位の命令が存在すると言うことであるから、当該下位の命令の実行処理を行うために、ルール実行モジュールを再帰的に呼び出すことになる(S308)。S308の処理の後、或いは上述したS309においてNoと判定された場合には、Nをインクリメントして(S310)、S303に戻る。つまり、ここまでが1番目の条件命令についての処理であり、次にNをインクリメントして2番目の条件命令について処理を開始する。
【0084】
最後に、図10を用いてS307のシミュレーターにおける命令実行処理について説明する。この処理が開始されると、まず乱数を発生させ、当該乱数がエラー発生率より小さいか否かの判定が行われる(S401)。Yesの場合には、処理の戻り値としてエラー発生に相当する値を設定する。それとともに、エラーコードの値を所望の擬似エラーの値(これはランダムに決めてもよい)に設定する(S402)。
【0085】
S401でNoの場合には、シミュレーターの表示部に命令の実行結果を描画し(S403)、処理の戻り値として正常値を設定する(S404)。
【0086】
以上の本実施形態では、ロボット制御システムは、図2に示したようにシーケンス命令を記憶する記憶部110と、記憶部110に記憶されたシーケンス命令の実行処理を行う実行部122を有する処理部120と、処理部120の処理結果に基づいてロボットの制御を行うロボット制御部(ロボット制御装置50)とを含む。そして記憶部110はシーケンス命令として、複数の通常動作シーケンス命令を記憶するとともに、通常動作シーケンス命令と同じ命令体系で記述される複数のエラー処理動作シーケンス命令を記憶する。実行部122は、通常動作時には通常動作シーケンス命令の実行処理を行い、エラー発生時にはエラー状況に応じて選択されたエラー処理動作シーケンス命令の実行処理を行う。
【0087】
ここで、シーケンス命令とは1又は複数の命令により記述される。また、通常動作シーケンス命令とエラー処理動作シーケンス命令とが同じ命令体系により記述されるとは、例えば後述するように共通の命令群を用いて通常動作シーケンス命令とエラー処理動作シーケンス命令の両方を記述可能であることをさす。
【0088】
これにより、複数の命令の集合としてシーケンス命令を設定した上で、当該シーケンス命令として同じ命令体系を用いて通常動作シーケンス命令とエラー処理動作シーケンス命令の両方を記述することが可能になる。さらに、通常動作時には通常動作シーケンス命令を実行し、エラー発生時には複数のエラー処理動作シーケンス命令の中から、エラー状況に応じて選択されたエラー処理動作シーケンス命令の実行処理を行う。よって、複数の命令(上述してきた条件命令)とシーケンス命令との結びつけ(上述してきたルール)により動作指示を記述することができるため、動作指示の体系的な記述が可能になる。その上で、通常動作シーケンス命令とエラー処理動作シーケンス命令とを同じ命令体系で記述することができるため、エラー処理動作が容易且つ柔軟に記述することが可能になる。エラー処理動作の記述が容易であるため、複数通りのエラー処理動作を準備しておくのも容易であり、エラー状況に応じて複数のエラー処理動作の中から適切なものを選択可能になるため、エラー発生時に適切、柔軟な対処ができる。
【0089】
また、記憶部110は、図2に示したように、命令情報と、命令の処理対象を表すパラメーターとを結びつける命令テーブル113を記憶するとともに、シーケンス命令と1又は複数の条件命令とを結びつけるシーケンス命令テーブル115を記憶してもよい。
【0090】
ここで、条件命令とは、命令テーブル113のレコードとして記憶される命令の中から選択されるものである。そして、条件命令とシーケンス命令とは、1又は複数の条件命令を記述された順序に実行することにより、当該条件命令に結びつけられたシーケンス命令が実行されることになるという関係を有する。
【0091】
これにより、図4に示したようなデータベースのうち、命令テーブル113及びシーケンス命令テーブル115を実現することが可能になる。本実施形態においては、シーケンス命令テーブル115により記述される、シーケンス命令と条件命令との結びつけをルールとも呼ぶ。シーケンス命令と条件命令との対応づけをおこなうことにより、動作指示を階層的且つ体系的に記述することが可能になる。
【0092】
また、処理部120は、通常動作時にはシーケンス命令テーブル115と命令テーブル113とを参照して、通常動作シーケンス命令を構成する1又は複数の条件命令を実行する。また、エラー発生時においてもシーケンス命令テーブル115と命令テーブル113とを参照して、エラー処理動作シーケンス命令を構成する1又は複数の条件命令を実行する。
【0093】
これにより、通常動作シーケンス命令とエラー処理動作シーケンス命令を共通の命令群を用いて記述することが可能になる。つまり、命令テーブル113のレコードとして記憶される命令は、通常動作用、エラー処理動作用といった区別はなく、どちらにも用いることが可能である。上述したように、通常動作シーケンス命令とエラー処理動作シーケンス命令が同じ命令体系で記述されるとは、例えばこのように両方のシーケンス命令が共通の命令群に基づいて記述されるということである。
【0094】
また、記憶部110は命令テーブル113に第1〜第M(Mは1以上の整数)の命令レコード(命令)を記憶するとともに、シーケンス命令テーブル115に第1〜第N(Nは2以上の整数)のシーケンス命令レコード(ルール)を記憶する。そして、記憶部110は、第i(iは1≦i≦Nの整数)のシーケンス命令レコードにおいては、第k(kは1≦k≦Mの整数)の命令レコードにより表される前記命令を前記条件命令として記憶するとともに、第j(jは1≦j≦N、i≠jの整数)のシーケンス命令レコードにおいては、前記第kの命令レコードにより表される前記命令を前記シーケンス命令として記憶してもよい。
【0095】
これにより、命令テーブル113のレコードとして記憶された命令は、あるルールにおいてはシーケンス命令として結びつけられ且つ他のルールにおいては条件命令として結びつけられてもよいことになる。よって、2階層にとどまらず、3階層以上の階層構造が可能になる。つまり、あるシーケンス命令に条件命令が結びつけられていたとき、当該条件命令にもシーケンス命令としての属性があり、その下にさらに条件命令が結びつけられるという構成も可能になるということである。図5の例で言えば、「移動する(work,point)」の条件命令として「つかむ(work)」が規定されているが、「つかむ(work)」自身もシーケンス命令であり、条件命令として、「ハンドを開く」「位置調整(work)」「ハンドを閉じる」が結びつけられている。
【0096】
また、記憶部110は、通常動作シーケンス命令として、第1のアプローチ命令、把持命令及びムーブ命令により構成される第1の通常動作シーケンス命令を記憶する。それとともに、エラー処理動作シーケンス命令として、第1のアプローチ命令とは異なる位置にアプローチする第2のアプローチ命令、第1のアプローチ命令、把持命令及びムーブ命令により構成される第1のエラー処理動作シーケンス命令を記憶してもよい。
【0097】
これにより、図6(A)〜図6(F)に示したようなエラー処理が可能になる。これは、通常動作シーケンス命令として、移動する(ワークに近づき、ワークを把持し、動かす)命令があった場合に、その処理の中でエラーが発生した(例えばワークが脱落した等)場合の対処の一例を示すものである。ここでは、第2のアプローチ命令を用いることで、第1のアプローチ命令により指示される位置とは異なる位置にアプローチを行う。このようにすることで、図6(B)、図6(F)に示したようにワークを把持する角度等を通常動作シーケンス命令を実行した場合とは異ならせることが可能になる。よって、少なくとも通常動作シーケンス命令の実行時と同様の理由によるエラーの発生をよくすることができる。
【0098】
また、ロボット制御部(ロボット制御装置50)は、エラー状況に応じたエラーコードを処理部120に出力し、実行部122は、エラーコードに応じたエラー処理動作シーケンス命令の実行処理を行う。
【0099】
これにより、エラーコードを用いることにより、エラー状況に応じた処理を行うことが可能になる。例えば上述したようにエラーコードを0001〜0005の5種類を用意しておき、それぞれにError0001〜Error0005のエラー処理動作シーケンス命令を対応付けておくことにより、5種類のエラー状況に応じてそれぞれ異なったエラー処理を行うことができ、柔軟なエラー処理が可能になる。なお、上述したように、1つのエラーコードに複数のエラー処理動作シーケンス命令を対応付けておき、エラーコードが呼ばれた回数等を用いて実行するエラー処理動作シーケンス命令を選択してもよい。
【0100】
また、処理部120は、図2に示したように通常動作シーケンス命令及びエラー処理動作シーケンス命令の編集処理を行う編集処理部124を含んでもよい。
【0101】
これにより、通常動作シーケンス命令及びエラー処理動作シーケンス命令の編集処理を行うことが可能になる。例えば図3(A)、図3(B)を用いて説明したように、シーケンス命令及び条件命令を命令群(命令テーブル113のレコードとして記憶された命令)の中から選択することにより編集処理を行うことが考えられる。
【0102】
また、編集処理部124は、前回編集処理が行われた通常動作シーケンス命令又はエラー処理動作シーケンス命令において用いられた命令を、今回の通常動作シーケンス命令又はエラー処理動作シーケンス命令の編集処理において用いてもよい。特に、前回編集処理が行われた通常動作シーケンス命令において用いられた命令を今回のエラー処理動作シーケンス命令の編集処理で用いてもよいし、前回編集処理が行われたエラー処理動作シーケンス命令において用いられた命令を今回の通常動作シーケンス命令の編集処理で用いてもよい。
【0103】
これにより、以前に用いた命令をそれ以降のシーケンス命令の編集処理において流用することが可能になる。よって、例えば図3(B)のドロップダウンメニューに示したように、ボタンを押すだけで、以前用いた命令を選択できるようになり、シーケンス命令の編集が容易になる。このとき、通常動作シーケンス命令とエラー処理動作シーケンス命令とが、共通の命令群を用いて記述可能であるという上述してきた特徴があることから、以前の編集対象が通常動作シーケンス命令であるかエラー処理動作シーケンス命令であるか、また、今回の編集対象が通常動作シーケンス命令であるかエラー処理動作シーケンス命令であるかといったことを気にすることなく、編集が可能である。
【0104】
また、処理部120は、図2に示したように、通常動作シーケンス命令及びエラー処理動作シーケンス命令が実行される際のロボット制御部の動作シミュレーション処理を行うシミュレーション処理部126を含んでもよい。
【0105】
これにより、ロボットの実機を動かすことなくエラー処理動作が適切に記述されたか否かを判断することが可能になる。シミュレーション処理部126においてソフトウェア的に処理が行われるため、実機を用いる場合に比べて容易且つ高速に検証が可能である。
【0106】
また、シミュレーション処理部126は、エラー処理の確認用の擬似エラーに対応するエラーコードを発生させてもよい。
【0107】
これにより、シミュレーションにおいてもエラーを発生させ、当該エラーの状況に応じたエラー処理を実行するとともに、実行したエラー処理が適切であるか否かの検証を行うことが可能になる。
【0108】
また、本実施形態は上述のロボット制御システムと、ロボット制御システムにより制御されるロボットとを含むロボットシステムに関係する。
【0109】
これにより、上述してきたロボット制御装置がロボット30を制御することにより、連係して動作を行うロボットシステムを実現することが可能になる。
【0110】
また、本実施形態は図11に示したように、シーケンス命令を記憶する記憶部110と、記憶部110に記憶されたシーケンス命令の実行処理を行う実行部122を有する処理部120と、処理部120の処理結果に基づいてロボットの制御を行うロボット制御部170としてコンピューターを機能させるプログラムに関係する。そして記憶部110はシーケンス命令として、複数の通常動作シーケンス命令を記憶するとともに、通常動作シーケンス命令と同じ命令体系で記述される複数のエラー処理動作シーケンス命令を記憶する。実行部122は、通常動作時には通常動作シーケンス命令の実行処理を行い、エラー発生時にはエラー状況に応じて選択されたエラー処理動作シーケンス命令の実行処理を行う。
【0111】
これにより、ソフトウェア的にロボットを制御する処理を行うプログラムを実現することが可能になる。そして、上記プログラムは、情報記憶媒体180に記録される。ここで、情報記憶媒体180としては、DVDやCD等の光ディスク、光磁気ディスク、ハードディスク(HDD)、不揮発性メモリーやRAM等のメモリーなど、情報処理装置10等によって読み取り可能な種々の記録媒体を想定できる。例えば、図11に示したように、PC等の情報処理装置によって読み取り可能な種々の記録媒体にプログラムが記憶され、処理部120において実行されるケースが考えられる。
【0112】
なお、以上のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語と共に記載された用語は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。またロボット制御システム、ロボットシステム等の構成、動作も本実施形態で説明したものに限定されず、種々の変形実施が可能である。
【符号の説明】
【0113】
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】
1又は複数の命令により記述されるシーケンス命令を記憶する記憶部と、
前記記憶部に記憶された前記シーケンス命令の実行処理を行う実行部を有する処理部と、
前記処理部の処理結果に基づいてロボットの制御を行うロボット制御部と、
を含み、
前記記憶部は、
前記シーケンス命令として、複数の通常動作シーケンス命令と、前記通常動作シーケンス命令の記述に用いられる前記命令と同じ命令体系により記述される複数のエラー処理動作シーケンス命令とを記憶し、
前記実行部は、
通常動作時には前記通常動作シーケンス命令の実行処理を行い、エラー発生時には複数の前記エラー処理動作シーケンス命令の中から、エラー状況に応じて選択されたエラー処理動作シーケンス命令の実行処理を行うことを特徴とするロボット制御システム。
【請求項2】
請求項1において、
前記記憶部は、
前記シーケンス命令の記述に用いられる前記命令に関する情報である命令情報と、前記命令の処理対象を表すパラメーターとを結びつける命令テーブルを記憶するとともに、
前記命令のうち条件命令とシーケンス命令とが、1又は複数の前記条件命令を実行することにより、前記シーケンス命令が実行されるという関係を有する場合に、1又は複数の前記条件命令と、前記シーケンス命令に関する情報とを結びつけるシーケンス命令テーブルを記憶することを特徴とするロボット制御システム。
【請求項3】
請求項2において、
前記処理部は、
前記通常動作時は、前記シーケンス命令テーブル及び前記命令テーブルを参照して、前記通常動作シーケンス命令を構成する1又は複数の条件命令を実行し、
前記エラー発生時においても、前記シーケンス命令テーブル及び前記命令テーブルを参照して、前記エラー処理動作シーケンス命令を構成する1又は複数の条件命令を実行することを特徴とするロボット制御システム。
【請求項4】
請求項2又は3において、
前記記憶部は、
前記命令テーブルに第1〜第M(Mは1以上の整数)の命令レコードを記憶するとともに、前記シーケンス命令テーブルに第1〜第N(Nは2以上の整数)のシーケンス命令レコードを記憶し、
前記記憶部は、
第i(iは1≦i≦Nの整数)のシーケンス命令レコードにおいては、第k(kは1≦k≦Mの整数)の命令レコードにより表される前記命令を前記条件命令として記憶するとともに、第j(jは1≦j≦N、i≠jの整数)のシーケンス命令レコードにおいては、前記第kの命令レコードにより表される前記命令を前記シーケンス命令として記憶することを特徴とするロボット制御システム。
【請求項5】
請求項1乃至4のいずれかにおいて、
前記記憶部は、
前記通常動作シーケンス命令として、第1のアプローチ命令、把持命令及びムーブ命令により構成される第1の通常動作シーケンス命令を記憶するとともに、前記エラー処理動作シーケンス命令として、前記第1のアプローチ命令とは異なる位置にアプローチする第2のアプローチ命令、前記第1のアプローチ命令、前記把持命令及び前記ムーブ命令により構成される第1のエラー処理動作シーケンス命令を記憶することを特徴とするロボット制御システム。
【請求項6】
請求項1乃至5のいずれかにおいて、
前記ロボット制御部は、
前記エラー状況に応じたエラーコードを前記処理部に出力し、
前記実行部は、
前記エラーコードに応じた前記エラー処理動作シーケンス命令の実行処理を行うことを特徴とするロボット制御システム。
【請求項7】
請求項1乃至6のいずれかにおいて、
前記処理部は、
前記通常動作シーケンス命令及び前記エラー処理動作シーケンス命令の編集処理を行う編集処理部を含むことを特徴とするロボット制御システム。
【請求項8】
請求項7において、
前記編集処理部は、
前回に編集処理が行われた前記通常動作シーケンス命令又は前記エラー処理動作シーケンス命令において用いられた前記命令を、今回の通常動作シーケンス命令又は他のエラー処理動作シーケンス命令の編集処理において用いることを特徴とするロボット制御システム。
【請求項9】
請求項8において、
前記編集処理部は、
前回に編集処理が行われた前記通常動作シーケンス命令において用いられた前記命令を、今回のエラー処理動作シーケンス命令の編集処理において用いることを特徴とするロボット制御システム。
【請求項10】
請求項8又は9において、
前記編集処理部は、
前回に編集処理が行われた前記エラー処理動作シーケンス命令において用いられた前記命令を、今回の通常動作シーケンス命令の編集処理において用いることを特徴とするロボット制御システム。
【請求項11】
請求項1乃至10のいずれかにおいて、
前記処理部は、
前記通常動作シーケンス命令及び前記エラー処理動作シーケンス命令が実行される際の前記ロボット制御部の動作シミュレーション処理を行うシミュレーション処理部を含むことを特徴とするロボット制御システム。
【請求項12】
請求項11において、
前記シミュレーション処理部は、
エラー処理の確認用の擬似エラーに対応するエラーコードを発生させることを特徴とするロボット制御システム。
【請求項13】
請求項1乃至12のいずれかに記載のロボット制御システムと、
前記ロボット制御システムにより制御されるロボットと、
を含むことを特徴とするロボットシステム。
【請求項14】
1又は複数の命令により記述されるシーケンス命令を記憶する記憶部と、
前記記憶部に記憶された前記シーケンス命令の実行処理を行う実行部を有する処理部と、
前記処理部の処理結果に基づいてロボットの制御を行うロボット制御部として、
コンピューターを機能させ、
前記記憶部は、
前記シーケンス命令として、複数の通常動作シーケンス命令と、前記通常動作シーケンス命令の記述に用いられる前記命令と同じ命令体系により記述される複数のエラー処理動作シーケンス命令とを記憶し、
前記実行部は、
通常動作時には前記通常動作シーケンス命令の実行処理を行い、エラー発生時には複数の前記エラー処理動作シーケンス命令の中から、エラー状況に応じて選択されたエラー処理動作シーケンス命令の実行処理を行うことを特徴とするプログラム。
【請求項1】
1又は複数の命令により記述されるシーケンス命令を記憶する記憶部と、
前記記憶部に記憶された前記シーケンス命令の実行処理を行う実行部を有する処理部と、
前記処理部の処理結果に基づいてロボットの制御を行うロボット制御部と、
を含み、
前記記憶部は、
前記シーケンス命令として、複数の通常動作シーケンス命令と、前記通常動作シーケンス命令の記述に用いられる前記命令と同じ命令体系により記述される複数のエラー処理動作シーケンス命令とを記憶し、
前記実行部は、
通常動作時には前記通常動作シーケンス命令の実行処理を行い、エラー発生時には複数の前記エラー処理動作シーケンス命令の中から、エラー状況に応じて選択されたエラー処理動作シーケンス命令の実行処理を行うことを特徴とするロボット制御システム。
【請求項2】
請求項1において、
前記記憶部は、
前記シーケンス命令の記述に用いられる前記命令に関する情報である命令情報と、前記命令の処理対象を表すパラメーターとを結びつける命令テーブルを記憶するとともに、
前記命令のうち条件命令とシーケンス命令とが、1又は複数の前記条件命令を実行することにより、前記シーケンス命令が実行されるという関係を有する場合に、1又は複数の前記条件命令と、前記シーケンス命令に関する情報とを結びつけるシーケンス命令テーブルを記憶することを特徴とするロボット制御システム。
【請求項3】
請求項2において、
前記処理部は、
前記通常動作時は、前記シーケンス命令テーブル及び前記命令テーブルを参照して、前記通常動作シーケンス命令を構成する1又は複数の条件命令を実行し、
前記エラー発生時においても、前記シーケンス命令テーブル及び前記命令テーブルを参照して、前記エラー処理動作シーケンス命令を構成する1又は複数の条件命令を実行することを特徴とするロボット制御システム。
【請求項4】
請求項2又は3において、
前記記憶部は、
前記命令テーブルに第1〜第M(Mは1以上の整数)の命令レコードを記憶するとともに、前記シーケンス命令テーブルに第1〜第N(Nは2以上の整数)のシーケンス命令レコードを記憶し、
前記記憶部は、
第i(iは1≦i≦Nの整数)のシーケンス命令レコードにおいては、第k(kは1≦k≦Mの整数)の命令レコードにより表される前記命令を前記条件命令として記憶するとともに、第j(jは1≦j≦N、i≠jの整数)のシーケンス命令レコードにおいては、前記第kの命令レコードにより表される前記命令を前記シーケンス命令として記憶することを特徴とするロボット制御システム。
【請求項5】
請求項1乃至4のいずれかにおいて、
前記記憶部は、
前記通常動作シーケンス命令として、第1のアプローチ命令、把持命令及びムーブ命令により構成される第1の通常動作シーケンス命令を記憶するとともに、前記エラー処理動作シーケンス命令として、前記第1のアプローチ命令とは異なる位置にアプローチする第2のアプローチ命令、前記第1のアプローチ命令、前記把持命令及び前記ムーブ命令により構成される第1のエラー処理動作シーケンス命令を記憶することを特徴とするロボット制御システム。
【請求項6】
請求項1乃至5のいずれかにおいて、
前記ロボット制御部は、
前記エラー状況に応じたエラーコードを前記処理部に出力し、
前記実行部は、
前記エラーコードに応じた前記エラー処理動作シーケンス命令の実行処理を行うことを特徴とするロボット制御システム。
【請求項7】
請求項1乃至6のいずれかにおいて、
前記処理部は、
前記通常動作シーケンス命令及び前記エラー処理動作シーケンス命令の編集処理を行う編集処理部を含むことを特徴とするロボット制御システム。
【請求項8】
請求項7において、
前記編集処理部は、
前回に編集処理が行われた前記通常動作シーケンス命令又は前記エラー処理動作シーケンス命令において用いられた前記命令を、今回の通常動作シーケンス命令又は他のエラー処理動作シーケンス命令の編集処理において用いることを特徴とするロボット制御システム。
【請求項9】
請求項8において、
前記編集処理部は、
前回に編集処理が行われた前記通常動作シーケンス命令において用いられた前記命令を、今回のエラー処理動作シーケンス命令の編集処理において用いることを特徴とするロボット制御システム。
【請求項10】
請求項8又は9において、
前記編集処理部は、
前回に編集処理が行われた前記エラー処理動作シーケンス命令において用いられた前記命令を、今回の通常動作シーケンス命令の編集処理において用いることを特徴とするロボット制御システム。
【請求項11】
請求項1乃至10のいずれかにおいて、
前記処理部は、
前記通常動作シーケンス命令及び前記エラー処理動作シーケンス命令が実行される際の前記ロボット制御部の動作シミュレーション処理を行うシミュレーション処理部を含むことを特徴とするロボット制御システム。
【請求項12】
請求項11において、
前記シミュレーション処理部は、
エラー処理の確認用の擬似エラーに対応するエラーコードを発生させることを特徴とするロボット制御システム。
【請求項13】
請求項1乃至12のいずれかに記載のロボット制御システムと、
前記ロボット制御システムにより制御されるロボットと、
を含むことを特徴とするロボットシステム。
【請求項14】
1又は複数の命令により記述されるシーケンス命令を記憶する記憶部と、
前記記憶部に記憶された前記シーケンス命令の実行処理を行う実行部を有する処理部と、
前記処理部の処理結果に基づいてロボットの制御を行うロボット制御部として、
コンピューターを機能させ、
前記記憶部は、
前記シーケンス命令として、複数の通常動作シーケンス命令と、前記通常動作シーケンス命令の記述に用いられる前記命令と同じ命令体系により記述される複数のエラー処理動作シーケンス命令とを記憶し、
前記実行部は、
通常動作時には前記通常動作シーケンス命令の実行処理を行い、エラー発生時には複数の前記エラー処理動作シーケンス命令の中から、エラー状況に応じて選択されたエラー処理動作シーケンス命令の実行処理を行うことを特徴とするプログラム。
【図1】
【図2】
【図4】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図3】
【図5】
【図2】
【図4】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図3】
【図5】
【公開番号】特開2012−232363(P2012−232363A)
【公開日】平成24年11月29日(2012.11.29)
【国際特許分類】
【出願番号】特願2011−100843(P2011−100843)
【出願日】平成23年4月28日(2011.4.28)
【出願人】(000002369)セイコーエプソン株式会社 (51,324)
【Fターム(参考)】
【公開日】平成24年11月29日(2012.11.29)
【国際特許分類】
【出願日】平成23年4月28日(2011.4.28)
【出願人】(000002369)セイコーエプソン株式会社 (51,324)
【Fターム(参考)】
[ Back to top ]