(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-06-27
(45)【発行日】2022-07-05
(54)【発明の名称】プログラミング支援装置、ロボットシステム及びプログラム生成方法
(51)【国際特許分類】
B25J 9/22 20060101AFI20220628BHJP
G05B 19/4093 20060101ALI20220628BHJP
【FI】
B25J9/22 A
G05B19/4093 D
(21)【出願番号】P 2017217379
(22)【出願日】2017-11-10
【審査請求日】2020-07-15
(73)【特許権者】
【識別番号】000006622
【氏名又は名称】株式会社安川電機
(74)【代理人】
【識別番号】100088155
【氏名又は名称】長谷川 芳樹
(74)【代理人】
【識別番号】100113435
【氏名又は名称】黒木 義樹
(74)【代理人】
【識別番号】100171099
【氏名又は名称】松尾 茂樹
(72)【発明者】
【氏名】高橋 誠
(72)【発明者】
【氏名】福田 拓也
(72)【発明者】
【氏名】渡邉 航
【審査官】臼井 卓巳
(56)【参考文献】
【文献】特開平03-184795(JP,A)
【文献】特開平08-202429(JP,A)
【文献】特開2003-150220(JP,A)
【文献】特開2004-243461(JP,A)
【文献】特開2006-106919(JP,A)
【文献】特開2012-195446(JP,A)
【文献】特開2016-013579(JP,A)
【文献】特開2016-093869(JP,A)
【文献】特開2016-099846(JP,A)
【文献】特開2017-001145(JP,A)
【文献】米国特許出願公開第2007/0150102(US,A1)
【文献】米国特許出願公開第2009/0289591(US,A1)
【文献】米国特許第09707680(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 9/16-19/06
G05B 19/18-19/42
H01L 21/304
(57)【特許請求の範囲】
【請求項1】
ロボット用のタスクの実行に関する第一条件を、複数の前記タスクを含むタスクグループごとに入力するための第一入力エリアの表示用データを生成する第一表示データ生成部と、
複数の前記タスクグループの実行順序に関する第二条件を入力するための第二入力エリアの表示用データを生成する第二表示データ生成部と、
前記第一入力エリアへの入力に基づいて前記第一条件を設定する第一条件設定部と、
前記第二入力エリアへの入力に基づいて前記第二条件を設定する第二条件設定部と、
前記複数のタスクグループを少なくとも一台の前記ロボットに実行させるための動作プログラムを前記第一条件及び前記第二条件に基づいて生成するプログラム生成部と、を備え、
前記プログラム生成部は、
前記第二条件により実行順序が定められていない二以上の前記タスクグループの少なくとも一部が並行するように、当該二以上のタスクグループの実行順序を設定する順序設定部と、
前記第一条件により実行用のロボットが定められていない二以上の前記タスクが並行するように前記実行順序が設定される場合に、当該二以上のタスクの実行用に二台以上の前記ロボットをそれぞれ設定するロボット設定部と、を有するプログラミング支援装置。
【請求項2】
前記第二条件設定部は、前記第二入力エリアにおいて、複数の前記タスクグループのアイコンが第一方向に沿って並んでいる場合に、当該複数のタスクグループのアイコンの並び順に従った実行順序を保持するように前記第二条件を設定し、前記第二入力エリアにおいて、複数の前記タスクグループのアイコンが前記第一方向に交差する第二方向に沿って並んでいる場合に、当該複数のタスクグループの実行順序を未定とするように前記第二条件を設定する、請求項1記載のプログラミング支援装置。
【請求項3】
前記プログラム生成部は、
実行対象の前記タスク同士の間の動作パスを前記ロボットごとに設定するパス設定部と、
複数台の前記ロボット同士の動作タイミングを調整するための待機時間を前記ロボットごとに設定する待機時間設定部と、
予め設定された評価条件に基づいて、前記ロボット設定部、前記順序設定部、前記パス設定部及び前記待機時間設定部による設定内容の採用可否を判定する採否判定部と、を更に有する、請求項1又は2記載のプログラミング支援装置。
【請求項4】
前記採否判定部によって採用可と判定された設定内容に従って、前記タスクの実行時間と、前記動作パスに従った移動時間と、前記待機時間とを前記ロボットごとに示すタイムチャートの表示用データを生成する第三表示データ生成部を更に備える、請求項3記載のプログラミング支援装置。
【請求項5】
前記タイムチャートにおいて選択された期間における前記ロボットの動作を示す動画の表示用データを生成する第四表示データ生成部を更に備える、請求項4記載のプログラミング支援装置。
【請求項6】
複数の前記タスクグループのリストを表示するリスト表示エリアの表示用データを生成する第五表示データ生成部を更に備え、
前記第一表示データ生成部は、前記リスト表示エリアにおいて設定対象として選択された前記タスクグループを前記第一条件の設定対象とするように前記第一入力エリアの表示用データを更新し、
前記第二表示データ生成部は、前記リスト表示エリアにおいて実行対象として選択された前記タスクグループを前記第二条件の設定対象として追加するように前記第二入力エリアの表示用データを更新する、請求項1~5のいずれか一項記載のプログラミング支援装置。
【請求項7】
複数台のロボットと、
ロボット用のタスクの実行に関する第一条件を、複数の前記タスクを含むタスクグループごとに入力するための第一入力エリアの表示用データを生成する第一表示データ生成部と、
複数の前記タスクグループの実行順序に関する第二条件を入力するための第二入力エリアの表示用データを生成する第二表示データ生成部と、
前記第一入力エリアへの入力に基づいて前記第一条件を設定する第一条件設定部と、
前記第二入力エリアへの入力に基づいて前記第二条件を設定する第二条件設定部と、
前記複数のタスクグループを前記ロボットに実行させるための動作プログラムを前記第一条件及び前記第二条件に基づいて生成するプログラム生成部と、
前記プログラム生成部により生成された前記動作プログラムに従って前記ロボットを制御するコントローラと、を備え、
前記プログラム生成部は、
前記第二条件により実行順序が定められていない二以上の前記タスクグループの少なくとも一部が並行するように、当該二以上のタスクグループの実行順序を設定する順序設定部と、
前記第一条件により実行用のロボットが定められていない二以上の前記タスクが並行するように前記実行順序が設定される場合に、当該二以上のタスクの実行用に前記複数台のロボットのうち二台以上のロボットをそれぞれ設定するロボット設定部と、を有するロボットシステム。
【請求項8】
ロボット用のタスクの実行に関する第一条件を、複数の前記タスクを含むタスクグループごとに入力するための第一入力エリアの表示用データを生成することと、
複数の前記タスクグループの実行順序に関する第二条件を入力するための第二入力エリアの表示用データを生成することと、
前記第一入力エリアへの入力に基づいて前記第一条件を設定することと、
前記第二入力エリアへの入力に基づいて前記第二条件を設定することと、
前記複数のタスクグループを少なくとも一台の前記ロボットに実行させるための動作プログラムを前記第一条件及び前記第二条件に基づいて生成することと、を含み、
前記動作プログラムを生成することは、
前記第二条件により実行順序が定められていない二以上の前記タスクグループの少なくとも一部が並行するように、当該二以上のタスクグループの実行順序を設定することと、
前記第一条件により実行用のロボットが定められていない二以上の前記タスクが並行するように前記実行順序が設定される場合に、当該二以上のタスクの実行用に二台以上の前記ロボットをそれぞれ設定することと、を含むプログラム生成方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、プログラミング支援装置、ロボットシステム及びプログラム生成方法に関する。
【背景技術】
【0002】
特許文献1には、実行主体を複数含むアクションを実行主体ごとに複数のアクションに分割する分割部と、分割部によって分割されたアクションを含む複数のアクション間の依存関係をあらわす依存情報に基づき、複数のアクションのうち実行主体が一致する複数のアクションの少なくとも一つの開始タイミングを調整する調整部と、を備える作業計画装置が開示されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
本開示は、ロボットの動作プログラミングの負担軽減に有効なプログラミング支援装置、ロボットシステム及びプログラム生成方法を提供することを目的とする。
【課題を解決するための手段】
【0005】
本開示の一側面に係るプログラミング支援装置は、ロボット用のタスクの実行に関する第一条件を、複数のタスクを含むタスクグループごとに入力するための第一入力エリアの表示用データを生成する第一表示データ生成部と、複数のタスクグループの実行順序に関する第二条件を入力するための第二入力エリアの表示用データを生成する第二表示データ生成部と、第一入力エリアへの入力に基づいて第一条件を設定する第一条件設定部と、第二入力エリアへの入力に基づいて第二条件を設定する第二条件設定部と、複数のタスクグループを少なくとも一台のロボットに実行させるための動作プログラムを第一条件及び第二条件に基づいて生成するプログラム生成部と、を備える。
【0006】
本開示の他の側面に係るロボットシステムは、少なくとも一台のロボットと、ロボット用のタスクの実行に関する第一条件を、複数のタスクを含むタスクグループごとに入力するための第一入力エリアの表示用データを生成する第一表示データ生成部と、複数のタスクグループの実行順序に関する第二条件を入力するための第二入力エリアの表示用データを生成する第二表示データ生成部と、第一入力エリアへの入力に基づいて第一条件を設定する第一条件設定部と、第二入力エリアへの入力に基づいて第二条件を設定する第二条件設定部と、複数のタスクグループをロボットに実行させるための動作プログラムを第一条件及び第二条件に基づいて生成するプログラム生成部と、プログラム生成部により生成された動作プログラムに従ってロボットを制御するコントローラと、を備える。
【0007】
本開示の更に他の側面に係るプログラム生成方法は、ロボット用のタスクの実行に関する第一条件を、複数のタスクを含むタスクグループごとに入力するための第一入力エリアの表示用データを生成することと、複数のタスクグループの実行順序に関する第二条件を入力するための第二入力エリアの表示用データを生成することと、第一入力エリアへの入力に基づいて第一条件を設定することと、第二入力エリアへの入力に基づいて第二条件を設定することと、複数のタスクグループを少なくとも一台のロボットに実行させるための動作プログラムを第一条件及び第二条件に基づいて生成することと、を含む。
【発明の効果】
【0008】
本開示によれば、ロボットの動作プログラミングの負担軽減に有効なプログラミング支援装置、ロボットシステム及びプログラム生成方法を提供することができる。
【図面の簡単な説明】
【0009】
【
図1】ロボットシステムの全体構成を示す模式図である。
【
図2】プログラミング支援装置の機能的な構成を示すブロック図である。
【
図3】プログラミング支援画面を例示する模式図である。
【
図4】プログラミング支援装置のハードウェア構成図である。
【
図5】プログラミング支援画面の表示手順を示すフローチャートである。
【
図6】編集対象のメインタスクの設定手順を示すフローチャートである。
【
図7】第一条件の取得手順を示すフローチャートである。
【
図8】第一条件の設定手順を示すフローチャートである。
【
図9】第二条件の設定手順を示すフローチャートである。
【
図10】動作プログラムの生成手順を示すフローチャートである。
【
図11】シミュレーション画像の再生手順を示すフローチャートである。
【発明を実施するための形態】
【0010】
以下、実施形態について、図面を参照しつつ詳細に説明する。説明において、同一要素又は同一機能を有する要素には同一の符号を付し、重複する説明を省略する。本実施形態に係るロボットシステムは、オペレータにより教示された動作をロボットに実行させることにより、加工、組立等の様々な作業を自動化するシステムである。
【0011】
〔ロボットシステム〕
図1に示すように、ロボットシステム1は、複数台のロボット2と、複数台のロボット2をそれぞれ制御する複数のロボットコントローラ3と、プログラミング支援装置4とを備える。ロボット2は、例えば多軸(例えば6軸又は7軸)のシリアルリンク型の垂直多関節ロボットであり、その先端部5にツールを保持した状態で様々な作業を実行できるように構成されている。ロボット2は、所定の範囲内において、先端部5の位置及び姿勢を自在に変更し得るものであればよく、必ずしも6軸の垂直多関節ロボットに限られない。例えばロボット2は、6軸に1軸の冗長軸を追加した7軸の垂直多関節ロボットであってもよい。複数台のロボット2は、同一の位置に配置された同一のワークに対し、いずれのロボット2によっても同一の作業を実行し得るように配置されている。
【0012】
ロボットコントローラ3は、予め生成された動作プログラムに従ってロボット2を制御する。動作プログラムは、例えばロボット2の先端部5の動作パスを含む。動作パスは、先端部5の位置・姿勢の経時的な推移を指定する情報である。例えば動作パスは、時系列に並ぶ複数の位置・姿勢目標値を含む。ロボットコントローラ3は、先端部5の位置・姿勢を上記位置・姿勢目標値に一致させるための関節角度目標値(ロボット2の各関節の角度目標値)を算出し、当該関節角度目標値に従ってロボット2を制御する。
【0013】
プログラミング支援装置4は、動作プログラムの生成を支援するための装置である。プログラミング支援装置4は、ロボット2用のタスクの実行に関する第一条件を、複数のサブタスクを含むタスクグループごとに入力するための第一入力エリアの表示用データを生成することと、複数のタスクグループの実行順序に関する第二条件を入力するための第二入力エリアの表示用データを生成することと、第一入力エリアへの入力に基づいて第一条件を設定することと、第二入力エリアへの入力に基づいて第二条件を設定することと、複数のタスクグループを少なくとも一台のロボット2に実行させるための動作プログラムを第一条件及び第二条件に基づいて生成することと、を実行するように構成されている。以下、上記タスクを「サブタスク」といい、上記タスクグループを「メインタスク」という。メインタスクの具体例としては「部品Aを移動させる」、「部品Aを(ワークに)取り付ける」などが挙げられる。またサブタスクの具体例としては「部品Aを取る」「部品Aを置く」「部品Aを(ワークに)嵌合する」などが挙げられる。
【0014】
サブタスクは、所定の作業をロボット2に実行させるために予め設定された動作パスを含む。以下、この動作パスを「作業パス」という。作業パスは、例えばオペレータにより予め教示されている。サブタスクの実行に関する第一条件は、サブタスクを実行するロボット2の指定と、サブタスクの実行の開始条件とを含む。開始条件は、例えばサブタスクの実行開始前に完了しているべき他のサブタスクの指定等により定められる。
【0015】
〔プログラミング支援装置〕
以下、プログラミング支援装置4の構成を具体的に説明する。
図2に示すように、プログラミング支援装置4は、一つ又は複数のコンピュータにより構成された本体10と、モニタ20と、入力デバイス30とを備える。
【0016】
モニタ20は、本体10から出力された情報を表示するための装置である。モニタ20は、グラフィック表示が可能であればいかなるものであってもよく、その具体例としては液晶パネルなどが挙げられる。入力デバイス30は、本体10に対し情報を入力するための装置である。入力デバイス30は、所望の情報を入力可能であればいかなるものであってもよく、その具体例としてはキーパッド及びマウス等が挙げられる。なお、モニタ20及び入力デバイス30は、タッチパネルとして一体化されていてもよい。また、例えばタブレットコンピュータのように、本体10、モニタ20及び入力デバイス30の全てが一体化されていてもよい。
【0017】
本体10は、機能的な構成(以下、「機能モジュール」という。)として、条件記憶部111と、モデル記憶部112と、サブタスク記憶部113と、動作プログラム記憶部114と、表示データ生成部121,122,123,124,125と、条件設定部131,132と、プログラム生成部140と、プログラム送信部151とを有する。
【0018】
条件記憶部111は、メインタスクの構成情報と、上述した第一条件及び第二条件とを記憶する。モデル記憶部112は、シミュレーション用のモデルデータを記憶する。モデルデータは、例えばロボット2及びその周辺環境のモデルをポリゴンにより構成した三次元のサーフェスデータである。サブタスク記憶部113は、予め教示された複数のサブタスクの作業パスを記憶する。動作プログラム記憶部114は、上述した動作プログラムを記憶する。
【0019】
表示データ生成部121,122,123,124,125は、プログラミング支援用の画面(以下、「プログラミング支援画面」という。)をモニタ20に表示するためのデータを生成する。
【0020】
図3に示すように、プログラミング支援画面200は、例えばリスト表示エリア210と、第一入力エリア220と、第二入力エリア230と、プランニングエリア240とを含む。リスト表示エリア210は、複数のメインタスクのリストを表示する。例えばリスト表示エリア210は、メインタスクを示すアイコン211を所定方向(例えば画面の上下方向)に並べて表示する。アイコン211は、例えばメインタスクの名称を文字で表示する名称表示部212と、メインタスクの構成内容の概要をマークやイラストで表示する内容表示部213とを含む。
【0021】
第一入力エリア220は、上記第一条件を、メインタスクごとに入力するためのエリアである。例えば第一入力エリア220は、新規作成ボタン221と、タスク追加ボタン222と、タスク削除ボタン223と、メインタスク表示部224と、サブタスク表示部225と、ロボット入力部226と、開始条件入力部227と、別名保存ボタン228と、上書保存ボタン229とを含む。
【0022】
メインタスク表示部224は、メインタスクの識別情報(例えばメインタスクの名称)を表示するテキストボックスである。サブタスク表示部225は、サブタスクの識別情報(例えばサブタスクの名称)を表示するテキストボックスであり、メインタスク表示部224に対して枝状に従属するように表示される。
【0023】
ロボット入力部226は、第一条件の一例として、サブタスク表示部225のサブタスクを実行するロボット2の識別情報(例えばロボットの番号)を入力するためのテキストボックスであり、当該サブタスク表示部225に対して枝状に従属するように表示される。ロボット入力部226をクリック(又はタップ)することにより、ロボット2の識別情報を入力することが可能である。開始条件入力部227は、第一条件の一例として、サブタスク表示部225のサブタスクの開始条件を入力するためのテキストボックスであり、当該サブタスク表示部225に対して枝状に従属するように表示される。開始条件入力部227を選択(例えばクリック又はタップ)することにより、当該サブタスクの開始条件を入力することが可能である。
【0024】
新規作成ボタン221は、新たなメインタスクの作成を開始するためのボタンである。例えば新規作成ボタン221を操作(例えばクリック又はタップ)すると、名称未定でサブタスク表示部225を含まない状態(以下、「空の状態」という。)のメインタスク表示部224が表示される。
【0025】
タスク追加ボタン222は、メインタスクにサブタスクを追加するためのボタンである。例えば、メインタスク表示部224が空の状態でタスク追加ボタン222を操作(例えばクリック又はタップ)すると、当該メインタスク表示部224に対して一つのサブタスク表示部225が追加される。また、いずれかのサブタスク表示部225が選択された状態でタスク追加ボタン222を操作すると、当該サブタスク表示部225の前又は後に一つのサブタスク表示部225が追加される。タスク削除ボタン223は、メインタスクからサブタスクを削除するためのボタンである。例えば、いずれかのサブタスク表示部225が選択された状態でタスク追加ボタン222を操作すると、当該サブタスク表示部225が削除される。
【0026】
別名保存ボタン228は、第一入力エリア220への入力内容に従ったメインタスクを別名で条件記憶部111に保存するためのボタンである。上書保存ボタン229は、第一入力エリア220への入力内容に従って既存のメインタスクを条件記憶部111に上書き保存するためのボタンである。
【0027】
第二入力エリア230は、上記第二条件を入力するためのエリアである。第二入力エリア230は、上記第二条件をフロー231としてグラフィック表示する。フロー231は、複数のアイコン232を含む。第二入力エリア230においては、所定の方向が時系列に沿う方向(以下、「第一方向」という。)とされている。図示の例では、上から下に向う方向が第一方向とされている。フロー231において、第一方向に沿って並ぶ複数のアイコン232(例えばアイコン232A,232B,232E,232F,232G)に対しては、その並び順に従った実行順序が設定される。フロー231において、第一方向に直交する第二方向(図示の左右方向)に並ぶ複数のアイコン232(例えばアイコン232B,232C,232D)に対しては、実行順序が未定とされる。
【0028】
プランニングエリア240は、動作プログラムの生成を実行するためのエリアである。例えばプランニングエリア240は、プランニング実行ボタン241と、演算レベル入力部242と、結果表示部243,244とを含む。プランニング実行ボタン241は、動作プログラムの生成を開始させるためのボタンである。演算レベル入力部242は、動作プログラムの生成のために自動設定される内容の採用可否の判定基準(以下、「演算レベル」という。)を入力するためのオブジェクトである。例えば演算レベル入力部242は、予め設定された複数の演算レベルにそれぞれ対応する複数のラジオボタンを含んでいる。当該複数のラジオボタンのいずれかを選択することにより、演算レベルを設定することが可能である。
【0029】
結果表示部243,244は、動作プログラムの生成結果を表示する部分である。結果表示部243は、動作プログラムを一サイクル実行するのに要する時間を表示する。結果表示部244は、動作プログラムに従った動作シーケンスを表示する。例えば結果表示部244は、上記動作シーケンスをロボット2ごとに示すタイムチャート250を含む。タイムチャート250は、作業時間251(サブタスクの実行時間)と、移動時間252(サブタスク間の移動時間)と、待機時間253とを含む。図示の例は、二台のロボット2のタイムチャートを表示した状態である。
【0030】
図2に戻り、表示データ生成部121(第五表示データ生成部)は、リスト表示エリア210の表示用データを生成してモニタ20に出力する。表示データ生成部122(第一表示データ生成部)は、第一入力エリア220の表示用データを生成してモニタ20に出力する。
【0031】
表示データ生成部122は、リスト表示エリア210において設定対象として選択されたメインタスクを第一条件の設定対象とするように第一入力エリア220の表示用データを更新する。例えば表示データ生成部122は、リスト表示エリア210においてクリック又はタップにより選択されたアイコン211に対応するメインタスクの情報を条件記憶部111から取得し、当該情報を表示するように第一入力エリア220の表示用データを更新する。メインタスクの情報は、当該メインタスクが含むサブタスクの識別情報と、設定済みの第一条件とを含む。
【0032】
表示データ生成部123(第二表示データ生成部)は、第二入力エリア230の表示用データを生成してモニタ20に出力する。表示データ生成部123は、リスト表示エリア210において実行対象として選択されたメインタスクを第二条件の設定対象として追加するように第二入力エリア230の表示用データを更新する。例えば表示データ生成部123は、リスト表示エリア210から第二入力エリア230にドラッグされたアイコン211に対応するメインタスクを、ドラッグ完了位置に応じてフロー231に追加するように、第二入力エリア230の表示用データを更新する。
【0033】
条件設定部131(第一条件設定部)は、第一入力エリア220への入力に基づいて、メインタスクが含むサブタスクの識別情報と、各サブタスクの第一条件とを設定して条件記憶部111に保存する。条件設定部131は、第一入力エリア220において、サブタスクの実行用のロボット2が指定されている場合には、当該ロボット2に当該サブタスクを実行させるように第一条件を設定し、第一入力エリア220において、サブタスクの実行用のロボット2が指定されていない場合には、当該タスクの実行用のロボット2を未定とするように第一条件を設定する。なお、サブタスクの実行用のロボット2が指定されていないとは、当該サブタスクを実行し得る複数のロボット2は指定されているが、当該複数のロボット2のいずれを用いるかは指定されていない場合も含む。この場合、条件設定部131は、当該サブタスクを実行するロボット2の選択肢を当該複数のロボット2に制限するように第一条件を設定する。
【0034】
条件設定部132(第二条件設定部)は、第二入力エリア230への入力に基づいて第二条件を設定して条件記憶部111に保存する。条件設定部132は、第二入力エリア230において、実行順序を定めて複数のメインタスクの実行が指定されている場合には、当該実行順序を保持するように第二条件を設定し、第二入力エリア230において、実行順序を定めずに複数のメインタスクの実行が指定されている場合には、当該複数のメインタスクの実行順序を未定とするように第二条件を設定する。例えば条件設定部132は、第二入力エリア230において、複数のメインタスクのアイコン232が上記第一方向に沿って並んでいる場合に、当該複数のアイコン232の並び順に従った実行順序を保持するように第二条件を設定し、第二入力エリア230において、複数のメインタスクのアイコン232が上記第二方向に沿って並んでいる場合に、当該複数のメインタスクの実行順序を未定とするように第二条件を設定する。
【0035】
プログラム生成部140は、複数のメインタスクを複数のロボット2に実行させるための動作プログラムを第一条件及び第二条件に基づいて生成する。例えばプログラム生成部140は、より細分化された機能モジュールとして、順序設定部142と、ロボット設定部141と、パス設定部143と、待機時間設定部144と、評価値算出部145と、採否判定部146とを含む。
【0036】
順序設定部142は、第二条件において複数のメインタスクの実行順序が未定となっている場合に、当該複数のメインタスクの実行順序を設定する。例えば順序設定部142は、各サブタスクが上記開始条件を満たすように複数のメインタスクの実行順序を設定する。順序設定部142は、実行順序が未定の複数のメインタスクの少なくとも一部が並行するように、当該複数のメインタスクの実行順序を設定してもよい。例えば、上記開始条件を満たす限りにおいて、ロボット2の全台数と同数のメインタスクを並行させることが可能である。
【0037】
ロボット設定部141は、第一条件においてサブタスクの実行用のロボット2が未定となっている場合に、当該サブタスクの実行用のロボット2を設定する。ロボット設定部141は、実行用のロボット2が未定の複数のサブタスクが並行するように実行順序が設定される場合に、当該複数のサブタスクの実行用に複数台のロボット2をそれぞれ設定する。上述したように、第一条件がロボット2の選択肢の制限を含んでいる場合、ロボット設定部141は当該制限の範囲内にてロボット2を設定する。
【0038】
パス設定部143は、実行対象のサブタスク同士の間の動作パス(以下、「エアカットパス」という。)をロボット2ごとに設定する。例えばパス設定部143は、モデル記憶部112に記憶されたモデルデータを用い、ロボット2とその周辺配置物との衝突を回避するようにエアカットパスを生成する。より具体的に、パス設定部143は、先行する作業パスの終点と、後続する作業パスの始点との間で、ロボット2と周辺配置物との衝突を回避可能な経由点を生成し、当該経由点を通るようにパスを生成することを繰り返してエアカットパスを生成する。このような生成手法の詳細は、例えば特許第4103057号等に開示されている。
【0039】
待機時間設定部144は、複数台のロボット2同士の動作タイミングを調整するための待機時間をロボット2ごとに設定する。例えば待機時間設定部144は、2台のロボット2の動作パスが互いに干渉する場合に、当該2台のロボット2同士の衝突を回避するように、いずれか一方のロボット2の待機時間を設定する。
【0040】
評価値算出部145は、予め設定された評価条件に基づいて、順序設定部142、ロボット設定部141、パス設定部143及び待機時間設定部144による設定内容の評価値を算出する。評価値の具体例としては、上記設定内容に従う動作プログラムの実行時間、又は動作プログラムの消費電力(動作プログラムに従って動作する複数台のロボット2の消費電力)等が挙げられる。実行時間及び消費電力を組み合わせて評価値を導出してもよい。
【0041】
採否判定部146は、評価値算出部145により算出された評価値と、演算レベル入力部242に入力された演算レベルと基づいて、順序設定部142、ロボット設定部141、パス設定部143及び待機時間設定部144による設定内容の採用可否を判定する。例えば採否判定部146は、評価値が所定の合格ラインに到達している場合に上記設定内容を採用可とし、評価値が当該合格ラインに到達していない場合に上記設定内容を採用不可とする。この場合採否判定部146は、演算レベル入力部242に入力された演算レベルに従って、上記合格ラインを変更する。
【0042】
採否判定部146は、順序設定部142、ロボット設定部141、パス設定部143、待機時間設定部144及び評価値算出部145によって、上記設定内容の変更と評価値の算出とが所定期間繰り返された後に、最も好ましい評価値が得られた設定内容を採用可と判定してもよい。この場合、採否判定部146は、演算レベル入力部242に入力された演算レベルに従って、上記所定期間を変更する。採否判定部146は、採用可と判定した設定内容に従う動作プログラムを動作プログラム記憶部114に保存する。
【0043】
表示データ生成部124(第三表示データ生成部)は、採否判定部146によって採用可と判定された設定内容に従って、結果表示部243,244の表示用データを生成してモニタ20に出力する。例えば表示データ生成部124は、採否判定部146が動作プログラム記憶部114に保存した動作プログラムを一サイクル実行するのに要する時間を生成する。また、表示データ生成部124は、採否判定部146が動作プログラム記憶部114に保存した動作プログラムに従って、サブタスクの実行時間と、エアカットパスに従った移動時間と、待機時間とをロボット2ごとに示すタイムチャート250の表示用データを生成する。
【0044】
表示データ生成部125(第四表示データ生成部)は、タイムチャート250のいずれかの期間について動画再生の指示入力(例えばダブルクリック又はダブルタップ)がなされた場合に、当該期間におけるロボット2の動作を示す動画の表示用データを生成してモニタ20に出力する。例えば表示データ生成部125は、動作プログラム記憶部114に記憶された動作プログラムと、モデル記憶部112に記憶されたモデルデータとに基づいて、上記選択期間における動画の表示用データを生成する。プログラム送信部151は、動作プログラム記憶部114に記憶された動作プログラムをロボットコントローラ3に送信する。
【0045】
図4は、本体10のハードウェア構成を例示するブロック図である。
図4に示すように、本体10は回路160を有し、回路160は、一つ又は複数のプロセッサ161と、メモリ162と、ストレージ163と、入出力ポート164とを有する。ストレージ163は、本体10の上記各機能モジュールを構成するためのプログラムを記録している。ストレージ163は、コンピュータ読み取り可能であればどのようなものであってもよい。具体例として、ハードディスク、不揮発性の半導体メモリ、磁気ディスク及び光ディスク等が挙げられる。メモリ162は、ストレージ163からロードしたプログラム及びプロセッサ161の演算結果等を一時的に記憶する。プロセッサ161は、メモリ162と協働してプログラムを実行することで、各機能モジュールを構成する。入出力ポート164は、プロセッサ161からの指令に応じ、モニタ20、入力デバイス30及びロボットコントローラ3との間で電気信号の入出力を行う。
【0046】
〔プログラミング支援方法〕
続いて、プログラム生成方法及びプログラミング支援方法の一例として、プログラミング支援装置4が実行するプログラミング支援手順を説明する。このプログラミング支援手順は、サブタスクの実行に関する第一条件を、複数のサブタスクを含むメインタスクごとに入力するための第一入力エリア220の表示用データを生成することと、複数のメインタスクの実行順序に関する第二条件を入力するための第二入力エリア230の表示用データを生成することと、第一入力エリア220への入力に基づいて第一条件を設定することと、第二入力エリア230への入力に基づいて第二条件を設定することと、複数のメインタスクを少なくとも一台のロボット2に実行させるための動作プログラムを第一条件及び第二条件に基づいて生成することと、を含む。例えば、このプログラミング支援手順は、プログラミング支援画面200の表示手順と、編集対象のメインタスクの設定手順と、第一条件の取得手順と、第一条件の設定手順と、第二条件の設定手順と、動作プログラムの生成手順と、シミュレーション画像の再生手順とを含む。以下、各手順の内容を例示する。
【0047】
(プログラミング支援画面の表示手順)
図5に示すように、プログラミング支援装置4は、まずステップS01を実行する。ステップS01では、表示データ生成部121が、リスト表示エリア210の表示用データを生成する。例えば、表示データ生成部121は、条件記憶部111に記憶された全てのメインタスクにそれぞれ対応する複数のアイコン211の表示用データを生成し、当該複数のアイコン211を上下方向に並べて表示するようにリスト表示エリア210の表示用データを生成する。
【0048】
次に、プログラミング支援装置4はステップS02を実行する。ステップS02では、表示データ生成部122が、第一入力エリア220の表示用データを生成する。例えば、表示データ生成部122は、第一入力エリア220が初期状態(例えば空のメインタスク表示部224を表示する状態)とするように第一入力エリア220の表示用データを生成する。
【0049】
次に、プログラミング支援装置4はステップS03を実行する。ステップS03では、表示データ生成部123が、第二入力エリア230の表示用データを生成する。例えば、表示データ生成部123は、第二入力エリア230が初期状態(いずれのアイコン232も表示しない状態)とするように第二入力エリア230の表示用データを生成する。
【0050】
次に、プログラミング支援装置4はステップS04を実行する。ステップS04では、表示データ生成部124が、プランニングエリア240の表示用データを生成する。例えば、表示データ生成部124は、プランニングエリア240が初期状態(結果表示部243,244に動作プログラムの生成結果が表示されない状態)とするようにプランニングエリア240の表示用データを生成する。
【0051】
次に、プログラミング支援装置4はステップS05を実行する。ステップS05では、表示データ生成部121,122,123,124が、リスト表示エリア210、第一入力エリア220、第二入力エリア230及びプランニングエリア240の表示用データをそれぞれモニタ20に出力する。以上でプログラミング支援画面200の表示が完了する。なお、ステップS01,S02,S03,S04の実行順序は適宜変更可能である。
【0052】
(編集対象メインタスクの設定手順)
図6に示すように、プログラミング支援装置4は、まずステップS11を実行する。ステップS11では、リスト表示エリア210においていずれかのメインタスクが設定対象として選択されたか否か(例えばアイコン211がクリック又はタップされたか否か)を表示データ生成部122が確認する。
【0053】
ステップS11において、いずれのアイコン211も選択されていないと判定した場合、プログラミング支援装置4はステップS12を実行する。ステップS12では、新規作成ボタン221が操作(例えばクリック又はタップ)されたか否かを表示データ生成部122が判定する。ステップS12において、新規作成ボタン221は操作されていないと判定した場合、プログラミング支援装置4は処理をステップS11に戻す。以後、プログラミング支援装置4は、アイコン211の選択又は新規作成ボタン221の操作を待機する。
【0054】
ステップS11において、いずれかのメインタスクが設定対象として選択されたと判定した場合、プログラミング支援装置4は、リスト表示エリア210において選択されたメインタスクを第一条件の設定対象とするように第一入力エリア220の表示用データを更新する。例えば、プログラミング支援装置4はステップS13,S14を順に実行する。ステップS13では、表示データ生成部122が、リスト表示エリア210において選択されたアイコン211に対応するメインタスクの情報を条件記憶部111から取得する。ステップS14では、表示データ生成部122が、ステップS13において取得された情報に従ったメインタスク表示部224、サブタスク表示部225、ロボット入力部226及び開始条件入力部227を含むように第一入力エリア220の表示用データを生成する。
【0055】
ステップS12において、新規作成ボタン221が操作されたと判定した場合、プログラミング支援装置4はステップS15を実行する。ステップS15では、表示データ生成部122が、空のメインタスク表示部224を含むように第一入力エリア220の表示用データを生成する。
【0056】
ステップS14又はステップS15を実行した後、プログラミング支援装置4はステップS16を実行する。ステップS16では、表示データ生成部122が、ステップS14又はステップS15で生成した第一入力エリア220の表示用データをそれぞれモニタ20に出力する。以上で編集対象のメインタスクの設定手順が完了する。プログラミング支援装置4は、プログラミング支援画面200が閉じられるまで以上の手順を繰り返す。
【0057】
(第一条件の取得手順)
図7に示すように、プログラミング支援装置4は、まずステップS21を実行する。ステップS21では、タスク追加ボタン222が操作(例えばクリック又はタップ)されたか否かを表示データ生成部122が確認する。ステップS21においてタスク追加ボタン222は操作されていないと判定した場合、プログラミング支援装置4はステップS22を実行する。ステップS22では、いずれかのサブタスク表示部225のロボット入力部226が選択(例えばクリック又はタップ)されたか否かを表示データ生成部122が確認する。ステップS22において、ロボット入力部226は選択されていないと判定した場合、プログラミング支援装置4はステップS23を実行する。ステップS23では、いずれかのサブタスク表示部225の開始条件入力部227が選択(例えばクリック又はタップ)されたか否かを表示データ生成部122が確認する。ステップS23において、開始条件入力部227は選択されていないと判定した場合、プログラミング支援装置4は処理をステップS21に戻す。以後、プログラミング支援装置4は、タスク追加ボタン222の操作、ロボット入力部226の選択及び開始条件入力部227の選択のいずれかが行われるのを待機する。
【0058】
ステップS21において、タスク追加ボタン222が操作されたと判定した場合、プログラミング支援装置4はステップS24,S25,S26を順に実行する。ステップS24では、表示データ生成部122が、サブタスク記憶部113を参照して、メインタスク表示部224のメインタスクに追加可能なサブタスクのリストを生成し、当該リストを表示するように第一入力エリア220の表示用データを更新してモニタ20に出力する。ステップS25では、表示データ生成部122が、サブタスクのリストにおいていずれかのサブタスクが選択されるのを待機する。ステップS26では、表示データ生成部122が、選択されたサブタスクを示すサブタスク表示部225(以下、「新たなサブタスク表示部225」という。)を追加するように第一入力エリア220の表示用データを更新してモニタ20に出力する。
【0059】
メインタスク表示部224が空の状態であった場合、表示データ生成部122は、新たなサブタスク表示部225をメインタスク表示部224に対して従属させるように第一入力エリア220の表示用データを更新する。メインタスク表示部224が既に複数のサブタスク表示部225を含んでおり、そのいずれかが選択された状態であった場合、表示データ生成部122は、選択されていたサブタスク表示部225の前に新たなサブタスク表示部225を追加するように第一入力エリア220の表示用データを更新する。
【0060】
ステップS22において、ロボット入力部226が選択されたと判定した場合、プログラミング支援装置4はステップS27,S28,S29を順に実行する。ステップS27では、表示データ生成部122が、モデル記憶部112を参照して、当該サブタスク(当該ロボット入力部226の従属先であるサブタスク表示部225のサブタスク)を実行可能なロボット2のリストを生成し、当該リストを表示するように第一入力エリア220の表示用データを更新してモニタ20に出力する。ステップS28では、表示データ生成部122が、ロボット2のリストにおいていずれかのロボット2が選択されるのを待機する。ステップS29では、表示データ生成部122が、選択されたロボット2の識別情報をロボット入力部226に表示するように第一入力エリア220の表示用データを更新してモニタ20に出力する。
【0061】
ステップS23において、開始条件入力部227が選択されたと判定した場合、プログラミング支援装置4はステップS31,S32,S33を順に実行する。ステップS31では、表示データ生成部122が、サブタスクの開始条件のリストの表示用データを生成してモニタ20に出力する。例えば表示データ生成部122は、サブタスク記憶部113を参照して、当該サブタスク(当該開始条件入力部227の従属先であるサブタスク表示部225のサブタスク)の開始前に完了させることを指定可能なサブタスク(以下、「開始条件用のサブタスク」という。)のリストの表示用データを生成する。ステップS32では、表示データ生成部122が、開始条件のリストにおいていずれかの開始条件が選択されるのを待機する。ステップS33では、表示データ生成部122が、選択された開始条件を開始条件入力部227に表示するように第一入力エリア220の表示用データを更新してモニタ20に出力する。以上で第一条件の取得手順が完了する。プログラミング支援装置4は、プログラミング支援画面200が閉じられるまで以上の手順を繰り返す。
【0062】
(第一条件の設定手順)
図8に示すように、プログラミング支援装置4は、まずステップS41を実行する。ステップS41では、設定対象のメインタスクの名称が未定であるか否かを条件設定部131が確認する。
【0063】
ステップS41において、設定対象のメインタスクの名称が未定であると判定した場合、プログラミング支援装置4はステップS42,S43,S44,S45を順に実行する。ステップS42では、条件設定部131が、別名保存ボタン228の操作(例えばクリック又はタップ)を待機する。ステップS43では、表示データ生成部122が、ダイアログボックスの表示などによりメインタスクの名称の入力を取得する。ステップS44では、条件設定部131が、第一入力エリア220の内容に従って、メインタスクの名称と、当該メインタスクの構成サブタスク(メインタスクに含まれるサブタスク)と、各構成サブタスクの第一条件とを一まとめにして条件記憶部111に保存する。ステップS45では、表示データ生成部122が、ステップS43において取得された名称をメインタスク表示部224に表示するように第一入力エリア220の表示用データを更新してモニタ20に出力する。
【0064】
ステップS41において、設定対象のメインタスクの名称が設定されていると判定した場合、プログラミング支援装置4はステップS46を実行する。ステップS46では、上書保存ボタン229が操作(例えばクリック又はタップ)されたか否かを条件設定部131が確認する。ステップS46において、上書保存ボタン229は操作されていないと判定した場合、プログラミング支援装置4はステップS47を実行する。ステップS47では、別名保存ボタン228が操作されたか否かを条件設定部131が確認する。ステップS47において、別名保存ボタン228は操作されていないと判定した場合、プログラミング支援装置4は処理をステップS46に戻す。以後、プログラミング支援装置4は、上書保存ボタン229の操作又は別名保存ボタン228の操作を待機する。
【0065】
ステップS46において、上書保存ボタン229が操作されたと判定した場合、プログラミング支援装置4はステップS48を実行する。ステップS48では、条件設定部131が、第一入力エリア220の内容に従って、設定対象のメインタスクの構成サブタスクと、各構成サブタスクの第一条件とを、条件記憶部111に上書き保存する。
【0066】
ステップS47において、別名保存ボタン228が操作されたと判定した場合、プログラミング支援装置4はステップS49,S51,S52を順に実行する。ステップS49では、表示データ生成部122が、ダイアログボックスの表示などによりメインタスクの名称の入力を取得する。ステップS51では、条件設定部131が、第一入力エリア220の内容に従って、メインタスクの新たな名称と、当該メインタスクの構成サブタスク(メインタスクに含まれるサブタスク)と、各構成サブタスクの第一条件とを一まとめにして条件記憶部111に保存する。ステップS52では、表示データ生成部122が、ステップS49において取得された名称をメインタスク表示部224に表示するように第一入力エリア220の表示用データを更新してモニタ20に出力する。
【0067】
ステップS45,S48,S52の次に、プログラミング支援装置4はステップS53を実行する。ステップS53では、条件記憶部111の記憶内容の更新に従って、表示データ生成部121が、リスト表示エリア210の表示用データを更新してモニタ20に出力する。以上で第一条件の設定手順が完了する。プログラミング支援装置4は、プログラミング支援画面200が閉じられるまで以上の手順を繰り返す。
【0068】
(第二条件の設定手順)
図9に示すように、プログラミング支援装置4は、まずステップS61を実行する。ステップS61では、第二入力エリア230に実行対象のメインタスクが追加されるのを表示データ生成部123が待機する。例えば表示データ生成部123は、リスト表示エリア210から第二入力エリア230にいずれかのアイコン211がドラッグされるのを待機する。以下、第二入力エリア230に追加されるメインタスクを「追加メインタスク」という。
【0069】
次に、プログラミング支援装置4はステップS62を実行する。ステップS62では、追加メインタスクの追加位置(例えばアイコン211のドラッグ完了位置)と重複する位置に既存のメインタスクのアイコン232が位置するか否かを表示データ生成部123が確認する。なお、ここでの重複とは、上記第一方向における位置が重複することを意味する。以下、追加メインタスクの追加位置と重複する位置にある既存のメインタスクを「重複メインタスク」という。また、追加メインタスクの追加位置とは重複しない位置にある既存のメインタスクを「非重複メインタスク」という。
【0070】
ステップS62において、重複メインタスクがあると判定した場合、プログラミング支援装置4はステップS63を実行する。ステップS63では、表示データ生成部123が、追加メインタスクのアイコン232を重複メインタスクのアイコン232に対して並列に追加する(上記第二方向に沿って並べる)ように、第二入力エリア230の表示用データを更新してモニタ20に出力する。
【0071】
ステップS62において、重複メインタスクはないと判定した場合、プログラミング支援装置4はステップS64を実行する。ステップS63では、表示データ生成部123が、既存のメインタスクのアイコン232に対して並列とならない位置に追加メインタスクのアイコン232を追加するように、第二入力エリア230の表示用データを更新してモニタ20に出力する。上記追加位置の前(又は後)に非重複メインタスクのアイコン232がある場合、表示データ生成部123は、当該非重複メインタスクのアイコン232の後(又は前)に追加メインタスクのアイコン232を追加するように、アイコン232の表示用データを追加する。上記追加位置を挟む二つの非重複メインタスクのアイコン232がある場合、表示データ生成部123は、当該二つの非重複メインタスクのアイコン232の間に、追加メインタスクのアイコン232を挿入するように、第二入力エリア230の表示用データを更新する。
【0072】
ステップS63,S64の次に、プログラミング支援装置4はステップS65を実行する。ステップS65では、表示データ生成部123が、第二入力エリア230への入力に基づいて第二条件を設定し、条件記憶部111に保存する。例えば表示データ生成部123は、第二入力エリア230において複数のメインタスクのアイコン232が上記第一方向に沿って並んでいる場合に、当該複数のアイコン232の並び順に従った実行順序を保持するように第二条件を設定し、第二入力エリア230において複数のメインタスクのアイコン232が上記第二方向に沿って並んでいる場合に、当該複数のメインタスクの実行順序を未定とするように第二条件を設定する。以上で第二条件の設定手順が完了する。プログラミング支援装置4は、プログラミング支援画面200が閉じられるまで以上の手順を繰り返す。
【0073】
(動作プログラムの生成手順)
図10に示すように、プログラミング支援装置4は、まずステップS71を実行する。ステップS71では、プログラム生成部140が、プランニング実行ボタン241の操作(例えばクリック又はタップ)を待機する。
【0074】
次に、プログラミング支援装置4はステップS72,S73を順に実行する。ステップS72では、順序設定部142が、第二条件において実行順序が未定となっている複数のメインタスクの実行順序を設定する。例えば順序設定部142は、各サブタスクが上記開始条件を満たすように、当該複数のメインタスクの実行順序を設定する。順序設定部142は、実行順序が未定の複数のメインタスクの少なくとも一部が並行するように、当該複数のメインタスクの実行順序を設定してもよい。ステップS73では、ロボット設定部141が、第一条件において実行用のロボット2が未定となっているサブタスクの実行用のロボット2を設定する。ロボット設定部141は、実行用のロボット2が未定の複数のサブタスクが並行するように実行順序が設定される場合に、当該複数のサブタスクの実行用に複数台のロボット2をそれぞれ設定する。
【0075】
次に、プログラミング支援装置4はステップS74,S75,S76を順に実行する。ステップS74では、パス設定部143が、実行対象のサブタスク同士の間の上記エアカットパスをロボット2ごとに設定する。ステップS75では、待機時間設定部144が、複数台のロボット2同士の動作タイミングを調整するための上記待機時間をロボット2ごとに設定する。ステップS76では、評価値算出部145が、予め設定された評価条件に基づいて、順序設定部142、ロボット設定部141、パス設定部143及び待機時間設定部144による設定内容の評価値を算出する。
【0076】
次に、プログラミング支援装置4はステップS77を実行する。ステップS77では、採否判定部146が、評価値算出部145により算出された評価値と、演算レベル入力部242に入力された演算レベルとに基づいて、順序設定部142、ロボット設定部141、パス設定部143及び待機時間設定部144による設定内容の採用可否を判定する。例えば採否判定部146は、評価値が所定の合格ラインに到達している場合に上記設定内容を採用可とし、評価値が当該合格ラインに到達していない場合に上記設定内容を採用不可とする。採否判定部146は、演算レベル入力部242に入力された演算レベルに従って、上記合格ラインを変更する。
【0077】
ステップS77において、順序設定部142、ロボット設定部141、パス設定部143及び待機時間設定部144による設定内容を採用不可と判定した場合、プログラミング支援装置4は処理をステップS72に戻す。以後、設定内容を採用可と判定するまで、実行順序の設定、実行主体の設定、エアカットパスの設定、及び待機時間の設定が繰り返される。
【0078】
ステップS77において、順序設定部142、ロボット設定部141、パス設定部143及び待機時間設定部144による設定内容を採用可と判定した場合、プログラミング支援装置4はステップS78,S79を順に実行する。ステップS78では、採否判定部146が、採用可と判定した設定内容に従う動作プログラムを動作プログラム記憶部114に保存する。ステップS79では、表示データ生成部124が、採否判定部146によって採用可と判定された設定内容に従い、結果表示部243,244の表示用データを生成してモニタ20に出力する。例えば表示データ生成部124は、採否判定部146が動作プログラム記憶部114に保存した動作プログラムを一サイクル実行するのに要する時間を生成する。また、表示データ生成部124は、採否判定部146が動作プログラム記憶部114に保存した動作プログラムに従って、サブタスクの実行時間と、エアカットパスに従った移動時間と、待機時間とをロボット2ごとに示すタイムチャート250の表示用データを生成する。以上で動作プログラムの生成手順が完了する。プログラミング支援装置4は、プログラミング支援画面200が閉じられるまで以上の手順を繰り返す。
【0079】
なお、プログラミング支援装置4は、ステップS72,S73,S74,S75,S76を所定期間繰り返した後に、最も好ましい評価値が得られた設定内容を採用可と判定してもよい。この場合、採否判定部146は、演算レベル入力部242に入力された演算レベルに従って、上記所定期間を変更する。
【0080】
(シミュレーション画像の再生手順)
図11に示すように、プログラミング支援装置4は、まずステップS91,S92を順に実行する。ステップS91では、表示データ生成部123が、タイムチャート250におけるいずれかの期間が新たに選択(例えばクリック又はタップ)されたか否かを確認する。
【0081】
ステップS91において、いずれかの期間が新たに選択されたと判定した場合、プログラミング支援装置4はステップS92を実行する。ステップS92では、表示データ生成部123が、タイムチャート250において選択された期間に対応するメインタスクのアイコン232を強調表示するように、第二入力エリア230の表示用データを更新してモニタ20に出力する。
【0082】
次に、プログラミング支援装置4は、ステップS93を実行する。ステップS91において、新たに選択された期間はないと判定した場合、プログラミング支援装置4は、ステップS92を実行することなくステップS93を実行する。ステップS93では、選択中の期間に対して動画再生の指示入力(例えばダブルクリック又はダブルタップ)がなされたか否かを表示データ生成部125が確認する。
【0083】
ステップS93において、動画再生の指示入力はなされていないと判定した場合、プログラミング支援装置4は処理をステップS91に戻す。以後、プログラミング支援装置4は、期間の選択に応じて第二入力エリア230の表示を変更しつつ、動画再生の指示入力を待機する。
【0084】
ステップS93において、動画再生の指示入力がなされたと判定した場合、プログラミング支援装置4はステップS94を実行する。ステップS94では、表示データ生成部125が、上記選択中の期間におけるロボット2の動作を示す動画の表示用データを生成してモニタ20に出力する。以上でシミュレーション画像の再生手順が完了する。プログラミング支援装置4は、プログラミング支援画面200が閉じられるまで以上の手順を繰り返す。
【0085】
〔本実施形態の効果〕
プログラミング支援装置4は、ロボット2用のタスクの実行に関する第一条件を、複数のタスク(サブタスク)を含むタスクグループ(メインタスク)ごとに入力するための第一入力エリア220の表示用データを生成する表示データ生成部122と、複数のタスクグループの実行順序に関する第二条件を入力するための第二入力エリア230の表示用データを生成する表示データ生成部123と、第一入力エリア220への入力に基づいて第一条件を設定する条件設定部131と、第二入力エリア230への入力に基づいて第二条件を設定する条件設定部132と、複数のタスクグループを少なくとも一台のロボット2に実行させるための動作プログラムを第一条件及び第二条件に基づいて生成するプログラム生成部140と、を備える。
【0086】
このプログラミング支援装置4によれば、個々のタスクの実行に関する第一条件と、実行順序に関する第二条件とに整理して所望の条件を入力することが可能となる。また、第一条件及び第二条件のいずれについても、複数のタスクを一まとめにしたタスクグループ単位で入力することが可能となる。このため、所望の条件の入力負担が軽減される。第一条件及び第二条件が入力されると、それらに基づいて動作プログラムが自動生成される。従って、このプログラミング支援装置4はロボット2の動作プログラミングの負担軽減に有効である。
【0087】
条件設定部131は、第一入力エリア220において、タスクの実行用のロボット2が指定されている場合には、当該ロボット2に当該タスクを実行させるように第一条件を設定し、第一入力エリア220において、タスクの実行用のロボット2が指定されていない場合には、当該タスクの実行用のロボット2を未定とするように第一条件を設定し、プログラム生成部140は、第一条件においてタスクの実行用のロボット2が未定となっている場合に、当該タスクの実行用のロボット2を設定するロボット設定部141を有していてもよい。この場合、実行用のロボット2を予め指定する入力と、実行用のロボット2の選択をプログラム生成部140に委ねる入力とを使い分けることで、条件設定の負担軽減と、プログラムの生成時間短縮との両立を図ることができる。
【0088】
条件設定部132は、第二入力エリア230において、実行順序を定めて複数のタスクグループの実行が指定されている場合には、当該実行順序を保持するように第二条件を設定し、第二入力エリア230において、実行順序を定めずに複数のタスクグループの実行が指定されている場合には、当該複数のタスクグループの実行順序を未定とするように第二条件を設定し、プログラム生成部140は、第二条件において複数のタスクグループの実行順序が未定となっている場合に、当該複数のタスクグループの実行順序を設定する順序設定部142を更に有していてもよい。この場合、実行順序を予め指定する入力と、実行順序の設定をプログラム生成部140に委ねる入力とを使い分けることで、条件設定の負担軽減と、プログラムの生成時間短縮との両立を図ることができる。
【0089】
順序設定部142は、実行順序が未定の複数のタスクグループの少なくとも一部が並行するように、当該複数のタスクグループの実行順序を設定し、ロボット設定部141は、実行用のロボット2が未定の複数のタスクが並行するように実行順序が設定される場合に、当該複数のタスクの実行用に複数台のロボット2をそれぞれ設定してもよい。この場合、タクトタイムの短縮化に寄与する動作プログラムを生成することができる。このため、生成された動作プログラムをタクトタイムの短縮のために調整する作業負担が軽減される。
【0090】
条件設定部132は、第二入力エリア230において、複数のタスクグループのアイコン232が第一方向に沿って並んでいる場合に、当該複数のタスクグループのアイコン232の並び順に従った実行順序を保持するように第二条件を設定し、第二入力エリア230において、複数のタスクグループのアイコン232が第一方向に交差する第二方向に沿って並んでいる場合に、当該複数のタスクグループの実行順序を未定とするように第二条件を設定してもよい。この場合、実行順序を予め指定する入力と、実行順序の設定をプログラム生成部140に委ねる入力とを容易に使い分けられる直感的なインタフェースを提供することができる。
【0091】
プログラム生成部140は、実行対象のタスク同士の間の動作パスをロボット2ごとに設定するパス設定部143と、複数台のロボット2同士の動作タイミングを調整するための待機時間をロボット2ごとに設定する待機時間設定部144と、予め設定された評価条件に基づいて、ロボット設定部141、順序設定部142、パス設定部143及び待機時間設定部144による設定内容の採用可否を判定する採否判定部146と、を更に有していてもよい。この場合、タスクの実行用のロボット2の設定、タスクの実行順序の設定に加え、動作パスの生成及び待機時間の設定が自動実行される。更に、予め設定された評価条件に基づいて、タスクの実行用のロボット2の設定結果、タスクの実行順序の設定結果、動作パスの生成結果及び待機時間の設定結果の採用可否が判定される。従って、生成された動作プログラムを調整する作業負担が更に軽減される。
【0092】
プログラミング支援装置4は、採否判定部146によって採用可と判定された設定内容に従って、タスクの実行時間と、動作パスに従った移動時間と、待機時間とをロボット2ごとに示すタイムチャートの表示用データを生成する表示データ生成部124を更に備えていてもよい。この場合、生成された動作プログラムを評価し易いインタフェースを提供することができる。このため、生成された動作プログラムを検証する作業負担が軽減される。
【0093】
プログラミング支援装置4は、タイムチャートにおいて選択された期間におけるロボット2の動作を示す動画の表示用データを生成する表示データ生成部125を更に備えていてもよい。この場合、生成された動作プログラムを更に評価し易いインタフェースを提供することができる。このため、生成された動作プログラムを検証する作業負担が更に軽減される。
【0094】
プログラミング支援装置4は、複数のタスクグループのリストを表示するリスト表示エリアの表示用データを生成する表示データ生成部121を更に備え、表示データ生成部122は、リスト表示エリアにおいて設定対象として選択されたタスクグループを第一条件の設定対象とするように第一入力エリア220の表示用データを更新し、表示データ生成部123は、リスト表示エリアにおいて実行対象として選択されたタスクグループを第二条件の設定対象として追加するように第二入力エリア230の表示用データを更新してもよい。この場合、第一条件及び第二条件の設定対象となるタスクグループの選択が容易となるので、所望の条件の入力負担が更に軽減される。
【0095】
以上、実施形態について説明したが、本発明は必ずしも上述した形態に限定されるものではなく、その要旨を逸脱しない範囲で様々な変形が可能である。
【符号の説明】
【0096】
2…ロボット、4…プログラミング支援装置、121…表示データ生成部(第五表示データ生成部)、122…表示データ生成部(第一表示データ生成部)、123…表示データ生成部(第二表示データ生成部)、124…表示データ生成部(第三表示データ生成部)、125…表示データ生成部(第四表示データ生成部)、131…条件設定部(第一条件設定部)、132…条件設定部(第二条件設定部)、140…プログラム生成部、141…ロボット設定部、142…順序設定部、143…パス設定部、144…待機時間設定部、146…採否判定部、220…第一入力エリア、230…第二入力エリア。