(57)【要約】【課題】  ワークの初期位置及び最終位置を含むレイアウト情報に基づいて、局所領域を用いた処理を行うことで、ユーザーにとって容易な入力により高速でロボット動作情報の生成を行う制御装置、ロボットシステム、ロボット、ロボット動作情報生成方法及びプログラム等を提供すること。【解決手段】  制御装置１００は、作業空間におけるワークの第１の位置及びワークの第２の位置を含むレイアウト情報を取得する情報取得部１１０と、レイアウト情報に基づいてロボット動作情報を生成する処理部１２０とを含み、処理部１２０は、作業空間内の所定の平面に、複数の局所領域を設定し、ワークの第１の位置、第２の位置と局所領域との対応関係を求めることで、ワークの移動を局所領域を用いて表したワーク移動情報を生成し、ワーク移動情報に基づいて、局所領域を用いて表されるロボット動作情報を生成する。【選択図】      図１
2015058492.tif 000002
【特許請求の範囲】
【請求項１】
ロボットの作業空間におけるワークの第１の位置、及び前記第１の位置とは異なる前記ワークの第２の位置を含むレイアウト情報を取得する情報取得部と、
取得した前記レイアウト情報に基づいて、ロボット動作情報を生成する処理部と、
を含み、
前記処理部は、
前記作業空間内の所定の平面に、複数の局所領域を設定し、
前記ワークの前記第１の位置と前記局所領域との対応関係、及び前記ワークの前記第２の位置と前記局所領域との対応関係を求めることで、前記ワークの前記第１の位置から前記第２の位置までの移動を前記局所領域を用いて表したワーク移動情報を生成し、
前記ワーク移動情報に基づいて、前記局所領域を用いて表される前記ロボット動作情報を生成することを特徴とする制御装置。
【請求項２】
請求項１において、
前記ロボットは、複数のアームを含み、
前記ロボット動作情報は、
前記複数のアームのうちのいずれのアームを用いて、前記ワークを前記第１の位置から前記第２の位置まで移動させるのかを表す情報であることを特徴とする制御装置。
【請求項３】
請求項２において、
前記処理部は、
前記複数のアームの各アームについて、前記アームの可動範囲と前記局所領域との対応関係を求めることで、前記局所領域を用いて前記可動範囲を表した可動範囲情報を求め、
前記可動範囲情報と前記ワーク移動情報とに基づいて、前記ロボット動作情報を生成することを特徴とする制御装置。
【請求項４】
請求項１乃至３のいずれかにおいて、
前記レイアウト情報は、前記第１の位置及び前記第２の位置とは異なる前記ワークの第３の位置を更に含み、
前記処理部は、
前記ワークの前記第３の位置と前記局所領域との対応関係を求めることで、前記ワークの前記第１の位置から前記第３の位置までの移動、及び前記ワークの前記第３の位置から前記第２の位置までの移動を前記局所領域を用いて表した前記ワーク移動情報を生成し、
前記ワーク移動情報に基づいて、前記局所領域を用いて表される前記ロボット動作情報を生成することを特徴とする制御装置。
【請求項５】
請求項１乃至４のいずれかにおいて、
前記処理部は、
前記レイアウト情報に基づいて、作業対象である前記ワークのサイズ情報を特定し、前記サイズ情報に基づいて、前記局所領域のサイズを設定することを特徴とする制御装置。
【請求項６】
請求項１乃至５のいずれかにおいて、
前記処理部は、
前記ロボット動作情報が複数生成された場合に、前記複数のロボット動作情報それぞれについての作業評価値を求め、
前記作業評価値に基づいて決定された１つの前記ロボット動作情報を出力することを特徴とする制御装置。
【請求項７】
請求項１乃至６のいずれかに記載の制御装置と、
前記ロボットと、
を含むことを特徴とするロボットシステム。
【請求項８】
所定の作業空間におけるワークの第１の位置、及び前記第１の位置とは異なる前記ワークの第２の位置を含むレイアウト情報を取得する情報取得部と、
取得した前記レイアウト情報に基づいて、ロボット動作情報を生成する処理部と、
を含み、
前記処理部は、
前記作業空間内の所定の平面に、複数の局所領域を設定し、
前記ワークの前記第１の位置と前記局所領域との対応関係、及び前記ワークの前記第２の位置と前記局所領域との対応関係を求めることで、前記ワークの前記第１の位置から前記第２の位置までの移動を前記局所領域を用いて表したワーク移動情報を生成し、
前記ワーク移動情報に基づいて、前記局所領域を用いて表される前記ロボット動作情報を生成することを特徴とするロボット。
【請求項９】
ロボットの作業空間におけるワークの第１の位置、及び前記第１の位置とは異なる前記ワークの第２の位置を含むレイアウト情報を取得する処理を行い、
取得した前記レイアウト情報に基づいて、ロボット動作情報を生成するロボット動作情報生成処理を行い、
前記ロボット動作情報生成処理として、
前記作業空間内の所定の平面に、複数の局所領域を設定し、
前記ワークの前記第１の位置と前記局所領域との対応関係、及び前記ワークの前記第２の位置と前記局所領域との対応関係を求めることで、前記ワークの前記第１の位置から前記第２の位置までの移動を前記局所領域を用いて表したワーク移動情報を生成し、
前記ワーク移動情報に基づいて、前記局所領域を用いて表される前記ロボット動作情報を生成する処理を行うことを特徴とするロボット動作情報生成方法。
【請求項１０】
ロボットの作業空間におけるワークの第１の位置、及び前記第１の位置とは異なる前記ワークの第２の位置を含むレイアウト情報を取得する情報取得部と、
前記レイアウト情報に基づいて、ロボット動作情報を生成する処理部として、
コンピューターを機能させ、
前記処理部は、
前記作業空間内の所定の平面に、複数の局所領域を設定し、
前記ワークの前記第１の位置と前記局所領域との対応関係、及び前記ワークの前記第２の位置と前記局所領域との対応関係を求めることで、前記ワークの前記第１の位置から前記第２の位置までの移動を前記局所領域を用いて表したワーク移動情報を生成し、
前記ワーク移動情報に基づいて、前記局所領域を用いて表される前記ロボット動作情報を生成することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置、ロボットシステム、ロボット、ロボット動作情報生成方法及びプログラム等に関する。
【背景技術】
【０００２】
ロボットに対して所望の動作を行わせるために、ユーザーによる教示を用いる手法が広く知られている。具体的には、ユーザー（教示者）がロボットのアーム等を手で動かすことでロボット動作を教示するダイレクトティーチングや、ティーチングペンダント等の操作部を操作することでロボット動作を教示するティーチングプレイバック、或いはロボットの実機は使用せずにコンピューター上でシミュレーションを用いて教示を行うオフラインティーチング等が知られている。特許文献１には、ティーチングペンダントを用いてロボットシミュレーターを動作させることで、実機を用いた教示に近い操作感覚でオフラインティーチングを行う手法が開示されている。
【０００３】
また、ユーザーがティーチングペンダント等を用いて逐一ロボット動作を指定するのではなく、ユーザーの教示により所与の条件が与えられた場合に、当該条件に従ったロボット動作を自動的に生成する（狭義には教示プログラムを自動生成する）手法も知られるようになっている。例えば特許文献２には、接触による組み立て作業を対象とした場合に、部品の接触状態に基づいて、実環境に適応した教示プログラムを自動生成する手法が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−２３６７８４号公報
【特許文献２】特開２０００−２６７７１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１のようにティーチングペンダントを用いた教示では、教示を行うユーザーはロボットについての知識、及びロボットに行わせようとする作業についての知識（例えば溶接作業を行わせたいのであれば溶接についての知識）が求められる。
【０００６】
特許文献２では、実環境の変化に対しても適応できるとの記載があるが、レンジファインダーによって取得される姿勢を見え方（アスペクト）と一致させ教示するのは人の作業である。よって、レイアウトが変更された場合に、特許文献２のシステムにおいてはそのレイアウトに対応するレンジデータをアスペクトと自動的に結びつけることはできない。結果として、特許文献２等の従来手法ではレイアウトが変更された場合に、ユーザーによる作業が必要となるためユーザーの負担が大きいことになる。
【課題を解決するための手段】
【０００７】
本発明の一態様は、ロボットの作業空間におけるワークの第１の位置、及び前記第１の位置とは異なる前記ワークの第２の位置を含むレイアウト情報を取得する情報取得部と、取得した前記レイアウト情報に基づいて、ロボット動作情報を生成する処理部と、を含み、前記処理部は、前記作業空間内の所定の平面に、複数の局所領域を設定し、前記ワークの前記第１の位置と前記局所領域との対応関係、及び前記ワークの前記第２の位置と前記局所領域との対応関係を求めることで、前記ワークの前記第１の位置から前記第２の位置までの移動を前記局所領域を用いて表したワーク移動情報を生成し、前記ワーク移動情報に基づいて、前記局所領域を用いて表される前記ロボット動作情報を生成する制御装置に関係する。
【０００８】
本発明の一態様では、ワークの第１の位置と第２の位置を含むレイアウト情報を取得し、局所領域を用いてロボット動作情報を生成する。よって、ユーザーにとってはレイアウト情報を入力すれば、第１の位置と第２の位置の間の移動経路や、当該移動経路に沿ったワークの移動を実現するロボット動作等が自動生成されるため、使いやすいシステムを実現すること等が可能になる。また、処理単位を平面的に設定された局所領域とすることで、ロボット動作情報の生成処理の処理負荷を軽減し、高速での処理実行等も可能になる。
【０００９】
また、本発明の一態様では、前記ロボットは、複数のアームを含み、前記ロボット動作情報は、前記複数のアームのうちのいずれのアームを用いて、前記ワークを前記第１の位置から前記第２の位置まで移動させるのかを表す情報であってもよい。
【００１０】
これにより、いずれのアームを用いてワークを移動させるかという情報を、ロボット動作情報として生成すること等が可能になる。
【００１１】
また、本発明の一態様では、前記処理部は、前記複数のアームの各アームについて、前記アームの可動範囲と前記局所領域との対応関係を求めることで、前記局所領域を用いて前記可動範囲を表した可動範囲情報を求め、前記可動範囲情報と前記ワーク移動情報とに基づいて、前記ロボット動作情報を生成してもよい。
【００１２】
これにより、アームの可動範囲を局所領域を用いて表した可動範囲情報を生成すること、及び当該可動範囲情報を用いてロボット動作情報を生成すること等が可能になる。
【００１３】
また、本発明の一態様では、前記レイアウト情報は、前記第１の位置及び前記第２の位置とは異なる前記ワークの第３の位置を更に含み、前記処理部は、前記ワークの前記第３の位置と前記局所領域との対応関係を求めることで、前記ワークの前記第１の位置から前記第３の位置までの移動、及び前記ワークの前記第３の位置から前記第２の位置までの移動を前記局所領域を用いて表した前記ワーク移動情報を生成し、前記ワーク移動情報に基づいて、前記局所領域を用いて表される前記ロボット動作情報を生成してもよい。
【００１４】
これにより、レイアウト情報にワークの第３の位置を含めること等が可能になる。
【００１５】
また、本発明の一態様では、前記処理部は、前記レイアウト情報に基づいて、作業対象である前記ワークのサイズ情報を特定し、前記サイズ情報に基づいて、前記局所領域のサイズを設定してもよい。
【００１６】
これにより、ワークサイズに基づいて局所領域のサイズを設定すること等が可能になる。
【００１７】
また、本発明の一態様では、前記処理部は、前記ロボット動作情報が複数生成された場合に、前記複数のロボット動作情報それぞれについての作業評価値を求め、求めた前記作業評価値に基づいて決定された１つの前記ロボット動作情報を出力してもよい。
【００１８】
これにより、作業評価値を用いて、出力するロボット動作情報を適切に決定すること等が可能になる。
【００１９】
本発明の他の態様は、上記のいずれかの制御装置と、前記ロボットと、を含むロボットシステムに関係する。
【００２０】
これにより、上述したロボット動作情報を生成するとともに、生成したロボット動作情報を用いてロボットの制御を行うロボットシステムを実現することが可能になる。
【００２１】
本発明の他の態様は、所定の作業空間におけるワークの第１の位置、及び前記第１の位置とは異なる前記ワークの第２の位置を含むレイアウト情報を取得する情報取得部と、取得した前記レイアウト情報に基づいて、ロボット動作情報を生成する処理部と、を含み、前記処理部は、前記作業空間内の所定の平面に、複数の局所領域を設定し、前記ワークの前記第１の位置と前記局所領域との対応関係、及び前記ワークの前記第２の位置と前記局所領域との対応関係を求めることで、前記ワークの前記第１の位置から前記第２の位置までの移動を前記局所領域を用いて表したワーク移動情報を生成し、前記ワーク移動情報に基づいて、前記局所領域を用いて表される前記ロボット動作情報を生成するロボットに関係する。
【００２２】
これにより、上述したロボット動作情報を生成するとともに、生成したロボット動作情報に基づいた動作を行うロボットを実現することが可能になる。
【００２３】
本発明の他の態様は、ロボットの作業空間におけるワークの第１の位置、及び前記第１の位置とは異なる前記ワークの第２の位置を含むレイアウト情報を取得する処理を行い、取得した前記レイアウト情報に基づいて、ロボット動作情報を生成するロボット動作情報生成処理を行い、前記ロボット動作情報生成処理として、前記作業空間内の所定の平面に、複数の局所領域を設定し、前記ワークの前記第１の位置と前記局所領域との対応関係、及び前記ワークの前記第２の位置と前記局所領域との対応関係を求めることで、前記ワークの前記第１の位置から前記第２の位置までの移動を前記局所領域を用いて表したワーク移動情報を生成し、前記ワーク移動情報に基づいて、前記局所領域を用いて表される前記ロボット動作情報を生成する処理を行うロボット動作情報生成方法に関係する。
【００２４】
これにより、ワークの初期位置と最終位置を含むレイアウト情報を取得し、局所領域を用いてロボット動作情報を生成する。よって、ユーザーにとってはレイアウト情報を入力すれば、初期位置と最終位置の間の移動経路や、当該移動経路に沿ったワークの移動を実現するロボット動作等が自動生成されるため、使いやすいシステムを実現すること等が可能になる。また、処理単位を平面的に設定された局所領域とすることで、ロボット動作情報の生成処理の処理負荷を軽減し、高速での処理実行等も可能になる。
【００２５】
本発明の他の態様は、ロボットの作業空間におけるワークの第１の位置、及び前記第１の位置とは異なる前記ワークの第２の位置を含むレイアウト情報を取得する情報取得部と、前記レイアウト情報に基づいて、ロボット動作情報を生成する処理部として、コンピューターを機能させ、前記処理部は、前記作業空間内の所定の平面に、複数の局所領域を設定し、前記ワークの前記第１の位置と前記局所領域との対応関係、及び前記ワークの前記第２の位置と前記局所領域との対応関係を求めることで、前記ワークの前記第１の位置から前記第２の位置までの移動を前記局所領域を用いて表したワーク移動情報を生成し、前記ワーク移動情報に基づいて、前記局所領域を用いて表される前記ロボット動作情報を生成するプログラムに関係する。
【００２６】
本発明の一態様では、ワークの初期位置と最終位置を含むレイアウト情報を取得し、局所領域を用いてロボット動作情報を生成する。よって、ユーザーにとってはレイアウト情報を入力すれば、初期位置と最終位置の間の移動経路や、当該移動経路に沿ったワークの移動を実現するロボット動作等が自動生成されるため、使いやすいシステムを実現すること等が可能になる。また、処理単位を平面的に設定された局所領域とすることで、ロボット動作情報の生成処理の処理負荷を軽減し、高速での処理実行等も可能になる。
【００２７】
このように、本発明の幾つかの態様によれば、ワークの初期位置及び最終位置を含むレイアウト情報に基づいて、局所領域を用いた処理を行うことで、ユーザーにとって容易な入力により高速でロボット動作情報の生成を行う制御装置、ロボットシステム、ロボット、ロボット動作情報生成方法及びプログラム等を提供することができる。
【図面の簡単な説明】
【００２８】
【図１】本実施形態に係る制御装置のシステム構成例。
【図２】本実施形態に係る制御装置の詳細なシステム構成例。
【図３】本実施形態に係るロボットシステムの構成例。
【図４】本実施形態に係るロボットシステムの他の構成例。
【図５】ワークの初期位置に対応する初期状態の例。
【図６】作業空間に設定される局所領域の例。
【図７】ワークの初期位置と局所領域の対応関係の例。
【図８】ワークの最終位置に対応する最終状態、及び最終位置と局所領域の対応関係例。
【図９】ワークの途中位置に対応する途中状態、及び途中位置と局所領域の対応関係例。
【図１０】２つのワークの組み付け作業を説明する図。
【図１１】各アームの可動範囲及び可動範囲情報の説明図。
【図１２】ワークの初期位置等と局所領域の対応関係を説明する図。
【図１３】使用するアームを決定することで得られるロボット動作情報の例。
【図１４】図１４（Ａ）〜図１４（Ｄ）はロボット動作の具体例の説明図。
【図１５】図１５（Ａ）〜図１５（Ｄ）はロボット動作の具体例の他の説明図。
【図１６】図１６（Ａ）〜図１６（Ｄ）はロボット動作の具体例の他の説明図。
【図１７】図１７（Ａ）〜図１７（Ｄ）はロボット動作の具体例の他の説明図。
【図１８】複数の移動経路及びロボット動作情報が求められる例。
【図１９】各ロボット動作情報に対する作業コスト算出処理を説明する図。
【図２０】各ロボット動作情報に対する作業コスト算出処理を説明する他の図。
【図２１】図２１（Ａ）、図２１（Ｂ）はロボットの移動速度の設定例。
【図２２】本実施形態の処理を説明するためのフローチャート。
【図２３】作業コスト算出処理を説明するためのフローチャート。
【発明を実施するための形態】
【００２９】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【００３０】
１．本実施形態の手法
まず本実施形態の手法について説明する。従来、ロボットに対して所望の動作を行わせるために、ユーザーによる教示を用いる手法が広く知られている。具体的には上述したように、ダイレクトティーチング、ティーチングプレイバック、オフラインティーチング等が知られている他、特許文献１のように組み合わせに近い手法も開示されている。
【００３１】
しかし近年、非常に広汎な領域でロボットが利用されるようになってきている。そのため、ロボットに対して教示を行うユーザーが、当該ロボットについての専門知識を充分有していないというケースも多くなると想定される。つまり、ロボットに対する教示は専門知識が充分でないユーザーであっても実行可能な程度に、わかりやすい形態で行われることが望ましい。その点、上述したように特許文献１の手法は好ましいと言えない。
【００３２】
それに対して、特許文献２の手法であれば、ユーザーがティーチングペンダント等を用いて逐一ロボット動作を指定する必要はない。さらに、ロボットによる動作は、作業空間における作業対象物（ワーク）の配置等を表すレイアウト（作業レイアウト）に大きく依存する。よって、ユーザーが目標状態となるレイアウト等を指定した場合に、当該レイアウトを実現する教示プログラムを自動的に作成するシステムの有用性は高い。しかし上述したように、特許文献２ではレイアウトが変更された場合に、ユーザーによる作業が必要となるためユーザーの負担が大きく、やはり好ましい手法とは言えない。
【００３３】
そこで本出願人は、ワークの初期位置及び最終位置を含むレイアウト情報が与えられた場合に、当該ワークを初期位置から最終位置まで移動させるロボット動作を自動的に作成する制御装置を提案する。その際、ロボットの作業空間内に平面的な複数の局所領域を設定し、設定した局所領域単位で処理を行う。局所領域は、例えば作業空間を平面格子状に分割することで設定してもよい。
【００３４】
具体的には、本実施形態の制御装置１００は図１に示すように、ロボット（後述する図３等のロボット本体３００に対応）の作業空間におけるワークの第１の位置、及び前記第１の位置とは異なるワークの第２の位置を含むレイアウト情報を取得する情報取得部１１０と、取得したレイアウト情報に基づいて、ロボット動作情報を生成する処理部１２０を含む。そして、処理部１２０は、作業空間内の所定の平面に、複数の局所領域を設定し、ワークの第１の位置と局所領域との対応関係、及びワークの第２の位置と局所領域との対応関係を求めることで、ワークの第１の位置から第２の位置までの移動を局所領域を用いて表したワーク移動情報を生成し、ワーク移動情報に基づいて、局所領域を用いて表されるロボット動作情報を生成する。
【００３５】
ここで、ワークの第１の位置とは、作業空間における所与のワークの位置を表し、第２の位置とは、作業空間における所与のワークの位置であって第１の位置とは異なる位置を表す。また、本実施形態では第１の位置から第２の位置へのワークの移動を想定していることから、ワークは第１のタイミングで第１の位置にあり、第１のタイミングよりも後の第２のタイミングにおいて第２の位置にあるということになる。具体的には、ワークの第１の位置とは、作業の初期状態でのワークの位置を表す初期位置に相当する位置であってもよい。また、ワークの第２の位置とは、作業の最終状態（目標状態）でのワークの位置を表す最終位置に相当する位置であってもよい。以下、本明細書では第１の位置を初期位置、第２の位置を最終位置として説明をするが、これに限定されるものではなく、第１、第２の位置は作業空間におけるワークの任意の２つの位置を表すものである。
【００３６】
後述するように、図５の状態にあるワークＡとワークＢを組み付けて、図８の状態となるように除材エリアＣに配置する作業を想定した場合には、ワークの初期位置は図５のワークＡの位置や、ワークＢの位置を表す。また、ワークの最終位置とは、例えば図８のワークＡ＋Ｂ（ワークＡとワークＢが組み付けられたもの）の位置を表す。或いは、初期位置や最終位置はワークの位置を一意に決定するものでなくてもよい。例えば図８の除材エリアＣに示したように、ワークに比べてサイズの大きい領域を初期位置或いは最終位置を表す情報として用いてもよい。図８の例であれば、最終状態においてワークＡ＋Ｂは除材エリアＣのいずれかの位置にあればよく、除材エリアＣ内の細かい位置までは問わないことになる。
【００３７】
また、レイアウト情報とは、作業空間上でのワークの位置を表す情報であり、例えば図５や図８等に示すようなワークの状態を表す何らかの情報となる。具体的には、図５等の状態を撮像した撮像画像や当該撮像画像から求められる情報であってもよいし、作業空間に設定される所与の座標系での座標値であってもよい。
【００３８】
また、ワーク移動情報とは、例えば後述する図１８のＲ１やＲ２に示すように、ワークを初期位置から最終位置まで移動させる経路を局所領域単位で表現した情報である。ロボット動作情報とは、ワーク移動情報により表されるワークの移動を実現するためのロボット動作を表現する情報である。ワークの移動経路がワーク移動情報で規定されたとしても、当該ワークをロボットの右手で移動させるのか、左手で移動させるのか、或いはいずれかの腕で把持した状態で腰部分を回転させることで実現するのかは不明である。本実施形態でのロボット動作情報とは、使用するアームの決定等、ワークの移動を実現するロボットの動作を規定した情報である。
【００３９】
これにより、ワークの初期位置と最終位置を含むレイアウト情報が入力された場合に、当該ワークを初期位置から最終位置まで移動させるためのロボット動作を表すロボット動作情報を生成することが可能になる。ユーザーが初期状態と所望の状態（最終状態）を入力すれば、その間の移動経路や移動に必要なロボット動作を、制御装置１００が自動的に生成することになる。よってユーザーにとっては複雑な入力をせずとも、ワークに対する所望の作業をロボットに実行させることが可能になる。より広義には、ワークの２つの位置を含むレイアウト情報が入力された場合に、当該ワークを当該２つの位置の間で移動させるためのロボット動作を表すロボット動作情報を生成することが可能になる。
【００４０】
さらに、本実施形態ではワーク移動情報やロボット動作情報を局所領域単位で生成する。局所領域のサイズを適切に設定することで、生成される情報の精度と、情報生成に必要な計算量のバランスを重視した処理を行うことが可能になる。具体的には、ある程度の誤差を許容することで、高速でロボット動作情報を生成することができる。
【００４１】
また、レイアウト情報を局所領域単位で処理する際には、図７に示したように、各ワークの位置がどの局所領域に対応するかを判定すればよい。例えば図５に示したように、作業台上のワークＡ、ワークＢ、除材エリアＣの配置をレイアウト情報として取得し、且つ図６に示したように、ロボットの作業空間を平面格子状に分割した局所領域を設定した場合には、図５に対応するレイアウト情報は局所領域を用いて図１２に「初期位置」として示した列のように表現できる。つまり、レイアウト情報を局所領域に落とし込む処理は非常に容易なものであり、入力されるレイアウト情報が変化したとしても、当該変化に対してユーザーによる調整作業等が不要という利点もある。
【００４２】
本来ロボット動作は３次元的なものであることが想定されるが、２次元の格子で区切られた局所領域を用いて処理を行うため、上記ロボット動作の作成処理を高速で行うことが可能になる。また、上述したように局所領域のサイズを適切に設定することでも、ロボット動作作成処理の高速化が可能である。
【００４３】
ただし逆に言えば、本来３次元であるロボット動作を２次元に投影することで、或いはより細かい単位で処理すべきロボット動作を比較的大きな局所領域単位で処理することで、作成されるロボット動作情報は精度の低いものとなる。本実施形態の手法はそれを許容するものであり、より詳細なレベルでのロボット動作の作成処理が後段で行われることを前提としている。つまり、ロボット動作の作成処理を幾つかの工程に分割し、上流では比較的粗いロボット動作情報を作成し、下流では上流での作成結果を利用して比較的詳細なロボット動作情報を作成するものとし、本実施形態の手法はその上流工程を担うものとする。
【００４４】
なお、本実施形態でのレイアウト情報はワーク等の配置を表した情報であり、ワークの初期位置及び最終位置を含むレイアウト情報からは、ワークの初期位置から最終位置までの移動経路が求められることになる。その際、双腕ロボットのように複数のアームを有するロボットを対象とした場合、ワークを移動させる際に用いるアームは、いくつかの候補が考えられる。例えば右腕だけで移動してもよいし、左腕だけで移動してもよいし、途中で持ち替えてもよい。また、移動だけではなく複数のワークの組み付け作業等があれば、用いるアームの組み合わせは多数考えられることになる。
【００４５】
よって本実施形態では、図４に示すように、ロボットは、複数のアームを含んでもよい。そして、この場合のロボット動作情報は、図１３に例示するように、複数のアームのうちのいずれのアームを用いて、ワークを第１の位置から第２の位置まで移動させるのかを表す情報である。
【００４６】
これにより、ロボット動作情報として、ロボットのいずれのアームを用いて、ワーク移動情報により表される移動経路に沿ったワークの移動を行うかを表す情報を生成することが可能になる。図４を用いて後述する双腕ロボットのように、複数のアームを有するロボットでは、所定のワークの移動が第１のアームでも第２のアームでも実現できる可能性があり、その場合どちらのアームを用いるかを決定しなくては実際のロボット制御ができない。また、第１のアームであればワークの移動ができるが、第２のアームでは移動経路上の位置に到達できない等の理由によりワークの移動ができない場合もある。その場合には、第１のアームを用いる必要があり、第２のアームを用いるロボット動作情報を生成してしまうと、当該情報に従ったロボット制御は実現不可能となり好ましくない。つまり、多腕のロボットにおいてはアームの決定は非常に重要であり、本実施形態の手法は、レイアウト情報の入力に対して使用するアームの決定まで行うことができる点で有用である。
【００４７】
また、上述したようにロボット動作の作成処理を複数の工程に分割することを考えた場合、上流の工程で作成される粗いロボット動作は、対象とするロボットにより実現可能であることが必要となる。通常、ロボット制御を実際に行う際に求められるロボット動作情報は非常に詳細なものとなる。そのため、そのような粒度でのロボット動作を、全探索空間を対象として探索したのでは現実的な時間で処理結果を求めることが難しい。そのため、作業工程を分割する場合には、上流工程の比較的粗い処理において、探索空間を限定しておくことが重要となる。つまり、下流工程では上流工程で得られた結果をより詳細にしていく処理を行うことになり、上流工程での結果と大きく異なるロボット動作の生成は一般的には行われない。以上の点を鑑みれば、上流工程において対象とするロボットでは実現不可能なロボット動作を作成していると、その後の下流工程でいくら詳細な情報を求めたとしても、結果として得られるロボット動作は結局実現不可能なものとなり、処理が無駄なものとなってしまう。つまり、上流工程では、作成されるロボット動作が実現可能か否かということを十分注意して判定する必要がある。
【００４８】
よって本実施形態では、作成されるロボット動作が実現可能であることを高精度で保証するための処理を行ってもよい。具体的には、図１１を用いて後述するように制御装置１００の処理部１２０は、複数のアームの各アームについて、アームの可動範囲と局所領域との対応関係を求めることで、局所領域を用いて可動範囲を表した可動範囲情報を求め、可動範囲情報とワーク移動情報とに基づいて、ロボット動作情報を生成する。
【００４９】
ここでアームの可動範囲とは、当該アームの所与の位置（狭義にはエンドポイントや、エンドポイントに設けられるエンドエフェクターの位置）が到達可能な範囲を表すものである。アームの可動範囲は、当該アームに含まれる関節がとることができる関節角の範囲等から、ロボットの設計事項として決定されているものであり、局所領域とは無関係の形式で記憶されている。例えば、図１１に示したようにロボット本体に対して所与の範囲であるという形式で記憶されてもよいし、アームに含まれる各関節の関節角のとれる角度範囲の集合として記憶されてもよい。本実施形態の処理部１２０は、上記可動範囲を局所領域単位で表現する処理を行う。可動範囲情報とは、図１１の例であれば第１のアーム（左腕）についてＢ０Ｅ３、第２のアーム（右腕）についてＢ１Ｅ４という情報となる。なお、本明細書では、局所領域の左上の点及び局所領域の右下の点を並べることで、可動範囲情報やワークの位置に対応する局所領域をあらわすものとするが、この表現手法は種々の変形実施が可能である。例えば、各局所領域を一意に表現する局所領域ＩＤを用意しておき、当該ＩＤを１又は複数並べることでワークの初期位置等を表現してもよい。
【００５０】
これにより、可動範囲を考慮することで、作成されるロボット動作を実現可能なものとすることができる。なお、実現不可能なロボット動作とは、例えば可動部分（狭義にはアーム及びアーム先端等に設けられるハンド）を可動範囲外へ移動させる動作のことである。その際、アームの可動範囲についても局所領域単位で処理することが可能になる。つまりワーク移動情報と同様に、可動範囲情報についても、あえてある程度の誤差を許容することで、ロボット動作情報の生成処理を高速で行うことができる。なお、誤差を許容するといっても、本来アームが到達し得ない位置を到達可能であるとすると、生成されるロボット動作情報が、実際には実現不可能なものとなる可能性が生じるため好ましくない。よって理想的には、生成される可動範囲情報により表される領域は、ロボットの可動範囲よりも狭くしておくとよい。
【００５１】
以下、本実施形態に係る制御装置、ロボットシステムの詳細な構成例について説明した後、処理の詳細について説明する。
【００５２】
２．システム構成例
図２に本実施形態に係る制御装置１００の詳細なシステム構成例を示す。ただし、制御装置１００は図２の構成に限定されず、これらの一部の構成要素を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
【００５３】
図２に示したように、制御装置１００の処理部１２０は、局所領域設定部１２１と、ワーク移動情報生成部１２３と、可動範囲情報生成部１２５と、ロボット動作情報生成部１２７を含んでもよく、さらにロボット動作情報生成部１２７は作業コスト算出部１２９を含んでもよい。
【００５４】
局所領域設定部１２１は、本実施形態における処理の単位となる局所領域を設定する。具体的には、局所領域設定部１２１は、作業空間内に平面的な複数の居所領域を設定する。ワーク移動情報生成部１２３は、設定された局所領域と、レイアウト情報に含まれるワークの位置との対応関係を求めることで、ワークの初期位置から最終位置までの移動を、局所領域を用いて表現したワーク移動情報を生成する。
【００５５】
可動範囲情報生成部１２５は、ロボットの可動部分の可動範囲を表す可動範囲情報を生成する。可動部分の可動範囲は、ロボットの設計事項として決まっているものであるため、可動範囲情報生成部１２５では、当該可動範囲を局所領域を用いて表現する処理を行うことになる。
【００５６】
ロボット動作情報生成部１２７は、ワーク移動情報と可動範囲情報に基づいて、ロボット動作情報を生成、出力する。ロボット動作情報生成部１２７は作業コスト算出部１２９を含んでもよく、作業コスト算出部１２９は、複数のロボット動作情報が求められた場合に、それらのロボット動作情報それぞれの作業コストを算出する。この場合ロボット動作情報生成部１２７は、算出された作業コストに基づいて、少数（狭義には１つ）のロボット動作情報を、後段のユニットに対する出力として決定する処理を行う。
【００５７】
図２に示した処理部１２０の各部において行われる処理の詳細については後述する。なお、上述したように本実施形態の手法は、ロボット動作を決定する一連の処理を複数の工程で実現する際の上流工程に対応するものである。よって本実施形態の処理結果として出力されるロボット動作情報に対して、後段のユニットにより何らかの処理が行われた後に、実際のロボット制御に用いられることになる。この後段のユニットは、本実施形態に係る制御装置１００に含まれるものであってもよいし、他の電子機器に含まれるものであってもよい。
【００５８】
また本実施形態の手法は、図３に示したように、上記の制御装置１００と、ロボット（ロボット本体３００）と、を含むロボットシステムに適用できる。図３の構成であれば、本実施形態の制御装置１００は、図１の情報取得部１１０、処理部１２０に加えて、ロボット動作情報に基づいてより詳細なロボット制御用の情報を生成するユニット（上述した後段のユニット）と、当該詳細なロボット制御用の情報に基づいてロボット本体３００の制御を行うロボット制御部とを含むことになる。
【００５９】
ロボット本体３００は、アーム３１０と、当該アーム３１０の先端等に設けられるエンドエフェクター３１９を含む。
【００６０】
これにより、レイアウト情報を取得してロボット動作情報を生成するとともに、当該ロボット動作情報に基づくロボット本体３００の制御用情報を生成してロボット制御を行う制御装置１００と、制御装置１００の制御に従って動作を行うロボットとを、１つのシステムとして実現することが可能になる。ここでのロボットシステムは、図３に示したようにロボット本体３００と制御装置１００が別体として設けられるものであってもよい。
【００６１】
なお、本実施形態に係るロボットシステムの構成例は図３に限定されない。例えば、図４に示したように、ロボットシステムは、ロボット本体３００と、ベースユニット部４００を含んでもよい。
【００６２】
ロボット本体３００は双腕ロボットであってもよく、頭部や胴体に相当する部分に加え、第１のアーム３１０と第２のアーム３２０を含む。図４では第１のアーム３１０は、関節３１１，３１３と、関節の間に設けられるフレーム３１５，３１７から構成され、第２のアーム３２０についても同様のものとしたがこれに限定されない。また、第１のアーム３１０及び第２のアーム３２０の先端にはエンドエフェクター３１９が設けられる。ここでのエンドエフェクター３１９とは、図４に示したようにハンドであってもよいし、工具等の他のものであってもよい。なお、図４では２本のアームを有する双腕ロボットの例を示したが、本実施形態のロボットは３本以上のアームを有してもよい。
【００６３】
ベースユニット部４００は、ロボット本体３００の下部に設けられ、ロボット本体３００を支持する。図４の例では、ベースユニット部４００には車輪等が設けられ、ロボット全体が移動可能な構成となっている。ただし、ベースユニット部４００が車輪等を持たず、床面等に固定される構成であってもよい。図４のロボットシステムでは、ベースユニット部４００に制御装置１００が格納されることで、ロボット本体３００と制御装置１００とが一体として構成される。
【００６４】
或いは、本実施形態の手法を上記の情報取得部１１０と、処理部１２０と、を含むロボットに適用することもできる。例えば、制御装置１００のように、特定の制御用の機器を設けることなく、ロボットに内蔵される基盤（更に具体的には基盤上に設けられるＩＣ等）により、上記の情報取得部１１０と処理部１２０を実現するとともに、ロボット制御を実行するロボットが考えられる。
【００６５】
３．処理の詳細
次に本実施形態の処理の詳細を説明する。具体的には、情報取得部１１０で取得されるレイアウト情報の詳細を説明し、局所領域設定部１２１での局所領域の設定処理について説明する。その後、ロボット動作情報の生成処理について説明する。ロボット動作情報の生成処理は、具体的には可動範囲情報生成部１２５での可動範囲情報の生成処理、ワーク移動情報生成部１２３でのワーク移動情報の生成処理、作業コスト算出部１２９でのコスト算出処理により実現される。最後に、図２２、図２３のフローチャートを用いて、本実施形態の処理の流れを説明する。
【００６６】
３．１  レイアウト情報の取得
まず情報取得部１１０で取得されるレイアウト情報の詳細について説明する。以下では、上述したように図５に示した位置にあるワークＡ、ワークＢに対して、途中でワークＡに対してワークＢを組み付ける作業を行った上で、図８に示すように除材エリアＣに置く作業を行う例について説明する。この際、ワークＡを下にしてワークＢを上に組み付けるが、ロボット正面の作業に適した位置はワークＢの初期位置となっている。よって、図９に示したように、一旦ワークＢをロボットに対して奥側に移動させ、空いた位置にワークＡを移動させるという過程を経るものとする。
【００６７】
つまり、レイアウト情報は、第１の位置及び第２の位置とは異なるワークの第３の位置を更に含んでもよい。その場合、制御装置１００の処理部１２０は、ワークの第３の位置と局所領域との対応関係を求めることで、ワークの第１の位置から第３の位置までの移動、及びワークの第３の位置から第２の位置までの移動を局所領域を用いて表したワーク移動情報を生成し、ワーク移動情報に基づいて、局所領域を用いて表されるロボット動作情報を生成する。
【００６８】
ここで、ワークの第３の位置とは、作業空間におけるワークの位置であって、第１の位置とも第２の位置とも異なる位置を表す。本実施形態では第１の位置から第３の位置へのワークの移動、及び第３の位置から第２の位置へのワークの移動を想定していることから、ワークが第３の位置にある第３のタイミングとは、上記第１のタイミングよりも後であり、上記第２のタイミングよりも前の所与のタイミングと言うことになる。また、ワークの第３の位置はワークの途中位置に相当する位置であってもよい。ワークの途中位置とは上述したように図９に示したワークの位置等であり、図９の状態を表す情報がレイアウト情報に含まれることになる。以下、本明細書ではワークの第３の位置は途中位置であるものとして説明する。
【００６９】
これにより、レイアウト情報としてワークの途中位置を含む情報を記憶し、当該途中位置を経由するワーク移動情報の生成、さらにはワーク移動情報に従ったロボット動作情報の生成が可能になる。ワークの初期位置と最終位置を指定すれば、制御装置１００がその間の経路を自動的に作成することによる利点は大きいが、状況によってはその間の経路が全て許容されるとは限らない。例えば、図９の例であれば上述したように作業場所の確保のためにワークＢの退避が必要となる。或いは、初期位置と最終位置の間に何らかの障害物がある等の理由で、ワークが進入して欲しくない領域が設定されることもあり、その場合当該進入して欲しくない領域を避けるような経路を生成する必要がある。本実施形態では、レイアウト情報に途中位置を含めてもよいものとし、当該途中位置を設定することで、ワークの移動経路をより適切なものとすることを可能にしている。
【００７０】
以下の説明はレイアウト情報がワークの途中位置を含む場合を想定したものであり、制御装置１００に対して与えるべきレイアウト情報は、図５に示したワークＡの初期位置及びワークＢの初期位置を示す情報、図８に示したワークＡ＋Ｂの最終位置に対応する除材エリアＣの位置を示す情報、及び図９に示したワークＡの途中位置及びワークＢの途中位置を示す情報となる。
【００７１】
ここで各位置を表す情報をどのように形式とするかは種々の変形実施が可能である。例えば、実際の作業台上に図５、図８及び図９の状態となるようにワークを配置し、当該状態を作業台上方から撮像した撮像画像を用いてもよい。この場合、制御装置１００は撮像画像を取得し、当該撮像画像のうちどの画像領域が、ロボットの作業空間に対応するかを特定する。例えば作業台がロボットの作業空間に対応する場合には、撮像画像のうち作業台が撮像されている領域を抽出し、抽出された領域のどの位置にワークＡやワークＢが撮像されたかを求めることで、ワークＡ等の初期位置、最終位置、途中位置を特定する処理を行う。
【００７２】
或いは、作業空間は実際のものを用いるが、ワーク等については実物を用いなくてもよい。例えば何らかの指示器具を用いて作業空間上の点を指示し、指示された点を特定することでワークの初期位置等を取得してもよい。この場合、上述したように撮像画像の撮像を行い、撮像画像のうち指示器具が撮像された位置に基づいて初期位置等を特定してレイアウト情報を取得してもよい。或いは、指示器具自体に位置を検出するセンサー等を用いることで、撮像画像を用いずに指示器具により指示されている位置を特定し、レイアウト情報として取得してもよい。例えば、超音波や磁気を用いた位置測定システムは広く知られたものであるため、これらの手法を利用して指示器具により指示される位置を特定してもよい。
【００７３】
或いは、作業空間、ワークのいずれも実物を用いずに、シミュレーター上でレイアウト情報を生成してもよい。例えば、作業空間及びワークのサイズ、形状を再現したＣＡＤデータを作成しておき、２次元或いは３次元のシミュレーション空間上にワークを配置することで、図５等の状態を再現してもよい。その場合、情報取得部１１０では、当該シミュレーション空間と実際の作業空間を対応づける情報に基づいて、各ワークの位置を特定してレイアウト情報を取得することになる。
【００７４】
その他、情報取得部１１０が取得する情報や、取得した情報からワークの初期位置等を特定する手法は種々の変形実施が可能である。
【００７５】
３．２  局所領域の設定処理（作業空間の区画処理）
局所領域設定部１２１では、ロボットの作業空間内に平面的な複数の局所領域を設定する。設定される局所領域の例を図６に示す。図６では作業台に対応する作業空間を平面格子で分割することで４×４の局所領域を設定している。なお、各局所領域の縦方向の長さｘと横方向の長さｙは一致する必要はなく、図６に示したように長方形の局所領域が設定されてもよい。また、作業空間の縦方向の長さＸがｘの整数倍とならない場合があり、作業空間の横方向の長さＹについてもｙの整数倍とならない場合がある。よって図６に示したように、一部の局所領域については縦ｘ横ｙのサイズにならない場合もあり得る。
【００７６】
また、平面格子の間隔は一定であり、各局所領域は基本的に同一のサイズであることが想定される。しかしこれに限定されず、作業空間上での位置に応じて、異なるサイズの局所領域を設定してもよい。また、各局所領域は、格子状である場合に限定されず、例えば、三角形や六角形等であってもよい。
【００７７】
また、設定される局所領域のサイズは所与の固定値を用いてもよいが、レイアウト情報に含まれるワークのサイズ情報に基づいて、局所領域のサイズ設定処理を行ってもよい。具体的には、処理部１２０は、レイアウト情報に基づいて、作業対象であるワークのサイズ情報を特定し、サイズ情報に基づいて、局所領域のサイズを設定してもよい。
【００７８】
これにより、ワークサイズに基づいて局所領域のサイズを設定することが可能になる。本実施形態ではロボット動作情報の生成処理は局所領域単位で行われる。よって局所領域のサイズは処理精度や計算量（演算時間）に直結することになる。
【００７９】
例えば、局所領域のサイズを比較的小さくすれば、当該局所領域を用いた処理の精度を向上させることができる。具体的には、１０ｃｍ程度のサイズのワークに対して１ｃｍ×１ｃｍのサイズの局所領域を設定すれば、当該局所領域により表されるワークの位置や、ワークの移動経路はかなり高精度なものとなる。反面、ワークの位置や移動経路がわずかに（例えば１ｃｍ程度）ずれただけでも、当該ワークの位置等に対応する局所領域は異なるものとなるため、処理に必要な計算量が増大し、ロボット動作情報の作成までに時間を要することになる。上述してきたように、本実施形態の手法はロボット動作の決定処理における上流工程に対応するものであり、後段のユニットにおいてより詳細な処理が行われる。よって、本実施形態に対応する処理工程では精度に対する要求は低く、むしろ高速処理が重要となる。つまり、局所領域は過剰に小さいサイズとすべきではない。
【００８０】
一方、局所領域のサイズを比較的大きくすれば、局所領域を用いた処理の計算量は小さくなり高速化が可能となる。具体的には、２０ｃｍ×２０ｃｍのサイズの局所領域を設定すれば、１ｃｍ×１ｃｍの局所領域を設定する場合に比べて、単位面積当たりの局所領域数は１／４００となる。そのため、図１８のＲ１やＲ２等に示すように局所領域単位で移動経路を決定する際にも、経由する局所領域を少なくできたり、細かい局所領域を用いた場合には異なる経路として認識される移動経路を１つの移動経路として処理することができ、計算量が削減できる。反面、処理単位が大きくなれば処理の精度が低くなる。結果として、求められる移動経路、ロボット動作が過剰に粗い情報であったため、下流工程における探索空間を充分に限定することができず、当該下流工程を担う後段のユニットでの処理負荷が増大する可能性がある。また、処理精度が低すぎれば、作成されるロボット動作が、対象としているロボットにより実行可能か否かという判定を誤る可能性も出てくる。
【００８１】
以上の点を鑑みれば、局所領域は精度と処理負荷のバランスのとれたサイズを設定するとよい。その際、処理の精度は局所領域のサイズだけではなく、当該局所領域サイズと、ワークサイズとの相対関係によっても決まるものである。例えば３ｃｍ×３ｃｍの局所領域を用いる場合、３ｃｍ×３ｃｍに収まる範囲の誤差を許容する処理となる。その際、対象としているワークがねじのように小さく、１ｃｍ×１ｃｍ程度のサイズであったとすると、許容される誤差はワークサイズに対して非常に大きい。この場合、ワークサイズに対して３００％の誤差が許容されてしまうため処理精度が充分であるとは言えない。一方、同じ３ｃｍ×３ｃｍの局所領域を用いる場合であっても、ワークが大きく３０ｃｍ×３０ｃｍ程度のサイズであれば、許容される誤差はワークサイズに対して１０％程度に抑えられる。
【００８２】
よって本実施形態では、ワークのサイズ情報に基づいて局所領域のサイズ設定処理を行ってもよい。例えば、レイアウト情報として与えられたワークのうち、最小のワークのサイズのｔ％のサイズの局所領域を設定すればよい。このようにすれば、各ワークについて、当該ワークのサイズを基準とした誤差を、多くともｔ％に抑えることが可能になる。ｔの値は種々考えられるが、例えば５０等の値を用いればよい。
【００８３】
３．３  ロボット動作情報作成処理
次にレイアウト情報と局所領域に基づいて、ロボット動作情報を作成する処理について説明する。
【００８４】
まずは、ワーク移動情報生成部１２３において、与えられたレイアウト情報を、局所領域に落とし込む処理を行う。具体的には、ワークの初期位置、最終位置、途中位置を局所領域を用いて表現する。
【００８５】
具体例を図を用いて説明する。ワークＡ、ワークＢの初期位置は図５に示した位置であることがレイアウト情報からわかっている。また、局所領域は図６に示した平面格子により分割される領域であるため、これらを合わせることで図７のようになる。これにより、ワークＡの初期位置は縦方向でＢとＣの間、横方向で０と１の間となる１つの局所領域に対応することがわかる。よって図１２に示したように、ワークＡの初期位置を局所領域を用いてＢ０Ｃ１と表現する。
【００８６】
同様に、ワークＢの初期位置はＣ１Ｄ２と表現できる。同様に、ワークＡとワークＢが組み付けられたワークＡ＋Ｂについては、除材エリアＣが最終位置となり、除材エリアＣは図８に示したように４つの局所領域にまたがる領域となる。よって図１２に示したように、ワークＡ＋Ｂの最終位置はＢ２Ｄ４と表現できる。途中位置についても同様であり、図９よりワークＡの途中位置は２つの局所領域にまたがるため、Ｃ１Ｄ３と表現され、ワークＢの途中位置はＢ１Ｃ２と表現される。
【００８７】
ここで、図９に示した途中状態から図８に示した最終状態へ移行するためには、ワークＡに対して上からワークＢを組み付ける作業が必要となる。つまり、図１０に示したようにＣ１Ｄ３の位置にあるワークＡの上に、ワークＢを移動させるステップも必要となり、図１２にはこの作業を右から２列目に記載している。つまりワークＢについては図９に示した途中位置Ｂ１Ｃ２だけではなく、図１０に示したＣ１Ｄ３も途中位置として用いることになる。なお、図１０に示した組み付けに関する情報は、レイアウト情報として与えられるものであってもよいし、図８及び図９の情報に基づいて制御装置１００の処理部１２０において作成してもよい。
【００８８】
以上の処理により、ワークＡについてＢ０Ｃ１→Ｃ１Ｄ３という移動、ワークＢについてＣ１Ｄ２→Ｂ１Ｃ２→Ｃ１Ｄ３という移動、ワークＡ＋ＢについてＣ１Ｄ３→Ｂ２Ｄ４という移動を行えばよいという情報が得られる。
【００８９】
さらにワーク移動情報生成部１２３では、各ワークの初期位置、途中位置、最終位置の間を必要に応じて補間することで、１又は複数のワーク移動情報を生成する。例えばワークＡのＢ０Ｃ１→Ｃ１Ｄ３という移動から、Ｃ１Ｄ２で表される局所領域を経由するＢ０Ｃ１→Ｃ１Ｄ２→Ｃ１Ｄ３という経路を作成してもよいし、Ｂ１Ｃ２で表される局所領域を経由するＢ０Ｃ１→Ｂ１Ｃ２→Ｃ１Ｄ３という経路を作成してもよい。
【００９０】
ワークＢ、ワークＡ＋Ｂについても同様である。例えば、ワークＡ＋ＢのＣ１Ｄ３→Ｂ２Ｄ４を、Ｃ１Ｄ３→Ｃ２Ｄ３→Ｂ２Ｄ４と補間すればよい。なお図５等の例では、各ワークの初期位置と途中位置、或いは途中位置と最終位置が近いため、ワークＢのＣ１Ｄ２→Ｂ１Ｃ２→Ｃ１Ｄ３のように、特に補間処理が必要ない場合もあり得る。
【００９１】
図１８のＲ１やＲ２等に示したように、初期位置、途中位置、最終位置が決定されたとしても、それらの位置から求められるワーク移動情報は１つとは限らない。よって本実施形態のワーク移動情報生成部１２３では、複数のワーク移動情報を出力してもよい。
【００９２】
次に可動範囲情報の生成処理について説明する。可動範囲情報生成部１２５では、ロボットの可動部の可動範囲を局所領域を用いて表現することで可動範囲情報を生成する。例えば、対象としているロボットの第１のアーム（ここでは左腕）の可動範囲及び第２のアーム（右腕）の可動範囲が図１１に示した範囲である場合、可動範囲情報生成部１２５は、第１のアームについてＢ０Ｅ３、第２のアームについてＢ１Ｅ４という可動範囲情報を生成する。
【００９３】
なお、可動範囲情報を求めることで、対象としているロボットではどのアームを用いたとしても到達することができない領域を容易に求めることができる。図１１の例ではＢ０Ｅ４で表される領域は第１，第２のいずれかのアームにより到達可能であるが、作業空間のうちＡ０Ｂ４で表される領域は対象としているロボットでは作業不可能な領域となる。よって、ワーク移動情報生成部１２３において、このような領域を通過するワーク移動情報を生成したとしても、当該ワーク移動情報に沿ったロボット動作情報は実行不可能なものとなるため、当該ワーク移動情報に対して処理を行う利点はない。
【００９４】
そこで本実施形態では、そのような不要なワーク移動情報の生成を抑止するために、可動範囲情報生成部１２５で求められる可動範囲情報を、ワーク移動情報生成部１２３に対して出力し、ワーク移動情報生成部１２３では入力された可動範囲情報を用いてワーク移動情報を生成してもよい。具体的には、ワークの初期位置、途中位置、最終位置を補間してワーク移動情報を求める（ワークの移動経路を局所領域単位で求める）際に、可動範囲を外れる経路を除外する処理を行えばよい。このようにすれば、生成されるワーク移動情報に沿ったワークの移動は、ロボットのいずれかのアームを用いれば実現可能なものとなる。
【００９５】
また、入力された可動範囲情報を、ワークの初期位置等の判定に用いてもよい。求められたワークの初期位置等がいずれのアームの可動範囲にも含まれない位置（図１１であればＡ０Ｂ４内の位置）であれば、当該ワークに対してはレイアウト情報に沿った作業を行うことができないということになる。その場合には、対象としているロボットにおいては、入力されたレイアウト情報が不適切であったと判定し、レイアウト情報の再入力を求める等のエラー処理を行ってもよい。
【００９６】
以上の処理により生成されたワーク移動情報及び可動範囲情報に基づいて、ロボット動作情報生成部１２７においてロボット動作情報を生成する。ここでロボット動作情報とは、ワーク移動情報により表されるワークの移動を実現するロボット動作に対応する情報である。ただし、後段のユニットでより詳細な処理が行われるため、本実施形態のロボット動作情報はアーム等の関節角を細かく規定するものでなくてもよい。例えば、本実施形態のロボット動作情報は、ワーク移動情報により表されるワークの移動を実行するアームを特定することで得られる情報であってもよい。つまり、ワークＡのＢ０Ｃ１→Ｃ１Ｄ３の移動（補間されたＢ０Ｃ１とＣ１Ｄ３の間の移動も含む）等について、当該移動を第１のアームで行うか、第２のアームで行うかを規定すればよい。そのため、第１のアームを用いてワークＡをＢ０Ｃ１からＣ１Ｄ３へ移動するに当たって、第１のアームに含まれる各関節の角度をどのように制御するかまでは規定しなくてよい。
【００９７】
まず使用するアームの選択においては、第１のアームであれば到達できるが第２のアームでは到達できない位置を含む移動では第１のアームを用いる必要がある。同様に、第２のアームであれば到達できるが第１のアームでは到達できない位置を含む移動では第２のアームを用いる必要がある。よって、ワーク移動情報に含まれる移動のうち、いずれかのアームのみで到達可能な位置については、当該到達可能なアームにより移動を行うとの決定を行う。
【００９８】
例えば、ワークＡの初期位置Ｂ０Ｃ１は第１のアーム（左腕）であれば到達できるが第２のアームでは到達できない。よって図５の例では、ワークＡのＢ０Ｃ１→Ｃ１Ｄ３への移動は第１のアームで行うものとし、本実施形態ではこの第１のアームを用いた移動を、Ｌ（Ｂ０Ｃ１→Ｃ１Ｄ３）Ａと表記する。
【００９９】
同様に、組み付け後のアームＡ＋Ｂの最終位置Ｂ２Ｄ４は、第２のアーム（右腕）であれば到達できるが第１のアームでは到達できない領域を含む。よって図８の例では、ワークＡ＋ＢのＣ１Ｄ３→Ｂ２Ｄ４への移動は第２のアームで行うものとし、本実施形態ではこの第２のアームを用いた移動を、Ｒ（Ｃ１Ｄ３→Ｂ２Ｄ４）Ａ＋Ｂと表記する。
【０１００】
一方、複数のアームが到達可能な位置での移動は、第１のアームで行ってもよいし、第２のアームで行ってもよい。例えば、ワークＢの移動である（Ｃ１Ｄ２→Ｂ１Ｃ２）Ｂ及び（Ｂ１Ｃ２→Ｃ１Ｄ３）Ｂ等はいずれのアームを用いてもよい。
【０１０１】
また、作業の順序としては、ワークＡを組み付け作業位置Ｃ１Ｄ３に移動させるためには、ワークＢを初期位置Ｃ１Ｄ２から途中位置Ｂ１Ｃ２に退避させておく必要がある。それらをふまえると、本実施形態のロボット動作情報は図１３に示したように、Ｒ（Ｃ１Ｄ２→Ｂ１Ｃ２）Ｂ、Ｌ（Ｂ０Ｃ１→Ｃ１Ｄ３）Ａ、Ｒ（Ｂ１Ｃ２→Ｃ１Ｄ３）Ｂ、Ｒ（Ｃ１Ｄ３→Ｂ２Ｄ４）Ａ＋Ｂとなる。
【０１０２】
以上の流れを図示したものが図１４（Ａ）〜図１４（Ｄ）である。まず、Ｒ（Ｃ１Ｄ２→Ｂ１Ｃ２）Ｂに対応する動作として、図１４（Ａ）に示したように、ワークＢを右腕を用いてＣ１Ｄ２からＢ１Ｃ２へ移動する。次に、Ｌ（Ｂ０Ｃ１→Ｃ１Ｄ３）Ａに対応する動作として、図１４（Ｂ）に示したように、ワークＡを左腕を用いてＢ０Ｃ１からＣ１Ｄ３へ移動する。次に、Ｒ（Ｂ１Ｃ２→Ｃ１Ｄ３）Ｂに対応する動作として、図１４（Ｃ）に示したように、ワークＢを右腕を用いてＢ１Ｃ２からＣ１Ｄ３へ移動して組み付け作業を行う。最後に、Ｒ（Ｃ１Ｄ３→Ｂ２Ｄ４）Ａ＋Ｂに対応する動作として、図１４（Ｄ）に示したように、組み付け作業後のワークＡ＋Ｂを右腕を用いてＣ１Ｄ３からＢ２Ｄ４（除材エリアＣ）へ移動する。
【０１０３】
ただし、作業順序１のＲ（Ｃ１Ｄ２→Ｂ１Ｃ２）Ｂは、Ｌ（Ｃ１Ｄ２→Ｂ１Ｃ２）Ｂに変更可能であるし、作業順序３のＲ（Ｂ１Ｃ２→Ｃ１Ｄ３）Ｂは、Ｌ（Ｂ１Ｃ２→Ｃ１Ｄ３）Ｂに変更可能である。つまり、左右のアームの選択結果として４通りのロボット動作情報の候補が得られることになる。具体的には、作業順序１のＲ（Ｃ１Ｄ２→Ｂ１Ｃ２）ＢをＬ（Ｃ１Ｄ２→Ｂ１Ｃ２）Ｂに変更した動作は図１５（Ａ）〜図１５（Ｄ）のようになる。図１４（Ａ）と比較した場合、図１５（Ａ）に示したようにワークＢをＣ１Ｄ２からＢ１Ｃ２へ移動する動作に左腕が用いられることになる。同様に、作業順序３のＲ（Ｂ１Ｃ２→Ｃ１Ｄ３）ＢをＬ（Ｂ１Ｃ２→Ｃ１Ｄ３）Ｂに変更した動作が図１６（Ａ）〜図１６（Ｄ）となり、作業順序１と作業順序３の両方を変更した動作が図１７（Ａ）〜図１７（Ｄ）となる。
【０１０４】
また、上述したように個々の移動についても、始点終点間の補間経路は複数の候補が考えられる。例えば、Ｌ（Ｂ０Ｃ１→Ｃ１Ｄ３）Ａは、Ｌ（Ｂ０Ｃ１→Ｃ１Ｄ２→Ｃ１Ｄ３）Ａであってもよいし、Ｌ（Ｂ０Ｃ１→Ｂ１Ｃ２→Ｃ１Ｄ３）Ａであってもよい。
【０１０５】
また、以上の説明では補間前の初期位置、最終位置、途中位置を基準として使用するアームを設定していた。例えば、ワークＡのＢ０Ｃ１→Ｃ１Ｄ３の移動は必ず一方の腕で行われるものとしていた。しかしロボット動作情報の作成処理はこれに限定されず、より細かい単位で使用するアームを決定してもよい。例えば、Ｂ０Ｃ１→Ｃ１Ｄ３の移動がＢ０Ｃ１→Ｃ１Ｄ２→Ｃ１Ｄ３の移動により実現される場合、Ｂ０Ｃ１→Ｃ１Ｄ２の移動と、Ｃ１Ｄ２→Ｃ１Ｄ３の移動とで異なるアームを用いるものとしてもよい。
【０１０６】
以上の点を鑑みるに、１つのレイアウト情報の入力に対して、複数のロボット動作情報が候補として得られることになり、場合によっては非常に多くのロボット動作情報の候補が取得されることもある。本実施形態では取得された複数のロボット動作情報を全て出力してもよい。
【０１０７】
しかし、本実施形態の処理が複数の処理工程のうちの上流工程に対応し、粗いロボット動作を求めるものであることに鑑みれば、作成されるロボット動作は少数（狭義には１つ）に限定されることが望ましい。上述したように、下流工程での計算量を削減するためには、上流工程の比較的粗い処理において、探索空間を限定しておくことが重要となるためである。
【０１０８】
よって、制御装置１００の処理部１２０は、ロボット動作情報が複数生成された場合に、図１９や図２０に示すように、複数のロボット動作情報それぞれについての作業評価値（作業コスト）を求め、求めた作業評価値に基づいて決定された１つのロボット動作情報を出力する。
【０１０９】
これにより、複数のロボット動作情報のうち、適切なものを選択することが可能になり、出力するロボット動作情報の数を限定することも可能になる。ロボット動作情報を１つ（或いは２以上であるが所与の閾値以下となる少数）に限定すれば、後段のユニットの処理負荷を抑えることが可能になる。また、作業コストを用いて出力を決定するため、より望ましいロボット動作情報を残すことが可能になる。なお、どのようなロボット動作情報を望ましいとするかは作業評価値としてどのような評価値を用いるかに依存する。図１９を用いて後述する例であれば移動距離（及び等速運動を仮定すれば移動時間）が短いものを優先して選択するし、図２０の例であれば移動時間が短いものを優先して選択する。或いは、ロボットの構造を考慮して作業評価値を算出してもよく、例えば後述する図２３に示すフローチャートのように、第１のアームと第２のアームとでそれぞれ作業評価値を算出してもよい。具体例を以下に示す。
【０１１０】
作業コストの算出手法は種々考えられるが、例えば移動時間をコストとしてもよい。例えば図１８に示したように所与のワークを初期位置から途中位置を経て最終位置まで移動させる場合に、Ｒ１とＲ２で示した２つの経路が候補となったとする。この際、アームの加減速を全く考慮しなくてもよいとの仮定をすれば、ワークの移動に要する時間は経由する局所領域の数に比例することになる。つまり図１９に示したように、Ｒ１での局所領域数が２１であり、Ｒ２での局所領域数が１４である場合には、各経路のコストは局所領域数そのものとなるため、Ｒ１では２１、Ｒ２では１４となる。この場合、よりコストの低い（移動時間が短い）Ｒ２の方がＲ１よりもよいとしてＲ２を出力対象とすればよい。
【０１１１】
また、通常のアームは速度０の状態から徐々に加速して最高速度に到達し、停止する際にも徐々に減速して速度が０の状態となる。つまり、加減速を考慮しない場合の速度変化が図２１（Ａ）となるのに対して、図２１（Ｂ）に示したように、速度変化を台形近似等を用いて処理する方がより正確なものとなる。つまり加減速を考慮する場合には、コストの算出は局所領域数そのものとはならず、速度変化を考慮したものとなる。例えば、移動経路上の各局所領域に対して、図２０に示したように速度に対応する値を割り振ってもよい。図２０では値が大きいほど速度が大きく、最高速度を４としている。この場合、各局所領域に割り当てられた速度の逆数により当該局所領域の移動に要する時間が表されるため、作業コストは移動経路上の局所領域での、逆数の総和をとればよい。図２０に示した加減速を考慮する例では、長距離を停止せずに移動できる場合のように、長時間最高速度を維持できれば、それだけコストを抑えることが可能になる。よって移動距離が長い経路の方が、移動距離が短い経路よりもコストが小さくなる可能性も生じうる。
【０１１２】
なお、図２１（Ｂ）の台形近似を行う場合、加速度及び減速度（すなわち台形の傾き）は一定であってもよいが、ユーザー入力等に応じて変更するものであってもよい。例えば、ユーザーが高速でワークを移動させることを重視しているのであれば、加速及び減速は最大値とするとよい。ここでの最大値とは、例えば関節を駆動するモーター（広義にはアクチュエーター）の機械的な性能により決定される最大加速度、最大減速度に対応する値である。一方、液体が入れられたコップ等を移動させる場合のように、急激な加減速を避けてゆっくり移動させることが重要な場合もある。その場合には、「ゆっくり移動させたい」というユーザー入力に基づいて、加速及び減速を緩やかに行う設定を行えばよい。加速度及び減速度が変更されれば、それに応じて各局所領域に対して割り当てられる速度値も変化するため、算出されるコストも変化する。つまり、ユーザーがどのような観点を重視しているかに応じて、算出される作業コストが変更されるものとしてもよい。
【０１１３】
さらにアームの構造等の情報を用いて作業コストの算出を行ってもよい。例えば、所与のアームにより作業を行う場合、当該アームが伸びた状態で行われるよりも、当該アームを畳んだ状態で行われる動作の方が制御が容易である。これはアームが伸びている場合、手先位置はアームの動作軸（回転軸）からの距離が大きく、より大きなモーメントが発生してしまうため、所望の位置での停止が難しくなることに起因する。つまり、左右のいずれのアームでの到達可能な位置で移動を行う場合であっても、より近い方のアームを用いるロボット動作情報の方が実現が容易である。この点を考慮して、所与のワークを所与の経路で移動させる場合にも、第１のアームを用いるか第２のアームを用いるかによって、当該経路に沿って算出される作業コストの値が異なるような作業コスト算出処理を行ってもよい。具体的には、遠い方のアームを用いる場合の作業コストに比べて、近い方のアームを用いる場合の作業コストが小さくなるような算出処理を行う。
【０１１４】
また、アームが複数の関節を含む場合、当該複数の関節のうち２以上の関節を連動して駆動させる必要がある動作に比べて、１つの関節だけを駆動すれば実現可能な動作の方が制御が容易である。本実施形態の処理では細かい関節の駆動までは踏み込まないことが想定されるが、単一の関節の駆動による手先の移動は、円形（或いは３次元での円形を２次元に射影した形状）となることはアームの構造を詳細に解析せずとも理解可能である。よって、ワークの移動経路が円形に近いか否か等の観点から作業コストの算出処理を行ってもよい。
【０１１５】
その他、作業コストの算出手法及び、算出されたコストを用いたロボット動作情報の選択手法は種々の変形実施が可能である。
【０１１６】
３．４  本実施形態の処理の流れ
図２２及び図２３を用いて本実施形態の処理の流れを説明する。図２２が本実施形態の処理の基本フローであり、この処理が開始されるとまず始状態に対応するレイアウト情報を取得する（Ｓ１０１）。始状態とは例えば図５に示した状態であり、レイアウト情報としては作業台上に図５に示した位置に配置されたワークＡ及びワークＢを撮像した撮像画像等を取得すればよい。
【０１１７】
そして、Ｓ１０１で取得されたレイアウト情報からワークのサイズ情報を取得するとともに（Ｓ１０２）、作業空間のサイズも取得する（Ｓ１０３）。なお図５の例等であれば、作業空間のサイズとは作業台のサイズに対応する。Ｓ１０２で取得したワークのサイズ情報に基づいて局所領域のサイズを設定する（Ｓ１０４）。例えば上述したようにワークのサイズ（狭義には複数のワークのうち最小のワークサイズ）の１／２等を、局所領域のサイズとすればよい。そしてＳ１０４で設定した局所領域サイズ（平面格子の間隔）を用いて、作業空間を局所領域に区画する（Ｓ１０５）。Ｓ１０５の処理結果は、例えば図６に示したものとなる。
【０１１８】
さらに、終状態に対応するレイアウト情報を取得する（Ｓ１０６）。終状態は例えば図８に示した状態である。なお、図２２のフローチャートでは、始状態に対応するレイアウト情報と終状態に対応するレイアウト情報を別タイミングで取得するものとしたがこれに限定されず、Ｓ１０２〜Ｓ１０５の前にＳ１０６の処理を行ってもよい。また、図２２のフローチャートではワークの途中位置に対応する途中状態（中間状態）は考慮していないが、レイアウト情報にワークの途中位置を含めてもよいことは上述したとおりである。
【０１１９】
次に、Ｓ１０１及びＳ１０６で取得されたレイアウト情報と、Ｓ１０５で設定した局所領域を用いて、ワークの初期位置、最終位置を局所領域と対応づける（Ｓ１０７）。これは例えば、図１２に示した情報を取得する処理に対応する。
【０１２０】
それとともにロボットの可動部分の可動範囲と、局所領域の対応付けから可動範囲情報を生成する（Ｓ１０８）。可動範囲情報とは、例えば図１１の例であれば第１のアームについてのＢ０Ｅ３、第２のアームについてのＢ１Ｅ４等の情報である。
【０１２１】
Ｓ１０７及びＳ１０８で作成された情報に基づいて、ワーク移動情報を生成する（Ｓ１０９）。本実施形態でのワーク移動情報は、図１２に示した情報に加えて、初期位置と最終位置の間の経路についても局所領域を用いて補間した情報を想定している。例えば、図１８のＲ１やＲ２等をワーク移動情報としてもよい。
【０１２２】
そして、可動範囲情報とワーク移動情報に基づいてロボット動作情報の生成を行う。これは、作業コスト（作業評価値）の算出処理（Ｓ１１０）と、算出された作業コストに基づくロボット動作情報の作成（選択）、出力処理（Ｓ１１１）により実現される。Ｓ１１１では、複数のロボット動作情報の候補のうち、Ｓ１１０で算出された作業コストが最小となるロボット動作情報を出力として決定する処理が行われる。
【０１２３】
Ｓ１１０の処理の具体的な流れの例を図２３に示す。作業コストの算出処理では、まず移動経路に沿った局所領域（移動マス）の数を積算する（Ｓ２０１）。ここでは図１９及び図２１（Ａ）に示したように等速での移動を想定しているが、図２０及び図２１（Ｂ）に示したように速度変化等を考慮してもよく、その場合、各局所領域について求められた評価値を積算すればよい。
【０１２４】
Ｓ２０１の処理結果を作業コストとしてもよいが、図２３のフローチャートでは第１，第２のアームによる違いも考慮して作業コストを求めるものとしている。具体的には、移動経路に沿った各局所領域を、第１のアームで扱われる局所領域と、第２のアームで扱われる局所領域に分け、アームごとに積算処理を行う（Ｓ２０２）。そして各アームについての作業コストを求めることで、処理対象としているロボット動作情報全体についての作業コストを求める（Ｓ２０３）。この際、上述したように用いられるアームに応じて、各局所領域に割り当てられる評価値を異なるものとしてもよい。
【０１２５】
なお、本実施形態の制御装置１００等は、その処理の一部または大部分をプログラムにより実現してもよい。この場合には、ＣＰＵ等のプロセッサーがプログラムを実行することで、本実施形態の制御装置１００等が実現される。具体的には、非一時的な情報記憶媒体に記憶されたプログラムが読み出され、読み出されたプログラムをＣＰＵ等のプロセッサーが実行する。ここで、情報記憶媒体（コンピューターにより読み取り可能な媒体）は、プログラムやデータなどを格納するものであり、その機能は、光ディスク（ＤＶＤ、ＣＤ等）、ＨＤＤ（ハードディスクドライブ）、或いはメモリー（カード型メモリー、ＲＯＭ等）などにより実現できる。そして、ＣＰＵ等のプロセッサーは、情報記憶媒体に格納されるプログラム（データ）に基づいて本実施形態の種々の処理を行う。即ち、情報記憶媒体には、本実施形態の各部としてコンピューター（操作部、処理部、記憶部、出力部を備える装置）を機能させるためのプログラム（各部の処理をコンピューターに実行させるためのプログラム）が記憶される。
【０１２６】
なお、以上のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語と共に記載された用語は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。また制御装置、ロボットシステム等の構成、動作も本実施形態で説明したものに限定されず、種々の変形実施が可能である。
【符号の説明】
【０１２７】
１００  制御装置、１１０  情報取得部、１２０  処理部、１２１  局所領域設定部、
１２３  ワーク移動情報生成部、１２５  可動範囲情報生成部、
１２７  ロボット動作情報生成部、１２９  作業コスト算出部、３００  ロボット本体、３１０  第１のアーム、３１１，３１３  関節、
３１５，３１７  フレーム、３１９  エンドエフェクター、３２０  第２のアーム、
４００  ベースユニット部
【図１】
2015058492.tif 000003
【図２】
2015058492.tif 000004
【図３】
2015058492.tif 000005
【図４】
2015058492.tif 000006
【図５】
2015058492.tif 000007
【図６】
2015058492.tif 000008
【図７】
2015058492.tif 000009
【図８】
2015058492.tif 000010
【図９】
2015058492.tif 000011
【図１０】
2015058492.tif 000012
【図１１】
2015058492.tif 000013
【図１２】
2015058492.tif 000014
【図１３】
2015058492.tif 000015
【図１４】
2015058492.tif 000016
【図１５】
2015058492.tif 000017
【図１６】
2015058492.tif 000018
【図１７】
2015058492.tif 000019
【図１８】
2015058492.tif 000020
【図１９】
2015058492.tif 000021
【図２０】
2015058492.tif 000022
【図２１】
2015058492.tif 000023
【図２２】
2015058492.tif 000024
【図２３】
2015058492.tif 000025