IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社安川電機の特許一覧

特許7607769プランニングシステム、ロボットシステム、プランニング方法、およびプランニングプログラム
<>
  • 特許-プランニングシステム、ロボットシステム、プランニング方法、およびプランニングプログラム 図1
  • 特許-プランニングシステム、ロボットシステム、プランニング方法、およびプランニングプログラム 図2
  • 特許-プランニングシステム、ロボットシステム、プランニング方法、およびプランニングプログラム 図3
  • 特許-プランニングシステム、ロボットシステム、プランニング方法、およびプランニングプログラム 図4
  • 特許-プランニングシステム、ロボットシステム、プランニング方法、およびプランニングプログラム 図5
  • 特許-プランニングシステム、ロボットシステム、プランニング方法、およびプランニングプログラム 図6
  • 特許-プランニングシステム、ロボットシステム、プランニング方法、およびプランニングプログラム 図7
  • 特許-プランニングシステム、ロボットシステム、プランニング方法、およびプランニングプログラム 図8
  • 特許-プランニングシステム、ロボットシステム、プランニング方法、およびプランニングプログラム 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-19
(45)【発行日】2024-12-27
(54)【発明の名称】プランニングシステム、ロボットシステム、プランニング方法、およびプランニングプログラム
(51)【国際特許分類】
   B25J 9/22 20060101AFI20241220BHJP
