(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-05-01
(45)【発行日】2023-05-12
(54)【発明の名称】プランニングシステム、ロボットシステム、プランニング方法、およびプランニングプログラム
(51)【国際特許分類】
B25J 19/06 20060101AFI20230502BHJP
B25J 9/22 20060101ALI20230502BHJP
G05B 19/42 20060101ALI20230502BHJP
【FI】
B25J19/06
B25J9/22 Z
G05B19/42 J
(21)【出願番号】P 2021006285
(22)【出願日】2021-01-19
【審査請求日】2022-01-21
(73)【特許権者】
【識別番号】000006622
【氏名又は名称】株式会社安川電機
(74)【代理人】
【識別番号】100088155
【氏名又は名称】長谷川 芳樹
(74)【代理人】
【識別番号】100145012
【氏名又は名称】石坂 泰紀
(74)【代理人】
【識別番号】100171099
【氏名又は名称】松尾 茂樹
(74)【代理人】
【識別番号】100144440
【氏名又は名称】保坂 一之
(72)【発明者】
【氏名】高橋 誠
(72)【発明者】
【氏名】渡邉 航
(72)【発明者】
【氏名】内田 雄太郎
(72)【発明者】
【氏名】株丹 亮
【審査官】杉山 悟史
(56)【参考文献】
【文献】特開2020-168666(JP,A)
【文献】特開2002-116816(JP,A)
【文献】国際公開第2018/143003(WO,A1)
【文献】特開2000-20117(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 1/00 ~ 21/02
G05B 19/18 ~ 19/416
19/42 ~ 19/46
(57)【特許請求の範囲】
【請求項1】
予め定義された複数の作業タスクと、前記作業タスク間に位置するつなぎタスクとを含む複数のタスクパターンを生成するパターン生成部と、
複数のロボットによるタスクの同時実行に関する同時実行制約
と、前記複数のタスクパターンとに基づいて、
前記複数の作業タスクと
前記つなぎタスクとを含むタスクフローを生成するフロー生成部と、
前記生成されたタスクフローの前記つなぎタスクにおいて前記ロボットが他の物体と干渉するか否かを確認する確認部と、
前記干渉の発生が確認された場合に、前記生成されたタスクフローの前記つなぎタスクに関連する前記同時実行制約を更新する更新部と、
前記更新された同時実行制約に基づいて、前記フロー生成部に前記タスクフローを再生成させる再実行部と、
を備え
、
前記パターン生成部は、
前記作業タスクに対して、前記ロボットを待機させるための待機タスクを挿入する待機タスク挿入部と、
前記複数のタスクパターンのそれぞれについて、前記作業タスクおよび前記待機タスクのうちの少なくとも一つに前記同時実行制約を設定する制約設定部とを有する、
プランニングシステム。
【請求項2】
前記生成されたタスクフローの前記つなぎタスクでのエアカットパスを生成するパス生成部をさらに備え、
前記確認部は、前記エアカットパスにおいて前記ロボットが前記他の物体と干渉するか否かを確認し、
前記更新部は、前記干渉の発生が確認された場合に、前記生成されたタスクフローの前記つなぎタスクに関連する前記同時実行制約を更新する、
請求項1に記載のプランニングシステム。
【請求項3】
前記複数のロボットは第1ロボットおよび第2ロボットを含み、
前記パス生成部は、前記第1ロボットの前記つなぎタスクでの前記エアカットパスを、前記第1ロボットが前記第2ロボットの軌跡と干渉しないように生成する、
請求項2に記載のプランニングシステム。
【請求項4】
前記パターン生成部は、前記複数のタスクパターンのそれぞれについて、前記作業タスクおよび前記つなぎタスクのうちの少なくとも一つに前記同時実行制約を設定する制約設定部を有する、
請求項
1~3のいずれか一項に記載のプランニングシステム。
【請求項5】
前記待機タスク挿入部は、前記作業タスクでの前記ロボットの複数の候補姿勢のそれぞれについて、前記待機タスクの挿入を実行する、
請求項
1~4のいずれか一項に記載のプランニングシステム。
【請求項6】
前記更新部は、前記待機タスクに対応する待機時間を調整し、
前記フロー生成部は、前記調整の結果に基づいて前記タスクフローを再生成する、
請求項
1~5のいずれか一項に記載のプランニングシステム。
【請求項7】
前記パターン生成部は、隣り合う前記作業タスク間に前記つなぎタスクを挿入するつなぎタスク挿入部を有する、
請求項
1~6のいずれか一項に記載のプランニングシステム。
【請求項8】
前記パターン生成部は、前記ロボットが実行不可能な姿勢を含むタスクパターンを破棄して、前記複数のタスクパターンを生成する、
請求項
1~7のいずれか一項に記載のプランニングシステム。
【請求項9】
前記更新部は、前記エアカットパスに基づいて、前記つなぎタスクにおけるつなぎ時間を更新する、
請求項2
または3に記載のプランニングシステム。
【請求項10】
前記フロー生成部は、実行時間が最短である前記タスクフローを生成する、
請求項1~
9のいずれか一項に記載のプランニングシステム。
【請求項11】
前記フロー生成部は、前記同時実行制約に基づく巡回セールスマン問題を解くことによって前記タスクフローを生成する、
請求項1~
10のいずれか一項に記載のプランニングシステム。
【請求項12】
前記フロー生成部は、前記複数のロボットのそれぞれの待機姿勢をノードにより表現し、前記作業タスクおよび前記つなぎタスクを枝により表現する前記巡回セールスマン問題を解く、
請求項
11に記載のプランニングシステム。
【請求項13】
前記フロー生成部は、2以上の前記ロボットが同じノードおよび同じ枝を通過しないという制約を満たすように前記巡回セールスマン問題を解く、
請求項
12に記載のプランニングシステム。
【請求項14】
前記生成されたタスクフローにおいて前記干渉が発生しないことが確認された場合に、該タスクフローを1以上の前記ロボットに実行させるための動作プログラムを生成するプログラム生成部をさらに備える請求項1~
13のいずれか一項に記載のプランニングシステム。
【請求項15】
前記プログラム生成部は、前記生成されたタスクフローに基づいて、前記作業タスクと前記つなぎタスクとの間での前記ロボットの待機時間を設定し、該待機時間を含む前記動作プログラムを生成する、
請求項
14に記載のプランニングシステム。
【請求項16】
1以上のロボットと、
請求項
14または15に記載のプランニングシステムと、
前記生成された動作プログラムに基づいて前記1以上のロボットを動作させる1以上のロボットコントローラと、
を備えるロボットシステム。
【請求項17】
少なくとも一つのプロセッサを備えるプランニングシステムにより実行されるプランニング方法であって、
予め定義された複数の作業タスクと、前記作業タスク間に位置するつなぎタスクとを含む複数のタスクパターンを生成するステップと、
複数のロボットによるタスクの同時実行に関する同時実行制約
と、前記複数のタスクパターンとに基づいて、
前記複数の作業タスクと
前記つなぎタスクとを含むタスクフローを生成するステップと、
前記生成されたタスクフローの前記つなぎタスクにおいて前記ロボットが他の物体と干渉するか否かを確認するステップと、
前記干渉の発生が確認された場合に、前記生成されたタスクフローの前記つなぎタスクに関連する前記同時実行制約を更新するステップと、
前記更新された同時実行制約に基づいて前記タスクフローを再生成するステップと、
を含
み、
前記複数のタスクパターンを生成するステップは、
前記作業タスクに対して、前記ロボットを待機させるための待機タスクを挿入するステップと、
前記複数のタスクパターンのそれぞれについて、前記作業タスクおよび前記待機タスクのうちの少なくとも一つに前記同時実行制約を設定するステップとを含む、
プランニング方法。
【請求項18】
予め定義された複数の作業タスクと、前記作業タスク間に位置するつなぎタスクとを含む複数のタスクパターンを生成するステップと、
複数のロボットによるタスクの同時実行に関する同時実行制約
と、前記複数のタスクパターンとに基づいて、
前記複数の作業タスクと、
前記つなぎタスクとを含むタスクフローを生成するステップと、
前記生成されたタスクフローの前記つなぎタスクにおいて前記ロボットが他の物体と干渉するか否かを確認するステップと、
前記干渉の発生が確認された場合に、前記生成されたタスクフローの前記つなぎタスクに関連する前記同時実行制約を更新するステップと、
前記更新された同時実行制約に基づいて前記タスクフローを再生成するステップと、
をコンピュータに実行させ
、
前記複数のタスクパターンを生成するステップは、
前記作業タスクに対して、前記ロボットを待機させるための待機タスクを挿入するステップと、
前記複数のタスクパターンのそれぞれについて、前記作業タスクおよび前記待機タスクのうちの少なくとも一つに前記同時実行制約を設定するステップとを含む、
プランニングプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の一側面はプランニングシステム、ロボットシステム、プランニング方法、およびプランニングプログラムに関する。
【背景技術】
【0002】
特許文献1には、データセットに基づく機械学習プロセスの結果に基づいて、任意に設定された始点と終点との間のロボッ卜のパスを生成するロボッ卜パス生成装置が記載されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
ロボット制御のプランニングを効率的に実行することが望まれている。
【課題を解決するための手段】
【0005】
本開示の一側面に係るプランニングシステムは、複数のロボットによるタスクの同時実行に関する同時実行制約に基づいて、予め定義された複数の作業タスクと、作業タスク間に位置するつなぎタスクとを含むタスクフローを生成するフロー生成部と、生成されたタスクフローのつなぎタスクにおいてロボットが他の物体と干渉するか否かを確認する確認部と、干渉の発生が確認された場合に、生成されたタスクフローのつなぎタスクに関連する同時実行制約を更新する更新部と、更新された同時実行制約に基づいて、フロー生成部にタスクフローを再生成させる再実行部とを備える。
【0006】
本開示の一側面に係るプランニング方法は、少なくとも一つのプロセッサを備えるプランニングシステムにより実行される。プランニング方法は、複数のロボットによるタスクの同時実行に関する同時実行制約に基づいて、予め定義された複数の作業タスクと、作業タスク間に位置するつなぎタスクとを含むタスクフローを生成するステップと、生成されたタスクフローのつなぎタスクにおいてロボットが他の物体と干渉するか否かを確認するステップと、干渉の発生が確認された場合に、生成されたタスクフローのつなぎタスクに関連する同時実行制約を更新するステップと、更新された同時実行制約に基づいてタスクフローを再生成するステップとを含む。
【0007】
本開示の一側面に係るプランニングプログラムは、複数のロボットによるタスクの同時実行に関する同時実行制約に基づいて、予め定義された複数の作業タスクと、作業タスク間に位置するつなぎタスクとを含むタスクフローを生成するステップと、生成されたタスクフローのつなぎタスクにおいてロボットが他の物体と干渉するか否かを確認するステップと、干渉の発生が確認された場合に、生成されたタスクフローのつなぎタスクに関連する同時実行制約を更新するステップと、更新された同時実行制約に基づいてタスクフローを再生成するステップとをコンピュータに実行させる。
【0008】
本開示の一側面に係るロボットシステムは、1以上のロボットと、上記のプランニングシステムと、生成された動作プログラムに基づいて1以上のロボットを動作させる1以上のロボットコントローラとを備える。
【発明の効果】
【0009】
本開示の一側面によれば、ロボット制御のプランニングを効率的に実行できる。
【図面の簡単な説明】
【0010】
【
図1】ロボットシステムの構成の一例を示す図である。
【
図3】プログラミング支援装置のハードウェア構成の一例を示す図である。
【
図4】プログラミング支援装置の機能構成の一例を示す図である。
【
図5】プログラミング支援装置の動作の一例を示すフローチャートである。
【
図6】プログラミング支援装置の動作の一例を示すフローチャートである。
【
図7】候補姿勢に基づく待機タスクの挿入の一例を示す図である。
【
図8】複数のタスクパターンの一例を示す図である。
【
図9】巡回セールスマン問題の一例を示す図である。
【発明を実施するための形態】
【0011】
以下、添付図面を参照しながら本開示での実施形態を詳細に説明する。図面の説明において同一または同等の要素には同一の符号を付し、重複する説明を省略する。
【0012】
[ロボットシステム]
本実施形態では、本開示に係るプランニングシステムをロボットシステム1のプログラミング支援装置4に適用する。本開示において、プランニングシステムとは少なくとも一つのロボットの動作を決定するためのコンピュータシステムをいう。ロボットシステム1は、オペレータにより教示された動作をロボットに実行させることにより、加工、組立などの様々な作業を自動化するシステムである。
図1はロボットシステム1の構成の一例を示す図である。一例では、ロボットシステム1は、1以上のロボット2と、1以上のロボット2に対応する1以上のロボットコントローラ3と、プログラミング支援装置4とを備える。
図1は3台のロボット2および3台のロボットコントローラ3を示し、一つのロボットコントローラ3に一つのロボット2が接続される構成を示す。しかし、各装置の台数も接続方法も
図1の例に限定されない。例えば、一つのロボットコントローラ3に複数台のロボット2が接続されてもよい。
【0013】
一例では、ロボット2は多軸のシリアルリンク型の垂直多関節ロボットであり、その先端部5にツールを保持した状態で様々な処理を実行できるように構成される。ロボット2は、所定の範囲内において先端部5の位置および姿勢を自在に変更し得る。ロボット2は、6軸の垂直多関節ロボットでもよいし、6軸に1軸の冗長軸を追加した7軸の垂直多関節ロボットでもよい。一例では、複数台のロボット2は、同一の位置に配置された同一のワークに対し、いずれのロボット2によっても同一の処理を実行し得るように配置される。
【0014】
ロボットコントローラ3は、予め生成された動作プログラムに従ってロボット2を制御する装置である。一例では、動作プログラムはロボット2を制御するためのデータを含み、例えば、ロボット2の軌道を示すパスを含む。ロボット2の軌道とは、ロボット2またはその構成要素の動きの経路をいう。例えば、ロボット2の軌道は先端部5の軌道であり得る。一例では、ロボットコントローラ3は、動作プログラムで示される目標値に先端部5の位置および姿勢を一致させるための関節角度目標値(ロボット2の各関節の角度目標値)を算出し、その角度目標値に従ってロボット2を制御する。
【0015】
ロボットコントローラ3の制御によって少なくとも一つのロボット2は一連の処理を実行する。本開示ではその一連の処理をジョブともいう。また、そのジョブを構成する最小単位の処理をタスクという。したがって、ジョブは1以上のタスクを含む。それぞれのロボット2は「部品を取る」、「部品を置く」、「部品を(ワークに)嵌合する」、「待機姿勢を取る」などの様々なタスクを実行し得る。一つのタスクは、該タスクにおけるロボット2の軌道である一つのパスを含み得る。
【0016】
一例では、ロボット2は、自走可能な移動ロボットであってもよい。この場合には、ロボット2は処理の開始に先立って、動作プログラムに従って作業空間内を移動して所与の位置に移動し得る。例えば、ロボット2は他の物体を避けながら自走することが可能である。このロボット2は、動作プログラムで示される配置において、該動作プログラムで示されるジョブ(すなわち、少なくとも一つのタスク)を繰り返し実行し得る。
【0017】
プログラミング支援装置4は動作プログラムを生成する装置である。例えば、プログラミング支援装置4は、1以上のロボット2のそれぞれについて、該ロボット2により実行されるジョブを示す動作プログラムを生成する。一例では、プログラミング支援装置4は、パス、ある時点におけるロボット2の姿勢などのような、ジョブの少なくとも一部の構成要素を評価する。そして、プログラミング支援装置4はその評価結果に基づいて動作プログラムを生成する。プログラミング支援装置4はシミュレーションを実行してその評価を実行してもよい。シミュレーションとは動作プログラムの少なくとも一部を仮想的に実行する処理をいう。より詳しくいうと、シミュレーションは、ロボット2を実際に作動させることなく動作プログラムの少なくとも一部をコンピュータ上で模擬的に実行することをいう。一例では、シミュレーションは、ロボット2および他の物体が配置された仮想空間上で動作プログラムの少なくとも一部を仮想的に実行する処理である。他の物体とは、ロボット2の周辺に配置された物体であり、例えば、他のロボット2、ワーク、他の製造装置などであり得る。
【0018】
[タスクフロー]
一例では、プログラミング支援装置4はジョブを効率的に実行するためのタスクフローを生成し、そのタスクフローを1以上のロボット2に実行させるための動作プログラムを生成する。本開示において、タスクフローとは、どのロボットがどのタスクをどの順序でおよびどのタイミングで実行するかを示す情報をいう。
【0019】
一例では、タスクフローは複数の作業タスク、複数のつなぎタスク、および複数の待機タスクを含む。作業タスクとはユーザによって予め設定(定義)されたタスクをいう。つなぎタスクとは、ロボット2を次の作業タスクに案内するためのタスクをいい、隣り合う作業タスク間に位置する。待機タスクとはロボットを待機させるためのタスクをいう。待機タスクは作業タスクの開始および終了のそれぞれに対応して設定され、結果的に、待機タスクは作業タスクとつなぎタスクとの間に位置する。つなぎタスクおよび待機タスクはプログラミング支援装置4によって自動的に設定(挿入)される。
【0020】
本開示では、作業タスク内のパスを「作業パス」といい、つなぎタスク内のパスを「エアカットパス」という。作業パスは、作業タスクを生成する際にユーザによって予め設定(定義)される。エアカットパスは、先行する作業タスクにおける作業パスの終点と、後続の作業タスクにおける作業パスの始点とを結ぶ。一例では、エアカットパスは、例えば始点および終点以外の少なくとも一つの教示点が設定されることによって、自動的に設定される。教示点とは、パスを規定するために設定される基準点をいう。待機タスクではロボット2は動かないので、待機タスクはパスを有しない。
【0021】
図2はタスクフローの一例を示す図である。この例でのタスクフローは、2台のロボット2(ロボットRa,Rb)が、5個の作業タスクTa,Tb,Tc,Td,Teを含むジョブを協同して実行することを示す。
図2において、記号「S」はロボット2の開始姿勢(初期姿勢)を示し、記号「E」はロボット2の終了姿勢を示す。この例では、ロボットRaは作業タスクTa,Tb,Teをこの順に実行し、ロボットRbは作業タスクTc,Tdをこの順に実行する。待機タスクは作業タスクの開始および終了のそれぞれに対応して挿入される。つなぎタスクは、先行する作業タスクの終了に対応する待機タスクと、後続の作業タスクの開始に対応する待機タスクとの間に挿入され、この結果、隣り合う作業タスク間に位置することになる。
図2に示すように、一例では、つなぎタスクは開始姿勢と最初の作業タスクの開始に対応する待機タスクとの間にも挿入され、さらに、最後の作業タスクの終了に対応する待機タスクと終了姿勢との間にも挿入される。
【0022】
プログラミング支援装置4は、複数のロボット2によるタスクの同時実行に関する同時実行制約に基づいてタスクフローを生成する。同時実行制約は、ロボット2を動作させる際に課される制約(条件)の一種である。一例では、同時実行制約は、複数のロボット2が複数のタスクを並行して実行できるタイミングを示す。或る時間幅において複数のロボット2が複数のタスクを並行して実行できない場合(すなわち、タスクの同時実行が不可能である場合)には、その時間幅では、1台のロボット2のみがタスクを実行し、他のロボット2はタスクを実行せずに待機する。この待機は、所与の条件が整って初めて次の動作を実行させるための仕組みであるインターロックの一例である。
【0023】
図2の例では、ロボットRbは作業タスクTcを実行した後に、ロボットRaが作業タスクTbを終了するまで待機し、その後に次のつなぎタスクを実行する。ロボットRaは作業タスクTbの次のつなぎタスクを実行した後に、ロボットRbが作業タスクTdを終了するまで待機し、その後に作業タスクTeを実行する。この例では、ロボットRaが実際に待機する時間幅は、作業タスクTbに続くつなぎタスクを実行してから作業タスクTeを実行するまでの間である。ロボットRbが実際に待機する時間幅は、作業タスクTcを実行してから次のつなぎタスクを実行するまでの間である。これら二つの待機時間に対応する二つの待機タスクには0より大きい待機時間が設定され、他の待機タスクには待機時間として0が設定される。待機時間が0の待機タスクでは、ロボット2は静止することなく、隣接する作業タスクおよび待機タスクを連続して実行する。
図2の右側は、待機時間が0である待機タスクを省略したタスクフローを示す。
【0024】
[プログラミング支援装置]
図3はプログラミング支援装置4のハードウェア構成の一例を示す図である。プログラミング支援装置4は本体10、モニタ20、および入力デバイス30を備える。
【0025】
本体10は少なくとも一つのコンピュータにより構成される。本体10は回路160を有し、回路160は、少なくとも一つのプロセッサ161と、メモリ162と、ストレージ163と、入出力ポート164とを有する。ストレージ163は、本体10の各機能モジュールを構成するためのプログラムを記録する。ストレージ163は、ハードディスク、不揮発性の半導体メモリ、磁気ディスク、光ディスク等の、コンピュータ読み取り可能な記録媒体である。メモリ162は、ストレージ163からロードされたプログラム、プロセッサ161の演算結果等を一時的に記憶する。プロセッサ161は、メモリ162と協働してプログラムを実行することで、各機能モジュールを構成する。入出力ポート164は、プロセッサ161からの指令に応じ、モニタ20、入力デバイス30、およびロボットコントローラ3の間で電気信号の入出力を行う。
【0026】
モニタ20は、本体10から出力された情報を表示するための装置である。モニタ20は、グラフィック表示が可能であればいかなるものであってもよく、その例としては液晶パネル等が挙げられる。入力デバイス30は、本体10に情報を入力するための装置である。入力デバイス30は、所望の情報を入力可能であればいかなるものであってもよく、その例としてはキーパッド、マウス等が挙げられる。
【0027】
モニタ20および入力デバイス30はタッチパネルとして一体化されていてもよい。例えばタブレットコンピュータのように、本体10、モニタ20、および入力デバイス30が一体化されていてもよい。
【0028】
図4はプログラミング支援装置4の機能構成の一例を示す図である。一例では、プログラミング支援装置4は機能モジュールとして取得部110、パターン生成部120、フロー決定部130、およびプログラム生成部140を備える。取得部110は動作プログラムを生成するために必要なデータを取得する機能モジュールである。パターン生成部120は、一つのジョブに対して複数のタスクパターンを生成する機能モジュールである。本開示において、タスクパターンとは、タスクフローとして採用し得るジョブの実行方法を示す情報をいう。一例では、個々のタスクパターンは、ロボット2およびタスクの対応関係と、タスクの実行順序とについての可能な組合せを示す。一例では、パターン生成部120は、それぞれのタスクパターンが複数の作業タスク、複数のつなぎタスク、および複数の待機タスクを含むように、複数のタスクパターンを生成する。フロー決定部130は、動作プログラムの生成に用いられる一つのタスクフローを決定する機能モジュールである。プログラム生成部140は決定されたタスクフローを1以上のロボット2に実行させるための少なくとも一つの動作プログラムを生成する機能モジュールである。
【0029】
パターン生成部120はタスク挿入部121および制約設定部122を備える。タスク挿入部121はつなぎタスクおよび待機タスクを複数のタスクパターンのそれぞれに挿入する機能モジュールである。したがって、タスク挿入部121はつなぎタスク挿入部および待機タスク挿入部として機能する。制約設定部122は複数のタスクパターンにおける制約を設定する機能モジュールである。
【0030】
フロー決定部130はフロー生成部131、パス生成部132、確認部133、および更新部134を備える。フロー生成部131は同時実行制約と複数のタスクパターンとに基づいて一つのタスクフローを生成する機能モジュールである。パス生成部132はそのタスクフローのつなぎタスクでのエアカットパスを生成する機能モジュールである。確認部133はそのタスクフローのつなぎタスク(エアカットパス)においてロボット2が他の物体と干渉するか否かを確認する機能モジュールである。干渉とは物体同士が接触または衝突することをいい、例えば、ロボット2が他の物体に接触または衝突することをいう。更新部134は、その干渉が検出された場合に、生成されたタスクフローのつなぎタスクに関連する同時実行制約を更新する機能モジュールである。その更新処理が行われた場合には、フロー決定部130はその更新された同時実行制約に基づいてフロー生成部131にタスクフローを再生成させる。したがって、フロー決定部130は再実行部として機能する。
【0031】
[プランニング方法]
本開示に係るプランニング方法の一例として、
図5および
図6を参照しながら、プログラミング支援装置4により実行される一連の処理手順の一例を説明する。
図5および
図6はプログラミング支援装置4の動作の一例を処理フローS1として示すフローチャートである。すなわち、プログラミング支援装置4は処理フローS1を実行する。
【0032】
ステップS11では、取得部110が、動作プログラムを生成するために必要な教示データを取得する。この教示データはロボット2にジョブを実行させるために必要な情報を含む電子データであり、例えば、1以上の作業タスクと、ロボット2の動作に関する制約とを示す。その制約の例として、個々のロボット2の配置、複数の作業タスクの実行順序、ロボット2と作業タスクとの対応関係、作業タスクの開始および終了のそれぞれにおけるロボット2の姿勢、それぞれの作業タスクにおけるロボット2の動作時間、および同時実行制約が挙げられる。教示データは、個々のロボット2について個別に設定される事項と、1以上のロボット2について共通に設定される事項とのうちの少なくとも一つを含んでよい。教示データを取得するために様々な手法が用いられてよい。例えば、取得部110はユーザにより入力された教示データを受け付けてもよいし、ユーザ入力に基づいて所与の記憶装置から教示データを読み出してもよいし、他のコンピュータから送られてきた教示データを受信してもよい。
【0033】
ステップS12では、タスク挿入部121が複数の作業タスクのそれぞれに待機タスクを挿入する。例えば、タスク挿入部121は作業タスクの開始および終了のそれぞれに待機タスクを挿入する。
【0034】
一例では、タスク挿入部121は個々の作業タスクの開始および終了のそれぞれについてロボット2の複数の候補姿勢を設定し、該複数の候補姿勢のそれぞれについて待機タスクの挿入を実行してもよい。候補姿勢とは、ロボットの待機姿勢を決めるための選択肢として用意される姿勢をいう。作業タスクの開始に関する候補姿勢は、先行するつなぎタスクと該作業タスクとの間でのロボット2の待機姿勢の候補である。作業タスクの終了に関する待機姿勢は、該作業タスクと後続のつなぎタスクとの間でのロボット2の待機姿勢の候補である。複数の候補姿勢は、ユーザによって設定(定義)されたロボット2の姿勢である教示姿勢を含んでもよく、この場合には教示データはその教示姿勢を含む。
【0035】
図7は候補姿勢に基づく待機タスクの挿入の一例を示す図である。この例は一つの作業タスクTxについての様々な候補姿勢を示す。作業タスクTxの開始に関して3個の候補姿勢Ps
1,Ps
2,Ps
3が存在し、作業タスクTxの終了に関して3個の候補姿勢Pe
1,Pe
2,Pe
3が存在するとする。したがって、作業タスクTxの開始および終了の候補姿勢について9個の組合せが存在する。タスク挿入部121はその候補姿勢の9個の組合せのそれぞれ(言い換えると18個の候補姿勢のそれぞれ)に待機タスクを挿入する。個々の作業タスクTxの上下に位置する丸印はその待機タスクを表す。
【0036】
図5に戻って、ステップS13では、パターン生成部120が教示データに基づいて複数のタスクパターンを生成する。一例では、パターン生成部120は教示データで示される制約を満たす範囲で複数のタスクパターンを生成する。例えば、2個の作業タスクTx,Tyの実行順序に制約が課されていないとする。この場合には、パターン生成部120は、作業タスクTxの後に作業タスクTyが実行されるタスクパターンと、作業タスクTyの後に作業タスクTxが実行されるタスクパターンと、作業タスクTx,Tyが並行して実行されるタスクパターンとを生成し得る。別の例として、2台のロボットRa,Rbが用意され、作業タスクTxを実行するロボットに制約が課されていないとする。この場合には、パターン生成部120は、ロボットRaが作業タスクTxを実行するタスクパターンと、ロボットRbが作業タスクTxを実行するタスクパターンとを生成し得る。
【0037】
上述したように、個々の作業タスクの開始および終了には複数の候補姿勢が設定され得る。この場合には、パターン生成部120は個々の作業タスクの開始および終了の候補姿勢の組合せに応じて複数のタスクパターンを生成する。個々の作業タスクについて複数の候補姿勢が設定される場合には、複数の作業タスク間の候補姿勢の組合せも考慮されるので、生成されるタスクパターンの個数は多くなる。
図7の例の場合には、パターン生成部120は少なくとも9個のタスクパターンを生成する。作業タスクTxを含む複数の作業タスクのそれぞれに複数の候補姿勢が設定される場合には、多くのタスクパターンが生成されることになる。
【0038】
ステップS14では、タスク挿入部121が複数のタスクパターンのそれぞれにつなぎタスクを挿入する。それぞれのタスクパターンにおけるつなぎタスクの挿入は次のように実行される。すなわち、タスク挿入部121はタスクパターン内の複数の作業タスクの配置に基づいて、先行する作業タスクの終了に対応する待機タスクと、後続の作業タスクの開始に対応する待機タスクとの間につなぎタスクを挿入する。結果として、タスク挿入部121は隣り合う作業タスク間につなぎタスクを挿入する。一例では、タスク挿入部121はロボット2の開始姿勢と最初の作業タスクの開始に対応する待機タスクとの間にもつなぎタスクを挿入し、最後の作業タスクの終了に対応する待機タスクとロボット2の終了姿勢との間にもつなぎタスクを挿入する。
【0039】
タスク挿入部121はそれぞれのタスクパターンのそれぞれのつなぎタスクについてロボット2の移動時間の初期値を設定する。本開示では、つなぎタスクでのロボットの移動時間を「つなぎ時間」ともいう。タスク挿入部121はそれぞれのつなぎタスクにおいて、直線のエアカットパスを仮定し、その直線上でのロボット2の移動時間を算出する。つなぎ時間は、ロボット2がエアカットパスの始点から終点まで移動するのに要する時間である。エアカットパス上を通るオブジェクトは、先端部5、ツールなどのようなロボット2の構成要素でもよいし、ロボット2の全体でもよい。いずれにしても、タスク挿入部121はその所要時間をつなぎタスクでのつなぎ時間の初期値として設定する。この初期値はつなぎ時間の最小値である。
【0040】
ステップS15では、パターン生成部120が、ロボット2が実行不可能な姿勢(待機姿勢)を含むタスクパターンを破棄する。例えば、パターン生成部120は、タスク挿入部121によって自動的に設定された個々の候補姿勢(待機姿勢)に対してステップS15の処理を実行する。パターン生成部120は、必要であれば教示姿勢に対してステップS15の処理を実行してもよい。「ロボットが実行不可能な姿勢」とは、ロボットが取り得ない姿勢、またはロボットの動作に支障を来たす姿勢をいう。「ロボットが実行可能な姿勢」とは、ロボットが取ることができ、且つロボットの動作に支障を来たさない姿勢をいう。パターン生成部120は、タスクパターン中の少なくとも一つの待機姿勢をロボット2が実行できないと判定した場合にはそのタスクパターンを破棄し、すべての待機姿勢をロボット2が実行できると判定した場合にはそのタスクパターンを残す。パターン生成部120は複数のタスクパターンのそれぞれについてその処理を実行して、ロボットが実行可能なタスクパターンを抽出する。
【0041】
ロボット2が実行不可能な姿勢は、ロボット2が取り得ない姿勢でもよいし、ロボット2が他の物体(他のロボット2を除く)に干渉する姿勢でもよいし、ロボット2の前後の姿勢との連続性が無い姿勢でもよい。これに伴って、ロボット2が実行可能な姿勢とは、ロボット2が取り得る姿勢でもよいし、ロボット2が他の物体(他のロボット2を除く)に干渉しない姿勢でもよいし、ロボット2の前後の姿勢との連続性が保たれる姿勢でもよい。姿勢の連続性とは、ロボット2の姿勢が或る状態から次の状態へと遷移できることをいう。連続性が無い姿勢とは、前の姿勢および後の姿勢のうちの少なくとも一方との間で移り変わることができない姿勢である。すなわち、連続性が無い姿勢とは特異点である。パターン生成部120は、ロボット2の構造、可動域などを示す所与の仕様データを参照して、ロボット2が待機姿勢を取ることができるか否かを判定してもよい。パターン生成部120はその仕様データを参照して、待機姿勢とその前後の姿勢とを含む一連の動作をロボット2が実行できるか否かを判定してもよい。パターン生成部120は待機姿勢を取っているロボット2の物理的範囲と他の物体の物理的範囲とを比較して、その二つの物理的範囲の重なりを干渉として判定してもよい。
【0042】
ステップS16では、制約設定部122が複数のタスクパターンのそれぞれについて、姿勢および作業タスクにおける干渉を確認し、同時実行制約を設定する。「姿勢および作業タスクにおける干渉」とは、或るロボットの待機姿勢または作業タスクと、他のロボットの待機姿勢または作業タスクとの間で発生する干渉をいう。制約設定部122は複数のタスクパターンのそれぞれにおいて、該タスクパターンの中で姿勢および作業タスクにおける干渉が発生するか否かを確認する。或るタスクパターンにおいてその干渉が発生することを確認した場合には、制約設定部122はその確認結果に基づいて、その干渉が発生しないようにそのタスクパターンに同時実行制約を設定する。例えば、制約設定部122はそのタスクパターン内の複数の作業タスクおよび複数の待機タスクのうちの少なくとも一つの要素に関して同時実行制約を設定する。
【0043】
一例では、上記のステップS11~S16を含む処理により複数のタスクパターンが生成される。
【0044】
図8は複数のタスクパターンの一例を示す図である。この例では、ロボットRa,Rbという2台のロボット2が用意され、少なくとも1台のロボット2が3個の作業タスクTx,Ty,Tzを実行するものとする。教示データはそれらの作業タスクに加えて、作業タスクの実行順序に関する制約と、ロボット2および作業タスクの対応関係についての制約とを示す。この例では、教示データは、作業タスクTzが作業タスクTx,Tyの後に実行されることと、作業タスクTyがロボットRbによって実行されることとを示す。
【0045】
作業タスクTx,Tyの間には実行順序に関する制約が無い。したがって、作業タスクTx,Tyの実行タイミングが重なるかもしれないし、作業タスクTxが作業タスクTyよりも先に実行されるかもしれないし、作業タスクTyが作業タスクTxよりも先に実行されるかもしれない。作業タスクTx,Tzについてはロボット2との対応関係に関する制約が無く、したがって、これら二つのタスクのそれぞれは、ロボットRaによって実行されるかもしれないし、ロボットRbによって実行されるかもしれない。
図8は、そのような様々な可能性に対応する複数のタスクパターンの一部として6個のタスクパターンを示す。この図において、丸印は待機タスクを表し、矢印はつなぎタスクを表す。
図8の例において更に別のタスクパターンが生成され得ることに留意されたい。
【0046】
図6に移り、ステップS17では、フロー生成部131が同時実行制約および複数のタスクパターンに基づいて一つのタスクフローを生成する。一例では、フロー生成部131は、同時実行制約などの所与の制約を満たし且つジョブの実行時間が最短であるタスクフローを生成する。実行時間は、1以上のロボット2のうちの少なくとも一つが開始姿勢から動き出した時点から、該1以上のロボット2のすべてが終了姿勢に至る時点までの時間である。
【0047】
一例では、フロー生成部131は複数のタスクパターンのそれぞれの同時実行制約に基づく巡回セールスマン問題を解くことによって一つのタスクフローを生成する。巡回セールスマン問題は、ノード(都市)の集合と各ノード間の移動コストとが与えられたときに、エージェント(セールスマン)がすべてのノードを一度ずつ巡る複数種類の移動経路の中で、総移動コストが最小の移動経路を求める最適化問題である。同時実行制約に基づく巡回セールスマン問題は、複数のロボット2をエージェントと見做した上で、同時実行制約下で時間軸に沿ってその複数のエージェントを動かしながら、総移動コストが最小である解(各エージェントの移動経路)を探索する処理である。この巡回セールスマン問題は、複数のロボット2のそれぞれの待機タスク(待機姿勢)をノードにより表現し、作業タスクおよびつなぎタスクを枝により表現する。
【0048】
フロー生成部131は、すべてのエージェントを制約下で時間軸に沿って動かしながら、すべてのノードがいずれか一つのエージェントによって訪問され且つそれぞれのエージェントの移動経路が一筆書きで表され、且つ総移動コストが最小になる解を探索する。生成されるタスクフローはその最適解に対応する。2以上のロボットが同じノードおよび同じ枝を通過しないという条件は、個々の作業タスク、個々のつなぎタスク、および個々の待機タスクのいずれもが一つのロボット2によってのみ実行されるという択一制約に対応する。これは、巡回セールスマン問題を解くことによって択一制約が自動的に考慮されることを意味する。同時実行制約がさらに考慮される巡回セールスマン問題では、複数のエージェントが互いに異なるノードまたは枝に位置する場合でも、同じ時間帯に該複数のエージェントがそれらの位置に存在することが許されない場合がある。上述したように、総移動コストが最小であるタスクフローは、実行時間が最短であるタスクフローであってもよい。総移動コストは実行時間とは異なる物理量によって定義されてもよい。例えば、総移動コストが最小であるタスクフローは、1以上のロボット2の総移動距離(1以上のロボット2の軌跡の長さの和)が最小であるタスクフローであってもよい。
【0049】
図9は本開示における巡回セールスマン問題の一例である。この問題ではフロー生成部131は2台のロボット2に対応する二つのエージェントを設定する。破線はロボット201が通過し得る枝(すなわち、ロボット201が実行し得る作業タスクおよびつなぎタスク)を示す。一点鎖線はロボット202が通過し得る枝(すなわち、ロボット202が実行し得る作業タスクおよびつなぎタスク)を示す。個々のノードは待機タスクを示し、“S”ノードはロボット2の開始姿勢(初期姿勢)を示し、“E”ノードはロボット2の終了姿勢を示す。巡回セールスマン問題として表されるノードおよび枝の集合は複数のタスクパターンに対応する。
図9に示すように、フロー生成部131は解301,302,303のような様々な解(タスクフロー)を探索し、最終的に、総移動コストが最小であるタスクフローを生成する。解301,302はいずれも、ロボット201,202のそれぞれが少なくとも一つの作業タスクを実行する場合を示す。一方、解303は、ロボット201がすべての作業タスクを実行し、ロボット202は作業タスクを一つも実行しない場合を示す。
【0050】
図6に戻って、ステップS18では、パス生成部132が、生成されたタスクフローのつなぎタスクでのエアカットパスを自動的に生成する。一例では、パス生成部132はロボット2と他の物体との干渉を回避するように個々のエアカットパスを生成する。例えば、パス生成部132は或る一つのエアカットパスを生成するために、先行する作業タスクにおける作業パスの終点と、後続の作業タスクにおける作業パスの始点との間で、ロボット2と他の物体との干渉を回避するための1以上の経由点を生成する。そして、パス生成部132はその1以上の経由点を順に通るようにエアカットパスを生成する。パス生成部132は一つのエアカットパスを生成するために、経由点の設定と干渉の回避の確認とを含む一連の処理を繰り返し実行し得る。このような生成手法の詳細は、例えば特許第4103057号公報に記載されている。
【0051】
一例では、パス生成部132は、第1ロボットのつなぎタスクでのエアカットパスを、第1ロボットが1以上の第2ロボット(第1ロボット以外の他のロボット)の軌跡と干渉しないように生成する。この処理は、それぞれの第2ロボットの軌跡を第1ロボットにとっての障害物と見なして、第1ロボットとその見なし障害物との間で干渉が起こらないように第1ロボットのエアカットパスを生成することを意味する。
【0052】
ステップS19では、確認部133が生成されたタスクフローのつなぎタスクにおける干渉を確認する。「つなぎタスクにおける干渉」とは、或るロボットのつなぎタスクと、他のロボットの作業タスク、つなぎタスク、または待機姿勢との間で発生する干渉をいう。一例ではエアカットパスを生成する際にも干渉の回避が考慮されるが、その処理ではつなぎタスクにおける干渉のすべてが確認されないので、確認部133はこの確認処理を実行する。
【0053】
ステップS20において確認部133がその干渉を確認した場合には(すなわち、干渉が発生する場合には)、処理はステップS21に進む。ステップS21では、更新部134が、生成されたタスクフローのつなぎタスク(エアカットパス)に関連する同時実行制約を更新する。更新部134は確認された干渉が発生しなくなるようにその同時実行制約を更新する。例えば、更新部134は干渉が発生したつなぎタスクに関連する待機タスクに対応する待機時間を調整してもよい。一例では、確認部133は待機時間を延長または短縮する。更新部134は干渉が確認されたつなぎタスクに先行する待機タスクでの待機時間を調整してもよい。あるいは、更新部134は、並行して動作する他のロボット2の待機タスクでの待機時間を調整してもよい。別の例として、更新部134は干渉が確認されたつなぎタスクにおけるつなぎ時間を更新してもよい。更新部134は生成されたエアカットパスをロボット2が通過する所要時間を計算し、その所要時間をつなぎ時間として設定し、これにより、該エアカットパスに対応するつなぎタスクのつなぎ時間を更新する。
【0054】
ステップS21の後に処理はステップS17に戻る。繰り返されるステップS17では、フロー生成部131が一つのタスクフローを再生成する。一例では、同時実行制約の更新は待機時間の調整およびつなぎ時間の更新のうちの少なくとも一方を含み、フロー生成部131はその調整または更新の結果に基づいて一つのタスクフローを再生成する。フロー生成部131は初回の生成と同じ手法によりタスクフローを再生成する。しかし、前回生成されたタスクフローのつなぎタスクに関連する同時実行制約が更新されているので、繰り返されるステップS17では、フロー生成部131が前回とは異なるタスクフローを生成する可能性がある。あるいは、フロー生成部131は前回と同じタスクフローを生成するかもしれない。その後、再生成されたタスクフローについてステップS18,S19,S20が実行される。
【0055】
ステップS20において確認部133がつなぎタスクにおける干渉を確認しなかった場合には(すなわち、干渉が発生しない場合には)、処理はステップS22に進む。ステップS22では、プログラム生成部140が、生成されたタスクフローに基づいて動作プログラムを生成する。一例では、プログラム生成部140はそのタスクフローに基づいて、個々の作業タスクの実行順序と、1以上のロボット2への複数の作業タスクの割当て(すなわち、ロボット2と作業タスクとの対応関係)と、エアカットパスおよびつなぎ時間が自動的に設定された個々のつなぎタスクと、作業タスクとつなぎタスクとの間でのロボットの待機時間とを設定する。プログラム生成部140はその設定に基づいて、1以上のロボット2を動作させるための少なくとも一つの動作プログラムを生成する。一例では、プログラム生成部140は複数のロボット2のそれぞれに、そのロボット2に特化した動作プログラムを生成する。
【0056】
ステップS23では、プログラム生成部140が生成された動作プログラムを出力する。例えば、プログラム生成部140は動作プログラムを、ストレージ163などの記録媒体に格納してもよいし、ロボットコントローラ3などの他のコンピュータに送信してもよい。あるいは、プログラム生成部140はテキスト、コンピュータグラフィック(CG)による動画または静止画などの形式で動作プログラムをモニタ20上に表示してもよい。プログラミング支援装置4は出力された動作プログラムに対して、更なる干渉チェックなどの追加の処理を実行してもよい。
【0057】
一例では、プログラム生成部140は少なくとも一つの動作プログラムを少なくとも一つのロボットコントローラ3に出力し、それぞれのロボットコントローラ3はその動作プログラムに基づいて1以上のロボット2を動作させる。動作プログラムに基づいて動作するロボット2が処理フローS1によって得られるので、処理フローS1は、本開示に係るプランニング方法の一例であるとともに、ロボットの製造方法の一例でもある。
【0058】
[プログラム]
プログラミング支援装置4の各機能モジュールは、プロセッサ161またはメモリ162の上にプランニングプログラムを読み込ませてプロセッサ161にそのプログラムを実行させることで実現される。プランニングプログラムは、プログラミング支援装置4の各機能モジュールを実現するためのコードを含む。プロセッサ161はプランニングプログラムに従って入出力ポート164を動作させ、メモリ162またはストレージ163におけるデータの読み出しおよび書き込みを実行する。このような処理によりプログラミング支援装置4の各機能モジュールが実現される。
【0059】
プランニングプログラムは、CD-ROMやDVD-ROM、半導体メモリなどの非一時的な記録媒体に固定的に記録された上で提供されてもよい。あるいは、プランニングプログラムは、搬送波に重畳されたデータ信号として通信ネットワークを介して提供されてもよい。
【0060】
[効果]
以上説明したように、本開示の一側面に係るプランニングシステムは、複数のロボットによるタスクの同時実行に関する同時実行制約に基づいて、予め定義された複数の作業タスクと、作業タスク間に位置するつなぎタスクとを含むタスクフローを生成するフロー生成部と、生成されたタスクフローのつなぎタスクにおいてロボットが他の物体と干渉するか否かを確認する確認部と、干渉の発生が確認された場合に、生成されたタスクフローのつなぎタスクに関連する同時実行制約を更新する更新部と、更新された同時実行制約に基づいて、フロー生成部にタスクフローを再生成させる再実行部とを備える。
【0061】
本開示の一側面に係るプランニング方法は、少なくとも一つのプロセッサを備えるプランニングシステムにより実行される。プランニング方法は、複数のロボットによるタスクの同時実行に関する同時実行制約に基づいて、予め定義された複数の作業タスクと、作業タスク間に位置するつなぎタスクとを含むタスクフローを生成するステップと、生成されたタスクフローのつなぎタスクにおいてロボットが他の物体と干渉するか否かを確認するステップと、干渉の発生が確認された場合に、生成されたタスクフローのつなぎタスクに関連する同時実行制約を更新するステップと、更新された同時実行制約に基づいてタスクフローを再生成するステップとを含む。
【0062】
本開示の一側面に係るプランニングプログラムは、複数のロボットによるタスクの同時実行に関する同時実行制約に基づいて、予め定義された複数の作業タスクと、作業タスク間に位置するつなぎタスクとを含むタスクフローを生成するステップと、生成されたタスクフローのつなぎタスクにおいてロボットが他の物体と干渉するか否かを確認するステップと、干渉の発生が確認された場合に、生成されたタスクフローのつなぎタスクに関連する同時実行制約を更新するステップと、更新された同時実行制約に基づいてタスクフローを再生成するステップとをコンピュータに実行させる。
【0063】
本開示の一側面に係るロボットシステムは、1以上のロボットと、上記のプランニングシステムと、生成された動作プログラムに基づいて1以上のロボットを動作させる1以上のロボットコントローラとを備える。
【0064】
このような側面においては、採用し得るすべてのタスクフローについてではなく、同時実行制約に基づいて生成されるタスクフローについて干渉の有無が確認されるので、その干渉の確認に費やされる時間が短縮される。したがって、ロボット制御のプランニングを効率的に実行できる。
【0065】
他の側面に係るプランニングシステムは、生成されたタスクフローのつなぎタスクでのエアカットパスを生成するパス生成部をさらに備え、確認部は、エアカットパスにおいてロボットが他の物体と干渉するか否かを確認し、更新部は、干渉の発生が確認された場合に、生成されたタスクフローのつなぎタスクに関連する同時実行制約を更新してもよい。ロボットの実際の軌道を示すエアカットパスにおいて干渉の有無が検査されるので、同時実行制約の更新の必要性を正確に判断できる。
【0066】
他の側面に係るプランニングシステムでは、複数のロボットは第1ロボットおよび第2ロボットを含み、パス生成部は、第1ロボットのつなぎタスクでのエアカットパスを、第1ロボットが第2ロボットの軌跡と干渉しないように生成してもよい。この場合には、既に設定された他のロボットのパスを避けるように、処理対象のロボットのエアカットパスを適切に設定できる。
【0067】
他の側面に係るプランニングシステムでは、複数の作業タスクとつなぎタスクとを含む複数のタスクパターンを生成するパターン生成部を更に備え、フロー生成部は、同時実行制約と複数のタスクパターンとに基づいてタスクフローを生成してもよい。複数のタスクパターンが自動的に用意され、それらのタスクパターンに基づいてタスクフローが生成されるので、タスクフローを効率的に得ることができる。
【0068】
他の側面に係るプランニングシステムでは、パターン生成部は、複数のタスクパターンのそれぞれについて、作業タスクおよびつなぎタスクのうちの少なくとも一つに同時実行制約を設定する制約設定部を有してもよい。作業タスクまたはつなぎタスクについて同時実行制約が設定されるので、複数のロボットによる処理を適切に確認できる。
【0069】
他の側面に係るプランニングシステムでは、パターン生成部は、作業タスクに対して、ロボットを待機させるための待機タスクを挿入する待機タスク挿入部と、複数のタスクパターンのそれぞれについて、作業タスク、つなぎタスク、および待機タスクのうちの少なくとも一つに同時実行制約を設定する制約設定部とを有してもよい。待機タスクが自動的に挿入されてその待機タスクについても同時実行制約が設定され得るので、複数のロボットによる処理を適切に確認できる。
【0070】
他の側面に係るプランニングシステムでは、待機タスク挿入部は、作業タスクでのロボットの複数の候補姿勢のそれぞれについて、待機タスクの挿入を実行してもよい。この場合には、ロボットの待機姿勢がさらに考慮された効率的な作業工程を計画できる。
【0071】
他の側面に係るプランニングシステムは、更新部は、待機タスクに対応する待機時間を調整し、フロー生成部は、調整の結果に基づいてタスクフローを再生成してもよい。待機時間を調整することで同時実行制約を適切に更新できる。
【0072】
他の側面に係るプランニングシステムでは、パターン生成部は、隣り合う作業タスク間につなぎタスクを挿入するつなぎタスク挿入部を有してもよい。つなぎタスクが自動的に挿入されるので、タスクパターンを効率的に生成できる。
【0073】
他の側面に係るプランニングシステムでは、パターン生成部は、ロボットが実行不可能な姿勢を含むタスクパターンを破棄して、複数のタスクパターンを生成してもよい。実現不可能なタスクフローを排除して、関連するロボットが実行可能な複数のタスクパターンに基づいてタスクフローが生成されるので、ロボットの動作を効率的に(例えば短時間で)計画できる。
【0074】
他の側面に係るプランニングシステムでは、更新部は、エアカットパスに基づいて、つなぎタスクにおけるつなぎ時間を更新してもよい。つなぎ時間を更新することで同時実行制約を適切に更新できる。
【0075】
他の側面に係るプランニングシステムでは、フロー生成部は、実行時間が最短であるタスクフローを生成してもよい。この手法により、一連の作業を最も早く完了させることができるタスクフローを生成できる。
【0076】
他の側面に係るプランニングシステムでは、フロー生成部は、同時実行制約に基づく巡回セールスマン問題を解くことによってタスクフローを生成してもよい。タスクフローを生成する処理を巡回セールスマン問題として取り扱うことで、一連の作業を最も低いコストで完了させることができるタスクフローを効率的に生成できる。
【0077】
他の側面に係るプランニングシステムでは、フロー生成部は、複数のロボットのそれぞれの待機姿勢をノードにより表現し、作業タスクおよびつなぎタスクを枝により表現する巡回セールスマン問題を解いてもよい。待機姿勢をノードで表現し、且つ動きに相当する作業タスクおよびつなぎタスクを枝で表現する巡回セールスマン問題を設定することで、ロボットによる作業工程を適切に巡回セールスマン問題に当てはめることができる。
【0078】
他の側面に係るプランニングシステムでは、フロー生成部は、2以上のロボットが同じノードおよび同じ枝を通過しないという制約を満たすように巡回セールスマン問題を解いてもよい。巡回セールスマン問題では択一制約が必然的に考慮される。したがって、その択一制約を満たし且つ一連の作業を最も低いコストで完了させることが可能なタスクフローを効率的に生成できる。
【0079】
他の側面に係るプランニングシステムでは、生成されたタスクフローにおいて干渉が発生しないことが確認された場合に、該タスクフローを1以上のロボットに実行させるための動作プログラムを生成するプログラム生成部をさらに備えてもよい。採用し得るすべてのタスクフローについてではなく、特定のタスクフローについて干渉の有無が検査されるので、その干渉の確認に費やされる時間が短縮される。したがって、動作プログラムを効率的に生成できる。
【0080】
他の側面に係るプランニングシステムでは、プログラム生成部は、生成されたタスクフローに基づいて、作業タスクとつなぎタスクとの間でのロボットの待機時間を設定し、該待機時間を含む動作プログラムを生成してもよい。生成されたタスクフローに基づいてロボットの待機時間を設定すれば足りるので、インターロックを効率的に計画できる。
【0081】
[変形例]
以上、本開示の実施形態に基づいて詳細に説明した。しかし、本開示は上記実施形態に限定されるものではない。本開示は、その要旨を逸脱しない範囲で様々な変形が可能である。
【0082】
プランニングシステムの機能構成は上記の例に限定されない。本開示に係るプランニング方法は、上記の例とは異なる機能構成を用いて実行されてもよい。
【0083】
プランニングシステムのハードウェア構成は、プログラムの実行により各機能モジュールを実現する態様に限定されない。例えば、上述した機能モジュール群の少なくとも一部は、その機能に特化した論理回路により構成されていてもよいし、該論理回路を集積したASIC(Application Specific Integrated Circuit)により構成されてもよい。
【0084】
少なくとも一つのプロセッサにより実行される方法の処理手順は上記の例に限定されない。例えば、上述したステップ(処理)の一部が省略されてもよいし、別の順序で各ステップが実行されてもよい。また、上述したステップのうちの2以上のステップが組み合わされてもよいし、ステップの一部が修正または削除されてもよい。あるいは、上記の各ステップに加えて他のステップが実行されてもよい。
【0085】
コンピュータシステムまたはコンピュータ内で二つの数値の大小関係を比較する際には、「以上」および「よりも大きい」という二つの基準のどちらを用いてもよく、「以下」および「未満」という二つの基準のうちのどちらを用いてもよい。
【符号の説明】
【0086】
1…ロボットシステム、2…ロボット、3…ロボットコントローラ、4…プログラミング支援装置、5…先端部、10…本体、20…モニタ、30…入力デバイス、110…取得部、120…パターン生成部、121…タスク挿入部、122…制約設定部、130…フロー決定部、131…フロー生成部、132…パス生成部、133…確認部、134…更新部、140…プログラム生成部。