(57)【要約】【課題】複数台のロボットの動作プログラミングの効率化に有効なプログラミング支援装置、ロボットシステム及びプログラミング支援方法を提供する。【解決手段】プログラミング支援装置１００は、複数のジョブを含む動作プログラムを複数台のロボットごとに記憶するプログラム記憶部１１５と、ユーザにより検証対象時刻が指定された場合に、検証対象時刻において複数台のロボット２が実行するジョブを示すジョブ画像を動作プログラムに基づいて生成するジョブ画像生成部１４３と、を備える。【選択図】図５
2020168666.tif 000002
【特許請求の範囲】
【請求項１】
複数のジョブを含む動作プログラムを複数台のロボットごとに記憶するプログラム記憶部と、
ユーザにより検証対象時刻が指定された場合に、前記検証対象時刻において前記複数台のロボットが実行するジョブを示すジョブ画像を前記動作プログラムに基づいて生成するジョブ画像生成部と、を備えるプログラミング支援装置。
【請求項２】
前記動作プログラムに基づく動作シミュレーションにより前記検証対象時刻における前記複数台のロボットのシミュレーション画像を生成するシミュレーション画像生成部と、
前記ジョブ画像と、前記シミュレーション画像とを含むユーザインタフェースを生成するインタフェース部と、を更に備える請求項１記載のプログラミング支援装置。
【請求項３】
前記ジョブ画像生成部は、前記複数のジョブを実行順に並べたフローチャートと、前記フローチャートのうち前記検証対象時刻において実行される部分を示すマーカとを前記複数台のロボットごとに示すように前記ジョブ画像を生成する、請求項２記載のプログラミング支援装置。
【請求項４】
複数の作業用ジョブの実行順序を前記複数台のロボットごとに設定する実行順序設定部と、
前記実行順序設定部が設定した実行順序に基づいて前記複数の作業用ジョブ間の移動用ジョブを前記複数台のロボットごとに生成するジョブ生成部と、を更に備え、
前記ジョブ画像生成部は、前記複数の作業用ジョブをそれぞれ示す複数の作業シンボルと、前記移動用ジョブを示す移動シンボルとを含む前記フローチャートを前記複数台のロボットごとに示す前記ジョブ画像を生成する、請求項３記載のプログラミング支援装置。
【請求項５】
時間軸を表す方向における位置を示すカーソルを含む時刻指定画像を生成する時刻指定画像生成部と、
前記時刻指定画像における前記カーソルの位置に従って前記検証対象時刻を指定する時刻指定部と、を更に備え、
前記インタフェース部は、前記時刻指定画像を更に含む前記ユーザインタフェースを生成する、請求項４記載のプログラミング支援装置。
【請求項６】
前記複数台のロボットの相対的な動作タイミングを調節するように、前記複数のジョブのそれぞれの実行待機期間を前記複数台のロボットごとに設定する待機期間設定部を更に備え、
前記時刻指定画像生成部は、前記時間軸に沿ってジョブの実行期間とジョブの実行待機期間とを示す経過時間バーを前記複数台のロボットごとに更に含む前記時刻指定画像を生成する、請求項５記載のプログラミング支援装置。
【請求項７】
前記時刻指定画像生成部は、前記経過時間バーにおいて前記作業用ジョブの実行期間と前記移動用ジョブの実行期間とを更に示すように前記時刻指定画像を生成する、請求項６記載のプログラミング支援装置。
【請求項８】
前記ジョブ画像における入力に応じて前記移動用ジョブの生成条件を個別に変更する生成条件変更部を更に備え、
前記ジョブ生成部は、前記生成条件変更部による変更後の生成条件に対応する前記移動用ジョブを当該変更後の生成条件に基づいて再生成する、請求項４〜７のいずれか一項記載のプログラミング支援装置。
【請求項９】
前記実行順序設定部は、前記ジョブ画像において前記作業用ジョブを移動させる入力に応じて少なくとも１台のロボットの前記実行順序を再設定し、
前記ジョブ生成部は、前記実行順序設定部により再設定された前記実行順序に応じて少なくとも１つの前記移動用ジョブを再生成する、請求項４〜８のいずれか一項記載のプログラミング支援装置。
【請求項１０】
前記実行順序設定部は、前記ジョブ画像において２つの前記フローチャート間で前記作業用ジョブを移動させる入力に応じて、当該作業用ジョブの移動に関わる２台のロボットの前記実行順序を再設定し、
前記ジョブ生成部は、前記実行順序設定部により再設定された前記実行順序に応じて少なくとも１つの前記移動用ジョブを前記２台のロボットごとに再生成する、請求項９記載のプログラミング支援装置。
【請求項１１】
前記実行順序設定部による前記実行順序の再設定に応じて前記移動用ジョブの再生成が必要となる要修正箇所と、前記移動用ジョブの再生成が不要な修正不要箇所とを認識する修正箇所認識部を更に備え、
前記ジョブ生成部は、前記修正不要箇所の前記移動用ジョブを再生成せずに、前記要修正箇所の前記移動用ジョブを再生成する、請求項９又は１０記載のプログラミング支援装置。
【請求項１２】
前記実行順序設定部は、前記ジョブ画像において前記作業用ジョブを移動させる入力に応じて少なくとも１台のロボットの前記実行順序を再設定し、
前記ジョブ生成部は、前記実行順序設定部により再設定された前記実行順序に応じて少なくとも１つの前記移動用ジョブを再生成し、
前記待機期間設定部は、前記実行順序設定部により再設定された前記実行順序と、前記ジョブ生成部により再生成された前記移動用ジョブとに基づいて、前記複数のジョブのそれぞれの実行待機期間を前記複数台のロボットごとに再設定し、
前記時刻指定画像生成部は、前記実行順序設定部により再設定された実行順序と、前記ジョブ生成部により再生成された移動用ジョブと、前記待機期間設定部により再設定された実行待機期間とに基づいて前記経過時間バーを更新する、請求項７記載のプログラミング支援装置。
【請求項１３】
前記複数台のロボットごとの動作の制約条件に基づいて、前記作業用ジョブの実行可否を判定する実行可否判定部を更に備える、請求項９〜１２のいずれか一項記載のプログラミング支援装置。
【請求項１４】
予め設定された作業用ジョブ間の依存関係を記憶する依存関係記憶部を更に備え、
前記実行可否判定部は、前記依存関係に更に基づいて前記作業用ジョブの実行可否を判定する、請求項１３記載のプログラミング支援装置。
【請求項１５】
請求項１〜１４のいずれか一項記載のプログラミング支援装置と、
前記複数台のロボットと、
前記動作プログラムに従って前記複数台のロボットを制御するコントローラと、を備えるロボットシステム。
【請求項１６】
複数のジョブをそれぞれ含む動作プログラムを複数台のロボットごとに記憶することと、
ユーザにより検証対象時刻が指定された場合に、前記検証対象時刻において前記複数台のロボットが実行するジョブを示すジョブ画像を前記動作プログラムに基づいて生成することと、を含むプログラミング支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、プログラミング支援装置、ロボットシステム及びプログラミング支援方法に関する。
【背景技術】
【０００２】
特許文献１には、実行主体を複数含むアクションを実行主体ごとに複数のアクションに分割する分割部と、分割部によって分割されたアクションを含む複数のアクション間の依存関係を表す依存情報に基づき、複数のアクションのうち実行主体が一致する複数のアクションの少なくとも一つの開始タイミングを調整する調整部と、を備える作業計画装置が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１６−５９９８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本開示は、複数台のロボットの動作プログラミングの効率化に有効なプログラミング支援装置、ロボットシステム及びプログラミング支援方法を提供する。
【課題を解決するための手段】
【０００５】
本開示の一側面に係るプログラミング支援装置は、複数のジョブを含む動作プログラムを複数台のロボットごとに記憶するプログラム記憶部と、ユーザにより検証対象時刻が指定された場合に、検証対象時刻において複数台のロボットが実行するジョブを示すジョブ画像を動作プログラムに基づいて生成するジョブ画像生成部と、を備える。
【０００６】
本開示の他の側面に係るロボットシステムは、上記のプログラミング支援装置と、複数台のロボットと、動作プログラムに従って複数台のロボットを制御するコントローラと、を備える。
【０００７】
本開示の更に他の側面に係るプログラミング支援方法は、複数のジョブをそれぞれ含む動作プログラムを複数台のロボットごとに記憶することと、ユーザにより検証対象時刻が指定された場合に、検証対象時刻において複数台のロボットが実行するジョブを示すジョブ画像を動作プログラムに基づいて生成することと、を含む。
【発明の効果】
【０００８】
本開示によれば、複数台のロボットの動作プログラミングの効率化に有効なプログラミング支援装置、ロボットシステム及びプログラミング支援方法を提供することができる。
【図面の簡単な説明】
【０００９】
【図１】ロボットシステムの全体構成を示す模式図である。
【図２】プログラミング支援装置と機能的に等価な構成を例示するブロック図である。
【図３】ユーザインタフェース画面を例示する模式図である。
【図４】プログラム生成部の構成を例示するブロック図である。
【図５】プログラム検証支援部の構成を例示するブロック図である。
【図６】シミュレータの構成を例示するブロック図である。
【図７】プログラミング支援装置のハードウェア構成を例示するブロック図である。
【図８】依存関係の登録手順を例示するフローチャートである。
【図９】実行順序の設定手順を例示するフローチャートである。
【図１０】プログラム生成手順を例示するフローチャートである。
【図１１】移動用ジョブ生成手順を例示するフローチャートである。
【図１２】移動用ジョブ生成手順の変形例を示すフローチャートである。
【図１３】待機期間の設定手順を例示するフローチャートである。
【図１４】実行順序の再設定手順を例示するフローチャートである。
【図１５】生成条件の変更手順を例示するフローチャートである。
【図１６】時刻指定画像の表示手順を例示するフローチャートである。
【図１７】ジョブ画像の表示手順を例示するフローチャートである。
【図１８】動作再生手順を例示するフローチャートである。
【発明を実施するための形態】
【００１０】
以下、実施形態について、図面を参照しつつ詳細に説明する。説明において、同一要素又は同一機能を有する要素には同一の符号を付し、重複する説明を省略する。
【００１１】
〔ロボットシステム〕
本実施形態に係るロボットシステムは、オペレータにより教示された動作をロボットに実行させることにより、加工、組立等の様々な作業を自動化するシステムである。図１に示すように、ロボットシステム１は、複数台のロボット２と、複数のロボットコントローラ３と、プログラミング支援装置１００とを備える。
【００１２】
ロボット２は、例えばシリアルリンク型の多関節ロボットであり、その先端部１２に作業ツールを保持して様々な作業を実行する。ロボット２は、例えば６軸の垂直多関節ロボットであり、基部１１と、先端部１２と、多関節アーム１３とを有する。
【００１３】
基部１１は、ロボット２用の作業エリアにおいて、例えば床面に設置されている。多関節アーム１３は、基部１１及び先端部１２を接続する。多関節アーム１３は複数の関節を有し、当該複数の関節の角度を変更することで基部１１に対する先端部１２の位置及び姿勢を変更する。例えば多関節アーム１３は、旋回部２１と、下アーム２２と、上アーム２３と、手首部２４と、モータ４１，４２，４３，４４，４５，４６とを有する。
【００１４】
旋回部２１は、鉛直な軸線Ａｘ１まわりに旋回可能となるように、基部１１の上部に設けられている。すなわち多関節アーム１３は、軸線Ａｘ１まわりに旋回部２１を旋回可能とする関節３１を有する。
【００１５】
下アーム２２は、軸線Ａｘ１に交差（例えば直交）する軸線Ａｘ２まわりに揺動可能となるように旋回部２１に接続されている。すなわち多関節アーム１３は、軸線Ａｘ２まわりに下アーム２２を揺動可能とする関節３２を有する。なお、ここでの交差とは、所謂立体交差のように、互いにねじれの関係にある場合も含む。以下においても同様である。
【００１６】
上アーム２３は、軸線Ａｘ１に交差する軸線Ａｘ３まわりに揺動可能となるように、下アーム２２の端部に接続されている。すなわち多関節アーム１３は、軸線Ａｘ３まわりに上アーム２３を揺動可能とする関節３３を有する。軸線Ａｘ３は軸線Ａｘ２に平行であってもよい。
【００１７】
上アーム２３の先端部２６は、上アーム２３の中心に沿う軸線Ａｘ４まわりに旋回可能となっている。すなわち多関節アーム１３は、軸線Ａｘ４まわりに上アーム２３の先端部２６を旋回可能とする関節３４を有する。換言すると、上アーム２３の先端部２６は、基部２５に対して旋回可能である。
【００１８】
手首部２４は、軸線Ａｘ４に交差（例えば直交）する軸線Ａｘ５まわりに揺動可能となるように上アーム２３の先端部２６に接続されている。すなわち多関節アーム１３は、軸線Ａｘ５まわりに手首部２４を揺動可能とする関節３５を有する。
【００１９】
先端部１２は、手首部２４の中心に沿う軸線Ａｘ６まわりに旋回可能となるように、手首部２４の先端部に接続されている。すなわち多関節アーム１３は、軸線Ａｘ６まわりに先端部１２を旋回可能とする関節３６を有する。
【００２０】
モータ４１，４２，４３，４４，４５，４６は、電力の供給に応じて多関節アーム１３の複数の可動部をそれぞれ駆動する。例えばモータ４１は、軸線Ａｘ１まわりに旋回部２１を旋回させ、モータ４２は軸線Ａｘ２まわりに下アーム２２を揺動させ、モータ４３は軸線Ａｘ３まわりに上アーム２３を搖動させ、モータ４４は軸線Ａｘ４まわりに上アーム２３の先端部２６を旋回させ、モータ４５は軸線Ａｘ５まわりに手首部２４を揺動させ、モータ４６は軸線Ａｘ６まわりに先端部１２を旋回させる。すなわちモータ４１〜４６は、関節３１〜３６をそれぞれ駆動する。
【００２１】
なお、上述したロボット２の構成はあくまで一例である。ロボット２は、基部１１に対する先端部１２の位置及び姿勢を調節し得る限りいかに構成されていてもよい。例えばロボット２は、上記６軸の垂直多関節ロボットに冗長軸を追加した７軸のロボットであってもよい。また、ロボット２は所謂スカラー型のロボットであってもよく、パラレルリンク型のロボットであってもよい。
【００２２】
複数のロボットコントローラ３は、予め定められた動作プログラムに従って複数台のロボット２をそれぞれ制御する。例えばロボットコントローラ３は、モータ４１，４２，４３，４４，４５，４６の位置・速度を制御するためのドライバ回路と、通信ポートとを有する制御用コンピュータである。
【００２３】
動作プログラムは、時系列に並ぶ複数の動作命令を含む。各動作命令は、先端部１２の目標位置・目標姿勢と、現在位置・現在姿勢から目標位置・目標姿勢までの移動速度と、現在位置・現在姿勢から目標位置・目標姿勢までの補間方式とを含む。補間方式の具体例としては、先端部１２の現在位置・現在姿勢と先端部１２の目標位置・目標姿勢との間を線形又はＳ字形等に補間する方式、先端部１２の現在位置・現在姿勢に対応する関節角度（関節３１，３２，３３，３４，３５，３６の動作角度）と先端部１２の目標位置・目標姿勢に対応する関節角度との間を線形又はＳ字形等に補間する方式等が挙げられる。
【００２４】
プログラミング支援装置１００は、上述した動作プログラムの生成を支援する装置である。プログラミング支援装置１００は、複数のジョブをそれぞれ含む動作プログラムを複数台のロボット２ごとに記憶することと、ユーザにより検証対象時刻が指定された場合に、検証対象時刻において複数台のロボット２が実行するジョブを示すジョブ画像を動作プログラムに基づいて生成することと、を実行するように構成されている。
【００２５】
プログラミング支援装置１００は、複数のジョブを実行順に並べたフローチャートと、フローチャートのうち検証対象時刻において実行される部分を示すマーカとを複数台のロボット２ごとに示すようにジョブ画像を生成してもよい。ジョブ画像は、検証対象時刻において複数台のロボット２が実行するジョブをユーザに認識させられる限りいかなる画像であってもよいので、検証対象時刻において複数台のロボット２が実行するジョブのＩＤを並べて表示する画像であってもよい。
【００２６】
プログラミング支援装置１００は、動作プログラムに基づく動作シミュレーションにより検証対象時刻における複数台のロボット２のシミュレーション画像を生成することと、ジョブ画像と、シミュレーション画像とを含むユーザインタフェースを生成することとを更に実行するように構成されていてもよい。
【００２７】
プログラミング支援装置１００は、時間軸を表す方向における位置を示すカーソルを含む時刻指定画像を生成することと、時刻指定画像におけるカーソルの位置に従って検証対象時刻を指定することとを更に実行し、時刻指定画像を更に含むユーザインタフェースを生成するように構成されていてもよい。
【００２８】
図２は、プログラミング支援装置１００と機能的に等価な構成を示すブロック図である。以下、図２が示す各ブロックを「機能ブロック」という。図２に示すように、プログラミング支援装置１００は、機能ブロックとして、ジョブ情報記憶部１１２と、ジョブ情報取得部１１１と、依存関係設定部１１３と、依存関係記憶部１１４と、インタフェース部１２０と、プログラム生成部１３０と、プログラム記憶部１１５と、プログラム検証支援部１４０と、シミュレータ１５０とを有する。
【００２９】
ジョブ情報記憶部１１２は、ロボット２用の複数の作業用ジョブを記憶している。作業用ジョブは、動作プログラムの１パーツとして取り扱われるプログラムであり、少なくとも１つの動作命令を含む。作業用ジョブは、時系列に並ぶ複数の動作命令を含んでいてもよい。
【００３０】
例えば作業用ジョブは、ロボット２に実行させる単位作業ごとに設定されている。単位作業の具体例としては、一本のラインに沿った溶接のように、連続した一動作で完了する作業が挙げられる。単位作業は、隣り合う複数個所へのスポット溶接のように、不連続な複数の作業を含んでいてもよい。作業用ジョブが含む動作命令の数に制限はない。また、個々の動作命令の実行時間は、移動距離及び移動速度に応じて変動する。従って、ジョブ情報記憶部１１２が記憶する複数の作業用ジョブの実行時間は不均一である。作業用ジョブは、ロボット２に対するティーチング作業等によって、当該ロボット２のロボットコントローラ３が生成し、記憶している。
【００３１】
ジョブ情報取得部１１１は、複数のロボットコントローラ３のそれぞれが記憶する作業用ジョブを取得し、作業用ジョブの識別情報と作業用ジョブの内容とを対応付けてジョブ情報記憶部１１２に登録する。
【００３２】
インタフェース部１２０は、動作プログラムの生成を支援するために、所謂グラフィカルユーザインタフェース（ＧＵＩ）を構成する。例えばインタフェース部１２０は、複数のグラフィカル要素を含むユーザインタフェース画面を表示デバイスに表示し、グラフィカル要素に対する選択・移動等の操作情報を取得する。
【００３３】
図３は、インタフェース部１２０が表示するユーザインタフェース画面を例示する模式図である。図３に示すように、インタフェース部１２０が表示するユーザインタフェース画面２００は、依存関係入力ボタン２１１と、フロー作成ボタン２１２と、プログラム作成ボタン２１３と、フロー表示ウィンドウ２２０と、シミュレーションウィンドウ２４０と、タイムラインウィンドウ２３０とを含む。
【００３４】
依存関係入力ボタン２１１は、ジョブ情報記憶部１１２が記憶する複数の作業用ジョブごとに、依存関係の設定を開始するためのボタンである。フロー作成ボタン２１２は、複数の作業用ジョブの実行順序を定めるフローチャートの作成を開始するためのボタンである。プログラム作成ボタン２１３は、上記フローチャートに従った動作プログラムの作成を指示するためのボタンである。
【００３５】
フロー表示ウィンドウ２２０は、複数のジョブを実行順に並べたフローチャートと、フローチャートのうち検証対象時刻において実行される部分を示すマーカとを複数台のロボット２ごとに示すジョブ画像を表示するウィンドウである。各フローチャートは、複数の作業用ジョブをそれぞれ示す複数の作業シンボルと、複数の移動用ジョブをそれぞれ示す複数の移動シンボルとを含む。例えば各フローチャートは、スタートポイント２２１と、複数の作業用ジョブをそれぞれ示す複数の作業ブロック２２２（作業シンボル）と、複数の移動用ジョブをそれぞれ示す複数の移動ライン２２３（移動シンボル）と、エンドポイント２２４とを含む。
【００３６】
スタートポイント２２１は、先端部１２を所定の動作開始位置及び動作開始姿勢に配置する作業用ジョブを示している（以下、「動作開始ジョブ」という。）。エンドポイント２２４は、先端部１２を所定の動作終了位置及び動作終了姿勢に配置する作業用ジョブを示している（以下、「動作終了ジョブ」という。）。動作終了位置及び動作終了姿勢は、動作開始位置及び動作開始姿勢と同じであってもよい。
【００３７】
複数の作業ブロック２２２は、実行順序に従った並び順でスタートポイント２２１からエンドポイント２２４に向かって並んでいる。複数の移動ライン２２３は、スタートポイント２２１と最初の作業ブロック２２２とを接続する移動ライン２２３と、隣り合う作業ブロック２２２同士を接続する移動ライン２２３と、最後の作業ブロック２２２とエンドポイント２２４とを接続する移動ライン２２３とを含んでいる。いずれの移動ライン２２３も、時系列に並ぶ２つの作業用ジョブ間の移動用ジョブを示す。
【００３８】
マーカ２２５は、例えばフローチャートの隣に矢印状に図示され、フローチャートにおいて検証対象時刻に実行される部分を指し示す。なお、検証対象時刻に実行される作業ブロック２２２又は移動ライン２２３を色彩、明るさ、太さ等により強調表示することによっても、検証対象時刻において実行される部分を示すことができる。この場合、強調表示される作業ブロック２２２又は移動ライン２２３自体がマーカとして機能する。
【００３９】
シミュレーションウィンドウ２４０は、検証対象時刻における複数台のロボット２のシミュレーション画像を表示するウィンドウである。シミュレーション画像は、検証対象時刻における位置及び姿勢にてロボット２を図示するロボット画像２４１と、検証対象時刻における位置及び姿勢にてワークを図示するワーク画像２４２とを含む。シミュレーション画像は、冶具、搬送装置等のロボット２の周辺物体を図示する画像を更に含んでいてもよい。
【００４０】
タイムラインウィンドウ２３０は、検証対象時刻を指定するための時刻指定画像を表示する。タイムラインウィンドウ２３０の時刻指定画像は、複数台のロボット２ごとの経過時間バー２３１と、カーソル２３２と、再生ボタン２３３と、停止ボタン２３４と、総時間表示部２３５とを含む。
【００４１】
経過時間バー２３１は、時間軸を表す方向（図３においては上下方向）に沿うように図示され、当該方向に沿った長さによって時間の長さを示す。経過時間バー２３１は、作業用ジョブの実行期間を示す作業期間表示部２３６と、移動用ジョブの実行期間を示す移動期間表示部２３７と、ジョブの実行待機期間を示す待機期間表示部２３８とを含む。
【００４２】
カーソル２３２は、上記時間軸を表す方向における位置によって検証対象時刻を指定する。図３のカーソル２３２は、全ての経過時間バー２３１を横切るライン状に図示されているが、これに限られない。カーソル２３２は、時間軸を表す方向における位置を示し得る限りいかようにも図示可能である。例えばカーソル２３２は、経過時間バー２３１と並べて矢印状又は点状に図示されてもよい。
【００４３】
再生ボタン２３３は、所定速度でのカーソル２３２の移動を指示するためのボタンである。カーソル２３２の移動により、フロー表示ウィンドウ２２０においてはマーカ２２５が移動し、シミュレーションウィンドウ２４０においてはロボット画像２４１及びワーク画像２４２等が動画表示されることとなる。停止ボタン２３４は、カーソル２３２の移動の停止を指示するためのボタンである。総時間表示部２３５は、動作プログラムの実行に要する時間を示す。
【００４４】
なお、図３においては、フロー表示ウィンドウ２２０に２つのフローチャートが図示され、タイムラインウィンドウ２３０に２つの経過時間バー２３１が図示され、シミュレーションウィンドウ２４０に２つのロボット画像２４１が図示されているが、これらはロボット２の台数に応じて適宜変更される。また、図３におけるフロー表示ウィンドウ２２０、タイムラインウィンドウ２３０、シミュレーションウィンドウ２４０のレイアウトはあくまで一例であり、適宜変更可能である。フロー表示ウィンドウ２２０とシミュレーションウィンドウ２４０とは、タブの選択によって切り替わるように重複表示されてもよい。タイムラインウィンドウ２３０は、時間軸が横方向になるように図示されてもよい。
【００４５】
図２に戻り、依存関係設定部１１３は、上記依存関係入力ボタン２１１が押されるのに応じて依存関係入力用の画像をインタフェース部１２０に表示させ、当該画像への入力に従って作業用ジョブ間の依存関係を設定する。作業用ジョブ間の依存関係とは、いずれかの作業用ジョブを実行するために満たされるべき他の作業用ジョブとの実行タイミングの関係を意味する。実行タイミングの関係は、例えば作業用ジョブ間の先行関係と、作業用ジョブ間のインターバルとを含む。例えば依存関係設定部１１３は、作業用ジョブごとに、先行して実行しておくべき他の作業用ジョブ（以下、「要先行ジョブ」という。）の識別情報と、要先行ジョブの後に設けるべきインターバルとを設定する。要先行ジョブは２つ以上であってもよい。
【００４６】
より具体的に、依存関係設定部１１３は、依存関係入力ボタン２１１が押されるのに応じて作業用ジョブの選択画像（以下、「対象選択画像」という。）をインタフェース部１２０に表示させ、対象選択画像で選択された作業用ジョブ（以下、「対象ジョブ」という。）の依存関係入力画像をインタフェース部１２０に表示させ、依存関係入力画像への入力に従って対象ジョブに関する依存関係を設定する。依存関係入力画像は、要先行ジョブと、要先行ジョブの後に設けるべきインターバルとを入力するための画像であり、２以上の要先行ジョブを指定し得るように構成されていてもよい。依存関係記憶部１１４は、依存関係設定部１１３により予め設定された作業用ジョブ間の依存関係を記憶する。
【００４７】
プログラム生成部１３０は、インタフェース部１２０がユーザインタフェース画面２００から取得する情報に基づいて複数のジョブを含む動作プログラムを複数台のロボット２ごとに生成する。プログラム記憶部１１５は、プログラム生成部１３０が生成した動作プログラムを複数台のロボット２ごとに記憶する。
【００４８】
プログラム検証支援部１４０は、検証対象時刻において複数台のロボット２が実行するジョブを示すジョブ画像を動作プログラムに基づいて生成することと、当該動作プログラムに基づく動作シミュレーションにより検証対象時刻における複数台のロボット２のシミュレーション画像を生成することとを実行する。
【００４９】
例えばプログラム検証支援部１４０は、検証対象時刻においてロボット２が実行するジョブをプログラム記憶部１１５が記憶する動作プログラムに基づいて認識し、認識結果をインタフェース部１２０に出力してフロー表示ウィンドウ２２０のジョブ画像を更新させる。また、プログラム検証支援部１４０は、プログラム記憶部１１５が記憶する動作プログラムに基づく動作シミュレーションにより検証対象時刻における複数台のロボット２のシミュレーション画像を生成し、インタフェース部１２０に出力してシミュレーションウィンドウ２４０のシミュレーション画像を更新させる。
【００５０】
シミュレータ１５０は、上記動作シミュレーションを実行する。シミュレータ１５０は、ロボット２の配置、構造及び各部寸法等を示すモデルデータを保持し、モデルデータと先端部１２の目標位置・目標姿勢に応じた関節３１，３２，３３，３４，３５，３６の角度を逆運動学演算により算出する。また、シミュレータ１５０は、関節３１，３２，３３，３４，３５，３６の角度に基づいて、衝突有無の判定及びシミュレーション画像の生成も行う。
【００５１】
以下、プログラム生成部１３０、プログラム検証支援部１４０、及びシミュレータ１５０の構成を詳細に例示する。図４に示すように、プログラム生成部１３０は、機能ブロックとして、実行順序設定部１３１と、実行可否判定部１３２と、生成条件設定部１３３と、生成条件記憶部１３４と、移動ジョブ生成部１３５と、待機期間設定部１３６と、生成条件変更部１３７と、修正箇所認識部１３８とを有する。
【００５２】
実行順序設定部１３１は、ユーザインタフェース画面２００への入力に基づいて複数の作業用ジョブの実行順序を複数台のロボット２ごとに設定する。例えば実行順序設定部１３１は、上記フロー作成ボタン２１２が押されるのに応じて、作業用ジョブの選択画像（以下、「実行ジョブ選択画像」という。）をインタフェース部１２０に表示させる。
【００５３】
実行ジョブ選択画像は、実行すべき複数の作業用ジョブ（以下、「実行ジョブ」という。）と、複数の実行ジョブの実行順序とをロボット２ごとに入力するための画像である。実行順序設定部１３１は、実行ジョブ選択画像への入力に従って、複数の実行ジョブの実行順序をロボット２ごとに設定する。
【００５４】
実行可否判定部１３２は、複数台のロボット２ごとの動作の制約条件と、依存関係記憶部１１４が記憶する依存関係とに基づいて、実行順序設定部１３１が設定した実行順序（以下、「設定順序」という。）による複数の実行ジョブの実行可否をロボット２ごとに判定する。動作の制約条件の具体例としては、関節３１，３２，３３，３４，３５，３６の可動角等が挙げられる。可動角は、許容される最大の動作角度である。
【００５５】
例えば実行可否判定部１３２は、実行ジョブに従って先端部１２を移動させるための関節３１，３２，３３，３４，３５，３６の動作角度をシミュレータ１５０に算出させ、算出結果が可動角以内であるか否かの判定結果をシミュレータ１５０から取得する。実行可否判定部１３２は、シミュレータ１５０により関節３１，３２，３３，３４，３５，３６の動作角度が可動角を超えていると判定された場合に、設定順序による複数の実行ジョブの実行は不可能であると判定する。
【００５６】
また、実行可否判定部１３２は、いずれかの実行ジョブに対する上記要先行ジョブが、当該実行ジョブよりも前に存在していない場合にも、設定順序による複数の実行ジョブの実行は不可能であると判定する。
【００５７】
なお、ロボット２の実行ジョブに対する要先行ジョブが他のロボット２により実行される場合、他のロボット２との動作タイミングの調節によって、当該実行ジョブは時刻指定部１４２が記憶する依存関係を満たし得る。そこで実行可否判定部１３２は、いずれかの実行ジョブに対する上記要先行ジョブが、当該実行ジョブを実行するロボット２の他のロボット２の実行ジョブとなっている場合には、当該実行ジョブは依存関係を満たすと判定してもよい。
【００５８】
実行可否判定部１３２は、いずれかのロボット２において設定順序による複数の実行ジョブの実行が不可能であると判定した場合、どの実行ジョブがどの条件を満たしていないのかを示す情報を含むエラーメッセージをインタフェース部１２０に表示させる。一方、実行可否判定部１３２は、いずれのロボット２においても設定順序による複数の実行ジョブの実行が可能であると判定した場合、複数のロボット２ごとのフローチャートを、設定順序に従ってインタフェース部１２０によりフロー表示ウィンドウ２２０に表示させる。
【００５９】
また、実行可否判定部１３２は、複数のロボット２ごとに、複数の実行ジョブを設定順序に従って上記動作開始ジョブと上記動作終了ジョブとの間に挿入したプログラムを動作プログラムとしてプログラム記憶部１１５に保存する。これにより、実行ジョブ間を最短距離で移動する動作プログラムが仮生成される。
【００６０】
生成条件設定部１３３は、仮生成された動作プログラムにおいて、作業用ジョブ（実行ジョブ）間の移動区間のそれぞれについて、移動用ジョブの生成条件を予め設定された初期条件に設定する。移動用ジョブの生成条件の具体例としては、移動用ジョブの候補として生成するジョブ（以下、「候補ジョブ」という。）の数と候補ジョブの選択条件とを定める条件（以下、これを「第１種の条件」という。）が挙げられる。
【００６１】
選択条件の具体例としては、移動用ジョブの特性（移動時間、移動距離、又は移動中の消費電力等）の評価ポイントが最高であることが挙げられる。評価ポイントは、１種の特性のみに基づくポイントであってもよいし、複数種の特性に基づくポイントであってもよい。
【００６２】
移動用ジョブの生成条件の他の例としては、移動用ジョブの特性の評価ポイントの採用閾値を定める条件（以下、これを「第２種の条件」という。）が挙げられる。更に、候補ジョブの生成の繰り返し時間又は回数と、候補ジョブの選択条件とを定める条件（以下、これを「第３種の条件」という。）も挙げられる。これらの生成条件のうち２種以上を組み合わせてもよい。
【００６３】
生成条件記憶部１３４は、生成条件設定部１３３が設定した生成条件を移動区間ごとに記憶する。
【００６４】
移動ジョブ生成部１３５（ジョブ生成部）は、実行順序設定部１３１が設定した実行順序に基づいて複数の作業用ジョブ間の移動用ジョブを複数台のロボット２ごとに生成する。例えば移動ジョブ生成部１３５は、上記移動区間ごとに、生成条件記憶部１３４が記憶する生成条件に従って移動用ジョブを生成する。
【００６５】
例えば移動ジョブ生成部１３５は、先行する作業用ジョブの終点（最後の動作命令の目標位置及び目標姿勢）と、後続する作業用ジョブの始点（最初の動作命令の目標位置及び目標姿勢）との間を結び、ロボット２とワーク及び周辺物体との衝突を回避するように移動ジョブを生成する。一例として、移動ジョブ生成部１３５は、衝突を回避可能な経由点を生成し、当該経由点を通るように移動用ジョブを修正することを、移動用ジョブ全体にわたって衝突回避が可能となるまで繰り返す。
【００６６】
移動ジョブ生成部１３５は、移動用ジョブの生成に際し、ロボット２とワーク及び周辺物体との衝突有無の判定をシミュレータ１５０に実行させる。なお、移動用ジョブの生成手法は、例えば特許第４１０３０５７号等にも詳細に開示されている。
【００６７】
生成条件記憶部１３４が記憶する生成条件が上記第１種の条件である場合、移動ジョブ生成部１３５は、上述した生成手法により、第１種の条件で定められた数の候補ジョブを生成し、第１種の条件で定められた選択条件に従っていずれかの候補ジョブを移動用ジョブとして選択する。
【００６８】
生成条件記憶部１３４が記憶する生成条件が上記第２種の条件である場合、移動ジョブ生成部１３５は、移動用ジョブの特性の評価ポイントが第２種の条件で定められた採用閾値を超えるまで上述した生成手法による移動用ジョブの生成を繰り返す。
【００６９】
生成条件記憶部１３４が記憶する生成条件が上記第３種の条件である場合、移動ジョブ生成部１３５は、第３種の条件で定められた時間又は回数に達するまで候補ジョブの生成を繰り返し、第３種の条件で定められた選択条件に従っていずれかの候補ジョブを移動用ジョブとして選択する。
【００７０】
待機期間設定部１３６は、複数台のロボット２の相対的な動作タイミングを調節するように、複数のジョブ（作業用ジョブ及び移動用ジョブを含む）のそれぞれの実行待機期間を複数台のロボット２ごとに設定する。例えば待機期間設定部１３６は、いずれかのロボット２の作業用ジョブに対し、他のロボット２の動作プログラムが要先行ジョブを含んでいる場合に、待機期間設定部１３６は、当該作業用ジョブが要先行ジョブの後に開始されるように当該作業用ジョブの待機期間を設定する。
【００７１】
また待機期間設定部１３６は、２台のロボット２が同時にジョブを実行すると衝突する場合に、これらのジョブを順番に実行させるように、いずれか一方のロボット２のジョブの待機期間を設定する。待機期間設定部１３６は、ロボット２間における衝突有無の判定をシミュレータ１５０に実行させる。
【００７２】
なお、プログラミング支援装置１００は、フロー表示ウィンドウ２２０への操作入力に基づいて動作プログラムを修正するように構成されていてもよい。例えば、実行順序設定部１３１は、フロー表示ウィンドウ２２０のジョブ画像において作業用ジョブを移動させる入力（例えば作業ブロック２２２を移動させるドラッグ入力）に応じて、当該作業用ジョブの移動に関わる少なくとも１台のロボット２（以下、「修正対象ロボット」という。）の実行順序を再設定してもよい。フロー表示ウィンドウ２２０のジョブ画像において２つのフローチャート間で作業用ジョブを移動させる入力がなされた場合、修正対象ロボットは２台となる。
【００７３】
実行可否判定部１３２は、修正対象ロボットについて、再設定された実行順序（以下、「再設定順序」という。）による複数の実行ジョブの実行可否を再判定する。実行可否判定部１３２は、再設定順序による複数の実行ジョブの実行が不可能であると判定した場合、どの実行ジョブがどの条件を満たしていないのかを示す情報を含むエラーメッセージをインタフェース部１２０に表示させる。
【００７４】
一方、実行可否判定部１３２は、再設定順序による複数の実行ジョブの実行が可能であると判定した場合、フロー表示ウィンドウ２２０における修正対象ロボットのフローチャートを、再設定順序に従ってインタフェース部１２０により修正させる。
【００７５】
また、複数の実行ジョブを再設定順序に従って上記動作開始ジョブと上記動作終了ジョブとの間に挿入したプログラムを修正対象ロボットの動作プログラムとしてプログラム記憶部１１５に保存する。これにより、修正対象ロボットの修正後の動作プログラム（以下、「修正後プログラム」という。）が仮生成される。
【００７６】
生成条件設定部１３３は、仮生成された修正後プログラムにおいて、作業用ジョブ間の移動区間のそれぞれについて、移動用ジョブの生成条件を予め設定された初期条件に再設定し、生成条件記憶部１３４に保存する。
【００７７】
移動ジョブ生成部１３５は、実行順序設定部１３１が再設定した実行順序に基づいて少なくとも１つの移動用ジョブを再生成する。例えば移動ジョブ生成部１３５は、修正プログラムの移動区間ごとに、生成条件記憶部１３４が記憶する生成条件に従って移動用ジョブを再生成する。
【００７８】
待機期間設定部１３６は、実行順序設定部１３１により再設定された実行順序と、移動ジョブ生成部１３５により再生成された移動用ジョブとに基づいて、複数のジョブのそれぞれの実行待機期間を複数台のロボット２ごとに再設定する。
【００７９】
プログラム生成部１３０は、修正箇所認識部１３８を更に有してもよい。修正箇所認識部１３８は、実行順序設定部１３１による実行順序の再設定に応じて移動用ジョブの再生成が必要となる要修正箇所と、移動用ジョブの再生成が不要な修正不要箇所とを認識する。この場合、移動ジョブ生成部１３５は、修正不要箇所の移動用ジョブを再生成せずに、要修正箇所の前記移動用ジョブを再生成する。
【００８０】
例えば修正箇所認識部１３８は、上記修正後プログラムの移動区間のそれぞれについて、修正前の動作プログラム（以下、「修正前プログラム」という。）に同じ移動区間が存在するか否かを確認する。なお、同じ移動区間とは、前後の作業用ジョブが一致する移動区間を意味する。修正後プログラムの移動区間と同じ移動区間が修正前プログラムに存在しない場合、修正箇所認識部１３８は当該移動区間を要修正箇所と認識する。
【００８１】
修正後プログラムの移動区間と同じ移動区間が修正前プログラムに存在する場合、修正箇所認識部１３８は当該移動区間を修正不要箇所と認識し、当該移動区間に修正前プログラムと同じ移動用ジョブを挿入する。移動ジョブ生成部１３５は、修正後プログラムにおいて、移動用ジョブが挿入されている移動区間の移動用ジョブは再生成せずに、移動用ジョブが挿入されていない移動区間の移動用ジョブを再生成する。
【００８２】
プログラム生成部１３０は、生成条件変更部１３７を更に有してもよい。生成条件変更部１３７は、フロー表示ウィンドウ２２０のジョブ画像における入力に応じて移動用ジョブの生成条件を個別に変更する。例えば生成条件変更部１３７は、フロー表示ウィンドウ２２０のジョブ画像において移動用ジョブを選択する入力（例えば移動ライン２２３のクリック）に応じて、当該移動用ジョブの生成条件の入力画像をインタフェース部１２０に表示させ、当該入力画像への入力に基づいて当該移動用ジョブの生成条件を変更する。
【００８３】
例えば生成条件変更部１３７は、当該入力画像への入力に基づいて移動用ジョブの生成条件を設定し、生成条件記憶部１３４に上書きする。この場合、移動ジョブ生成部１３５は、生成条件変更部１３７による変更後の生成条件に対応する移動用ジョブを当該変更後の生成条件に基づいて再生成する。
【００８４】
例えば生成条件変更部１３７は、移動用ジョブの生成条件を変更した場合に、当該移動用ジョブをプログラム記憶部１１５から消去する。移動ジョブ生成部１３５は、移動用ジョブが消去された移動区間の移動用ジョブを再生成する。
【００８５】
図５に示すように、プログラム検証支援部１４０は、機能ブロックとして、時刻指定画像生成部１４１と、時刻指定部１４２と、ジョブ画像生成部１４３と、シミュレーション画像生成部１４４と、再生処理部１４５とを有する。
【００８６】
時刻指定画像生成部１４１は、時間軸を表す方向における位置を示すカーソルを含む時刻指定画像を生成する。時刻指定画像生成部１４１は、時間軸に沿ってジョブの実行期間とジョブの実行待機期間とを示す経過時間バーを複数台のロボット２ごとに更に含む時刻指定画像を生成してもよい。時刻指定画像生成部１４１は、経過時間バーにおいて作業用ジョブの実行期間と移動用ジョブの実行期間とを更に示すように時刻指定画像を生成してもよい。
【００８７】
例えば時刻指定画像生成部１４１は、上述したタイムラインウィンドウ２３０の時刻指定画像のデータを生成し、当該データに従った時刻指定画像をインタフェース部１２０によりタイムラインウィンドウ２３０に表示させる。これにより、時刻指定画像を含むグラフィカルユーザインタフェースが構成される。
【００８８】
時刻指定画像生成部１４１は、実行順序設定部１３１により再設定された実行順序と、移動ジョブ生成部１３５により再生成された移動用ジョブと、待機期間設定部１３６により再設定された実行待機期間とに基づいて経過時間バー２３１を更新するように構成されていてもよい。
【００８９】
例えば時刻指定画像生成部１４１は、実行順序設定部１３１により再設定された実行順序と、移動ジョブ生成部１３５により再生成された移動用ジョブと、待機期間設定部１３６により再設定された実行待機期間とに基づいて経過時間バー２３１の更新データを生成し、当該更新データに従ってインタフェース部１２０に経過時間バー２３１を更新させる。
【００９０】
時刻指定部１４２は、時刻指定画像におけるカーソルの位置に従って検証対象時刻を指定する。例えば時刻指定部１４２は、タイムラインウィンドウ２３０の時刻指定画像におけるカーソル２３２の位置（例えば経過時間バー２３１が延びる方向におけるカーソル２３２の位置）に基づいて検証対象時刻を指定する。
【００９１】
ジョブ画像生成部１４３は、ユーザにより検証対象時刻が指定された場合に、検証対象時刻において複数台のロボット２が実行するジョブを示すジョブ画像を動作プログラムに基づいて生成する。ジョブ画像生成部１４３は、複数のジョブを実行順に並べたフローチャートと、フローチャートのうち検証対象時刻において実行される部分を示すマーカとを複数台のロボット２ごとに示すようにジョブ画像を生成してもよい。ジョブ画像生成部１４３は、複数の作業用ジョブをそれぞれ示す複数の作業シンボルと、移動用ジョブを示す移動シンボルとを含むフローチャートを複数台のロボット２ごとに示すジョブ画像を生成してもよい。
【００９２】
例えばジョブ画像生成部１４３は、タイムラインウィンドウ２３０の時刻指定画像におけるカーソル２３２の位置に基づいて検証対象時刻が指定された場合に、検証対象時刻において複数台のロボット２が実行するジョブを、プログラム記憶部１１５が記憶する動作プログラムに基づいて認識し、認識したジョブを示すマーカ２２５をインタフェース部１２０によりフロー表示ウィンドウ２２０に表示させる。これにより、ジョブ画像を含むグラフィカルユーザインタフェースが構成される。
【００９３】
シミュレーション画像生成部１４４は、動作プログラムに基づく動作シミュレーションにより検証対象時刻における複数台のロボット２のシミュレーション画像を生成する。例えばシミュレーション画像生成部１４４は、検証対象時刻における複数台のロボット２のシミュレーション画像をシミュレータ１５０に生成させる。
【００９４】
例えばシミュレーション画像生成部１４４は、検証対象時刻における各ロボット２の先端部１２の目標位置及び目標姿勢をシミュレータ１５０に出力し、複数台のロボット２、ワーク、及び周辺物体のシミュレーション画像をシミュレータ１５０に生成させる。シミュレーション画像生成部１４４は、シミュレータ１５０が生成したシミュレーション画像のデータ（例えばポリゴンによる３次元のサーフェスデータ）を取得し、当該データに従ったシミュレーション画像をインタフェース部１２０によりシミュレーションウィンドウ２４０に表示させる。これにより、シミュレーション画像を含むグラフィカルユーザインタフェースが構成される。
【００９５】
再生処理部１４５は、所定速度でカーソル２３２を移動させる。例えば再生処理部１４５は、ユーザインタフェース画面２００において再生ボタン２３３が押されるのに応じてカーソル２３２の移動を開始させ、停止ボタン２３４が押されるのに応じてカーソル２３２の移動を停止させる。
【００９６】
再生処理部１４５がカーソル２３２を移動させると、これに応じてジョブ画像生成部１４３がフロー表示ウィンドウ２２０のマーカ２２５を更新し、シミュレーション画像生成部１４４がシミュレーションウィンドウ２４０のロボット画像２４１及びワーク画像２４２等を更新する。これにより、カーソル２３２の移動に応じてフロー表示ウィンドウ２２０においてはマーカ２２５が移動し、シミュレーションウィンドウ２４０においてはロボット画像２４１及びワーク画像２４２等が動画表示される。
【００９７】
図６に示すように、シミュレータ１５０は、モデル情報記憶部１５１と、動作可否判定部１５２と、衝突判定部１５３，１５４と、シミュレーション画像生成部１５５とを有する。
【００９８】
モデル情報記憶部１５１は、複数のロボット２のモデルデータと、複数のロボット２が設置される環境のモデルデータと、ワークのモデルデータとを記憶する。ロボット２のモデルデータは、ロボット２の配置、構造及び各部寸法と、関節３１，３２，３３，３４，３５，３６の可動角とを含む。複数のロボット２が設置される環境のモデルデータは、各周辺物体の配置、構造及び各部寸法等を含む。ワークのモデルデータも、配置、構造及び各部寸法等を含む。
【００９９】
動作可否判定部１５２は、作業用ジョブ（上記実行ジョブ）を実行可否判定部１３２から取得し、先端部１２の目標位置及び目標姿勢と、モデル情報記憶部１５１が記憶するモデルデータとに基づく逆運動学演算により、各ロボット２の関節３１，３２，３３，３４，３５，３６の動作角度を算出する。動作可否判定部１５２は、算出した関節３１，３２，３３，３４，３５，３６の動作角度が可動角以内であるかを判定し、判定結果を実行可否判定部１３２に出力する。
【０１００】
衝突判定部１５３は、移動用ジョブを移動ジョブ生成部１３５から取得し、先端部１２の目標位置及び目標姿勢と、モデル情報記憶部１５１が記憶するモデルデータとに基づく逆運動学演算により、関節３１，３２，３３，３４，３５，３６の動作角度を算出する。衝突判定部１５３は、算出した関節３１，３２，３３，３４，３５，３６の動作角度と、モデル情報記憶部１５１が記憶するモデルデータとに基づく順運動学演算によりロボット２の各部の位置を算出し、算出結果に基づいてロボット２とワーク及び周辺物体との衝突の有無を判定する。衝突判定部１５３は、判定結果を移動ジョブ生成部１３５に出力する。
【０１０１】
衝突判定部１５４は、各ロボット２の移動用ジョブ又は作業用ジョブを待機期間設定部１３６から取得し、先端部１２の目標位置及び目標姿勢と、モデル情報記憶部１５１が記憶するモデルデータとに基づく逆運動学演算により、関節３１，３２，３３，３４，３５，３６の動作角度をロボット２ごとに算出する。衝突判定部１５４は、算出した関節３１，３２，３３，３４，３５，３６の動作角度と、モデル情報記憶部１５１が記憶するモデルデータとに基づく順運動学演算によりロボット２の各部の位置を算出し、算出結果に基づいてロボット２同士の衝突の有無を判定する。衝突判定部１５４は、判定結果を待機期間設定部１３６に出力する。
【０１０２】
シミュレーション画像生成部１５５は、各ロボット２の移動用ジョブ又は作業用ジョブをシミュレーション画像生成部１４４から取得し、先端部１２の目標位置及び目標姿勢と、モデル情報記憶部１５１が記憶するモデルデータとに基づく逆運動学演算により関節３１，３２，３３，３４，３５，３６の動作角度をロボット２ごとに算出する。シミュレーション画像生成部１５５は、算出した関節３１，３２，３３，３４，３５，３６の動作角度と、モデル情報記憶部１５１が記憶するモデルデータとに基づく順運動学演算によりロボット２の各部の位置を算出し、ロボット２ごとの算出結果に基づいて上記シミュレーション画像のデータを生成する。シミュレーション画像生成部１５５は、生成したデータをシミュレーション画像生成部１４４に出力する。
【０１０３】
図７は、プログラミング支援装置１００のハードウェア構成を例示するブロック図である。図７に示すように、プログラミング支援装置１００は、回路１９０を備える。回路１９０は、一つ又は複数のプロセッサ１９１と、メモリ１９２と、ストレージ１９３と、通信ポート１９４と、表示デバイス１９５と、入力デバイス１９６とを有する。
【０１０４】
ストレージ１９３は、複数のジョブをそれぞれ含む動作プログラムを複数台のロボット２ごとに記憶することと、ユーザにより検証対象時刻が指定された場合に、検証対象時刻において複数台のロボット２が実行するジョブを示すジョブ画像を動作プログラムに基づいて生成することと、をプログラミング支援装置１００に実行させるためのプログラムを記憶している。例えばストレージ１９３は、少なくとも一つのハードディスク又は不揮発性メモリ等の記憶媒体であり、上述したプログラミング支援装置１００の機能ブロックを構成するためのプログラムを記憶している。
【０１０５】
メモリ１９２は、ストレージ１９３からロードしたプログラム及びプロセッサ１９１による演算結果等を一時的に記憶する。プロセッサ１９１は、メモリ１９２と協働して上記プログラムを実行する。通信ポート１９４は、プロセッサ１９１からの指令に従って、有線又は無線の通信経路を介して他のプログラミング支援装置１００の通信ポート１９４との情報通信を行う。
【０１０６】
表示デバイス１９５は、例えば液晶モニタ等を含む。表示デバイス１９５は、上述したインタフェース部１２０として、ユーザインタフェース画面２００の表示に用いられる。入力デバイス１９６は、例えばキーボード等である。入力デバイス１９６は、上述したインタフェース部１２０として、ユーザインタフェース画面２００に対する入力の取得に用いられる。表示デバイス１９５及び入力デバイス１９６は、所謂タッチパネルのように一体化されていてもよい。
【０１０７】
〔プログラミング支援方法〕
続いて、プログラミング支援方法の一例として、プログラミング支援装置１００が実行するプログラミング支援手順を例示する。この手順は、複数のジョブをそれぞれ含む動作プログラムを複数台のロボット２ごとに記憶することと、ユーザにより検証対象時刻が指定された場合に、検証対象時刻において複数台のロボット２が実行するジョブを示すジョブ画像を動作プログラムに基づいて生成することとを含む。この手順は、例えば依存関係の登録手順と、実行順序の設定手順と、動作プログラムの生成手順と、実行順序の再設定手順と、生成条件の変更手順と、時刻指定画像の表示手順と、ジョブ画像の表示手順と、動作再生手順とを含む。以下、各手順を詳細に例示する。
【０１０８】
（依存関係の登録手順）
図８は、ユーザインタフェース画面２００の依存関係入力ボタン２１１が押された場合にプログラミング支援装置１００が実行する手順を例示している。図８に示すように、プログラミング支援装置１００は、ステップＳ０１，Ｓ０２，Ｓ０３，Ｓ０４，Ｓ０５，Ｓ０６を実行する。ステップＳ０１では、依存関係設定部１１３が、作業用ジョブの選択画像（上記対象選択画像）をインタフェース部１２０に表示させる。ステップＳ０２では、依存関係設定部１１３が、対象選択画像における作業用ジョブの選択を待機する。
【０１０９】
ステップＳ０３では、依存関係設定部１１３が、対象選択画像で選択された作業用ジョブの依存関係入力画像をインタフェース部１２０に表示させる。ステップＳ０４では、依存関係入力画像において、依存関係の登録要求がなされる（例えば登録ボタンが押される）のを依存関係設定部１１３が待機する。ステップＳ０５では、依存関係設定部１１３が、依存関係入力画像に入力された依存関係を取得し、依存関係記憶部１１４に保存する。ステップＳ０６では、依存関係設定部１１３が、依存関係入力画像をインタフェース部１２０に消去させる。以上で依存関係登録手順が完了する。
【０１１０】
（実行順序の設定手順）
図９は、ユーザインタフェース画面２００のフロー作成ボタン２１２が押された場合にプログラミング支援装置１００が実行する手順を例示している。図９に示すように、プログラミング支援装置１００は、まずステップＳ１１，Ｓ１２，Ｓ１３を実行する。ステップＳ１１では、実行順序設定部１３１が、作業用ジョブの選択画像（上記実行ジョブ選択画像）をインタフェース部１２０に表示させる。ステップＳ１２では、実行順序設定部１３１が、実行ジョブ選択画像において、フローチャートの作成要求がなされる（例えば実行ボタンが押される）のを待機する。
【０１１１】
ステップＳ１３では、複数台のロボット２ごとの動作の制約条件に基づいて、実行順序設定部１３１が設定した実行順序（上記設定順序）による複数の実行ジョブの実行が可能であるかを実行可否判定部１３２がロボット２ごとに判定する。例えば実行可否判定部１３２は、実行ジョブに従って先端部１２を移動させるための関節３１，３２，３３，３４，３５，３６の動作角度をシミュレータ１５０に算出させ、算出結果が可動角以内であるか否かの判定結果をシミュレータ１５０から取得する。
【０１１２】
ステップＳ１３において算出結果が可動角以内であると判定した場合、プログラミング支援装置１００は、ステップＳ１４を実行する。ステップＳ１４では、依存関係を満たさない実行ジョブはないかを実行可否判定部１３２が確認する。
【０１１３】
ステップＳ１３において算出結果が可動角以内でないと判定した場合、又はステップＳ１４において依存関係を満たさない実行ジョブがあると判定した場合、プログラミング支援装置１００はステップＳ１５を実行する。ステップＳ１５では、どの実行ジョブがどの条件を満たしていないのかを示す情報を含むエラーメッセージを実行可否判定部１３２がインタフェース部１２０に表示させる。その後、プログラミング支援装置１００は処理をステップＳ１１に戻す。これにより、再度作業用ジョブの選択が要求される。
【０１１４】
ステップＳ１４において依存関係を満たさない実行ジョブがないと判定した場合、プログラミング支援装置はステップＳ１６，Ｓ１７，Ｓ１８，Ｓ１９を実行する。ステップＳ１６では、実行可否判定部１３２が、複数のロボット２ごとのフローチャートを、設定順序に従ってインタフェース部１２０によりフロー表示ウィンドウ２２０に表示させる。ステップＳ１７では、実行可否判定部１３２が、複数のロボット２ごとに、複数の実行ジョブを設定順序に従って上記動作開始ジョブと上記動作終了ジョブとの間に挿入したプログラムを動作プログラムとして仮生成し、仮生成した動作プログラムをプログラム記憶部１１５に保存する。
【０１１５】
ステップＳ１８では、生成条件設定部１３３が、仮生成された動作プログラムにおいて、作業用ジョブ間の移動区間のそれぞれについて、移動用ジョブの生成条件を予め設定された初期条件に設定する。ステップＳ１９では、インタフェース部１２０がプログラム作成ボタン２１３をアクティブ化する。なお、アクティブ化とは、ユーザにより操作可能にすることを意味する。以上で実行順序の設定手順が完了する。
【０１１６】
（動作プログラムの生成手順）
図１０は、アクティブ化されたプログラム作成ボタン２１３が押された場合にプログラミング支援装置１００がロボット２ごとに実行する手順を例示している。図１０に示すように、プログラミング支援装置１００は、まずステップＳ２１，Ｓ２２を実行する。ステップＳ２１では、移動ジョブ生成部１３５が、移動用ジョブの生成対象をプログラム記憶部１１５の動作プログラムにおける最初の移動区間に設定する。以下、移動用ジョブの生成対象の移動区間を「対象区間」という。ステップＳ２２では、移動ジョブ生成部１３５が、対象区間に既存の移動用ジョブがないかを確認する。
【０１１７】
ステップＳ２２において対象区間に既存の移動用ジョブがないと判定した場合、プログラミング支援装置１００はステップＳ２３を実行する。ステップＳ２３では、生成条件記憶部１３４が記憶する生成条件に従って、移動ジョブ生成部１３５が、対象区間の移動用ジョブを生成する。ステップＳ２３の具体的内容は後述する。
【０１１８】
次に、プログラミング支援装置１００はステップＳ２４を実行する。ステップＳ２２において対象区間に既存の移動用ジョブがあると判定した場合、プログラミング支援装置１００はステップＳ２３を実行することなくステップＳ２４を実行する。ステップＳ２４では、全移動区間に移動用ジョブが存在しているかを移動ジョブ生成部１３５が確認する。
【０１１９】
ステップＳ２４において移動用ジョブの存在しない移動区間があると判定した場合、プログラミング支援装置１００はステップＳ２５を実行する。ステップＳ２５では、移動ジョブ生成部１３５が、対象区間を次の移動区間に変更する。その後、プログラミング支援装置１００は処理をステップＳ２２に戻す。以後、全移動区間に移動用ジョブが存在していると判定するまで、プログラミング支援装置１００は、移動用ジョブが挿入されていない移動区間の移動用ジョブを生成し、挿入することを繰り返す。
【０１２０】
ステップＳ２４において全移動区間に移動用ジョブが存在していると判定した場合、プログラミング支援装置１００はステップＳ２６，Ｓ２７を実行する。ステップＳ２６では、待機期間設定部１３６が、複数台のロボット２の相対的な動作タイミングを調節するように、複数のジョブ（作業用ジョブ及び移動用ジョブを含む）のそれぞれの実行待機期間を複数台のロボット２ごとに設定する。ステップＳ２６の具体的内容は後述する。ステップＳ２７では、インタフェース部１２０がプログラム作成ボタン２１３を非アクティブ化する。なお、非アクティブ化とは、ユーザによる操作を禁止することを意味する。以上で動作プログラムの生成手順が完了する。
【０１２１】
図１１は、ステップＳ２３における移動用ジョブ生成手順を例示するフローチャートである。図１１は、上述した第１種の生成条件に基づく移動用ジョブの生成手順を例示している。図１１に示すように、プログラミング支援装置１００は、まずステップＳ３１，Ｓ３２を実行する。ステップＳ３１では、移動ジョブ生成部１３５が、作業用ジョブ間を最短経路にするように移動用ジョブを仮生成する。ステップＳ３２では、移動ジョブ生成部１３５が、移動用ジョブ全体にわたって、ロボット２とワーク及び周辺物体との衝突がないかを確認する。
【０１２２】
ステップＳ３２においてロボット２とワーク及び周辺物体との衝突があると判定した場合、プログラミング支援装置１００はステップＳ３３，Ｓ３４を実行する。ステップＳ３３では、移動ジョブ生成部１３５が、衝突を回避可能な経由点を生成する。ステップＳ３４では、移動ジョブ生成部１３５が、生成した経由点を通るように移動用ジョブを修正する。その後、プログラミング支援装置１００は処理をステップＳ３２に戻す。以後、移動用ジョブ全体にわたって、ロボット２とワーク及び周辺物体との衝突がないと判定されるまで、経由点の追加と移動用ジョブの修正とが繰り返される。
【０１２３】
ステップＳ３２において移動用ジョブ全体にわたってロボット２とワーク及び周辺物体との衝突がないと判定した場合、プログラミング支援装置１００はステップＳ３５を実行する。ステップＳ３５では、移動ジョブ生成部１３５が、これまでに生成された移動用ジョブを候補ジョブとする。ステップＳ３６では、候補ジョブの数が第１種の条件で定められた数（以下、「設定数」という。）に達したかを移動ジョブ生成部１３５が確認する。
【０１２４】
ステップＳ３６において候補ジョブの数が設定数に達していないと判定した場合、プログラミング支援装置１００は処理をステップＳ３１に戻す。以後、候補ジョブの数が設定数に達するまで、候補ジョブの生成が繰り返される。ステップＳ３６において候補ジョブの数が設定数に達していると判定した場合、プログラミング支援装置１００はステップＳ３７を実行する。ステップＳ３７では、移動ジョブ生成部１３５が、第１種の条件で定められた上記選択条件に従っていずれかの候補ジョブを移動用ジョブとして選択する。以上で移動用ジョブの生成手順が完了する。
【０１２５】
図１２は、上述した第２種の生成条件に基づく移動用ジョブの生成手順を例示している。図１２に示すように、プログラミング支援装置１００は、まず、移動用ジョブ全体にわたってロボット２とワーク及び周辺物体との衝突がないと判定されるまで、ステップＳ３１，Ｓ３２，Ｓ３３，Ｓ３４と同様のステップＳ４１，Ｓ４２，Ｓ４３，Ｓ４４を繰り返す。
【０１２６】
ステップＳ４２において移動用ジョブ全体にわたってロボット２とワーク及び周辺物体との衝突がないと判定した場合、プログラミング支援装置１００はステップＳ４５を実行する。ステップＳ４５では、移動用ジョブの特性が第２種の条件で定められた採用閾値を超えているかを移動ジョブ生成部１３５が確認する。
【０１２７】
ステップＳ４５において移動用ジョブの特性が第２種の条件で定められた採用閾値を超えていないと判定した場合、プログラミング支援装置１００は処理をステップＳ４１に戻す。以後、採用閾値を超える移動用ジョブが生成されるまで、移動用ジョブの生成が繰り返される。ステップＳ４５において移動用ジョブの特性が第２種の条件で定められた採用閾値を超えていると判定した場合、移動用ジョブの生成手順が完了する。
【０１２８】
図１３は、ステップＳ２６における待機期間の設定手順を例示している。図１３に示すように、プログラミング支援装置１００は、まずステップＳ５１，Ｓ５２，Ｓ５３を実行する。ステップＳ５１では、待機期間設定部１３６が各ジョブの待機期間をゼロに設定する。ステップＳ５２では、待機期間設定部１３６が待機要否の検証サイクルを最初の制御サイクルに設定する。制御サイクルとは、フィードバックと、偏差に基づく指令出力とを周期的に繰り返す制御の１サイクルである。
【０１２９】
ステップＳ５３では、検証サイクルにおいてロボット２同士の衝突があるかを待機期間設定部１３６が確認する。待機期間設定部１３６は、検証サイクルにおける各ロボット２の先端部１２の目標位置及び目標姿勢をシミュレータ１５０に出力し、ロボット２同士の衝突の有無をシミュレータ１５０に判定させる。
【０１３０】
ステップＳ５３において、検証サイクルにおいてロボット２同士の衝突がないと判定した場合、プログラミング支援装置１００はステップＳ５４を実行する。ステップＳ５４では、要先行ジョブの完了前に開始された作業用ジョブがあるか否かを待機期間設定部１３６が確認する。
【０１３１】
ステップＳ５３において、検証サイクルにおいてロボット２同士の衝突があると判定した場合、又はステップＳ５４において要先行ジョブの完了前に開始された作業用ジョブがあると判定した場合、プログラミング支援装置１００はステップＳ５５，Ｓ５６，Ｓ５７，Ｓ５８を実行する。ステップＳ５５では、待機期間設定部１３６が、動作を待機させるロボット２（以下、「待機ロボット」という。）を選択する。例えばロボット２同士の衝突が検出された場合、待機期間設定部１３６は、いずれか一方のロボット２を待機ロボットとする。また、要先行ジョブの完了前に開始された作業用ジョブが検出された場合、待機期間設定部１３６は当該作業用ジョブを実行するロボット２を待機ロボットとする。
【０１３２】
ステップＳ５６では、選択したロボット２が検証サイクルにおいて実行するジョブを待機期間設定部１３６が待機ジョブに設定する。ステップＳ５７では、待機期間設定部１３６が、選択した待機ジョブの待機期間を設定する。ロボット２同士の衝突を回避するための待機である場合、待機期間設定部１３６は、例えば衝突相手のロボット２が検証サイクルにおいて実行するジョブが完了するまでの期間を待機期間とする。依存関係を満足させるための待機である場合、待機期間設定部１３６は、他のロボット２が要先行ジョブを完了させるまでの期間を待機期間とする。要先行ジョブの後にインターバルが設定されている場合、待機期間設定部１３６は、他のロボット２が要先行ジョブを完了させた後、インターバルが経過するまでの期間を待機期間とする。ステップＳ５８では、待機期間設定部１３６が、ステップＳ５６で設定された待機ジョブの前に、ステップＳ５７で設定された待機期間を挿入して、待機ロボットの動作プログラムを修正する。
【０１３３】
次に、プログラミング支援装置１００はステップＳ５９を実行する。ステップＳ５４において要先行ジョブの完了前に開始された作業用ジョブがないと判定した場合、プログラミング支援装置１００はステップＳ５５，Ｓ５６，Ｓ５７，Ｓ５８を実行することなくステップＳ５９を実行する。ステップＳ５９では、検証サイクルが最終の制御サイクルであるかを待機期間設定部１３６が確認する。
【０１３４】
ステップＳ５９において検証サイクルが最終の制御サイクルでないと判定した場合、プログラミング支援装置１００はステップＳ６１を実行する。ステップＳ６１では、待機期間設定部１３６が検証サイクルを次の制御サイクルに変更する。その後、プログラミング支援装置１００は処理をステップＳ５３に戻す。以後、最終の制御サイクルの検証が完了するまで、待機期間の要否判定と、必要に応じた待機期間の設定とが繰り返される。ステップＳ５９において検証サイクルが最終の制御サイクルであると判定した場合、待機期間の設定手順が完了する。
【０１３５】
（実行順序の再設定手順）
図１４は、フロー表示ウィンドウ２２０における入力に応じた実行順序の再設定手順を例示している。図１４に示すように、プログラミング支援装置１００は、まずステップＳ７１，Ｓ７２を実行する。ステップＳ７１では、インタフェース部１２０が、フロー表示ウィンドウ２２０内において、作業ブロック２２２を移動させる入力（すなわち上記実行ジョブを移動させる入力）を待機する。ステップＳ７２では、実行ジョブの移動が１台のロボット２内の移動か否かを実行順序設定部１３１が確認する。
【０１３６】
ステップＳ７２において実行ジョブの移動が１台のロボット２内の移動であると判定した場合、プログラミング支援装置１００はステップＳ７３，Ｓ７４を実行する。ステップＳ７３では、実行順序設定部１３１が、実行ジョブを移動させる入力に応じて、当該実行ジョブの移動に関わる１台のロボット２（上記修正対象ロボット）の実行順序を再設定する。ステップＳ７４では、依存関係を満たさない実行ジョブはないかを実行可否判定部１３２が確認する。
【０１３７】
ステップＳ７２において実行ジョブの移動が１台のロボット２内の移動でないと判定した場合、プログラミング支援装置１００はステップＳ７５，Ｓ７６を実行する。ステップＳ７５では、実行順序設定部１３１が、実行ジョブを移動させる入力に応じて、当該実行ジョブの移動に関わる２台のロボット２（上記修正対象ロボット）の実行順序を再設定する。
【０１３８】
ステップＳ７６では、実行可否判定部１３２が、２台の修正対象ロボットごとの動作の制約条件に基づいて、実行順序設定部１３１が再設定した実行順序（上記再設定順序）による複数の実行ジョブの実行が可能であるかを２台の修正対象ロボットごとに判定する。例えば実行可否判定部１３２は、実行ジョブに従って先端部１２を移動させるための関節３１，３２，３３，３４，３５，３６の動作角度をシミュレータ１５０に算出させ、算出結果が可動角以内であるか否かの判定結果をシミュレータ１５０から取得する。
【０１３９】
ステップＳ７６において再設定順序による複数の実行ジョブの実行が可能であると判定した場合、プログラミング支援装置１００は処理を上述したステップＳ７４に進める。
【０１４０】
ステップＳ７４において依存関係を満たさない実行ジョブがあると判定した場合、又はステップＳ７６において再設定順序による複数の実行ジョブの実行が可能でないと判定した場合、プログラミング支援装置１００はステップＳ７７を実行する。ステップＳ７７では、どの実行ジョブがどの条件を満たしていないのかを示す情報を含むエラーメッセージを実行可否判定部１３２がインタフェース部１２０に表示させる。その後、プログラミング支援装置１００は処理をステップＳ７１に戻す。
【０１４１】
ステップＳ７４において依存関係を満たさない実行ジョブがないと判定した場合、プログラミング支援装置１００はステップＳ７８，Ｓ７９，Ｓ８１，Ｓ８２，Ｓ８３，Ｓ８４を実行する。ステップＳ７８では、実行可否判定部１３２が、修正対象ロボットのフローチャートを、再設定順序に従ってインタフェース部１２０によりフロー表示ウィンドウ２２０に表示させる。
【０１４２】
ステップＳ７９では、実行可否判定部１３２が、複数の実行ジョブを再設定順序に従って上記動作開始ジョブと上記動作終了ジョブとの間に挿入したプログラムを修正対象ロボットの動作プログラムとしてプログラム記憶部１１５に保存する。これにより、修正対象ロボットの修正後の動作プログラム（上記修正後プログラム）が仮生成される。
【０１４３】
ステップＳ８１では、修正箇所認識部１３８が、実行順序設定部１３１による実行順序の再設定に応じて移動用ジョブの再生成が必要となる要修正箇所と、移動用ジョブの再生成が不要な修正不要箇所とを認識する。例えば修正箇所認識部１３８は、上記修正後プログラムの移動区間のそれぞれについて、上記修正前プログラムに同じ移動区間が存在するか否かを確認する。修正後プログラムの移動区間と同じ移動区間が修正前プログラムに存在しない場合、修正箇所認識部１３８は当該移動区間を要修正箇所と認識する。修正後プログラムの移動区間と同じ移動区間が修正前プログラムに存在する場合、修正箇所認識部１３８は当該移動区間を修正不要箇所と認識する。
【０１４４】
ステップＳ８２では、修正箇所認識部１３８が、修正不要箇所と認識した移動区間に修正前プログラムと同じ移動用ジョブを挿入する。ステップＳ８３では、生成条件設定部１３３が、修正箇所認識部１３８により要修正箇所と認識された移動区間のそれぞれについて、移動用ジョブの生成条件を予め設定された初期条件に再設定し、生成条件記憶部１３４に保存する。ステップＳ８４では、インタフェース部１２０がプログラム作成ボタン２１３をアクティブ化する。その後、プログラミング支援装置１００は処理をステップＳ７１に戻す。
【０１４５】
ステップＳ８４においてアクティブ化されたプログラム作成ボタン２１３が押されると、プログラミング支援装置１００は再度上述したプログラム生成手順を実行する。上述したプログラム生成手順において、移動ジョブ生成部１３５は、移動用ジョブが存在している移動区間の移動用ジョブは再生成せずに、移動用ジョブが存在していない移動区間の移動用ジョブを再生成する。このため、上記修正不要箇所の移動用ジョブは再生成されずに、要修正箇所の移動用ジョブが再生成される。
【０１４６】
（生成条件の変更手順）
図１５は、フロー表示ウィンドウ２２０における入力に応じた生成条件の変更手順を例示している。図１５に示すように、プログラミング支援装置１００は、ステップＳ９１，Ｓ９２，Ｓ９３，Ｓ９４，Ｓ９５，Ｓ９６を実行する。ステップＳ９１では、例えば、フロー表示ウィンドウ２２０の上部画像において移動用ジョブを選択する入力（例えば移動ライン２２３のクリック）がなされるのを生成条件変更部１３７が待機する。ステップＳ９２では、生成条件変更部１３７が、選択された移動用ジョブの生成条件の入力画像をインタフェース部１２０に表示させる。
【０１４７】
ステップＳ９３では、生成条件の入力画像において、生成条件の登録要求がなされる（例えば登録ボタンが押される）のを生成条件変更部１３７が待機する。ステップＳ９４では、生成条件変更部１３７が、生成条件の入力画像への入力に基づいて移動用ジョブの生成条件を変更する。例えば生成条件変更部１３７は、生成条件の入力画像への入力に基づいて移動用ジョブの生成条件を設定し、生成条件記憶部１３４に上書きする。ステップＳ９５では、生成条件を変更した移動用ジョブを生成条件変更部１３７がプログラム記憶部１１５から消去する。ステップＳ９６では、インタフェース部１２０がプログラム作成ボタン２１３をアクティブ化する。その後、プログラミング支援装置１００は処理をステップＳ９１に戻す。
【０１４８】
ステップＳ９６でアクティブ化されたプログラム作成ボタン２１３が押されると、プログラミング支援装置１００は再度上述したプログラム生成手順を実行する。上述したプログラム生成手順において、移動ジョブ生成部１３５は、移動用ジョブが存在している移動区間の移動用ジョブは再生成せずに、移動用ジョブが存在していない移動区間の移動用ジョブを再生成する。このため、生成条件変更部１３７により移動用ジョブが消去された移動区間について、変更後の生成条件に基づいて移動用ジョブが再生成される。
【０１４９】
（時刻指定画像の表示手順）
図１６は動作プログラムの生成・修正に応じた時刻指定画像の表示手順を例示している。図１６に示すように、プログラミング支援装置１００は、まずステップＳ１０１を実行する。ステップＳ１０１では、プログラム記憶部１１５に新たな動作プログラムが生成されたかを時刻指定画像生成部１４１が確認する。
【０１５０】
ステップＳ１０１においてプログラム記憶部１１５に新たな動作プログラムが生成されたと判定した場合、プログラミング支援装置１００はステップＳ１０２，Ｓ１０３，Ｓ１０４，Ｓ１０５を実行する。ステップＳ１０２では、時刻指定画像生成部１４１が、実行順序設定部１３１により設定された実行順序と、移動ジョブ生成部１３５により生成された移動用ジョブと、待機期間設定部１３６により設定された実行待機期間とに基づいて経過時間バー２３１の表示用データを複数台のロボット２ごとに生成する。ステップＳ１０３では、時刻指定画像生成部１４１が、経過時間バー２３１の表示用データに基づいて、タイムラインウィンドウ２３０の時刻指定画像のデータを生成する。ステップＳ１０４では、時刻指定画像生成部１４１が、生成したデータに従った時刻指定画像をインタフェース部１２０により２３０に表示させる。
【０１５１】
ステップＳ１０５では、インタフェース部１２０がタイムラインウィンドウ２３０をアクティブ化する。これにより、カーソル２３２の移動による検証時刻指定と、再生ボタン２３３及び停止ボタン２３４の操作とが可能となる。その後、プログラミング支援装置１００は処理をステップＳ１０１に戻す。
【０１５２】
ステップＳ１０１においてプログラム記憶部１１５に新たな動作プログラムが生成されていないと判定した場合、プログラミング支援装置１００はステップＳ１０６を実行する。ステップＳ１０６では、実行順序設定部１３１により実行順序が再設定されたかをインタフェース部１２０が確認する。ステップＳ１０６において実行順序が再設定されていないと判定した場合、プログラミング支援装置１００は処理をステップＳ１０１に戻す。
【０１５３】
ステップＳ１０６において実行順序が再設定されていると判定した場合、プログラミング支援装置１００はステップＳ１０７を実行する。ステップＳ１０７では、インタフェース部１２０がタイムラインウィンドウ２３０を非アクティブ化する。これにより、カーソル２３２の移動による検証時刻指定と、再生ボタン２３３及び停止ボタン２３４の操作とが禁止される。その後、プログラミング支援装置１００は処理をステップＳ１０１に戻す。
【０１５４】
実行順序が再設定された後、ステップＳ１０１において再度動作プログラムの生成が検出されると、時刻指定画像生成部１４１は、実行順序設定部１３１により再設定された実行順序と、移動ジョブ生成部１３５により再生成された移動用ジョブと、待機期間設定部１３６により再設定された実行待機期間とに基づいて経過時間バー２３１を更新する（ステップＳ１０２，Ｓ１０３，Ｓ１０４）。また、インタフェース部１２０がタイムラインウィンドウ２３０を再度アクティブ化する（ステップＳ１０５）。以上により、動作プログラムの修正に応じた時刻指定画像の更新が継続される。
【０１５５】
（検証対象時刻のジョブ画像及びシミュレーション画像の表示手順）
図１７は、カーソル２３２を移動する入力に応じたジョブ画像及びシミュレーション画像の表示手順を例示している。図１７に示すように、プログラミング支援装置１００は、ステップＳ１１１，Ｓ１１２，Ｓ１１３，Ｓ１１４，Ｓ１１５を実行する。ステップＳ１１１では、時刻指定部１４２が、時刻指定画像におけるカーソルの位置に従って検証対象時刻を指定する。ステップＳ１１２では、検証対象時刻において複数台のロボット２が実行するジョブを、プログラム記憶部１１５が記憶する動作プログラムに基づいてジョブ画像生成部１４３が認識する。ステップＳ１１３では、ジョブ画像生成部１４３が、認識したジョブを示すマーカ２２５をインタフェース部１２０によりフロー表示ウィンドウ２２０に表示させる。
【０１５６】
ステップＳ１１４では、シミュレーション画像生成部１４４が、検証対象時刻における複数台のロボット２のシミュレーション画像をシミュレータ１５０に生成させる。ステップＳ１１５では、シミュレーション画像生成部１４４が、シミュレータ１５０により生成されたシミュレーション画像のデータを取得し、当該データに従ったシミュレーション画像をインタフェース部１２０によりシミュレーションウィンドウ２４０に表示させる。以上で検証対象時刻のジョブ画像及びシミュレーション画像の表示手順が完了する。
【０１５７】
（ジョブ画像及びシミュレーション画像の動画再生手順）
図１８は、再生ボタン２３３が押された場合のジョブ画像及びシミュレーション画像の動画再生手順を例示している。図１８に示すように、プログラミング支援装置１００は、まずステップＳ１２１，Ｓ１２２，Ｓ１２３，Ｓ１２４，Ｓ１２５，Ｓ１２６，Ｓ１２７を実行する。ステップＳ１２１では、インタフェース部１２０が、フロー表示ウィンドウ２２０における作業ブロック２２２の移動及び生成条件の変更を禁止する。ステップＳ１２２では、時刻指定部１４２が、時刻指定画像におけるカーソルの位置に従って検証対象時刻を指定する。ステップＳ１２３では、検証対象時刻において複数台のロボット２が実行するジョブを、プログラム記憶部１１５が記憶する動作プログラムに基づいてジョブ画像生成部１４３が認識する。ステップＳ１２４では、ジョブ画像生成部１４３が、認識したジョブを示すマーカ２２５をインタフェース部１２０によりフロー表示ウィンドウ２２０に表示させる。
【０１５８】
ステップＳ１２５では、シミュレーション画像生成部１４４が、検証対象時刻における複数台のロボット２のシミュレーション画像をシミュレータ１５０に生成させる。ステップＳ１２６では、シミュレーション画像生成部１４４が、シミュレータ１５０により生成されたシミュレーション画像のデータを取得し、当該データに従ったシミュレーション画像をインタフェース部１２０によりシミュレーションウィンドウ２４０に表示させる。ステップＳ１２７では、カーソル２３２が経過時間バー２３１の終端（図３における図示の下端）に達したか否かを再生処理部１４５が確認する。
【０１５９】
ステップＳ１２７においてカーソル２３２が経過時間バー２３１の終端に達していないと判定した場合、プログラミング支援装置１００はステップＳ１２８を実行する。
ステップＳ１２８では、停止ボタン２３４が押されたか否かをインタフェース部１２０が確認する。
【０１６０】
ステップＳ１２８において停止ボタン２３４が押されていないと判定した場合、プログラミング支援装置１００はステップＳ１２９を実行する。ステップＳ１２９では、再生処理部１４５が、所定のピッチでカーソル２３２を１つ前進（時間の経過方向への前進）させる。その後、プログラミング支援装置１００は処理をステップＳ１２２に戻す。以後、カーソル２３２が終端に達するか、停止ボタン２３４が押されるまでは、カーソル２３２の前進と、ジョブ画像及びシミュレーション画像の更新が繰り返される。
【０１６１】
ステップＳ１２７においてカーソル２３２が経過時間バー２３１の終端に達していると判定した場合、又はステップＳ１２８において停止ボタン２３４が押されていると判定した場合、プログラミング支援装置１００はステップＳ１３１を実行する。ステップＳ１３１では、インタフェース部１２０がフロー表示ウィンドウ２２０における作業ブロック２２２の移動及び生成条件の変更禁止を解除する。以上で動画再生手順が完了する。
【０１６２】
〔本実施形態の効果〕
以上に説明したように、プログラミング支援装置１００は、複数のジョブを含む動作プログラムを複数台のロボットごとに記憶するプログラム記憶部１１５と、ユーザにより検証対象時刻が指定された場合に、検証対象時刻において複数台のロボット２が実行するジョブを示すジョブ画像を動作プログラムに基づいて生成するジョブ画像生成部１４３と、を備える。
【０１６３】
複数のジョブの実行時間は必ずしも一定ではない。複数のジョブの実行順序を複数のロボット２ごとに示すのみでは、ロボット２同士の動作の関係を容易には把握できない。具体的には、複数台のロボット２の動作プログラムにおいて、同一順序に位置するジョブが同一のタイミングで実行されるとは限らない。これに対し、プログラミング支援装置１００によれば、指定された検証対象時刻において複数台のロボット２が実行するジョブを示すジョブ表示画像が生成される。これにより、ロボット２同士の動作の関係をユーザが容易に把握することができる。従って、複数台のロボット２の動作プログラミングの効率化に有効である。
【０１６４】
プログラミング支援装置１００は、動作プログラムに基づく動作シミュレーションにより検証対象時刻における複数台のロボット２のシミュレーション画像を生成するシミュレーション画像生成部１４４と、ジョブ画像とシミュレーション画像とを含むユーザインタフェースを生成するインタフェース部１２０と、を更に備えていてもよい。この場合、検証対象時刻におけるシミュレーション画像の付加により、ロボット２同士の動作の関係をユーザが更に容易に把握することができる。従って、複数台のロボット２の動作プログラミングの効率化に更に有効である。
【０１６５】
ジョブ画像生成部１４３は、複数のジョブを実行順に並べたフローチャートと、フローチャートのうち検証対象時刻において実行される部分を示すマーカ２２５とを複数台のロボット２ごとに示すようにジョブ画像を生成してもよい。この場合、検証対象時刻におけるジョブと、その前後のジョブとが合わせて表示される。これにより、動作プログラムのブラッシュアップに有効な編集箇所が視覚的に把握し易くなる。従って、複数台のロボット２の動作プログラミングの効率化に更に有効である。
【０１６６】
プログラミング支援装置１００は、複数の作業用ジョブの実行順序を複数台のロボット２ごとに設定する実行順序設定部１３１と、実行順序設定部１３１が設定した実行順序に基づいて複数の作業用ジョブ間の移動用ジョブを複数台のロボットごとに生成する移動ジョブ生成部１３５と、を更に備え、ジョブ画像生成部１４３は、複数の作業用ジョブをそれぞれ示す複数の作業ブロック２２２と、移動用ジョブを示す移動ライン２２３とを含むフローチャートを複数台のロボット２ごとに示すジョブ画像を生成してもよい。この場合、動作プログラムのブラッシュアップに有効な編集箇所がより視覚的に把握し易くなる。従って、複数台のロボット２の動作プログラミングの効率化に更に有効である。
【０１６７】
プログラミング支援装置１００は、時間軸を表す方向における位置を示すカーソル２３２を含む時刻指定画像を生成する時刻指定画像生成部１４１と、時刻指定画像におけるカーソル２３２の位置に従って検証対象時刻を指定する時刻指定部１４２と、を更に備え、インタフェース部１２０は、時刻指定画像を更に含むユーザインタフェースを生成してもよい。この場合、検証対象時刻を容易に指定することができる。従って、複数台のロボット２の動作プログラミングの効率化に更に有効である。
【０１６８】
プログラミング支援装置１００は、複数台のロボット２の相対的な動作タイミングを調節するように、複数のジョブのそれぞれの実行待機期間を複数台のロボット２ごとに設定する待機期間設定部１３６を更に備え、時刻指定画像生成部１４１は、時間軸に沿ってジョブの実行期間とジョブの実行待機期間とを示す経過時間バー２３１を複数台のロボット２ごとに更に含む時刻指定画像を生成してもよい。複数台のロボット２を効率的に稼働させるように動作プログラムをブラッシュアップするためには、ジョブの実行待機期間が生じてしまう要因を把握することが有益である。これに対し、上記の場合には、時間軸に沿ってジョブの実行期間とジョブの実行待機期間とを示す経過時間バー２３１を複数台のロボット２ごとに更に含む時刻指定画像が表示される。これにより、検証対象時刻とすべき位置を容易に絞り込み、絞り込んだ位置をカーソル２３２の配置により容易に指定することができる。従って、複数台のロボット２の動作プログラミングの効率化に更に有効である。
【０１６９】
時刻指定画像生成部１４１は、経過時間バー２３１において作業用ジョブの実行期間と移動用ジョブの実行期間とを更に示すように時刻指定画像を生成してもよい。この場合、検証対象時刻とすべき位置の絞り込みが更に容易になる。
【０１７０】
プログラミング支援装置１００は、ジョブ画像における入力に応じて移動用ジョブの生成条件を個別に変更する生成条件変更部１３７を更に備え、移動ジョブ生成部１３５は、生成条件変更部１３７による変更後の生成条件に対応する移動用ジョブを当該変更後の生成条件に基づいて再生成してもよい。この場合、移動用ジョブの生成条件を部分的に変更し、移動用ジョブを効率的にブラッシュアップすることができる。従って、複数台のロボット２の動作プログラミングの効率化に更に有効である。
【０１７１】
実行順序設定部１３１は、ジョブ画像において作業用ジョブを移動させる入力に応じて少なくとも１台のロボット２の実行順序を再設定し、移動ジョブ生成部１３５は、実行順序設定部により再設定された実行順序に応じて少なくとも１つの移動用ジョブを再生成してもよい。この場合、ジョブ画像において作業用ジョブを移動させる簡単な操作によって、実行順序の再設定及び移動用ジョブの再生成を行うことができる。このため、動作プログラムの編集と検証とを効率的に繰り返すことができる。従って、複数台のロボット２の動作プログラミングの効率化に更に有効である。
【０１７２】
実行順序設定部１３１は、ジョブ画像において２つのフローチャート間で作業用ジョブを移動させる入力に応じて、当該作業用ジョブの移動に関わる２台のロボット２の実行順序を再設定し、移動ジョブ生成部１３５は、実行順序設定部１３１により再設定された実行順序に応じて少なくとも１つの移動用ジョブを２台のロボット２ごとに再生成してもよい。この場合、ジョブ画像において作業用ジョブを移動させる簡単な操作によって、複数のロボット２に対する作業用ジョブの割り当てをも変更し、これに応じて実行順序の再設定及び移動用ジョブの再生成を行うことができる。従って、複数台のロボット２の動作プログラミングの効率化に更に有効である。
【０１７３】
プログラミング支援装置１００は、実行順序設定部による実行順序の再設定に応じて移動用ジョブの再生成が必要となる要修正箇所と、移動用ジョブの再生成が不要な修正不要箇所とを認識する修正箇所認識部１３８を更に備え、移動ジョブ生成部１３５は、修正不要箇所の移動用ジョブを再生成せずに、要修正箇所の移動用ジョブを再生成してもよい。この場合、移動用ジョブの再生成における演算負荷が軽減される。従って、複数台のロボット２の動作プログラミングの効率化に更に有効である。
【０１７４】
実行順序設定部１３１は、ジョブ画像において作業用ジョブを移動させる入力に応じて少なくとも１台のロボット２の実行順序を再設定し、移動ジョブ生成部１３５は、実行順序設定部１３１により再設定された実行順序に応じて少なくとも１つの移動用ジョブを再生成し、待機期間設定部１３６は、実行順序設定部１３１により再設定された実行順序と、移動ジョブ生成部１３５により再生成された移動用ジョブとに基づいて、複数のジョブのそれぞれの実行待機期間を複数台のロボット２ごとに再設定し、時刻指定画像生成部１４１は、実行順序設定部１３１により再設定された実行順序と、移動ジョブ生成部１３５により再生成された移動用ジョブと、待機期間設定部１３６により再設定された実行待機期間とに基づいて経過時間バー２３１を更新してもよい。この場合、動作プログラムの編集と検証とを更に効率的に繰り返すことができる。従って、複数台のロボット２の動作プログラミングの効率化に更に有効である。
【０１７５】
プログラミング支援装置１００は、複数台のロボット２ごとの動作の制約条件に基づいて、作業用ジョブの実行可否を判定する実行可否判定部１３２を更に備えていてもよい。この場合、無駄な編集入力が抑制される。従って、複数台のロボット２の動作プログラミングの効率化に更に有効である。
【０１７６】
プログラミング支援装置１００は、予め設定された作業用ジョブ間の依存関係を記憶する依存関係記憶部１１４を更に備え、実行可否判定部１３２は、依存関係に更に基づいて作業用ジョブの実行可否を判定してもよい。この場合、無駄な編集入力が抑制される。従って、複数台のロボット２の動作プログラミングの効率化に更に有効である。
【０１７７】
以上、実施形態について説明したが、本開示は必ずしも上述した実施形態に限定されるものではなく、その要旨を逸脱しない範囲で様々な変更が可能である。
【符号の説明】
【０１７８】
１…ロボットシステム、２…ロボット、１００…プログラミング支援装置、１１４…依存関係記憶部、１１５…プログラム記憶部、１２０…インタフェース部、１３１…実行順序設定部、１３２…実行可否判定部、１３５…移動ジョブ生成部（ジョブ生成部）、１３６…待機期間設定部、１３７…生成条件変更部、１３８…修正箇所認識部、１４１…時刻指定画像生成部、１４２…時刻指定部、１４３…ジョブ画像生成部、１４４…シミュレーション画像生成部、２２２…作業ブロック（作業シンボル）、２２３…移動ライン（移動シンボル）、２２５…マーカ、２３１…経過時間バー、２３２…カーソル。
【図１】
2020168666.tif 000003
【図２】
2020168666.tif 000004
【図３】
2020168666.tif 000005
【図４】
2020168666.tif 000006
【図５】
2020168666.tif 000007
【図６】
2020168666.tif 000008
【図７】
2020168666.tif 000009
【図８】
2020168666.tif 000010
【図９】
2020168666.tif 000011
【図１０】
2020168666.tif 000012
【図１１】
2020168666.tif 000013
【図１２】
2020168666.tif 000014
【図１３】
2020168666.tif 000015
【図１４】
2020168666.tif 000016
【図１５】
2020168666.tif 000017
【図１６】
2020168666.tif 000018
【図１７】
2020168666.tif 000019
【図１８】
2020168666.tif 000020
【手続補正書】
【提出日】令和2年4月15日(2020.4.15)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のジョブを含む動作プログラムを複数台のロボットごとに記憶するプログラム記憶部と、
前記複数台のロボットの相対的な動作タイミングを調節するように、前記複数のジョブのそれぞれの実行待機期間を前記複数台のロボットごとに設定する待機期間設定部と、
時間軸を表す方向における位置を示すカーソルを含む時刻指定画像を生成する時刻指定画像生成部と、
前記時刻指定画像における前記カーソルの位置に従って検証対象時刻を指定する時刻指定部と、
前記検証対象時刻において前記複数台のロボットが実行するジョブを示すジョブ画像を前記動作プログラムに基づいて生成するジョブ画像生成部と、
前記時刻指定画像と、前記ジョブ画像とを含むユーザインタフェースを生成するインタフェース部と、を備え、
前記時刻指定画像生成部は、前記時間軸に沿ってジョブの実行期間とジョブの実行待機期間とを示す経過時間バーを前記複数台のロボットごとに更に含む前記時刻指定画像を生成する、プログラミング支援装置。
【請求項２】
前記動作プログラムに基づく動作シミュレーションにより前記検証対象時刻における前記複数台のロボットのシミュレーション画像を生成するシミュレーション画像生成部と、
前記インタフェース部は、前記シミュレーション画像を更に含むユーザインタフェースを生成する、請求項１記載のプログラミング支援装置。
【請求項３】
前記ジョブ画像生成部は、前記複数のジョブを実行順に並べたフローチャートと、前記フローチャートのうち前記検証対象時刻において実行される部分を示すマーカとを前記複数台のロボットごとに示すように前記ジョブ画像を生成する、請求項２記載のプログラミング支援装置。
【請求項４】
複数の作業用ジョブの実行順序を前記複数台のロボットごとに設定する実行順序設定部と、
前記実行順序設定部が設定した実行順序に基づいて前記複数の作業用ジョブ間の移動用ジョブを前記複数台のロボットごとに生成するジョブ生成部と、を更に備え、
前記ジョブ画像生成部は、前記複数の作業用ジョブをそれぞれ示す複数の作業シンボルと、前記移動用ジョブを示す移動シンボルとを含む前記フローチャートを前記複数台のロボットごとに示す前記ジョブ画像を生成する、請求項３記載のプログラミング支援装置。
【請求項５】
前記時刻指定画像生成部は、前記経過時間バーにおいて前記作業用ジョブの実行期間と前記移動用ジョブの実行期間とを更に示すように前記時刻指定画像を生成する、請求項４記載のプログラミング支援装置。
【請求項６】
前記ジョブ画像における入力に応じて前記移動用ジョブの生成条件を個別に変更する生成条件変更部を更に備え、
前記ジョブ生成部は、前記生成条件変更部による変更後の生成条件に対応する前記移動用ジョブを当該変更後の生成条件に基づいて再生成する、請求項４又は５記載のプログラミング支援装置。
【請求項７】
前記実行順序設定部は、前記ジョブ画像において前記作業用ジョブを移動させる入力に応じて少なくとも１台のロボットの前記実行順序を再設定し、
前記ジョブ生成部は、前記実行順序設定部により再設定された前記実行順序に応じて少なくとも１つの前記移動用ジョブを再生成する、請求項４〜６のいずれか一項記載のプログラミング支援装置。
【請求項８】
前記実行順序設定部は、前記ジョブ画像において２つの前記フローチャート間で前記作業用ジョブを移動させる入力に応じて、当該作業用ジョブの移動に関わる２台のロボットの前記実行順序を再設定し、
前記ジョブ生成部は、前記実行順序設定部により再設定された前記実行順序に応じて少なくとも１つの前記移動用ジョブを前記２台のロボットごとに再生成する、請求項７記載のプログラミング支援装置。
【請求項９】
前記実行順序設定部による前記実行順序の再設定に応じて前記移動用ジョブの再生成が必要となる要修正箇所と、前記移動用ジョブの再生成が不要な修正不要箇所とを認識する修正箇所認識部を更に備え、
前記ジョブ生成部は、前記修正不要箇所の前記移動用ジョブを再生成せずに、前記要修正箇所の前記移動用ジョブを再生成する、請求項７又は８記載のプログラミング支援装置。
【請求項１０】
前記実行順序設定部は、前記ジョブ画像において前記作業用ジョブを移動させる入力に応じて少なくとも１台のロボットの前記実行順序を再設定し、
前記ジョブ生成部は、前記実行順序設定部により再設定された前記実行順序に応じて少なくとも１つの前記移動用ジョブを再生成し、
前記待機期間設定部は、前記実行順序設定部により再設定された前記実行順序と、前記ジョブ生成部により再生成された前記移動用ジョブとに基づいて、前記複数のジョブのそれぞれの実行待機期間を前記複数台のロボットごとに再設定し、
前記時刻指定画像生成部は、前記実行順序設定部により再設定された実行順序と、前記ジョブ生成部により再生成された移動用ジョブと、前記待機期間設定部により再設定された実行待機期間とに基づいて前記経過時間バーを更新する、請求項５記載のプログラミング支援装置。
【請求項１１】
前記複数台のロボットごとの動作の制約条件に基づいて、前記作業用ジョブの実行可否を判定する実行可否判定部を更に備える、請求項７〜１０のいずれか一項記載のプログラミング支援装置。
【請求項１２】
予め設定された作業用ジョブ間の依存関係を記憶する依存関係記憶部を更に備え、
前記実行可否判定部は、前記依存関係に更に基づいて前記作業用ジョブの実行可否を判定する、請求項１１記載のプログラミング支援装置。
【請求項１３】
複数の作業用ジョブの実行順序を複数台のロボットごとに設定する実行順序設定部と、
前記実行順序設定部が設定した実行順序に基づいて前記複数の作業用ジョブ間の移動用ジョブを前記複数台のロボットごとに生成するジョブ生成部と、
前記複数の作業用ジョブと前記移動用ジョブとを含む動作プログラムを複数台のロボットごとに記憶するプログラム記憶部と、
ユーザにより検証対象時刻が指定された場合に、前記検証対象時刻において前記複数台のロボットが実行するジョブを示すジョブ画像を前記動作プログラムに基づいて生成するジョブ画像生成部と、
前記ジョブ画像における入力に応じて前記移動用ジョブの生成条件を個別に変更する生成条件変更部と、を備え、
前記ジョブ生成部は、前記生成条件変更部による変更後の生成条件に対応する前記移動用ジョブを当該変更後の生成条件に基づいて再生成するプログラミング支援装置。
【請求項１４】
複数の作業用ジョブの実行順序を複数台のロボットごとに設定する実行順序設定部と、
前記実行順序設定部が設定した実行順序に基づいて前記複数の作業用ジョブ間の移動用ジョブを前記複数台のロボットごとに生成するジョブ生成部と、
前記複数の作業用ジョブと前記移動用ジョブとを含む動作プログラムを複数台のロボットごとに記憶するプログラム記憶部と、
前記複数の作業用ジョブと前記移動用ジョブとを実行順に並べたフローチャートを前記複数台のロボットごとに示し、ユーザにより検証対象時刻が指定された場合に、前記フローチャートのうち前記検証対象時刻において実行される部分を示すマーカを前記複数台のロボットごとに示すジョブ画像を前記動作プログラムに基づいて生成するジョブ画像生成部と、を備え、
前記実行順序設定部は、前記ジョブ画像において２つの前記フローチャート間で前記作業用ジョブを移動させる入力に応じて、当該作業用ジョブの移動に関わる２台のロボットの前記実行順序を再設定し、
前記ジョブ生成部は、前記実行順序設定部により再設定された前記実行順序に応じて少なくとも１つの前記移動用ジョブを前記２台のロボットごとに再生成するプログラミング支援装置。
【請求項１５】
請求項１〜１４のいずれか一項記載のプログラミング支援装置と、
前記複数台のロボットと、
前記動作プログラムに従って前記複数台のロボットを制御するコントローラと、を備えるロボットシステム。
【請求項１６】
複数のジョブをそれぞれ含む動作プログラムを複数台のロボットごとに記憶することと、
前記複数台のロボットの相対的な動作タイミングを調節するように、前記複数のジョブのそれぞれの実行待機期間を前記複数台のロボットごとに設定することと、
時間軸を表す方向における位置を示すカーソルを含む時刻指定画像を生成することと、
前記時刻指定画像における前記カーソルの位置に従って検証対象時刻を指定することと、
前記検証対象時刻において前記複数台のロボットが実行するジョブを示すジョブ画像を前記動作プログラムに基づいて生成することと、
前記時刻指定画像と、前記ジョブ画像とを含むユーザインタフェースを生成することと、を含み、
前記時間軸に沿ってジョブの実行期間とジョブの実行待機期間とを示す経過時間バーを前記複数台のロボットごとに更に含む前記時刻指定画像を生成する、プログラミング支援方法。
【請求項１７】
複数の作業用ジョブの実行順序を複数台のロボットごとに設定することと、
前記実行順序に基づいて前記複数の作業用ジョブ間の移動用ジョブを前記複数台のロボットごとに生成することと、
前記複数の作業用ジョブと前記移動用ジョブとを含む動作プログラムを複数台のロボットごとに記憶することと、
ユーザにより検証対象時刻が指定された場合に、前記検証対象時刻において前記複数台のロボットが実行するジョブを示すジョブ画像を前記動作プログラムに基づいて生成することと、
前記ジョブ画像における入力に応じて前記移動用ジョブの生成条件を個別に変更することと、
変更後の生成条件に対応する前記移動用ジョブを当該変更後の生成条件に基づいて再生成することと、を含むプログラミング支援方法。
【請求項１８】
複数の作業用ジョブの実行順序を複数台のロボットごとに設定することと、
前記実行順序に基づいて前記複数の作業用ジョブ間の移動用ジョブを前記複数台のロボットごとに生成することと、
前記複数の作業用ジョブと前記移動用ジョブとを含む動作プログラムを複数台のロボットごとに記憶することと、
前記複数の作業用ジョブと前記移動用ジョブとを実行順に並べたフローチャートを前記複数台のロボットごとに示し、ユーザにより検証対象時刻が指定された場合に、前記フローチャートのうち前記検証対象時刻において実行される部分を示すマーカを前記複数台のロボットごとに示すジョブ画像を前記動作プログラムに基づいて生成することと、
前記ジョブ画像において２つの前記フローチャート間で前記作業用ジョブを移動させる入力に応じて、当該作業用ジョブの移動に関わる２台のロボットの前記実行順序を再設定することと、
再設定された前記実行順序に応じて少なくとも１つの前記移動用ジョブを前記２台のロボットごとに再生成することと、を含むプログラミング支援方法。