(57)【要約】【課題】ロボットの動作プログラミングの負担軽減に有効なプログラミング支援装置を提供する。【解決手段】プログラミング支援装置４は、ロボット２用のタスクの実行に関する第一条件を、複数のタスクを含むタスクグループごとに入力するための第一入力エリア２２０の表示用データを生成する表示データ生成部１２２と、複数のタスクグループの実行順序に関する第二条件を入力するための第二入力エリア２３０の表示用データを生成する表示データ生成部１２３と、第一入力エリア２２０への入力に基づいて第一条件を設定する条件設定部１３１と、第二入力エリア２３０への入力に基づいて第二条件を設定する条件設定部１３２と、複数のタスクグループを少なくとも一台のロボット２に実行させるための動作プログラムを第一条件及び第二条件に基づいて生成するプログラム生成部１４０と、を備える。【選択図】図１
2019084664.tif 000002
【特許請求の範囲】
【請求項１】
ロボット用のタスクの実行に関する第一条件を、複数の前記タスクを含むタスクグループごとに入力するための第一入力エリアの表示用データを生成する第一表示データ生成部と、
複数の前記タスクグループの実行順序に関する第二条件を入力するための第二入力エリアの表示用データを生成する第二表示データ生成部と、
前記第一入力エリアへの入力に基づいて前記第一条件を設定する第一条件設定部と、
前記第二入力エリアへの入力に基づいて前記第二条件を設定する第二条件設定部と、
前記複数のタスクグループを少なくとも一台の前記ロボットに実行させるための動作プログラムを前記第一条件及び前記第二条件に基づいて生成するプログラム生成部と、を備えるプログラミング支援装置。
【請求項２】
前記第一条件設定部は、前記第一入力エリアにおいて、前記タスクの実行用の前記ロボットが指定されている場合には、当該ロボットに当該タスクを実行させるように前記第一条件を設定し、前記第一入力エリアにおいて、前記タスクの実行用の前記ロボットが指定されていない場合には、当該タスクの実行用の前記ロボットを未定とするように前記第一条件を設定し、
前記プログラム生成部は、前記第一条件において前記タスクの実行用の前記ロボットが未定となっている場合に、当該タスクの実行用の前記ロボットを設定するロボット設定部を有する、請求項１記載のプログラミング支援装置。
【請求項３】
前記第二条件設定部は、前記第二入力エリアにおいて、実行順序を定めて複数の前記タスクグループの実行が指定されている場合には、当該実行順序を保持するように前記第二条件を設定し、前記第二入力エリアにおいて、実行順序を定めずに複数の前記タスクグループの実行が指定されている場合には、当該複数のタスクグループの実行順序を未定とするように前記第二条件を設定し、
前記プログラム生成部は、前記第二条件において複数の前記タスクグループの実行順序が未定となっている場合に、当該複数のタスクグループの実行順序を設定する順序設定部を更に有する、請求項２記載のプログラミング支援装置。
【請求項４】
前記順序設定部は、実行順序が未定の複数の前記タスクグループの少なくとも一部が並行するように、当該複数のタスクグループの実行順序を設定し、
前記ロボット設定部は、実行用の前記ロボットが未定の複数の前記タスクが並行するように前記実行順序が設定される場合に、当該複数のタスクの実行用に複数台の前記ロボットをそれぞれ設定する、請求項３記載のプログラミング支援装置。
【請求項５】
前記第二条件設定部は、前記第二入力エリアにおいて、複数の前記タスクグループのアイコンが第一方向に沿って並んでいる場合に、当該複数のタスクグループのアイコンの並び順に従った実行順序を保持するように前記第二条件を設定し、前記第二入力エリアにおいて、複数の前記タスクグループのアイコンが前記第一方向に交差する第二方向に沿って並んでいる場合に、当該複数のタスクグループの実行順序を未定とするように前記第二条件を設定する、請求項３又は４記載のプログラミング支援装置。
【請求項６】
前記プログラム生成部は、
実行対象の前記タスク同士の間の動作パスを前記ロボットごとに設定するパス設定部と、
複数台の前記ロボット同士の動作タイミングを調整するための待機時間を前記ロボットごとに設定する待機時間設定部と、
予め設定された評価条件に基づいて、前記ロボット設定部、前記順序設定部、前記パス設定部及び前記待機時間設定部による設定内容の採用可否を判定する採否判定部と、を更に有する、請求項３〜５のいずれか一項記載のプログラミング支援装置。
【請求項７】
前記採否判定部によって採用可と判定された設定内容に従って、前記タスクの実行時間と、前記動作パスに従った移動時間と、前記待機時間とを前記ロボットごとに示すタイムチャートの表示用データを生成する第三表示データ生成部を更に備える、請求項６記載のプログラミング支援装置。
【請求項８】
前記タイムチャートにおいて選択された期間における前記ロボットの動作を示す動画の表示用データを生成する第四表示データ生成部を更に備える、請求項７記載のプログラミング支援装置。
【請求項９】
複数の前記タスクグループのリストを表示するリスト表示エリアの表示用データを生成する第五表示データ生成部を更に備え、
前記第一表示データ生成部は、前記リスト表示エリアにおいて設定対象として選択された前記タスクグループを前記第一条件の設定対象とするように前記第一入力エリアの表示用データを更新し、
前記第二表示データ生成部は、前記リスト表示エリアにおいて実行対象として選択された前記タスクグループを前記第二条件の設定対象として追加するように前記第二入力エリアの表示用データを更新する、請求項１〜８のいずれか一項記載のプログラミング支援装置。
【請求項１０】
少なくとも一台のロボットと、
前記ロボット用のタスクの実行に関する第一条件を、複数の前記タスクを含むタスクグループごとに入力するための第一入力エリアの表示用データを生成する第一表示データ生成部と、
複数の前記タスクグループの実行順序に関する第二条件を入力するための第二入力エリアの表示用データを生成する第二表示データ生成部と、
前記第一入力エリアへの入力に基づいて前記第一条件を設定する第一条件設定部と、
前記第二入力エリアへの入力に基づいて前記第二条件を設定する第二条件設定部と、
前記複数のタスクグループを前記ロボットに実行させるための動作プログラムを前記第一条件及び前記第二条件に基づいて生成するプログラム生成部と、
前記プログラム生成部により生成された前記動作プログラムに従って前記ロボットを制御するコントローラと、を備えるロボットシステム。
【請求項１１】
ロボット用のタスクの実行に関する第一条件を、複数の前記タスクを含むタスクグループごとに入力するための第一入力エリアの表示用データを生成することと、
複数の前記タスクグループの実行順序に関する第二条件を入力するための第二入力エリアの表示用データを生成することと、
前記第一入力エリアへの入力に基づいて前記第一条件を設定することと、
前記第二入力エリアへの入力に基づいて前記第二条件を設定することと、
前記複数のタスクグループを少なくとも一台の前記ロボットに実行させるための動作プログラムを前記第一条件及び前記第二条件に基づいて生成することと、を含むプログラム生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、プログラミング支援装置、ロボットシステム及びプログラム生成方法に関する。
【背景技術】
【０００２】
特許文献１には、実行主体を複数含むアクションを実行主体ごとに複数のアクションに分割する分割部と、分割部によって分割されたアクションを含む複数のアクション間の依存関係をあらわす依存情報に基づき、複数のアクションのうち実行主体が一致する複数のアクションの少なくとも一つの開始タイミングを調整する調整部と、を備える作業計画装置が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１６−５９９８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本開示は、ロボットの動作プログラミングの負担軽減に有効なプログラミング支援装置、ロボットシステム及びプログラム生成方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
本開示の一側面に係るプログラミング支援装置は、ロボット用のタスクの実行に関する第一条件を、複数のタスクを含むタスクグループごとに入力するための第一入力エリアの表示用データを生成する第一表示データ生成部と、複数のタスクグループの実行順序に関する第二条件を入力するための第二入力エリアの表示用データを生成する第二表示データ生成部と、第一入力エリアへの入力に基づいて第一条件を設定する第一条件設定部と、第二入力エリアへの入力に基づいて第二条件を設定する第二条件設定部と、複数のタスクグループを少なくとも一台のロボットに実行させるための動作プログラムを第一条件及び第二条件に基づいて生成するプログラム生成部と、を備える。
【０００６】
本開示の他の側面に係るロボットシステムは、少なくとも一台のロボットと、ロボット用のタスクの実行に関する第一条件を、複数のタスクを含むタスクグループごとに入力するための第一入力エリアの表示用データを生成する第一表示データ生成部と、複数のタスクグループの実行順序に関する第二条件を入力するための第二入力エリアの表示用データを生成する第二表示データ生成部と、第一入力エリアへの入力に基づいて第一条件を設定する第一条件設定部と、第二入力エリアへの入力に基づいて第二条件を設定する第二条件設定部と、複数のタスクグループをロボットに実行させるための動作プログラムを第一条件及び第二条件に基づいて生成するプログラム生成部と、プログラム生成部により生成された動作プログラムに従ってロボットを制御するコントローラと、を備える。
【０００７】
本開示の更に他の側面に係るプログラム生成方法は、ロボット用のタスクの実行に関する第一条件を、複数のタスクを含むタスクグループごとに入力するための第一入力エリアの表示用データを生成することと、複数のタスクグループの実行順序に関する第二条件を入力するための第二入力エリアの表示用データを生成することと、第一入力エリアへの入力に基づいて第一条件を設定することと、第二入力エリアへの入力に基づいて第二条件を設定することと、複数のタスクグループを少なくとも一台のロボットに実行させるための動作プログラムを第一条件及び第二条件に基づいて生成することと、を含む。
【発明の効果】
【０００８】
本開示によれば、ロボットの動作プログラミングの負担軽減に有効なプログラミング支援装置、ロボットシステム及びプログラム生成方法を提供することができる。
【図面の簡単な説明】
【０００９】
【図１】ロボットシステムの全体構成を示す模式図である。
【図２】プログラミング支援装置の機能的な構成を示すブロック図である。
【図３】プログラミング支援画面を例示する模式図である。
【図４】プログラミング支援装置のハードウェア構成図である。
【図５】プログラミング支援画面の表示手順を示すフローチャートである。
【図６】編集対象のメインタスクの設定手順を示すフローチャートである。
【図７】第一条件の取得手順を示すフローチャートである。
【図８】第一条件の設定手順を示すフローチャートである。
【図９】第二条件の設定手順を示すフローチャートである。
【図１０】動作プログラムの生成手順を示すフローチャートである。
【図１１】シミュレーション画像の再生手順を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、実施形態について、図面を参照しつつ詳細に説明する。説明において、同一要素又は同一機能を有する要素には同一の符号を付し、重複する説明を省略する。本実施形態に係るロボットシステムは、オペレータにより教示された動作をロボットに実行させることにより、加工、組立等の様々な作業を自動化するシステムである。
【００１１】
〔ロボットシステム〕
図１に示すように、ロボットシステム１は、複数台のロボット２と、複数台のロボット２をそれぞれ制御する複数のロボットコントローラ３と、プログラミング支援装置４とを備える。ロボット２は、例えば多軸（例えば６軸又は７軸）のシリアルリンク型の垂直多関節ロボットであり、その先端部５にツールを保持した状態で様々な作業を実行できるように構成されている。ロボット２は、所定の範囲内において、先端部５の位置及び姿勢を自在に変更し得るものであればよく、必ずしも６軸の垂直多関節ロボットに限られない。例えばロボット２は、６軸に１軸の冗長軸を追加した７軸の垂直多関節ロボットであってもよい。複数台のロボット２は、同一の位置に配置された同一のワークに対し、いずれのロボット２によっても同一の作業を実行し得るように配置されている。
【００１２】
ロボットコントローラ３は、予め生成された動作プログラムに従ってロボット２を制御する。動作プログラムは、例えばロボット２の先端部５の動作パスを含む。動作パスは、先端部５の位置・姿勢の経時的な推移を指定する情報である。例えば動作パスは、時系列に並ぶ複数の位置・姿勢目標値を含む。ロボットコントローラ３は、先端部５の位置・姿勢を上記位置・姿勢目標値に一致させるための関節角度目標値（ロボット２の各関節の角度目標値）を算出し、当該関節角度目標値に従ってロボット２を制御する。
【００１３】
プログラミング支援装置４は、動作プログラムの生成を支援するための装置である。プログラミング支援装置４は、ロボット２用のタスクの実行に関する第一条件を、複数のサブタスクを含むタスクグループごとに入力するための第一入力エリアの表示用データを生成することと、複数のタスクグループの実行順序に関する第二条件を入力するための第二入力エリアの表示用データを生成することと、第一入力エリアへの入力に基づいて第一条件を設定することと、第二入力エリアへの入力に基づいて第二条件を設定することと、複数のタスクグループを少なくとも一台のロボット２に実行させるための動作プログラムを第一条件及び第二条件に基づいて生成することと、を実行するように構成されている。以下、上記タスクを「サブタスク」といい、上記タスクグループを「メインタスク」という。メインタスクの具体例としては「部品Ａを移動させる」、「部品Ａを（ワークに）取り付ける」などが挙げられる。またサブタスクの具体例としては「部品Ａを取る」「部品Ａを置く」「部品Ａを（ワークに）嵌合する」などが挙げられる。
【００１４】
サブタスクは、所定の作業をロボット２に実行させるために予め設定された動作パスを含む。以下、この動作パスを「作業パス」という。作業パスは、例えばオペレータにより予め教示されている。サブタスクの実行に関する第一条件は、サブタスクを実行するロボット２の指定と、サブタスクの実行の開始条件とを含む。開始条件は、例えばサブタスクの実行開始前に完了しているべき他のサブタスクの指定等により定められる。
【００１５】
〔プログラミング支援装置〕
以下、プログラミング支援装置４の構成を具体的に説明する。図２に示すように、プログラミング支援装置４は、一つ又は複数のコンピュータにより構成された本体１０と、モニタ２０と、入力デバイス３０とを備える。
【００１６】
モニタ２０は、本体１０から出力された情報を表示するための装置である。モニタ２０は、グラフィック表示が可能であればいかなるものであってもよく、その具体例としては液晶パネルなどが挙げられる。入力デバイス３０は、本体１０に対し情報を入力するための装置である。入力デバイス３０は、所望の情報を入力可能であればいかなるものであってもよく、その具体例としてはキーパッド及びマウス等が挙げられる。なお、モニタ２０及び入力デバイス３０は、タッチパネルとして一体化されていてもよい。また、例えばタブレットコンピュータのように、本体１０、モニタ２０及び入力デバイス３０の全てが一体化されていてもよい。
【００１７】
本体１０は、機能的な構成（以下、「機能モジュール」という。）として、条件記憶部１１１と、モデル記憶部１１２と、サブタスク記憶部１１３と、動作プログラム記憶部１１４と、表示データ生成部１２１，１２２，１２３，１２４，１２５と、条件設定部１３１，１３２と、プログラム生成部１４０と、プログラム送信部１５１とを有する。
【００１８】
条件記憶部１１１は、メインタスクの構成情報と、上述した第一条件及び第二条件とを記憶する。モデル記憶部１１２は、シミュレーション用のモデルデータを記憶する。モデルデータは、例えばロボット２及びその周辺環境のモデルをポリゴンにより構成した三次元のサーフェスデータである。サブタスク記憶部１１３は、予め教示された複数のサブタスクの作業パスを記憶する。動作プログラム記憶部１１４は、上述した動作プログラムを記憶する。
【００１９】
表示データ生成部１２１，１２２，１２３，１２４，１２５は、プログラミング支援用の画面（以下、「プログラミング支援画面」という。）をモニタ２０に表示するためのデータを生成する。
【００２０】
図３に示すように、プログラミング支援画面２００は、例えばリスト表示エリア２１０と、第一入力エリア２２０と、第二入力エリア２３０と、プランニングエリア２４０とを含む。リスト表示エリア２１０は、複数のメインタスクのリストを表示する。例えばリスト表示エリア２１０は、メインタスクを示すアイコン２１１を所定方向（例えば画面の上下方向）に並べて表示する。アイコン２１１は、例えばメインタスクの名称を文字で表示する名称表示部２１２と、メインタスクの構成内容の概要をマークやイラストで表示する内容表示部２１３とを含む。
【００２１】
第一入力エリア２２０は、上記第一条件を、メインタスクごとに入力するためのエリアである。例えば第一入力エリア２２０は、新規作成ボタン２２１と、タスク追加ボタン２２２と、タスク削除ボタン２２３と、メインタスク表示部２２４と、サブタスク表示部２２５と、ロボット入力部２２６と、開始条件入力部２２７と、別名保存ボタン２２８と、上書保存ボタン２２９とを含む。
【００２２】
メインタスク表示部２２４は、メインタスクの識別情報（例えばメインタスクの名称）を表示するテキストボックスである。サブタスク表示部２２５は、サブタスクの識別情報（例えばサブタスクの名称）を表示するテキストボックスであり、メインタスク表示部２２４に対して枝状に従属するように表示される。
【００２３】
ロボット入力部２２６は、第一条件の一例として、サブタスク表示部２２５のサブタスクを実行するロボット２の識別情報（例えばロボットの番号）を入力するためのテキストボックスであり、当該サブタスク表示部２２５に対して枝状に従属するように表示される。ロボット入力部２２６をクリック（又はタップ）することにより、ロボット２の識別情報を入力することが可能である。開始条件入力部２２７は、第一条件の一例として、サブタスク表示部２２５のサブタスクの開始条件を入力するためのテキストボックスであり、当該サブタスク表示部２２５に対して枝状に従属するように表示される。開始条件入力部２２７を選択（例えばクリック又はタップ）することにより、当該サブタスクの開始条件を入力することが可能である。
【００２４】
新規作成ボタン２２１は、新たなメインタスクの作成を開始するためのボタンである。例えば新規作成ボタン２２１を操作（例えばクリック又はタップ）すると、名称未定でサブタスク表示部２２５を含まない状態（以下、「空の状態」という。）のメインタスク表示部２２４が表示される。
【００２５】
タスク追加ボタン２２２は、メインタスクにサブタスクを追加するためのボタンである。例えば、メインタスク表示部２２４が空の状態でタスク追加ボタン２２２を操作（例えばクリック又はタップ）すると、当該メインタスク表示部２２４に対して一つのサブタスク表示部２２５が追加される。また、いずれかのサブタスク表示部２２５が選択された状態でタスク追加ボタン２２２を操作すると、当該サブタスク表示部２２５の前又は後に一つのサブタスク表示部２２５が追加される。タスク削除ボタン２２３は、メインタスクからサブタスクを削除するためのボタンである。例えば、いずれかのサブタスク表示部２２５が選択された状態でタスク追加ボタン２２２を操作すると、当該サブタスク表示部２２５が削除される。
【００２６】
別名保存ボタン２２８は、第一入力エリア２２０への入力内容に従ったメインタスクを別名で条件記憶部１１１に保存するためのボタンである。上書保存ボタン２２９は、第一入力エリア２２０への入力内容に従って既存のメインタスクを条件記憶部１１１に上書き保存するためのボタンである。
【００２７】
第二入力エリア２３０は、上記第二条件を入力するためのエリアである。第二入力エリア２３０は、上記第二条件をフロー２３１としてグラフィック表示する。フロー２３１は、複数のアイコン２３２を含む。第二入力エリア２３０においては、所定の方向が時系列に沿う方向（以下、「第一方向」という。）とされている。図示の例では、上から下に向う方向が第一方向とされている。フロー２３１において、第一方向に沿って並ぶ複数のアイコン２３２（例えばアイコン２３２Ａ，２３２Ｂ，２３２Ｅ，２３２Ｆ，２３２Ｇ）に対しては、その並び順に従った実行順序が設定される。フロー２３１において、第一方向に直交する第二方向（図示の左右方向）に並ぶ複数のアイコン２３２（例えばアイコン２３２Ｂ，２３２Ｃ，２３２Ｄ）に対しては、実行順序が未定とされる。
【００２８】
プランニングエリア２４０は、動作プログラムの生成を実行するためのエリアである。例えばプランニングエリア２４０は、プランニング実行ボタン２４１と、演算レベル入力部２４２と、結果表示部２４３，２４４とを含む。プランニング実行ボタン２４１は、動作プログラムの生成を開始させるためのボタンである。演算レベル入力部２４２は、動作プログラムの生成のために自動設定される内容の採用可否の判定基準（以下、「演算レベル」という。）を入力するためのオブジェクトである。例えば演算レベル入力部２４２は、予め設定された複数の演算レベルにそれぞれ対応する複数のラジオボタンを含んでいる。当該複数のラジオボタンのいずれかを選択することにより、演算レベルを設定することが可能である。
【００２９】
結果表示部２４３，２４４は、動作プログラムの生成結果を表示する部分である。結果表示部２４３は、動作プログラムを一サイクル実行するのに要する時間を表示する。結果表示部２４４は、動作プログラムに従った動作シーケンスを表示する。例えば結果表示部２４４は、上記動作シーケンスをロボット２ごとに示すタイムチャート２５０を含む。タイムチャート２５０は、作業時間２５１（サブタスクの実行時間）と、移動時間２５２（サブタスク間の移動時間）と、待機時間２５３とを含む。図示の例は、二台のロボット２のタイムチャートを表示した状態である。
【００３０】
図２に戻り、表示データ生成部１２１（第五表示データ生成部）は、リスト表示エリア２１０の表示用データを生成してモニタ２０に出力する。表示データ生成部１２２（第一表示データ生成部）は、第一入力エリア２２０の表示用データを生成してモニタ２０に出力する。
【００３１】
表示データ生成部１２２は、リスト表示エリア２１０において設定対象として選択されたメインタスクを第一条件の設定対象とするように第一入力エリア２２０の表示用データを更新する。例えば表示データ生成部１２２は、リスト表示エリア２１０においてクリック又はタップにより選択されたアイコン２１１に対応するメインタスクの情報を条件記憶部１１１から取得し、当該情報を表示するように第一入力エリア２２０の表示用データを更新する。メインタスクの情報は、当該メインタスクが含むサブタスクの識別情報と、設定済みの第一条件とを含む。
【００３２】
表示データ生成部１２３（第二表示データ生成部）は、第二入力エリア２３０の表示用データを生成してモニタ２０に出力する。表示データ生成部１２３は、リスト表示エリア２１０において実行対象として選択されたメインタスクを第二条件の設定対象として追加するように第二入力エリア２３０の表示用データを更新する。例えば表示データ生成部１２３は、リスト表示エリア２１０から第二入力エリア２３０にドラッグされたアイコン２１１に対応するメインタスクを、ドラッグ完了位置に応じてフロー２３１に追加するように、第二入力エリア２３０の表示用データを更新する。
【００３３】
条件設定部１３１（第一条件設定部）は、第一入力エリア２２０への入力に基づいて、メインタスクが含むサブタスクの識別情報と、各サブタスクの第一条件とを設定して条件記憶部１１１に保存する。条件設定部１３１は、第一入力エリア２２０において、サブタスクの実行用のロボット２が指定されている場合には、当該ロボット２に当該サブタスクを実行させるように第一条件を設定し、第一入力エリア２２０において、サブタスクの実行用のロボット２が指定されていない場合には、当該タスクの実行用のロボット２を未定とするように第一条件を設定する。なお、サブタスクの実行用のロボット２が指定されていないとは、当該サブタスクを実行し得る複数のロボット２は指定されているが、当該複数のロボット２のいずれを用いるかは指定されていない場合も含む。この場合、条件設定部１３１は、当該サブタスクを実行するロボット２の選択肢を当該複数のロボット２に制限するように第一条件を設定する。
【００３４】
条件設定部１３２（第二条件設定部）は、第二入力エリア２３０への入力に基づいて第二条件を設定して条件記憶部１１１に保存する。条件設定部１３２は、第二入力エリア２３０において、実行順序を定めて複数のメインタスクの実行が指定されている場合には、当該実行順序を保持するように第二条件を設定し、第二入力エリア２３０において、実行順序を定めずに複数のメインタスクの実行が指定されている場合には、当該複数のメインタスクの実行順序を未定とするように第二条件を設定する。例えば条件設定部１３２は、第二入力エリア２３０において、複数のメインタスクのアイコン２３２が上記第一方向に沿って並んでいる場合に、当該複数のアイコン２３２の並び順に従った実行順序を保持するように第二条件を設定し、第二入力エリア２３０において、複数のメインタスクのアイコン２３２が上記第二方向に沿って並んでいる場合に、当該複数のメインタスクの実行順序を未定とするように第二条件を設定する。
【００３５】
プログラム生成部１４０は、複数のメインタスクを複数のロボット２に実行させるための動作プログラムを第一条件及び第二条件に基づいて生成する。例えばプログラム生成部１４０は、より細分化された機能モジュールとして、順序設定部１４２と、ロボット設定部１４１と、パス設定部１４３と、待機時間設定部１４４と、評価値算出部１４５と、採否判定部１４６とを含む。
【００３６】
順序設定部１４２は、第二条件において複数のメインタスクの実行順序が未定となっている場合に、当該複数のメインタスクの実行順序を設定する。例えば順序設定部１４２は、各サブタスクが上記開始条件を満たすように複数のメインタスクの実行順序を設定する。順序設定部１４２は、実行順序が未定の複数のメインタスクの少なくとも一部が並行するように、当該複数のメインタスクの実行順序を設定してもよい。例えば、上記開始条件を満たす限りにおいて、ロボット２の全台数と同数のメインタスクを並行させることが可能である。
【００３７】
ロボット設定部１４１は、第一条件においてサブタスクの実行用のロボット２が未定となっている場合に、当該サブタスクの実行用のロボット２を設定する。ロボット設定部１４１は、実行用のロボット２が未定の複数のサブタスクが並行するように実行順序が設定される場合に、当該複数のサブタスクの実行用に複数台のロボット２をそれぞれ設定する。上述したように、第一条件がロボット２の選択肢の制限を含んでいる場合、ロボット設定部１４１は当該制限の範囲内にてロボット２を設定する。
【００３８】
パス設定部１４３は、実行対象のサブタスク同士の間の動作パス（以下、「エアカットパス」という。）をロボット２ごとに設定する。例えばパス設定部１４３は、モデル記憶部１１２に記憶されたモデルデータを用い、ロボット２とその周辺配置物との衝突を回避するようにエアカットパスを生成する。より具体的に、パス設定部１４３は、先行する作業パスの終点と、後続する作業パスの始点との間で、ロボット２と周辺配置物との衝突を回避可能な経由点を生成し、当該経由点を通るようにパスを生成することを繰り返してエアカットパスを生成する。このような生成手法の詳細は、例えば特許第４１０３０５７号等に開示されている。
【００３９】
待機時間設定部１４４は、複数台のロボット２同士の動作タイミングを調整するための待機時間をロボット２ごとに設定する。例えば待機時間設定部１４４は、２台のロボット２の動作パスが互いに干渉する場合に、当該２台のロボット２同士の衝突を回避するように、いずれか一方のロボット２の待機時間を設定する。
【００４０】
評価値算出部１４５は、予め設定された評価条件に基づいて、順序設定部１４２、ロボット設定部１４１、パス設定部１４３及び待機時間設定部１４４による設定内容の評価値を算出する。評価値の具体例としては、上記設定内容に従う動作プログラムの実行時間、又は動作プログラムの消費電力（動作プログラムに従って動作する複数台のロボット２の消費電力）等が挙げられる。実行時間及び消費電力を組み合わせて評価値を導出してもよい。
【００４１】
採否判定部１４６は、評価値算出部１４５により算出された評価値と、演算レベル入力部２４２に入力された演算レベルと基づいて、順序設定部１４２、ロボット設定部１４１、パス設定部１４３及び待機時間設定部１４４による設定内容の採用可否を判定する。例えば採否判定部１４６は、評価値が所定の合格ラインに到達している場合に上記設定内容を採用可とし、評価値が当該合格ラインに到達していない場合に上記設定内容を採用不可とする。この場合採否判定部１４６は、演算レベル入力部２４２に入力された演算レベルに従って、上記合格ラインを変更する。
【００４２】
採否判定部１４６は、順序設定部１４２、ロボット設定部１４１、パス設定部１４３、待機時間設定部１４４及び評価値算出部１４５によって、上記設定内容の変更と評価値の算出とが所定期間繰り返された後に、最も好ましい評価値が得られた設定内容を採用可と判定してもよい。この場合、採否判定部１４６は、演算レベル入力部２４２に入力された演算レベルに従って、上記所定期間を変更する。採否判定部１４６は、採用可と判定した設定内容に従う動作プログラムを動作プログラム記憶部１１４に保存する。
【００４３】
表示データ生成部１２４（第三表示データ生成部）は、採否判定部１４６によって採用可と判定された設定内容に従って、結果表示部２４３，２４４の表示用データを生成してモニタ２０に出力する。例えば表示データ生成部１２４は、採否判定部１４６が動作プログラム記憶部１１４に保存した動作プログラムを一サイクル実行するのに要する時間を生成する。また、表示データ生成部１２４は、採否判定部１４６が動作プログラム記憶部１１４に保存した動作プログラムに従って、サブタスクの実行時間と、エアカットパスに従った移動時間と、待機時間とをロボット２ごとに示すタイムチャート２５０の表示用データを生成する。
【００４４】
表示データ生成部１２５（第四表示データ生成部）は、タイムチャート２５０のいずれかの期間について動画再生の指示入力（例えばダブルクリック又はダブルタップ）がなされた場合に、当該期間におけるロボット２の動作を示す動画の表示用データを生成してモニタ２０に出力する。例えば表示データ生成部１２５は、動作プログラム記憶部１１４に記憶された動作プログラムと、モデル記憶部１１２に記憶されたモデルデータとに基づいて、上記選択期間における動画の表示用データを生成する。プログラム送信部１５１は、動作プログラム記憶部１１４に記憶された動作プログラムをロボットコントローラ３に送信する。
【００４５】
図４は、本体１０のハードウェア構成を例示するブロック図である。図４に示すように、本体１０は回路１６０を有し、回路１６０は、一つ又は複数のプロセッサ１６１と、メモリ１６２と、ストレージ１６３と、入出力ポート１６４とを有する。ストレージ１６３は、本体１０の上記各機能モジュールを構成するためのプログラムを記録している。ストレージ１６３は、コンピュータ読み取り可能であればどのようなものであってもよい。具体例として、ハードディスク、不揮発性の半導体メモリ、磁気ディスク及び光ディスク等が挙げられる。メモリ１６２は、ストレージ１６３からロードしたプログラム及びプロセッサ１６１の演算結果等を一時的に記憶する。プロセッサ１６１は、メモリ１６２と協働してプログラムを実行することで、各機能モジュールを構成する。入出力ポート１６４は、プロセッサ１６１からの指令に応じ、モニタ２０、入力デバイス３０及びロボットコントローラ３との間で電気信号の入出力を行う。
【００４６】
〔プログラミング支援方法〕
続いて、プログラム生成方法及びプログラミング支援方法の一例として、プログラミング支援装置４が実行するプログラミング支援手順を説明する。このプログラミング支援手順は、サブタスクの実行に関する第一条件を、複数のサブタスクを含むメインタスクごとに入力するための第一入力エリア２２０の表示用データを生成することと、複数のメインタスクの実行順序に関する第二条件を入力するための第二入力エリア２３０の表示用データを生成することと、第一入力エリア２２０への入力に基づいて第一条件を設定することと、第二入力エリア２３０への入力に基づいて第二条件を設定することと、複数のメインタスクを少なくとも一台のロボット２に実行させるための動作プログラムを第一条件及び第二条件に基づいて生成することと、を含む。例えば、このプログラミング支援手順は、プログラミング支援画面２００の表示手順と、編集対象のメインタスクの設定手順と、第一条件の取得手順と、第一条件の設定手順と、第二条件の設定手順と、動作プログラムの生成手順と、シミュレーション画像の再生手順とを含む。以下、各手順の内容を例示する。
【００４７】
（プログラミング支援画面の表示手順）
図５に示すように、プログラミング支援装置４は、まずステップＳ０１を実行する。ステップＳ０１では、表示データ生成部１２１が、リスト表示エリア２１０の表示用データを生成する。例えば、表示データ生成部１２１は、条件記憶部１１１に記憶された全てのメインタスクにそれぞれ対応する複数のアイコン２１１の表示用データを生成し、当該複数のアイコン２１１を上下方向に並べて表示するようにリスト表示エリア２１０の表示用データを生成する。
【００４８】
次に、プログラミング支援装置４はステップＳ０２を実行する。ステップＳ０２では、表示データ生成部１２２が、第一入力エリア２２０の表示用データを生成する。例えば、表示データ生成部１２２は、第一入力エリア２２０が初期状態（例えば空のメインタスク表示部２２４を表示する状態）とするように第一入力エリア２２０の表示用データを生成する。
【００４９】
次に、プログラミング支援装置４はステップＳ０３を実行する。ステップＳ０３では、表示データ生成部１２３が、第二入力エリア２３０の表示用データを生成する。例えば、表示データ生成部１２３は、第二入力エリア２３０が初期状態（いずれのアイコン２３２も表示しない状態）とするように第二入力エリア２３０の表示用データを生成する。
【００５０】
次に、プログラミング支援装置４はステップＳ０４を実行する。ステップＳ０４では、表示データ生成部１２４が、プランニングエリア２４０の表示用データを生成する。例えば、表示データ生成部１２４は、プランニングエリア２４０が初期状態（結果表示部２４３，２４４に動作プログラムの生成結果が表示されない状態）とするようにプランニングエリア２４０の表示用データを生成する。
【００５１】
次に、プログラミング支援装置４はステップＳ０５を実行する。ステップＳ０５では、表示データ生成部１２１，１２２，１２３，１２４が、リスト表示エリア２１０、第一入力エリア２２０、第二入力エリア２３０及びプランニングエリア２４０の表示用データをそれぞれモニタ２０に出力する。以上でプログラミング支援画面２００の表示が完了する。なお、ステップＳ０１，Ｓ０２，Ｓ０３，Ｓ０４の実行順序は適宜変更可能である。
【００５２】
（編集対象メインタスクの設定手順）
図６に示すように、プログラミング支援装置４は、まずステップＳ１１を実行する。ステップＳ１１では、リスト表示エリア２１０においていずれかのメインタスクが設定対象として選択されたか否か（例えばアイコン２１１がクリック又はタップされたか否か）を表示データ生成部１２２が確認する。
【００５３】
ステップＳ１１において、いずれのアイコン２１１も選択されていないと判定した場合、プログラミング支援装置４はステップＳ１２を実行する。ステップＳ１２では、新規作成ボタン２２１が操作（例えばクリック又はタップ）されたか否かを表示データ生成部１２２が判定する。ステップＳ１２において、新規作成ボタン２２１は操作されていないと判定した場合、プログラミング支援装置４は処理をステップＳ１１に戻す。以後、プログラミング支援装置４は、アイコン２１１の選択又は新規作成ボタン２２１の操作を待機する。
【００５４】
ステップＳ１１において、いずれかのメインタスクが設定対象として選択されたと判定した場合、プログラミング支援装置４は、リスト表示エリア２１０において選択されたメインタスクを第一条件の設定対象とするように第一入力エリア２２０の表示用データを更新する。例えば、プログラミング支援装置４はステップＳ１３，Ｓ１４を順に実行する。ステップＳ１３では、表示データ生成部１２２が、リスト表示エリア２１０において選択されたアイコン２１１に対応するメインタスクの情報を条件記憶部１１１から取得する。ステップＳ１４では、表示データ生成部１２２が、ステップＳ１３において取得された情報に従ったメインタスク表示部２２４、サブタスク表示部２２５、ロボット入力部２２６及び開始条件入力部２２７を含むように第一入力エリア２２０の表示用データを生成する。
【００５５】
ステップＳ１２において、新規作成ボタン２２１が操作されたと判定した場合、プログラミング支援装置４はステップＳ１５を実行する。ステップＳ１５では、表示データ生成部１２２が、空のメインタスク表示部２２４を含むように第一入力エリア２２０の表示用データを生成する。
【００５６】
ステップＳ１４又はステップＳ１５を実行した後、プログラミング支援装置４はステップＳ１６を実行する。ステップＳ１６では、表示データ生成部１２２が、ステップＳ１４又はステップＳ１５で生成した第一入力エリア２２０の表示用データをそれぞれモニタ２０に出力する。以上で編集対象のメインタスクの設定手順が完了する。プログラミング支援装置４は、プログラミング支援画面２００が閉じられるまで以上の手順を繰り返す。
【００５７】
（第一条件の取得手順）
図７に示すように、プログラミング支援装置４は、まずステップＳ２１を実行する。ステップＳ２１では、タスク追加ボタン２２２が操作（例えばクリック又はタップ）されたか否かを表示データ生成部１２２が確認する。ステップＳ２１においてタスク追加ボタン２２２は操作されていないと判定した場合、プログラミング支援装置４はステップＳ２２を実行する。ステップＳ２２では、いずれかのサブタスク表示部２２５のロボット入力部２２６が選択（例えばクリック又はタップ）されたか否かを表示データ生成部１２２が確認する。ステップＳ２２において、ロボット入力部２２６は選択されていないと判定した場合、プログラミング支援装置４はステップＳ２３を実行する。ステップＳ２３では、いずれかのサブタスク表示部２２５の開始条件入力部２２７が選択（例えばクリック又はタップ）されたか否かを表示データ生成部１２２が確認する。ステップＳ２３において、開始条件入力部２２７は選択されていないと判定した場合、プログラミング支援装置４は処理をステップＳ２１に戻す。以後、プログラミング支援装置４は、タスク追加ボタン２２２の操作、ロボット入力部２２６の選択及び開始条件入力部２２７の選択のいずれかが行われるのを待機する。
【００５８】
ステップＳ２１において、タスク追加ボタン２２２が操作されたと判定した場合、プログラミング支援装置４はステップＳ２４，Ｓ２５，Ｓ２６を順に実行する。ステップＳ２４では、表示データ生成部１２２が、サブタスク記憶部１１３を参照して、メインタスク表示部２２４のメインタスクに追加可能なサブタスクのリストを生成し、当該リストを表示するように第一入力エリア２２０の表示用データを更新してモニタ２０に出力する。ステップＳ２５では、表示データ生成部１２２が、サブタスクのリストにおいていずれかのサブタスクが選択されるのを待機する。ステップＳ２６では、表示データ生成部１２２が、選択されたサブタスクを示すサブタスク表示部２２５（以下、「新たなサブタスク表示部２２５」という。）を追加するように第一入力エリア２２０の表示用データを更新してモニタ２０に出力する。
【００５９】
メインタスク表示部２２４が空の状態であった場合、表示データ生成部１２２は、新たなサブタスク表示部２２５をメインタスク表示部２２４に対して従属させるように第一入力エリア２２０の表示用データを更新する。メインタスク表示部２２４が既に複数のサブタスク表示部２２５を含んでおり、そのいずれかが選択された状態であった場合、表示データ生成部１２２は、選択されていたサブタスク表示部２２５の前に新たなサブタスク表示部２２５を追加するように第一入力エリア２２０の表示用データを更新する。
【００６０】
ステップＳ２２において、ロボット入力部２２６が選択されたと判定した場合、プログラミング支援装置４はステップＳ２７，Ｓ２８，Ｓ２９を順に実行する。ステップＳ２７では、表示データ生成部１２２が、モデル記憶部１１２を参照して、当該サブタスク（当該ロボット入力部２２６の従属先であるサブタスク表示部２２５のサブタスク）を実行可能なロボット２のリストを生成し、当該リストを表示するように第一入力エリア２２０の表示用データを更新してモニタ２０に出力する。ステップＳ２８では、表示データ生成部１２２が、ロボット２のリストにおいていずれかのロボット２が選択されるのを待機する。ステップＳ２９では、表示データ生成部１２２が、選択されたロボット２の識別情報をロボット入力部２２６に表示するように第一入力エリア２２０の表示用データを更新してモニタ２０に出力する。
【００６１】
ステップＳ２３において、開始条件入力部２２７が選択されたと判定した場合、プログラミング支援装置４はステップＳ３１，Ｓ３２，Ｓ３３を順に実行する。ステップＳ３１では、表示データ生成部１２２が、サブタスクの開始条件のリストの表示用データを生成してモニタ２０に出力する。例えば表示データ生成部１２２は、サブタスク記憶部１１３を参照して、当該サブタスク（当該開始条件入力部２２７の従属先であるサブタスク表示部２２５のサブタスク）の開始前に完了させることを指定可能なサブタスク（以下、「開始条件用のサブタスク」という。）のリストの表示用データを生成する。ステップＳ３２では、表示データ生成部１２２が、開始条件のリストにおいていずれかの開始条件が選択されるのを待機する。ステップＳ３３では、表示データ生成部１２２が、選択された開始条件を開始条件入力部２２７に表示するように第一入力エリア２２０の表示用データを更新してモニタ２０に出力する。以上で第一条件の取得手順が完了する。プログラミング支援装置４は、プログラミング支援画面２００が閉じられるまで以上の手順を繰り返す。
【００６２】
（第一条件の設定手順）
図８に示すように、プログラミング支援装置４は、まずステップＳ４１を実行する。ステップＳ４１では、設定対象のメインタスクの名称が未定であるか否かを条件設定部１３１が確認する。
【００６３】
ステップＳ４１において、設定対象のメインタスクの名称が未定であると判定した場合、プログラミング支援装置４はステップＳ４２，Ｓ４３，Ｓ４４，Ｓ４５を順に実行する。ステップＳ４２では、条件設定部１３１が、別名保存ボタン２２８の操作（例えばクリック又はタップ）を待機する。ステップＳ４３では、表示データ生成部１２２が、ダイアログボックスの表示などによりメインタスクの名称の入力を取得する。ステップＳ４４では、条件設定部１３１が、第一入力エリア２２０の内容に従って、メインタスクの名称と、当該メインタスクの構成サブタスク（メインタスクに含まれるサブタスク）と、各構成サブタスクの第一条件とを一まとめにして条件記憶部１１１に保存する。ステップＳ４５では、表示データ生成部１２２が、ステップＳ４３において取得された名称をメインタスク表示部２２４に表示するように第一入力エリア２２０の表示用データを更新してモニタ２０に出力する。
【００６４】
ステップＳ４１において、設定対象のメインタスクの名称が設定されていると判定した場合、プログラミング支援装置４はステップＳ４６を実行する。ステップＳ４６では、上書保存ボタン２２９が操作（例えばクリック又はタップ）されたか否かを条件設定部１３１が確認する。ステップＳ４６において、上書保存ボタン２２９は操作されていないと判定した場合、プログラミング支援装置４はステップＳ４７を実行する。ステップＳ４７では、別名保存ボタン２２８が操作されたか否かを条件設定部１３１が確認する。ステップＳ４７において、別名保存ボタン２２８は操作されていないと判定した場合、プログラミング支援装置４は処理をステップＳ４６に戻す。以後、プログラミング支援装置４は、上書保存ボタン２２９の操作又は別名保存ボタン２２８の操作を待機する。
【００６５】
ステップＳ４６において、上書保存ボタン２２９が操作されたと判定した場合、プログラミング支援装置４はステップＳ４８を実行する。ステップＳ４８では、条件設定部１３１が、第一入力エリア２２０の内容に従って、設定対象のメインタスクの構成サブタスクと、各構成サブタスクの第一条件とを、条件記憶部１１１に上書き保存する。
【００６６】
ステップＳ４７において、別名保存ボタン２２８が操作されたと判定した場合、プログラミング支援装置４はステップＳ４９，Ｓ５１，Ｓ５２を順に実行する。ステップＳ４９では、表示データ生成部１２２が、ダイアログボックスの表示などによりメインタスクの名称の入力を取得する。ステップＳ５１では、条件設定部１３１が、第一入力エリア２２０の内容に従って、メインタスクの新たな名称と、当該メインタスクの構成サブタスク（メインタスクに含まれるサブタスク）と、各構成サブタスクの第一条件とを一まとめにして条件記憶部１１１に保存する。ステップＳ５２では、表示データ生成部１２２が、ステップＳ４９において取得された名称をメインタスク表示部２２４に表示するように第一入力エリア２２０の表示用データを更新してモニタ２０に出力する。
【００６７】
ステップＳ４５，Ｓ４８，Ｓ５２の次に、プログラミング支援装置４はステップＳ５３を実行する。ステップＳ５３では、条件記憶部１１１の記憶内容の更新に従って、表示データ生成部１２１が、リスト表示エリア２１０の表示用データを更新してモニタ２０に出力する。以上で第一条件の設定手順が完了する。プログラミング支援装置４は、プログラミング支援画面２００が閉じられるまで以上の手順を繰り返す。
【００６８】
（第二条件の設定手順）
図９に示すように、プログラミング支援装置４は、まずステップＳ６１を実行する。ステップＳ６１では、第二入力エリア２３０に実行対象のメインタスクが追加されるのを表示データ生成部１２３が待機する。例えば表示データ生成部１２３は、リスト表示エリア２１０から第二入力エリア２３０にいずれかのアイコン２１１がドラッグされるのを待機する。以下、第二入力エリア２３０に追加されるメインタスクを「追加メインタスク」という。
【００６９】
次に、プログラミング支援装置４はステップＳ６２を実行する。ステップＳ６２では、追加メインタスクの追加位置（例えばアイコン２１１のドラッグ完了位置）と重複する位置に既存のメインタスクのアイコン２３２が位置するか否かを表示データ生成部１２３が確認する。なお、ここでの重複とは、上記第一方向における位置が重複することを意味する。以下、追加メインタスクの追加位置と重複する位置にある既存のメインタスクを「重複メインタスク」という。また、追加メインタスクの追加位置とは重複しない位置にある既存のメインタスクを「非重複メインタスク」という。
【００７０】
ステップＳ６２において、重複メインタスクがあると判定した場合、プログラミング支援装置４はステップＳ６３を実行する。ステップＳ６３では、表示データ生成部１２３が、追加メインタスクのアイコン２３２を重複メインタスクのアイコン２３２に対して並列に追加する（上記第二方向に沿って並べる）ように、第二入力エリア２３０の表示用データを更新してモニタ２０に出力する。
【００７１】
ステップＳ６２において、重複メインタスクはないと判定した場合、プログラミング支援装置４はステップＳ６４を実行する。ステップＳ６３では、表示データ生成部１２３が、既存のメインタスクのアイコン２３２に対して並列とならない位置に追加メインタスクのアイコン２３２を追加するように、第二入力エリア２３０の表示用データを更新してモニタ２０に出力する。上記追加位置の前（又は後）に非重複メインタスクのアイコン２３２がある場合、表示データ生成部１２３は、当該非重複メインタスクのアイコン２３２の後（又は前）に追加メインタスクのアイコン２３２を追加するように、アイコン２３２の表示用データを追加する。上記追加位置を挟む二つの非重複メインタスクのアイコン２３２がある場合、表示データ生成部１２３は、当該二つの非重複メインタスクのアイコン２３２の間に、追加メインタスクのアイコン２３２を挿入するように、第二入力エリア２３０の表示用データを更新する。
【００７２】
ステップＳ６３，Ｓ６４の次に、プログラミング支援装置４はステップＳ６５を実行する。ステップＳ６５では、表示データ生成部１２３が、第二入力エリア２３０への入力に基づいて第二条件を設定し、条件記憶部１１１に保存する。例えば表示データ生成部１２３は、第二入力エリア２３０において複数のメインタスクのアイコン２３２が上記第一方向に沿って並んでいる場合に、当該複数のアイコン２３２の並び順に従った実行順序を保持するように第二条件を設定し、第二入力エリア２３０において複数のメインタスクのアイコン２３２が上記第二方向に沿って並んでいる場合に、当該複数のメインタスクの実行順序を未定とするように第二条件を設定する。以上で第二条件の設定手順が完了する。プログラミング支援装置４は、プログラミング支援画面２００が閉じられるまで以上の手順を繰り返す。
【００７３】
（動作プログラムの生成手順）
図１０に示すように、プログラミング支援装置４は、まずステップＳ７１を実行する。ステップＳ７１では、プログラム生成部１４０が、プランニング実行ボタン２４１の操作（例えばクリック又はタップ）を待機する。
【００７４】
次に、プログラミング支援装置４はステップＳ７２，Ｓ７３を順に実行する。ステップＳ７２では、順序設定部１４２が、第二条件において実行順序が未定となっている複数のメインタスクの実行順序を設定する。例えば順序設定部１４２は、各サブタスクが上記開始条件を満たすように、当該複数のメインタスクの実行順序を設定する。順序設定部１４２は、実行順序が未定の複数のメインタスクの少なくとも一部が並行するように、当該複数のメインタスクの実行順序を設定してもよい。ステップＳ７３では、ロボット設定部１４１が、第一条件において実行用のロボット２が未定となっているサブタスクの実行用のロボット２を設定する。ロボット設定部１４１は、実行用のロボット２が未定の複数のサブタスクが並行するように実行順序が設定される場合に、当該複数のサブタスクの実行用に複数台のロボット２をそれぞれ設定する。
【００７５】
次に、プログラミング支援装置４はステップＳ７４，Ｓ７５，Ｓ７６を順に実行する。ステップＳ７４では、パス設定部１４３が、実行対象のサブタスク同士の間の上記エアカットパスをロボット２ごとに設定する。ステップＳ７５では、待機時間設定部１４４が、複数台のロボット２同士の動作タイミングを調整するための上記待機時間をロボット２ごとに設定する。ステップＳ７６では、評価値算出部１４５が、予め設定された評価条件に基づいて、順序設定部１４２、ロボット設定部１４１、パス設定部１４３及び待機時間設定部１４４による設定内容の評価値を算出する。
【００７６】
次に、プログラミング支援装置４はステップＳ７７を実行する。ステップＳ７７では、採否判定部１４６が、評価値算出部１４５により算出された評価値と、演算レベル入力部２４２に入力された演算レベルとに基づいて、順序設定部１４２、ロボット設定部１４１、パス設定部１４３及び待機時間設定部１４４による設定内容の採用可否を判定する。例えば採否判定部１４６は、評価値が所定の合格ラインに到達している場合に上記設定内容を採用可とし、評価値が当該合格ラインに到達していない場合に上記設定内容を採用不可とする。採否判定部１４６は、演算レベル入力部２４２に入力された演算レベルに従って、上記合格ラインを変更する。
【００７７】
ステップＳ７７において、順序設定部１４２、ロボット設定部１４１、パス設定部１４３及び待機時間設定部１４４による設定内容を採用不可と判定した場合、プログラミング支援装置４は処理をステップＳ７２に戻す。以後、設定内容を採用可と判定するまで、実行順序の設定、実行主体の設定、エアカットパスの設定、及び待機時間の設定が繰り返される。
【００７８】
ステップＳ７７において、順序設定部１４２、ロボット設定部１４１、パス設定部１４３及び待機時間設定部１４４による設定内容を採用可と判定した場合、プログラミング支援装置４はステップＳ７８，Ｓ７９を順に実行する。ステップＳ７８では、採否判定部１４６が、採用可と判定した設定内容に従う動作プログラムを動作プログラム記憶部１１４に保存する。ステップＳ７９では、表示データ生成部１２４が、採否判定部１４６によって採用可と判定された設定内容に従い、結果表示部２４３，２４４の表示用データを生成してモニタ２０に出力する。例えば表示データ生成部１２４は、採否判定部１４６が動作プログラム記憶部１１４に保存した動作プログラムを一サイクル実行するのに要する時間を生成する。また、表示データ生成部１２４は、採否判定部１４６が動作プログラム記憶部１１４に保存した動作プログラムに従って、サブタスクの実行時間と、エアカットパスに従った移動時間と、待機時間とをロボット２ごとに示すタイムチャート２５０の表示用データを生成する。以上で動作プログラムの生成手順が完了する。プログラミング支援装置４は、プログラミング支援画面２００が閉じられるまで以上の手順を繰り返す。
【００７９】
なお、プログラミング支援装置４は、ステップＳ７２，Ｓ７３，Ｓ７４，Ｓ７５，Ｓ７６を所定期間繰り返した後に、最も好ましい評価値が得られた設定内容を採用可と判定してもよい。この場合、採否判定部１４６は、演算レベル入力部２４２に入力された演算レベルに従って、上記所定期間を変更する。
【００８０】
（シミュレーション画像の再生手順）
図１１に示すように、プログラミング支援装置４は、まずステップＳ９１，Ｓ９２を順に実行する。ステップＳ９１では、表示データ生成部１２３が、タイムチャート２５０におけるいずれかの期間が新たに選択（例えばクリック又はタップ）されたか否かを確認する。
【００８１】
ステップＳ９１において、いずれかの期間が新たに選択されたと判定した場合、プログラミング支援装置４はステップＳ９２を実行する。ステップＳ９２では、表示データ生成部１２３が、タイムチャート２５０において選択された期間に対応するメインタスクのアイコン２３２を強調表示するように、第二入力エリア２３０の表示用データを更新してモニタ２０に出力する。
【００８２】
次に、プログラミング支援装置４は、ステップＳ９３を実行する。ステップＳ９１において、新たに選択された期間はないと判定した場合、プログラミング支援装置４は、ステップＳ９２を実行することなくステップＳ９３を実行する。ステップＳ９３では、選択中の期間に対して動画再生の指示入力（例えばダブルクリック又はダブルタップ）がなされたか否かを表示データ生成部１２５が確認する。
【００８３】
ステップＳ９３において、動画再生の指示入力はなされていないと判定した場合、プログラミング支援装置４は処理をステップＳ９１に戻す。以後、プログラミング支援装置４は、期間の選択に応じて第二入力エリア２３０の表示を変更しつつ、動画再生の指示入力を待機する。
【００８４】
ステップＳ９３において、動画再生の指示入力がなされたと判定した場合、プログラミング支援装置４はステップＳ９４を実行する。ステップＳ９４では、表示データ生成部１２５が、上記選択中の期間におけるロボット２の動作を示す動画の表示用データを生成してモニタ２０に出力する。以上でシミュレーション画像の再生手順が完了する。プログラミング支援装置４は、プログラミング支援画面２００が閉じられるまで以上の手順を繰り返す。
【００８５】
〔本実施形態の効果〕
プログラミング支援装置４は、ロボット２用のタスクの実行に関する第一条件を、複数のタスク（サブタスク）を含むタスクグループ（メインタスク）ごとに入力するための第一入力エリア２２０の表示用データを生成する表示データ生成部１２２と、複数のタスクグループの実行順序に関する第二条件を入力するための第二入力エリア２３０の表示用データを生成する表示データ生成部１２３と、第一入力エリア２２０への入力に基づいて第一条件を設定する条件設定部１３１と、第二入力エリア２３０への入力に基づいて第二条件を設定する条件設定部１３２と、複数のタスクグループを少なくとも一台のロボット２に実行させるための動作プログラムを第一条件及び第二条件に基づいて生成するプログラム生成部１４０と、を備える。
【００８６】
このプログラミング支援装置４によれば、個々のタスクの実行に関する第一条件と、実行順序に関する第二条件とに整理して所望の条件を入力することが可能となる。また、第一条件及び第二条件のいずれについても、複数のタスクを一まとめにしたタスクグループ単位で入力することが可能となる。このため、所望の条件の入力負担が軽減される。第一条件及び第二条件が入力されると、それらに基づいて動作プログラムが自動生成される。従って、このプログラミング支援装置４はロボット２の動作プログラミングの負担軽減に有効である。
【００８７】
条件設定部１３１は、第一入力エリア２２０において、タスクの実行用のロボット２が指定されている場合には、当該ロボット２に当該タスクを実行させるように第一条件を設定し、第一入力エリア２２０において、タスクの実行用のロボット２が指定されていない場合には、当該タスクの実行用のロボット２を未定とするように第一条件を設定し、プログラム生成部１４０は、第一条件においてタスクの実行用のロボット２が未定となっている場合に、当該タスクの実行用のロボット２を設定するロボット設定部１４１を有していてもよい。この場合、実行用のロボット２を予め指定する入力と、実行用のロボット２の選択をプログラム生成部１４０に委ねる入力とを使い分けることで、条件設定の負担軽減と、プログラムの生成時間短縮との両立を図ることができる。
【００８８】
条件設定部１３２は、第二入力エリア２３０において、実行順序を定めて複数のタスクグループの実行が指定されている場合には、当該実行順序を保持するように第二条件を設定し、第二入力エリア２３０において、実行順序を定めずに複数のタスクグループの実行が指定されている場合には、当該複数のタスクグループの実行順序を未定とするように第二条件を設定し、プログラム生成部１４０は、第二条件において複数のタスクグループの実行順序が未定となっている場合に、当該複数のタスクグループの実行順序を設定する順序設定部１４２を更に有していてもよい。この場合、実行順序を予め指定する入力と、実行順序の設定をプログラム生成部１４０に委ねる入力とを使い分けることで、条件設定の負担軽減と、プログラムの生成時間短縮との両立を図ることができる。
【００８９】
順序設定部１４２は、実行順序が未定の複数のタスクグループの少なくとも一部が並行するように、当該複数のタスクグループの実行順序を設定し、ロボット設定部１４１は、実行用のロボット２が未定の複数のタスクが並行するように実行順序が設定される場合に、当該複数のタスクの実行用に複数台のロボット２をそれぞれ設定してもよい。この場合、タクトタイムの短縮化に寄与する動作プログラムを生成することができる。このため、生成された動作プログラムをタクトタイムの短縮のために調整する作業負担が軽減される。
【００９０】
条件設定部１３２は、第二入力エリア２３０において、複数のタスクグループのアイコン２３２が第一方向に沿って並んでいる場合に、当該複数のタスクグループのアイコン２３２の並び順に従った実行順序を保持するように第二条件を設定し、第二入力エリア２３０において、複数のタスクグループのアイコン２３２が第一方向に交差する第二方向に沿って並んでいる場合に、当該複数のタスクグループの実行順序を未定とするように第二条件を設定してもよい。この場合、実行順序を予め指定する入力と、実行順序の設定をプログラム生成部１４０に委ねる入力とを容易に使い分けられる直感的なインタフェースを提供することができる。
【００９１】
プログラム生成部１４０は、実行対象のタスク同士の間の動作パスをロボット２ごとに設定するパス設定部１４３と、複数台のロボット２同士の動作タイミングを調整するための待機時間をロボット２ごとに設定する待機時間設定部１４４と、予め設定された評価条件に基づいて、ロボット設定部１４１、順序設定部１４２、パス設定部１４３及び待機時間設定部１４４による設定内容の採用可否を判定する採否判定部１４６と、を更に有していてもよい。この場合、タスクの実行用のロボット２の設定、タスクの実行順序の設定に加え、動作パスの生成及び待機時間の設定が自動実行される。更に、予め設定された評価条件に基づいて、タスクの実行用のロボット２の設定結果、タスクの実行順序の設定結果、動作パスの生成結果及び待機時間の設定結果の採用可否が判定される。従って、生成された動作プログラムを調整する作業負担が更に軽減される。
【００９２】
プログラミング支援装置４は、採否判定部１４６によって採用可と判定された設定内容に従って、タスクの実行時間と、動作パスに従った移動時間と、待機時間とをロボット２ごとに示すタイムチャートの表示用データを生成する表示データ生成部１２４を更に備えていてもよい。この場合、生成された動作プログラムを評価し易いインタフェースを提供することができる。このため、生成された動作プログラムを検証する作業負担が軽減される。
【００９３】
プログラミング支援装置４は、タイムチャートにおいて選択された期間におけるロボット２の動作を示す動画の表示用データを生成する表示データ生成部１２５を更に備えていてもよい。この場合、生成された動作プログラムを更に評価し易いインタフェースを提供することができる。このため、生成された動作プログラムを検証する作業負担が更に軽減される。
【００９４】
プログラミング支援装置４は、複数のタスクグループのリストを表示するリスト表示エリアの表示用データを生成する表示データ生成部１２１を更に備え、表示データ生成部１２２は、リスト表示エリアにおいて設定対象として選択されたタスクグループを第一条件の設定対象とするように第一入力エリア２２０の表示用データを更新し、表示データ生成部１２３は、リスト表示エリアにおいて実行対象として選択されたタスクグループを第二条件の設定対象として追加するように第二入力エリア２３０の表示用データを更新してもよい。この場合、第一条件及び第二条件の設定対象となるタスクグループの選択が容易となるので、所望の条件の入力負担が更に軽減される。
【００９５】
以上、実施形態について説明したが、本発明は必ずしも上述した形態に限定されるものではなく、その要旨を逸脱しない範囲で様々な変形が可能である。
【符号の説明】
【００９６】
２…ロボット、４…プログラミング支援装置、１２１…表示データ生成部（第五表示データ生成部）、１２２…表示データ生成部（第一表示データ生成部）、１２３…表示データ生成部（第二表示データ生成部）、１２４…表示データ生成部（第三表示データ生成部）、１２５…表示データ生成部（第四表示データ生成部）、１３１…条件設定部（第一条件設定部）、１３２…条件設定部（第二条件設定部）、１４０…プログラム生成部、１４１…ロボット設定部、１４２…順序設定部、１４３…パス設定部、１４４…待機時間設定部、１４６…採否判定部、２２０…第一入力エリア、２３０…第二入力エリア。
【図１】
2019084664.tif 000003
【図２】
2019084664.tif 000004
【図３】
2019084664.tif 000005
【図４】
2019084664.tif 000006
【図５】
2019084664.tif 000007
【図６】
2019084664.tif 000008
【図７】
2019084664.tif 000009
【図８】
2019084664.tif 000010
【図９】
2019084664.tif 000011
【図１０】
2019084664.tif 000012
【図１１】
2019084664.tif 000013