(57)【要約】【課題】ロボットティーチングを容易にする。【解決手段】複数のロボットコンポーネントと前記複数のロボットコンポーネントを制御する制御部とを備えるロボットを制御するロボット制御方法であって、前記ロボットコンポーネントを制御するための複数の関数を記憶し、ロボット外対象物の状態変化を含むミッションの入力を受け付け、前記変化に対応する前記関数を選択し、選択された前記関数に任意の引数を設定し、前記引数が設定された前記関数の実行結果をシミュレートすることにより、前記変化をもたらす前記関数と前記引数とを特定し、特定された前記関数と前記引数に対応する命令群を前記制御部に出力する、ことを含むロボット制御方法。【選択図】図２
2013163247.tif 000002
【特許請求の範囲】
【請求項１】
複数のロボットコンポーネントと、
前記ロボットコンポーネントを制御するための複数の関数を記憶するデータベースと、
ロボット外対象物の状態を変化させることを含むミッションの入力を受け付ける入力受付部と、
前記変化に対応する前記関数を選択する選択部と、
選択された前記関数に任意の引数を設定し、前記引数が設定された前記関数の実行結果をシミュレートすることにより、前記変化をもたらす前記関数と前記引数の組み合わせを特定し、特定された前記関数と前記引数の組み合わせに対応する命令群を出力する出力部と、
前記命令群を実行することにより前記ロボットコンポーネントを制御する制御部と、
を備えるロボットシステム。
【請求項２】
前記出力部は、少なくとも１つの前記ロボットコンポーネントの識別子を前記引数として設定する、
請求項１に記載のロボットシステム。
【請求項３】
前記ミッションは、評価指標を含み、
前記出力部は、前記変化をもたらす前記関数と前記引数の複数の組みあわせのうち、前記評価指標に基づいて前記変化を評価した場合に最も評価が高くなる１組に対応する命令群を出力する、
請求項１または２に記載のロボットシステム。
【請求項４】
前記入力受付部は、前記ミッションを複数含むシナリオの入力を受け付け、
前記選択部、前記出力部および前記制御部は、前記シナリオに含まれる複数の前記ミッションについて連続して複数の前記関数を処理する、
請求項１から３のいずれか一項に記載のロボットシステム。
【請求項５】
複数のロボットコンポーネントと前記複数のロボットコンポーネントを制御する制御部とを備えるロボットを制御するロボット制御装置であって、
前記ロボットコンポーネントを制御するための複数の関数を記憶するデータベースと、
ロボット外対象物の状態を変化させることを含むミッションの入力を受け付ける入力受付部と、
前記変化に対応する前記関数を選択する選択部と、
選択された前記関数に任意の引数を設定し、前記引数が設定された前記関数の実行結果をシミュレートすることにより、前記変化をもたらす前記関数と前記引数の組み合わせを特定し、特定された前記関数と前記引数の組み合わせに対応する命令群を前記制御部に出力する出力部と、
を備えるロボット制御装置。
【請求項６】
複数のロボットコンポーネントと前記複数のロボットコンポーネントを制御する制御部とを備えるロボットを制御するロボット制御方法であって、
前記ロボットコンポーネントを制御するための複数の関数を記憶し、
ロボット外対象物の状態を変化させることを含むミッションの入力を受け付け、
前記変化に対応する前記関数を選択し、
選択された前記関数に任意の引数を設定し、前記引数が設定された前記関数の実行結果をシミュレートすることにより、前記変化をもたらす前記関数と前記引数の組み合わせを特定し、特定された前記関数と前記引数の組み合わせに対応する命令群を前記制御部に出力する、
ことを含むロボット制御方法。
【請求項７】
複数のロボットコンポーネントと、
前記ロボットコンポーネントを制御するための複数の関数を記憶するデータベースと、
ロボット外対象物の状態を変化させることを含むミッションの入力を受け付ける入力受付部と、
前記変化に対応する前記関数を選択する選択部と、
選択された前記関数に任意の引数を設定し、前記引数が設定された前記関数の実行結果をシミュレートすることにより、前記変化をもたらす前記関数と前記引数の組み合わせを特定し、特定された前記関数と前記引数の組み合わせに対応する命令群を出力する出力部と、
前記命令群を実行することにより前記ロボットコンポーネントを制御する制御部と、
を備えるロボット。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットシステム、ロボット、ロボット制御装置およびロボット制御方法に関する。
【背景技術】
【０００２】
従来、オペレーターが入力したコマンドをロボットに実行させる前にそのコマンドの実行結果をシミュレートし、コマンドが実行可能であることが確認されてからそのコマンドを実行させることにより、ティーチングを容易にする方法が知られている。例えば特許文献１には、コマンドをオペレーターが入力してロボットをある位置から別の位置に移動させる際、実際にロボットが置かれている状況をセンサーセンサーを用いて特定し、その状況において許容される移動経路をシミュレーションによって特定した後に、ロボットに実行させるコマンドを決定する技術が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−２３２２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、ロボットに与えられるミッションの本質は、ロボットを用いてロボット外対象物に何らかの変化をもたらすことであって、どのロボットコンポーネントをどのように動作させるかはそのミッションに従属する事柄である。例えば、複数のアームやハンドを備えた産業用ロボットを用いて第一のワークを第二のワークに取り付けるというミッションにおいて、どのアームやハンドを用いてそのミッションを達成することが最適であるかはロボットの仕様によって異なるが、どのアームやハンドが用いられようとも第一のワークが第二のワークに取り付けられたという結果が得られれば、ミッションは達成されたことになる。
【０００５】
しかし、ロボットを構成するロボットコンポーネントが複雑化しているにもかかわらず、従来の技術によると、ロボットを構成する複数のロボットコンポーネントのそれぞれに与えられている機能をオペレーターが熟知していないことには、オペレーターはロボットを操作することができないという問題がある。例えば特許文献１に記載された技術を用いて特定のロボットコンポーネントにそれが置かれている状況に対して最適な動作をさせられるとしても、オペレーターはどのロボットコンポーネントを用いて目的を達成すべきかを知っていなければならない。すなわち、従来の技術では、ロボットコンポーネントというミッションの達成手段を逐一指定しなければ、ロボットを操作することができないという問題があった。
【０００６】
本発明は、このような問題を解決するために創作されたものであって、ロボットティーチングを容易にすることを目的の１つとする。
【課題を解決するための手段】
【０００７】
（１）上記目的を達成するためのロボットシステムは、複数のロボットコンポーネントと、前記ロボットコンポーネントを制御するための複数の関数を記憶するデータベースと、ロボット外対象物の状態を変化させることを含むミッションの入力を受け付ける入力受付部と、前記変化に対応する前記関数を選択する選択部と、選択された前記関数に任意の引数を設定し、前記引数が設定された前記関数の実行結果をシミュレートすることにより、前記変化をもたらす前記関数と前記引数の組み合わせを特定し、特定された前記関数と前記引数の組み合わせに対応する命令群を出力する出力部と、前記命令群を実行することにより前記ロボットコンポーネントを制御する制御部と、を備える。
【０００８】
ここでロボット外対象物の状態を変化させることを含むミッションは、ロボットコンポーネントの動作によってワークにどのような状態変化が生じさせるかを特定する情報であって、例えばロボットコンポーネントが動作する前後のワークの位置、姿勢、形状、色、温度等を表す情報である。本発明によると、ミッションが入力されると、ミッションとして入力されたロボット外対象物の状態変化に応じて、その状態変化をもたらすロボットコンポーネントを制御するための関数が選択され、シミュレーションによってその状態変化をもたらす関数と引数の組み合わせが特定される。したがって、ロボットの仕様に応じて設計されている関数を選択し状態変化をもたらす引数を特定して設定するオペレーターの手間が省かれる。すなわち本発明によると、ロボットコンポーネントの動作を特定しなくてもロボットに対するティーチングが可能であるため、ロボットティーチングが容易になる。
【０００９】
（２）上記目的を達成するためのロボットシステムにおいて、前記出力部は、少なくとも１つの前記ロボットコンポーネントの識別子を前記引数として設定してもよい。
引数として適するロボットコンポーネントの識別子がロボットシステムによって設定される場合、ミッションを達成するのに適したロボットコンポーネントを選択するオペレーターの手間が省かれる。
【００１０】
（３）上記目的を達成するためのロボットにおいて、前記ミッションは、評価指標を含み、前記出力部は、前記変化をもたらす前記関数と前記引数の複数の組みあわせのうち、前記評価指標に基づいて前記変化を評価した場合に最も評価が高くなる１組に対応する命令群を出力してもよい。
ここで評価指標とは、シミュレートされた状態変化を評価するための指標であって、例えば所要時間、成功確率、安全度、消費電力量、最大負荷などである。評価指標を含むミッションが入力されるとともに、その評価指標に基づいて最も評価が高くなる関数と引数とがロボットシステムによって設定される場合、最適な状態変化を得るためのティーチングが容易になる。
【００１１】
（４）上記目的を達成するためのロボットにおいて、前記入力受付部は、前記ミッションを複数含むシナリオの入力を受け付け、前記選択部、前記出力部および前記制御部は、前記シナリオに含まれる複数の前記ミッションについて連続して複数の前記関数を処理してもよい。
複数のミッションを含むシナリオの入力に応じて複数のミッションが連続して達成される場合、ミッション毎にティーチングする必要がなくなるため、ロボットティーチングがさらに容易になる。
【００１２】
なお、本発明はロボット制御装置としてもロボットとしてもロボット制御方法としてもロボット制御プログラムとしてもロボット制御プログラムの記録媒体としても成立する。むろん、そのコンピュータプログラムの記録媒体は、磁気記録媒体であってもよいし光磁気記録媒体であってもよいし、今後開発されるいかなる記録媒体であってもよい。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施形態にかかるブロック図。
【図２】本発明の実施形態にかかるフローチャート。
【図３】本発明の実施形態にかかるフローチャート。
【図４】図４Ａ、図４Ｂおよび図４Ｃは本発明の実施形態にかかる模式図。
【図５】本発明の実施形態にかかるブロック図。
【発明を実施するための形態】
【００１４】
以下、本発明の実施の形態を添付図面を参照しながら説明する。尚、各図において対応する構成要素には同一の符号が付され、重複する説明は省略される。
１．ロボットシステムの構成
図１は、本発明にかかるロボットシステム１００の構成を示すブロック図である。ロボットシステム１００は、ＰＣ（Personal Computer）１０とロボット２０とデータベース３０とを備えている。ＰＣ１０とデータベース３０とは、ＬＡＮによって接続されており、ロボット制御装置を構成している。ＰＣ１０およびデータベース３０のそれぞれは、ＣＰＵ、ＲＡＭ、ＲＯＭ、入出力機構、ハードディスク装置等を備える。
【００１５】
ＰＣ１０は、キーボード１２、マウス１３、ディスプレイ１１等の操作装置に接続されている。ＰＣ１０は、ハードディスク装置に記憶されたロボット制御プログラムをＲＡＭにロードしてＣＰＵで実行することにより、次に述べる入力受付部１０ａ、選択部１０ｂ、出力部１０ｃとして機能する。
【００１６】
入力受付部１０ａは、ロボット外対象物としてワークの状態変化と評価指標とをそれぞれ含む複数のミッションからなるシナリオの入力を受け付ける。本実施例における状態変化は動作前後のワークの位置を表す情報であるとする。また本実施例における評価指標は所要時間、成功確率および安全度であるとする。また本実施例におけるミッションとは、状態変化と評価指標からなるティーチングのためのコマンドである。入力受付部１０ａは、このようなミッションを対話形式でオペレーターに連続的にシナリオとして入力させるインターフェースを提供する。
【００１７】
例えば、状態Ｂまで最も短い時間でワークＸを動かすというミッションは、次の形式で入力される。ここで"time"は"所要時間"という評価指標を示すコードであるものとする。
Move From To(X、B、time)
【００１８】
このミッションは、ロボット外対象物であるワークＸの状態変化のみを規定し、そのような状態変化をもたらす手段を何ら規定していない。なお、ワークＸの初期位置や初期姿勢や形状、ワークの状態Ｂにおける位置や姿勢や形状といった情報は、例えばミッションとは別に初期設定としてデータベース３０に登録しておくこともできるし、各ミッションに含めることもできる。
【００１９】
選択部１０ｂは、状態変化に対応する１つ以上の関数をデータベース３０から探索して選択する。探索される関数は、ロボット２０の制御部２１によって実行される命令群であって、引数を受け取って予め決められた処理を実行する命令群である。ここでいう予め決められた処理とは、ロボット２０に備えられたアクチュエーターを駆動したり、ロボット２０に備えられたセンサーからデータを取得したりすることである。
【００２０】
例えば、"１つのアームαでワークＸを位置Ｂに動かす"という関数は次の形式である。
Move From To(X、B、α)
この関数は、次の命令群からなる。
arm α:Move to X
arm α:Grasp X
arm α:Move to B
arm α:Release X
【００２１】
すなわち、アームαがワークＸをつかめる位置まで移動し、アームαがワークＸをつかみ、アームαがＢの位置まで移動し、アームαがワークＸを離す、という４つの処理からなる一連の動きを関数"Move From To(X、B、α)"が規定している。
【００２２】
また例えば、"２つのアームα、βでワークＸをＢに動かす"という関数は次の形式である。
Move From To(X、B、α、β)
この関数は、次の命令群からなる。
arm α:Move to X
arm α:Grasp X
arm α:Move to C
arm β:Move to C
arm β:Grasp X
arm α:Release X
arm β:Move to B
arm β:Release X
【００２３】
すなわち、アームαがある状態のワークＸをつかめる位置まで移動し、アームαがワークＸをつかみ、アームαがＣの位置まで移動し、アームβがＣの位置にあるワークＸをつかめる位置まで移動し、アームαがワークＸを離し、アームβがＢまで移動し、アームβがワークＸを離す、という８つの処理からなる一連の動きを関数"Move From To(X、B、α、β)"が規定している。
【００２４】
そしてワークＸの状態は命令にともなう実際の操作によって変化するため、命令の実行にともなって変化する状態情報がＸに対応付けて記憶され都度更新される。このような状態情報は、ロボット制御装置としてのＰＣ１０が更新しても良いし、ロボット２０の制御部２１が更新しても良い。
【００２５】
出力部１０ｃは、選択された関数に任意の引数を設定し、引数が設定された関数の実行結果をシミュレートすることにより、状態変化をもたらす関数と引数の組みあわせを特定し、特定された関数と引数の組みあわせに対応する命令群を出力する。状態変化をもたらす関数と引数の組みあわせが複数存在する場合、出力部１０ｃは、これらの組みあわせのうち、シミュレートされた状態変化を評価指標に基づいて評価した場合に最も評価が高くなる１組に対応する命令群を出力する。状態変化をシミュレートするに際しては、ロボット２０を構成するアームなどのロボットコンポーネントの移動速度、移動経路、移動範囲、把持できる対象物の最大サイズと最大質量、把持力、消費電力量、振動特性、エラー発生確率といった特性情報が必要になる。本実施例では、データベース３０に記憶されているこれらの特性情報を参照して出力部１０ｃがシミュレーションを実行する。
【００２６】
データベース３０には、複数の関数、引数の型や取り得る値を規定する引数の宣言、ワークの形状、位置情報、ロボットコンポーネントの特性情報等が予め登録されている。データベース３０には、ロボットシステム１００に備わるロボットコンポーネントに対応した関数のみならず、ロボットシステム１００に追加され得るロボットコンポーネントに対応した関数をも登録しておいてもよい。この場合、ロボットシステム１００のセットアップ時に有効な関数と無効な関数とをフラグなどで区別しておけばよい。また引数が取り得る値をロボットシステム１００の構成に応じて異らせる場合、ロボットシステム１００のセットアップ時に引数が取り得る値の範囲を設定すればよい。
【００２７】
ロボット２０は、第一のロボットコンポーネントである第一アーム２２、第二のロボットコンポーネントである第二アーム２３および制御部２１を備えている。第一アーム２２および第二アーム２３は、それぞれが機構部、複数のアクチュエーターアクチュエーター、複数のセンサーセンサー、およびそれらの駆動回路を備える。制御部２１は、ＣＰＵ、ＲＡＭ、ＲＯＭ、入出力機構等を備えるコンピューターである。制御部２１は、出力部１０ｃから出力された命令群を実行することにより、これらのアクチュエーターアクチュエーターとセンサーセンサーを制御し、第一アーム２２および第二アーム２３に、"ワークをつかむ"、"ワークを動かす"、"ワークをはなす"といった操作を行わせる。
【００２８】
２．ロボット制御方法
以下、ロボットシステム１００の制御方法を図２および図３に示すフローチャートに基づいて説明する。
はじめにＰＣ１０に対するシナリオの入力によってロボットシステム１００に対するティーチングが行われる（Ｓ１００）。具体的には、入力受付部１０ａがディスプレイ１１に表示するＧＵＩに従ってオペレーターがキーボード１２およびマウス１３を操作することによって複数のミッションが時系列に統合されたシナリオとして連続的に入力される。例えば、ワークＸを第一の位置に動かすという第一のミッションと、ワークＹを第一の位置に動かすという第二のミッションと、ワークＸとワークＹとをねじ結合するという第三のミッションとが１つのシナリオとして対話的に入力される。
【００２９】
任意のオペレーターがシナリオを入力する以前の段階で、ロボットシステム１００の構成とワークの構成に応じた様々な初期情報を運用管理者がデータベース３０に登録しておくことでティーチングが容易になる。すなわち、ロボットシステム１００のセットアップとティーチングを分けることにより、ティーチングが容易になる。なお、シナリオの入力を受け付けた結果をファイルとして保存し、シナリオが保存されているファイルをＰＣ１０に入力することでシナリオの入力を受け付けても良い。
【００３０】
入力受付部１０ａがシナリオの入力を受け付けると、選択部１０ｂは、シナリオに含まれる全てのミッションに順次注目し、注目したミッションについて関数と引数の探索処理を実行する（Ｓ１０１、Ｓ１０２）。
【００３１】
図３は関数と引数の探索処理の詳細を示すフローチャートである。
関数と引数の探索処理において、選択部１０ｂは、まず、現在注目しているミッションに対応する関数をデータベースから１つずつ探索する（Ｓ１０２０）。ミッションと関数の対応関係は、引数部分を除いた命令コード文字列の完全一致または部分一致によって規定される。具体的には例えば、ミッションが前述した"Move From To(X、B、time)"であって、データベースには、"Move From To(X、B、α)"と、"Move From To(X、B、α、β)"とが有効な関数として登録されているとする。この場合、" Move From To"の完全一致により、ミッション"Move From To(X、B、time)"に対応する関数として"Move From To(X、B、α)"と、"Move From To(X、B、α、β)"とが順に探索される。なお、ミッションと関数の対応関係をデータベース３０に別途登録しておいてもよい。
【００３２】
次に、出力部１０ｃは、ミッションに対応する関数が新たに１つ探索されたか否かを判定し（Ｓ１０２１）、関数が探索された場合には、関数に対応する引数を探索する（Ｓ１０２２）。すなわち、探索された関数の引数が取り得る値をデータベース３０から１つずつ探索する。例えば、関数"Move From To(X、B、α)"が探索されているとする。ここでワークを意味するＸと状態または位置を意味するＢは、シナリオの入力前またはシナリオの入力時に設定されている定数である。したがって、探索対象となる引数はアームを意味するαである。ロボットシステム１００においてαが取り得る値は、第一アーム２２の識別子"arm1"と、第二アーム２３の識別子"arm2"である。データベース３０には、αが取り得る値として"arm1"と"arm2"とが登録されているため、関数"Move From To(X、B、α)"に対応する引数として"arm1"と"arm2"とが１つずつ探索される。なお、ここでは単純に引数の取り得る値としてデータベース３０に登録されている値が探索されているため、具体的なワークＸを具体的な状態又は位置であるＢに第一アーム２２または第二アーム２３によって動かすことができるかは、問題とされていない。
【００３３】
次に出力部１０ｃは、探索された関数に対応する引数が新たに１つ探索されたか否かを判定し（Ｓ１０２３）、引数が探索された場合には、探索された関数と引数の組みあわせをシミュレーターで実行する（Ｓ１０２４）。ここでシミュレーターによって、データベース３０に登録されているワークの形状、位置情報、ロボットコンポーネントの特性情報等が参照され、探索された関数とその引数の組み合わせで関数に規定されている命令群を実行した場合の処理予測が出力される。処理予測としては、成否、所要時間、成功確率、安全度が出力される。
【００３４】
シミュレーターによって処理予測が出力されると、出力部１０ｃは、探索された関数と引数の組みあわせでミッションを完遂することができるか否かを処理予測に基づいて判定する（Ｓ１０２５）。具体的には、処理予測が成功であれば、探索された関数と引数の組みあわせでミッションを完遂することができると判定し、処理予測が失敗であれば、探索された関数と引数の組みあわせでミッションを完遂することができないと判定する。
【００３５】
探索された関数と引数の組みあわせでミッションを完遂することができると判定した場合、出力部１０ｃは、その関数と引数の組みあわせと処理予測とを保存する（Ｓ１０２６）。探索された関数と引数の組みあわせでミッションを完遂することができないと判定した場合、出力部１０ｃは、再び関数に対応する引数を探索し、探索した関数と引数の組みあわせについて処理予測を保存する処理（Ｓ１０２２〜Ｓ１０２６）を、探索した関数に対応する引数が無くなるまで（Ｓ１０２３で偽判定されるまで）繰り返す。
【００３６】
ステップＳ１０２０で探索した１つの関数について対応する全ての引数の探索とシミュレーションが終了すると、注目しているミッションについて対応する次の関数を再びステップＳ１０２０で探索し、新たに探索された１つの関数についてステップＳ１０２２〜Ｓ１０２６の処理を繰り返す。
【００３７】
注目しているミッションについて対応する次の関数が無くなると（ステップＳ１０２１で偽判定となる）、出力部１０ｃは、保存された関数と引数の処理予測をミッションの評価指標に基づいて評価する（Ｓ１０２８）。
【００３８】
そして、出力部１０ｃは評価指標に基づいて評価した結果、最も評価が高かった組み合わせを選択する（Ｓ１０２９）。
【００３９】
ここで例えば、"Move From To(X、B、α)"と"Move From To(X、B、α、β)とがミッションに対応する関数として探索され、"Move From To(X、B、α)"に対応するαとして引数"arm1"と"arm2"が探索されたとする。そして、"Move From To(X、B、α、β)"に対応するαとして引数"arm1"と"arm2"が探索され、"Move From To(X、B、 arm1、β)"に対応するβとして引数"arm1"と"arm2"が探索され、"Move From To(X、B、 arm2、β)"に対応するβとして引数"arm1"と"arm2"が探索されたと仮定する。
【００４０】
図４Ａに示すように第一アーム２２で位置ＡにあるワークＸを位置Ｂまで動かすことができるのに対して、図４Ｂに示すように第二アーム２３ではそれができない。したがって、関数"Move From To(X、B、α)"とαの引数"arm1"との組み合わせの実行結果は成功と予測される。そして関数"Move From To(X、B、α)"とαの引数"arm2"との組み合わせの実行結果は失敗と予測される。また、図４Ｃに示すように第一アーム２２から第二アーム２３にワークＸを受け渡して位置ＡにあるワークＸを位置Ｂまで動かすことができるため、関数"Move From To(X、B、α、β)"とαの引数"arm1"とβの引数"arm2"との組みあわせの実行結果は成功と予測される。しかし、第一アーム２２も第二アーム２３も自分自身でワークＸを受け渡すことはできないため、関数"Move From To(X、B、α、β)"と、αの引数"arm1"とβの引数"arm1"との組みあわせも、αの引数"arm2"とβの引数"arm2"との組みあわせも、実行結果は失敗と予測される。また、第二アーム２３は図４Ｂに示すように位置ＡにあるワークＸをつかめる位置まで動けないため、関数"Move From To(X、B、α、β)"とαの引数"arm2"とβの引数"arm1"との組みあわせの実行結果も失敗と予測される。したがって、この場合、保存される関数と引数の組み合わせは、"Move From To(X、B、α)"とαの引数"arm1"との組み合わせと、"Move From To(X、B、α、β)"とαの引数"arm1"とβの引数"arm2"との組み合わせのみとなる。
【００４１】
そして、評価指標が所要時間であれば、２つの成功する組み合わせのうち最も所要時間が短い組み合わせが選択され、評価指標が安全度であれば、２つの成功する組み合わせのうち最も安全度が高い組み合わせが選択され、評価指標が成功確率であれば、２つの成功する組み合わせのうち最も成功確率が高い組み合わせが選択される。例えば所要時間および成功確率の評価指標に対しては、ワークの受け渡しが不要な"Move From To(X、B、α)"とαの引数"arm1"との組み合わせが選択される。また例えば安全度の評価指標に対しては、アームの運動範囲が狭い"Move From To(X、B、α、β)"とαの引数"arm1"とβの引数"arm2"との組み合わせが選択される。
【００４２】
図２においてステップＳ１０２として示された関数と引数の探索処理を以上述べたとおりに実行すると、出力部１０ｃは、図２に示すステップＳ１０３において、ミッションを完了できる関数と引数の組みあわせが有ったか否か、すなわち、関数と引数の組みあわせが保存されているか否かを判定する。関数と引数の組みあわせが保存されていない場合、シナリオは実行できないものとして処理を終了する。
【００４３】
関数と引数の組みあわせが保存されている場合、出力部１０ｃは、保存された引数を保存された関数に設定し、関数の命令群を出力する。その結果、出力部１０ｃから出力された命令群が制御部２１によって実行される。制御部２１は命令群の実行に伴って第一アーム２２および第二アーム２３を制御する（Ｓ１０４）。
【００４４】
１つの関数の命令群が実行されると、選択部１０ｂおよび出力部１０ｃは次のミッションが無くなるまでシナリオに含まれる全てのミッションについて順次上述の処理を繰り返し、次のミッションが無くなると（Ｓ１０１で偽判定の場合）、シナリオの処理を終了する。すなわち、全てのミッションについてシミュレーションをしてから命令群を現実に実行するのではなく、１つのミッションについて命令群を現実に実行してから、次の１つのミッションについてシミュレーションを実行する。このため、例えば、１つのミッションについて現実に命令群を実行した結果を次のミッションのシミュレーションにフィードバックすることもできる。
【００４５】
以上説明した実施例によると、複数のミッションを含むシナリオが入力されると、ミッションとして入力されたロボット外対象物であるワークの状態変化に応じて、その状態変化をもたらすロボットコンポーネントを制御するための関数が選択され、シミュレーションによってその状態変化をもたらす関数と引数の組み合わせが特定される。したがって、ロボット２０の仕様に応じて設計されている関数を選択し状態変化をもたらす引数を特定して設定するオペレーターの手間が省かれる。具体的には、引数として適するアームの識別子がＰＣ１０によって自動設定されるため、ミッションを達成するのに適したアームを選択するオペレーターの手間が省かれる。さらに、評価指標に基づいて最も評価が高くなる関数と引数とがＰＣ１０によって自動設定されるため、最適な状態変化を得るためのティーチングが容易になる。また、複数のミッションを含むシナリオの入力に応じて複数のミッションが連続して達成されるため、ミッション毎にティーチングする必要がなくなるため、ロボットティーチングがさらに容易になる。
【００４６】
３．他の実施形態
尚、本発明の技術的範囲は、上述した実施例に限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。例えば、図５に示すようにロボット制御装置をロボット２０とを一体化しても良い。またデータベースを複数のロボット制御装置が共用するサーバーコンピューターとして構成し、インターネット等の通信回線を介して選択部および出力部と通信させるようにしてもよい。また入力受付部、選択部および出力部として機能するコンピューターとその不揮発性記憶媒体とをデータベースとして機能させても良い。
【００４７】
また、シミュレーターで関数と引数の組みあわせの実行結果を予測する際に、ミッションに設定されていない評価指標に対応する予測については予測しないでもよい。これにより、シミュレーションに要する時間を短縮することができる。
【符号の説明】
【００４８】
１０ａ…入力受付部、１０ｂ…選択部、１０ｃ…出力部、１１…ディスプレイ、１２…キーボード、１３…マウス、２０…ロボット、２１…制御部、２２…第一アーム、２３…第二アーム、３０…データベース、１００…ロボットシステム
【図１】
2013163247.tif 000003
【図２】
2013163247.tif 000004
【図３】
2013163247.tif 000005
【図４】
2013163247.tif 000006
【図５】
2013163247.tif 000007