以下、実施形態について、図面を参照しつつ詳細に説明する。説明において、同一要素又は同一機能を有する要素には同一の符号を付し、重複する説明を省略する。本実施形態に係るロボットシステムは、オペレータにより教示された動作をロボットに実行させることにより、加工、組立等の様々な作業を自動化するシステムである。
1.ロボットシステム
図1に示すように、ロボットシステム1は、ロボット2と、ロボットコントローラ3と、プログラミング支援装置100とを備える。
ロボット2は、例えば多軸(例えば6軸又は7軸)のシリアルリンク型の垂直多関節ロボットであり、その先端部2aにツールを保持した状態で様々な作業を実行できるように構成されている。ロボット2は、所定の範囲内において、先端部2aの位置及び姿勢を自在に変更し得るものであればよく、必ずしも6軸の垂直多関節ロボットに限られない。例えばロボット2は、6軸に1軸の冗長軸を追加した7軸の垂直多関節ロボットであってもよい。
ロボットコントローラ3は、予め生成された動作プログラムに従ってロボット2を制御する。動作プログラムは、例えばロボット2の先端部2aのパス情報を含む。パス情報は、先端部2aの位置・姿勢の経時的な推移を指定する情報である。例えばパス情報は、時系列に並ぶ複数の位置・姿勢目標値を含む。ロボットコントローラ3は、先端部2aの位置・姿勢を上記位置・姿勢目標値に一致させるための関節角度目標値(ロボット2の各関節の角度目標値)を算出し、当該関節角度目標値に従ってロボット2を制御する。
プログラミング支援装置100は、上記動作プログラムのプログラミングを支援する装置である。プログラミング支援装置100は、ロボット2の動作パターンを規定する複数の作業ジョブを記憶することと、複数の作業ジョブのいずれかについて、ロボット2の動作環境を指定する環境条件を、ユーザインタフェースへの入力に応じて設定することと、複数の作業ジョブのうち、ロボット2に実行させる複数の実行対象の作業ジョブを、ユーザインタフェースへの入力に応じて設定することと、複数の実行対象の作業ジョブの実行順序を定めた実行フローにおいて、少なくとも一つの作業ジョブが環境条件を満たすか否かを、当該実行順序に基づいて判定することと、を実行するように構成されている。
動作パターンとは、ロボット2に所定の作業を実行させるように、予め作成された動作命令である。動作パターンは、当該所定の作業の実行中における上記パス情報を含む。
プログラミング支援装置100は、実行フローのいずれか一つの前記作業ジョブの実行タイミングにおける環境状態を、当該実行フローの他の作業ジョブにおけるロボット2の動作内容と、当該実行フローの実行順序とに基づいて特定し、当該環境状態が当該一つの作業ジョブの環境条件を満たすか否かを判定してもよい。
図31は、例えば、蓋12を有しボルト13を収容する箱11を含む環境にてロボット2を動作させるための三つの作業ジョブを含む実行フローを模式的に示す。図31の(a)は、蓋12を開く作業ジョブ「ジョブ01」を示す。図31の(b)は、箱11からボルト13を取り出す別の作業ジョブ「ジョブ02」を示す。図31の(c)は、箱11の蓋12を閉じる更に別のジョブ「ジョブ03」を示す。
ジョブ01,02,03のそれぞれにより規定される動作パターンは、作業対象物を物理的に操作する動作を含む。例えばジョブ01により規定される動作パターンは、蓋12を作業対象物として、蓋12を閉じた状態から開いた状態にする動作を含む。ジョブ02により規定される動作パターンは、箱11内からボルト13を取り出す動作を含む。ジョブ03により規定される動作パターンは、蓋12を開いた状態から閉じた状態にする動作を含む。
図32に示すように、ジョブ01,02,03のそれぞれには、上述した環境条件が設定されている。それぞれの環境条件は、ロボットの作業環境に含まれる物の状態を指定する条件を含む。ロボットの作業環境に含まれる物とは、上述した作業対象物及びその他の物を含み得る。例えばジョブ01の蓋12を開く動作は、蓋12が閉じた状態でなければ実行することができない。このためジョブ01には、当該ジョブの作業対象物である蓋12の状態を指定する環境条件として、「蓋12が閉じていること」が設定されている。ジョブ02の箱11からボルト13を取り出す動作は、箱11内にボルト13が位置し、蓋12が開いている状態でなければ実行することができない。このためジョブ02には、当該ジョブの作業対象物であるボルト13の状態を指定する環境条件として、「ボルト13が箱11の中にあること」が設定され、他の物である蓋12の状態を指定する環境条件として、「蓋12が開いていること」が設定されている。更に、ジョブ03の蓋12を閉じる動作は、蓋12が開いた状態でなければ実行することができない。このためジョブ03には、当該ジョブの作業対象物である蓋12の状態を指定する環境条件として、「蓋12が開いていること」が設定されている。
図31のように、実行フローが二つ以上の作業ジョブを順に含む場合に、プログラミング支援装置100は、少なくとも先行する作業ジョブ(以下、「第一作業ジョブ」という。)におけるロボットの動作内容に基づいて後続する作業ジョブ(以下、「第二作業ジョブ」という。)の実行タイミングにおける環境状態を特定し、当該環境状態が第二作業ジョブの環境条件を満たすか否かを判定してもよい。
より具体的に、第一作業ジョブにより規定される動作パターンが、作業対象物を物理的に操作する動作を含み、第二作業ジョブの環境条件が、当該作業対象物の状態を指定する条件を含む場合に、プログラミング支援装置100は、第一作業ジョブに従ってロボット2が動作した後の当該作業対象物の状態を第二作業ジョブの実行タイミングにおける環境状態として特定し、当該環境状態が第二作業ジョブの環境条件を満たすか否かを判定してもよい。
環境状態とは、実行フローに従ってロボット2が動作する場合に、実行フローにおける各タイミングにおいてロボット2の作業環境に実際に生じる状態を意味する。環境条件と同様に、環境状態は、ロボット2の作業環境に含まれる物の状態を含む。ロボット2の作業環境に含まれる物とは、上述した作業対象物及びその他の物を含み得る。
例えば、図33に示すように、プログラミング支援装置100は、ジョブ01に従ってロボットが動作した後の蓋12の状態である「開」を、ジョブ02の実行タイミングにおける環境状態として特定する。また、ジョブ01はボルト13に対する動作を含んでいないので、プログラミング支援装置100は、ジョブ01に従ってロボット2が動作する前後でボルト13の状態を変化させず、ジョブ02においても引き続きボルト13の状態を「箱11の中」とする。プログラミング支援装置100は、これらの環境状態がジョブ02の環境条件を満たすか否かを判定する。ジョブ02における環境条件は、「ボルト13が箱11の中にあること」、「蓋12が開いていること」を含むので、当該環境状態は、ジョブ02における環境条件を満たすこととなる。
実行フローが第一作業ジョブ、第二作業ジョブ及び第三作業ジョブを順に含む場合に、プログラミング支援装置100は、少なくとも第一作業ジョブにおけるロボットの動作内容に基づいて第二作業ジョブの実行タイミングにおける環境状態を特定し、当該環境状態を少なくとも第二作業ジョブにおけるロボットの動作内容に基づいて更新して第三作業ジョブの実行タイミングにおける環境状態を特定し、当該環境状態が第三作業ジョブの環境条件を満たすか否かを判定してもよい。
例えば、プログラミング支援装置100は、上述したように、ジョブ01におけるロボットの動作内容に基づいて、ジョブ02の実行タイミングにおける蓋12及びボルト13の状態を「開」、「箱11の中」とする。更に、プログラミング支援装置100は、ジョブ02に従ってロボットが動作した後のボルト13の状態である「箱11の外」を、ジョブ03の実行タイミングにおける環境状態として特定する。また、ジョブ02は蓋12に対する動作を含んでいないので、プログラミング支援装置100は、ジョブ02に従ってロボット2が動作する前後で蓋12の状態を変化させず、ジョブ03においても引き続き蓋12の状態を「開」とする。プログラミング支援装置100は、これらの環境状態がジョブ03の環境条件を満たすか否かを判定する。ジョブ03における環境条件は、「蓋12が開いていること」を含み、ボルト13についての条件は含んでいないので、当該環境状態は、ジョブ03における環境条件を満たすこととなる。
プログラミング支援装置100は、実行フローのいずれか一つの作業ジョブの環境条件と、当該実行フローの他の作業ジョブにおけるロボット2の動作内容とに基づいて、当該一つの作業ジョブが当該環境条件を満たすために、当該一つの作業ジョブと当該他の作業ジョブとの間に必要とされる順序条件を生成し、当該実行フローの実行順序が当該順序条件を満たすか否かを判定してもよい。
例えばプログラミング支援装置100は、実行フローが、ジョブ01に従ってロボット2が動作した後の蓋12の状態である「開」と、ジョブ03に従ってロボット2が動作した後の蓋12の状態である「閉」と、ジョブ02の環境条件が指定する「蓋12が開いていること」との関係に基づいて、ジョブ02はジョブ01の後、ジョブ03の前に実行されること、という順序条件を生成する。図31において、ジョブ01、ジョブ02及びジョブ03は順に並んでいるので、図31の実行フローの実行順序は、当該順序条件を満たすこととなる。
プログラミング支援装置100は、ユーザインタフェースへの入力に基づいて、少なくとも二つの実行対象の作業ジョブの間に、実行タイミングの関係を指定するタイミング条件を更に設定するように構成されていてもよい。タイミング条件の具体例には、作業ジョブの順序を指定する条件が含まれる他、作業ジョブの間に確保すべき待機時間を指定する条件等も含まれる。この場合に、プログラミング支援装置100は、タイミング条件を満たすように実行順序を定めた実行フローにおいて、少なくとも一つの作業ジョブが環境条件を満たすか否かを当該実行順序に基づいて判定してもよい。
図34は、タイミング条件の設定例を示す。図34の例では、ジョブ01とジョブ02との間に「ジョブ01がジョブ02よりも前に実行されること」との条件が設定され、ジョブ02とジョブ03との間に「ジョブ03がジョブ02よりも後に実行されること」との条件が設定されている。このようなタイミング条件が設定される場合、当該タイミング条件を満たす実行フローによれば、ジョブ02の実行タイミングにおける蓋12の状態は必然的に「開」となる。このため、図34に示すタイミング条件が設定される場合、ジョブ02の環境条件として蓋12の状態を指定することが必須ではない。換言すると、ジョブ02の環境条件が「蓋が開いていること」を含んでいるのであれば、図34のタイミング条件を設定することが必須ではない。
動作プログラムは、例えば、ロボット2等の一つ以上の制御対象を制御するコントローラ(例えばロボットコントローラ3)によって実行される。プログラミング支援装置100が、動作プログラムのプログラミング支援を実行する制御対象は、一台のロボット2に限られない。例えばプログラミング支援装置100は、複数の制御対象(例えば複数台のロボット2)を制御するための動作プログラムのプログラミング支援を実行するように構成されていてもよい。
2.プログラミング支援装置
以下、プログラミング支援装置100の構成を具体的に説明する。図2に示すように、プログラミング支援装置100は、一つ又は複数のコンピュータにより構成された本体110と、ユーザインタフェース130とを備える。
ユーザインタフェース130は、例えばモニタ131及び入力デバイス132を有する。モニタ131は、本体110から出力された情報を表示するための装置である。モニタ131は、グラフィック表示が可能であればいかなるものであってもよく、その具体例としては液晶パネルなどが挙げられる。入力デバイス132は、本体110に対し情報を入力するための装置である。入力デバイス132は、所望の情報を入力可能であればいかなるものであってもよく、その具体例としてはキーパッド及びマウス等が挙げられる。なお、モニタ131及び入力デバイス132は、入力機能と表示機能とを併せ持つタッチパネルとして一体化されていてもよい。
本体110は、機能的な構成(以下、「機能モジュール」という。)として、メインモジュール200と、環境構築モジュール300と、条件設定モジュール400と、プログラミングモジュール500と、シミュレーションモジュール600とを備える。
メインモジュール200は、ユーザの入力に応じて、プログラミング支援装置100の各種機能を呼び出すためのモジュールである。
環境構築モジュール300は、ロボット2の動作シミュレーション用の環境モデルデータ(モデルデータ)を構築するためのモジュールである。環境モデルデータは、例えばロボット2及びその周辺環境のモデルをポリゴンにより構成した三次元のサーフェスデータである。環境構築モジュール300は、構築した環境モデルデータを環境データ記憶部111に書き込む。
条件設定モジュール400は、作業ジョブごとの実行上の制約条件である第一制約条件と、作業ジョブ同士の関係についての制約条件である第二制約条件とを含むプログラミング支援条件を設定するためのモジュールである。
第一制約条件は、上述した環境条件等、作業ジョブの目的を達するために不可避な条件を含む。例えば、蓋つきの箱にワークを出し入れするための作業ジョブについては、蓋が空いた状態で実行することが上記不可避な条件となる。また、ツールにより加工を行うための作業ジョブについては、ツールを保持していること、ツールをオン状態にしていること等が上記不可避な条件となる。
第二制約条件は、上述したタイミング条件等、作業ジョブ同士の関係を規定する条件を含む。作業ジョブ同士の関係は、第一制約条件から導出可能なものであってもよいし、第一制約条件からは導出されないものであってもよい。第二制約条件は、個々の作業ジョブの目的を達するために不可避ではない条件も含む。
プログラミングモジュール500は、条件設定モジュール400により設定されたプログラミング支援条件に従って動作プログラムのプログラミング支援を実行するモジュールである。例えばプログラミングモジュール500は、上記プログラミング支援条件に従って動作プログラムを生成し、当該動作プログラムを動作プログラム記憶部112に書き込む。プログラミングモジュール500は、動作プログラムを生成するための仮フローをチェックしてもよい。
シミュレーションモジュール600は、ロボット2の動作シミュレーションを実行するモジュールである。動作シミュレーションとは、シミュレーション環境下においてロボット2のモデルを動作させることを意味する。例えばシミュレーションモジュール600は、上記環境モデルデータ(環境データ記憶部111に記憶された環境モデルデータ)により特定されるシミュレーション環境下において、上記動作プログラム(動作プログラム記憶部112に記憶された動作プログラム)に従ってロボット2のモデルを動作させる。
メインモジュール200は、画面データ生成部201及びモジュール切替部202を有する。画面データ生成部201は、メイン画面A1(図3参照)をモニタ131に表示するためのデータを生成する。メイン画面A1は、プログラミング支援装置100の各種機能を呼び出すための操作画面である。モジュール切替部202は、メイン画面A1への操作入力に応じて、実行するモジュールを切り替える、ユーザインタフェース上の一つ以上のボタンと関連付けられている。
図3に示すように、メイン画面A1は、例えば環境構築ボタンA2と、プランニングボタンA3と、シミュレーションボタンA4と、終了ボタンA5とを有する。環境構築ボタンA2は、環境構築モジュール300を起動するためのボタンである。プランニングボタンA3は、条件設定モジュール400及びプログラミングモジュール500を起動するためのボタンである。シミュレーションボタンA4は、シミュレーションモジュール600を起動するためのボタンである。終了ボタンA5は、メイン画面をクローズし、メインモジュール200による処理を終了させるためのボタンである。
以下、環境構築モジュール300、条件設定モジュール400、プログラミングモジュール500及びシミュレーションモジュール600の構成を説明する。
(1)環境構築モジュール
図4に示すように、環境構築モジュール300は、より細分化された機能モジュールとして、画面データ生成部301と、更新部302と、モデル追加部303と、描画データ生成部304と、属性データ登録部305と、状態データ登録部306とを有する。
画面データ生成部301は、環境構築画面B1をモニタ131に表示するためのデータを生成する。環境構築画面B1は、環境モデルデータの構築用の入力画面である。
図5を参照して、環境構築画面B1によれば、モデルをシミュレーション環境(シミュレーション環境エリアB2によって表される)に追加する(モデル追加ボタンB3によって)こと、モデルの属性を規定すること(属性設定ボタンB4によって)こと、及びモデルの状態を設定すること(状態設定ボタンB5によって)ができる。以下、モデルを「入力ターゲットモデル」ともいう。モデルは、シミュレーション環境において物を表す。環境構築画面B1のいくつかの機能的な特徴として、入力ターゲットモデルは、シミュレーション環境エリア(B2)に表示される画像から選択されてもよい。図5に示すように、環境構築画面B1は、例えばシミュレーション環境エリアB2と、モデル追加ボタンB3と、属性設定ボタンB4と、状態設定ボタンB5と、終了ボタンB6とを有する。シミュレーション環境エリアB2は、構築中の環境モデルデータにより示されるシミュレーション環境を三次元画像等により表示するエリアである。
モデル追加ボタンB3は、環境モデルデータにモデルデータを追加するためのボタンである。モデルデータは、例えばポリゴンにより構成された三次元のサーフェスデータである。
属性設定ボタンB4は、環境モデルデータに含まれる物を特定するデータ(以下、「属性データ」という。)を入力するためのボタンである。
状態設定ボタンB5は、環境モデルデータに含まれる物の状態を示すデータ(以下、「状態データ」という。)を入力するためのボタンである。状態データの具体例として、物が蓋つきの箱である場合には、「蓋が開いた状態」、「蓋が閉じた状態」等が挙げられる。物がオン・オフを切り替えて用いられるツールである場合には、「オン状態」、「オフ状態」等が挙げられる。
終了ボタンB6は、環境構築画面B1をクローズし、環境構築モジュール300による処理を終了させるためのボタンである。
図4に戻り、更新部302は、入力デバイス132への操作入力に応じて、環境構築画面B1の表示用データを更新する。例えば更新部302は、モデル追加ボタンB3がクリックされるのに応じて、モデル選択画面C1を表示するように環境構築画面B1の表示用データを更新する。また、更新部302は、属性設定ボタンB4がクリックされるのに応じて、属性入力画面D1を表示するように環境構築画面B1の表示用データを更新する。更に、更新部302は、状態設定ボタンB5がクリックされるのに応じて、状態入力画面F1を表示するように環境構築画面B1の表示用データを更新する。
モデル追加ボタンB3がクリックされると(図5)、図6に示すモデル選択画面C1がユーザインタフェース上で開く。モデル選択画面C1は、環境モデルデータに追加すべきモデルデータを選択するための画面である。図6に示すように、モデル選択画面C1は、リスト表示エリアC2と、追加ボタンC3とを有する。リスト表示エリアC2は、環境モデルデータに追加可能なモデルデータのリストを表示する。追加ボタンC3は、リスト表示エリアC2において選択されたモデルデータの追加を指示するボタンである。
属性設定ボタンB4がクリックされると(図5)、図7に示す属性入力画面D1がユーザインタフェース上で開く。属性入力画面D1は、入力対象モデルの属性データを入力するための画面である。入力対象モデルは、環境モデルデータの構成要素としてシミュレーション環境エリアB2(図5)に表示されているモデルのいずれかをクリックすることによって選択可能である。図7に示すように、属性入力画面D1は、入力ボックスD2と、入力ボックスD3と、アイコン追加ボタンD4と、登録ボタンD5とを有する。入力ボックスD2は、入力対象モデルの種別(例えば「ロボット」、「ツール」、「ワーク」、「装置」等)を入力するための入力ボックスである。入力ボックスD2は、予め登録された選択肢の選択入力を可能とするように構成されていてもよい(図7の(b)参照)。入力ボックスD3は、上記入力対象モデルの名称を入力するための入力ボックスである。アイコン追加ボタンD4は、入力対象モデルに関連付けるアイコンデータを入力するためのボタンである。例えば、アイコンデータは、アイコン追加ボタンD4のクリックに伴い表示されるアイコン選択画面E1(図8)において入力可能である。
図8に示すように、アイコン選択画面E1は、リスト表示エリアE2と、追加ボタンE3とを有する。リスト表示エリアE2は、使用可能なアイコンデータのリストを表示する。追加ボタンE3は、リスト表示エリアE2において選択されたアイコンデータの追加を指示するボタンである。
図7に戻り、登録ボタンD5は、属性入力画面D1において入力されたデータの登録を指示するためのボタンである。登録ボタンD5は、入力された属性データを、入力ターゲットモデル(又は「物」、又はシミュレーション環境における「モデル部品」)と関連付けてストレージに登録(又は記録)するためのボタンである。
状態設定ボタンB5がクリックされると(図5)、図9に示す状態入力画面F1がユーザインタフェース上で開く。図9に示すように、状態入力画面F1は、入力ボックスF2と、入力ボックスF3と、登録ボタンF4とを含む。入力ボックスF2は、入力対象モデルを選択するための入力ボックスである。入力ボックスF2は、環境データ記憶部111に登録済みのモデル名の選択入力を可能とするように構成されていてもよい。入力ボックスF3は、状態の名称を入力するための入力ボックスである。登録ボタンF4は、状態入力画面F1において入力されたデータの登録を指示するためのボタンである。登録ボタンF4は、入力された状態を、入力ターゲットモデル(又は「物」、又はシミュレーション環境における「モデル部品」)と関連付けてストレージに登録(又は記録)するためのボタンである。
図4に戻り、更新部302は、環境構築画面B1(図5)においてモデル追加ボタンB3がクリックされ、モデルデータが環境モデルデータに追加された後に、追加後のシミュレーション環境の画像を表示するようにシミュレーション環境エリアB2の表示用データを更新する。
さらに図4を参照し、モデル追加部303は、ユーザインタフェース130への入力に応じて、環境データ記憶部111の環境モデルデータにモデルデータを追加する。例えばモデル追加部303は、モデル追加ボタンB3(図5)がクリックされるのに応じ、モデルデータ記憶部113を参照してモデルデータのリストを生成し、リスト表示エリアC2(図6)の表示用データとして更新部302に出力する。
モデルデータ記憶部113は、予め作成されてもよい複数のモデルデータ(又はデータ要素)を記憶する。モデルデータ記憶部113は、プログラミング支援装置100に設けられていてもよいし、プログラミング支援装置100の他の装置(例えば三次元設計用のコンピュータ)に設けられていてもよい。
図6に示すモデル選択画面C1をさらに参照して、その後、モデル追加部303は、追加ボタンC3のクリックにより選択されたモデルデータをモデルデータ記憶部113から取得して環境データ記憶部111の環境モデルデータに追加する。
描画データ生成部304は、環境データ記憶部111に記憶された環境モデルデータを用いてシミュレーション環境の描画データを生成し、シミュレーション環境エリアB2(図5)の表示用データとして更新部302に出力する。
属性データ登録部305は、ユーザインタフェース130への入力に応じて、環境データ記憶部111の環境モデルデータに上記属性データを追加する。例えば属性データ登録部305は、属性入力画面D1(図7)において入力されたデータを登録ボタンD5(図7)のクリックに応じて取得し、入力対象モデルに対応付けて環境データ記憶部111に書き込む。
状態データ登録部306は、ユーザインタフェース130への入力に応じて、環境データ記憶部111の環境モデルデータに上記状態データを追加する。例えば状態データ登録部306は、状態入力画面F1(図9)において入力されたデータを登録ボタンF4(図9)のクリックに応じて取得し、入力対象モデルに対応付けて環境データ記憶部111に書き込む。
(2)条件設定モジュール
条件設定モジュール400(図2)は、上記第一制約条件及び上記第二制約条件を分けて設定する。図10に示すように、条件設定モジュール400は、より細分化された機能モジュールとして、画面データ生成部401と、第一更新部402と、第二更新部403と、第三更新部404と、リスト生成部405と、制約メニュー生成部406と、第一入力サポート部408と、第二入力サポート部409と、オプション情報取得部410と、条件読込部411と、第一条件設定部412と、仮フロー生成部416と、第二条件設定部417と、演算レベル設定部418と、条件登録部419とを有する。
画面データ生成部401は、第一制約条件を入力するための第一入力エリア及び第二制約条件を入力するための第二入力エリアを含む入力画面(図11参照)をモニタ131の表示用データを生成し、モニタ131に出力する。画面データ生成部401は、複数の作業ジョブのリストを示すリスト表示エリアを更に含む入力画面の表示用データを生成してもよい。画面データ生成部401は、リスト表示エリアが第一入力エリア及び第二入力エリアの間に配置されるように入力画面の表示用データを生成してもよい。
例えば画面データ生成部401は、図11に示すプランニング画面G1(入力画面)の表示用データを生成する。プランニング画面G1は、リスト表示エリアG2と、第一入力エリアG9と、第二入力エリアG20と、制約メニュー表示エリアG32と、第三入力エリアG34と、条件登録ボタンG36と、プランニングボタンG37と、保存ボタンG38とを有する。
リスト表示エリアG2は、予め作成されている複数の作業ジョブのリストを表示する。リスト表示エリアG2は、複数の作業ジョブにそれぞれ対応する複数のリスト要素G3を並べて表示する。リスト要素G3は、所定の時系列順に並んでいてもよい。リスト要素G3は、名称表示部G5及びアイコン表示部G6を含む。名称表示部G5は、作業ジョブの名称をテキスト形式で表示する。アイコン表示部G6は、作業ジョブの内容に関する一つ以上のアイコン(例えば作業対象物のアイコン)を表示する。
第一入力エリアG9は、第一制約条件を入力するためのエリアである。第一入力エリアG9は、作業内容入力エリアG10及び制約条件入力エリアG16を含む。
作業内容入力エリアG10は、作業ジョブの内容を特定する情報(以下、「作業内容情報」という。)を入力するためのエリアである。作業内容情報は、例えば作業対象物を特定する情報と、作業対象物に対する操作内容を特定する情報とを含む。なお、作業対象物は、ロボット2による作業の対象となればいかなる物であってもよい。ワークに対する作業に際してロボット2が用いるツールも、ロボット2による搬送作業の対象となるので、作業対象物に含まれる。
例えば作業内容入力エリアG10は、複数の項目指定ボタンG11と、アイコン選択エリアG12と、入力内容表示エリアG13と、名称入力エリアG15とを含む。項目指定ボタンG11は、上記作業内容情報の項目を選択するためのボタンである。アイコン選択エリアG12は、項目指定ボタンG11のクリックにより選択された項目に入力し得る選択肢をアイコン表示する。例えば、項目指定ボタンG11のうち「対象」ボタンがクリックされると、対象の選択肢(例えば、箱、ボルト、箱に収容された物等)がアイコンとして表示される。また、例えば、項目指定ボタンG11のうち「ツール」ボタンがクリックされると、ツールの選択肢(例えば、ねじ回し、レンチ、治具等)がアイコンとして表示される。入力内容表示エリアG13は、入力済みの作業内容情報を表示する。名称入力エリアG15は、作業ジョブの名称の入力を取得する。
制約条件入力エリアG16は、制約条件を入力するためのエリアである。制約条件入力エリアG16は、複数の条件入力部G17を有する。個々の条件入力部G17は、一つの制約条件の入力を取得する。条件入力部G17は、新規作成ボタンG18と、表示部G19とを有する。新規作成ボタンG18は、条件作成画面H1(図12を参照して後述)を表示させるためのボタンである。表示部G19は、条件作成画面H1において作成された条件を表示する。
第二入力エリアG20は、第二制約条件を入力するためのエリアである。第二入力エリアG20は、条件入力部G21及び結果出力部G29を有する。条件入力部G21は、フロー表示部G22と、タブG28とを含む。フロー表示部G22は、複数のフロー要素G24を並べた仮フローG23と、少なくとも一つの条件要素G25とを表示する。仮フローG23は、制御対象(例えばロボット2)によって実行される作業ジョブを含む手順を表す。仮フローG23は、動作プログラムを構成するために選択された複数の作業ジョブの実行順序を示す。複数のフロー要素G24は、複数の作業ジョブにそれぞれ対応する。
プログラミング支援装置100が、複数の制御対象(例えばロボット)について動作プログラムのプログラミング支援を実行する場合、第二入力エリアG20は、複数の制御対象にそれぞれ対応する複数の仮フローG23を、図11の「手順1」、「手順2」と名付けられたタブによって例示されるように表示してもよい。
条件要素G25は、仮フローG23における作業ジョブ間に設定された第二制約条件を図示する。例えば、条件要素G25は、第二制約条件の設定対象となっている二つの作業ジョブにそれぞれ対応する二つのフロー要素G24に関連付けて表示される。
図示の例においては、三つの条件要素G25,G26,G27が表示されている。条件要素G25は、一番目の作業ジョブと、二番目の作業ジョブとを一セットのジョブとしてグループ化する制約条件を示しており、一番目のフロー要素G24と二番目のフロー要素G24とを囲む枠体として表示されている。条件要素G26は、五番目の作業ジョブと、六番目の作業ジョブとの間に確保すべき時間間隔を定める制約条件を示しており、五番目のフロー要素G24と六番目のフロー要素G24とを結ぶライン上に図示されている。条件要素G27は、三番目の作業ジョブと、五番目の作業ジョブとの間に確保すべき時間間隔を定める制約条件を示しており、四番目のフロー要素G24を経ずに三番目のフロー要素G24と五番目のフロー要素G24とを結ぶライン上に図示されている。タブG28は、フロー表示部G22の上部に設けられており、条件入力部G21と結果出力部G29との表示切替に用いられる。
結果出力部G29は、プログラミングモジュール500により生成された実行フローを表示する。結果出力部G29は、実行フローを表示するフロー表示部G30と、タブG31とを含む。フロー表示部G30は、フロー表示部G22と同一の位置に表示される。タブG31は、上述のタブG28とは異なる位置にて、フロー表示部G30の上部に設けられている。フロー表示部G22が表示されている状態にてタブG31をクリックすると、フロー表示部G30を表示させることができ、フロー表示部G30が表示されている状態にてタブG28をクリックすると、フロー表示部G22を表示させることができる。
制約メニュー表示エリアG32は、第二入力エリアG20に入力可能な複数の制約条件のリストを表示する。制約メニュー表示エリアG32は、複数の制約条件にそれぞれ対応する複数のメニュー要素G33を並べて表示する。一例として、制約メニュー表示エリアG32は、第一入力エリアG9及び第二入力エリアG20の間において、リスト表示エリアG2に隣接するように配置されている。
第三入力エリアG34は、プログラミング支援における演算レベル(後述)の入力を取得する。例えば、第三入力エリアG34は、予め設定された複数の演算レベルをラジオボタンG35により選択し得るように構成されている。一例として、第三入力エリアG34は、第一入力エリアG9及び第二入力エリアG20の間に配置されており、制約メニュー表示エリアG32とは逆側にてリスト表示エリアG2に隣接するように配置されている。
条件登録ボタンG36は、第一入力エリアG9、第二入力エリアG20及び第三入力エリアG34への入力内容の登録を指示するためのボタンである。プランニングボタンG37は、第一入力エリアG9、第二入力エリアG20及び第三入力エリアG34への入力内容に従ったプログラミング支援の実行を指示するためのボタンである。プログラミング支援を実行することは、例えば、ロボットコントローラを動作させるための動作プログラムを生成することであってもよい。保存ボタンG38は、プログラミング支援により生成された動作プログラムの保存を指示するためのボタンである。
なお、プランニング画面G1の構成はあくまで一例である。入力画面は、第一入力エリア及び第二入力エリアを含む限りどのように構成されていてもよい。例えば入力画面は、第一入力エリア及び第二入力エリアがリスト表示エリアの上下に位置するように構成されていてもよい。入力画面は、第一入力エリアの少なくとも一部と、第二入力エリアの少なくとも一部とを同じ位置に切り替えて表示するように構成されていてもよい。
図10に戻り、第一更新部402は、ユーザインタフェース130への入力に応じて第一入力エリアG9の表示用データを更新する。第一更新部402は、リスト表示エリアG2において選択された作業ジョブの第一制約条件を入力可能とするように第一入力エリアG9の表示用データを更新してもよい。例えば、第一更新部402は、リスト表示エリアG2においていずれかのリスト要素G3がクリックされる(選択される)と、当該リスト要素G3に対応する作業ジョブの第一制約条件を入力可能とするように第一入力エリアG9の表示用データを更新する。より具体的に、第一更新部402は、当該作業ジョブについて既登録の情報が有る項目については、当該情報を当該項目の入力部分に表示し、他の項目については、当該項目の入力部分を空欄にするように第一入力エリアG9の表示用データを更新する。例えば、作業ジョブは、いくつかの項目(対象、ツール等)について、既に設定された条件を有していてもよい。なお、第一更新部402は、既登録の情報を後述の条件読込部411から取得する。
また、第一更新部402は、第一入力エリアG9への入力に応じて第一入力エリアG9の表示用データを更新する。例えば第一更新部402は、項目指定ボタンG11及びアイコン選択エリアG12への操作により、作業内容情報が入力されると、入力内容を反映させるように入力内容表示エリアG13を更新する。第一更新部402は、名称入力エリアG15へのテキスト入力に応じて、入力内容を名称入力エリアG15に表示する。第一更新部402は、条件入力部G17における新規作成ボタンG18のクリックに応じて、条件作成画面H1を表示するように第一入力エリアG9の表示用データを更新する。
例えば条件作成画面H1は、図12に示すように、入力ボックスH2と、入力ボックスH3と、入力ボックスH4と、作成ボタンH5とを有する。入力ボックスH2は、作業対象物を入力するための入力ボックスである。入力ボックスH3は、制約条件の適用タイミングを入力するための入力ボックスである。適用タイミングとは、作業ジョブの実行中のどの時点に制約条件を適用するかを示す情報である。入力ボックスH4は、制約条件の一例として、作業対象物の状態を指定する状態指定条件を入力するための入力ボックスである。入力ボックスH2,H3,H4は、予め登録された選択肢の選択入力を可能とするように構成されていてもよい(図12の(b)参照)。作成ボタンH5は、条件作成画面H1において入力されたデータに従った条件の作成を指示するためのボタンである。
図10に戻り、第一更新部402は、条件作成画面H1において入力されたデータに従った条件を作成し、当該条件を表示部G19に表示するように第一入力エリアG9の表示用データを更新する。
第二更新部403は、ユーザインタフェース130への入力に応じて第二入力エリアG20の表示用データを更新する。第二更新部403は、リスト表示エリアG2において選択された複数の作業ジョブを表示して当該複数の作業ジョブ間の第二制約条件を入力可能とするように第二入力エリアG20の表示用データを更新する。
第二更新部403は、リスト表示エリアG2において選択された複数の作業ジョブの仮フローG23を表示し、仮フローG23における作業ジョブ間に第二制約条件を入力可能とするように第二入力エリアG20の表示用のデータを更新してもよい。例えば、第二更新部403は、リスト表示エリアG2において選択したリスト要素G3を第二入力エリアG20に配置する入力がなされる度に、当該リスト要素G3に対応する作業ジョブを第二入力エリアG20の表示に追加するように表示用データを更新する。より具体的に、第二更新部403は、当該作業ジョブに対応するフロー要素G24を仮フローG23に追加するように表示用データを更新する。
なお、リスト表示エリアG2において選択したリスト要素G3を第二入力エリアG20に配置する入力の具体例としては、リスト表示エリアG2から第二入力エリアG20へのリスト要素G3のドラッグ入力、リスト表示エリアG2においてコピーしたリスト要素G3を第二入力エリアG20にペーストする入力等が挙げられるが、必ずしもこれらに限られない。
プログラミング支援装置100が、複数の制御対象について動作プログラムのプログラミング支援を実行する場合、第二更新部403は、複数の制御対象にそれぞれ対応する複数の仮フローG23を表示するように第二入力エリアG20の表示用データを更新してもよい。
第二入力エリアG20に仮フローG23が表示されることにより、仮フローG23における作業ジョブ間(フロー要素G24間)に第二制約条件を入力することが可能となる。例えば第二更新部403は、制約メニュー表示エリアG32において選択したメニュー要素G33を第二入力エリアG20のフロー要素G24間に配置する入力がなされると、当該メニュー要素G33に対応する制約条件を当該フロー要素G24間に挿入するように第二入力エリアG20の表示用データを更新する。
なお、制約メニュー表示エリアG32において選択したメニュー要素G33を第二入力エリアG20に配置する入力の具体例としては、制約メニュー表示エリアG32から第二入力エリアG20へのメニュー要素G33のドラッグ入力、制約メニュー表示エリアG32においてコピーしたメニュー要素G33を第二入力エリアG20にペーストする入力等が挙げられるが、必ずしもこれらに限られない。
プログラミング支援装置100が、複数の制御対象について動作プログラムのプログラミング支援を実行する場合、第二更新部403は、異なる制御対象のフロー要素G24間に制約条件を挿入するように第二入力エリアG20の表示用データを更新してもよい。
第二制約条件は、例えば、最初に2つのフロー要素を選択することによって、挿入又は追加されてもよい。2つのフロー要素を選択することは、二つのフロー要素G24を結ぶ線をクリックする(又は選択する)ことを含んでいてもよい。第二更新部403は、フロー要素G24間を結ぶ線がクリックされるのに応じ、規制入力画面J1を表示するように第二入力エリアG20の表示用データを更新する。規制入力画面J1は、フロー要素G24間に対応する作業ジョブ間に制約条件を入力するための画面である。図13に示すように、規制入力画面J1は、入力ボックスJ2を含む。入力ボックスJ2は、順番制約(順番変更の禁止)の有無を入力するための入力ボックスである。例えば入力ボックスJ2は、「あり」(順番制約があることを示す)、「なし」(順番制約がないことを示す)の選択入力を可能とするように構成されていてもよい(図13の(b)参照)。
図10に戻り、また、図11を参照して、仮フローG23は、仮フロー生成部416により生成される。仮フロー生成部416は、第二入力エリアG20に一つ目の作業ジョブのフロー要素G24が表示されている状態で、二つ目の作業ジョブのリスト要素G3が第二入力エリアG20にドラッグされた際に、ドラッグ完了位置と、既存のフロー要素G24との位置関係に基づいて、一つ目の作業ジョブと二つ目の作業ジョブの順序を設定し、最初の仮フローG23を生成する。例えば、仮フローG23が、一つ目の作業ジョブに対応する第一フロー要素G24を含み、第二作業ジョブに対応するリスト要素G3のドラッグの完了位置がフロー要素G24の下である場合、二つ目のフロー要素G24が生成され、仮フローG23は、二つ目の作業ジョブを一つ目の作業ジョブの後に実行するように更新される。ドラッグの完了位置が一つ目のフロー要素G24の上である場合、仮フローG23は、二つ目の作業ジョブを一つ目の作業ジョブの前に実行するように更新される。
以後、仮フロー生成部416は、リスト表示エリアG2から第二入力エリアG20にリスト要素G3がドラッグされる度に(又は、仮フローG23への挿入のために作業ジョブが他の何らかの方法で選択される度に)、当該リスト要素G3に対応する作業ジョブを仮フローG23に挿入する。この際に、仮フロー生成部416は、既存のフロー要素G24とドラッグ完了位置との関係に応じて作業ジョブの挿入位置を求める。
プログラミング支援装置100が、複数の制御対象について動作プログラムのプログラミング支援を実行する場合、仮フロー生成部416は、複数の制御対象にそれぞれ対応する複数の仮フローG23を生成してもよい。
第三更新部404は、ユーザインタフェース130への入力に応じて第三入力エリアG34の表示用データを更新する。例えば、第三更新部404は、第三入力エリアG34においてクリック又は選択されたラジオボタンG35をオンにするように表示用データを更新する。
リスト生成部405は、リスト表示エリアG2に表示するための作業ジョブのリストを生成し、画面データ生成部401に出力する。例えばリスト生成部405は、作業ジョブ記憶部114を参照して作業ジョブのリストを生成する。
作業ジョブ記憶部114は、ユーザにより予め作成された複数の作業ジョブを記憶する。作業ジョブ記憶部114は、プログラミング支援装置100に設けられていてもよいし、プログラミング支援装置100の他の装置(例えばロボットコントローラ3)に設けられていてもよい。
制約メニュー生成部406は、制約メニュー表示エリアG32に表示するための制約条件のリストを生成し、画面データ生成部401に出力する。例えば制約メニュー生成部406は、制約メニュー記憶部407を参照して制約メニューのリストを生成する。制約メニュー記憶部407は、予め作成された複数の制約メニューを記憶する。
オプション情報取得部410は、上記環境データ記憶部111から、環境モデルデータに含まれる物を特定する第一オプション情報と、当該物の状態を示す第二オプション情報とを取得する。
第一入力サポート部408は、作業対象物の選択肢を設定し、当該選択肢の表示用のデータを生成する。例えば第一入力サポート部408は、条件作成画面H1において、入力ボックスH2(図12)に作業対象物を選択入力させるための選択肢を生成する。第一入力サポート部408は、第一オプション情報に基づいて作業対象物の選択肢を設定してもよい。この場合、環境構築モジュール300により取得された情報が作業対象物の選択肢として利用される。
第二入力サポート部409は、状態の指定対象となる作業対象物に応じて、状態指定条件の選択肢を設定し、当該選択肢の表示用のデータを生成する。例えば第二入力サポート部409は、条件作成画面H1において、入力ボックスH2に入力された作業対象物に応じて、入力ボックスH4(図12)に状態を選択入力させるための選択肢を生成する。第二入力サポート部409は、第二オプション情報に基づいて状態指定条件の選択肢を設定してもよい。この場合、環境構築モジュール300により取得された情報が状態指定条件の選択肢として利用される。例えば第二入力サポート部409は、入力ボックスH2に入力された作業対象物の状態を、第二オプション情報から抽出し、抽出結果を状態指定条件の選択肢とする。
第一条件設定部412は、第一制約条件を、ユーザインタフェース130への入力に応じて設定し、当該第一制約条件の対象となる作業ジョブの識別情報と対応付けて一時記憶用の条件バッファ415に書き込む。
上述のように、第一制約条件は、作業ジョブの作業対象物の状態を指定する状態指定条件を含んでもよい。この場合、第一条件設定部412は、より細分化された機能モジュールとして、対象物設定部413と状態設定部414とを含んでもよい。対象物設定部413は、第一入力エリアG9への入力に基づいて作業ジョブの作業対象物を設定する。例えば対象物設定部413は、入力内容表示エリアG13に表示される内容に基づいて作業ジョブの作業対象物を設定する。状態設定部414は、第一入力エリアG9への入力に基づいて状態指定条件を設定する。例えば状態設定部414は、条件入力部G17に入力された内容に基づいて作業対象物の状態指定条件を設定する。
第二条件設定部417は、作業ジョブ同士の関係についての制約条件である第二制約条件を、ユーザインタフェース130への入力に応じて設定する。例えば、第二条件設定部417は、第二入力エリアG20において作業ジョブ間に入力された制約条件に基づいて第二制約条件を設定する。
プログラミング支援装置100が、複数の制御対象について動作プログラムのプログラミング支援を実行する場合、第二条件設定部417は、異なる制御対象の作業ジョブ間に制約条件を設定してもよい。
演算レベル設定部418は、プログラミング支援における演算レベル(後述)を、ユーザインタフェース130への入力に応じて設定する。例えば、演算レベル設定部418は、後述の実行フローの採用可否を判定するための基準を調節する演算レベルを設定する。
条件登録部419は、第一制約条件及び第二制約条件の少なくとも一方を条件記憶部に登録する。例えば条件登録部419は、条件バッファ415の記憶内容(例えば第一制約条件と関連付けられている)を個別条件記憶部420に書き込む。また、条件登録部419は、第二条件設定部417により設定された第二制約条件を、当該第二制約条件の対象となる作業ジョブと対応付けてジョブ間条件記憶部422に書き込む。更に、条件登録部419は、第二入力エリアG20に表示されている複数の作業ジョブを実行対象のジョブとして実行対象記憶部421に書き込む。例えば、条件登録部419は、仮フローG23の複数のフロー要素G24にそれぞれ対応する複数の作業ジョブを実行対象のジョブとして実行対象記憶部421に書き込む。更に、条件登録部419は、演算レベル設定部418により設定された演算レベルを演算条件記憶部423に書き込む。
条件読込部411は、条件記憶部から第一制約条件及び第二制約条件の少なくとも一方を読み込む。例えば条件読込部411は、個別条件記憶部420から第一制約条件を読み込む。
(3)プログラミングモジュール
プログラミングモジュール500は、プランニングボタンG37(図11)のクリックに応じて起動される。図14に示すように、プログラミングモジュール500は、より細分化された機能モジュールとして、プランニング支援部501と、プログラム生成部510とを有する。
プランニング支援部501は、第一制約条件及び第二制約条件に基づいて、少なくとも一つの作業ジョブの実行タイミングをチェックする。チェックとは、第一制約条件及び第二制約条件を満たしているかを確認することを意味する。例えばプランニング支援部501は、ロボットの動作パターンを規定する複数の作業ジョブを記憶することと、複数の作業ジョブのいずれかについて、ロボット2の動作環境を指定する環境条件を、ユーザインタフェースへの入力に応じて設定することと、複数の作業ジョブのうち、ロボット2に実行させる複数の実行対象の作業ジョブを、ユーザインタフェースへの入力に応じて設定することと、複数の実行対象の作業ジョブの実行順序を定めた実行フローにおいて、少なくとも一つの作業ジョブが環境条件を満たすか否かを、当該実行順序に基づいて判定することと、を実行する。実行フローは、プランニング支援部501が自動生成するものであってもよいし、ユーザが設定して入力したものであってもよい。以下においては、プランニング支援部501が実行フローを自動生成する場合を説明する。
例えばプランニング支援部501は、より細分化された機能モジュールとして、判定部504と、フロー調節部503と、パス情報取得部505と、つなぎジョブ生成部506と、フロー評価部507と、更新部502とを含む。
判定部504は、個別条件記憶部420に記憶された第一制約条件と、ジョブ間条件記憶部422に記憶された第二制約条件とに基づいて、少なくとも一つの作業ジョブの実行タイミングをチェックする。判定部504は、複数の実行対象の作業ジョブの実行順序を定めた実行フローにおいて、少なくとも一つの作業ジョブが環境条件を満たすか否かを、当該実行順序に基づいて判定する。
例えば判定部504は、実行フローのいずれか一つの作業ジョブの実行タイミングにおける環境状態を、当該実行フローの他の作業ジョブにおけるロボット2の動作内容と、当該実行フローの実行順序とに基づいて特定し、当該環境状態が当該一つの作業ジョブの環境条件を満たすか否かを判定する。
実行フローが第一作業ジョブ及び第二作業ジョブを順に含む場合に、判定部504は、少なくとも第一作業ジョブにおけるロボット2の動作内容に基づいて第二作業ジョブの実行タイミングにおける環境状態を特定し、当該環境状態が第二作業ジョブの環境条件を満たすか否かを判定してもよい。
より具体的に、第一作業ジョブにより規定される動作パターンが、作業対象物を物理的に操作する動作を含み、第二作業ジョブの環境条件が、当該作業対象物の状態を指定する条件を含む場合に、判定部504は、第一作業ジョブに従ってロボット2が動作した後の当該作業対象物の状態を第二作業ジョブの実行タイミングにおける環境状態として特定し、当該環境状態が第二作業ジョブの環境条件を満たすか否かを判定してもよい。
実行フローが第一作業ジョブ、第二作業ジョブ及び第三作業ジョブを順に含む場合に、判定部504は、少なくとも第一作業ジョブにおけるロボット2の動作内容に基づいて第二作業ジョブの実行タイミングにおける環境状態を特定し、当該環境状態を少なくとも第二作業ジョブにおけるロボット2の動作内容に基づいて更新して第三作業ジョブの実行タイミングにおける環境状態を特定し、当該環境状態が第三作業ジョブの環境条件を満たすか否かを判定してもよい。
判定部504は、実行フローのいずれか一つの作業ジョブの環境条件と、当該実行フローの他の作業ジョブにおけるロボット2の動作内容とに基づいて、当該一つの作業ジョブが当該環境条件を満たすために、当該一つの作業ジョブと当該他の作業ジョブとの間に必要とされる順序条件を生成し、当該実行フローの実行順序が当該順序条件を満たすか否かを判定してもよい。
フロー調節部503は、タイミング条件を満たすように、判定部504による判定対象となる実行フローを生成する。また、実行フローにおいていずれかの作業ジョブが環境条件を満たしていないと判定した場合に、タイミング条件を満たすように実行順序を変更する。例えばフロー調節部503は、タイミング条件を満たす範囲にて、実行対象記憶部421に記憶された複数の作業ジョブの実行フローをランダムに生成する。その後フロー調節部503は、実行フローにおいていずれかの作業ジョブが環境条件を満たしていないと判定した場合に、タイミング条件を満たすように実行順序をランダムに変更する。以後、フロー調節部503は、タイミング条件を満たす実行フローが環境条件を満たさない作業ジョブを含んでいない状態となるまで、実行順序の変更を繰り返す。フロー調節部503は、実行フローを生成又は変更する度に、その結果を一時記憶用のフローバッファ508に上書きする。
プログラミング支援装置100が、複数の制御対象について動作プログラムのプログラミング支援を実行する場合、フロー調節部503は、複数の制御対象にそれぞれ対応する複数の実行フローを生成してもよい。
パス情報取得部505は、少なくとも一つの作業ジョブについて、ロボット2の動作パス(先端部2aの位置・姿勢の継時的な推移)を規定する第一パス情報を取得する。例えばパス情報取得部505は、実行対象の作業ジョブの全ての第一パス情報を実行対象記憶部421から読み込む。
つなぎジョブ生成部506は、フローバッファ508に記憶された実行フローと、パス情報取得部505により取得された第一パス情報と、環境データ記憶部111に記憶された環境モデルデータとに基づいて、作業ジョブ間におけるロボット2の動作パスを規定する第二パス情報を生成する。例えばつなぎジョブ生成部506は、先行する作業ジョブの動作パスの終点と、後続する作業ジョブの動作パスの始点との間を結び、ロボット2とその周辺配置物との衝突を回避するように、第二パス情報を生成し、一時記憶用のパスバッファ509に書き込む。
例えばつなぎジョブ生成部506は、衝突を回避可能な経由点を生成し、当該経由点を通るようにパスを修正することを、パス全体にわたって衝突回避が可能となるまで繰り返す。より具体的なパスの生成手法は、例えば特許第4103057号等に開示されている。
フロー評価部507は、第一制約条件及び第二制約条件とは異なる評価条件に基づいて、実行フローと、第一パス情報及び第二パス情報の少なくとも一方を評価し、評価結果に基づいて実行フローの採用可否を判定する。例えばフロー評価部507は、実行フロー、第一パス情報及び第二パス情報を上記評価条件に基づいて評価し、評価結果に基づいて実行フローの採用可否を判定する。例えば、評価結果は、実行フローが動作プログラムとして実行された場合の実行時間、動作プログラムが実行された時のエネルギー消費等の目安であってもよい。評価結果は、評価条件が満たされているか、そして実行フローが採用可能であるかを判定するために、基準値と比較されてもよい。
より具体的に、フロー評価部507は、実行フロー、第一パス情報及び第二パス情報に従った動作プログラムについて所定の評価値を導出し、当該評価値が合格ラインに達している場合に実行フローを採用可とし、当該評価値が合格ラインに達していない場合に実行フローを採用不可とする。評価値の具体例としては、動作プログラムの実行時間、又は動作プログラムの消費電力(動作プログラムに従って動作するロボット2の消費電力)等が挙げられる。実行時間及び消費電力を組み合わせて評価値を導出してもよい。
また、フロー評価部507は、実行フローの生成及び上記評価値の導出を所定時間繰り返し、最も好ましい評価値が得られる実行フローを採用可としてもよい。例えばフロー評価部507は、動作プログラムの実行時間が最も小さくなる実行フローを採用可としてもよいし、動作プログラムの消費電力が最も小さくなる実行フローを採用可としてもよい。
なお、フロー評価部507は、演算条件記憶部423に記憶されている演算レベルに応じて、実行フローの採用可否を判定するための基準を調節してもよい。例えばフロー評価部507は、演算条件記憶部423に記憶されている演算レベルが高くなるのに応じて上記合格ラインを高くしてもよいし、実行フローの生成及び上記評価値の導出を繰り返す時間を長くしてもよい。
また、フロー評価部507は、演算条件記憶部423に記憶されている演算レベルに応じて、評価対象の動作プログラムの精度を調節してもよい。例えばフロー評価部507は、演算条件記憶部423に記憶されている演算レベルが低くなるのに応じて、評価対象の動作プログラムを簡易化し、演算時間の短縮化を図ってもよい。簡易化の具体例として、第二パス情報の生成を省略し、作業ジョブ間の動作パスを直線状にすること、作業ジョブ間の時間を一定値にすること、環境モデルデータにおけるメッシュを粗くすること等が挙げられる。
更新部502は、フロー評価部507により採用可とされた実行フローを結果出力部G29に表示するように、第二入力エリアG20の表示用データを更新する。
プログラム生成部510は、プランニング支援部501により採用可と判定された実行フローに基づいて、ロボット2の動作プログラムを生成する。動作プログラムは、例えば、上記実行フローに従って上記第一パス情報及び上記第二パス情報を並べたものである。
プログラム登録部511は、プログラム生成部510により生成された動作プログラムを、ユーザインタフェース130への入力に応じて動作プログラム記憶部112に登録する。例えばプログラム登録部511は、保存ボタンG38がクリックされるのに応じて、動作プログラムを動作プログラム記憶部112に書き込む。
なお、プログラミングモジュール500は、少なくとも実行タイミングのチェック結果に基づくプログラミング支援を行っていればよいので、必ずしも動作プログラムの自動生成を実行しなくてよい。例えば、プログラミングモジュール500は、ユーザが入力した実行フローが第一制約条件及び第二制約条件の少なくとも一方を満たしていない場合に、その旨の警告表示をするように構成されていてもよい。
(4)シミュレーションモジュール
図15に示すように、シミュレーションモジュール600は、より細分化された機能モジュールとして、画面データ生成部601と、更新部602と、プログラム設定部603と、シミュレーション実行部604と、動画データ生成部605とを有する。
さらに図16を参照して、画面データ生成部601は、シミュレーション画面K1をモニタ131に表示するためのデータを生成する。シミュレーション画面K1は、シミュレーション結果をグラフィック表示するための画面である。
図16に示すように、シミュレーション画面K1は、描画エリアK2と、プログラム選択ボタンK3と、シミュレーション実行ボタンK4と、終了ボタンK5とを有する。描画エリアK2は、シミュレーション結果を三次元画像等により表示するエリアである。プログラム選択ボタンK3は、シミュレーション対象の動作プログラムを選択するためのボタンである。シミュレーション実行ボタンK4は、シミュレーションの実行を指示するためのボタンである。終了ボタンK5は、シミュレーション画面K1をクローズし、シミュレーションモジュール600による処理を終了させるためのボタンである。
図15に戻り、更新部602は、入力デバイス132への操作入力に応じて、シミュレーション画面K1の表示用データを更新する。例えば更新部602は、上記プログラム選択ボタンK3がクリックされるのに応じて、プログラム選択画面L1を表示するようにシミュレーション画面K1の表示用データを更新する。プログラム選択画面L1は、シミュレーション対象の動作プログラムを選択するための画面である。
図17に示すように、プログラム選択画面L1は、リスト表示エリアL2と、選択ボタンL3とを有する。リスト表示エリアL2は、選択可能な動作プログラム(例えば動作プログラム記憶部112に記憶されている動作プログラム)のリストを表示する。選択ボタンL3は、リスト表示エリアL2において選択された動作プログラムの選択を指示するボタンである。
また、更新部602は、シミュレーション実行ボタンK4がクリックされ、シミュレーション結果に応じた動画データ(後述)が生成された後に、当該動画データをリスト表示エリアL2に表示するように描画エリアK2の表示用データを更新する。
図15に戻り、プログラム設定部603は、プログラム選択画面L1において選択された動作プログラムを、シミュレーション対象の動作プログラムに設定する。シミュレーション実行部604は、ロボット2の動作シミュレーションを実行する。例えばシミュレーション実行部604は、環境データ記憶部111に記憶された環境モデルデータにより特定されるシミュレーション環境下において、シミュレーション対象の動作プログラムに従ってロボット2のモデルを動作させる。
動画データ生成部605は、シミュレーション実行部604によるシミュレーション結果に従って、ロボット2のモデルの動画データを生成する。
図18は、本体110のハードウェア構成を例示するブロック図である。図18に示すように、本体110は回路120を有し、回路120は、一つ又は複数のプロセッサ121と、記憶部122と、通信ポート125と、入出力ポート126とを有する。記憶部122は、メモリ123及びストレージ124を含む。ストレージ124は、本体110の上記各機能モジュールを構成するためのプログラムを記録している。ストレージ124は、コンピュータ読み取り可能であればどのようなものであってもよい。具体例として、ハードディスク、不揮発性の半導体メモリ、磁気ディスク及び光ディスク等が挙げられる。メモリ123は、ストレージ124からロードしたプログラム及びプロセッサ121の演算結果等を一時的に記憶する。プロセッサ121は、メモリ123と協働してプログラムを実行することで、各機能モジュールを構成する。
通信ポート125は、プロセッサ121からの指令に応じ、ロボットコントローラ3との間で電気信号の入出力を行う。入出力ポート126は、プロセッサ121からの指令に応じ、モニタ131及び入力デバイス132との間で電気信号の入出力を行う。
3.プログラム生成方法
続いて、プログラム生成方法及びプログラミング支援方法の一例として、プログラミング支援装置100が実行するプログラム生成手順を説明する。
(1)概要
図19に示すように、まず、プログラミング支援装置100はステップS01を実行する。ステップS01では、画面データ生成部201が、メイン画面A1の表示用データを生成し、モニタ131に出力する。
次に、プログラミング支援装置100はステップS02を実行する。ステップS02では、環境構築ボタンA2がクリックされたか否かをモジュール切替部202が確認する。
ステップS02において、環境構築ボタンA2がクリックされたと判定した場合、プログラミング支援装置100はステップS03を実行する。ステップS03では、環境構築モジュール300が、ロボット2の動作シミュレーション用の環境モデルデータを構築する。具体的な処理内容については後述する。
ステップS02において、環境構築ボタンA2はクリックされていないと判定した場合、プログラミング支援装置100はステップS04を実行する。ステップS04では、プランニングボタンA3がクリックされたか否かをモジュール切替部202が確認する。
ステップS04において、プランニングボタンA3がクリックされたと判定した場合、プログラミング支援装置100はステップS05,S06を実行する。ステップS05では、条件設定モジュール400が、上記第一制約条件及び上記第二制約条件を含むプログラミング支援条件を設定する処理を実行する。ステップS06では、プログラミングモジュール500が、条件設定モジュール400により設定されたプログラミング支援条件に従って動作プログラムのプログラミング支援を実行する。例えばプログラミングモジュール500は、上記プログラミング支援条件に従って動作プログラムを生成する。これらの具体的な処理内容については後述する。
ステップS04において、プランニングボタンA3はクリックされていないと判定した場合、プログラミング支援装置100はステップS07を実行する。ステップS07では、シミュレーションボタンA4がクリックされたか否かをモジュール切替部202が確認する。
ステップS07において、シミュレーションボタンA4がクリックされたと判定した場合、プログラミング支援装置100はステップS08を実行する。ステップS08では、ロボット2の動作シミュレーションを実行する。具体的な処理内容については後述する。
ステップS03,S06,S08を実行した後、プログラミング支援装置100はステップS09を実行する。ステップS07においてシミュレーションボタンA4がクリックされていないと判定した場合も、プログラミング支援装置100はステップS09を実行する。ステップS09では、終了ボタンA5がクリックされたか否かをモジュール切替部202が確認する。
ステップS09において、終了ボタンA5がクリックされていないと判定した場合、プログラミング支援装置100は処理をステップS02に戻す。以後、終了ボタンA5がクリックされるまでは、環境構築ボタンA2、プランニングボタンA3又はシミュレーションボタンA4のクリックに応じた処理が繰り返される。
ステップS09において、終了ボタンA5がクリックされたと判定した場合、プログラミング支援装置100は、メイン画面A1をクローズして処理を終了する。
(2)環境モデルデータの構築手順
続いて、上記ステップS03における環境モデルデータの構築手順を説明する。図20に示すように、プログラミング支援装置100は、まずステップS11を実行する。ステップS11では、画面データ生成部301が、環境構築画面B1の表示用データを生成し、モニタ131に出力する。
次に、プログラミング支援装置100はステップS12を実行する。ステップS12では、モデル追加ボタンB3がクリックされたか否かを更新部302が確認する。
ステップS12において、モデル追加ボタンB3がクリックされたと判定した場合、プログラミング支援装置100はステップS13を実行する。ステップS13では、モデル追加部303がモデルデータ記憶部113を参照してモデルデータのリストを生成し、当該リストを用いて、更新部302がモデル選択画面C1の表示用データを生成し、モデル選択画面C1を表示するように環境構築画面B1の表示用データを更新する。
次に、プログラミング支援装置100はステップS14を実行する。ステップS14では、モデル追加部303が、モデル選択画面C1におけるモデルデータの選択入力を待機する。
次に、プログラミング支援装置100はステップS15を実行する。ステップS15では、モデル追加部303が、モデル選択画面C1において選択されたモデルデータをモデルデータ記憶部113から取得して環境データ記憶部111の環境モデルデータに追加する。
次に、プログラミング支援装置100はステップS16,S17を実行する。ステップS16では、描画データ生成部304が、環境データ記憶部111に記憶された環境モデルデータを用いてシミュレーション環境の描画データを生成し、シミュレーション環境エリアB2の表示用データとして更新部302に出力する。
ステップS17では、更新部302が、描画データ生成部304から出力されたデータによってシミュレーション環境エリアB2の表示用データを更新する。
ステップS12において、モデル追加ボタンB3がクリックされていないと判定した場合、プログラミング支援装置100はステップS18を実行する。ステップS18では、少なくとも一つのモデルデータが環境モデルデータに追加されているか否かをモデル追加部303が確認する。
ステップS18において、環境モデルデータに追加済みのモデルデータが有ると判定した場合、プログラミング支援装置100はステップS19を実行する。ステップS19では、属性設定ボタンB4がクリックされたか否かを更新部302が確認する。
ステップS19において、属性設定ボタンB4がクリックされたと判定した場合、プログラミング支援装置100はステップS20を実行する。ステップS20では、属性データ登録部305が、入力対象モデルの属性データを登録する。具体的な処理内容については後述する。
ステップS19において、属性設定ボタンB4はクリックされていないと判定した場合、プログラミング支援装置100はステップS21を実行する。ステップS21では、状態設定ボタンB5がクリックされたか否かをモデル追加部303が確認する。
ステップS21において、状態設定ボタンB5がクリックされたと判定した場合、プログラミング支援装置100はステップS22を実行する。ステップS22では、状態データ登録部306が、入力対象モデルの状態データを登録する。具体的な処理内容については後述する。
ステップS17,S20,S22を実行した後、プログラミング支援装置100はステップS23を実行する。ステップS21において、状態設定ボタンB5がクリックされていないと判定した場合、及びステップS18において、環境モデルデータに追加済みのモデルデータは無いと判定した場合も、プログラミング支援装置100はステップS23を実行する。ステップS23では、終了ボタンB6がクリックされたか否かを更新部302が確認する。
ステップS23において、終了ボタンB6がクリックされていないと判定した場合、プログラミング支援装置100は処理をステップS12に戻す。以後、終了ボタンB6がクリックされるまでは、環境モデルデータの構築処理が繰り返される。
ステップS23において、終了ボタンB6がクリックされたと判定した場合、プログラミング支援装置100は、環境構築画面B1をクローズして処理を終了する。
(属性データの登録手順)
図21に示すように、プログラミング支援装置100は、まずステップS31を実行する。ステップS31では、更新部302が、属性入力画面D1を表示するように環境構築画面B1の表示用データに追加する。
次に、プログラミング支援装置100はステップS32を実行する。ステップS32では、更新部302が、属性入力画面D1への情報入力の有無を判定する。
ステップS32において、属性入力画面D1への情報入力が有ると判定した場合、プログラミング支援装置100はステップS33を実行する。ステップS33では、更新部302が、入力内容を反映させるように属性入力画面D1の表示用データを更新する。
次に、プログラミング支援装置100はステップS34を実行する。ステップS32において、属性入力画面D1への情報入力が無いと判定した場合、プログラミング支援装置100はステップS33を実行することなくステップS34を実行する。ステップS34では、登録ボタンD5がクリックされたか否かを更新部302が確認する。
ステップS34において、登録ボタンD5がクリックされていないと判定した場合、プログラミング支援装置100は処理をステップS32に戻す。以後、登録ボタンD5がクリックされるまでは、属性データの入力に応じた属性入力画面D1の表示用データの更新が繰り返される。
ステップS34において、登録ボタンD5がクリックされたと判定した場合、プログラミング支援装置100はステップS35を実行する。ステップS35では、属性データ登録部305が、属性入力画面D1において入力されたデータを取得し、入力対象モデルに対応付けて環境データ記憶部111に書き込む。以上で属性データの登録手順が完了する。
(状態データの登録手順)
図22に示すように、プログラミング支援装置100は、まずステップS41を実行する。ステップS41では、更新部302が、状態入力画面F1を表示するように環境構築画面B1の表示用データに追加する。
次に、プログラミング支援装置100はステップS42を実行する。ステップS42では、更新部302が、状態入力画面F1への情報入力の有無を判定する。
ステップS42において、状態入力画面F1への情報入力が有ると判定した場合、プログラミング支援装置100はステップS43を実行する。ステップS43では、更新部302が、入力内容を反映させるように状態入力画面F1の表示用データを更新する。
次に、プログラミング支援装置100はステップS44を実行する。ステップS42において、状態入力画面F1への情報入力が無いと判定した場合、プログラミング支援装置100はステップS43を実行することなくステップS44を実行する。ステップS44では、登録ボタンF4がクリックされたか否かを更新部302が確認する。
ステップS44において、登録ボタンF4がクリックされていないと判定した場合、プログラミング支援装置100は処理をステップS42に戻す。以後、登録ボタンF4がクリックされるまでは、状態データの入力に応じた状態入力画面F1の表示用データの更新が繰り返される。
ステップS44において、登録ボタンF4がクリックされたと判定した場合、プログラミング支援装置100はステップS45を実行する。ステップS45では、状態データ登録部306が、状態入力画面F1において入力されたデータを取得し、入力対象モデルに対応付けて環境データ記憶部111に書き込む。以上で状態データの登録手順が完了する。
(3)プログラミング支援条件の設定手順
続いて、上記ステップS03におけるプログラミング支援条件の設定手順を説明する。
(概要)
図23に示すように、プログラミング支援装置100は、まずステップS51を実行する。ステップS51では、リスト生成部405が、リスト表示エリアG2に表示するための作業ジョブのリストを生成し、画面データ生成部401に出力する。
次に、プログラミング支援装置100はステップS52を実行する。ステップS52では、制約メニュー生成部406が、制約メニュー表示エリアG32に表示するための制約条件のリストを生成し、画面データ生成部401に出力する。
次に、プログラミング支援装置100はステップS53を実行する。ステップS53では、画面データ生成部401が、プランニング画面G1の表示用データを生成し、モニタ131に出力する。以後、プランニング画面G1への入力操作に応じ、プログラミング支援条件を設定する処理が開始され、プランニングボタンG37がクリックされるまで継続される(ステップS54)。プランニングボタンG37がクリックされると、プログラミング支援条件の設定手順が完了する。
以下、プログラミング支援条件の設定手順を、第一制約条件の設定手順、第二制約条件の設定手順、及び演算レベルの設定手順に分けて説明する。
(第一制約条件の設定手順)
図24に示すように、プログラミング支援装置100は、まずステップS61を実行する。ステップS61では、第一更新部402が、リスト表示エリアG2における作業ジョブの選択入力(例えばリスト要素G3のクリック)を待機する。
次に、プログラミング支援装置100はステップS62を実行する。ステップS62では、リスト表示エリアG2において選択された作業ジョブ(以下、「選択ジョブ」という。)についての第一制約条件が、個別条件記憶部420に記憶されているか否かを条件読込部411が確認する。
ステップS62において、選択ジョブの第一制約条件が個別条件記憶部420に記憶されていると判定した場合、プログラミング支援装置100はステップS63を実行する。ステップS63では、条件読込部411が、個別条件記憶部420に記憶されている第一制約条件を読み込む。
次に、プログラミング支援装置100はステップS64を実行する。ステップS62において、選択ジョブの第一制約条件が個別条件記憶部420に記憶されていないと判定した場合、プログラミング支援装置100はステップS63を実行することなくステップS64を実行する。ステップS64では、第一更新部402が、選択ジョブの第一制約条件を入力可能とするように第一入力エリアG9の表示用データを更新する。
より具体的に、第一更新部402は、ステップS63において個別条件記憶部420から読み込まれた情報の有る項目については、当該情報を当該項目の入力部分に表示し、その他の項目についてはその入力部分を空欄にするように、第一入力エリアG9の表示用データを更新する。
次に、プログラミング支援装置100はステップS65を実行する。ステップS65では、第一制約条件を追加するための入力の有無を第一更新部402が確認する。ステップS65において、第一制約条件を追加するための入力が有ると判定した場合、プログラミング支援装置100はステップS66を実行する。ステップS66は、第一入力エリアG9への入力内容に基づいて第一制約条件を設定する処理を含む。具体的な処理内容については後述する。
次に、プログラミング支援装置100はステップS67を実行する。ステップS65において、第一制約条件を追加するための入力は無いと判定した場合、プログラミング支援装置100はステップS66を実行することなくステップS67を実行する。ステップS67では、条件登録ボタンG36がクリックされたか否かを条件登録部419が確認する。
ステップS67において、条件登録ボタンG36はクリックされていないと判定した場合、プログラミング支援装置100はステップS68を実行する。ステップS68では、リスト表示エリアG2において他の作業ジョブが選択されたか否かを第一更新部402が確認する。
ステップS68において、他の作業ジョブは選択されていないと判定した場合、プログラミング支援装置100は処理をステップS65に戻す。以後、条件登録ボタンG36がクリックされるか、リスト表示エリアG2において他の作業ジョブが選択されるまでは、第一入力エリアG9への入力に基づいて選択ジョブの第一制約条件を設定する処理が繰り返される。
ステップS68において、他の選択ジョブが選択されたと判定した場合、プログラミング支援装置100は処理をステップS62に戻し、新たに選択された作業ジョブについての第一制約条件の設定処理を開始する。
ステップS67において、条件登録ボタンG36がクリックされたと判定した場合、プログラミング支援装置100はステップS69を実行する。ステップS69では、条件登録部419が、第一入力エリアG9における第一制約条件の設定結果を個別条件記憶部420に書き込む。以上で第一制約条件の設定手順が完了する。
続いて、上記ステップS66における条件設定手順を説明する。図25に示すように、プログラミング支援装置100は、まずステップS81を実行する。ステップS81では、作業内容入力エリアG10の項目指定ボタンG11がクリックされたか否かを第一更新部402が確認する。
ステップS81において、項目指定ボタンG11がクリックされたと判定した場合、プログラミング支援装置100はステップS82を実行する。ステップS82では、項目指定ボタンG11応じた項目用の選択肢となる作業内容情報(例えば作業対象物等)のアイコンをアイコン選択エリアG12に表示するように、第一更新部402がリスト表示エリアG2の表示用データを更新する。
次に、プログラミング支援装置100はステップS83を実行する。ステップS83では、第一更新部402が、アイコン選択エリアG12におけるアイコンの選択入力を待機する。
次に、プログラミング支援装置100はステップS84を実行する。ステップS84では、アイコン選択エリアG12において選択されたアイコンを入力内容表示エリアG13に表示するように、第一更新部402が第一入力エリアG9の表示用データを更新する。
ステップS81において、項目指定ボタンG11はクリックされていないと判定した場合、プログラミング支援装置100はステップS85を実行する。ステップS85では、作業内容入力エリアG10の名称入力エリアG15へのテキスト入力の有無を判定する。
ステップS85において、名称入力エリアG15へのテキスト入力が有ると判定した場合、プログラミング支援装置100はステップS86を実行する。ステップS86では、入力された内容を名称入力エリアG15に表示するように、第一更新部402が第一入力エリアG9の表示用データを更新する。
ステップS85において、名称入力エリアG15へのテキスト入力は無いと判定した場合、プログラミング支援装置100はステップS87を実行する。ステップS87では、制約条件入力エリアG16の条件入力部G17において新規作成ボタンG18がクリックされたか否かを第一更新部402が確認する。
ステップS87において、新規作成ボタンG18がクリックされたと判定した場合、プログラミング支援装置100はステップS88を実行する。ステップS88は、第一制約条件として設定すべき条件を作成する処理を含む。具体的な処理内容については後述する。
ステップS84,S86,S88を実行した後、プログラミング支援装置100はステップS89を実行する。ステップS89では、第一条件設定部412が、第一入力エリアG9への入力に応じて第一制約条件を設定し、当該第一制約条件の対象となる作業ジョブの識別情報と対応付けて一時記憶用の条件バッファ415に書き込む。以上でステップS66が完了する。
ステップS87において、新規作成ボタンG18がクリックされていないと判定した場合、プログラミング支援装置100は、ステップS89を実行することなくステップS66を完了する。
続いて、上記ステップS88における条件作成手順を説明する。図26に示すように、プログラミング支援装置100は、まずステップS91を実行する。ステップS91では、オプション情報取得部410が、上記環境データ記憶部111から、環境モデルデータに含まれる物を特定する第一オプション情報を取得する。第一入力サポート部408が、第一オプション情報に基づいて作業対象物の選択肢を設定し、当該選択肢の表示用のデータを生成する。
次に、プログラミング支援装置100はステップS92を実行する。ステップS92では、第一更新部402が、条件作成画面H1を表示するように第一入力エリアG9の表示用データを更新する。この際に、第一更新部402は、第一入力サポート部408により生成されたデータを用いて、上記作業対象物の選択肢を入力ボックスH2にセットする。
次に、プログラミング支援装置100はステップS93を実行する。ステップS93では、第一更新部402が、入力ボックスH2における作業対象物の選択入力を待機する。
次に、プログラミング支援装置100はステップS94を実行する。ステップS94では、オプション情報取得部410が、入力ボックスH2に入力された作業対象物の状態を示す第二オプション情報を環境データ記憶部111から取得する。第二入力サポート部409が、第二オプション情報に基づいて状態指定条件の選択肢を設定し、当該選択肢の表示用のデータを生成する。第一更新部402が、第二入力サポート部409により生成されたデータを用いて、上記状態指定条件の選択肢を入力ボックスH4にセットする。
次に、プログラミング支援装置100は、ステップS95を実行する。ステップS95では、入力ボックスH3又は入力ボックスH4への入力の有無を第一更新部402が確認する。
ステップS95において、入力ボックスH3又は入力ボックスH4への入力が有ると判定した場合、プログラミング支援装置100はステップS96を実行する。ステップS96では、条件作成画面H1に入力内容を反映させるように、第一更新部402が第一入力エリアG9の表示用データを更新する。
次に、プログラミング支援装置100はステップS97を実行する。ステップS97では、作成ボタンH5がクリックされたか否かを第一更新部402が確認する。
ステップS97において、作成ボタンH5はクリックされていないと判定した場合、プログラミング支援装置100は処理をステップS95に戻す。以後、作成ボタンH5がクリックされるまで、入力ボックスH3又は入力ボックスH4への入力に応じた条件作成画面H1の表示内容の更新が繰り返される。
ステップS97において、作成ボタンH5がクリックされたと判定した場合、プログラミング支援装置100はステップS98を実行する。ステップS98では、第一更新部402が、条件作成画面H1において入力されたデータに従った条件を作成する。
次に、プログラミング支援装置100はステップS99を実行する。ステップS99では、第一更新部402が、ステップS98において作成した条件を表示部G19に表示するように、第一入力エリアG9の表示用データを更新する。以上でステップS88が完了する。
(第二制約条件の設定手順)
図27に示すように、プログラミング支援装置100は、まずステップS101を実行する。ステップS101では、第二入力エリアG20に作業ジョブを追加する入力の有無を第二更新部403が確認する。例えば、第二更新部403は、リスト表示エリアG2から第二入力エリアG20にリスト要素G3がドラッグされたか否かを確認する。
ステップS101において、リスト表示エリアG2から第二入力エリアG20にリスト要素G3がドラッグされたと判定した場合、プログラミング支援装置100はステップS103を実行する。ステップS103では、仮フロー生成部416が、第二入力エリアG20に表示される複数の作業ジョブの仮フローG23を生成する。仮フロー生成部416は、第二入力エリアG20における既存のフロー要素G24とドラッグ完了位置との関係に応じて作業ジョブの実行順序を設定し、これに従って仮フローG23を生成する。
次に、プログラミング支援装置100はステップS104を実行する。ステップS104では、第二更新部403が、ステップS103において生成された仮フローG23を表示し、仮フローG23における作業ジョブ間に第二制約条件を入力可能とするように第二入力エリアG20の表示用データを更新する。
ステップS101において、第二入力エリアG20に作業ジョブを追加する入力は無いと判定した場合、プログラミング支援装置100はステップS105を実行する。ステップS105では、第二入力エリアG20に二つ以上の作業ジョブが表示されているか否かを第二更新部403が確認する。
ステップS105において、第二入力エリアG20に二つ以上の作業ジョブが表示されていると判定した場合、プログラミング支援装置100はステップS106を実行する。ステップS106では、第二入力エリアG20に制約条件を追加する入力の有無を第二更新部403が確認する。
ステップS106において、制約条件の追加入力が有ると判定した場合、プログラミング支援装置100はステップS107を実行する。ステップS107は、制約条件の追加を仮フローG23の表示に反映させるように、第二更新部403が第二入力エリアG20の表示用データを更新する。例えば、第二更新部403は、制約メニュー表示エリアG32から第二入力エリアG20にメニュー要素G33がドラッグされ、二つのフロー要素G24間でドラッグが完了した場合に、当該二つのフロー要素G24間にメニュー要素G33の制約条件を挿入するように、第二入力エリアG20の表示用データを更新する。
次に、プログラミング支援装置100はステップS108を実行する。ステップS108では、第二条件設定部417が、第二入力エリアG20において作業ジョブ間に入力された制約条件に基づいて第二制約条件を設定する。
ステップS104,S108を実行した後、プログラミング支援装置100はステップS109を実行する。ステップS105において、第二入力エリアG20に二つ以上の作業ジョブは表示されていないと判定した場合、及びステップS106において制約条件を追加する入力は無いと判定した場合、プログラミング支援装置100はステップS104,S108を実行することなくステップS109を実行する。ステップS109では、条件登録ボタンG36がクリックされたか否かを条件登録部419が確認する。
ステップS109において、条件登録ボタンG36はクリックされていないと判定した場合、プログラミング支援装置100は処理をステップS101に戻す。以後、条件登録ボタンG36がクリックされるまでは、第二入力エリアG20への入力に基づいて第二制約条件を設定する処理が繰り返される。
ステップS109において、条件登録ボタンG36がクリックされたと判定した場合、プログラミング支援装置100はステップS110を実行する。ステップS110では、条件登録部419が、第二条件設定部417により設定された第二制約条件を、当該第二制約条件の対象となる作業ジョブと対応付けてジョブ間条件記憶部422に書き込む。また、条件登録部419は、仮フローG23の複数のフロー要素G24にそれぞれ対応する複数の作業ジョブを実行対象のジョブとして実行対象記憶部421に書き込む。以上で第二制約条件の設定手順が完了する。
(演算レベルの設定手順)
図28に示すように、プログラミング支援装置100は、まずステップS121を実行する。ステップS121では、第三入力エリアG34に演算レベルが入力されたか否かを第三更新部404が確認する。
ステップS121において、第三入力エリアG34に演算レベルが入力されたと判定した場合、プログラミング支援装置100はステップS122を実行する。ステップS122では、第三更新部404が、第三入力エリアG34への入力内容を反映させるように、第三入力エリアG34の表示用データを更新する。例えば、第三更新部404は、第三入力エリアG34においてクリックされたラジオボタンG35をオンにするように表示用データを更新する。
次に、プログラミング支援装置100はステップS123を実行する。ステップS123では、演算レベル設定部418が、上記演算レベルを、第三入力エリアG34への入力に応じて設定する。
次に、プログラミング支援装置100はステップS124を実行する。ステップS121において、第三入力エリアG34に演算レベルは入力されていないと判定した場合、プログラミング支援装置100はステップS122,S123を実行することなくステップS124を実行する。ステップS124では、条件登録ボタンG36がクリックされたか否かを条件登録部419が確認する。
ステップS124において、条件登録ボタンG36はクリックされていないと判定した場合、プログラミング支援装置100は処理をステップS121に戻す。以後、条件登録ボタンG36がクリックされるまでは、第三入力エリアG34への入力に基づいて演算レベルを設定する処理が繰り返される。
ステップS124において、条件登録ボタンG36がクリックされたと判定した場合、プログラミング支援装置100はステップS125を実行する。ステップS125では、条件登録部419が、演算レベル設定部418により設定された演算レベルを演算条件記憶部423に書き込む。以上で演算レベルの設定手順が完了する。
(4)プログラム生成手順
図29に示すように、プログラミング支援装置100は、まずステップS131を実行する。ステップS131では、フロー調節部503が、プランニングボタンG37のクリックを待機する。
次に、プログラミング支援装置100はステップS132を実行する。図35を参照して後でさらに説明するように、ステップS132では、プランニング支援部501が、第一制約条件及び第二制約条件を満たす実行フローを生成する。
次に、プログラミング支援装置100はステップS134を実行する。ステップS134では、つなぎジョブ生成部506が、フローバッファ508に記憶された実行フローと、パス情報取得部505により取得された第一パス情報と、環境データ記憶部111に記憶された環境モデルデータとに基づいて、作業ジョブ間におけるロボット2の動作パスを規定する第二パス情報を生成する。
次に、プログラミング支援装置100はステップS135を実行する。ステップS135では、フロー評価部507が、第一制約条件及び第二制約条件とは異なる評価条件に基づいて実行フロー、第一パス情報及び第二パス情報を評価する。例えばフロー評価部507は、上記評価条件に基づいて、実行フロー、第一パス情報及び第二パス情報の評価値(例えば上記実行時間又は消費電力等)を導出する。
次に、プログラミング支援装置100はステップS136を実行する。ステップS136では、フロー評価部507が、実行フローの採用可否を判定する。例えばフロー評価部507は、上記評価値が合格ラインに達している場合に実行フローを採用可とし、当該評価値が合格ラインに達していない場合に実行フローを採用不可とする。
ステップS136において、実行フローを採用不可と判定した場合、プログラミング支援装置100は処理をステップS132に戻す。以後、実行フローが採用可となるまで、実行フローの生成と、上記評価値の算出とが繰り返される。
ステップS136において、上記評価値が採用可であると判定した場合、プログラミング支援装置100はステップS137を実行する。ステップS137では、更新部502が、採用可の実行フローを結果出力部G29に表示するように、第一入力エリアG9の表示用データを更新する。
次に、プログラミング支援装置100はステップS138を実行する。ステップS138では、プログラム生成部510が、ステップS131〜S136で生成された実行フローに基づいて、ロボット2の動作プログラムを生成する。
次に、プログラミング支援装置100はステップS139を実行する。ステップS139では、保存ボタンG38がクリックされたか否かをプログラム登録部511が確認する。
ステップS139において、保存ボタンG38はクリックされていないと判定した場合、プログラミング支援装置100はステップS140を実行する。ステップS140では、プランニングボタンG37が再クリックされたか否かをフロー調節部503が確認する。
ステップS140において、プランニングボタンG37は再クリックされていないと判定した場合、プログラミング支援装置100は処理をステップS139に戻す。
ステップS140において、プランニングボタンG37が再クリックされたと判定した場合、プログラミング支援装置100は処理をステップS132に戻す。これにより、動作プログラムの生成が再度実行される。
ステップS139において、保存ボタンG38がクリックされたと判定した場合、プログラミング支援装置100はステップS141を実行する。ステップS141では、プログラム登録部511が、ステップS138において生成された動作プログラムを動作プログラム記憶部112に書き込む。以上で動作プログラムの生成手順が完了する。
続いて、図35を参照して、上記ステップS132において、第一制約条件及び第二制約条件を満たす実行フローを生成する手順を具体的に例示する。
ステップS201では、フロー調節部503が、タイミング条件を満たすように実行フローを生成する。例えばフロー調節部503は、複数の実行対象の作業ジョブを、タイミング条件に応じてグループ分けする。具体的には、タイミング条件ごとに、当該タイミング条件に関連する全ての作業ジョブを、当該タイミング条件を満たす状態でグループ化する。タイミング条件に一切関連しない作業ジョブは、単独で一グループを構成することとなる。グループ分けの結果、仮に、複数の実行対象の作業ジョブが一つしかグループを含まなかった場合、タイミング条件を満たす実行フローは一つしか存在しないこととなる。複数の実行対象の作業ジョブが複数のグループに分かれた場合、フロー調節部503は、当該複数のグループ同士をランダムに並べて実行フローを生成する。
次に、プログラミング支援装置100はステップS202,S203,S204を実行する。ステップS202では、判定部504が、第一制約条件の確認対象の作業ジョブを選択する。ステップS203では、実行フローにおいて確認対象の作業ジョブよりも前に位置する作業ジョブの実行順序に基づいて、判定部504が確認対象の作業ジョブの実行タイミングにおける環境状態を決定する。例えば、ジョブ02(図32〜34)が作業フローにおける確認対象である場合、判定部504は、ジョブ01がジョブ02の前に位置し、ジョブ03がジョブ02の後に位置するから、ジョブ02の実行タイミングにおいて蓋12は開いていると決定する。ステップS204では、ステップS203において決定した環境状態が第一制約条件を満たしているか否かを判定部504が確認する。
ステップS204において、実行環境が第一制約条件を満たしていないと判定した場合、プログラミング支援装置100はステップS205を実行する。ステップS205では、フロー調節部503が、タイミング条件を満たすように実行フローを調節する。例えばフロー調節部503は、タイミング条件に基づいてグループ化された上記複数のグループ間の順序を変更する。その後、プログラミング支援装置100は処理をステップS202に戻す。
ステップS204において、実行環境が第一制約条件を満たしていると判定した場合、プログラミング支援装置100はステップS206を実行する。ステップS206では、実行フローの全ての作業ジョブについて第一制約条件の確認が完了したか否かを判定部504が確認する。
ステップS206において、未確認の作業ジョブが残っていると判定した場合、プログラミング支援装置100はステップS207を実行する。ステップS207では、判定部504が未確認の作業ジョブのいずれかを選択する。その後、プログラミング支援装置100は処理をステップS202に戻す。以後、全ての作業ジョブが環境条件を満たすと判定されるまで、プログラミング支援装置100はステップS202〜S207を繰り返す。
ステップS206において、全ての作業ジョブについて第一制約条件の確認が完了したと判定した場合、プログラミング支援装置100は実行フローの生成処理を完了する。
(5)シミュレーション手順
図30に示すように、プログラミング支援装置100は、まずステップS151を実行する。ステップS151では、画面データ生成部601が、シミュレーション画面K1の表示用データを生成し、モニタ131に出力する。
次に、プログラミング支援装置100はステップS152を実行する。ステップS152では、プログラム選択ボタンK3がクリックされたか否かを更新部602が確認する。
ステップS152において、プログラム選択ボタンK3がクリックされたと判定した場合、プログラミング支援装置100はステップS153を実行する。ステップS153では、プログラム設定部603が、動作プログラム記憶部112を参照して動作プログラムのリストを生成する。更新部602が、当該リストをリスト表示エリアL2に含むプログラム選択画面L1を表示するように、環境構築画面B1の表示用データを更新する。
次に、プログラミング支援装置100はステップS154を実行する。ステップS154では、プログラム設定部603が、プログラム選択画面L1における動作プログラムの選択入力を待機する。
次に、プログラミング支援装置100はステップS155を実行する。ステップS155では、プログラム設定部603が、プログラム選択画面L1において選択された動作プログラムを、シミュレーション対象の動作プログラムに設定する。
ステップS152において、プログラム選択ボタンK3はクリックされていないと判定した場合、プログラミング支援装置100はステップS156を実行する。ステップS156では、シミュレーション対象の動作プログラムが設定済であるか否かをシミュレーション実行部604が確認する。
ステップS156において、シミュレーション対象の動作プログラムは設定済であると判定した場合、プログラミング支援装置100はステップS157を実行する。ステップS157では、シミュレーション実行ボタンK4がクリックされたか否かを更新部602が確認する。
ステップS157において、シミュレーション実行ボタンK4がクリックされたと判定した場合、プログラミング支援装置100はステップS158を実行する。ステップS158では、シミュレーション実行部604が、環境データ記憶部111に記憶された環境モデルデータにより特定されるシミュレーション環境下において、シミュレーション対象の動作プログラムに従ってロボット2のモデルを動作させる。
次に、プログラミング支援装置100はステップS159を実行する。ステップS159では、動画データ生成部605が、シミュレーション実行部604によるシミュレーション結果に従って、ロボット2のモデルの動画データを生成する。更新部602が、当該動画データをリスト表示エリアL2に表示するように描画エリアK2の表示用データを更新する。
ステップS155,S159を実行した後、プログラミング支援装置100はステップS160を実行する。ステップS156において、シミュレーション対象の動作プログラムが未設定であると判定した場合、及びステップS15においてシミュレーション実行ボタンK4がクリックされていないと判定した場合も、プログラミング支援装置100はステップS160を実行する。ステップS160では、終了ボタンK5がクリックされたか否かを更新部602が確認する。
ステップS160において、終了ボタンK5がクリックされていないと判定した場合、プログラミング支援装置100は処理をステップS152に戻す。
ステップS160において、終了ボタンK5がクリックされたと判定した場合、プログラミング支援装置100は、シミュレーション画面K1をクローズして処理を終了する。
〔本実施形態の効果〕
以上に説明したように、プログラミング支援装置100は、ロボット2の動作パターンを規定する複数の作業ジョブを記憶する作業ジョブ記憶部114と、複数の作業ジョブのいずれかについて、ロボット2の動作環境を指定する環境条件を、ユーザインタフェース130への入力に応じて設定する第一条件設定部412と、複数の作業ジョブのうち、ロボット2に実行させる複数の実行対象の作業ジョブを、ユーザインタフェース130への入力に応じて設定する第二条件設定部417と、第二条件設定部417により設定された複数の実行対象の作業ジョブの実行順序を定めた実行フローにおいて、少なくとも一つの作業ジョブが環境条件を満たすか否かを、当該実行順序に基づいて判定するプランニング支援部501と、を備える。
作業ジョブごとの実行上の制約条件である環境条件は、作業ジョブ同士の関係についての制約条件に比較して高い普遍性を有する傾向がある。実際に、環境条件は、作業ジョブを含んで構成される動作プログラムによらず当該作業ジョブに適用され得る一方、作業ジョブ同士の関係についての制約条件は、動作プログラムごとに特有となり得る。このため、作業ジョブの実行フローに対する条件を環境条件として設定可能とすることで、既登録内容を流用し易くなる。言い換えれば、少なくとも一部の条件を再利用可能なデータとすることができる。従って、プログラミングに際して既登録の動作プログラムを活かし易くなるので、動作プログラミングの負担軽減に有効である。
プランニング支援部501は、実行フローのいずれか一つの作業ジョブの実行タイミングにおける環境状態を、当該実行フローの他の作業ジョブにおけるロボット2の動作内容と、当該実行フローの実行順序とに基づいて特定し、当該環境状態が当該一つの作業ジョブの環境条件を満たすか否かを判定してもよい。この場合、実行順序により特定可能な環境状態と、環境条件とを比較することで、実行フローにおいて、少なくとも一つの作業ジョブが環境条件を満たすか否かを容易に判定することができる。
実行フローが第一作業ジョブ及び第二作業ジョブを順に含む場合に、プランニング支援部501は、少なくとも第一作業ジョブにおけるロボットの動作内容に基づいて第二作業ジョブの実行タイミングにおける環境状態を特定し、当該環境状態が第二作業ジョブの環境条件を満たすか否かを判定してもよい。この場合、作業ジョブが環境条件を満たすか否かを更に容易に判定することができる。
実行フローが第一作業ジョブ、第二作業ジョブ及び第三作業ジョブを順に含む場合に、プランニング支援部501は、少なくとも第一作業ジョブにおけるロボットの動作内容に基づいて第二作業ジョブの実行タイミングにおける環境状態を特定し、当該環境状態を少なくとも第二作業ジョブにおけるロボットの動作内容に基づいて更新して第三作業ジョブの実行タイミングにおける環境状態を特定し、当該環境状態が第三作業ジョブの環境条件を満たすか否かを判定してもよい。この場合、順に並ぶ作業ジョブに応じたロボット2の動作内容に従って、環境状態を順次更新することによって、作業ジョブが環境条件を満たすか否かを更に容易に判定することができる。
第一作業ジョブにより規定される動作パターンが、作業対象物を物理的に操作する動作を含み、第二作業ジョブの環境条件が、当該作業対象物の状態を指定する条件を含む場合に、プランニング支援部501は、第一作業ジョブに従ってロボットが動作した後の当該作業対象物の状態を第二作業ジョブの実行タイミングにおける環境状態として特定し、当該環境状態が第二作業ジョブの環境条件を満たすか否かを判定してもよい。この場合、作業ジョブが環境条件を満たすか否かを更に容易に判定することができる。
プランニング支援部501は、実行フローのいずれか一つの作業ジョブの環境条件と、当該実行フローの他の作業ジョブにおけるロボット2の動作内容とに基づいて、当該一つの作業ジョブが当該環境条件を満たすために、当該一つの作業ジョブと当該他の作業ジョブとの間に必要とされる順序条件を生成し、当該実行フローの実行順序が当該順序条件を満たすか否かを判定してもよい。この場合、環境条件を順序条件に置き換えることによって、作業ジョブが環境条件を満たすか否かを容易に判定することができる。
実行フローが、作業対象物を物理的に操作する動作を含む動作パターンを規定する第一作業ジョブと、当該作業対象物の状態を指定する条件を含む環境条件が設定された第二作業ジョブとを含む場合に、プランニング支援部501は、第一作業ジョブに従ってロボットが動作した後の当該作業対象物の状態と、第二作業ジョブの環境条件が指定する当該作業対象物の状態との関係に基づいて、第一作業ジョブと第二作業ジョブとの間の順序条件を生成してもよい。この場合、作業ジョブが環境条件を満たすか否かを更に容易に判定することができる。
第二条件設定部417は、ユーザインタフェース130への入力に基づいて、少なくとも二つの実行対象の作業ジョブの間に、実行タイミングの関係を指定するタイミング条件を更に設定するように構成され、プランニング支援部501は、タイミング条件を満たすように実行順序を定めた実行フローにおいて、少なくとも一つの作業ジョブが環境条件を満たすか否かを当該実行順序に基づいて判定してもよい。この場合、環境条件の入力のみでなく、タイミング条件の入力も可能とする柔軟なユーザインタフェースによって、使い勝手を向上させることができる。また、環境条件の少なくとも一部がタイミング条件として入力されることによって、環境条件を満たすか否かの判定における演算負荷が軽減される。
プログラミング支援装置100は、環境条件を入力するための第一入力エリアG9と、複数の実行対象の作業ジョブを選択するための第二入力エリアG20と、を含むプランニング画面G1をユーザインタフェース130に表示するためのデータを生成する画面データ生成部401を更に備えてもよい。この場合、既登録内容を流用できる部分と、新たな条件設定が必要となる部分との切り分けが更に容易となる。
プログラミング支援装置100は、ユーザインタフェース130への入力に応じて第一入力エリアG9の表示用データを更新する第一更新部402と、ユーザインタフェース130への入力に応じて第二入力エリアG20の表示用データを更新する第二更新部403と、を更に備えてもよい。画面データ生成部401は、複数の作業ジョブのリストを示すリスト表示エリアG2を更に含むプランニング画面G1の表示用データを生成してもよい。第一更新部402は、リスト表示エリアG2において選択された作業ジョブの環境条件を入力可能とするように第一入力エリアG9の表示用データを更新し、第二更新部403は、リスト表示エリアG2において選択された複数の作業ジョブを表示して当該複数の作業ジョブ間のタイミング条件を入力可能とするように第二入力エリアG20用のデータを更新してもよい。この場合、環境条件の入力対象となる作業ジョブの選択、及びタイミング条件の入力対象となる作業ジョブの選択の両方が容易となる。
プログラミング支援装置100は、第二入力エリアG20に表示される複数の作業ジョブの仮フローを生成する仮フロー生成部416を更に備えてもよい。第二更新部403は、仮フローを表示し、仮フローにおける作業ジョブ間にタイミング条件を入力可能とするように第二入力エリアG20の表示用データを更新してもよい。この場合、仮フローを設定した上で、そのうち変更不可の部分を指定する直感的な操作手順で第二制約条件の入力が可能となる。このため、操作者による第二制約条件の入力が更に容易となる。
環境条件は、作業ジョブの作業対象物の状態を指定する状態指定条件を含んでもよい。第一条件設定部412は、第一入力エリアG9への入力に基づいて作業対象物を設定する対象物設定部413と、第一入力エリアG9への入力に基づいて状態指定条件を設定する状態設定部414と、を有してもよい。この場合、操作者の判断に迷いの生じ難い作業対象物及び状態指定条件の入力により第一制約条件設定が可能となるので、操作者による第一制約条件の入力が更に容易となる。
プログラミング支援装置100は、作業対象物の選択肢を設定し、当該選択肢の表示用のデータを生成する第一入力サポート部408と、状態の指定対象となる作業対象物に応じて、状態指定条件の選択肢を設定し、当該選択肢の表示用のデータを生成する第二入力サポート部409とを更に備えてもよい。この場合、作業対象物の入力に応じて、状態指定条件の入力がサポートされるので、操作者による第一制約条件の入力が更に容易になる。
プログラミング支援装置100は、ロボット2の動作シミュレーション用の環境モデルデータを記憶する環境データ記憶部111から、環境モデルデータに含まれる物を特定する第一オプション情報と、当該物の状態を示す第二オプション情報とを取得するオプション情報取得部410を更に備えてもよい。第一入力サポート部408は、第一オプション情報に基づいて作業対象物の選択肢を設定してもよい。第二入力サポート部409は、第二オプション情報に基づいて状態指定条件の選択肢を設定してもよい。この場合、環境モデルデータを利用して選択肢を設定することで、操作者による第一制約条件の入力が更に容易となる。
画面データ生成部401は、リスト表示エリアG2が第一入力エリアG9及び第二入力エリアG20の間に配置されるようにプランニング画面G1の表示用データを生成してもよい。この場合、環境条件の入力対象となる作業ジョブの選択、及びタイミング条件の入力対象となる作業ジョブの選択に共用されるリスト表示エリアG2を、第一入力エリアG9及び第二入力エリアG20の間に配置することで、操作者による作業性が更に高められる。
プログラミング支援装置100は、少なくとも環境条件を作業ジョブに対応付けて条件記憶部に登録する条件登録部419と、条件記憶部から環境条件を読み込む条件読込部411とを更に備えてもよい。この場合、既登録の制約条件を読み込み可能とすることで、既登録の動作プログラムを更に活かし易くなる。
プランニング支援部501は、実行フローにおいて少なくとも一つの作業ジョブが環境条件を満たすか否かを、当該実行フローの実行順序に基づいて判定する判定部504と、実行フローにおいていずれかの作業ジョブが環境条件を満たしていないと判定した場合に、タイミング条件を満たすように実行順序を変更するフロー調節部503と、環境条件及びタイミング条件とは異なる評価条件に基づいて当該実行フローを評価し、評価結果に基づいて当該実行フローの採用可否を判定するフロー評価部507と、を有してもよい。この場合、制約条件とは異なる評価条件に基づく評価プロセスが加えられることで、より信頼性の高いプログラミング支援が可能である。
プランニング支援部501は、実行フローと、ロボット2の動作シミュレーション用の環境モデルデータとに基づいて、作業ジョブ間におけるロボット2の動作パターンを規定するつなぎジョブを生成するつなぎジョブ生成部506を更に有し、フロー評価部507は、実行フロー、複数の実行対象の作業ジョブ及び少なくとも一つのつなぎジョブを評価条件に基づいて評価し、評価結果に基づいて実行フローの採用可否を判定してもよい。この場合、作業ジョブ間におけるロボットの動作パターンをも考慮して、実行フローの採用可否が判定されるので、より信頼性の高いプログラミング支援が可能である。
実行フローの採用可否を判定するための基準を調節する演算レベルを、ユーザインタフェース130への入力に応じて設定する演算レベル設定部418を更に備えてもよい。この場合、プログラミング支援の速度及び信頼性のバランスを、ユーザニーズに応じて調節可能である。
以上、実施形態について説明したが、本発明は必ずしも上述した実施形態に限定されるものではなく、その要旨を逸脱しない範囲で様々な変形が可能である。例えば、プログラミング支援装置100は、少なくとも条件設定モジュール400及びプログラミングモジュール500を有していればよく、メインモジュール200、環境構築モジュール300及びシミュレーションモジュール600を有しなくてもよい。
上記実施形態に関し、以下を付記する。
(付記1)
ロボットに実行させる複数の作業ジョブについて、前記作業ジョブごとの実行上の制約条件である第一制約条件を、ユーザインタフェースへの入力に応じて設定する第一条件設定部と、
前記作業ジョブ同士の関係についての制約条件である第二制約条件を、前記ユーザインタフェースへの入力に応じて設定する第二条件設定部と、
前記第一制約条件及び前記第二制約条件に基づいて、少なくとも一つの前記作業ジョブの実行タイミングをチェックするプランニング支援部と、を備えるプログラミング支援装置。
(付記2)
前記第一制約条件を入力するための第一入力エリア及び前記第二制約条件を入力するための第二入力エリアを含む入力画面を前記ユーザインタフェースに表示するためのデータを生成する画面データ生成部を更に備える、付記1記載のプログラミング支援装置。
(付記3)
前記ユーザインタフェースへの入力に応じて前記第一入力エリアの表示用データを更新する第一更新部と、
前記ユーザインタフェースへの入力に応じて前記第二入力エリアの表示用データを更新する第二更新部と、を更に備え、
前記画面データ生成部は、前記複数の作業ジョブのリストを示すリスト表示エリアを更に含む前記入力画面の表示用データを生成し、
前記第一更新部は、前記リスト表示エリアにおいて選択された前記作業ジョブの前記第一制約条件を入力可能とするように前記第一入力エリアの表示用データを更新し、
前記第二更新部は、前記リスト表示エリアにおいて選択された複数の前記作業ジョブを表示して当該複数の作業ジョブ間の前記第二制約条件を入力可能とするように前記第二入力エリアの表示用データを更新する、付記2記載のプログラミング支援装置。
(付記4)
前記第二入力エリアに表示される前記複数の作業ジョブの仮フローを生成する仮フロー生成部を更に備え、
前記第二更新部は、前記仮フローを表示し、前記仮フローにおける前記作業ジョブ間に前記第二制約条件を入力可能とするように前記第二入力エリアの表示用データを更新する、付記3記載のプログラミング支援装置。
(付記5)
前記第一制約条件は、前記作業ジョブの作業対象物の状態を指定する状態指定条件を含み、
前記第一条件設定部は、
前記第一入力エリアへの入力に基づいて前記作業対象物を設定する対象物設定部と、
前記第一入力エリアへの入力に基づいて前記状態指定条件を設定する状態設定部と、を有する、付記3又は4記載のプログラミング支援装置。
(付記6)
前記作業対象物の選択肢を設定し、当該選択肢の表示用のデータを生成する第一入力サポート部と、
前記状態の指定対象となる前記作業対象物に応じて、前記状態指定条件の選択肢を設定し、当該選択肢の表示用のデータを生成する第二入力サポート部とを更に備える、付記5記載のプログラミング支援装置。
(付記7)
前記ロボットの動作シミュレーション用の環境データを記憶する環境データ記憶部から、前記環境データに含まれる物を特定する第一オプション情報と、当該物の状態を示す第二オプション情報とを取得するオプション情報取得部を更に備え、
前記第一入力サポート部は、前記第一オプション情報に基づいて前記作業対象物の選択肢を設定し、
前記第二入力サポート部は、前記第二オプション情報に基づいて前記状態指定条件の選択肢を設定する、付記6記載のプログラミング支援装置。
(付記8)
前記画面データ生成部は、前記リスト表示エリアが前記第一入力エリア及び前記第二入力エリアの間に配置されるように前記入力画面の表示用データを生成する、付記7記載のプログラミング支援装置。
(付記9)
前記第一制約条件及び前記第二制約条件の少なくとも一方を条件記憶部に登録する条件登録部と、
前記条件記憶部から前記第一制約条件及び前記第二制約条件の少なくとも一方を読み込む条件読込部とを更に備える、付記2〜8のいずれか一項記載のプログラミング支援装置。
(付記10)
前記プランニング支援部は、前記実行タイミングのチェック結果に基づいて、前記複数の作業ジョブの実行フローを生成することを更に実行する、付記1〜9のいずれか一項記載のプログラミング支援装置。
(付記11)
少なくとも一つの前記作業ジョブについて、前記ロボットの動作パスを規定する第一パス情報を取得するパス情報取得部を更に備え、
前記プランニング支援部は、
前記第一制約条件及び前記第二制約条件に基づいて、少なくとも一つの前記作業ジョブの実行タイミングをチェックするタイミングチェック部と、
前記実行タイミングのチェック結果に基づいて、前記第一制約条件及び前記第二制約条件を満たすように前記実行フローを生成するフロー生成部と、
前記第一制約条件及び前記第二制約条件とは異なる評価条件に基づいて前記実行フロー及び前記第一パス情報を評価し、評価結果に基づいて前記実行フローの採用可否を判定するフロー評価部と、を有する、付記10記載のプログラミング支援装置。
(付記12)
前記プランニング支援部は、
前記実行フローと、前記第一パス情報と、前記ロボットの動作シミュレーション用の環境データとに基づいて、前記作業ジョブ間における前記ロボットの動作パスを規定する第二パス情報を生成するパス生成部を更に有し、
前記フロー評価部は、前記実行フロー、前記第一パス情報及び前記第二パス情報を前記評価条件に基づいて評価し、評価結果に基づいて前記実行フローの採用可否を判定する、付記11記載のプログラミング支援装置。
(付記13)
前記実行フローの採用可否を判定するための基準を調節する演算レベルを、ユーザインタフェースへの入力に応じて設定する演算レベル設定部を更に備える、付記11又は12記載のプログラミング支援装置。
(付記14)
前記プランニング支援部により生成された前記実行フローに基づいて、前記ロボットの動作プログラムを生成するプログラム生成部を更に備える、付記10〜13のいずれか一項記載のプログラミング支援装置。
(付記15)
付記14記載のプログラミング支援装置と、
前記ロボットと、
前記プログラム生成部により生成された前記動作プログラムに従って前記ロボットを制御するコントローラと、を備えるロボットシステム。
(付記16)
プログラミング支援装置により実行される方法であって、
ロボットに実行させる複数の作業ジョブについて、前記作業ジョブごとの実行上の制約条件である第一制約条件を、ユーザインタフェースへの入力に応じて設定することと、
前記作業ジョブ同士の関係についての制約条件である第二制約条件を、前記ユーザインタフェースへの入力に応じて設定することと、
前記第一制約条件及び前記第二制約条件に基づいて、少なくとも一つの前記作業ジョブの実行タイミングをチェックすることと、を含むプログラミング支援方法。
(付記17)
プログラミング支援装置により実行されるプログラム生成方法であって、
ロボットに実行させる複数の作業ジョブについて、前記作業ジョブごとの実行上の制約条件である第一制約条件を、ユーザインタフェースへの入力に応じて設定することと、
前記作業ジョブ同士の関係についての制約条件である第二制約条件を、前記ユーザインタフェースへの入力に応じて設定することと、
少なくとも一つの前記作業ジョブについて、前記ロボットの動作パスを規定する第一パス情報を取得することと、
前記第一制約条件及び前記第二制約条件に基づいて、少なくとも一つの前記作業ジョブの実行タイミングをチェックすることと、
前記実行タイミングのチェック結果に基づいて、前記第一制約条件及び前記第二制約条件を満たすように前記複数の作業ジョブの実行フローを生成することと、
前記実行フローに基づいて、前記ロボットの動作プログラムを生成することと、を含むプログラム生成方法。