(57)【要約】【課題】指定する優先項目の評価値が高いシナリオを選出して実行できるロボット制御方法を実現する。【解決手段】ロボット制御方法は、少なくとも一つのロボット動作命令を含む複数のシナリオを取得することと、設定された優先項目に基づき前記複数のシナリオから一つのシナリオを選出することと、選出された前記シナリオに基づき動作命令を出力し、前記ロボットを動作させること、を含む。このようなロボット制御方法によれば、優先項目の評価値が高いシナリオを選出して実行し、動作の優先項目が複数ある場合にも最も適切なシナリオを選出できる。【選択図】図４
2013158869.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも一つのロボット動作命令を含む複数のシナリオが格納されるデータベースと、
ロボット動作のゴールに対応して設定される優先項目の設定手段と、
設定された前記優先項目に基づき前記複数のシナリオから一つのシナリオを選出するシナリオ選出手段と、
選出された前記シナリオに基づき動作命令を出力する命令実行手段と、
を備えていること、
を特徴とするロボット制御装置。
【請求項２】
前記データベースは、前記ロボット動作命令に対応するロボット動作情報を格納し、
前記シナリオ選出手段は、設定された前記優先項目と、前記ロボット動作命令に対応するロボット動作情報とに基づき前記複数のシナリオから一つのシナリオを選出すること、
を特徴とする請求項１に記載のロボット制御装置。
【請求項３】
ロボット動作の前記ゴールを実現するシナリオを前記複数のシナリオから検出する検出手段を更に備えていること、
を特徴とする請求項１または請求項２に記載のロボット制御装置。
【請求項４】
前記シナリオ選出手段は、
前記優先項目に基づき前記シナリオの評価値を算出するシナリオ評価値計算手段と、
前記複数のシナリオから、前記ゴールとマッチングする前記評価値の高いシナリオを選出するシナリオマッチング手段と、
を有していること、
を特徴とする請求項１ないし請求項３のいずれか一項に記載のロボット制御装置。
【請求項５】
前記優先項目には、前記ロボット動作の安全性を表す安全評価値と、前記ロボット動作の効率性を表す効率評価値と、前記ロボット動作の成功率を表す成功評価値と、のいずれかが含まれていること、
を特徴とする請求項１ないし請求項４のいずれか一項に記載のロボット制御装置。
【請求項６】
前記安全評価値は、前記ロボット動作の動作範囲における要注意範囲と、前記ロボット動作の動作平均速度を用いて算出されること、
を特徴とする請求項１ないし請求項５のいずれか一項に記載のロボット制御装置。
【請求項７】
前記効率評価値は、前記ロボット動作の動作平均速度と前記ロボット動作の動作距離とを用いて算出されること、
を特徴とする請求項１ないし請求項６のいずれか一項に記載のロボット制御装置。
【請求項８】
前記成功評価値は、前記ゴールの実行に必要な命令数と、前記成功率とを用いて算出されること、
を特徴とする請求項１ないし請求項７のいずれか一項に記載のロボット制御装置。
【請求項９】
前記命令実行手段によるロボット動作の実行後のデータに基づき、前記ロボット動作命令に対応するロボット動作情報が更新されること、
を特徴とする請求項１ないし請求項８のいずれか一項に記載のロボット制御装置。
【請求項１０】
少なくとも一つのロボット動作命令を含む複数のシナリオが格納されるデータベースと、
ロボット動作のゴールに対応して設定される優先項目の設定手段と、
設定された前記優先項目に基づき前記複数のシナリオから一つのシナリオを選出するシナリオ選出手段と、
選出された前記シナリオに基づき動作命令を出力する命令実行手段と、
を備えていること、
を特徴とするロボットシステム。
【請求項１１】
少なくとも一つのロボット動作命令を含む複数のシナリオを取得することと、
設定された優先項目に基づき前記複数のシナリオから一つのシナリオを選出することと、
選出された前記シナリオに基づき動作命令を出力し、前記ロボットを動作させること、
を含むことを特徴とするロボット制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボット制御装置、このロボット制御装置を備えるロボットシステム、及びロボット制御方法に関する。
【背景技術】
【０００２】
ロボットの動作を制御するためには、動作する外部環境とロボット自身の特性とを組み合わせて動作目的に適した制御プログラムを用いて制御を行う必要がある。
【０００３】
そこで、ロボットの機体動作を記述する複数の行動記述部と、機体の外部環境を認識する外部環境認識部と、認識された外部環境や行動の実行結果に応じた内部状態を管理する内部状態管理部と、外部環境や内部状態に応じて各行動記述部に記述された行動の実行を評価する行動評価部と、を備えるロボットの制御システムが提案されている（例えば、特許文献１参照）。
【０００４】
また、ロボットのプログラムに対して、ある区間の動作条件を含む命令を追加しようとする時、その動作条件と競合する命令がプログラム中に既存の場合には、競合する条件の全てについて表示することで、条件の競合を容易に確認できるロボットのプログラム制御方法がある（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００３−３３４７８５号公報
【特許文献２】特開２００２−１２７０５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述した特許文献１では、視覚や聴覚などの外部環境の認識結果や情動などのロボットの内部状態などからロボットがおかれている状況を統合的に判断して、次の行動を選出するものであって、多くの外部環境の認識情報を基に実行した行動を評価し、次の行動を制御するため、その統合的判断は非常に複雑になることから行動統制がとりにくく、動作の優先順位に沿った動作をさせることは困難である。
【０００７】
また。特許文献２では、ロボットの動作制御プログラムにおいて、動作区間内の競合条件が複数ある場合に、それを表示することで競合を回避することを容易にするプログラム制御方法であるが、プログラム入力者の判断によりプログラミングが行われる。従って、動作の優先項目が複数ある場合には複雑な判断が必要となるという課題がある。
【課題を解決するための手段】
【０００８】
本発明は、上述の課題の少なくとも一部を解決するためになされたものであり、以下の形態または適用例として実現することが可能である。
【０００９】
［適用例１］本適用例に係るロボット制御装置は、少なくとも一つのロボット動作命令を含む複数のシナリオが格納されるデータベースと、ロボット動作のゴールに対応して設定される優先項目の設定手段と、設定された前記優先項目に基づき前記複数のシナリオから一つのシナリオを選出するシナリオ選出手段と、選出された前記シナリオに基づき動作命令を出力する命令実行手段と、を備えていること、を特徴とする。
【００１０】
ここで、ゴールとはロボットが実行する内容であって、例えば、「ワークＷを位置ＸＳからＸＥまで移動させる」というようなロボットの動作目的を意味する。
また、シナリオとはゴールを実現させるためのルールであって、例えば、ワークＷをスタート位置ＸＳから終点位置ＸＥまで直線的に移動させる、あるいは、中間位置Ｘ１または中間位置Ｘ２を経由して終点位置ＸＥまで移動させるというように、同じゴールを実現するためのルールである。
また、優先項目とは、ゴールの実現のために重要視するシナリオの条件である。
【００１１】
本適用例によれば、複数のシナリオからゴールを実現するための優先項目を設定し、優先項目に基づき、複数のシナリオの中から一つの最適なシナリオを選出し、ロボットを動作させることができる。
【００１２】
［適用例２］上記適用例に係るロボット制御装置において、前記データベースは、前記ロボット動作命令に対応するロボット動作情報を格納し、前記シナリオ選出手段は、設定された前記優先項目と、前記ロボット動作命令に対応するロボット動作情報とに基づき前記複数のシナリオから一つのシナリオを選出すること、が好ましい。
ここで、ロボット動作情報とは、例えば、シナリオ実行に要する時間、平均速度、成功率である。
【００１３】
このように、ロボット動作情報に基づきシナリオを選出すれば、動作効率のよいシナリオを選出してロボットを動作させることができる。
【００１４】
［適用例３］上記適用例に係るロボット制御装置において、ロボット動作の前記ゴールを実現するシナリオを前記複数のシナリオから検出する検出手段を更に備えていること、が好ましい。
【００１５】
ロボット動作のゴールを実現するシナリオが複数存在する場合（仮に、シナリオＡ群とする）、まず、このシナリオ群を検出し、このシナリオＡ群から前述した優先項目、ロボット動作情報に基づき一つのシナリオを選出すれば、効率よく最適シナリオを選出できる。
【００１６】
［適用例４］上記適用例に係るロボット制御装置において、前記シナリオ選出手段は、前記優先項目に基づき前記シナリオの評価値を算出するシナリオ評価値計算手段と、前記複数のシナリオから、前記ゴールとマッチングする前記評価値の高いシナリオを選出するシナリオマッチング手段と、を有していること、が好ましい。
【００１７】
このような構成によれば、シナリオ評価値計算手段によって評価値を計算し、優先項目に従ってゴールを実現するシナリオをデータベースに格納される複数のシナリオの中から選出し、評価値が高いシナリオで動作を実行させる。従って、ゴール実現のためにユーザーにとって最も適切なシナリオによって動作を実行させることができる。
【００１８】
［適用例５］上記適用例に係るロボット制御装置において、前記優先項目には、前記ロボット動作の安全性を表す安全評価値と、前記ロボット動作の効率性を表す効率評価値と、前記ロボット動作の成功率を表す成功評価値と、のいずれかが含まれていること、が好ましい。
【００１９】
このように、安全評価値、効率評価値、成功評価値によってシナリオを評価し、優先項目の評価値が高いシナリオを選出すれば、効率的で安全性が高いロボット動作を実行させることができる。
【００２０】
［適用例６］上記適用例に係るロボット制御装置において、前記安全評価値は、前記ロボット動作の動作範囲における要注意範囲と、前記ロボット動作の動作平均速度を用いて算出されること、が好ましい。
【００２１】
ここで、要注意範囲とは、例えば、ロボットの動作範囲に障害物がある範囲や操作者の作業範囲等であり、安全性を優先する場合、このような要注意範囲を回避して動作を実行させなければならない。よって、要注意範囲と動作平均速度を用いて算出した安全評価値を優先項目に指定すれば、安全性を重視したシナリオを選出できる。
【００２２】
［適用例７］上記適用例に係るロボット制御装置において、前記効率評価値は、前記ロボット動作の動作平均速度と前記ロボット動作の動作距離とを用いて算出されること、が好ましい。
【００２３】
ここで、効率は、ゴールの実行タクトタイムとして評価する。従って、ロボット動作の動作平均速度と動作距離とを用いて算出した効率評価値を優先項目にすれば、効率性を重視した動作を実行させることができる。
【００２４】
［適用例８］上記適用例に係るロボット制御装置において、前記成功評価値は、前記ゴールの実行に必要な命令数と、前記成功率とを用いて算出されること、が好ましい。
【００２５】
例えば、ワークＷをスタート位置ＸＳで掴む、終点位置ＸＥまで移動させ、終点位置ＸＥでワークＷを離す、等のシナリオが複数ある場合、それぞれのシナリオで作業の成功率が異なる。従って、成功評価値を重視したシナリオを選出すれば、作業エラーが少ない動作を実行させることができる。
【００２６】
［適用例９］上記適用例に係るロボット制御装置において、前記命令実行手段によるロボット動作の実行後のデータに基づき、前記ロボット動作命令に対応するロボット動作情報が更新されること、が好ましい。
【００２７】
このようにすれば、繰り返し動作のなかで得られたロボット動作情報をデータベースに追加または更新することにより、常に最適なシナリオを選出して動作を実行させることができる。
【００２８】
［適用例１０］本適用例に係るロボットシステムは、少なくとも一つのロボット動作命令を含む複数のシナリオが格納されるデータベースと、ロボット動作のゴールに対応して設定される優先項目の設定手段と、設定された前記優先項目に基づき前記複数のシナリオから一つのシナリオを選出するシナリオ選出手段と、選出された前記シナリオに基づき動作命令を出力する命令実行手段と、を備えていることを特徴とする。
【００２９】
本適用例によれば、複数のシナリオからゴールを実現するための優先項目を設定し、優先項目に基づき、複数のシナリオの中から一つの最適なシナリオを選出し、ロボットを動作させることができる。
【００３０】
［適用例１１］本適用例に係るロボット制御方法は、少なくとも一つのロボット動作命令を含む複数のシナリオを取得することと、設定された優先項目に基づき前記複数のシナリオから一つのシナリオを選出することと、選出された前記シナリオに基づき動作命令を出力し、前記ロボットを動作させること、を特徴とする。
【００３１】
本適用例によれば、優先項目に基づき複数のシナリオから最適なシナリオを選出し、ロボットを動作させることから、指定する優先項目に対応した最適なシナリオを選出して実行させること、優先順位の高いシナリオを選出して実行させることが可能なロボットシステムを実現できる。
【図面の簡単な説明】
【００３２】
【図１】ロボットシステムの構成を示すブロック図。
【図２】１本アームを有するロボットを模式的に示す正面図。
【図３】２本アームを有するロボットを模式的に示す正面図。
【図４】ロボット制御方法の流れを示すフローチャート。
【図５】シナリオＡ群の検出処理の流れを示すフローチャート。
【図６】シナリオＳの選出処理の流れを示すフローチャート。
【図７】評価値計算の処理の流れを示すフローチャート。
【図８】実施例１に係るロボットの制御方法の１例を模式的に示す説明図。
【図９】実施例２に係るロボットの制御方法の１例を模式的に示す説明図。
【発明を実施するための形態】
【００３３】
以下、本発明の実施の形態を図面を参照して説明する。
なお、以下の説明で参照する図は、各部材を認識可能な大きさとするため、各部材ないし部分の縦横の縮尺は実際のものとは異なる模式図である。
（ロボットシステム）
【００３４】
まず、ロボットシステム１００の構成について説明する。
図１は、ロボットシステム１００の構成を示すブロック図である。ロボットシステム１００は、ロボット制御装置１０とロボット１２０とを備えている。本実施例におけるロボット制御装置１０は、ＰＣ（Personal Computer）であって、ＣＰＵ、ＲＡＭ、ＲＯＭ等を備えた制御部１１と、データベース３０と、外部の機器と通信するためのＵＳＢ（Universal Serial Bus）等の外部Ｉ／Ｆ等を備えている。制御部１１は、マウスやキーボード等の操作部４００と、モニター等の表示部３００と、外部Ｉ／Ｆを介して接続している。
【００３５】
ユーザーは操作部４００を操作してロボット制御装置１０に指示を与えることができるとともに、ロボット制御装置１０が表示する各種の情報を表示部３００によって認識することができる。ロボット制御装置１０は、ＲＯＭやＨＤＤに記憶された各種のプログラムをＲＡＭにロードしＣＰＵで実行することができる。本実施例ではこのプログラムの一つとして制御部１１がロボット制御プログラム１２を実行することにより、ロボット制御装置１０として機能させることができる。ロボット制御装置１０は外部Ｉ／Ｆを介してロボット１２０と各種信号を送受信することができる。
【００３６】
ロボット制御プログラム１２は、シナリオ取得手段としてのシナリオ取得部１３、シナリオ選出手段としてのシナリオ選出部１４、命令実行手段としての命令実行部１５、等のプログラムを備える。
【００３７】
シナリオ取得部１３は、シナリオ作成者が作成したシナリオを示すデータを取得する機能を有する。本実施例においてシナリオは、ロボット１２０に実行させる複数の命令を直列的な実行順を指定して並べたルールである。例えばシナリオ作成者が操作部４００を操作して作成した複数のシナリオを示すデータを、シナリオ取得部１３で取得する。
【００３８】
シナリオ選出部１４は、指定された優先項目に基づき前述した複数のシナリオの評価値を計算するシナリオ評価値計算部１４ａと、シナリオ評価値計算部１４ａによって得られた評価値とゴールとがマッチングする一つのシナリオを選出するシナリオマッチング部１４ｂとを備える。優先項目には、安全性、効率性、成功率等の評価項目が含まれる。
なお、
【００３９】
データベース３０は、取得した複数のシナリオを格納するライブラリー３１と、シナリオを選出するための情報を格納するシナリオ選出情報３２と、を備える。シナリオ選出情報３２には、前述した優先項目のうちの成功率が含まれる。
命令実行部１５は、選出されたシナリオに基づきロボット１２０の動作命令を出力する。
【００４０】
ロボット１２０は、アームとアームコントローラーとを備え、図１は２本のアームを有するロボット１２０を例示しており、一方のアームを右アーム２３、他方のアームを左アーム２４とする。そして、右アーム２３を制御するコントローラーをアームコントローラー２１、左アーム２４を制御するコントローラーをアームコントローラー２２とする。
なお、アームが１本構成のロボット２０は、右アーム２３とアームコントローラー２１とから構成される。
（ロボットの構成）
【００４１】
ロボットには、アームが複数の場合、１本の場合があるが、以降、１本アームの場合と、２本アームの場合を例示して説明する。
図２は、１本アームを有するロボット２０を模式的に示す正面図である。ロボット２０は、基部２０３と、右アーム２３とを備えている。右アーム２３は、腕部２００や関節部２０１やロボットハンド２０２等を備えた所謂ロボットアームであり、動作対象物（以降、ワークＷと表す）を「掴む」ことや「放す」こと、また、ワークを所定の位置に「移動させる」こと等の動作を、ロボット制御装置１０からの指示に応じて行う動作主体である。
【００４２】
それらの動作を行うために右アーム２３は各種の駆動部品を備えている。アームコントローラー２１（図１、参照）は、ロボット制御装置１０から指示された命令に応じて対応する右アーム２３を動作させるために各駆動部品の制御を行うとともに、命令に対応する動作が完了したことをロボット制御装置１０に通知し、動作実行後のデータはライブラリー３１（図１、参照）に格納される。
【００４３】
図２に示す基部２０３は、右アーム２３を間接的に支持し、ロボット制御装置１０はこの基部２０３の内部に設けられていても良く、あるいは、ロボット２０とは別体に設けられていてもよい。
【００４４】
図３は、２本アームを有するロボット１２０を模式的に示す正面図である。ロボット１２０は、基部２０３と、右アーム２３と、左アーム２４とを備えている。右アーム２３の構成は１本アーム構造（図２、参照）と同じであって、左アーム２４は、腕部２１０や関節部２１１やロボットハンド２１２等をそれぞれに備えたロボットアームであり、ワークを「掴む」ことや「放す」こと、また、ワークを所定の動作位置に「移動させる」こと等の動作を、ロボット制御装置１０からの指示に応じて行う動作主体である。
【００４５】
それらの動作を行うために右アーム２３および左アーム２４は各種の駆動部品を備えている。アームコントローラー２１は、ロボット制御装置１０から指示された命令に応じて対応する右アーム２３を動作させるために各駆動部品の制御を行うとともに、命令に対応する動作が完了したことをロボット制御装置１０に通知する。アームコントローラー２２も同様に、ロボット制御装置１０から指示された命令に応じて対応する左アーム２４を動作させるために駆動部品の制御を行うとともに、命令に対応する動作が完了したことをロボット制御装置１０に通知する。動作実行後のデータはライブラリー３１に格納される。
【００４６】
基部２０３は、右アーム２３及び左アーム２４を間接的に支持し、ロボット制御装置１０はこの基部２０３の内部に設けられていても良く、あるいは、ロボット１２０とは別体に設けられていてもよい。
（ロボット制御方法）
【００４７】
続いて、ロボット制御方法について説明する。
図４は、ロボット制御方法の流れを示すフローチャートである。なお、ロボット制御方法の流れは、１本アームのロボット２０と、２本アームのロボット１２０とは共通に説明できる。まず、ゴールＧを入力する（Ｓ１）。ここでゴールＧとは、ロボット２０，１２０に所定の作業を行わせるため命令である。例えば、「ワークＷをＸＳ位置からＸＥ位置まで移動させる」というような作業目的と置き換えることができる。
【００４８】
次に、優先項目の設定手段により優先項目Ｐを入力する（Ｓ２）。優先項目Ｐは、安全性を優先するか、効率性を優先するか、作業の成功率を優先するか、等から１項目または複数項目を選択して入力する。優先項目の設定手段は、操作部４００に含まれるユーザーインターフェイスである。なお、優先項目Ｐは、優先順位をつけて複数設定することができる。
【００４９】
次に、シナリオＡ群を検出する（Ｓ３）。シナリオＡ群とは、ライブラリー３１に格納されている多数のシナリオ（例えば、１００個）の中の前述したゴールＧを実現可能な複数の個別シナリオの群である。つまり、ゴールＧを実現するシナリオは複数存在している。検出したシナリオＡ群を予め設定されている優先項目Ｐに基づき評価値計算を行い（Ｓ４）、評価値が高いシナリオＳを選出し（Ｓ５）、このシナリオＳを実行し（Ｓ６）、ロボット２０（またはロボット１２０）を動作させる。
【００５０】
ロボット制御装置１０では、シナリオＳの実行を常時監視し、データベース（ＤＢ）３０に各検出情報を記録する（Ｓ７）。各検出情報としては、実行されたたシナリオの回数、そのシナリオ内で実行された命令、その命令の開始／終了時間、実行結果、操作者、等を含む。このように、データベース３０のライブラリー３１には常に、過去のシナリオ実行に関わる情報に新しい情報を加えていく。
【００５１】
次に、シナリオＡ群の検出方法について説明する。
図５は、シナリオＡ群の検出処理の流れを示すフローチャートである。まず、ゴールＧの入力後、ライブラリー３１にシナリオＮが存在しているかチェックする（Ｓ１０）。つまり、シナリオＮが少なくとも一つ格納されていることをチェックする。そしてシナリオ［Ｎ］が存在するか判断する（Ｓ１１）。シナリオ［Ｎ］が存在しない場合（Ｎｏ）には、シナリオによる動作が不可能なため処理は行わず初期に戻る（Ｓ１５）。つまり、このような場合には、ゴールＧを実現するシナリオをライブラリーに入力しなければならない。シナリオ［Ｎ］がライブラリー３１に存在する（Ｙｅｓ）場合には、このシナリオ［Ｎ］がゴールＧとマッチングするか判定する（Ｓ１２）。そして、このシナリオ［Ｎ］がゴールＧとマッチングした場合にはシナリオＡ群にシナリオ［Ｎ］を追加する（Ｓ１３）。つまりシナリオ［Ｎ］に、シナリオを新たに１個追加し更新する（Ｓ１４）。このように、シナリオＮの検出とシナリオＡ群に追加したシナリオ（Ｎプラス）とゴールＧとのマッチングを繰り返す。
【００５２】
ステップ：Ｓ１２において、シナリオ［Ｎ］とゴールＧとがマッチングしなかった場合（Ｎｏ）には、検出するシナリオＮの次のシナリオＮ＋１とのマッチング判定を行う。このようにしてシナリオＡ群を更新しながらゴールＧとマッチングするシナリオＡ群を検出する。
【００５３】
次に、実行可能なシナリオＳの選出方法について説明する。
図６は、シナリオＳの選出処理の流れを示すフローチャートである。まず、シナリオＡ群の検出フロー（Ｓ１４、図５参照）でライブラリー３１にはシナリオＮが少なくとも１個あり、前述した優先項目Ｐに対応する最大評価値＝０の場合（Ｓ３１）、シナリオＡ群のシナリオ［Ｎ］が存在するか判定する（Ｓ３２）。最大評価値＝０とは、過去に評価値を計算したデータが無いことを意味する。
【００５４】
シナリオＡ群のシナリオ［Ｎ］がある場合（Ｙｅｓ）には、優先項目Ｐに基づきこのシナリオ［Ｎ］の評価値計算を行う（Ｓ３３）。そして、計算した評価値が最大評価値よりも大きいか判定する（Ｓ３４）。評価値＞最大評価値となる場合（Ｙｅｓ）には、シナリオ［Ｎ］が実行すべきシナリオＳに相当し、このシナリオの評価値が最大評価値であると判断する（Ｓ３５）。このようにして得られた最大評価値はシナリオＡ群の最大評価値としてライブラリー３１内に１個追加し更新する（Ｓ３６）。
このようにしてシナリオＡ群のシナリオＳを選出し、ライブラリーを更新することを繰り返す。
【００５５】
なお、ステップ：Ｓ３２においてシナリオＡ群のシナリオ［Ｎ］が無いと判定した場合（Ｎｏ）には、実行可能なシナリオＳが存在しないので選出処理は行わずに初期状態に戻る（Ｓ３７）。また、ステップ：Ｓ３４において評価値＞最大評価値が得られなかった場合（Ｎｏ）、ステップ：Ｓ３６に移行する。
【００５６】
次に、評価値計算方法について説明する。
図７は、評価値計算の処理の流れを示すフローチャートである。まず、シナリオＡ群を検出（ステップ：Ｓ３，図４参照）した後、シナリオＡ群に含まれる各シナリオＮによるシミュレーションを行い（Ｓ２０）、安全、効率、成功率の各優先項目の評価計算を行う。優先項目Ｐが安全の場合（Ｓ２１）は、安全評価計算を行い（Ｓ２２）、優先項目Ｐが効率の場合（Ｓ２３）は、効率評価計算を行い（Ｓ２４）、優先項目Ｐが成功率の場合（Ｓ２５）は、成功率評価計算を行う（Ｓ２６）。このようにして算出した各評価値の最大値に基づき実行すべきシナリオＳを選出する（Ｓ５、図４参照）。
【００５７】
なお、シナリオ実行に対するシミュレーションに用いる計算項目は以下の通りである。
要注意範囲＝ロボットアームの要注意領域にかかっている動作範囲の体積（または距離、または要注意範囲から飛び出した体積や距離の最大値）。
時間＝シナリオ実行終了時間−開始時間。
動作距離＝シナリオによるロボットアームの経路計算。
平均速度＝動作距離／時間
命令実行部１５からのロボットに対する命令数。
シナリオ使用頻度＝対象のシナリオが実行された回数／全てのシナリオが実行された回数。
【００５８】
上記各計算値を用いて実行対象のシナリオの評価計算を行う。各優先項目に対する評価値計算式は以下の通りである。
安全評価値＝ａ１１／要注意範囲＋ａ１２／平均速度。
効率評価値＝ａ２１×平均速度＋ａ２２／動作距離。
成功評価値（成功率）＝ａ３１／命令数＋Σａ３２ｉの成功値。
使用頻度評価値＝ａ４×使用頻度。
ユーザー指定評価値＝シナリオがユーザー指定ならばａ５、または０。
なお、命令ｉの成功率＝データベース３０のシナリオ選出情報３２に格納されたデータを検索して用いる。成功率はワークの大きさや重さを考慮して設定されている。
また、上記ａ１１，ａ１２，ａ２１……などのａ＊（＊はａ項に続く数字を表す）は、定数であって、ａ＊／０＝０とする。
以上説明したロボット制御方法を用いた具体的な実施例について説明する。
（実施例１）
【００５９】
実施例１では、１本アームのロボット２０の制御方法の１具体例を挙げ説明する。
図８は、実施例１に係るロボット２０の制御方法の１例を模式的に示す説明図である。実施例１のゴールＧは、「ワークＷを位置ＸＳから位置ＸＥに移動させる」というものである。仮に、このゴールＧを実現するシナリオＡ群の中に含まれるシナリオ［Ｎ］は、シナリオ１１とシナリオ１２と、シナリオ１３の３通りがあるものとする。シナリオ１１は、ワークＷを障害物Ｊ１，Ｊ２を高さ方向で回避移動させるシナリオであり、シナリオ１２は、障害物Ｊ１，Ｊ２を平面方向に回避移動させるシナリオであり、シナリオ１３は、障害物Ｊ１と障害物Ｊ２の間を最短距離で移動させるシナリオである。各シナリオについて説明する。
（シナリオ１１）
【００６０】
（１）右アーム２３のロボットハンド２０２を位置ＸＳまで移動させる。
（２）ワークＷをロボットハンド２０２で掴む。
（３）ワークＷを位置ＸＳから位置Ｘ１に移動させる。
（４）ワークＷを位置Ｘ１から位置ＸＥに移動させる。
（５）ワークＷをロボットハンド２０２から離す。
というように、ゴールＧを実行するために５つの命令が必要になる。
（シナリオ１２）
【００６１】
（１）右アーム２３のロボットハンド２０２を位置ＸＳまで移動させる。
（２）ワークＷをロボットハンド２０２で掴む。
（３）ワークＷを位置ＸＳから位置Ｘ２に移動させる。
（４）ワークＷを位置Ｘ２から位置ＸＥに移動させる。
（５）ワークＷをロボットハンド２０２から離す。
というように、ゴールＧを実行するために５つの命令が必要になる。
（シナリオ１３）
【００６２】
（１）右アーム２３のロボットハンド２０２を位置ＸＳまで移動させる。
（２）ワークＷをロボットハンド２０２で掴む。
（３）ワークＷを位置ＸＳから位置ＸＥに移動させる。
（４）ワークＷをロボットハンド２０２から離す。
というように、ゴールＧを実行するために４つの命令が必要になる。
【００６３】
次に、上記３種類のシナリオの評価計算の事例をあげ説明する。
表１は、シナリオ実行のシミュレーションに用いる計算項目を表している。
【００６４】
【表１】
2013158869.tif 000003
【００６５】
シナリオ１３は、動作距離が最も短い（図８も参照）ものの、時間（シナリオ実行終了時間−開始時間）が最も長くなっている。これは、障害物Ｊ１，Ｊ２との衝突を回避するための回避処理を行うためである。また、要注意範囲はシナリオ１２が最も高い値であるが、図８を参照すると、シナリオ１２の位置Ｘ２が作業テーブル外にあるためである。
上記計算項目を用いて計算した上記３種類のシナリオの評価値について表２に表す。ここでは、安全評価値と効率評価値とを計算している。
【００６６】
【表２】
2013158869.tif 000004
【００６７】
表２から、優先項目を安全優先とすればシナリオ１３の安全評価値が最大値を示していることからシナリオ１３を選出、効率優先とすればシナリオ１２の効率評価値が最大値を示していることからシナリオ１２を選出すればよいことが分かる。
（実施例２）
【００６８】
実施例２では、２本アームのロボット１２０の制御方法の１具体例を挙げ説明する。
図９は、実施例２に係るロボット１２０の制御方法の１例を模式的に示す説明図である。実施例２のゴールＧは、「ワークＷを位置ＸＳから位置ＸＥに移動させる」というものである。仮に、このゴールＧを実現するシナリオＡ群の中に含まれるシナリオ［Ｎ］は、シナリオ２１とシナリオ２２と、シナリオ２３の３通りがあるものとする。シナリオ２１は、ワークＷを右アーム２３で位置ＸＳから位置ＸＥに移動させるシナリオであって、図中、Ｑ１ルート及びＱ２ルートを経由するものである。
【００６９】
シナリオ２２は、左アーム２４でワークＷを位置ＸＳから位置ＸＥに移動させるシナリオであって、図中、Ｑ３ルート及びＱ４ルートを経由するものである。
【００７０】
シナリオ２３は、右アーム２３でワークＷを位置ＸＳから位置ＸＴに移動させ、その後、右アーム２３から直接左アーム２４に持ち替えて位置ＸＥに移動させるものであって、図中、Ｑ１ルート、Ｑ５ルート及びＱ６ルートを経由するものである。続いて、各シナリオについて説明する。
（シナリオ２１）
【００７１】
（１）右アーム２３のロボットハンド２０２を位置ＸＳまで移動させる。
（２）ワークＷをロボットハンド２０２で掴む。
（３）ワークＷを位置ＸＳから位置ＸＥに移動させる。
（４）ワークＷをロボットハンド２０２から離す。
というように、ゴールＧを実行するために４つの命令が必要になる。
（シナリオ２２）
【００７２】
（１）左アーム２４のロボットハンド２１２を位置ＸＳまで移動させる。
（２）ワークＷをロボットハンド２１２で掴む。
（３）ワークＷを位置ＸＳから位置ＸＥに移動させる。
（４）ワークＷをロボットハンド２１２から離す。
というように、ゴールＧを実行するために４つの命令が必要になる。
（シナリオ２３）
【００７３】
（１）右アーム２３のロボットハンド２０２を位置ＸＳまで移動させる。
（２）ワークＷをロボットハンド２０２で掴む。
（３）ワークＷを位置ＸＳから位置ＸＴに移動させる。
（４）左アーム２４のロボットハンド２１２を位置ＸＴに移動させる。
（５）ワークＷを左アーム２４のロボットハンド２１２で掴む。
（６）ワークＷをロボットハンド２０２から離す。
（７）ワークＷを位置ＸＥまで移動させる。
（８）ワークＷをロボットハンド２１２から離す。
というように、ゴールＧを実行するために８つの命令が必要になる。
【００７４】
次に、上記３種類のシナリオの評価計算の事例をあげ説明する。
表３は、シナリオ実行のシミュレーションに用いる計算項目を表し、表４は命令に対する１動作当りの成功値を表している。成功値は予め設定されており、シナリオ選出情報３２に格納されている。シナリオに基づくロボット動作の成功率は、表４に記載の各動作毎の成功値の積で表される。
【００７５】
【表３】
2013158869.tif 000005
【００７６】
【表４】
2013158869.tif 000006
【００７７】
上記計算項目を用いて計算した上記３種類のシナリオの評価値について表５に表す。ここでは、安全評価値と効率評価値と成功評価値を計算している。なお、成功評価値の計算では、ａ＊＝１、ａ＊／０＝０として計算した。
【００７８】
【表５】
2013158869.tif 000007
【００７９】
表５から、優先項目を安全優先とすればシナリオ２１またはシナリオ２２の安全評価値が最大値を示していることからシナリオ２１またはシナリオ２２を選出する。効率優先とすればシナリオ２１の効率評価値が最大値を示していることからシナリオ２１を選出し、成功率を優先すればシナリオ２１またはシナリオ２２を選出すればよい。そして、上記３種類のシナリオの各評価値を総合的に判断すれば、シナリオ２１を選択することが望ましいことが分かる。
【００８０】
以上、実施例２では、ゴールＧを実現させる３種類のシナリオを例示して説明したが、例えば、右アーム２３だけでワークＷを移動させるシナリオ、右アーム２３でワークＷを位置ＸＴに移動させ、一旦、ロボットハンド２０２から離して、左アーム２４でワークＷを掴んで位置ＸＥに移動させるシナリオも考えられる。このようなシナリオも評価値を計算し優先項目に適合するシナリオを選出してロボットを動作させればよい。
【００８１】
以上説明したロボット制御装置１０、ロボットシステム１００、ロボット制御方法によれば、複数のシナリオからゴールを実現するための優先項目を設定し、優先項目に基づき複数のシナリオの中から一つの最適なシナリオを選出し、ロボットを動作させることができる。
【００８２】
また、シナリオ実行に要する時間、平均速度、成功率等のロボット動作情報に基づきシナリオを選出すれば、動作効率を高めることができる。
また、ロボット動作のゴールを実現するシナリオが複数存在する場合（仮に、シナリオＡ群とする）、まず、このシナリオＡ群を検出し、このシナリオＡ群から前述した優先項目、ロボット動作情報に基づき一つのシナリオを選出すれば、効率よく最適シナリオを選出できる。
【００８３】
また、シナリオ評価値計算部１４ａによって評価値を計算し、優先項目に従ってゴールＧを実現するシナリオをデータベース３０に格納される複数のシナリオの中から選出し、評価値が高いシナリオでロボット２０またはロボット１２０の動作を実行させる。従って、ゴールＧ実現のために最も適切なシナリオによって動作を実行させることができる。
【００８４】
また、優先項目には、ロボット動作の安全性を表す安全評価値と、ロボット動作の効率性を表す効率評価値と、ロボット動作の成功率を表す成功評価値と、（またはその一つ）が含まれており、このように、安全評価値、効率評価値、成功評価値によってシナリオを評価し、優先項目の評価値が高いシナリオを選出すれば、効率的で安全性が高いロボット動作を実行させることができる。
【００８５】
また、安全評価値は、ロボット動作の動作範囲における要注意範囲と、ロボット動作の動作平均速度とロボット動作の動作距離とを用いて算出する。よって、安全評価値を優先項目に指定すれば、安全性を重視したシナリオを選出できる。
【００８６】
また、効率評価値は、ロボット動作の動作平均速度と前記ロボット動作の動作距離とを用いて算出するこの効率評価値を優先項目にすれば、効率性を重視したロボット動作を実行させることができる。
【００８７】
また、成功評価値は、ゴールの実行に必要な命令数と、成功値とを用いて算出する。
ゴールを実現するシナリオが一つに限らず複数ある場合、それぞれのシナリオで作業の成功率が異なる。従って、成功評価値を重視したシナリオを選出すれば、作業エラーが少ない動作を実行させることができる。
【００８８】
また、ロボット動作の実行後のデータに基づき、ロボット動作命令に対応するロボット動作情報が更新されること、が好ましい。
【００８９】
このようにすれば、繰り返し動作のなかで得られたロボット動作情報をデータベースに追加または更新することにより、常に最適なシナリオを選出してロボット動作を実行させることができる。
【符号の説明】
【００９０】
１０…ロボット制御装置、１１…制御部、１２…ロボット制御プログラム、１３…シナリオ取得部、１４…シナリオ選出部、１４ａ…シナリオ評価計算部、１４ｂ…シナリオマッチング部、１５…命令実行部、２０…ロボット（１本アーム）、２３…右アーム、２４…左アーム、３０…データベース、１００…ロボットシステム。
【図１】
2013158869.tif 000008
【図２】
2013158869.tif 000009
【図３】
2013158869.tif 000010
【図４】
2013158869.tif 000011
【図５】
2013158869.tif 000012
【図６】
2013158869.tif 000013
【図７】
2013158869.tif 000014
【図８】
2013158869.tif 000015
【図９】
2013158869.tif 000016