(58)【調査した分野】(Int.Cl.,DB名)
前記アクション情報に基づき、前記分割部によって分割されたアクションに関する前記依存情報を生成する依存情報生成部をさらに備える、請求項1、2または3に記載の作業計画装置。
【発明を実施するための形態】
【0010】
以下、添付図面を参照して、本願の開示する作業計画装置、作業計画方法および作業計画プログラムの実施形態を詳細に説明する。なお、以下に示す実施形態によりこの発明が限定されるものではない。
【0011】
まず、実施形態に係る作業計画方法について、
図1を用いて説明する。
図1は、実施形態に係る作業計画方法を示す模式図である。なお、
図1は、実施形態に係る作業計画方法の概要を模式的に示したものであり、かかる作業計画方法によって各アクションの開始時間が調整される前の状態を上段に、調整された後の状態を下段にそれぞれ示している。
【0012】
ここで、アクションとは、たとえば、「所定の場所へ移動する」、「所定の物品を保持する」、「所定の物品を温める」といった抽象化された作業単位(タスク)のことを指す。アクションは、作業の主体である実行主体を1または複数包含する。アクションが複数の実行主体を含む場合としては、「所定の物品を温める」というアクションが、加熱装置(たとえば、電子レンジ)と、加熱装置の開始操作を行うロボットという2つの実行主体で行われる場合が一例として挙げられる。
【0013】
図1の上段におけるアクションAに示すように、各アクションは、たとえば、開始条件、開始効果、終了条件、終了効果といった属性を有する。ここで、開始条件とは、アクションを開始するための条件を指し、たとえば、「電子レンジが使用されていない状態である」といった条件が含まれる。また、開始効果とは、アクションを開始することによって得られる効果を指し、たとえば、「電子レンジが使用中」という状態へ遷移することを示す。
【0014】
また、終了条件とは、アクションを終了させるための条件を指すが、アクションが自動的に終了する場合には、終了条件は不要である。また、終了効果とは、アクションを終了することによって得られる効果を指し、たとえば、電子レンジが未使用状態へ遷移することを指す。
【0015】
また、各アクションは、これらの属性に加えて作業の継続期間(継続時間長)を1つの属性として有する。かかる継続期間は、
図1に示す各アクションの時間軸に沿った幅に対応する。
【0016】
本実施形態に係る作業計画方法は、
図1の上段に例示した複数のアクションを受け付け、受け付けたアクションのうち、複数の実行主体を含んだアクションを実行主体ごとに分割する。そして、分割後のアクションを含む各アクションについて、開始時間の調整を行う。これにより、本実施形態に係る作業計画方法は、複数の実行主体に関する並列的かつ効率的な作業計画を生成する。
【0017】
具体的には、
図1の上段に示すように、実施形態に係る作業計画方法では、ロボット(不図示)を含む実行主体が1つのアクションと、実行主体が複数のアクションとが混在したアクション群を受け付ける。
図1の上段に示した場合では、アクションAおよびアクションCは、実行主体が1つ(双方とも実行主体はM)のアクションであり、アクションBは、実行主体が2つ(実行主体はMおよびN)のアクションである。
【0018】
なお、
図1の上段では、理解を容易にする観点から、各アクションが時間軸上に並べられた情報を開始時間の調整対象とする場合を例示しているが、調整対象となる各アクションは、時間軸上に並べられたものであることを要しない。すなわち、開始時間が定義されていない各アクションを調整対象としてもよい。この場合、実施形態に係る作業計画方法は、各アクションに対して開始時間を定義するが、この点については後述する。
【0019】
図1の上段に示した情報に基づき、実施形態に係る作業計画方法は、
図1の下段に示した処理を実行する。具体的には、実行主体がMおよびNであるアクションBを、実行主体がMであるアクションB_1と、実行主体がNであるアクションB_2とに分割する(
図1のステップS1参照)。なお、分割の仕方の詳細については後述する。
【0020】
つづいて、実施形態に係る作業計画方法は、実行主体がそれぞれ一定の個数に統一されたアクション群について、アクション間の開始タイミングを調整する。たとえば、実施形態に係る作業計画方法は、実行主体が一致する複数のアクション同士が時間軸上で重複範囲をもたないように調整する。なお、
図1には、実行主体がそれぞれ1つに分割される場合を例にとって示しているが、これに限らず、たとえば2つの実行主体が協調して動作を行う場合などでは、2つの実行主体を1つのまとまりとして取り扱うことができる。
【0021】
図1の下段に示すように、アクションBから分割されたアクションB_1と、アクションCとはともに実行主体がMであるので、
図1の上段に示したアクションCの開始時間のままでは、アクションB_1と、アクションCとは重複範囲をもつ。このため、
図1の下段に例示するように、実施形態に係る作業計画方法は、たとえば、アクションCの開始時間を遅らせることで、両者が重複範囲をもたないようにする(
図1のステップS2参照)。
【0022】
ここで、実施形態に係る作業計画方法は、かかる作業計画が対象とする作業に応じて実行主体が一致しない複数のアクションについての時間軸上での関係を調整する。
図1では、実行主体が一致しない複数のアクションについて、少なくとも2つ以上が時間軸上で重複範囲をもつように調整された場合を一例として示している。
図1の下段に例示するように、アクションBから分割されたアクションB_2と、アクションCとでは実行主体が異なるので、実施形態に係る作業計画方法は、両者が重複範囲をもつようにアクションCの開始時間を調整する。
【0023】
なお、
図1では、実行主体が一致しない複数のアクションについて、少なくとも2つ以上が時間軸上で重複範囲をもつ場合を例にとって示した。しかしながら、これに限らず、たとえば2つのロボットが1つの作業対象物へ同時に作業すると干渉する場合などでは、かかる複数のアクションが互いに重複範囲を持たないように調整することもできる。また、かかる複数のアクションは、作業計画が対象とする作業に応じ、互いに時間軸についての任意の関係で調整されてよい。
【0024】
なお、
図1では、1つのアクションに2つの実行主体が含まれる場合を例にとって説明したが、これに限らず、1つのアクションに3つ以上の実行主体が含まれていてもよい。また、
図1では、複数の実行主体のうち1つがロボットである場合を例にとって説明したが、これに限らず、ロボットは任意の数とすることができる。また、複数の実行主体がすべてロボットであってもよい。また、ロボットが双腕ロボットのように複数のハンドを有する場合、各ハンドをそれぞれ実行主体としてもよい。
【0025】
つづいて、実施形態に係るロボットシステム1について
図2を用いて説明する。
図2は、ロボットシステム1の構成を示すブロック図である。
【0026】
なお、以下では、配膳などを行ういわゆるサービスロボットを含むサービスロボットシステムを例に挙げて説明を行う。しかしながら、これに限らず、サービスロボットシステムは、試薬の調製や処理を行うバイオメディカルロボットシステムや、溶接や塗装、組み立て、研磨作業などを行う産業ロボットシステムにも置換可能である。以下では、サービスロボットについては「ロボット」と、サービスロボットシステムについては「ロボットシステム」と、それぞれ記載する。
【0027】
図2に示すように、ロボットシステム1は、作業計画装置10と、教示装置20と、コントローラ30と、ロボット40を備える。作業計画装置10は、
図1に示した作業計画方法を実行する装置であり、操作者の入力に基づいてロボット40を含む実行主体についての作業計画を生成し、教示装置20へ出力する。なお、作業計画装置10の詳細については、
図3以降を用いて後述する。
【0028】
教示装置20は、作業計画装置10から受け取った作業計画に基づいてロボット40の動作に関する教示データを生成する。そして、教示装置20は、かかる教示データに基づいてロボット40を動作させるジョブプログラムを生成する。なお、
図2では、作業計画装置10と教示装置20とが別体の場合について例示したが、教示装置20に作業計画装置10を含めることとしてもよいし、作業計画装置10に教示装置20を含めることとしてもよい。
【0029】
ここで、実施形態に係るロボット40は、たとえばアームの先端にハンドを有する自走式のロボットである。また、ジョブプログラムは、ロボット40の移動や停止、ハンドの移動、保持対象物の保持といった動作に関するデータを含む。コントローラ30は、入力されたジョブプログラムに従ってロボット40を動作させる制御を行う。
【0030】
次に、作業計画装置10の構成について
図3を用いて説明する。
図3は、作業計画装置10の構成を示すブロック図である。なお、
図3では、作業計画装置10の説明に必要な構成要素のみを示しており、一般的な構成要素についての記載を省略している。
【0031】
図3に示すように、作業計画装置10は、開始タイミング定義部11aと、分割部11bと、調整部11cとを備える。また、作業計画装置10は、アクション情報12aと、初期作業計画情報12bと、中間作業計画情報12cと、作業計画情報12dとを、図示しない記憶部に記憶する。なお、記憶部とは、メモリやハードディスクドライブといった記憶デバイスである。
【0032】
分割部11bは、分割可否判定部11baと、アクション分割部11bbと、依存情報生成部11bcとをさらに備える。また、調整部11cは、同一主体調整部11caと、主体間調整部11cbと、分割元調整部11ccと、待機調整部11cdとをさらに備える。
【0033】
アクション情報12aは、上記した作業単位(タスク)にそれぞれ対応するアクション情報の集合である。各アクション情報は、たとえば、アクションを識別する識別子、アクションの作業内容、かかる作業の実行主体および作業の継続期間を含む情報である。また、各アクションには、他のアクションとの関係を示す依存情報が含まれる。
【0034】
ここで、各アクション情報が含む実行主体の数は、1つに限られず複数であってもよい。このように実行主体の数を定めることで、作業計画の生成を、アクションどうしの組合せおよびアクションごとの実行主体の作業の組合せに多層化(階層化)することができる。
【0035】
たとえば、1つのアクションが実行主体として複数のロボットを含む場合では、かかるアクションを作業計画に組み込んでから、アクション内の複数のロボットの協調動作を決定したり、複数のロボットのうちいずれのロボットに作業させるかを決定したりできる。
【0036】
したがって、アクション単位で作業計画を生成することで、対象とする作業についての作業計画の生成を効率化することができる。また、アクションごとに実行主体の作業の組合せや実行主体を決定できるので、たとえばタクトタイムの短縮などに対して精密な検討を行うことができる。また、アクション単位の作業計画を生成しておき、かかる作業計画の生成後に実行主体を決定できるので、作業計画生成についての自由度が増加する。
【0037】
依存情報とは、アクション間の依存関係を示す情報である。ここで、依存関係とは、複数のアクションについて、先に実行するアクションの効果(上記した開始効果や終了効果)によって以降に実行するアクションの開始条件の一部またはすべてが満たされる関係を指す。
【0038】
たとえば、「皿を棚からとって、かかる皿をテーブルへ移動する」一連のアクションを例にとると、「皿をもっていること」が「棚から皿をとる」アクションの終了効果となる。そして、「皿をもっていること」は、「皿をテーブルへ移動する」アクションの開始条件となる。
【0039】
したがって、「棚から皿をとる」アクションの終了効果が満たされないと「皿をテーブルへ移動する」アクションの開始条件が満たされないので、「棚から皿をとる」および「皿をテーブルへ移動する」アクションは、互いに依存関係にあるといえる。
【0040】
また、さらに「コップをテーブルへ移動する」アクションがあるとした場合、かかるアクションの開始条件は「コップをもっていること」であり、「皿をもっていること」に影響を受けない。したがって、「棚から皿をとる」および「コップをテーブルへ移動する」アクションは、互いに依存関係にはないといえる。
【0041】
なお、依存情報は、アクションの効果に限らず、アクションの開始/終了に基づいてもよい。この場合、先のアクションの終了条件(終了状態)が、以降のアクションの開始条件となる。また、依存関係は、アクションの効果およびアクションの開始/終了に基づくこととしてもよい。
【0042】
なお、
図3では、アクション情報12aにおける各アクション情報が依存情報を含む場合を例示したが、依存情報を含まないアクション情報12aを用いることとしてもよい。この場合、依存情報を含まないアクション情報12aに基づき、後述する開始タイミング定義部11aが依存情報を生成する。
【0043】
開始タイミング定義部11aは、アクション情報12aに含まれる各アクション情報に対して開始タイミングを定義する。なお、開始タイミングの定義は、後述するアルゴリズムで行ってもよいし、各アクション情報に対応する矩形などを時間軸とともに表示画面上に表示させ、各矩形を移動させるなどの操作者入力によって行ってもよい。また、アルゴリズムで定義した開始タイミングを操作者入力で修正してもよいし、操作者入力によって、たとえば、おおまかに定義された開始タイミングをアルゴリズムで修正してもよい。
【0044】
ここで、
図4Aおよび
図4Bを用いて開始タイミング定義部11aが実行する処理について説明しておく。なお、以下では、対象作業(作業単位であるアクションの集合)が、「電子レンジで食べ物を温めている間に、かかる食べ物を盛り付ける皿を準備する」である場合を例にとって説明する。
【0045】
図4Aおよび
図4Bは、開始タイミング定義部11aが実行する処理を説明するための説明図(その1)および(その2)である。開始タイミング定義部11aは、操作者から入力された対象作業に基づき、アクション情報12aから該当するアクション情報を抽出する。そして、各アクション情報に対して開始タイミングを定義する。
【0046】
図4Aに示した表TC1の列CL1(実行主体)および列CL2(アクション名)は、アクション情報12aから抽出されたアクション情報の一部を例示したものである。また、表TC1の列CL3(開始タイミング)は、開始タイミング定義部11aが定義した開始タイミングである。
【0047】
ここで、理解を容易にする観点から、
図4Aに示した表TC1を、いわゆるガントチャート化したものを
図4Bに示す。なお、
図4Bに示した各矩形の時間軸に沿った幅、すなわち、上記したアクションの継続期間は、アクション情報12aから取得してもよいし、開始タイミング定義部11aで定義してもよい。
【0048】
なお、
図4Bに示すアクションTL1〜TL6の付番は、
図4Aの表TC1に示したアクションにおける開始タイミングの付番に対応している。たとえば、アクションTL3は、開始タイミングa3が定義された「棚の前へ移動する」アクションとなる。また、アクションTL4は、開始タイミングa4が定義された「皿をとる」アクションとなる。
【0049】
したがって、開始タイミング定義部11aによって開始時間が定義されたアクション情報の詳細は、時系列で以下に述べる動作になる。ロボット40が電子レンジに食べ物をセットする(アクションTL1)。ロボット40および電子レンジが、電子レンジで(食べ物を)温める(アクションTL2)。ここで、アクションTL2の実行主体にロボット40が含まれるのは、アクションTL2には、ロボット40が電子レンジに対して行う動作、たとえば、スイッチをONにする動作を含むためである。
【0050】
そして、アクションTL2に並行して、ロボット40が棚の前へ移動し(アクションTL3)、皿をとり(アクションTL4)、電子レンジの前へ移動する(アクションTL5)。そして、ロボット40が、電子レンジから食べ物を取り出し(アクションTL6)、対象作業が完了する。
【0051】
なお、開始タイミング定義部11aのプランニング手法としては、以下に挙げる従来のアルゴリズムを好適に使用することができる。フローチャートの生成については、たとえば、STRIPSやGraphplan、NOAH、SATplan、FastDownward、FastForwardなどがある。ガントチャートの生成については、TemporalFastDownwardやSGPlanなどがある。なお、フローチャートを生成する場合、アクションごとの開始タイミングを開始タイミング定義部11aが定義することとすればよい。
【0052】
ところで、従来の手法で生成された作業計画では、アクションTL2およびアクションTL3〜TL5は、互いに並行する作業でありながら実行主体にロボット40をともに含む。したがって、計画された作業計画が確実に実行されない場合があった。
【0053】
また、従来の手法で生成された作業計画では、各アクション(アクションTL1〜TL6)の開始タイミングが、互いに固定されていた。したがって、アクションの継続期間(継続時間長)が外乱などにより変動した場合に、計画された作業計画が確実に実行されない場合があった。
【0054】
そこで、本実施形態では、並列作業を含んでいたり、アクションの継続期間が変動したりしても確実に対象作業を実行することができる作業計画を作成することとした。以下では、この点について説明する。
【0055】
図3の説明に戻り、作業計画装置10の説明をつづける。開始タイミング定義部11aは、対象作業を実行するように組み合わせたアクション情報などを初期作業計画情報12bとして出力する。
【0056】
初期作業計画情報12bは、開始タイミング定義部11aによって生成された作業計画が含むアクション情報を、それぞれに対応する開始タイミング情報とともに記憶する。なお、以下では、アクション情報、依存情報および開始タイミング情報を総称して「アクション情報」と呼ぶことがある。
【0057】
初期作業計画情報12bは、作業計画のうち最初に実行するアクションについての情報を第1アクション情報、第1依存情報および第1開始タイミング情報として出力する。
図3には、作業計画のうちk(自然数)およびk+1番目に実行されるアクションについての情報を、第k(第k+1)アクション情報、第k(第k+1)依存情報および第k(第k+1)開始タイミング情報としてそれぞれ示している。
【0058】
分割部11bは、開始タイミング定義部11aから出力された初期作業計画情報12bを受け取り、実行主体が複数のアクション情報を実行主体ごとに分割した中間作業計画情報12cを出力する。
【0059】
分割可否判定部11baは、初期作業計画情報12bにおける各アクション情報が、分割可能か否かを判定する。具体的には、分割可否判定部11baは、各アクション情報の実行主体が複数である場合には、分割が可能であると判定する。また、分割可否判定部11baは、各アクションの実行主体が単数(1つ)である場合には、分割することができないと判定する。
【0060】
そして、アクション分割部11bbは、分割可否判定部11baによって分割が可能であると判定されたアクション情報を、実行主体ごとに分割する。また、分割されたアクション情報のそれぞれに開始タイミングを定義する。たとえば、アクション分割部11bbは、
図1を用いて説明した開始効果が、アクションの開始時間よりも遅い時間に発生する場合、かかるタイミングをアクションB_2の開始時間とする(
図1参照)。
【0061】
依存情報生成部11bcは、アクション分割部11bbによって分割されたアクション情報のそれぞれについて依存情報を生成し、分割された各アクションへ対応付ける。そして、分割された各アクションに依存情報が対応付けられた情報を、中間作業計画情報12cとして出力する。なお、本実施形態では、依存情報生成部11bcが分割されたアクション情報に関する依存情報を生成する場合について説明するが、これに限らず、すべてのアクション情報に関する依存情報を生成することとしてもよい。
【0062】
なお、依存情報生成部11bcで生成される依存情報は、新たに生成されてもよいし、あらかじめアクション情報12aに含まれていてもよい。新たに生成される場合では、たとえば、先に実行するアクションの効果(上記した開始効果や終了効果)および以降に実行するアクションの開始条件に基づいて生成される。
【0063】
あらかじめアクション情報12aに含まれる場合では、分割前のアクション情報が実行主体ごとのアクション情報(および依存情報)を含んでおり、かかる分割前のアクション情報が依存情報生成部11bcで分割されるとともに、それぞれに対応する依存情報を含む分割後のアクション情報が生成される。
【0064】
このようにすることで、作業計画の設計者が、作業計画をたてる時点では、主体を意識せずに作業単位で考えた設計を行うことができる。つまり、設計者は、作業単位のアクションのみしか意識せずに済むので、設計者の作業負荷を低減することができる。
【0065】
図3には、2つに分割された場合の第kアクション情報、第k依存情報および第k開始タイミング情報を、それぞれ第k_1および第k_2アクション情報、第k_1および第k_2依存情報、および、第k_1および第k_2開始タイミング情報として示している。また、分割部12cで分割(更新)されなかった場合の、中間計画情報12cにおける第k+1アクション情報、第k+1依存情報および第k+1開始タイミング情報をあわせて示している。
【0066】
なお、分割可否判定部11baにおいて分割することができないと判定されたアクション情報については、分割部11bは初期作業計画情報12bから読み出したデータを更新することなく中間作業計画情報12cへ出力する。
【0067】
ここで、分割部11bが実行する処理について
図4Cを用いて説明しておく。
図4Cは、分割部11bが実行する処理を説明するための説明図である。なお、
図4Cでは、
図4Bを用いてすでに説明したアクションTL2が、実行主体であるロボット40および電子レンジの2つに分割される場合を例にとって説明する。
【0068】
アクション分割部11bbは、
図1を用いてすでに説明した開始効果に従ってアクションTL2を2つに分割する。本実施形態では、実行主体がロボット40である前処理に相当するアクションTL2_1、および、実行主体が電子レンジである主処理に相当するアクションTL2_2へアクションTL2を分割する。
【0069】
なお、
図3では、依存情報がアクション情報に含まれる場合を例にとって説明したが、依存情報とアクション情報とを独立した情報とし、作業計画装置10内に別々に記憶させることとしてもよい。この場合、依存情報は、たとえば、アクションの開始効果や終了効果、開始条件、終了条件などから生成することとすればよく、アクションを識別する識別子などを用いることで、対応するアクション情報と関連付けることとすればよい。なお、依存情報は、作業計画装置10からアクセス可能であれば作業計画装置10の外部にあってもよい。
【0070】
そして、依存情報生成部11bcは、アクションTL2_1について、アクションTL2_2を含む他のアクションとの依存情報を生成する。また、依存情報生成部11bcは、アクションTL2_2について、アクションTL2_1を含む他のアクションとの依存情報を生成する。
【0071】
たとえば、依存情報生成部11bcは、アクションTL2_1の終了効果およびアクションTL2_2の開始効果からアクションTL2_1およびTL2_2間の依存情報を生成する(
図4Cの矢印402参照)。また、アクションTL2_1の終了効果およびアクションTL3の開始効果からアクションTL2_1およびTL3間の依存情報を生成する(
図4Cの矢印404参照)。
【0072】
具体的には、矢印402の場合、たとえば、「ロボット40が電子レンジを操作可能な位置にいる」といったアクションTL2_1の終了効果や「電子レンジが未使用状態である」といったアクションTL2_2の開始効果から依存情報が生成される。また、矢印404の場合、たとえば、「ロボット40が電子レンジを操作可能な位置にいる」といったアクションTL2_1の終了効果や「ロボット40が作業していない」といったアクションTL3の開始効果から依存情報が生成される。
【0073】
なお、依存情報生成部11bcは、アクションTL2_1の終了条件およびアクションTL2_2の開始条件からアクションTL2_1およびTL2_2間の依存情報を生成してもよい。また、アクションTL2_1の終了条件およびアクションTL3の開始条件からアクションTL2_1およびTL3間の依存情報を生成してもよい。
【0074】
また、アクションTL2_1およびTL3のように実行主体(ロボット40)が同じものでは、先に実行するアクションTL2_1が終了したら、アクションTL3の開始条件が満たされるように依存情報が自動的に生成されるようにしてもよい。
【0075】
なお、アクションTL2_1の開始条件および開始効果については、アクションTL2の開始条件および開始効果を引き継ぐことができる。また、アクションTL2_2の終了条件および終了効果については、アクションTL2の終了条件および終了効果を引き継ぐことができる。
【0076】
図3の説明に戻り、作業計画装置10の説明をつづける。中間作業計画情報12cは、分割部11bを経たアクション情報である。中間作業計画情報12cの内容については既に説明したのでここでの説明を省略する。
【0077】
調整部11cは、分割部11bから出力された中間作業計画情報12cを受け取り、受け取った中間作業計画情報12cにおける各アクション情報の開始時間を調整した作業計画情報12dを出力する。以下では、
図4D〜
図4Hを用いて調整部11cが実行する処理について説明する。
図4D〜
図4Hは、調整部11cが実行する処理を説明するための説明図(その1)〜(その5)である。
【0078】
まず、
図4Dを用いて同一主体調整部11caおよび主体間調整部11cbについて説明する。
図4Dには、中間作業計画情報12cから読み出された中間作業計画の一例のガントチャートを示している。
【0079】
同一主体調整部11caは、同一の実行主体にかかるアクションが時間軸についての重複範囲を有する場合、かかるアクションの開始タイミングを調整して重複範囲をもたないようにする。これにより、実行主体が一致する複数のアクションを矛盾なく計画することができる。
【0080】
図4Dには、アクションTL2_1に対して重複範囲を有するアクションTL3の開始タイミングを調整した場合を示している(同図に示す矢印406参照)。なお、
図4Dには、調整前のアクションTL3を点線で示している。
【0081】
なお、
図4Dに示した例では、アクションTL3およびTL2_1間の重複を回避するためにアクションTL3の開始タイミングを遅らせることとしたが、これに限らず、たとえば、アクションTL2_1の開始タイミングを早めてもよい。また、アクションTL2_1の開始タイミングを早めつつ、アクションTL3の開始タイミングを遅らせることとしてもよい。
【0082】
次に、主体間調整部11cbについて説明する。主体間調整部11cbは、実行主体が一致しない複数のアクションの少なくとも2以上が時間軸についての重複範囲を有するように開始タイミングを調整する。なお、たとえば
図4Bに示したアクションTL1のように、時間軸について重複する他のアクションが存在しない場合では、かかる調整を行わない。
【0083】
図4Dには、アクションTL2_2がアクションTL3およびTL4との間で重複範囲を有する場合を例にとって示している。これにより、複数の実行主体によるアクションが並列的に動作する作業計画を効率的に作成することができる。
【0084】
次に、
図4Eを用いて分割元調整部11ccおよび同一主体調整部11caが実行する処理について説明する。分割元調整部11ccは、分割部11bによって1つのアクションから分割された各アクションが時間軸について連続するように開始タイミングを調整する。
【0085】
図4Eには、
図4Dに示したアクションTL4、アクションTL5およびアクションTL6の開始タイミングを調整してアクションTL3へ連続させる場合を示している(同図に示す矢印410参照)。なお、
図4Eには、アクションTL3〜アクションTL5について、アクションの終了時間と次のアクションの開始時間とを一致させる場合を例示しているが、かかる終了時間および開始時間の間隔を短くするだけでも構わない。
【0086】
すなわち、実行主体が一致する複数のアクションのうち、時間軸について隣接するアクション間に所定の時間間隔がある場合に、開始タイミングが遅い方のアクションの開始タイミングを開始タイミングが早い方のアクションの終了時間へ近づければよい。これにより、実行主体が一致するアクション群についての無駄な待ち時間を排除することができる。
【0087】
なお、同一主体調整部11ca、主体間調整部11cbおよび分割元調整部11ccがそれぞれ実行する処理は、任意の順番で行われてよい。すなわち、
図3に示した調整部11c内の情報の流れ方向を示す矢印は一例に過ぎない。
【0088】
つづいて、
図4F〜
図4Hを用いて待機調整部11cdが実行する処理について説明する。待機調整部11cdは、中間作業計画情報12cにおけるアクション情報12aにおける依存情報に基づき、各アクションの開始タイミングを調整する。具体的には、待機調整部11cdは、一のアクションの開始条件として他のアクションの終了が含まれる場合に、一のアクションの開始タイミングが、他のアクションの終了タイミング以降となるように調整する。
【0089】
すなわち、待機調整部11cdは、中間作業計画情報12cにおける開始タイミング情報の開始時間よりも、他のアクションの終了タイミングを優先して一のアクションの開始タイミングを決定する。
【0090】
これにより、作業計画における各アクションの開始タイミングが、あらかじめ設定された開始時間に固定されるのではなく、アクションの終了タイミングによって変動可能となる。したがって、たとえばアクションの継続期間(継続時間長)が外乱などで変動した場合であっても確実に作業計画を実行することができる。以下では、この点について具体的に説明する。
【0091】
図4Fには、待機調整部11cdがアクション情報12aにおける依存情報に基づいて生成するアクション間の終了および開始条件の関係を模式的に示している。
図4Fでは、それぞれの実線の矢印の基端側のアクションの終了が、先端側のアクションの開始条件に含まれることを示している。そして、待機調整部11cdは、かかる実線の矢印で表されるアクションの実行順序を満たすようにアクションTL1〜TL6の開始タイミングを調整する。
【0092】
また、待機調整部11cdは、たとえばアクションTL2_2に対するアクションTL5およびTL6のように、実行主体が異なるアクションにおいて、以下に述べる手法でアクションに対する開始条件を生成することとしてもよい。
【0093】
具体的には、待機調整部11cdは、アクションTL2_2と、アクションTL2_2の終了以降において開始タイミングが最も早いアクションTL5とをリンク付けする(同図に示す矢印414参照)。そして、アクションTL5の開始条件にアクションTL2_2の終了が含まれているか否かを判定する。
【0094】
なお、
図4Fに示す例では、アクションTL5の開始条件にアクションTL2_2の終了が含まれないので、待機調整部11cdは、矢印414で示したリンクを削除する。そして、アクションTL2_2と、アクションTL2_2の終了以降において開始タイミングがアクションTL5の次に早いアクションTL6とをリンク付けし、アクションTL6の開始条件にアクションTL2_2の終了が含まれているか否かを判定する。
【0095】
なお、
図4Fに示す例では、アクションTL6の開始条件にアクションTL2_2の終了が含まれるので、待機調整部11cdは、両者のリンク付けを確定する(同図に示す矢印412)。つまり、待機調整部11cdは、アクションTL6の開始タイミングを、アクションTL2_2以降とするように関連付ける。このような手法を用いることで、作業計画装置10の処理負荷を低減しつつ、並列化された作業計画を簡便かつ確実に生成することができる。
【0096】
次に、待機調整部11cdによって関連付けられる各アクションの開始タイミングについて
図4Gおよび
図4Hを用いてさらに具体的に説明しておく。
図4Gおよび
図4Hは、理解を容易にする観点から、
図4Fですでに説明した作業計画を、ガントチャートとして示したものである。
【0097】
なお、以下に説明する処理は、待機調整部11cdによる開始タイミングの関連付けを含む作業計画情報12dに基づいて教示装置20(
図2参照)が生成するジョブプログラムをロボット40(
図2参照)が実行する場合に行われる。
【0098】
したがって、待機調整部11cdは、以下に説明する処理を行うことができる情報を作業計画に付加し、教示装置20は、かかる付加された情報を、たとえばウェイト(待機)のコマンドとしてジョブ化する。以下では、待機調整部11cdにより作業計画を実行するジョブに付加されるジョブを「待機調整ジョブ」と呼ぶ。
【0099】
図4Gには、たとえば外乱などによってアクションTL2_2の継続期間(継続時間長)が伸びた場合を示している(同図に示す矢印416参照)。この場合、開始タイミングa6’においてアクションTL2_2は終了しない。したがって、待機調整ジョブはアクションTL6の開始にアクションTL2_2の終了を待機させる(同図に示す矢印418参照)。
【0100】
そして、待機調整ジョブは、アクションTL2_2の終了タイミングに、アクションTL6の開始タイミングを設定する(同図に示す開始タイミングa6’’参照)。なお、
図4Gには、開始タイミングを調整する前のアクションTL6を点線で示している。
【0101】
このように、作業計画にかかるアクションの継続期間(継続時間長)が当初予定した期間よりも伸びた場合であっても、かかるアクションに依存するアクションの開始タイミングを自動的に調整するので、作業計画を確実に実行することができる。
【0102】
また、
図4Hには、アクションTL4の処理が当初予定した期間よりも早く終了した場合を示している(同図に示す矢印420参照)。なお、
図4Hには、当初予定したアクションTL4を点線で示している。
【0103】
この場合、待機調整ジョブは、アクションTL5およびTL6の開始タイミングを、アクションTL4の終了にあわせて時間軸についての早い方へシフトさせる(
図4Hの矢印422参照)。
図4Hには、このようにシフトされたアクションTL5およびTL6の開始タイミングを開始タイミングa5’’およびa6’’’として示している。
【0104】
このように、作業計画にかかるアクションの継続期間(継続時間長)が当初予定した期間よりも短くなった場合であっても、かかるアクションに依存するアクションの開始タイミングを自動的に調整するので、作業計画を迅速に実行することができる。
【0105】
このように、実施形態に係る待機調整部11cdによれば、作業計画にかかるアクションの開始タイミングを自動的に変更することが可能となる。したがって、アクションの継続期間(継続時間長)が変動した場合においても、作業計画をかかる変動に追従させつつ確実に実行することができる。
【0106】
図3の説明に戻り、作業計画装置10の説明をつづける。待機調整部11cdは、作業計画情報を作業計画情報12dとして出力する。なお、調整部11cに含まれる同一主体調整部11ca、主体間調整部11cb、分割元調整部11ccおよび待機調整部11cdの実行順序は問わないので、これらの処理部のうち最後に実行される処理部が作業計画情報12dを出力することになる。そして、作業計画情報12dは、教示装置20(
図2参照)によって読み出され、ロボット40(
図2参照)を含む実行主体の作業計画として使用される。
【0107】
図3には、調整部11cを経た第k_1および第k_2アクション情報、第k_1および第k_2依存情報、および、第k_1および第k_2開始タイミング情報のそれぞれに対応する情報に「’(プライム)」を付して示している。ただし、中間作業計画情報12cと作業計画情報12dとは必ずしも異なっているとは限らず同じである場合も含んでいる。
【0108】
たとえば、第k_1および第k_2アクション情報、第k_1および第k_2依存情報、および、第k_1および第k_2開始タイミング情報が調整部11cで更新されず、同図に示す分割部11bで分割(更新)されなかった第k+1アクション情報、第k+1依存情報および第k+1開始タイミング情報が調整部11cで更新されてもよい。
【0109】
なお、上述した作業計画装置10において実行される各処理機能は、全部または任意の一部が、コンピュータおよびコンピュータで解析実行されるプログラムにて、あるいは、ワーヤードロックによるハードウェアとして実現され得る。また、かかるコンピュータを作業計画装置10の外部に設け、作業計画装置10と通信するようにしてもよい。
【0110】
また、かかるプログラムは、インターネットなどのネットワークを介して配布することができる。さらに、かかるプログラムは、ハードディスクドライブ、DVD(Digital Versatile Disk)といったコンピュータで読み取り可能な媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することもできる。
【0111】
なお、上述した説明では、作業計画装置10がアクション情報12aおよび初期作業計画情報12bを記憶することとした。しかしながら、作業計画装置10がアクション情報12aおよび初期作業計画情報12bを記憶せず、あらかじめ生成された初期作業計画情報12bを取得することとしてもよい。この場合、作業計画装置10は、アクション情報12a、開始タイミング定義部11aおよび初期作業計画情報12bに代えて初期作業計画情報を取得する取得部を有することとすればよい。
【0112】
また、上述した説明では、分割部11bが中間作業計画情報12cを生成し、生成した中間作業計画情報12cを作業計画装置10内で記憶することとした。しかしながら、これに限らず、中間作業計画情報12cを生成せずに、初期作業計画情報12bを処理する分割部11bが処理結果を随時、調整部11cへ出力することとしてもよい。なお、作業計画情報12dについても同様に、作業計画装置10内で記憶することを要せず、たとえば、教示装置20(
図2参照)へ随時送信することとしてもよい。
【0113】
次に、実施形態に係る作業計画装置10が実行する処理手順について
図5を用いて説明する。
図5は、実施形態に係る作業計画装置10が実行する処理手順を示すフローチャートである。
【0114】
図5に示すように、開始タイミング定義部11aは、アクション情報12aからアクション情報を読み出す(ステップS101)。開始タイミング定義部11aは、読み出したアクション情報に開始タイミングを定義する(ステップS102)。
【0115】
分割可否判定部11baは、アクションの実行主体の数に基づいてアクション情報が分割可能か否かを判定する(ステップS103)。そして、アクション情報が分割可能と判定された場合(ステップS103,Yes)、すなわち、実行主体が複数の場合には、アクション分割部11bbは、アクション情報を実行主体ごとに分割する(ステップS104)。そして、依存情報生成部11bcは、アクション分割部11bbで分割されたアクション情報に依存情報を追加する(ステップS105)。
【0116】
そして、すべてのアクションについて処理が終了したか否かが判定され(ステップS106)、すべてのアクションについて処理が終了した場合(ステップS106,Yes)には、調整部11cは、開始タイミング調整処理を行い(ステップS107)、処理を終了する。なお、ステップS103においてアクション情報が分割不可と判定された場合には(ステップS103,No)、ステップS104およびステップS105の処理を行うことなく、ステップS106の処理を行う。また、ステップS106において、すべてのアクションについて処理が終了していないと判定された場合には(ステップS106,No)、ステップS103以降の処理を繰り返す。
【0117】
次に、
図5のステップS107に示した開始タイミング調整処理の詳細な処理手順について
図6を用いて説明する。
図6は、開始タイミング調整の処理手順を示すフローチャートである。
【0118】
同一主体調整部11caは、依存情報に基づき、実行主体が一致する複数のアクション同士が時間軸上で重複範囲を持たないように開始タイミングを調整する(ステップS201)。
【0119】
主体間調整部11cbは、依存情報に基づき、実行主体が一致しない複数のアクションの2以上が時間軸上で重複範囲をもつように開始タイミングを調整する(ステップS202)。
【0120】
分割元調整部11ccは、依存情報に基づき、分割部11bによって1つのアクションから分割された各アクションが時間軸について連続するように開始タイミングを調整する(ステップS203)。なお、ステップS201〜S203の処理は、どの順番で行ってもよく、入れ替えが可能である。
【0121】
つづいて、主体間調整部11cbは、実行主体が一致する複数のアクションのうち、時間軸について隣接するアクション間に所定の時間間隔が存在する場合(ステップS204,Yes)、依存情報に基づき、開始タイミングが遅い方のアクションの開始タイミングを開始タイミングが早いほうのアクションの終了タイミングへ近づける(ステップS205)。
【0122】
一方、時間軸について隣接するアクション間に所定の時間間隔が存在しない場合には(ステップS204,No)、ステップS206以降の処理を実行する。
【0123】
そして、待機調整部11cdは、一のアクションの開始条件として他のアクションの終了が含まれる場合(ステップS206,Yes)、一のアクションの開始タイミングが他のアクションの終了タイミング以降となるように一のアクションの開始タイミングを調整し(ステップS207)、リターンする。
【0124】
一方、一のアクションの開始条件として他のアクションの終了が含まれない場合には(ステップS206,No)、リターンする。
【0125】
ところで、実施形態に係る作業計画装置10は、
図7に一例として示す構成のコンピュータ500によって実現される。
図7は、作業計画装置10の機能を実現するコンピュータの一例を示すハードウェア構成図である。
【0126】
コンピュータ500は、CPU(Central Processing Unit)510と、RAM(Random Access Memory)520と、ROM(Read Only Memory)530と、HDD(Hard Disk Drive)540と、通信インターフェイス(I/F)550と、入出力インターフェイス(I/F)560と、メディアインターフェイス(I/F)570とを備える。なお、コンピュータ500は、SSD(Solid State Drive)をさらに備え、HDD540の一部またはすべての機能をかかるSSDが行うようにしてもよい。また、HDD540に代えてSSDを設けることとしてもよい。
【0127】
CPU510は、ROM530およびHDD540のいずれか一方または双方に格納されたプログラムに基づいて動作し、各部の制御を行う。ROM530は、コンピュータ500の起動時にCPU510によって実行されるブートプログラムや、コンピュータ500のハードウェアに依存するプログラムなどを格納する。
【0128】
HDD540は、CPU510によって実行されるプログラムおよび、かかるプログラムによって使用されるデータ等を格納する。通信インターフェイス550は、ネットワーク580を介して他の機器からデータを受信してCPU510へ送り、CPU510が生成したデータを、ネットワーク580を介して他の機器へ送信する。
【0129】
CPU510は、入出力インターフェイス(I/F)560を介してディスプレイやプリンタ等の出力装置、および、マウスやキーボードなどの入力装置を制御する。CPU510は、入出力インターフェイス(I/F)560を介して、入力装置からデータを取得する。また、CPU510は、生成したデータを入出力インターフェイス(I/F)560を介して出力装置へ出力する。
【0130】
メディアインターフェイス570は、記録媒体590に格納されたプログラムやデータを読み取り、RAM520を介してCPU510に提供する。CPU510は、かかるプログラムを、メディアインターフェイス570を介して記録媒体590からRAM520上にロードし、ロードしたプログラムを実行する。記録媒体590は、たとえばDVDなどの光磁気記録媒体、半導体メモリなどである。
【0131】
たとえば、コンピュータ500が作業計画装置10として機能する場合、コンピュータ500のCPU510は、RAM520上にロードされたプログラムを実行することにより、開始タイミング定義部11a、分割部11bおよび調整部11cの機能を実現する。
【0132】
コンピュータ500のCPU510は、これらのプログラムを記録媒体590から読み取って実行するが、他の例として、他の装置からネットワーク580を介してこれらのプログラムを取得してもよい。また、HDD540は、アクション情報、初期作業計画情報、中間計画作業情報および作業計画情報をそれぞれ記憶することができる。
【0133】
上述してきたように、実施形態の一態様に係る作業計画装置は、分割部と、調整部とを備える。分割部は、ロボットを含む実行主体を1または複数含んでおり開始タイミングが定義された作業単位を示すアクションを複数含むアクション情報に基づき、アクションのうち実行主体を複数含むアクションを実行主体ごとに複数のアクションへ分割する。
【0134】
調整部は、分割部によって分割されたアクションを含む複数のアクション間の依存関係をあらわす依存情報に基づき、複数のアクションのうち実行主体が一致する複数のアクションの少なくとも1の開始タイミングを調整する。
【0135】
したがって、実施形態に係る作業計画装置によれば、複数の実行主体についての作業計画を効率的に作成することができる。
【0136】
さらなる効果や変形例は、当業者によって容易に導き出すことができる。このため、本発明のより広範な態様は、以上のように表しかつ記述した特定の詳細および代表的な実施形態に限定されるものではない。したがって、添付の特許請求の範囲およびその均等物によって定義される総括的な発明の概念の精神または範囲から逸脱することなく、様々な変更が可能である。