【FI】
B25J9/22 A
【請求項の数】 22
(21)【出願番号】P 2023531713
(86)(22)【出願日】2022-05-26
(86)【国際出願番号】 JP2022021616
(87)【国際公開番号】W WO2023276506
(87)【国際公開日】2023-01-05
【審査請求日】2023-10-26
(31)【優先権主張番号】P 2021109389
(32)【優先日】2021-06-30
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】000006622
【氏名又は名称】株式会社安川電機
(74)【代理人】
【識別番号】100088155
【弁理士】
【氏名又は名称】長谷川 芳樹
(74)【代理人】
【識別番号】100145012
【弁理士】
【氏名又は名称】石坂 泰紀
(74)【代理人】
【識別番号】100171099
【弁理士】
【氏名又は名称】松尾 茂樹
(74)【代理人】
【識別番号】100144440
【弁理士】
【氏名又は名称】保坂 一之
(72)【発明者】
【氏名】渡邉 航
(72)【発明者】
【氏名】高橋 誠
(72)【発明者】
【氏名】合屋 昌弘
(72)【発明者】
【氏名】内田 智明
(72)【発明者】
【氏名】弘中 聖士
【審査官】神山 貴行
(56)【参考文献】
【文献】特開平08-202429(JP,A)
【文献】特開2013-144349(JP,A)
【文献】特開2021-084174(JP,A)
【文献】特開2006-031122(JP,A)
【文献】特開2020-168666(JP,A)
【文献】特開平07-210223(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 1/00-21/02
(57)【特許請求の範囲】
【請求項1】
シミュレーションに基づいて、ジョブの推定サイクルタイムを算出するサイクルタイム推定部と、
前記ジョブについて予め設定された基準サイクルタイムと、前記推定サイクルタイムとに基づいて、該ジョブを少なくとも一つのロボットによって実行するための複数のタスクフローを生成するフロー生成部と、
前記複数のタスクフローを、前記ジョブの実行計画を示すプランニング計画として記憶部に記憶する結果生成部と、
を備え、
前記フロー生成部は、前記複数のタスクフローのそれぞれの前記推定サイクルタイムが前記基準サイクルタイム以下であり、前記複数のタスクフローの間で前記推定サイクルタイムが相異なる、前記複数のタスクフローを生成する、
プランニングシステム。
【請求項2】
前記フロー生成部は、前記推定サイクルタイムと前記基準サイクルタイムとの差が最小であるタスクフローを少なくとも生成する、
請求項1に記載のプランニングシステム。
【請求項3】
前記フロー生成部は、前記推定サイクルタイムが最小であるタスクフローを少なくとも生成する、
請求項1または2に記載のプランニングシステム。
【請求項4】
シミュレーションに基づいて、ジョブの推定サイクルタイムを算出するサイクルタイム推定部と、
前記ジョブについて予め設定された基準サイクルタイムと、前記推定サイクルタイムとに基づいて、該ジョブを少なくとも一つのロボットによって実行するための少なくとも一つのタスクフローを生成するフロー生成部と、
前記少なくとも一つのタスクフローのうちの少なくとも一つについて、前記推定サイクルタイムと前記基準サイクルタイムとの差を短縮するように、該タスクフローを構成する複数のタスクのうちの少なくとも一つのタスクの所要時間を増加させる調整部と、
を備え、
前記複数のタスクは、予め定義された複数の作業タスクと、前記作業タスク間に位置するつなぎタスクとを含み、
前記調整部は、前記複数の作業タスクのそれぞれの前記所要時間を変更することなく、前記つなぎタスクの所要時間を増加させる、
プランニングシステム。
【請求項5】
前記調整部は、
連続して位置する二つの前記タスク間の待ち時間が最長である待ち区間を選択し、
前記最長の待ち時間を短縮させるように、前記待ち区間より上流に位置する少なくとも一つの前記つなぎタスクの前記所要時間を増加させる、
請求項4に記載のプランニングシステム。
【請求項6】
前記調整部は、前記待ち区間の直前に位置する前記つなぎタスクの前記所要時間を増加させる、
請求項5に記載のプランニングシステム。
【請求項7】
1以上の前記つなぎタスクのそれぞれは、前記所要時間の増加が可能であるか否かを示す調整可否フラグを有し、
前記調整部は、前記所要時間の増加が可能である少なくとも一つの前記つなぎタスクの前記所要時間を増加させる、
請求項4~6のいずれか一項に記載のプランニングシステム。
【請求項8】
前記調整部は、前記所要時間を増加させるように、少なくとも一つの前記つなぎタスクでの前記ロボットの動作速度を下げる、
請求項4~6のいずれか一項に記載のプランニングシステム。
【請求項9】
前記調整部は、前記所要時間を増加させるように、前記つなぎタスクでの前記ロボットのパスを長くする、
請求項4~6のいずれか一項に記載のプランニングシステム。
【請求項10】
前記複数のタスクのうちの少なくとも一つの前記つなぎタスクの所要時間を増加させることが更に可能である場合に、前記調整部に該少なくとも一つのつなぎタスクの所要時間を増加させる調整制御部を更に備える請求項4~6のいずれか一項に記載のプランニングシステム。
【請求項11】
前記所要時間の増加を指示するユーザ入力を受け付ける受付部を更に備え、
前記調整部は、前記ユーザ入力に応答して前記所要時間を増加させる、
請求項4~6のいずれか一項に記載のプランニングシステム。
【請求項12】
前記複数のタスクフローのそれぞれについて、該タスクフローを実行する前記少なくとも一つのロボットに関する評価値を算出する評価部を更に備える請求項1または2に記載のプランニングシステム。
【請求項13】
前記評価部は、前記評価値として、前記複数のタスクフローのそれぞれについて、前記推定サイクルタイムに対する前記少なくとも一つのロボットの動作時間の割合である稼働率を算出する、
請求項12に記載のプランニングシステム。
【請求項14】
前記評価部は、前記評価値として、前記複数のタスクフローのそれぞれについて、該タスクフローにおいて前記少なくとも一つのロボットの関節軸に掛かる負荷に基づいて、該少なくとも一つのロボットの製品寿命を算出する、
請求項12に記載のプランニングシステム。
【請求項15】
前記評価部は、前記評価値として、前記複数のタスクフローのそれぞれについて、前記推定サイクルタイムに基づいて該少なくとも一つのロボットのスループットを算出する、
請求項12に記載のプランニングシステム。
【請求項16】
前記複数のタスクフローをプランニング結果として表示装置に表示させる表示制御部を更に備える請求項1または2に記載のプランニングシステム。
【請求項17】
前記複数のタスクフローのうち、ユーザにより決定されたタスクフローを1以上の前記ロボットに実行させるための動作プログラムを生成するプログラム生成部を更に備える請求項1または2に記載のプランニングシステム。
【請求項18】
1以上のロボットと、
請求項17に記載のプランニングシステムと、
前記生成された動作プログラムに基づいて前記1以上のロボットを動作させる1以上のロボットコントローラと、
を備えるロボットシステム。
【請求項19】
少なくとも一つのプロセッサを備えるプランニングシステムにより実行されるプランニング方法であって、
シミュレーションに基づいて、ジョブの推定サイクルタイムを算出するステップと、
前記ジョブについて予め設定された基準サイクルタイムと、前記推定サイクルタイムとに基づいて、該ジョブを少なくとも一つのロボットによって実行するための複数のタスクフローを生成するステップと、
前記複数のタスクフローを、前記ジョブの実行計画を示すプランニング計画として記憶部に記憶するステップと、
を含み、
前記複数のタスクフローを生成する前記ステップでは、前記複数のタスクフローのそれぞれの前記推定サイクルタイムが前記基準サイクルタイム以下であり、前記複数のタスクフローの間で前記推定サイクルタイムが相異なる、前記複数のタスクフローを生成する、
プランニング方法。
【請求項20】
シミュレーションに基づいて、ジョブの推定サイクルタイムを算出するステップと、
前記ジョブについて予め設定された基準サイクルタイムと、前記推定サイクルタイムとに基づいて、該ジョブを少なくとも一つのロボットによって実行するための複数のタスクフローを生成するステップと、
前記複数のタスクフローを、前記ジョブの実行計画を示すプランニング計画として記憶部に記憶するステップと、
をコンピュータに実行させ、
前記複数のタスクフローを生成する前記ステップでは、前記複数のタスクフローのそれぞれの前記推定サイクルタイムが前記基準サイクルタイム以下であり、前記複数のタスクフローの間で前記推定サイクルタイムが相異なる、前記複数のタスクフローを生成する、
プランニングプログラム。
【請求項21】
少なくとも一つのプロセッサを備えるプランニングシステムにより実行されるプランニング方法であって、
シミュレーションに基づいて、ジョブの推定サイクルタイムを算出するステップと、
前記ジョブについて予め設定された基準サイクルタイムと、前記推定サイクルタイムとに基づいて、該ジョブを少なくとも一つのロボットによって実行するための少なくとも一つのタスクフローを生成するステップと、
前記少なくとも一つのタスクフローのうちの少なくとも一つについて、前記推定サイクルタイムと前記基準サイクルタイムとの差を短縮するように、該タスクフローを構成する複数のタスクのうちの少なくとも一つのタスクの所要時間を増加させるステップと、
を含み、
前記複数のタスクは、予め定義された複数の作業タスクと、前記作業タスク間に位置するつなぎタスクとを含み、
前記所要時間を増加させる前記ステップでは、前記複数の作業タスクのそれぞれの前記所要時間を変更することなく、前記つなぎタスクの所要時間を増加させる、
プランニング方法。
【請求項22】
シミュレーションに基づいて、ジョブの推定サイクルタイムを算出するステップと、
前記ジョブについて予め設定された基準サイクルタイムと、前記推定サイクルタイムとに基づいて、該ジョブを少なくとも一つのロボットによって実行するための少なくとも一つのタスクフローを生成するステップと、
前記少なくとも一つのタスクフローのうちの少なくとも一つについて、前記推定サイクルタイムと前記基準サイクルタイムとの差を短縮するように、該タスクフローを構成する複数のタスクのうちの少なくとも一つのタスクの所要時間を増加させるステップと、
をコンピュータに実行させ、
前記複数のタスクは、予め定義された複数の作業タスクと、前記作業タスク間に位置するつなぎタスクとを含み、
前記所要時間を増加させる前記ステップでは、前記複数の作業タスクのそれぞれの前記所要時間を変更することなく、前記つなぎタスクの所要時間を増加させる、
プランニングプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の一側面はプランニングシステム、ロボットシステム、プランニング方法、およびプランニングプログラムに関する。
【背景技術】
【0002】
特許文献1には、データセットに基づく機械学習プロセスの結果に基づいて、任意に設定された始点と終点との間のロボッ卜のパスを生成するロボッ卜パス生成装置が記載されている。
【先行技術文献】
【特許文献】
【0003】
【文献】国際公開第2018/143003号
【発明の概要】
【発明が解決しようとする課題】
【0004】
効果的なロボット制御を実現するためのプランニングが望まれている。
【課題を解決するための手段】
【0005】
本開示の一側面に係るプランニングシステムは、シミュレーションに基づいて、ジョブの推定サイクルタイムを算出するサイクルタイム推定部と、ジョブについて予め設定された基準サイクルタイムと、推定サイクルタイムとに基づいて、該ジョブを少なくとも一つのロボットによって実行するための少なくとも一つのタスクフローを生成するフロー生成部とを備える。
【0006】
本開示の一側面に係るプランニング方法は、少なくとも一つのプロセッサを備えるプランニングシステムにより実行される。プランニング方法は、シミュレーションに基づいて、ジョブの推定サイクルタイムを算出するステップと、ジョブについて予め設定された基準サイクルタイムと、推定サイクルタイムとに基づいて、該ジョブを少なくとも一つのロボットによって実行するための少なくとも一つのタスクフローを生成するステップとを含む。
【0007】
本開示の一側面に係るプランニングプログラムは、シミュレーションに基づいて、ジョブの推定サイクルタイムを算出するステップと、ジョブについて予め設定された基準サイクルタイムと、推定サイクルタイムとに基づいて、該ジョブを少なくとも一つのロボットによって実行するための少なくとも一つのタスクフローを生成するステップとをコンピュータに実行させる。
【発明の効果】
【0008】
本開示の一側面によれば、効果的なロボット制御を実現するためのプランニングを実行できる。
【図面の簡単な説明】
【0009】
図1】ロボットシステムの構成の一例を示す図である。
図2】タスクフローの一例を示す図である。
図3】プログラミング支援装置のハードウェア構成の一例を示す図である。
図4】プログラミング支援装置の機能構成の一例を示す図である。
図5】プログラミング支援装置での処理の一例を示すフローチャートである。
図6】プランニング結果の表示の一例を示す図である。
図7】タスクフローの調整の詳細な手順の一例を示すフローチャートである。
図8】タスクの所要時間を増加させる処理の一例を示す図である。
図9】プログラミング支援装置での処理の別の例を示すフローチャートである。
【発明を実施するための形態】
【0010】
以下、添付図面を参照しながら本開示での実施形態を詳細に説明する。図面の説明において同一または同等の要素には同一の符号を付し、重複する説明を省略する。
【0011】
[ロボットシステム]
本実施形態では、本開示に係るプランニングシステムをロボットシステム1のプログラミング支援装置4に適用する。本開示において、プランニングシステムとは少なくとも一つのロボットの動作を決定するためのコンピュータシステムをいう。ロボットシステム1は、オペレータにより教示された動作をロボットに実行させることにより、加工、組立などの様々な作業を自動化するシステムである。図1はロボットシステム1の構成の一例を示す図である。一例では、ロボットシステム1は、1以上のロボット2と、1以上のロボット2に対応する1以上のロボットコントローラ3と、プログラミング支援装置4とを備える。図1は3台のロボット2および3台のロボットコントローラ3を示し、一つのロボットコントローラ3に一つのロボット2が接続される構成を示す。しかし、各装置の台数も接続方法も図1の例に限定されない。例えば、一つのロボットコントローラ3に複数台のロボット2が接続されてもよい。
【0012】
一例では、ロボット2は多軸のシリアルリンク型の垂直多関節ロボットであり、その先端部5にツールを保持した状態で様々な処理を実行できる。ツールはエンドエフェクタともいわれる。ロボット2は、所定の範囲内において先端部5の位置および姿勢を自在に変更し得る。ロボット2は、6軸の垂直多関節ロボットでもよいし、6軸に1軸の冗長軸を追加した7軸の垂直多関節ロボットでもよい。一例では、複数台のロボット2は、或る一つのワークに対していずれのロボット2によっても同一の処理を実行し得るように配置される。
【0013】
ロボットコントローラ3は、予め生成された動作プログラムに従ってロボット2を制御する装置である。一例では、動作プログラムはロボット2を制御するためのデータを含み、例えば、ロボット2の軌道を示すパスを含む。ロボット2の軌道とは、ロボット2またはその構成要素の動きの経路をいう。例えば、ロボット2の軌道は先端部5の軌道であり得る。一例では、ロボットコントローラ3は、動作プログラムで示される目標値に先端部5の位置および姿勢を一致させるための関節角度目標値(ロボット2の各関節の角度目標値)を算出し、その角度目標値に従ってロボット2を制御する。
【0014】
ロボットコントローラ3の制御によって、少なくとも一つのロボット2は一連の処理を実行する。本開示ではその一連の処理をジョブともいう。少なくとも一つのロボット2がジョブを実行することで、ロボットシステム1のユーザが望む結果が得られる。ジョブを構成する最小単位の処理をタスクという。したがって、ジョブは1以上のタスクを含む。それぞれのロボット2は「部品を取る」、「部品を置く」、「部品をワークに嵌合する」、「待機姿勢を取る」などの様々なタスクを実行し得る。一つのタスクは、該タスクにおけるロボット2の軌道である一つのパスを含み得る。
【0015】
一例では、ロボット2は、自走可能な移動ロボットであってもよい。この場合には、ロボット2は処理の開始に先立って、動作プログラムに従って作業空間内を移動して所与の位置に移動し得る。例えば、ロボット2は他の物体を避けながら自走することが可能である。このロボット2は、動作プログラムで示される配置において、該動作プログラムで示されるジョブ、すなわち、少なくとも一つのタスクを繰り返し実行し得る。
【0016】
プログラミング支援装置4は、動作プログラムを生成する装置である。例えば、プログラミング支援装置4は1以上のロボット2のそれぞれについて、該ロボット2により実行される処理を示す動作プログラムを生成する。一例では、プログラミング支援装置4は、パス、ある時点におけるロボット2の姿勢などのような、ジョブの少なくとも一部の構成要素を評価する。そして、プログラミング支援装置4はその評価結果に基づいて動作プログラムを生成する。プログラミング支援装置4はシミュレーションを実行してその評価を実行してもよい。シミュレーションとは動作プログラムの少なくとも一部を仮想的に実行する処理をいう。より詳しくいうと、シミュレーションは、ロボット2を実際に作動させることなく動作プログラムの少なくとも一部をコンピュータ上で模擬的に実行することをいう。一例では、シミュレーションは、ロボット2および他の物体が配置された仮想空間上で動作プログラムの少なくとも一部を仮想的に実行する処理である。他の物体とは、ロボット2の周辺に配置された物体であり、例えば、他のロボット2、ワーク、他の製造装置などであり得る。
【0017】
[タスクフロー]
一例では、プログラミング支援装置4はジョブを効率的に実行するためのタスクフローを生成し、そのタスクフローを1以上のロボット2に実行させるための動作プログラムを生成する。本開示において、タスクフローとは、どのロボットがどのタスクをどの順序でおよびどのタイミングで実行するかを示す情報をいう。それぞれのタスクフローは、ジョブを少なくとも一つのロボット2によって実行するための情報である。
【0018】
一例では、タスクフローは複数の作業タスク、複数のつなぎタスク、および複数の待機タスクを含む。作業タスクとはユーザによって予め定義されたタスクをいう。つなぎタスクとは、ロボット2を次の作業タスクに案内するためのタスクをいい、隣り合う作業タスク間に位置する。待機タスクとはロボットを待機させるためのタスクをいう。待機タスクは作業タスクとつなぎタスクとの間に位置し得る。つなぎタスクおよび待機タスクはプログラミング支援装置4によって自動的に設定(挿入)される。
【0019】
本開示では、作業タスク内のパスを「作業パス」といい、つなぎタスク内のパスを「エアカットパス」という。作業パスは、作業タスクを生成する際にユーザによって予め定義される。エアカットパスは、先行する作業タスクにおける作業パスの終点と、後続の作業タスクにおける作業パスの始点とを結ぶ。一例では、エアカットパスは、例えば始点および終点以外の少なくとも一つの教示点が設定されることによって、自動的に設定される。教示点とは、パスを規定するために設定される基準点をいう。待機タスクではロボット2は動かないので、待機タスクはパスを有しない。
【0020】
タスクフローは、ロボット2が一時的に停止する時間幅である待ち区間を含み得る。待ち区間は、待機タスクの挿入によって設定されてもよいし、待機タスクとは別の要因によってシミュレーションにおいて設定されてもよい。例えば、待ち区間はロボット2の動作に関する制約に基づいて設定されてもよいし、ロボット2の周囲の環境などのような外的要因に基づいて設定されてもよい。
【0021】
図2はタスクフローの一例を示す図である。この例でのタスクフロー200は、2台のロボット2(ロボットRa,Rb)が、5個の作業タスクTa,Tb,Tc,Td,Teを含むジョブを協同して実行することを示す。図2において、記号「S」はロボット2の開始姿勢(初期姿勢)を示し、記号「E」はロボット2の終了姿勢を示す。この例では、ロボットRaは作業タスクTa,Tb,Teをこの順に実行し、ロボットRbは作業タスクTc,Tdをこの順に実行する。つなぎタスクは、先行する作業タスクと、後続の作業タスクとの間に挿入され、この結果、隣り合う作業タスク間に位置することになる。図2に示すように、一例では、つなぎタスクは開始姿勢と最初の作業タスクとの間にも挿入され、更に、最後の作業タスクと終了姿勢との間にも挿入される。タスクフロー200は待ち区間201,202,203を含む。それぞれの待ち区間は、連続する二つのタスクの間に(具体的には、連続する作業タスクおよびつなぎタスクの間に)位置する。
【0022】
プログラミング支援装置4は少なくとも一つの作業タスクに関する入力を受け付ける。そして、プログラミング支援装置4は、作業タスクの実行順序と、個々の作業タスクへのロボット2の割当てと、所与の条件が整って初めて次の動作を実行させるための仕組みであるインターロックというような各種の制約に基づくシミュレーションを実行する。そして、プログラミング支援装置4はそのシミュレーションに基づいてタスクフローを生成する。
【0023】
一例では、プログラミング支援装置4は、ジョブについて予め設定された基準サイクルタイムと、シミュレーションに基づいて推定されるジョブの推定サイクルタイムとに基づいて、少なくとも一つのタスクフローを生成する。サイクルタイムとは、ジョブを一回実行するために要する時間、すなわち、ジョブの所要時間をいう。一例では、基準サイクルタイムはユーザによって指定され、したがって、ユーザが所望するジョブの実行時間である。推定サイクルタイムはシミュレーションによって算出されるジョブの実行時間である。一例では、プログラミング支援装置4は、推定サイクルタイムが基準サイクルタイム以下になるようにそれぞれのタスクフローを生成する。
【0024】
一例では、プログラミング支援装置4は、ジョブにおける少なくとも一つのロボット2の稼働率を高めるために、そのジョブに含まれる少なくとも一つの待ち時間を短縮させる。この処理は例えば、サイクルタイム中のなるべく多くの時間において個々のロボット2を動作させることを意図する。一例では、プログラミング支援装置4は、少なくとも一つのタスクフローについて、該タスクフローを構成する複数のタスクのうちの少なくとも一つのタスクの所要時間を増加させ、これにより待ち時間を短縮させる。プログラミング支援装置4が所要時間を増加させるタスクは、作業タスクまたはつなぎタスクである。図2の例では、プログラミング支援装置4は待ち区間201,202,203のうちの少なくとも一つを短縮することを試みる。少なくとも一つの作業タスクまたはつなぎタスクの所要時間を増加させる場合に、プログラミング支援装置4は、推定サイクルタイムが基準サイクルタイム以下である限り該推定サイクルタイムを増加させてもよい。一例では、プログラミング支援装置4は、推定サイクルタイムが基準サイクルタイムに近づくように、少なくとも一つの待ち時間を短縮させつつ該推定サイクルタイムを延ばす。
【0025】
[プログラミング支援装置]
図3はプログラミング支援装置4のハードウェア構成の一例を示す図である。一例では、プログラミング支援装置4は本体10、モニタ20、および入力デバイス30を備える。
【0026】
本体10は少なくとも一つのコンピュータにより構成される。本体10は回路160を有し、回路160は、少なくとも一つのプロセッサ161と、メモリ162と、ストレージ163と、入出力ポート164とを有する。ストレージ163は、本体10の各機能モジュールを構成するためのプログラムを記録する。ストレージ163は、ハードディスク、不揮発性の半導体メモリ、磁気ディスク、光ディスク等の、コンピュータ読み取り可能な記録媒体である。メモリ162は、ストレージ163からロードされたプログラム、プロセッサ161の演算結果等を一時的に記憶する。プロセッサ161は、メモリ162と協働してプログラムを実行することで、各機能モジュールを構成する。入出力ポート164は、プロセッサ161からの指令に応じ、モニタ20、入力デバイス30、およびロボットコントローラ3の間で電気信号の入出力を行う。
【0027】
モニタ20は、本体10から出力された情報を表示するための装置である。モニタ20は、グラフィック表示が可能であればいかなるものであってもよく、その例としては液晶パネル等が挙げられる。入力デバイス30は、本体10に情報を入力するための装置である。入力デバイス30は、所望の情報を入力可能であればいかなるものであってもよく、その例としてはキーパッド、マウスなどが挙げられる。
【0028】
モニタ20および入力デバイス30はタッチパネルとして一体化されていてもよい。例えばタブレットコンピュータのように、本体10、モニタ20、および入力デバイス30が一体化されていてもよい。
【0029】
図4はプログラミング支援装置4の機能構成の一例を示す図である。一例では、プログラミング支援装置4は機能モジュールとして受付部11、フロー生成部12、サイクルタイム推定部13、評価部14、結果生成部15、表示制御部16、調整部17、調整制御部18、およびプログラム生成部19を備える。受付部11は、タスクフローまたは動作プログラムを生成するために必要なデータを受け付ける機能モジュールである。フロー生成部12は少なくとも一つのタスクフローを生成する機能モジュールである。サイクルタイム推定部13は、シミュレーションに基づいてジョブの推定サイクルタイムを算出する機能モジュールである。一例では、サイクルタイム推定部13はフロー生成部12の一部として実装される。評価部14は、タスクフローを実行する少なくとも一つのロボット2に関する評価値を算出する機能モジュールである。結果生成部15は、少なくとも一つのタスクフローを示すプランニング結果を生成する機能モジュールである。このプランニング結果は、ジョブの実行計画を示す情報であるともいえる。表示制御部16は、少なくとも一つのタスクフローをプランニング結果としてモニタ20などの表示装置に表示させる機能モジュールである。調整部17は、タスクフローを構成するタスクの所要時間を増加させる機能モジュールである。調整制御部18は、その所要時間の増加を実行できるか否かを判定する機能モジュールである。一例では、調整制御部18は調整部17の一部として実装される。プログラム生成部19は、一つのタスクフローを1以上のロボット2に実行させるための少なくとも一つの動作プログラムを生成する機能モジュールである。
【0030】
[プランニング方法]
本開示に係るプランニング方法の一例として、図5を参照しながら、プログラミング支援装置4により実行される一連の処理手順の一例を説明する。図5はプログラミング支援装置4での処理の一例を処理フローS1として示すフローチャートである。すなわち、プログラミング支援装置4は処理フローS1を実行する。
【0031】
ステップS11では、受付部11が、タスクフローを生成するために必要な教示データを受け付ける。この教示データは、少なくとも一つのロボット2にジョブを実行させるために必要な情報を含む電子データであり、例えば、1以上の作業タスクと、ロボット2の動作に関する制約とを示す。その制約の例として、個々のロボット2の配置、複数の作業タスクの実行順序、ロボット2と作業タスクとの対応関係、作業タスクの開始および終了のそれぞれにおけるロボット2の姿勢、基準サイクルタイム、それぞれの作業タスクにおけるロボット2の動作時間、および同時実行制約が挙げられる。同時実行制約は、ロボット2を動作させる際に課される制約(条件)の一種である。例えば、同時実行制約は、複数のロボット2が複数のタスクを並行して実行できるタイミングを示す。教示データは、個々のロボット2について個別に設定される事項と、1以上のロボット2について共通に設定される事項とのうちの少なくとも一つを含んでよい。教示データを取得するために様々な手法が用いられてよい。例えば、受付部11はユーザにより入力された教示データを受け付けてもよいし、ユーザ入力に基づいて所与の記憶装置から教示データを読み出してもよいし、他のコンピュータから送られてきた教示データを受信してもよい。
【0032】
ステップS12では、フロー生成部12が、ジョブを実行するロボット2の台数を設定する。一例では、フロー生成部12はロボット2の台数を変更しながら複数のタスクフローを生成し、その生成の一部として、このステップS12においてロボット2の台数を設定する。例えば、フロー生成部12はロボット2の台数を1から所与の最大値まで1ずつ増やしながら、それぞれの台数についてタスクフローを生成する。
【0033】
ステップS13では、フロー生成部12が教示データと設定されたロボット2の台数とに基づいて少なくとも一つのタスクフローを生成する。一例では、フロー生成部12は教示データとロボット2の台数とに基づくシミュレーションを実行して、所与の作業タスクに対してつなぎタスクおよび待機タスクを設定し、更にエアカットパスを設定する。フロー生成部12はそのシミュレーションにおいて干渉チェックを実行し、干渉が発生しないタスクフローを生成する。干渉とは物体同士が接触または衝突することをいい、例えば、予定していない他の物体にロボット2が接触または衝突することをいう。一例では、フロー生成部12は推定サイクルタイムが基準サイクルタイム以下であるタスクフローを生成する。
【0034】
一例では、フロー生成部12は、最終的に生成されるタスクフローの候補である複数のタスクパターンを教示データに基づいて生成する。タスクパターンとは、タスクフローとして採用し得るジョブの実行方法を示す情報をいう。例えば、個々のタスクパターンは、ロボット2およびタスクの対応関係と、タスクの実行順序とについての可能な組合せを示す。フロー生成部12はそれぞれのタスクパターンについて、教示データに基づくシミュレーションを実行し、干渉を検出しなかったタスクパターンを特定する。
【0035】
例えば、フロー生成部12は巡回セールスマン問題の計算を含むシミュレーションによって、干渉が発生しないタスクパターンを特定してもよい。巡回セールスマン問題は、ノード(都市)の集合と各ノード間の移動コストとが与えられたときに、エージェント(セールスマン)がすべてのノードを一度ずつ巡る複数種類の移動経路の中で、総移動コストが最小の移動経路を求める最適化問題である。一例では、フロー生成部12は複数のタスクパターンのそれぞれの同時実行制約に基づく巡回セールスマン問題を解くことによって一つのタスクパターンを特定する。同時実行制約に基づく巡回セールスマン問題は、複数のロボット2をエージェントと見做した上で、同時実行制約下で時間軸に沿ってその複数のエージェントを動かしながら、総移動コストが最小である解(各エージェントの移動経路)を探索する処理である。この巡回セールスマン問題は、複数のロボット2のそれぞれの待機タスク(待機姿勢)をノードにより表現し、作業タスクおよびつなぎタスクを枝により表現する。
【0036】
フロー生成部12は、つなぎタスクでのエアカットパスを自動的に生成する。一例では、フロー生成部12はロボット2と他の物体との干渉を回避するように個々のエアカットパスを生成する。例えば、フロー生成部12は或る一つのエアカットパスを生成するために、先行する作業タスクにおける作業パスの終点と、後続の作業タスクにおける作業パスの始点との間で、ロボット2と他の物体との干渉を回避するための1以上の経由点を生成する。そして、フロー生成部12はその1以上の経由点を順に通るようにエアカットパスを生成する。フロー生成部12は一つのエアカットパスを生成するために、経由点の設定と干渉の回避の確認とを含む一連の処理を繰り返し実行し得る。このような生成手法の詳細は、例えば特許第4103057号公報に記載されている。
【0037】
シミュレーションでは、サイクルタイム推定部13がそれぞれのタスクパターンについて、該タスクパターンを構成する個々のタスクの所要時間を算出し、これらの所要時間に基づいて推定サイクルタイムを算出する。サイクルタイム推定部13は、ロボット2を最高速度で動作させると仮定して個々のタスクの所要時間を算出する。フロー生成部12は基準サイクルタイムと各タスクパターンの推定サイクルタイムとに基づいて少なくとも一つのタスクフローを生成する。一例では、フロー生成部12は推定サイクルタイムが基準サイクルタイム以下である少なくとも一つのタスクフローを生成する。フロー生成部12は、推定サイクルタイムと基準サイクルタイムとの差が最小であるタスクフローを少なくとも生成してもよい。フロー生成部12は、推定サイクルタイムが最小であるタスクフローを少なくとも生成してもよい。フロー生成部12が複数のタスクフローを生成する場合、少なくとも二つのタスクフローの間で推定サイクルタイムが互いに異なってもよい。あるいは、その複数のタスクフローは、推定サイクルタイムが同じ少なくとも二つのタスクフローを含んでもよい。
【0038】
ステップS14では、評価部14が、生成された少なくとも一つのタスクフローのそれぞれについて、該タスクフローを実行する少なくとも一つのロボット2に関する評価値を算出する。本開示において、評価値とは、ジョブを実行するロボット2の意義または価値を直接にまたは間接的に示す指数をいう。この評価値は、ユーザがタスクフローを選択するための参考として用いられ得る。評価部14は、フロー生成部12におけるシミュレーションから得られたデータと、該シミュレーションとは別の更なる演算とのうちの少なくとも一つに基づいて評価値を算出してもよい。タスクフローが複数のロボット2の動作を示す場合には、評価部14は個々のロボット2の評価値の統計値を、該タスクフローにおける最終的な評価値として算出してもよい。統計値は例えば平均値または中央値でもよい。あるいは、評価部14はそれぞれのロボット2の評価値の集合を取得してもよい。例えば、評価部14は稼働率、製品寿命、およびスループットのうちの少なくとも一つを評価値として算出してもよい。
【0039】
稼働率とは、推定サイクルタイムに対するロボット2の動作時間の割合をいう。例えば、評価部14はそれぞれのロボット2について次のように稼働率を算出する。すなわち、評価部14はタスクフローにおけるロボット2のすべての作業タスクおよびすべてのつなぎタスクの所要時間の合計を算出する。そして、評価部14はその合計時間を推定サイクルタイムで除することで稼働率を得る。
【0040】
製品寿命とは、ロボット2が製品仕様を満たす態様で動作できる期間をいう。例えば、評価部14はそれぞれのロボット2について次のように製品寿命を算出する。すなわち、評価部14はタスクフローにおいて少なくとも一つのロボット2の関節軸に掛かる負荷を算出する。評価部14は、ロボット2の仕様と、シミュレーションによって得られたロボット2の想定動作とに基づいて、その負荷を算出してもよい。ロボット2の仕様は、ロボット2の構造および動作仕様のうちの少なくとも一つを含み得る。ロボット2の想定動作は、姿勢の変化と、動作速度と、ロボット2により処理されるワークの重量とのうちの少なくとも一つを含み得る。評価部14はその負荷とロボット2の仕様とに基づいてロボット2の製品寿命を算出する。評価部14は、その製品寿命に基づいて、ロボット2の導入コスト、ロボット2の運用で発生する電気料金、および損益分岐点のうちの少なくとも一つを評価値として更に算出してもよい。
【0041】
スループットとは、単位時間当たりのロボット2の処理量をいう。評価部14は推定サイクルタイムと単位時間とに基づいてスループットを算出してもよく、例えば、単位時間を推定サイクルタイムで除することでスループットを得てもよい。単位時間の長さの例として、1時間、1日、1週間、1ヶ月、3ヶ月(四半期)、6ヶ月、および1年が挙げられる。別の例として、単位時間は1日当たりの想定稼働時間であってもよい。
【0042】
ステップS15では、フロー生成部12がロボット2の台数を変更するか否かを判定する。例えば、フロー生成部12はロボット2の台数を一つ増やし、増分後の台数が所与の設定値を超えなければ、ロボット2の台数をその値に変更する。ロボット2の台数を変更する場合には(ステップS15においてYES)、処理はステップS12に戻り、ステップS12~S14の処理が繰り返される。すなわち、フロー生成部12はステップS12においてロボット2の台数を変更後の値に設定し、ステップS13においてそのロボット2の台数に基づいてタスクフローを生成し、ステップS14において該タスクフローについて評価値を算出する。ロボット2の台数を変更しない場合には(ステップS15においてNO)、処理はステップS16に進む。
【0043】
ステップS16では、結果生成部15が、生成された少なくとも一つのタスクフローを示すプランニング結果を生成する。結果生成部15はこのプランニング結果を一時的にまたは永続的に記憶部に記憶する。記憶部はメモリ162またはストレージ163であり得る。
【0044】
ステップS17では、表示制御部16がそのプランニング結果を表示する。例えば、表示制御部16はプランニング結果をモニタ20上に表示する。
【0045】
図6はプランニング結果の表示の一例を示す図である。この例では、表示制御部16は、生成された複数のタスクフローを表形式で表現する画面300を表示する。この画面300は個々のタスクフローを示すテーブル301を含む。テーブル301の各行が一つのタスクフローに対応する。このテーブル301は、個々のタスクフローを識別するための番号(「No.」欄)、ロボット2の台数、推定サイクルタイム、稼働率、製品寿命、およびスループットをカラムとして有する。画面300はカーソル302、最適化ボタン303、およびプログラムボタン304を更に含む。カーソル302は、テーブル301から一つのタスクフローを選択するためのユーザインタフェースである。最適化ボタン303は、選択されたタスクフローをプログラミング支援装置4に調整させるためのユーザインタフェースである。この調整は、タスクフローを構成する複数のタスクのうちの少なくとも一つのタスク(作業タスクまたはつなぎタスク)の所要時間を増加させることを含み、推定サイクルタイムの調整を更に含み得る。プログラムボタン304は、選択されたタスクフローに対応する動作プログラムをプログラミング支援装置4に生成させるためのユーザインタフェースである。
【0046】
図5に戻って、ステップS18では、調整部17がユーザにより選択されたタスクフローを調整する。一例では、ユーザが最適化ボタン303をクリックすると、受付部11が、選択されたタスクフローの調整を指示するユーザ入力を受け付ける。調整部17はそのユーザ入力に応答して、カーソル302により選択されたタスクフローを調整する。一例では、調整部17は、タスクフローを構成する複数のタスクのうちの少なくとも一つのタスク(作業タスクまたはつなぎタスク)の所要時間を増加させ、これにより待ち時間を短縮させる。
【0047】
図7を参照しながらタスクフローの調整の一例を説明する。図7はその調整の詳細な手順の一例を示すフローチャートである。
【0048】
ステップS181では、調整部17が、選択されたタスクフローの推定サイクルタイムと、該タスクフローの個々のタスクの所要時間とを取得する。時間に関するこれらのデータは、フロー生成部12におけるシミュレーションにより既に得られており、調整部17はそのデータを取得する。
【0049】
ステップS182では、調整制御部18がタスクフローを調整可能であるか否かを判定する。タスクフローが複数のロボット2の動作を示す場合には、調整制御部18は同時実行制約を満たしつつタスクフローを調整可能であるか否かを判定してもよい。一例では、調整制御部18は推定サイクルタイムが基準サイクルタイムを超えないように該推定サイクルタイムを増大させることが可能か否かを判定する。調整制御部18は、推定サイクルタイムを増大させることが可能である場合にタスクフローを調整可能であると判定し、そうでない場合にタスクフローを調整できないと判定する。別の例では、調整制御部18は推定サイクルタイムを増加させるか否かにかかわらず、少なくとも一つのタスク(作業タスクまたはつなぎタスク)の所要時間を増加させることが可能か否かを判定する。調整制御部18は、その所要時間を増加させることが可能である場合にタスクフローを調整可能であると判定し、そうでない場合にタスクフローを調整できないと判定する。
【0050】
タスクフローが調整可能である場合には(ステップS182においてYES)、処理はステップS183に進む。ステップS183では、調整部17がタスクフローの中から一つの待ち区間を選択する。例えば、調整部17はタスクフローの中で待ち時間が最長である待ち区間を選択する。
【0051】
ステップS184では、調整部17が、選択された待ち区間の上流に位置する少なくとも一つのタスク(作業タスクまたはつなぎタスク)の所要時間を増加させる。「待ち区間の上流に位置するタスク」とは、タスクフロー(言い換えると、ジョブ)が実行された場合に待ち区間よりも先に実行されるタスクをいう。例えば、調整部17は、選択された待ち区間の直前に位置するタスクの所要時間を増加させてもよい。待ち時間が最長である待ち区間が選択された場合には、調整部17は該最長の待ち時間を短縮させるように、少なくとも一つのタスクの所要時間を増加させる。調整部17は、タスクフローの推定サイクルタイムと基準サイクルタイムとの差を短縮するように、少なくとも一つのタスクの所要時間を増加させてもよい。この処理では、調整部17は推定サイクルタイムを基準サイクルタイム以下に維持しつつ、該推定サイクルタイムを延ばす。あるいは、調整部17は、タスクフローの推定サイクルタイムと基準サイクルタイムとの差を変えないように、少なくとも一つのタスクの所要時間を増加させてもよい。
【0052】
調整部17は、特定の種類のタスクの所要時間のみを増加させてもよい。例えば、調整部17は、複数の作業タスクのそれぞれの所要時間を変更することなく、少なくとも一つのつなぎタスクの所要時間を増加させてもよい。これは、ユーザにより定義されたタスクに影響を与えることなく、プログラミング支援装置4により自動的に挿入されるタスクの所要時間を増加させることを意味する。あるいは、調整部17は、所要時間の増加が可能である少なくとも一つのタスク(作業タスクまたはつなぎタスク)の所要時間を増加させてもよい。一例では、複数のタスクのそれぞれは、所要時間の増加が可能であるか否かを示す調整可否フラグを有する。例えば、各作業タスクおよび各つなぎタスクが調整可否フラグを有する。この調整可否フラグはユーザによって予め設定されてもよい。調整部17は個々の調整可否フラグを参照して、所要時間の増加が可能であるタスクを特定し、そのタスクの所要時間を増加させる。
【0053】
タスクの所要時間を増加させるために、調整部17はそのタスクでのロボット2の動作速度を現在値より下げてもよいし、そのタスクでのロボット2のパスを現在値より長くしてもよい。あるいは、調整部17は一つのタスクについて、ロボット2の動作速度を下げることと、パスを長くすることとの双方を実行してもよい。
【0054】
ステップS185では、調整部17が、少なくとも一つのタスク(作業タスクまたはつなぎタスク)の所要時間を増加させたタスクフロー、すなわち、調整されたタスクフローにおいて干渉が発生するか否かを確認する。例えば、調整部17はそのタスクフローについてのシミュレーションを実行して、少なくとも一つのロボット2において干渉が発生するか否かを確認する。
【0055】
調整されたタスクフローにおいて干渉が確認された場合には(ステップS186においてYES)、処理はステップS187に進む。ステップS187では、調整部17が、ステップS184で実行された所要時間の増加を取り消す。例えば、調整部17は調整されたタスクフローを破棄することでその取消を実行する。ステップS187の次に、処理はステップS182に戻る。この場合、調整制御部18は、調整される前のタスクフローについて再びステップS182の処理を実行する。調整制御部18は、ステップS187での取消処理を更に考慮して、タスクフローを調整可能であるか否かを判定する。
【0056】
調整されたタスクフローにおいて干渉が確認されなかった場合には(ステップS186においてNO)、処理はステップS182に戻る。この場合、調整制御部18は調整されたタスクフローについてステップS182の処理を実行する。すなわち、調整制御部18は、複数のタスクのうちの少なくとも一つのタスク(作業タスクまたはつなぎタスク)の所要時間を増加させることが更に可能である場合に、調整部17に該少なくとも一つのタスクの所要時間を増加させる。
【0057】
タスクフローが調整可能でない場合には(ステップS182においてNO)、調整部17はステップS18の処理を終了する。
【0058】
図8を参照しながらタスクフローの調整の一例を説明する。図8は、タスクフロー210のタスクの所要時間を増加させる処理の一例を示す図である。タスクフロー210は1台のロボット2の動作を示す。記号「S」はロボット2の開始姿勢を示し、記号「E」はロボット2の終了姿勢を示す。タスクフロー210は開始姿勢から終了姿勢に向けて、つなぎタスク211、作業タスク212、待ち区間213、つなぎタスク214、作業タスク215、つなぎタスク216、待ち区間217、作業タスク218、およびつなぎタスク219をこの順に含む。
【0059】
一例では、調整部17は、タスクフロー210の中で待ち時間が最長である待ち区間217を選択する(ステップS183)。続いて、調整部17は待ち区間217の上流に位置する少なくとも一つのタスク(作業タスクまたはつなぎタスク)の所要時間を増加させる。例えば、調整部17はつなぎタスク211、作業タスク212、つなぎタスク214、作業タスク215、およびつなぎタスク216のうちの少なくとも一つの所要時間を増加させる(ステップS184)。図8の例では、調整部17は待ち区間217を短縮させるように、待ち区間217の直前に位置するつなぎタスク216の所要時間を増加させる。
【0060】
つなぎタスク216の所要時間を増加させた場合でもタスクフロー210で干渉が発生せず、且つ、タスクフロー210が更に調整可能である場合には、調整部17は、タスクフロー210の中で待ち時間が最長である待ち区間213を選択する(ステップS183)。続いて、調整部17は待ち区間213の上流に位置する少なくとも一つのタスク(作業タスクまたはつなぎタスク)の所要時間を増加させる。例えば、調整部17はつなぎタスク211および作業タスク212のうちの少なくとも一つの所要時間を増加させる(ステップS184)。図8の例では、調整部17は待ち区間213を短縮させるように、つなぎタスク211の所要時間を増加させる。この例では、結果的に待ち区間213が解消されて、作業タスク212に続いて直ぐにつなぎタスク214が実行される。
【0061】
つなぎタスク211の所要時間を増加させた場合でもタスクフロー210で干渉が発生せず、且つ、タスクフロー210が更に調整可能である場合には、調整部17はタスクの所要時間を増加させる処理を更に実行し得る。例えば、調整部17はタスクフロー210の中で待ち時間が最長である待ち区間217を選択する(ステップS183)。そして、調整部17はつなぎタスク211、作業タスク212、つなぎタスク214、作業タスク215、およびつなぎタスク216のうちの少なくとも一つの所要時間を増加させ得る(ステップS184)。
【0062】
図8の例において、調整部17は、つなぎタスク211,216のうちの少なくとも一つについて所要時間を増加させることで、タスクフロー210により実現されるジョブの推定サイクルタイムを増加させてもよい。あるいは、調整部17はその推定サイクルタイムを変更することなく、つなぎタスク211,216のうちの少なくとも一つについて所要時間を増加させてもよい。
【0063】
図5に戻って、ステップS19では、プログラム生成部19がユーザにより決定されたタスクフローに基づいて動作プログラムを生成する。一例では、ユーザがプログラムボタン304をクリックすると、受付部11が、選択されたタスクフローに対応する動作プログラムの生成を指示するユーザ入力を受け付ける。プログラム生成部19はそのユーザ入力に応答して、カーソル302により選択されたタスクフローを1以上のロボット2に実行させるための動作プログラムを生成する。一例では、プログラム生成部19はそのタスクフローに基づいて、個々の作業タスクの実行順序と、1以上のロボット2への複数の作業タスクの割当て(すなわち、ロボット2と作業タスクとの対応関係)と、エアカットパスおよびつなぎ時間が自動的に設定された個々のつなぎタスクと、作業タスクとつなぎタスクとの間でのロボットの待ち時間とを設定する。プログラム生成部19はその設定に基づいて、1以上のロボット2を動作させるための少なくとも一つの動作プログラムを生成する。一例では、プログラム生成部19は複数のロボット2のそれぞれに、そのロボット2に特化した動作プログラムを生成する。
【0064】
ステップS20では、プログラム生成部19が生成された動作プログラムを出力する。例えば、プログラム生成部19は動作プログラムを、ストレージ163などの記憶部に格納してもよいし、ロボットコントローラ3などの他のコンピュータに送信してもよい。あるいは、プログラム生成部19はテキスト、コンピュータグラフィック(CG)による動画または静止画などの形式で動作プログラムをモニタ20上に表示してもよい。プログラミング支援装置4は出力された動作プログラムに対して、更なる干渉チェックなどの追加の処理を実行してもよい。一例では、プログラム生成部19は少なくとも一つの動作プログラムを少なくとも一つのロボットコントローラ3に出力し、それぞれのロボットコントローラ3はその動作プログラムに基づいて1以上のロボット2を動作させる。
【0065】
処理フローS1では、調整部17はユーザにより選択されたタスクフローを調整する。別の例として、調整部17はユーザ入力を受け付けることなく、タスクフローを自動的に調整してもよい。図9を参照しながらその自動調整の一例を説明する。図9はプログラミング支援装置4での処理の別の例を処理フローS1Aとして示すフローチャートである。すなわち、プログラミング支援装置4は処理フローS1Aを実行する。
【0066】
処理フローS1Aは、ステップS18を含まず、その代わりにステップS18Aを含む点で、処理フローS1と異なる。ステップS11~S13は処理フローS1と同じである。続くステップS18Aでは、調整部17が生成された少なくとも一つのタスクフローのそれぞれを調整する。調整部17はそれぞれのタスクフローについて、図7に示すステップS181~S187の処理を実行する。ステップS18Aに続くステップS14,S15は処理フローS1と同じである。ロボットの台数を変更しない場合には(ステップS15においてNO)、ステップS16,S17,S19,S20が処理フローS1と同様に実行される。したがって、処理フローS1と処理フローS1Aとの違いは、調整部17がユーザ入力に応答してタスクフローを調整するか、そのユーザ入力を受け付けることなく自動的にタスクフローを調整するかという点である。
【0067】
[プログラム]
プログラミング支援装置4の各機能モジュールは、プロセッサ161またはメモリ162の上にプランニングプログラムを読み込ませてプロセッサ161にそのプログラムを実行させることで実現される。プランニングプログラムは、プログラミング支援装置4の各機能モジュールを実現するためのコードを含む。プロセッサ161はプランニングプログラムに従って入出力ポート164を動作させ、メモリ162またはストレージ163におけるデータの読み出しおよび書き込みを実行する。このような処理によりプログラミング支援装置4の各機能モジュールが実現される。
【0068】
プランニングプログラムは、CD-ROMやDVD-ROM、半導体メモリなどの非一時的な記録媒体に固定的に記録された上で提供されてもよい。あるいは、プランニングプログラムは、搬送波に重畳されたデータ信号として通信ネットワークを介して提供されてもよい。
【0069】
[効果]
以上説明したように、本開示の一側面に係るプランニングシステムは、シミュレーションに基づいて、ジョブの推定サイクルタイムを算出するサイクルタイム推定部と、ジョブについて予め設定された基準サイクルタイムと、推定サイクルタイムとに基づいて、該ジョブを少なくとも一つのロボットによって実行するための少なくとも一つのタスクフローを生成するフロー生成部とを備える。
【0070】
本開示の一側面に係るプランニング方法は、少なくとも一つのプロセッサを備えるプランニングシステムにより実行される。プランニング方法は、シミュレーションに基づいて、ジョブの推定サイクルタイムを算出するステップと、ジョブについて予め設定された基準サイクルタイムと、推定サイクルタイムとに基づいて、該ジョブを少なくとも一つのロボットによって実行するための少なくとも一つのタスクフローを生成するステップとを含む。
【0071】
本開示の一側面に係るプランニングプログラムは、シミュレーションに基づいて、ジョブの推定サイクルタイムを算出するステップと、ジョブについて予め設定された基準サイクルタイムと、推定サイクルタイムとに基づいて、該ジョブを少なくとも一つのロボットによって実行するための少なくとも一つのタスクフローを生成するステップとをコンピュータに実行させる。
【0072】
このような側面においては、所与の基準サイクルタイムと推定サイクルタイムとに基づいてタスクフローが生成されるので、効果的なロボット制御を実現するためのプランニングが可能になる。例えば、基準サイクルタイムに適合するロボット制御を実現できる。
【0073】
他の側面に係るプランニングシステムでは、フロー生成部は、少なくとも一つのタスクフローとして、推定サイクルタイムが相異なる複数のタスクフローを生成してもよい。プランニングシステムは、複数のタスクフローをプランニング結果として記憶部に記憶する結果生成部を更に備えてもよい。この場合には、所与の基準サイクルタイムに基づいて生成された複数のタスクフローをプランニング結果として得ることができる。
【0074】
他の側面に係るプランニングシステムでは、フロー生成部は、推定サイクルタイムが基準サイクルタイム以下である少なくとも一つのタスクフローを生成してもよい。この処理によって、所与の基準サイクルタイム以内にジョブを完了できるタスクフローを得ることができる。
【0075】
他の側面に係るプランニングシステムでは、フロー生成部は、推定サイクルタイムと基準サイクルタイムとの差が最小であるタスクフローを少なくとも生成してもよい。この処理によって、所与の基準サイクルタイムに合うようにジョブを完了できるタスクフローを取得できる。このようなタスクフローは、基準サイクルタイムの間におけるロボットの稼働率を向上させ得る。したがって、これは効果的なロボット制御のプランニングの一例であるといえる。
【0076】
他の側面に係るプランニングシステムでは、フロー生成部は、推定サイクルタイムが最小であるタスクフローを少なくとも生成してもよい。この場合には、最も早くジョブを完了させることができるタスクフローを取得できる。これは効果的なロボット制御の一例であるといえる。
【0077】
他の側面に係るプランニングシステムでは、少なくとも一つのタスクフローのうちの少なくとも一つについて、該タスクフローを構成する複数のタスクのうちの少なくとも一つのタスクの所要時間を増加させる調整部を更に備えてもよい。タスクの所要時間を増加させることで、タスクフローにおけるロボットの稼働率が向上し得る。したがって、これは効果的なロボット制御のプランニングの一例であるといえる。
【0078】
他の側面に係るプランニングシステムでは、調整部は、少なくとも一つのタスクフローのうちの少なくとも一つについて、推定サイクルタイムと基準サイクルタイムとの差を短縮するように、少なくとも一つのタスクの所要時間を増加してもよい。この処理によって、所与の基準サイクルタイムに合うようにジョブを完了できるタスクフローをより多く取得できる。このようなタスクフローは、基準サイクルタイムの間におけるロボットの稼働率を向上させ得る。したがって、これは効果的なロボット制御のプランニングの一例であるといえる。
【0079】
他の側面に係るプランニングシステムでは、複数のタスクは、予め定義された複数の作業タスクと、作業タスク間に位置するつなぎタスクとを含み、調整部は、複数の作業タスクのそれぞれの所要時間を変更することなく、つなぎタスクの所要時間を増加させてもよい。この処理によって、例えばユーザにより定義される作業タスクに影響を及ぼすことなく、タスクフローにおけるロボットの稼働率を向上させることができる。
【0080】
他の側面に係るプランニングシステムでは、調整部は、連続して位置する二つのタスクとの間の待ち時間が最長である待ち区間を選択し、最長の待ち時間を短縮させるように、待ち区間より上流に位置する少なくとも一つのタスクの所要時間を増加させてもよい。この処理によって最長の待ち時間が短縮されるので、ロボットの稼働率を上げることができる。
【0081】
他の側面に係るプランニングシステムでは、調整部は、待ち区間の直前に位置するタスクの所要時間を増加させてもよい。待ち区間の直前に位置するタスクを調整することで、タスクフローにおいてこの調整の影響が及ぶ範囲を抑えつつ簡易に待ち時間を短縮できる。
【0082】
他の側面に係るプランニングシステムでは、複数のタスクのそれぞれは、所要時間の増加が可能であるか否かを示す調整可否フラグを有し、調整部は、所要時間の増加が可能である少なくとも一つのタスクの所要時間を増加させてもよい。所要時間を変更可能なタスクに限って所要時間が増加されるので、タスクフローの他の部分に影響を及ぼすことなくその調整を実行できる。
【0083】
他の側面に係るプランニングシステムでは、調整部は、所要時間を増加させるように、少なくとも一つのタスクでのロボットの動作速度を下げてもよい。この手法により、簡易な手法で所要時間を増加させることができる。また、ロボットの動作速度を下げることで、ロボットの製品寿命の延びが期待できる。
【0084】
他の側面に係るプランニングシステムでは、調整部は、所要時間を増加させるように、タスクでのロボットのパスを長くしてもよい。この処理によって、ロボットの動作速度を下げることなく所要時間を増加させることができる。ロボットの動作速度が維持されるので、ロボットに余分な負荷が掛からない。
【0085】
他の側面に係るプランニングシステムは、複数のタスクのうちの少なくとも一つのタスクの所要時間を増加させることが更に可能である場合に、調整部に該少なくとも一つのタスクの所要時間を増加させる調整制御部を更に備えてもよい。可能な限りタスクの所要時間が増加させられるので、ロボットの稼働率をできる限り上げることが可能になる。
【0086】
他の側面に係るプランニングシステムは、所要時間の増加を指示するユーザ入力を受け付ける受付部を更に備えてもよい。調整部は、ユーザ入力に応答して所要時間を増加させてもよい。この場合には、ユーザの要求に応じてタスクの所要時間を調整できる。
【0087】
他の側面に係るプランニングシステムは、少なくとも一つのタスクフローのそれぞれについて、該タスクフローを実行する少なくとも一つのロボットに関する評価値を算出する評価部を更に備えてもよい。この場合には、タスクフローそのものだけでなく、そのタスクフローを実行するロボットに関する情報も得ることができる。
【0088】
他の側面に係るプランニングシステムでは、評価部は、評価値として、少なくとも一つのタスクフローのそれぞれについて、推定サイクルタイムに対する少なくとも一つのロボットの動作時間の割合である稼働率を算出してもよい。この場合には、個々のタスクフローにおいて、ロボットが実際にどのくらいの時間動作するかを把握できる。
【0089】
他の側面に係るプランニングシステムでは、評価部は、評価値として、少なくとも一つのタスクフローのそれぞれについて、該タスクフローにおいて少なくとも一つのロボットの関節軸に掛かる負荷に基づいて、該少なくとも一つのロボットの製品寿命を算出してもよい。この場合には、個々のタスクフローについて、ロボットをどのくらい長い間使用し続けられるかを把握できる。
【0090】
他の側面に係るプランニングシステムでは、評価部は、評価値として、少なくとも一つのタスクフローのそれぞれについて、推定サイクルタイムに基づいて該少なくとも一つのロボットのスループットを算出してもよい。この場合には、個々のタスクフローについて、ロボットがどのくらいの付加価値を生み出すかを把握できる。
【0091】
他の側面に係るプランニングシステムは、少なくとも一つのタスクフローをプランニング結果として表示装置に表示させる表示制御部を更に備えてもよい。この場合には、プランニング結果をユーザに視覚的に伝えることができる。
【0092】
他の側面に係るプランニングシステムは、少なくとも一つのタスクフローのうち、ユーザにより決定されたタスクフローを1以上のロボットに実行させるための動作プログラムを生成するプログラム生成部を更に備えてもよい。この場合には、ユーザによって決定されたタスクフローに従って動作プログラムを生成できる。
【0093】
本開示の一側面に係るロボットシステムは、1以上のロボットと、上記のプランニングシステムと、生成された動作プログラムに基づいて1以上のロボットを動作させる1以上のロボットコントローラとを備える。この側面においては効果的なロボット制御を実現できる。
【0094】
[変形例]
以上、本開示の実施形態に基づいて詳細に説明した。しかし、本開示は上記の例に限定されるものではない。本開示は、その要旨を逸脱しない範囲で様々な変形が可能である。
【0095】
上記の例ではプログラミング支援装置4が少なくとも一つのタスクフローをプランニング結果として表示装置に表示するが、プランニングシステムはそのプランニング結果を他の方法で出力してもよい。例えば、プランニングシステムはプランニング結果を、所与の記憶部に記憶してもよいし、他のコンピュータに向けて送信してもよい。
【0096】
プランニングシステムの機能構成は上記の例に限定されない。本開示に係るプランニング方法は、上記の例とは異なる機能構成を用いて実行されてもよい。
【0097】
プランニングシステムのハードウェア構成は、プログラムの実行により各機能モジュールを実現する態様に限定されない。例えば、上述した機能モジュール群の少なくとも一部は、その機能に特化した論理回路により構成されていてもよいし、該論理回路を集積したASIC(Application Specific Integrated Circuit)により構成されてもよい。
【0098】
少なくとも一つのプロセッサにより実行される方法の処理手順は上記の例に限定されない。例えば、上述したステップ(処理)の一部が省略されてもよいし、別の順序で各ステップが実行されてもよい。また、上述したステップのうちの2以上のステップが組み合わされてもよいし、ステップの一部が修正または削除されてもよい。あるいは、上記の各ステップに加えて他のステップが実行されてもよい。
【0099】
コンピュータシステムまたはコンピュータ内で二つの数値の大小関係を比較する際には、「以上」および「よりも大きい」という二つの基準のどちらを用いてもよく、「以下」および「未満」という二つの基準のうちのどちらを用いてもよい。
【符号の説明】
【0100】
1…ロボットシステム、2…ロボット、3…ロボットコントローラ、4…プログラミング支援装置、10…本体、11…受付部、12…フロー生成部、13…サイクルタイム推定部、14…評価部、15…生成部、16…表示制御部、17…調整部、18…調整制御部、19…プログラム生成部、20…モニタ、30…入力デバイス、200,210…タスクフロー、201~203,213,217…待ち区間、212,215,218…作業タスク、211,214,216,219…つなぎタスク、300…画面、301…テーブル、302…カーソル、303…最適化ボタン、304…プログラムボタン。
図1
図2
図3
図4
図5
図6
図7
図8
図9