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