(57)【要約】【課題】ロボットのティーチングを行うときに、ロボットの具体的な動きに対する教示を容易にする。【解決手段】本発明の一実施形態は、ロボットの作業対象であるワークに対する前記ロボットの要素作業に関する情報と、前記要素作業に含まれるロボットの順序付けられた複数のモーションの各々をオペレータに識別可能とする複数の識別情報と、を対応付けて表示装置に表示する表示制御部と、前記複数のモーションの各々をロボットに動作させる複数のロボットプログラムを記憶する記憶部と、表示装置に表示される複数の識別情報のうちいずれかの識別情報を選択するオペレータの操作入力に応じて、選択された識別情報に対応するモーションのロボットプログラムを実行するプログラム実行部と、を備えたロボットプログラム実行装置である。【選択図】図９
2019171498.tif 000002
【特許請求の範囲】
【請求項１】
ロボットの作業対象であるワークに対する前記ロボットの要素作業に関する情報と、前記要素作業に含まれる前記ロボットの順序付けられた複数のモーションの各々をオペレータに識別可能とする複数の識別情報と、を対応付けて表示装置に表示する表示制御部と、
前記複数のモーションの各々を前記ロボットに動作させる複数のロボットプログラムを記憶する記憶部と、
前記表示装置に表示される前記複数の識別情報のうちいずれかの識別情報を選択する前記オペレータの操作入力に応じて、前記選択された識別情報に対応するモーションのロボットプログラムを実行するプログラム実行部と、
を備えたロボットプログラム実行装置。
【請求項２】
前記表示制御部は、前記複数の識別情報のうち前記選択された識別情報を、選択されていない識別情報と異なる態様で表示する、
請求項１に記載されたロボットプログラム実行装置。
【請求項３】
前記表示制御部は、前記オペレータによる要素作業を選択する操作入力に基づいて、前記選択された要素作業に含まれる複数のモーションに対応する複数の識別情報を表示し、あるいは非表示とする、
請求項１または２に記載されたロボットプログラム実行装置。
【請求項４】
前記プログラム実行部は、前記オペレータによる前記複数の識別情報のうちいずれかの識別情報
を選択する操作入力に基づいて、前記選択された識別情報に対応するモーションからの順方向の１若しくは複数のモーション、または、前記選択された識別情報に対応するモーションからの逆方向の１若しくは複数のモーションに対応するロボットプログラムを実行する、
請求項１から３のいずれか１項に記載されたロボットプログラム実行装置。
【請求項５】
前記ロボットおよび前記ワークの３次元モデルを仮想空間内に配置して前記表示装置に表示する第２表示制御部と、
前記プログラム実行部による前記ロボットプログラムの実行結果に基づいて、前記ロボットおよび前記ワークの３次元モデルを前記仮想空間内で動作させるシミュレーション実行部と、
をさらに備えた、請求項１から４のいずれか１項に記載されたロボットプログラム実行装置。
【請求項６】
ロボットの作業対象であるワークに対する前記ロボットの要素作業に関する情報と、前記要素作業に含まれる前記ロボットの順序付けられた複数のモーションの各々をオペレータに識別可能とする複数の識別情報と、を対応付けて表示装置に表示し、
前記表示装置に表示される前記複数の識別情報のうちいずれかの識別情報を選択する前記オペレータの操作入力に応じて、前記複数のモーションの各々を前記ロボットに動作させる複数のロボットプログラムの中から、前記選択された識別情報に対応するモーションのロボットプログラムを実行する、
ロボットプログラム実行方法。
【請求項７】
コンピュータに、
ロボットの作業対象であるワークに対する前記ロボットの要素作業に関する情報と、前記要素作業に含まれる前記ロボットの順序付けられた複数のモーションの各々をオペレータに識別可能とする複数の識別情報と、を対応付けて表示装置に表示する手順、
前記表示装置に表示される前記複数の識別情報のうちいずれかの識別情報を選択する前記オペレータの操作入力に応じて、前記複数のモーションの各々を前記ロボットに動作させる複数のロボットプログラムの中から、前記選択された識別情報に対応するモーションのロボットプログラムを実行する手順、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットプログラム実行装置、ロボットプログラム実行方法、および、プログラムに関する。
【背景技術】
【０００２】
ロボットを工場のライン等で動作させるためには、利用者は、ロボットに対して動作を教示（ティーチング）する必要がある。このティーチングには、ロボットの動作させるときの目標となる３次元座標における点の情報（以下、「教示点」という。）を含むプログラムを作成することが含まれる。例えば特許文献１には、ロボットの教示目標点の移動軌跡を表示させるようにしたロボットシステムが記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第５３７５４３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、教示対象となるロボットが行う一連の作業には、複数の要素作業が含まれる。「要素作業」とは、物体を「取る」や「置く」等、一連の作業の中でロボットが行う最小単位の作業を意味する。ティーチング作業においては、ロボットにより行われる各要素作業に含まれるロボットの具体的な動きに対する教示を容易にすることが望まれている。
【０００５】
そこで、本発明は、ロボットのティーチングを行うときに、ロボットの具体的な動きに対する教示を容易にすることを目的とする。
【課題を解決するための手段】
【０００６】
本願の例示的な第１発明は、ロボットの作業対象であるワークに対する前記ロボットの要素作業に関する情報と、前記要素作業に含まれる前記ロボットの順序付けられた複数のモーションの各々をオペレータに識別可能とする複数の識別情報と、を対応付けて表示装置に表示する表示制御部と、前記複数のモーションの各々を前記ロボットに動作させる複数のロボットプログラムを記憶する記憶部と、前記表示装置に表示される前記複数の識別情報のうちいずれかの識別情報を選択する前記オペレータの操作入力に応じて、前記選択された識別情報に対応するモーションのロボットプログラムを実行するプログラム実行部と、を備えたロボットプログラム実行装置である。
【発明の効果】
【０００７】
本発明によれば、ロボットのティーチングを行うときに、ロボットの具体的な動きに対する教示を容易にすることができる。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施形態のロボットプログラム実行装置の全体構成について示す図である。
【図２】図２は、実施形態のロボットプログラム実行装置に含まれる各装置のハードウェア構成を示す図である。
【図３】図３は、実施形態の一例に係る３次元ＣＡＤ用ウィンドウを示す図である。
【図４】図４は、実施形態の一例に係る教示用ウィンドウを示す図である。
【図５】図５は、ジョブを概念的に説明するための図である。
【図６】図６は、タスクを概念的に説明するための図である。
【図７】図７は、実施形態の一例に係る教示用ウィンドウの遷移を示す図である。
【図８】図８は、タスクリストの一例を示す図である。
【図９】図９は、実施形態の一例に係る教示用ウィンドウを示す図である。
【図１０】図１０は、実施形態の一例に係る教示用ウィンドウを示す図である。
【図１１】図１１は、実施形態に係るロボットプログラム実行装置の機能ブロック図である。
【図１２】図１２は、実施形態に係るロボットプログラム実行装置のシーケンスチャートの一例である。
【発明を実施するための形態】
【０００９】
以下、本発明のロボットプログラム実行装置の実施形態について説明する。
以下の説明において、ロボットの要素作業を「タスク」という。ロボットの要素作業とは、物体を「取る」や「置く」等、一連の作業の中でロボットが行う最小単位の作業を意味する。
「部品」とは、ロボットの作業の対象となる物体を意味し、ロボットが把持する物体（例えば、工場内のワーク）に限らず、ロボットの作業に関連する物体（例えば、ロボットが把持する物体を置く棚）をも含む。
ロボットの「基準点」は、後述するロボットのアプローチ点、目標点、デパーチャ点等のロボットの教示点の基準となるロボットの位置を意味し、例えばロボットの作用点（ＴＣＰ：Tool Center Point)である。
【００１０】
以下では、実施形態のロボットプログラム実行装置によって、ロボットの実機に接続しないオフラインティーチングを支援する場合について説明するが、その限りではない。本実施形態のロボットプログラム実行装置は、オンラインティーチングを支援するように構成することができる。
【００１１】
（１）本実施形態に係るロボットプログラム実行装置の構成
以下、本実施形態のロボットプログラム実行装置１の構成について、図１および図２を参照して説明する。図１は、本実施形態のロボットプログラム実行装置１の全体構成について示す図である。図２は、本実施形態のロボットプログラム実行装置１に含まれる各装置のハードウェア構成を示す図である。
【００１２】
図１に示すように、ロボットプログラム実行装置１は、情報処理装置２およびロボット制御装置３を備える。情報処理装置２とロボット制御装置３とは、例えばイーサネット（登録商標）ケーブルＥＣにより通信可能に接続される。
情報処理装置２は、工場のラインに設置されたロボットに対して動作を教示するための装置である。情報処理装置２は、オペレータによるオフラインティーチングを行うために設けられており、例えばロボットが設置される工場から離れた位置（例えば、オペレータの作業場所）に配置される。
【００１３】
ロボット制御装置３は、情報処理装置２から送信されるロボットプログラムを実行する。本実施形態ではロボット制御装置３はロボットと接続されないが、ロボットと接続された場合には、ロボットプログラムの実行結果に応じた制御パルスをロボットに送り、ロボットを動作させることが可能である。そのため、ロボット制御装置３は、好ましくはロボットの実機の近傍に配置される。
【００１４】
図２に示すように、情報処理装置２は、制御部２１と、ストレージ２２と、入力装置２３と、表示装置２４と、通信インタフェース部２５とを備える。
制御部２１は、ＣＰＵ（Central Processing Unit）、ＲＯＭ（Read Only Memory）、および、ＲＡＭ（Random Access Memory）を含む。ＲＯＭには、３次元ＣＡＤアプリケーションプログラムと教示ソフトウェアが記憶されている。ＣＰＵは、ＲＯＭ上の３次元ＣＡＤアプリケーションソフトウェア（以下、適宜「ＣＡＤソフトウェア」という。）と教示ソフトウェアをＲＡＭに展開して実行する。教示ソフトウェアとＣＡＤソフトウェアは、ＡＰＩ（Application Program Interface）を介して協調して処理を実行する。
制御部２１は、ＣＡＤソフトウェアによる動画再生を行うために、フレーム単位で画像を連続的に表示する。
【００１５】
ストレージ２２は、ＨＤＤ（Hard Disk Drive）あるいはＳＳＤ（Solid State Drive）等の大容量記憶装置であり、制御部２１のＣＰＵにより逐次アクセス可能に構成されている。後述するように、ストレージ２２には、ロボットプログラム２２１、階層型リストデータベース２２２、３次元モデルデータベース２２３、および、実行ログデータベース２２４が格納される。
３次元モデルデータベース２２３には、ＣＡＤソフトウェアを実行するときに参照される３次元モデルのデータが含まれる。本実施形態の例では、３次元モデルデータベース２２３には、ロボットおよび部品（例えば、後述するペン、キャップ、製品、ペントレイ、キャップトレイ、製品トレイ）の３次元モデルのデータが含まれる。
実行ログデータベース２２４には、ロボット制御装置３から取得した実行ログデータが含まれる。実行ログデータは、ロボットプログラムの実行結果と、後述するロボット状態データとを含む。ロボット状態データは、３次元ＣＡＤによってロボットの動作を仮想空間内で動画（アニメーション）により再現するために使用される。
【００１６】
入力装置２３は、オペレータによる操作入力を受け付けるためのデバイスであり、ポインティングデバイスを含む。
表示装置２４は、教示ソフトウェアおよびＣＡＤソフトウェアの実行結果を表示するためのデバイスであり、表示駆動回路および表示パネルを含む。
通信インタフェース部２５は、ロボット制御装置３との間でイーサネット通信を行うための通信回路を含む。
【００１７】
ロボット制御装置３は、制御部３１と、ストレージ３２と、通信インタフェース部３３とを備える。
制御部３１は、ＣＰＵ、ＲＯＭ、ＲＡＭ、および、制御回路を含む。制御部３１は、情報処理装置２から受信するロボットプログラムを実行し、実行ログデータを出力する。上述したように、実行ログデータには、ロボットプログラムの実行結果と、ロボットプログラムに記述された作業を実行するロボットのロボット状態データとを含む。
ストレージ３２は、ロボットのマニピュレータ（アーム５１、ハンド５２を含むロボット本体）のモデルのデータを備えている。制御部３１は、ロボットプログラムの実行結果に基づいて、マニピュレータを構成する各部のジョブを実行中の時間の経過に応じた物理量（例えば、所定の基準時間（例えば１ｍｓ）ごとの関節角、基準点の座標位置等のデータ）を演算する。かかる物理量のデータが上記ロボット状態データに含まれる。
【００１８】
ストレージ３２は、ＨＤＤあるいはＳＳＤ等の大容量記憶装置であり、制御部３１のＣＰＵにより逐次アクセス可能に構成されている。ストレージ３２には、ロボットのマニピュレータのモデルのデータの他に、情報処理装置２から送信されるロボットプログラムと、実行ログデータとが格納される。
通信インタフェース部３３は、情報処理装置２との間でイーサネット通信を行うための通信回路を含む。
【００１９】
（２）オフラインティーチングにおけるユーザインタフェース
ロボットのシミュレーションを実行する前に、オペレータは、情報処理装置２を使用して、ロボットに対するオフラインティーチングを行い、ロボットプログラムを作成する。ロボットプログラムを作成するに当たって、本実施形態の好ましい例では、ＣＡＤソフトウェアと教示ソフトウェアを情報処理装置２に実行させる。
ＣＡＤソフトウェアの実行結果はＣＡＤ用ウィンドウに表示され、教示ソフトウェアの実行結果は教示用ウィンドウに表示される。オペレータは、ＣＡＤ用ウィンドウと教示用ウィンドウの両方を情報処理装置２に表示させ、あるいはＣＡＤ用ウィンドウと教示用ウィンドウを切り替えながら情報処理装置２に表示させ、ティーチングやＣＡＤによる動画再生に関連する操作を行う。
【００２０】
図３に、本実施形態の一例に係るＣＡＤ用ウィンドウＷ１を示す。図３には、テーブルＴＬの上に、ロボットＲと、ペントレイ１１と、キャップトレイ１２と、治具１３と、製品トレイ１４とが、仮想空間に配置された状態の画像（以下、適宜「ＣＡＤ画像」という。）が表示されている。
図３に示す例では、ロボットＲがペンにキャップを嵌めて製品（ペンにキャップが嵌められた状態の完成品）を組み立てる一連の作業を行うことが想定されている。ペントレイ１１には複数のペンからなるペン群Ｐが配置され、キャップトレイ１２には複数のキャップからなるキャップ群Ｃが配置されている。治具１３は、ロボットＲがペンを一時的に配置してキャップを嵌める作業を行うための部材である。製品トレイ１４は、製品を置くための部材である。
【００２１】
図３に示す例では、ペン群Ｐに含まれる各ペン、キャップ群Ｃに含まれる各キャップ、ペントレイ１１、キャップトレイ１２、治具１３、製品トレイ１４の各々は、ロボットＲの作業対象である部品の例である。また、ペンにキャップが嵌められた製品も部品の例である。
各ペン、各キャップ、ペンにキャップが嵌められた製品は、それぞれワークの一例である。
【００２２】
（２−１）階層型リスト
図４に、本実施形態の一例に係る教示用ウィンドウＷ２を示す。教示用ウィンドウＷ２に表示されているのは、図３のＣＡＤ画像に含まれているロボットＲ、および、部品の階層関係を示す階層型リストである。
【００２３】
教示ソフトウェアは、ＣＡＤソフトウェアと連携して階層型リストを作成することができる。階層型リストとして木構造のデータフォーマットが教示ソフトウェアによって用意される。オペレータは、ＣＡＤ用ウィンドウと教示用ウィンドウを表示させた状態で、ＣＡＤ画像内のロボットＲおよび部品をポインティングデバイスで選択した状態で上記木構造のデータフォーマットの所望のノードまでドラッグする操作を行う。この操作を、ロボットＲの教示を行うのに必要となるすべての部品に対して順に行うことで、階層型リストを完成させることができる。階層型リストに表示される各ノードの名称は、元となる３次元モデルの名称がそのまま適用されてもよいが、後で名称を変更できるようにしてもよい。
【００２４】
以下の説明では、ＣＡＤ画像内のロボットＲ、部品を階層型リストのいずれかのノードに含めるようにすることを、ロボットＲ又は部品を「階層型リストに登録する」という。図３では、ロボットが１体である場合のＣＡＤ画像を例示しているが、ロボットが２体以上存在する場合には、当該２体以上のロボットを階層型リストに登録することができる。
【００２５】
図４に示す階層型リストにおいて、ロボットＲ（Robot_R）のノードの下層には、ハンドに関連する３個のノードが設けられている。ハンドに対して複数のノードを設けているのは、ハンドに想定される作業状態を考慮するためである。すなわち、ノード６１〜６３は、以下の内容を意味する。
【００２６】
・ノード６１（Pen）…ペンを把持する作業に対応したハンド
・ノード６２（Cap）…キャップを把持する作業に対応したハンド
・ノード６３（Pen_with_Cap）…キャップが嵌められたペンを把持する作業に対応したハンド
【００２７】
ノード６１〜６３のいずれかを対象として右クリック操作を行い、「ハンドシーケンス操作」を選択すると、アクチュエーション方式（シングルソレノイド、又はダブルソレノイド等）、センサ種類などのハンドシーケンスに関連する設定を行うことができる。
ハンドシーケンスは、ロボットＲのハンド５２が把持する部品に依存するため、ハンド５２が把持する部品ごとに設定される。ハンドシーケンスが設定されていない場合に後述するタスクを作成した場合には、タスクに基づくプログラムを実行できないため、表示装置２４に警告表示を出力してもよい。
【００２８】
部品の構成要素には、治具（JIG）、ペントレイ（PenTray）、キャップトレイ（CapTray）、製品トレイ（ProductTray）、ペン（Pen1, Pen2,…，Pen12）、キャップ（Cap1, Cap2,…，Cap12）、および、製品（PenProduct1, PenProduct2,…，PenProduct12）が含まれる。
治具（JIG）のノードの下位には、治具を対象とした作業に対応して、例えば、以下のノードが設けられる。
【００２９】
・ノード６４（PenProduct）…製品（PenProduct）を保持した状態の治具
・ノード６５（PenJ）…ペン（Pen）を保持した状態の治具
・ノード６６（CapJ）…キャップ（Cap）を保持した状態の治具
【００３０】
ペントレイ（PenTray）のノードの下位には、ペンPen1, Pen2,…，Pen12に対応する各ノードが設けられる。キャップトレイ（CapTray）のノードの下位には、キャップCap1, Cap2,…，Cap12に対応する各ノードが設けられる。製品トレイ（ProductTray）のノードの下位には、製品PenProduct1, PenProduct2,…，PenProduct12に対応する各ノードが設けられる。
【００３１】
階層型リストの中のロボットＲ（図４のRobot_R）、および部品（治具（JIG）、ペントレイ（PenTray）、キャップトレイ（CapTray）、製品トレイ（ProductTray）、ペンPen1, Pen2,…，Pen12、キャップCap1, Cap2,…，Cap12、および、製品PenProduct1, PenProduct2,…，PenProduct12）の各ノードは、各々に対応する３次元モデルのデータと関連付けられた状態となっている。そのため、階層型リストを作成後に階層型リスト内のロボットＲおよび部品の３次元モデルに変更があった場合であっても、階層型リストに再度登録する必要はない。
【００３２】
（２−２）ジョブおよびタスクについて
次に、ジョブおよびタスクについて、図５および図６を参照して説明する。
図５は、ジョブを概念的に説明するための図である。図６は、タスクを概念的に説明するための図である。
【００３３】
ジョブとは、ロボットＲが行う一連の作業である。タスクとは、前述したように一連の作業の中でロボットＲが行う最小単位の作業である要素作業を意味する。従って、図５に示すように、ジョブ（JOB）に相当する期間には、複数のタスクＴ１，Ｔ２，…，Ｔｎ−１，Ｔｎに対応する期間と、ロボットＲのタスク間の移動（以下、適宜「タスク間移動」という。）と、が含まれる。図５に示すように、本実施形態では、ロボットＲが行うジョブに対して複数のタスクが定義される。
【００３４】
各タスクには、複数のモーション（「ロボットＲの動き」を意味する。）Ｍ１〜Ｍｎが含まれる。タスクには、モーションの他、ハンドシーケンス（ＨＳ）が含まれてもよい。ハンドシーケンスは、ロボットＲのハンド５２による部品の把持についての一連の処理である。隣接するモーションの間には、後述するインターロック等による待機時間ＷＴが設定される場合がある。
【００３５】
図６において、矢印付きの線は、ロボットＲのハンド５２の軌跡を概念的に示している。当該軌跡は、タスクの目標点ＴＰに到達する前の通過点であるアプローチ点ＡＰ１，ＡＰ２と、目標点ＴＰと、目標点ＴＰに到達した後の通過点であるデパーチャ点ＤＰ１，ＤＰ２とを含む。目標点ＴＰは、タスクの対象である部品の位置を示している。
【００３６】
図６に示す例では、アプローチ点ＡＰ１に到達する前のロボットＲの動作が、タスク間の移動（つまり、前のタスクと図６に示すタスクとの間の移動）に相当する。デパーチャ点ＤＰ２から後のロボットＲの動作が、タスク間の移動（つまり、図６に示すタスクと次のタスクとの間の移動）に相当する。アプローチ点ＡＰ１からデパーチャ点ＤＰ２までのロボットＲの動作が１つのタスクに対応し、当該タスク内において隣接する点間のロボットＲの動きが１つのモーションに相当する。
タスクを実行させるロボットプログラムには、タスクの内容に関する情報のほか、目標点ＴＰ、アプローチ点ＡＰ、およびデパーチャ点ＤＰのうち少なくともいずれかの点に関する情報が含まれうる。
【００３７】
図６では、アプローチ点ＡＰ１，ＡＰ２においてそれぞれインターロックＩＬ１，ＩＬ２が設定されている場合が例示されている。インターロックは、他のロボット等との干渉を回避するために、所定の信号が入力されるまで、目標点ＴＰ、アプローチ点ＡＰ、およびデパーチャ点ＤＰの少なくともいずれかの点においてロボットＲの動作を待機させる処理である。
タスクには、インターロックを設定する点と、インターロックによる待機時間のタイムアウト値とを含むインターロック設定に関する情報を含んでもよい。
【００３８】
（２−３）タスクに対応するロボットプログラムの作成
次に、階層型リストを用いたタスクに対応するロボットプログラム（以下、適宜「タスクプログラム」という。）の作成方法について、図４および図７を参照して説明する。図７は、本実施形態の一例に係る教示用ウィンドウの遷移を示す図である。
図４に示す階層型リストにおいてタスクプログラムを作成するには、先ず、ロボット領域ＲＡに含まれるロボットＲ（Robot_R）のハンド（Hand）のノード６１〜６３のうちいずれかのノードを、オペレータがポインティングデバイスで選択して右クリック操作を行い、「タスク作成」を選択する。すなわち、ノードの選択は、オペレータの操作入力に基づいて、タスクにおけるロボットＲのハンドの把持対象から選択される。
【００３９】
「タスク作成」が選択されると、図７のタスクプログラム作成のための教示用ウィンドウＷ３が表示される。教示用ウィンドウＷ３はタスクの詳細設定を行うための画面であり、タスク名称（Name）と、タスクの種別（Function）、タスクの目標物（Target）の各項目が表示される。ここで、階層型リストのパーツ領域ＰＡの中からいずれかの部品に対応するノードをポインティングデバイスで左クリックすることで、教示用ウィンドウＷ３の目標物（Target）の項目に、左クリックにより選択された部品が入力される。タスクの種別（Function）の欄には、予め設定された複数の種類のタスクの種別（例えば、取る（Pick up）、置く（Place）等）の候補からなるプルダウンメニューの中からいずれかのタスクの種別を選択できるように構成されている。
【００４０】
次いで、階層型リストのパーツ領域ＰＡの中から作業対象となる部品をポインティングデバイスで選択して左クリック操作を行うことにより、教示用ウィンドウＷ３の目標物（Target）の項目に、選択された部品が入力される。
タスクの種別（Function）と目標物（Target）の各項目についてデータが入力されると、当該データに基づいて、タスクの名称（Name）が自動的に決定されて表示される。
【００４１】
例えば、ロボットＲのハンドが何も把持していない状態において、「ペントレイからペンPen1を取る」というタスクを作成するには、図４に示す階層型リストのロボット領域ＲＡ内のノード６１を、オペレータはポインティングデバイスで右クリックしてから「タスク作成」を選択する。次いで、階層型リストのパーツ領域ＰＡの中からペントレイ（PenTray）に対応するノード６７を対象としてポインティングデバイスで左クリック操作を行うことで教示用ウィンドウＷ３の目標物（Target）の項目に、ペントレイ（PenTray）が入力される。タスクの種別（Function）の欄では、複数のタスクの種別の候補の中から「取る（Pick up）」を選択する。そして、階層型リストのパーツ領域ＰＡの中から作業対象となるペンPen1に対応するノード６８を対象としてポインティングデバイスで左クリック操作を行うことで、図７に示す教示用ウィンドウＷ３が表示される。
【００４２】
以上の操作の結果、「ペントレイからペンPen1を取る」というタスクに対応して、“Pickup_Pen1_From_PenTray”という名称のタスクプログラムが作成される。
本実施形態では、要素作業の対象となる部品（ここでは「ペンPen1」）と、要素作業の始点（例えば「ペントレイ」）若しくは終点とを階層型リスト上で指定することで、オペレータは直感的にタスクプログラムを作成することができる。また、タスクプログラムの名称は、タスクの作業内容（例えば「Pickup」）と、タスクの作業対象（例えば「ペンPen1」）と、タスクの始点となる部品（例えば「ペントレイ」）、又は終点となる部品とを含むように自動的に作成されるため、タスクプログラムの名称からタスクの内容が直ちに分かるようになっている。
【００４３】
タスクプログラムを作成する際に、タスクに含まれるアプローチ点ＡＰ、目標点ＴＰ、および、デパーチャ点ＤＰについての情報が自動的に作成されてもよい。あるいは、オペレータが教示用ウィンドウＷ３のボタンｂ１（「詳細設定」）を操作し、１又は複数のアプローチ点及び／又はデパーチャ点を設定してもよい。自動的にアプローチ点ＡＰ、目標点ＴＰ、および、デパーチャ点ＤＰを作成する場合、部品の重心を目標点ＴＰとして設定し、部品の重心を基準とした部品のローカル座標系において所定の軸上（例えばＺ軸上）にアプローチ点ＡＰおよびデパーチャ点ＤＰを設定してもよい。
【００４４】
図７を参照すると、教示用ウィンドウＷ３のボタンｂ１（「詳細設定」）を操作することで、オペレータは、「アプローチ点、デパーチャ点設定」のほか、「モーションパラメータ設定」および「インターロック設定」のいずれかを選択することができる。
モーションパラメータとは、タスクに含まれる隣接するアプローチ点ＡＰ間、アプローチ点ＡＰから目標点ＴＰまでの間、および、目標点ＴＰからデパーチャ点ＤＰまでの間のロボットＲのハンド５２等の動きに関するパラメータである。例えば、かかるパラメータとして、移動速度、加速度、加速時間、減速時間、ロボットＲの姿勢等が挙げられる。「モーションパラメータ設定」を選択することで、上記モーションパラメータをデフォルト値から変更することができる。
「インターロック設定」を選択することで、インターロックの待機時間のタイムアウト値と、待機時間がタイムアウト値を超えてエラーと判断したときの動作の設定とを、デフォルト値から変更することができる。
【００４５】
図７の教示用ウィンドウＷ３には、ボタンｂ２（「作成」）が設けられている。ボタンｂ２（「作成」）が操作されることで、教示用ウィンドウＷ３によって設定されたタスクが後述するタスクリストに登録される。
【００４６】
（２−４）タスクに基づくプログラムの作成
例えば、図６に示すタスクに対応するタスクプログラムは、以下の複数の関数からなり、各関数は、ロボットＲに対応するモーションを実行させるためのプログラム（以下、適宜「モーションプログラム」という。）によって記述されている。
なお、以下のmove(AP1)は、タスク間の移動として別に定義されてもよい。
【００４７】
・move(AP1) …アプローチ点ＡＰ１までの移動
・interlock(IL1)…アプローチ点ＡＰ１でインターロック（ＩＬ１）による待機
・move(AP2)…アプローチ点ＡＰ２までの移動
・interlock(IL2)…アプローチ点ＡＰ２でインターロック（ＩＬ２）による待機
・move(TP)…目標点ＴＰまでの移動
・handSequence()…ハンドシーケンス処理
・move(DP1)…デパーチャ点ＤＰ１までの移動
・move(DP2)…デパーチャ点ＤＰ２までの移動
なお、interlock(IL1)およびinterlock(IL2)の関数において、タスクごとの動作確認を行う場合、プログラムは作成されるが、インターロックによる待機時間のタイムアウト値が無効となっている。
【００４８】
（２−５）タスクリスト
タスクリストとは、ロボットＲが行うジョブに含まれる複数のタスクを含む情報であり、複数のタスクの各々に対応するタスクプログラムの名称の一覧の情報である。特定のジョブを対象として教示用ウィンドウＷ３によって定義されたタスクは、順次、当該ジョブに対応するタスクリストに登録されていく。タスクリストに含まれる複数のタスクの順序は、当該複数のタスクの実行順序を示していることが、ジョブを管理する上で好ましい。
【００４９】
図８の教示用ウィンドウＷ４は、「ペンにキャップを嵌めて製品を組み立てる」という一連の作業であるジョブ（「Pen Assembly」）に対応するタスクリストの一例を表示する。このタスクリストの一例は、以下の(i)〜(vi)の６個のタスクを含む。この場合、タスクプログラム作成のための教示用ウィンドウＷ３によって、括弧内に表された名称のタスクプログラムが作成された場合を示している。
(i) ペントレイからペンを取る (Pickup_Pen1_From_PenTray)
(ii) 取ったペンを治具にセットする (Place_to_PenJ_in_PenProduct)
(iii) キャップトレイからキャップを取る (Pickup_Cap1_From_CapTray)
(iv) 治具上のペンにキャップを嵌める (Place_to_CapJ_in_PenJ)
(v) キャップが嵌められたペンを取る (Pickup_PenProduct_From_JIG)
(vi) キャップが嵌められたペンを製品トレイに置く (Place_to_PenProduct1_in_ProductTray)
【００５０】
オペレータは、タスクリストにおいて、いずれかのタスクをポインティングデバイスで選択した状態でドラッグ操作を行うことで、選択されたタスクをタスクリスト中の任意の順序に設定することができる。
【００５１】
図８に示すように、タスクリストのいずれかのタスクをポインティングデバイスで選択した状態で右クリックを行うと、「タスク編集」、「タスク追加」、「タスク削除」のいずれかの処理を選択できる。ここで、「タスク編集」が選択された場合には、選択されているタスクの教示用ウィンドウＷ３に戻って、当該タスクについての情報を変更することができる。「タスク追加」が選択された場合には、選択されているタスクのすぐ後の順序に、作成済みのタスクを読み込んで挿入するか、あるいは、教示用ウィンドウＷ３に戻ってタスクを作成して挿入することができる。「タスク削除」が選択された場合には、選択されているタスクをタスクリストから削除することができる。
オペレータの操作に応じてタスクプログラムが変更され、追加され、あるいは削除される。
【００５２】
図８に示すように、タスクリスト中の各タスクには、各タスクに含まれる複数のモーションを表示するための展開アイコンＥＩが対応付けられている。いずれかの展開アイコンＥＩを操作することで、操作された展開アイコンＥＩに対応するタスクに含まれる複数のモーションが表示される。例えば、図８のタスクリストにおいてタスクＴ２に対応する展開アイコンＥＩが操作されると、図９に示す教示用ウィンドウＷ５が表示される。
【００５３】
図９に示す例では、タスクＴ２には、タスクＴ２に含まれる以下の複数のモーションを特定する名称であるモーション名称Ｍ２１〜Ｍ２５が対応付けられて表示される。
・モーション名称Ｍ２１… アプローチ点ＡＰ２までの動作 (Approach_point-2) 
・モーション名称Ｍ２２… アプローチ点ＡＰ１までの動作 (Approach_point-1)
・モーション名称Ｍ２３… 目標点ＴＰまでの動作 (Target_point)
・モーション名称Ｍ２４… ハンドの動作 (Hand-Open)
・モーション名称Ｍ２５… デパーチャ点ＤＰ１までの動作 (Departure_point-1)
【００５４】
図９に示す教示用ウィンドウＷ５では、展開アイコンＥＩに代えて折畳みアイコンＦＩがタスクＴ２に対応付けられるとともに、タスクＴ２に含まれるモーション名称Ｍ２１〜Ｍ２５が表示される。なお、折畳みアイコンＦＩが操作されると、モーション名称Ｍ２１〜Ｍ２５が非表示となり、再度図８に示す教示用ウィンドウＷ４が表示される。
【００５５】
（２−６）ロボット動作のシミュレーション
図８の教示用ウィンドウＷ４に示すように、タスクリストに対応して以下のボタンが設けられている。
・ボタンｂ３（「RUN」）…選択されている項目（タスクまたはモーション）からロボットを動作させるボタンｂ４（「STOP」）… ロボット動作を停止させるためのボタン
・ボタンｂ５（「Next」）… タスクリストにおいて選択されている項目から次の項目までロボットを動作させるボタン
・ボタンｂ６（「Back」）… タスクリストにおいて選択されている項目から前の項目までロボットを動作させるボタン
・ボタンｂ７（「教示点保存」）… 複数のモーションのうち目標点(Target_point)が選択されている場合、現在のロボットの基準点の座標を新たなターゲットポイントとして保存させるボタン
・ボタンｂ８（「位置補正」）…複数のモーションのうちアプローチ点(Approach_point)、目標点(Target_point)、またはデパーチャ点(Departure_point)のいずれかの点が選択されている場合、選択されている点を現在のロボットの基準点の座標に書き換えるボタン
【００５６】
図１０に示すように、好ましくは、タスクリストの中で選択されている項目（タスクまたはモーション）は、選択されていない項目と異なる態様で表示される。図１０では、モーション名称Ｍ２２が選択されている教示用ウィンドウＷ６が例示される。
オペレータがタスクリストの中で少なくとも１つの項目を選択し、教示用ウィンドウＷ５のボタンｂ３（「RUN」）、ボタンｂ５（「Next」）、およびボタンｂ６（「Back」）のいずれかの操作を行うことで、タスク単位あるいはモーション単位でロボットプログラムを実行することができる。好ましくは、ロボットプログラムの実行結果に基づいて、ＣＡＤソフトウェアは、仮想空間内でのロボットＲの動きの動画（アニメーション）表示が行われる。
本実施形態では、タスク単位あるいはモーション単位でロボットプログラムを実行し、動画表示させることができる。
【００５７】
（３）ロボットプログラム実行装置１の機能
次に、本実施形態のロボットプログラム実行装置１の機能について、図１１を参照して説明する。図１１は、実施形態に係るロボットプログラム実行装置１の機能ブロック図である。
図１１に示すように、ロボットプログラム実行装置１は、表示制御部１０１、プログラム作成部１０２、プログラム実行部１０３、状態情報算出部１０４、シミュレーション実行部１０５、および、インターロック設定部１０６を備える。
ロボットプログラム実行装置１はさらに、ロボットプログラム２２１、階層型リストデータベース２２２、３次元モデルデータベース２２３、および、実行ログデータベース２２４を備える。
【００５８】
以下の説明において、情報処理装置２の制御部２１の処理について言及するときには、制御部２１に含まれるＣＰＵが教示ソフトウェア及び／又はＣＡＤソフトウェアを実行することにより処理が行われる。
【００５９】
表示制御部１０１は、教示ソフトウェアおよびＣＡＤソフトウェアの実行結果を表示装置２４に表示させる制御を行う。表示制御部１０１の機能を実現するために、情報処理装置２の制御部２１は、教示ソフトウェアおよびＣＡＤソフトウェアの出力を含む画像データを生成し、バッファリングし、表示装置２４へ送信する。表示装置２４は、表示駆動回路を駆動して画像を表示パネルに表示する。
【００６０】
表示制御部１０１は、ロボットの作業対象であるワークに対するロボットのタスクについてのタスクプログラム名称と、前記タスクに含まれるロボットの順序付けられた複数のモーションの各々をオペレータに識別可能とする複数のモーションプログラム名称と、を対応付けて表示装置２４に表示する機能を備える。
プログラム作成部１０２は、ロボットにタスクを行わせるためのタスクプログラムと、タスクに含まれる複数のモーションをロボットに行わせるためのモーションプログラムとを作成する機能を備える。
【００６１】
図９に示した例では、タスクに関する情報の一例としてタスクＴ２のタスクプログラム名称（Place_to_PenJ_in_PenProduct）と、タスクＴ２に含まれるモーションを特定するモーション名称とが対応付けられて表示される。モーション名称は、複数のモーションの各々の識別情報の一例である。
【００６２】
プログラム作成部１０２の機能は以下のようにして実現される。
情報処理装置２のストレージ２２には、タスクの種別（Function）ごとに、テンプレートとなるプログラムコードがタスクの関数として記録されている。オペレータによりタスクの種別（Function）、タスクの目標物（Target）、アプローチ点、デパーチャ点、モーションパラメータ等が設定されると（図７参照）、情報処理装置２の制御部２１は、設定されたタスクの種別に対応するプログラムコードのテンプレートに、設定された情報を埋め込むことで、ロボットプログラムのコードを作成する。
また、タスクの種別ごとのテンプレートとなるプログラムコードには、当該タスクに含まれる複数のモーションの各々に対応するプログラムコードが含まれている。そのため、上記設定された情報をテンプレートに埋め込むことで、モーションプログラムのコードが自動的に生成されることになる。
【００６３】
例えば、タスクの種別として「取る（Pick up）」が設定された場合、「取る（Pick up）」に対応するプログラムコードのテンプレートには、アプローチ点ＡＰ１まで移動させる関数move(AP1)やアプローチ点ＡＰ２まで移動させる関数move(AP2)等が含まれており、設定されたアプローチ点ＡＰ１，ＡＰ２の具体的な座標値を埋め込むことで、モーションプログラムである関数move(AP1)，move(AP2)が作成される。「取る（Pick up）」に含まれるすべてのモーションプログラムが作成されると、結果的に「取る（Pick up）」に対応するタスクプログラムが作成される。
タスクプログラムの名称およびモーションプログラムの名称として、テンプレートに応じた名称が自動的に設定される。情報処理装置２の制御部２１は、生成されたタスクプログラムおよびモーションプログラムをそれぞれの名称と関連付けてストレージ２２に記録する。
ストレージ２２は、複数のモーションの各々をロボットに動作させる複数のロボットプログラムを記憶する記憶部の一例である。
【００６４】
ロボットが行うジョブは、複数のタスクを含む。オペレータがタスク間の動作を設定し（例えば、モーションパラメータを設定し）、および／または、２以上のタスクの中からいずれかのタスクを条件分岐によって実行させる場合に当該条件を設定することにより、ジョブに対応する全体のロボットプログラムが作成される。
【００６５】
上記表示制御部１０１の機能を実現するために、制御部２１は、ストレージ２２からタスクプログラムと当該プログラムに含まれる関数としての複数のモーションプログラムを読み出し、各プログラムの名称に基づいてタスクリストを構成して表示装置２４に表示する。
【００６６】
表示制御部１０１は、図１０に示したように、タスクリストにおいて、複数のモーションプログラム名称（識別情報の一例）のうち選択されたモーションプログラム名称を、選択されていないモーションプログラム名称と異なる態様で表示装置２４に表示する機能を備えてもよい。それによって、ティーチング作業を行うオペレータに対して、動作確認を行おうとしているモーションを明確に認識させることができる。異なる態様で表示させる表示態様は、図１０に示した態様に限られず、様々な態様を採ることができる。例えば、選択されたモーションプログラム名称を、他と異なる色や輝度で表示してもよい。
【００６７】
表示制御部１０１は、オペレータによるタスクを選択する操作入力に基づいて、選択されたタスクに含まれる複数のモーションに対応する複数のモーション名称を表示し、あるいは非表示とする機能を備えてもよい。例えば、図８に示すようにタスクＴ２に対応付けられる複数のモーション名称を非表示とし、あるいは、図９に示すようにタスクＴ２に対応付けられる複数のモーション名称を表示してもよい。図８および図９の例では、展開アイコンＥＩと折畳みアイコンＦＩの操作に応じて表示と非表示とが切り替えられる。複数のモーション名称の表示と非表示とを切り替えられることでオペレータは、限られた表示画面の中で、注目したいタスクに含まれるモーションのみを表示させることができるため、ティーチング作業の効率化を図ることができる。
【００６８】
プログラム実行部１０３は、表示装置２４に表示される複数のモーション名称のうちいずれかのモーション名称を選択するオペレータの操作入力に応じて、選択されたモーション名称に対応するモーションプログラムを実行する機能を備える。
プログラム実行部１０３の機能を実現するために、情報処理装置２の制御部２１は、図８のボタンｂ３（「RUN」）、ボタンｂ５（「Next」）、およびボタンｂ６（「Back」）のいずれかの操作に応じて、選択されている項目（タスクまたはモーション）に対応する範囲のロボットプログラムを、通信インタフェース部２５を介してロボット制御装置３へ送信する。ロボット制御装置３の制御部３１は、ロボットプログラムを受信すると、ロボットプログラムを実行する。
【００６９】
状態情報算出部１０４は、プログラム実行部１０３による実行結果に基づいて、時間の経過に応じたロボットの状態を示す情報であるロボット状態データを演算する機能を備える。
【００７０】
状態情報算出部１０４の機能を実現するために、ロボット制御装置３の制御部３１は、情報処理装置２からロボットプログラムを実行し、ロボットプログラムの実行結果として、ロボット状態データを演算して順次、ストレージ３２に記録する。
ロボット状態データは、マニピュレータ５０のモデルを基に演算された時間の経過に応じたロボットの状態を示す物理量（例えば、所定の基準時間（例えば１ｍｓ）ごとの関節角、基準点の座標位置等）のデータである。
ロボット状態データは、各タスクおよび各モーションに対応付けられている。そのため、ジョブに含まれる特定のタスク、あるいは、各タスクに含まれる特定のモーションが選択されたときに、選択されたタスクあるいはモーションに対応する期間のデータが抽出可能となるように構成されている。
ロボットプログラムの実行が終了すると、制御部３１は、ストレージ３２から、時間軸に沿った所定の基準時間（例えば１ｍｓ）ごとのロボット状態データを読み出す。制御部３１は、読み出したロボット状態データ（ロボットプログラムの実行結果の一例）を含む実行ログデータを、通信インタフェース部３３を介して情報処理装置２へ送信する。
【００７１】
情報処理装置２の制御部２１は、ロボット制御装置３からロボット状態データを含む実行ログデータを取得すると、実行ログデータを実行ログデータベース２２４に記録する。
【００７２】
表示制御部１０１は、ロボットおよびワークの３次元モデルを仮想空間内に配置して表示装置２４に表示する機能を備えてもよい。
当該機能を実現するために、ストレージ２２は、仮想空間におけるロボットの３次元モデルと、部品の３次元モデルと、を含む３次元モデルデータベース２２３を記憶する。ＣＡＤソフトウェアは、３次元モデルデータベース２２３からロボットと部品の３次元モデルを３次元モデルデータベース２２３から読み出して仮想空間内に配置し、オペレータによって指定される視点からの画像を表示装置２４に表示する。
【００７３】
シミュレーション実行部１０５は、プログラム実行部１０３によるロボットプログラムの実行結果に基づいて、ロボットおよびワークの３次元モデルを仮想空間内で動作させる機能を備える。
シミュレーション実行部１０５の機能を実現するため、情報処理装置２の制御部２１は、実行ログデータベース２２４に記録した実行ログデータを読み出す。ＣＡＤソフトウェアは、実行ログデータベース２２４に記録した実行ログデータに含まれるロボット状態データ（例えば、所定の基準時間（例えば１ｍｓ）ごとの関節角、基準点の座標位置等）に基づき、仮想空間におけるロボットおよび部品の３次元モデルを動作させて表示する。
これによって、オペレータは、タスク単位あるいはモーション単位でロボットの動作を視覚的に確認することができるため、各タスクおよび各モーションの設定値（例えば、アプローチ点、デパーチャ点、モーションパラメータ等）や部品の配置を検討することが容易となる。
【００７４】
プログラム実行部１０３は、オペレータによる複数のモーション名称のうちいずれかのモーション名称を選択する操作入力に基づいて、選択されたモーション名称に対応するモーションからの順方向の１若しくは複数のモーション、または、選択されたモーション名称に対応するモーションからの逆方向の１若しくは複数のモーションに対応するロボットプログラムを実行する機能を備えてもよい。それによって、オペレータは、ロボットの動きについて様々な観点から検討することができる。
【００７５】
本実施形態の例では、「順方向の１若しくは複数のモーションに対応するロボットプログラムを実行」は、図９のモーション名称Ｍ２１〜Ｍ２５の中から少なくとも１つのモーション名称を選択した状態でボタンｂ５（「Next」）が操作された場合に行われる。「逆方向の１若しくは複数のモーションに対応するロボットプログラムを実行」は、図９のモーション名称Ｍ２１〜Ｍ２５の中から少なくとも１つのモーション名称を選択した状態でボタンｂ６（「Back」）が操作された場合に行われる。
【００７６】
本実施形態の例では、ボタンｂ５（「Next」）が操作されたときに、１つ後の項目までのロボット動作が表示されるが、２以上の後の項目までのロボット動作が表示されるようにしてもよい。
同様に、本実施形態の例では、ボタンｂ６（「Back」）が操作されたときに、１つ前の項目までのロボット動作が表示されるが、２以上の前の項目までのロボット動作が表示されるようにしてもよい。
【００７７】
ＣＡＤによる動画表示は、図９のボタンｂ３（「RUN」）、ボタンｂ５（「Next」）、およびボタンｂ６（「Back」）のいずれかの選択結果と、当該選択が行われたときのタスクリストの表示状態とによって異なる。
ボタンｂ３（「RUN」）が操作された場合、ＣＡＤソフトウェアは、ロボット状態データに基づき、選択されている項目（タスクまたはモーション）の最初から時間の進行に従って、ロボットおよび部品の３次元モデルを動作させて表示する。
【００７８】
ボタンｂ５（「Next」）が操作された場合、ＣＡＤソフトウェアは、ロボット状態データに基づき、時間の進行に従って、選択されている項目（タスクまたはモーション）から次の項目までの期間のロボットおよび部品の３次元モデルを動作させて表示する。
【００７９】
ボタンｂ６（「Back」）が操作された場合、ＣＡＤソフトウェアは、ロボット状態データに基づき、時間の進行が逆方向となるようにして、選択されている項目（タスクまたはモーション）から前の項目までの期間のロボットおよび部品の３次元モデルを動作させて表示する。
【００８０】
ロボットおよび部品の３次元モデルが動作して表示されているときにボタンｂ４（「STOP」）が操作された場合、ＣＡＤソフトウェアは、ロボットの３次元モデルの動作を停止させる。
【００８１】
インターロック設定部１０６は、オペレータの操作入力に基づき、タスクに設定された目標点、アプローチ点およびデパーチャ点の少なくともいずれかの点においてロボットの動作を待機させる待機時間のタイムアウト値を設定する機能を備える。
インターロック設定部１０６の機能を実現するために、情報処理装置２の制御部２１は、入力装置２３が受け付けたオペレータの操作入力（例えば、図７の教示用ウィンドウＷ３における操作入力）に基づいてストレージ２２にアクセスし、ロボットプログラム２２１の各タスクプログラムに含まれる特定のアプローチ点又はデパーチャ点に設定されたインターロックの待機時間のタイムアウト値を書き換える。
インターロック設定部１０６により、ロボットのオフラインティーチングを行うときに、インターロックによる待機時間のタイムアウト値を要素作業ごとにオペレータが容易に設定することができる。
【００８２】
なお、シミュレーション実行部１０５は、インターロックによる待機時間を無効化して、３次元モデルを仮想空間内で動作させてもよい。つまり、シミュレーション用プログラムを実行するときには、インターロックによる待機を行わずに３次元モデルを動作させる。それによって、オペレータは、仮想空間上でロボットを停止させずに、ロボットの動きに着目してプログラムの実行結果を確認することができる。
【００８３】
（４）ロボットのシミュレーションフロー
次に、図１２を参照して、ロボットプログラム実行装置１によるロボットのシミュレーションフローの実行処理についてシーケンスチャートを参照して説明する。図１２は、本実施形態に係るロボットプログラム実行装置１のシーケンスチャートの一例である。
【００８４】
情報処理装置２のストレージ２２に格納されるロボットプログラムは、ロボットのジョブに含まれる複数のタスクプログラムを有し、各タスクプログラムは、複数の関数に相当する複数のモーションプログラムは含む。各タスクプログラムおよび各モーションプログラムは、それぞれタスク名称およびモーション名称と関連付けられている。
情報処理装置２の制御部２１は、教示プログラムを実行するとストレージ２２からロボットプログラムを読み出し（ステップＳ１０）、ロボットプログラムに含まれる各プログラムに関連付けられた名称に基づいて、タスクリストを階層的に構成して表示装置２４に表示させる（ステップＳ１２）。
【００８５】
例えば図９のタスクリストにおいて、制御部２１は、タスク名称またはモーション名称が選択された状態で、オペレータによるボタンｂ３，ｂ５，またはｂ６のいずれかのボタンに対する操作入力（シミュレーションの実行指示）を受け付ける（ステップＳ１４：ＹＥＳ）。すると、制御部２１は通信インタフェース部２５を介して、選択されたタスク名称またはモーション名称に対応する範囲のロボットプログラムをロボット制御装置３へ送信する（ステップＳ１６）。
【００８６】
ロボット制御装置３の制御部３１は、ステップＳ１６で受信したロボットプログラムを実行する（ステップＳ１８）。制御部３１は、ロボットプログラムの実行結果としてロボット状態データを演算して順次、ストレージ３２に記録する。ロボット状態データは、マニピュレータ５０のモデルを基に演算された時間の経過に応じたロボットの状態を示す物理量（例えば、所定の基準時間（例えば１ｍｓ）ごとの関節角、基準点の座標位置等）のデータである。
なお、ロボット状態データは、各タスクおよび各モーションに対応付けられている。そのため、ジョブに含まれる特定のタスク、あるいは、各タスクに含まれる特定のモーションが選択されたときに、選択されたタスクあるいはモーションに対応する期間のデータが抽出可能となるように構成されている。
【００８７】
ロボットプログラムの実行が終了すると、制御部３１は、ストレージ３２からロボット状態データを読み出し、読み出したロボット状態データを含む実行ログデータを、通信インタフェース部３３を介して情報処理装置２へ送信する（ステップＳ２０）。情報処理装置２のＣＡＤソフトウェアは、実行ログデータに含まれるロボット状態データに基づき、仮想空間におけるロボットおよび部品の３次元モデルを動作させて表示する（ステップＳ２２）。
既に述べたように、ステップＳ２２における表示内容は、ステップＳ１４で選択されたボタンと、ボタンが選択されたときに選択されているタスクリスト内の項目（タスクまたはモーション）とによって異なる。
【００８８】
ステップＳ２２において仮想空間におけるロボットおよび部品の３次元モデルを動作させて表示するときには、教示用ウィンドウのタスクリストに表示されている複数のモーションのうち、動作中のモーションがオペレータに認識できるようにすることが好ましい。例えば、図１０の教示用ウィンドウＷ６において、３次元モデルのロボットが実行中のモーションに対応するタスクリスト中のモーションが、実行中でないモーションと異なる態様（例えば、異なる色、輝度、あるいは異なる背景）で表示される。例えば、ロボットの３次元モデルが図１０の教示用ウィンドウＷ６のタスクＴ２の動作を行うときには、当該動作中に行われる各モーションに同期して、タスクリスト中のモーション名称Ｍ２１〜Ｍ２５の各々が順に異なる色で表示される。
このような表示とすることで、３次元モデルによるシミュレーション中においてロボットが実行しているモーションをオペレータが認識することができるようになる。
【００８９】
以上説明したように、本実施形態のロボットプログラム実行装置１は、ロボットが行う最小単位の作業に含まれるロボットの個々の動き（モーション）の単位でプログラムを実行することができる。そのため、オペレータがロボットのティーチングを行うときに、ロボットの具体的な動きに対する教示を容易にすることができる。
【００９０】
以上、本発明のロボットプログラム実行装置の複数の実施形態について詳述したが、本発明は上記の実施形態に限定されない。また、上記の実施形態は、本発明の主旨を逸脱しない範囲において、種々の改良や変更が可能である。
例えば、上述した実施形態では、オフラインティーチングを行う場合について説明したが、ロボット制御装置３をロボットの実機と接続することによってオンラインティーチングに適用することもできる。その場合、ロボット制御装置３は、ロボットプログラムを実行して得られたロボット状態データに基づいて、ロボットＲのマニピュレータを動作させる各関節のモータに対する所定の基準時間（例えば１ｍｓ）ごとの制御パルスを生成して、ロボットＲへ送信する。
【００９１】
上述した説明により、図１１の機能ブロック図に記載された機能のうち少なくとも一部の機能をコンピュータに実現させるためのプログラム、および、当該プログラムが記録されたコンピュータ可読記憶媒体（不揮発性の記憶媒体をも含む。）が開示されていることは当業者に理解される。
【符号の説明】
【００９２】
１…ロボットプログラム実行装置、２…情報処理装置、２１…制御部、２２…ストレージ、２３…入力装置、２４…表示装置、２５…通信インタフェース部、３…ロボット制御装置、３１…制御部、３２…ストレージ、３３…通信インタフェース部、１１…ペントレイ、Ｐ…ペン群、１２…キャップトレイ、Ｃ…キャップ群、１３…治具、１４…製品トレイ、Ａ１〜Ａ１２…製品、ＥＣ…イーサネットケーブル、ＷＣ…ケーブル、Ｒ…ロボット、５１…アーム、５２…ハンド、６１〜６８…ノード、１０１…表示制御部、１０２…プログラム作成部、１０３…プログラム実行部、１０４…状態情報算出部、１０５…シミュレーション実行部、１０６…インターロック設定部、２２１…ロボットプログラム、２２２…階層型リストデータベース、２２３…３次元モデルデータベース、２２４…実行ログデータベース、ＲＡ…ロボット領域、ＰＡ…パーツ領域、Ｗ１〜Ｗ６…ウィンドウ、ｂ１〜ｂ８…ボタン、ＡＰ…アプローチ点、ＴＰ…目標点、ＤＰ…デパーチャ点、ＴＬ…テーブル、Ｔ…タスク、Ｍ…モーション名称
【図１】
2019171498.tif 000003
【図２】
2019171498.tif 000004
【図３】
2019171498.tif 000005
【図４】
2019171498.tif 000006
【図５】
2019171498.tif 000007
【図６】
2019171498.tif 000008
【図７】
2019171498.tif 000009
【図８】
2019171498.tif 000010
【図９】
2019171498.tif 000011
【図１０】
2019171498.tif 000012
【図１１】
2019171498.tif 000013
【図１２】
2019171498.tif 000014