(57)【要約】  ロボットのティーチングを行うときに、ロボットが行う一連の作業を分かり易く管理する。本発明の一実施形態は、オペレータの操作入力に基づいて、対象物に対するロボットの作業要素に関する情報であるタスクを作成するタスク作成部（１０２）と、タスク作成部（１０２）によって作成されたタスクを記憶する第１記憶部（２２１）と、第１記憶部（２２１）を参照して、複数のタスクの一覧であるタスクリストを表示装置に表示する表示制御部（１０１）と、を備えた、ロボット教示装置（１）である。なお、「作業要素」とは、物体を「取る」や「置く」等、一連の作業の中でロボットが行う最小単位の作業を意味する。
2019064915.tif 000002
【特許請求の範囲】
【請求項１】
オペレータの操作入力に基づいて、対象物に対するロボットの作業要素に関する情報であるタスクを作成するタスク作成部と、  前記タスク作成部によって作成されたタスクを記憶する第１記憶部と、  前記第１記憶部を参照して、複数のタスクの一覧であるタスクリストを表示装置に表示する表示制御部と、  を備えた、ロボット教示装置。
【請求項２】
前記タスク作成部によって作成されたタスクに基づいて、当該タスクに対応する作業要素を前記ロボットに実行させるためのプログラムを作成するプログラム作成部、をさらに備えた、  請求項１に記載されたロボット教示装置
【請求項３】
前記表示制御部は、前記ロボットの構成要素と、前記対象物の構成要素とが階層的に記述された階層型データを前記表示装置に表示し、  前記タスク作成部は、前記階層型データの前記ロボットの構成要素および前記対象物の構成要素を指定するオペレータの操作入力に基づいて、前記タスクを作成する、  請求項１又は２に記載されたロボット教示装置。
【請求項４】
前記表示装置に表示された前記タスクリストに対するオペレータの操作入力に基づいて、前記タスクリストのうちいずれかのタスクを削除し、前記第１記憶部に記憶されているタスクを前記タスクリストに追加し、又は、前記タスクリストのうちいずれかのタスクの内容を変更するタスク更新部、をさらに備えた、  請求項１から３のいずれか１項に記載されたロボット教示装置。
【請求項５】
前記表示装置に表示される前記タスクリストに含まれるタスクの順序は、前記複数のタスクの実行順序を規定しており、  前記ロボット教示装置は、  前記表示装置に表示された前記タスクリストに対するオペレータの操作入力に基づいて、前記タスクリストに含まれるタスクの順序を入れ替えるタスク入替部、をさらに備えた、  請求項１から４のいずれか１項に記載されたロボット教示装置。
【請求項６】
前記タスク作成部は、前記作業要素の目標点、当該目標点に到達する前の通過点である第１点、および、前記目標点に到達した後の通過点である第２点のうち、少なくともいずれかの点に関する情報を前記タスクに設定する、  請求項３に記載されたロボット教示装置。
【請求項７】
前記タスク作成部により前記タスクに設定された前記第１点および前記第２点のうち少なくともいずれかの点に関する情報を、オペレータの操作入力に基づいて、削除し、変更し、又は、追加する設定更新部、をさらに備えた、  請求項６に記載されたロボット教示装置。
【請求項８】
前記表示装置に表示された前記階層型データから２以上の対象物を指定するオペレータの操作入力に基づいて、前記２以上の対象物をグループ化するグルーピング部、をさらに備え、  前記タスク作成部は、グループ化された前記２以上の対象物のうちいずれかの対象物に対して設定された前記第１点および前記第２点のうち少なくともいずれかの点に関する情報を、前記２以上の対象物の他の対象物に対しても設定する、  請求項６に記載されたロボット教示装置。
【請求項９】
前記表示制御部は、前記ロボットの構成要素を階層的に表示するための第１領域と、前記対象物の構成要素を階層的に表示するための第２領域とに分けて、前記階層型データを前記表示装置に表示する、  請求項３に記載されたロボット教示装置。
【請求項１０】
前記表示装置に表示された前記タスクリストのうち少なくとも１つのタスクを選択するオペレータの操作入力に基づいて、選択された前記少なくとも１つのタスクに基づいて前記プログラム作成部により作成されたプログラムを含むロボットプログラムを実行するプログラム実行部、をさらに備えた、  請求項２に記載されたロボット教示装置。
【請求項１１】
前記表示制御部は、前記タスクリストのうち前記プログラム実行部による実行結果がエラーを示したタスクであるエラータスクと、前記タスクリストのうち前記エラータスク以外のタスクとを異なる表示態様で表示する、  請求項１０に記載されたロボット教示装置。
【請求項１２】
仮想空間における前記ロボットの３次元モデルの情報を記憶する第２記憶部と、  前記プログラム実行部による実行結果に基づいて、時間の経過に応じた前記ロボットの状態を示す情報である状態情報を演算する状態情報算出部と、  前記状態情報算出部によって得られた状態情報に基づいて、前記３次元モデルを仮想空間内で動作させて前記表示装置に表示するシミュレーション部と、  をさらに備えた、請求項１０又は１１に記載されたロボット教示装置。
【請求項１３】
前記階層型データにおいて、オペレータの操作入力に基づいて、いずれか１つのロボットの構成要素、および、少なくとも１つの対象物が選択された場合に、当該少なくとも１つの対象物が仮想空間において前記ロボットの構成要素により到達可能であるか否かを判定する判定部、をさらに備えた、  請求項３に記載されたロボット教示装置。
【請求項１４】
仮想空間における前記対象物の３次元モデルの情報を記憶する第３記憶部と、  前記ロボットの前記対象物に対する作業の基準となる基準点を、前記対象物に関連付ける基準点設定部と、をさらに備え、  前記基準点設定部は、前記階層型データ上に表示された対象物の３次元モデルの仮想空間内の位置に基づき、前記基準点を算出する、  請求項１から１３のいずれか１項に記載されたロボット教示装置。
【請求項１５】
オペレータの操作入力に基づき、前記タスクに設定された前記目標点、前記第１点および前記第２点の少なくともいずれかの点において前記ロボットの動作を待機させる待機時間のタイムアウト値を設定するインターロック設定部、をさらに備えた、  請求項６又は７に記載されたロボット教示装置。
【発明の詳細な説明】
【技術分野】
【０００１】  本発明は、ロボット教示装置に関する。
【背景技術】
【０００２】  ロボットを工場のライン等で動作させるためには、利用者は、ロボットに対して動作を教示（ティーチング）する必要がある。このティーチングには、ロボットの動作させるときの目標となる３次元座標における点の情報（以下、「教示点」という。）を含むプログラムを作成することが含まれる。例えば特許文献１には、ロボットの教示目標点の移動軌跡を表示させるようにしたロボットシステムが記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第５３７５４３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】  ところで、教示対象となるロボットが行う一連の作業に複数の作業要素が含まれている場合に、複数の作業要素を分かり易く管理することが望まれる。特に、ロボットが行う一連の作業に含まれる作業要素の数が増えれば増えるほど、一連の作業を管理することが困難となる。【０００５】  そこで、本発明は、ロボットのティーチングを行うときに、ロボットが行う一連の作業を分かり易く管理できるようにすることを目的とする。
【課題を解決するための手段】
【０００６】  本願の例示的な第１発明は、オペレータの操作入力に基づいて、対象物に対するロボットの作業要素に関する情報であるタスクを作成するタスク作成部と、前記タスク作成部によって作成されたタスクを記憶する第１記憶部と、前記第１記憶部を参照して、複数のタスクの一覧であるタスクリストを表示装置に表示する表示制御部と、を備えた、ロボット教示装置である。
【発明の効果】
【０００７】  本発明によれば、ロボットのティーチングを行うときに、ロボットが行う一連の作業を分かり易く管理することができる。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施形態のロボット教示装置の全体構成について示す図である。
【図２】図２は、実施形態のロボット教示装置に含まれる各装置のハードウェア構成を示す図である。
【図３】図３は、実施形態の一例に係る３次元ＣＡＤ用ウィンドウを示す図である。
【図４】図４は、実施形態の一例に係る教示用ウィンドウを示す図である。
【図５】図５は、タスクを概念的に説明するための図である。
【図６】図６は、実施形態の一例に係る教示用ウィンドウの遷移を示す図である。
【図７】図７は、対象物のＴＣＰの設定例を示す図である。
【図８】図８は、仮想空間におけるロボットのハンドの動作例を示す図である。
【図９】図９は、オペレータがＴＣＰを設定する方法を説明する図である。
【図１０】図１０は、タスクリストの一例を示す図である。
【図１１】図１１は、図１０のタスクリストにおいてエラータスクの表示例を示す図である。
【図１２】図１２は、実施形態の一例に係る教示用ウィンドウの遷移を示す図である。
【図１３】図１３は、実施形態において階層型リストの表示例を示す図である。
【図１４】図１４は、実施形態に係るロボット教示装置の機能ブロック図である。
【図１５】図１５は、実施形態に係るロボット教示装置の処理を示すシーケンスチャートの例である。
【図１６】図１６は、実施形態に係るロボット教示装置の処理を示すシーケンスチャートの例である。
【図１７】図１７は、実施形態において階層型リストの別の表示例を示す図である。
【発明を実施するための形態】
【０００９】  以下、本発明のロボット教示装置の一実施形態について説明する。  本実施形態のロボット教示装置１は、ロボットを実際に動作させることなく、オペレータが当該ロボットの動作を教示するための教示データを作成するオフラインティーチングを提供する。  以下の説明において、「作業要素」とは、物体を「取る」や「置く」等、一連の作業の中でロボットが行う最小単位の作業を意味する。  「対象物」とは、ロボットの作業の対象となる物体を意味し、ロボットが把持する物体（例えば、加工対象物であるワーク）に限らず、ロボットの作業に関連する物体（例えば、ロボットが把持する物体を置く棚）をも含む。
【００１０】  （１）本実施形態に係るロボット教示装置の構成  以下、本実施形態のロボット教示装置１の構成について、図１および図２を参照して説明する。図１は、本実施形態のロボット教示装置１の全体構成について示す図である。図２は、本実施形態のロボット教示装置１に含まれる各装置のハードウェア構成を示す図である。
【００１１】  図１に示すように、ロボット教示装置１は、情報処理装置２およびロボット制御装置３を備える。情報処理装置２とロボット制御装置３とは、例えば通信ネットワークケーブルＥＣにより通信可能に接続される。  情報処理装置２は、工場のラインに設置されたロボットに対して動作を教示するための装置である。情報処理装置２は、オペレータによるオフラインティーチングを行うために設けられており、例えばロボットが設置される工場から離れた位置（例えば、オペレータの作業場所）に配置される。
【００１２】  ロボット制御装置３は、情報処理装置２から送信されるロボットプログラムを実行する。本実施形態ではロボット制御装置３はロボットと接続されないが、ロボットと接続された場合には、ロボットプログラムの実行結果に応じた制御信号をロボットに送り、ロボットを動作させることが可能である。そのため、好ましくは、ロボット制御装置３は、ロボットの実機の近傍に配置される。
【００１３】  図２に示すように、情報処理装置２は、制御部２１と、ストレージ２２と、入力装置２３と、表示装置２４と、通信インタフェース部２５とを備える。  制御部２１は、ＣＰＵ（Central Processing Unit）、ＲＯＭ（Read Only Memory）、および、ＲＡＭ（Random Access Memory）を含む。ＲＯＭには、３次元ＣＡＤアプリケーションプログラムと教示ソフトウェアが記憶されている。ＣＰＵは、ＲＯＭ上の３次元ＣＡＤアプリケーションソフトウェア（以下、適宜「ＣＡＤソフトウェア」という。）と教示ソフトウェアをＲＡＭに展開して実行する。教示ソフトウェアとＣＡＤソフトウェアは、ＡＰＩ（Application Program Interface）を介して協調して処理を実行する。  制御部２１は、ＣＡＤソフトウェアによる動画再生を行うために、フレーム単位で画像を連続的に表示する。
【００１４】  ストレージ２２は、ＨＤＤ（Hard Disk Drive）あるいはＳＳＤ（Solid State Drive）等の大容量記憶装置であり、制御部２１のＣＰＵにより逐次アクセス可能に構成されている。  ストレージ２２には、ＣＡＤソフトウェアを実行するときに参照される３次元モデルのデータが格納される。本実施形態の例では、ストレージ２２には、ロボットおよび対象物（例えば、後述するペン、キャップ、製品、ペントレイ、キャップトレイ、製品トレイ）の３次元モデルのデータが格納される。  ストレージ２２には、ロボット制御装置３から取得した実行ログデータが格納される。実行ログデータには、ロボットプログラムの実行結果と、後述するロボット状態データとが含まれる。ロボット状態データは、３次元ＣＡＤによってロボットの動作を仮想空間内で動画（アニメーション）により再現するために使用される。
【００１５】  入力装置２３は、オペレータによる操作入力を受け付けるためのデバイスであり、ポインティングデバイスを含む。  表示装置２４は、教示ソフトウェアおよびＣＡＤソフトウェアの実行結果を表示するためのデバイスであり、表示駆動回路および表示パネルを含む。  通信インタフェース部２５は、ロボット制御装置３との間でネットワーク通信を行うための通信回路を含む。
【００１６】  ロボット制御装置３は、制御部３１と、ストレージ３２と、通信インタフェース部３３とを備える。  制御部３１は、ＣＰＵ、ＲＯＭ、ＲＡＭ、および、制御回路を含む。制御部３１は、情報処理装置２から受信するロボットプログラムを実行し、実行ログデータを出力する。実行ログデータには、ロボットプログラムの実行結果と、ロボットプログラムに記述された作業を実行するロボットのロボット状態データとを含む。  ロボット状態データは、時間の経過に応じたロボットの状態を示す物理量のデータである。ロボットの状態を示す物理量としては、ロボットのアームの関節角、アームの速度や加速度が挙げられる。
【００１７】  ストレージ３２は、ＨＤＤあるいはＳＳＤ等の大容量記憶装置であり、制御部３１のＣＰＵにより逐次アクセス可能に構成されている。ストレージ３２には、ロボットプログラムおよび実行ログデータが格納される。  通信インタフェース部３３は、情報処理装置２との間でネットワーク通信を行うための通信回路を含む。
【００１８】  （２）オフラインティーチングにおけるユーザインタフェース  本実施形態のロボット教示装置１において、情報処理装置２は、ロボットに対するオフラインティーチングを提供する。このオフラインティーチングでは、教示ソフトウェアおよびＣＡＤソフトウェアが協働して実行され、以下で説明する有用なユーザインタフェースが提供される。  本実施形態においてオペレータがオフラインティーチングを行うときには、ＣＡＤソフトウェアと教示ソフトウェアを情報処理装置２に実行させる。  ＣＡＤソフトウェアの実行結果はＣＡＤ用ウィンドウに表示され、教示ソフトウェアの実行結果は教示用ウィンドウに表示される。オペレータは、ＣＡＤ用ウィンドウと教示用ウィンドウの両方を情報処理装置２に表示させ、あるいはＣＡＤ用ウィンドウと教示用ウィンドウを切り替えながら情報処理装置２に表示させ、ティーチングに関連する操作を行う。
【００１９】  図３に、本実施形態の一例に係るＣＡＤ用ウィンドウＷ１を示す。図３には、テーブルＴの上に、ロボットＲと、ペントレイ１１と、キャップトレイ１２と、治具１３と、製品トレイ１４とが、仮想空間に配置された状態の画像（以下、適宜「ＣＡＤ画像」という。）が表示されている。  図３に示す例では、ロボットＲがペンにキャップを嵌めて製品（ペンにキャップが嵌められた状態の完成品）を組み立てる一連の作業を行うことが想定されている。ペントレイ１１には複数のペンからなるペン群Ｐが配置され、キャップトレイ１２には複数のキャップからなるキャップ群Ｃが配置されている。治具１３は、ロボットＲがペンを一時的に配置してキャップを嵌める作業を行うための部材である。製品トレイ１４は、製品を置くための部材である。
【００２０】  図３に示す例では、ペン群Ｐに含まれる各ペン、キャップ群Ｃに含まれる各キャップ、ペントレイ１１、キャップトレイ１２、治具１３、製品トレイ１４の各々は、ロボットＲの作業対象である対象物の例である。また、ペンにキャップが嵌められた製品も対象物の例である。
【００２１】  （２−１）階層型リスト  図４に、本実施形態の一例に係る教示用ウィンドウＷ２を示す。教示用ウィンドウＷ２に表示されているのは、図３のＣＡＤ画像に含まれているロボットＲ、および、対象物の階層関係を示す階層型リスト（階層型データの一例）である。
【００２２】  教示ソフトウェアは、ＣＡＤソフトウェアと連携して階層型リストを作成することができる。階層型リストとして木構造のデータフォーマットが教示ソフトウェアによって用意される。オペレータは、ＣＡＤ用ウィンドウと教示用ウィンドウを表示させた状態で、ＣＡＤ画像内のロボットＲおよび対象物をポインティングデバイスで選択した状態で上記木構造のデータフォーマットの所望のノードまでドラッグする操作を行う。この操作を、ロボットＲの教示を行うのに必要となるすべての対象物に対して順に行うことで、階層型リストを完成させることができる。階層型リストに表示される各ノードの名称は、元となる３次元モデルの名称がそのまま適用されてもよいが、後で名称を変更できるようにしてもよい。
【００２３】  以下の説明では、ＣＡＤ画像内のロボットＲ、対象物を階層型リストのいずれかのノードに含めるようにすることを、ロボットＲ又は対象物を「階層型リストに登録する」という。図３では、ロボットが１体である場合のＣＡＤ画像を例示しているが、ロボットが２体以上存在する場合には、当該２体以上のロボットを階層型リストに登録することができる。
【００２４】  図４に示す階層型リストにおいて、ロボットＲ（Robot_R）のノードの下層には、ハンドに関連する３個のノードが設けられている。ハンドに対して複数のノードを設けているのは、ハンドに想定される作業状態を考慮するためである。すなわち、ノード６１〜６３は、以下の内容を意味し、それぞれ後述するＴＣＰ（Tool Center Point）が設定されている。
【００２５】  ・ノード６１（Pen）…ペンを把持する作業に対応したハンド  ・ノード６２（Cap）…キャップを把持する作業に対応したハンド  ・ノード６３（Pen_with_Cap）…キャップが嵌められたペンを把持する作業に対応したハンド
【００２６】  ノード６１〜６３のいずれかを対象として右クリック操作を行い、「ハンドシーケンス操作」を選択すると、アクチュエーション方式（シングルソレノイド、又はダブルソレノイド等）、センサ種類などのハンドシーケンスに関連する設定を行うことができる。  ハンドシーケンスは、ロボットＲのハンド５２が把持する対象物に依存するため、ハンド５２が把持する対象物ごとに設定される。ハンドシーケンスが設定されていない場合に後述するタスクを作成した場合には、タスクに基づくプログラムを実行できないため、表示装置２４に警告表示を出力してもよい。
【００２７】  図４に示すように、好ましくは、ロボットＲの構成要素（図４のRobot_R, Hand）を階層的に表示するためのロボット領域ＲＡ（第１領域の例）と、対象物の構成要素を階層的に表示するための対象物領域ＰＡ（第２領域の例）とに分けて、階層型データが表示される。  対象物の構成要素には、治具（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）の各ノードは、各々に対応する３次元モデルのデータと関連付けられた状態となっている。そのため、階層型リストを作成後に階層型リスト内のロボットＲおよび対象物の３次元モデルに変更があった場合であっても、階層型リストに再度登録する必要はない。
【００３１】  図４の階層型リストにおいて、ＣＡＤ用ウィンドウにおいて、選択したロボットＲ、対象物、部品又はＴＣＰ等を、ロボット領域ＲＡ内の任意のノードの位置に右クリックする操作を行い、「部品の追加」を選択することで、階層型リストに、ＣＡＤ用ウィンドウで選択したロボットＲ又は対象物を階層型リストに登録する。  図４の階層型リストにおいて、任意の位置を右クリックする操作を行い、「一括更新」を選択することで、ＣＡＤソフトウェア上で対象物の位置関係を変更した場合に、変更後の位置関係についての情報が階層型リストに反映される。
【００３２】  （２−２）グルーピング  階層型リストに登録された２以上の対象物はグループ化することができる。  グループ化するときの手順は、以下のとおりである。例えば、図４において、ペントレイ（PenTray）に含まれるペンPen1, Pen2をグループ化する場合、ポインティングデバイスで階層型リストの中のペンPen1, Pen2に対応するノードを指定して右クリック操作を行い、次いで「グループ作成」を選択する操作を行う。この操作を行うことで、ペンPen1, Pen2がグループ化される。階層型リストにおいてグループ化された２以上の対象物は、当該２以上の対象物がグループ化されていることがオペレータに認識可能となるように、例えば図４に示すように矩形の枠で囲う、共通の字体とする、あるいは同一の色を付す等の表示処理を行うことが好ましい。
【００３３】  なお、図４に示す例は、連続する２つのノードに対応する対象物をグループ化する場合であるが、連続していない２つのノードに対応する対象物をグループ化する場合には、グループ化した２つのノードが連続するように階層型リストを更新するようにしてもよい。例えば、ペンPen1とペンPen3をグループ化する場合には、ペントレイ（PenTray）のノードの下位ノードの順序を、ペンPen1, Pen3, Pen2…に更新する、といった具合である。
【００３４】  （２−３）タスクについて  次に、タスクについて、図５を参照して説明する。図５は、タスクを概念的に説明するための図である。  タスクとは、一連の作業の中でロボットが行う最小単位の作業である作業要素に関する情報である。ロボットＲが行う一連の作業（以下、「ジョブ」という。）は、複数の作業要素と、作業要素間の移動とにより構成される。従って、本実施形態では、ロボットＲが行うジョブに対して複数のタスクが定義される。
【００３５】  図５において、矢印付きの線は、ロボットＲのハンド５２の軌跡を概念的に示している。当該軌跡は、作業要素の目標点ＴＰに到達する前の通過点であるアプローチ点ＡＰ１，ＡＰ２（それぞれ第１点の例）と、目標点ＴＰと、目標点ＴＰに到達した後の通過点であるデパーチャ点ＤＰ１，ＤＰ２（それぞれ第２点の例）とを含む。目標点ＴＰは、作業要素の対象である対象物の位置を示しており、後述する対象物のＴＣＰとしてもよい。
【００３６】  図５に示す例では、アプローチ点ＡＰ１に到達する前のロボットＲの動作が、作業要素間の移動（つまり、前の作業要素と図５に示す作業要素との間の移動）に相当する。アプローチ点ＡＰ１からデパーチャ点ＤＰ２までのロボットＲの動作が１つの作業要素および１つのタスクに対応する。デパーチャ点ＤＰ２から後のロボットＲの動作が、作業要素間の移動（つまり、図５に示す作業要素と次の作業要素との間の移動）に相当する。  すなわち、タスクは、作業要素に関する情報のほか、目標点ＴＰ、アプローチ点ＡＰ、およびデパーチャ点ＤＰのうち少なくともいずれかの点に関する情報を含んでもよい。
【００３７】  図５では、アプローチ点ＡＰ１，ＡＰ２においてインターロックが設定されている場合が例示されている。インターロックは、他のロボット等との干渉を回避するために、入力信号に基づいて、目標点ＴＰ、アプローチ点ＡＰ、およびデパーチャ点ＤＰの少なくともいずれかの点においてロボットＲの動作を待機させる処理である。  タスクには、インターロックを設定する点と、インターロックによる待機時間のタイムアウト値とを含むインターロック設定に関する情報を含んでもよい。
【００３８】  （２−４）タスクの作成  次に、階層型リストを用いたタスクの作成方法について、図４および図６を参照して説明する。図６は、本実施形態の一例に係る教示用ウィンドウの遷移を示す図である。  図４に示す階層型リストにおいてタスクを作成するには、先ず、ロボット領域ＲＡに含まれるロボットＲ（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」）と、作業要素の始点となる対象物（例えば「ペントレイ」）、又は終点となる対象物とを含むように自動的に作成されるため、タスクの名称からタスクの内容が直ちに分かるようになっている。  なお、階層型リストにおいてグループ化された２以上の対象物を対象として、まとめてタスクを作成してもよい。
【００４３】  タスクを作成した場合、タスクに含まれるアプローチ点ＡＰ、目標点ＴＰ、および、デパーチャ点ＤＰについての情報が自動的に作成される。すなわち、タスクは、当該タスクに関連する対象物の仮想空間上の３次元モデルのデータと関連付けられているため、３次元モデルのデータに基づいて、所定の基準によりアプローチ点ＡＰ、目標点ＴＰ、および、デパーチャ点ＤＰの各点を算出する。算出方法の一例では、対象物の目標点ＴＰとしてＴＣＰ（Tool Center Point；基準点の一例）を算出し、ＴＣＰを基準として、アプローチ点ＡＰおよびデパーチャ点ＤＰを算出する。
【００４４】  ＴＣＰは、ロボットＲの対象物に対する作業の基準となる、仮想空間内の当該対象物の基準点（あるいは、作業点）を意味し、ロボットＲのハンド５２および各対象物に対して設定される。ＴＣＰを設定するときには、ＴＣＰを原点としたローカル座標系についても設定される。対象物のローカル座標系を設定することで、対象物のオイラー角を回転させるときにはＴＣＰを中心に回転させればよいこと、および、後述するようにアプローチ点ＡＰおよびデパーチャ点ＤＰを自動的に設定できること等の利点がある。
【００４５】  図７に一例として、キャップCap1のＴＣＰの設定例を示す。  本実施形態の例では、ＴＣＰは、対象物の重心位置に自動的に設定される。対象物には３次元モデルのデータが関連付けられているため、当該３次元モデルのデータから重心位置を比較的容易に得ることができる。  アプローチ点ＡＰおよびデパーチャ点ＤＰは、それぞれ、対象物に設定されたローカル座標系のＺ軸において、対象物（図７の例では、キャップCap1）の全長の１．５倍の位置に、タスク作成時に自動的に設定される。全長の１．５倍の位置は一例に過ぎず、例えば全長の１〜２倍の間の任意の値に適宜設定されてもよい。なお、図７では、＋Ｚ軸側での作業（ハンド５２によりキャップを取る、置く等の作業）が想定されており、ハンド５２による作業が＋Ｚ方向となるようにローカル座標系を定義しておくことで、アプローチ点ＡＰおよびデパーチャ点ＤＰを自動的に決定できる。
【００４６】  ２以上の対象物がグループ化されている場合には、当該２以上の対象物のいずれかに設定されているアプローチ点ＡＰおよびデパーチャ点ＤＰを基に、当該２以上の対象物のうち他の対象物のアプローチ点ＡＰおよびデパーチャ点ＤＰについて自動的に設定されてもよい。  例えば、ペンPen1, Pen2がグループ化されている場合を想定する。ペンPen1に対する作業の基準となるＴＣＰの座標がワールド座標系において(100, 100, 0)に設定され、ペンPen1のアプローチ点ＡＰおよびデパーチャ点ＤＰの座標がワールド座標系において(100, 100, 20)に設定されている場合を想定する。このとき、ペンPen2のＴＣＰがワールド座標系において(120, 100, 0)である場合には、ペンPen2のアプローチ点ＡＰおよびデパーチャ点ＤＰの座標がワールド座標系において(120, 100, 20)に自動的に設定される。すなわち、ペンPen1とペンPen2のＴＣＰオフセット量(Ｘ座標で+20)が反映されるようにして、ペンPen2のアプローチ点ＡＰおよびデパーチャ点ＤＰが設定される。換言すると、ペンPen1とペンPen2のそれぞれＴＣＰを基準としたローカル座標系においてペンPen1とペンPen2のアプローチ点ＡＰおよびデパーチャ点ＤＰが同一の座標となるように、ペンPen2のアプローチ点ＡＰおよびデパーチャ点ＤＰが設定される。
【００４７】  図８は、キャップトレイ１２からキャップCap1を取るときの仮想空間上のハンド５２の動作の一例を示す図である。  図８において、ハンド５２は先ず、軌道ＴＲ１に沿って、ハンド５２に設定されたＴＣＰ１（すなわち、図４のノード６２に設定されたハンドのＴＣＰ）がアプローチ点ＡＰに一致するようにして移動する。次に、ハンド５２は、軌道ＴＲ２に沿って、ハンド５２に設定されたＴＣＰ１がキャップトレイ１２のキャップCap1に設定されたＴＣＰ２に一致するようにして移動する。キャップCap1を把持した後、ハンド５２は、軌道ＴＲ３に沿って、ハンド５２に設定されたＴＣＰ１がデパーチャ点ＤＰに一致するようにして移動する。  軌道ＴＲ２，ＴＲ３は、キャップトレイ１２のキャップCap1に設定されたローカル座標系のＺ軸に沿った軌道である。そのため、ハンド５２がキャップCap1を取る際に、キャップトレイ１２内のキャップCap1に隣接するキャップに干渉することはない。また、ハンド５２の軌道は、ハンド５２に設定されたＴＣＰ１と、キャップトレイ１２内のキャップCap1のＴＣＰ２およびそのローカル座標系とに基づいて決定される。そのため、ハンド５２は、キャップCap1を精度良く把持することができる。
【００４８】  ＴＣＰを対象物の重心以外に設定する場合には、オペレータの操作入力に基づいて対象物の所望の位置にＴＣＰを設定することもできる。  図９に、オペレータの操作入力に基づいてＴＣＰを設定する方法を示す。  図９に示すように、ＣＡＤソフトウェアでは、ＴＣＰを設定するためにローカル座標系ＬＡを備えたＴＣＰモデルＴＣＰ＿ｍが設けられている。オペレータが当該ＴＣＰモデルを対象物（図９では、キャップCap1）の所望の位置に移動させてＴＣＰモデルＴＣＰ＿ｍの位置をセットした後に、階層型リスト内の対応するノード（例えば、図４のCap1のノード）までＴＣＰモデルＴＣＰ＿ｍをドラッグする操作を行う。それによって、ＣＡＤソフトウェア上でセットした座標に対象物（例えば、キャップCap1）のＴＣＰを設定することができる。
【００４９】  再度図６を参照すると、教示用ウィンドウＷ３には、ボタンｂ１（「詳細設定」）が設けられている。オペレータは、ボタンｂ１（「詳細設定」）を操作することで、「アプローチ点、デパーチャ点設定」、「モーションパラメータ設定」、および「インターロック設定」のいずれかを選択することができる。  「アプローチ点、デパーチャ点設定」を選択することで、オペレータは、自動作成されたアプローチ点及び／又はデパーチャ点の変更、削除、および、新しいアプローチ点及び／又はデパーチャ点の追加を行うことができる。  モーションパラメータとは、タスクに含まれる隣接するアプローチ点ＡＰ間、アプローチ点ＡＰから目標点ＴＰまでの間、および、目標点ＴＰからデパーチャ点ＤＰまでの間のロボットＲのハンド５２等の動きに関するパラメータである。例えば、かかるパラメータとして、移動速度、加速度、加速時間、減速時間、ロボットＲの姿勢等が挙げられる。「モーションパラメータ設定」を選択することで、上記モーションパラメータをデフォルト値から変更することができる。  「インターロック設定」を選択することで、インターロックの待機時間のタイムアウト値と、待機時間がタイムアウト値を超えてエラーと判断したときの動作の設定とを、デフォルト値から変更することができる。
【００５０】  図６の教示用ウィンドウＷ３には、ボタンｂ３（「チェック」）が設けられている。タスクを作成するときにボタンｂ３（「チェック」）を操作することは必須ではないが、ボタンｂ３（「チェック」）を操作することで、オペレータは事前に、タスクに含まれるアプローチ点ＡＰからデパーチャ点ＤＰまでのロボットＲの動作をＣＡＤ用ウィンドウで確認することができる。  ボタンｂ３（「チェック」）の操作は、タスクの名称（Name）が表示されている場合（つまり、作業要素の種別（Function）と目標物（Target）の各項目についてデータが入力済みの場合）に有効である。
【００５１】  ボタンｂ３（「チェック」）の操作による動作確認結果は、タスクに基づいて作成されたプログラムを、ロボット制御装置３へ送信することにより行われる。ロボット制御装置３は、受信したプログラムを実行し、実行結果として、時間の経過に応じたロボットＲの状態を示す情報であるロボット状態データを算出する。ロボット状態データは、例えば、時間の経過に応じたアーム５１の関節角の変化や、時間の経過に応じたハンド５２の軌跡等の情報である。このロボット状態データは、ロボット制御装置３から情報処理装置２へ返される。ＣＡＤソフトウェアは、ロボット状態データに基づいて、ロボットＲおよび対象物の３次元モデルを仮想空間内で動作させ、タスクに対応するロボットＲの動きの動画表示を行う。
【００５２】  ロボットＲのロボット状態データを算出するときにエラーが発生した場合には、図６の教示用ウィンドウＷ３のステータス（Status）の欄に、エラー原因を表示してもよい。エラー原因としては、例えば、速度超過、目標点不到達、特異点到達等が挙げられる。  ロボットＲの動作が正常に行われた場合には、ステータス（Status）の欄に、モーションパラメータで設定されている移動速度に対する余裕度、目標点に対する余裕度、あるいは、特異点までの余裕度等、オペレータにとって有益となる情報を表示してもよい。
【００５３】  図６の教示用ウィンドウＷ３には、ボタンｂ２（「作成」）が設けられている。  ボタンｂ２（「作成」）が操作されることで、教示用ウィンドウＷ３によって設定されたタスクが後述するタスクリストに登録される。  なお、ボタンｂ２（「作成」）が操作される前に、ボタンｂ３（「チェック」）の操作による動作確認が行われていない場合には、ボタンｂ３（「チェック」）の操作が行われなくても自動的に動作確認を実行し、エラーの有無を報知するようにしてもよい。
【００５４】  （２−５）タスクに基づくプログラムの作成  上述したように、タスクごとの動作確認を行う場合には、タスクに基づいてプログラムが作成される。タスクに基づくプログラムは、当該タスクに対応する作業要素をロボットＲに実行させるためのロボットプログラムの例である。  例えば、図５に示すタスクに対応する作業要素を実行するためのプログラムは、以下の複数の関数からなり、各関数は、ロボットＲのモーション（「ロボットＲの動き」を意味する。）を実行させるためのプログラムによって記述されている。  なお、以下の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)
【００５８】  図１０に示すタスクリストのうち、教示用ウィンドウＷ３における動作確認の結果がエラーを示したタスク（「エラータスク」という。）と、タスクリストのうちエラータスク以外のタスクとを、異なる表示態様（例えば、異なる文字色、異なる背景色とする表示態様）で表示してもよい。「エラータスク以外のタスク」とは、動作確認の結果、エラーを示さなかったタスクと、動作確認を行っていないタスクとを含む。エラータスクと、ＯＫタスク（つまり、動作確認の結果、エラーを示さなかったタスク）と、動作確認が未実施のタスクとを、それぞれ異なる表示態様にしてもよい。
【００５９】  グループ化された２以上の対象物を対象としてまとめてタスクを作成した場合には、タスクリスト中、グループにまとめたタスク表示を行ってもよい。
【００６０】  オペレータは、タスクリストにおいて、いずれかのタスクをポインティングデバイスで選択した状態でドラッグ操作を行うことで、選択されたタスクをタスクリスト中の任意の順序に設定することができる。
【００６１】  図１０に示すように、オペレータがタスクリストのいずれかのタスクをポインティングデバイスで選択した状態で右クリックを行うと、「タスク編集」、「タスク追加」、「タスク削除」のいずれかの処理を選択できる。ここで、「タスク編集」が選択された場合には、選択されているタスクの教示用ウィンドウＷ３に戻って、当該タスクについての情報を変更することができる。「タスク追加」が選択された場合には、選択されているタスクのすぐ後の順序に、作成済みのタスクを読み込んで挿入するか、あるいは、教示用ウィンドウＷ３に戻ってタスクを作成して挿入することができる。「タスク削除」が選択された場合には、選択されているタスクをタスクリストから削除することができる。
【００６２】  図１０において、オペレータが教示用ウィンドウＷ４内の任意の位置を対象として右クリック操作を行うと、「教示点リスト出力」、「ＩＯマップ出力」、および「プログラム出力」の中からいずれかを選択できる。  「教示点リスト出力」が選択された場合、各対象物に設定されたＴＣＰの座標の一覧が出力される。  「ＩＯマップ出力」が選択された場合、ロボットＲに対する入出力（Ｉ／Ｏ）のポートの一覧を出力する。  「プログラム出力」が選択された場合、ジョブに対応して、シミュレーション用プログラムと実機用プログラムの２種類のロボットプログラムを出力する。実機用プログラムはインターロックによる待機時間のタイムアウト値が有効となっているが、シミュレーション用プログラムはインターロックによる待機時間が無効化されている点で、両者は異なる。
【００６３】  （２−７）ジョブのシミュレーション  図１０の教示用ウィンドウＷ４においてボタンｂ４が操作された場合、タスクリストに対応するロボットＲのジョブのシミュレーションが実行される。  ジョブのシミュレーションを実行するに当たっては、先ず、当該ジョブに対応するロボットプログラムが作成される。すなわち、タスクリストに含まれる各タスクに基づくプログラムは、前述したように、ロボットＲに対応する複数のモーションを実行させるためのプログラムが記述された関数の集合体として表される。なお、連続するタスクに対応する作業要素の間のロボットＲの移動についてのモーションパラメータ（移動速度、加速度、加速時間、減速時間等）は、デフォルト値として予め定められていてもよいし、オペレータが設定できるようにしてもよい。  各タスクに基づくプログラムを順に組み合わせることで、ジョブに対応するロボットプログラムが作成される。各タスクに基づくプログラムを組み合わせるに当たっては、入力信号あるいは条件によって実行するプログラムを切り替えるような分岐処理や、特定のプログラムを繰り返す処理等が組み込まれてもよい。
【００６４】  本実施形態では、情報処理装置２においてロボットプログラムが作成され、ロボット制御装置３において当該ロボットプログラムが実行される。  ロボット制御装置３は、ロボットプログラムの実行結果として、時間の経過に応じたロボットＲの状態を示す情報であるロボット状態データを算出する。ロボット状態データは、例えば、時間の経過に応じたアーム５１の関節角の変化や、時間の経過に応じたハンド５２の軌跡等の情報である。このロボット状態データは、ロボット制御装置３から情報処理装置２へ返される。ＣＡＤソフトウェアは、ロボット状態データに基づいて、ロボットＲおよび対象物の３次元モデルを仮想空間内で動作させ、シミュレーション出力としてタスクに対応するロボットＲの動きの動画（アニメーション）の表示を行う。
【００６５】  ロボットＲのロボット状態データを算出するときにエラーが発生した場合には、図１０の教示用ウィンドウＷ４のステータス（Status）の欄に、エラー原因を表示してもよい。エラー原因としては、例えば、速度超過、目標点不到達、特異点到達等が挙げられる。  図１０に示すタスクリストのうち、シミュレーションの結果がエラーを示したエラータスクと、タスクリストのうちエラータスク以外のタスクとを、異なる表示態様（例えば、異なる文字色、異なる背景色とする表示態様）で表示してもよい。  図１１の教示用ウィンドウＷ５に、図１０のタスクリストにおいてエラータスクの表示例を示す。この表示例では、タスクリストの中の最後の“Place_to_PenProduct1_in_ProductTray”というタスクがエラータスクである場合を示しており、当該エラータスクにマークＭ１（タスクを囲む枠線）を付加することで、エラータスク以外のタスクと異なる表示態様としている。
【００６６】  なお、タスクリストのうちオペレータによって選択された一部のタスクに対応する作業要素についてのシミュレーションを実行できるようにしてもよい。
【００６７】  （２−８）エリアチェック  次に、エリアチェックについて、図１２および図１３を参照して説明する。図１２は、本実施形態の一例に係る教示用ウィンドウの遷移を示す図である。図１３は、本実施形態において階層型リストの表示例を示す図である。
【００６８】  エリアチェックとは、ロボットＲのハンド５２（ロボットの構成要素の例）が、オペレータによって選択された少なくとも１つの対象物（図４に示す例では、ペンPen1, Pen2,…，Pen12、キャップCap1, Cap2,…，Cap12、および、製品PenProduct1, PenProduct2,…，PenProduct12の少なくともいずれか）に到達可能であるか否かを判定することである。ロボットが複数設けられる場合には、複数のロボットのうちエリアチェックの対象とするロボットをオペレータが選択できるようにしてもよい。ロボットは複数の姿勢をとりうるため、当該複数の姿勢のうちオペレータによって選択されたいずれかの姿勢において、ロボットのエリアチェックを行うようにしてもよい。
【００６９】  図４に示した階層型リストにおいて、対象物の一部又は全部を選択した状態にして、ロボット領域ＲＡ内のノード６１〜６３のいずれかをポインティングデバイスで右クリックしてから「エリアチェック」を選択すると、図１２の教示用ウィンドウＷ６が表示される。教示用ウィンドウＷ６では、エリアチェックのための姿勢（posture）を選択できる。教示用ウィンドウＷ６において、少なくとも１つの姿勢を選択し、ボタンｂ５（「ＯＫ」）を選択することで、エリアチェックが実行される。
【００７０】  エリアチェックの実行には逆運動学の計算が必要であり、この計算は、ロボット制御装置３において行われる。すなわち、情報処理装置２は、ロボットＲおよび各対象物の３次元モデルに基づく座標データ、各対象物のＴＣＰの座標データの情報をロボット制御装置３に渡す。ロボット制御装置３は、当該情報を基に、特定の対象物に対して逆運動学によりロボットＲのアーム５１の関節角を求めることができれば、当該対象物に到達可能であると判断できる。  エリアチェックの結果は、図１３に例示するように、ペンを対象とするエリアチェックの場合、ペントレイ１１に含まれるペンごとに、到達不可能であるペン（到達不可対象物の例）に対してマークＭ２（「ＮＧ」）を表示することによって行われる。他の表示例として、到達不可対象物を到達可能対象物と異なる色で表示することなどが挙げられる。
【００７１】  （３）ロボット教示装置１の機能  次に、本実施形態のロボット教示装置１の機能について、図１４を参照して説明する。図１４は、実施形態に係るロボット教示装置１の機能ブロック図である。  図１４に示すように、ロボット教示装置１は、表示制御部１０１、タスク作成部１０２、タスク更新部１０３、タスク入替部１０４、設定更新部１０５、グルーピング部１０６、プログラム作成部１０７、プログラム実行部１０８、状態情報算出部１０９、シミュレーション部１１０、判定部１１１、姿勢選択部１１２、基準点設定部１１３、モデル配置部１１４、および、インターロック設定部１１５を備える。  ロボット教示装置１はさらに、タスクデータベース２２１、階層型リストデータベース２２２、３次元モデルデータベース２２３、および、実行ログデータベース２２４を備える。
【００７２】  以下の説明において、情報処理装置２の制御部２１の処理について言及するときには、制御部２１に含まれるＣＰＵが教示ソフトウェア及び／又はＣＡＤソフトウェアを実行することにより処理が行われる。
【００７３】  表示制御部１０１は、教示ソフトウェアおよびＣＡＤソフトウェアの実行結果を表示装置２４に表示させる制御を行う。表示制御部１０１の機能を実現するために、情報処理装置２の制御部２１は、教示ソフトウェアおよびＣＡＤソフトウェアの出力を含む画像データを生成し、バッファリングし、表示装置２４へ送信する。表示装置２４は、表示駆動回路を駆動して画像を表示パネルに表示する。
【００７４】  タスク作成部１０２は、オペレータの操作入力に基づいて、対象物に対するロボットの作業要素に関する情報であるタスクを作成する機能を備える。  タスク作成部１０２の機能を実現するために、情報処理装置２の制御部２１は、入力装置２３からオペレータの操作入力を受け付けると、当該操作入力に基づき、図６の作業要素の種別（Function）および作業要素の目標物（Target）の情報を含むファイルとしてタスクを作成し、ストレージ２２に記録する。制御部２１は、作業要素の種別（Function）および作業要素の目標物（Target）に基づいて、所定の規則に従ってタスク名称を決定する。ストレージ２２（第１記憶部の例）は、タスク作成部１０２によって作成されたタスクを含むタスクデータベース２２１を記憶する。  情報処理装置２の制御部２１は、ロボットが行うジョブに含まれる複数の作業要素に対応するタスクを順に作成し、それによって、当該ジョブに関連付けられた複数のタスクがタスクリストとして作成される。タスクデータベース２２１では、各タスクが特定のジョブに関連付けられた状態で記録されている。  表示制御部１０１は、ストレージ２２のタスクデータベース２２１を参照して、複数のタスクの一覧であるタスクリストを表示装置２４に表示する。タスクリストが表示されることで、ロボットのティーチングを行うときに、ロボットが行うジョブを分かり易く管理することができる。本実施形態では、表示されるタスクリストの各タスクの名称が、ロボットの作業要素の作業内容が認識できるように構成されているため、一連の作業内容がオペレータに直感的に理解しやすいものとなっている。
【００７５】  タスク作成部１０２は、作業要素の目標点、目標点に到達する前の通過点であるアプローチ点（第１点の例）、および、目標点に到達した後の通過点であるデパーチャ点（第２点の例）のうち、少なくともいずれかの点に関する情報をタスクに設定する機能を備えてもよい。当該機能を実現するために、情報処理装置２の制御部２１は、作業要素の目標物（Target）となる対象物のＴＣＰとローカル座標系に基づいて、アプローチ点およびデパーチャ点を決定する。例えば、対象物のローカル座標系のＺ軸において、対象物の全長の所定倍率の位置をアプローチ点およびデパーチャ点とする。制御部２１は、決定したアプローチ点およびデパーチャ点の情報がタスクに含まれるように、タスクデータベース２２１を更新する。  アプローチ点およびデパーチャ点が自動的に設定されることで、オペレータのティーチング作業が効率化される。
【００７６】  表示制御部１０１は、ロボットの構成要素と、対象物の構成要素とが階層的に記述された階層型データを表示装置２４に表示する。  情報処理装置２の制御部２１は、教示ソフトウェアとＣＡＤソフトウェアの連携により階層型リストを作成する。すなわち、制御部２１は、ＣＡＤ画像内のロボットおよび対象物を入力装置２３のポインティングデバイスで選択した状態で木構造のデータフォーマットの所望のノードまでドラッグする操作入力を受け付けて、木構造の階層型リストを作成する。制御部２１は、作成した階層型リストをストレージ２２の階層型リストデータベース２２２に記録する。階層型リストでは、木構造のデータにおけるロボットの構成要素および対象物の構成要素に対応する各ノードと、３次元モデルデータベース２２３に記録される３次元モデルの対応するデータと、が関連付けられた状態となっている。
【００７７】  好ましくは、タスク作成部１０２は、階層型データのロボットの構成要素および対象物の構成要素を指定するオペレータの操作入力に基づいて、タスクを作成する機能を備える。当該機能を実現するために、情報処理装置２の制御部２１は、特定の対象物を把持する作業に対応したロボットのハンドを示すノードと、当該対象物に対応するノードとを階層型リストから選択するオペレータの操作入力に基づいて、タスクを作成する。階層型リストを使用することで、オペレータが作業要素の内容に応じて直感的にタスクを作成することができる。
【００７８】  好ましくは、図４に示したように、表示制御部１０１は、ロボットの構成要素を階層的に表示するためのロボット領域ＲＡ（第１領域）と、対象物の構成要素を階層的に表示するための対象物領域ＰＡ（第２領域）とに分けて、階層型リストを表示装置２４に表示する。  ロボット領域と対象物領域とを分けて表示することで、タスクの作成に当たって、特定の対象物を把持する作業に対応したロボットのハンドを示すノードと、当該対象物に対応するノードとを選択するときに、目的とするノードを見つけやすくなる。
【００７９】  タスク更新部１０３は、表示装置２４に表示されたタスクリストに対するオペレータの操作入力に基づいて、タスクリストのうちいずれかのタスクを削除し、ストレージ２２（第１記憶部の例）に記憶されているタスクデータベース２２１に含まれるタスクをタスクリストに追加し、又は、タスクリストのうちいずれかのタスクの内容を変更する機能を備える。  タスク更新部１０３の機能を実現するために、情報処理装置２の制御部２１は、入力装置２３が受け付けたオペレータの操作入力に基づいてストレージ２２にアクセスし、タスクデータベース２２１に含まれるタスクリストを書き換える。オペレータはタスク単位でジョブの内容を編集することができるため、ティーチング作業が効率化される。
【００８０】  表示装置２４に表示されるタスクリストに含まれるタスクの順序は、複数のタスクの実行順序を規定していてもよい。その場合、タスク入替部１０４は、表示装置２４に表示されたタスクリストに対するオペレータの操作入力に基づいて、タスクリストに含まれるタスクの順序を入れ替える。  タスク入替部１０４の機能を実現するために、情報処理装置２の制御部２１は、入力装置２３が受け付けたオペレータの操作入力に基づいてストレージ２２にアクセスし、タスクデータベース２２１に含まれるタスクリストの順序を更新する。オペレータはタスク単位で実行順序を変更することができるため、ロボットによるジョブの最適化を図ることができるとともに、ティーチング作業が効率化される。
【００８１】  設定更新部１０５は、タスク作成部１０２によりタスクに設定されたアプローチ点およびデパーチャ点のうち少なくともいずれかの点に関する情報を、オペレータの操作入力に基づいて、削除し、変更し、又は、追加する機能を備える。  設定更新部１０５の機能を実現するために、情報処理装置２の制御部２１は、タスク作成用のウィンドウ（図６参照）において入力装置２３が受け付けたオペレータの操作入力に基づいてストレージ２２にアクセスし、タスクデータベース２２１に含まれるタスクのアプローチ点およびデパーチャ点の情報を更新する。  設定更新部１０５によりオペレータが所望の位置に作業要素のアプローチ点およびデパーチャ点を削除し、変更し、又は、追加することができるため、ロボットをオペレータの所望の動作に教示することができる。特に、本実施形態では、タスクの実行結果をＣＡＤソフトウェアにより動画再生することができるため、動画再生結果を見た後にオペレータがアプローチ点及び／又はデパーチャ点を削除し、変更し、又は、追加することで、ロボットの動作を最適化するように教示することができる。
【００８２】  グルーピング部１０６は、表示装置２４に表示された階層型リストから２以上の対象物を指定するオペレータの操作入力に基づいて、当該２以上の対象物をグループ化する機能を備える。その場合、タスク作成部１０２は、グループ化された２以上の対象物のうちいずれかの対象物に対して設定されたアプローチ点およびデパーチャ点のうち少なくともいずれかの点に関する情報を、上記２以上の対象物の他の対象物に対しても設定する。
【００８３】  グルーピング部１０６の機能を実現するために、情報処理装置２に制御部２１は、入力装置２３からのオペレータの操作入力を受け入れると、当該操作入力によって指定される２以上の対象物が同じグループとして関連付けられるようにタスクデータベース２２１を更新する。そして、制御部２１は、グループ化された２以上の対象物のうちいずれかの対象物に対して、例えばアプローチ点が設定された場合、グループ化された他の対象物のアプローチ点が設定されるように、タスクデータベース２２１を更新する。グループ化された他の対象物のアプローチ点およびデパーチャ点の設定は、前述したように、グループ化された２以上の対象物のＴＣＰオフセット量が反映されるようにして行われる。  ２以上の対象物をグループ化することで、複数の対象物に対するアプローチ点及び／又はデパーチャ点の設定作業が容易となる。
【００８４】  プログラム作成部１０７は、タスク作成部１０２によって作成されたタスクに基づいて、当該タスクに対応する作業要素をロボット５に実行させるためのプログラムを作成する機能を備える。  プログラム作成部１０７の機能を実現するために、情報処理装置２の制御部２１は、タスクに含まれる作業要素の種別、作業要素の目標物、アプローチ点、デパーチャ点、モーションパラメータ、およびインターロックの設定を基に、タスクに対応する作業要素をロボットに実行させるためのプログラムが記述された関数を作成する。例えば、プログラム作成部１０７は、タスクに含まれる情報を参照し、ストレージ２２（第１記憶部の例）に保存された作業要素の種別に応じた所定のプログラムのフォーマットにおける座標位置等を書き換えることで、自動的にプログラムを作成する。
【００８５】  プログラム実行部１０８は、表示装置２４に表示されたタスクリストのうち少なくとも１つのタスクを選択するオペレータの操作入力に基づいて、選択された少なくとも１つのタスクに基づいてプログラム作成部１０７により作成されたプログラムを含むロボットプログラムを実行する機能を備える。  プログラム実行部１０８の機能を実現するために、情報処理装置２の制御部２１は、通信インタフェース部２５を介して少なくとも１つのタスクに基づいて作成したロボットプログラムを、ロボット制御装置３へ送信する。ロボット制御装置３では、通信インタフェース部３３によりロボットプログラムを受信すると、制御部３１が当該ロボットプログラムを実行する。各タスクに基づいて作成されたプログラムは、関数の集合体で構成されている。制御部３１はタスクリストに含まれる各タスクに基づいて作成されたプログラムを順に実行する。
【００８６】  表示制御部１０１は、タスクリストのうちプログラム実行部１０８による実行結果がエラーを示したタスクであるエラータスクと、タスクリストのうちエラータスク以外のタスクとを異なる表示態様で表示する。  上述したように、ロボット制御装置３の制御部３１は、タスクリストに含まれる各タスクに基づいて作成されたプログラムを順に実行するようにしてロボットプログラムを実行する。そして、制御部３１は、タスクごとの実行結果（成功又はエラーの結果、および、エラーの場合のエラー原因）を含む実行ログデータを実行ログデータベース２２４に記録する。エラー原因は、例えば、速度超過、目標点不到達、特異点到達等である。次いで制御部３１は、通信インタフェース部３３を介して情報処理装置２へ実行ログデータを送信する。情報処理装置２の制御部２１は、ロボット制御装置３から実行ログデータを取得すると、実行ログデータに含まれる実行結果が反映されるようにして、タスクリストを表示装置２４に表示する。具体的には、タスクリストの表示を、実行結果がエラーを示したエラータスクと、エラータスク以外のタスクとが異なる表示態様となるようにして行う（例えば、図１１参照）。そのため、オペレータは、ジョブの中でエラーが発生した作業要素を直ちに認識でき、タスクのアプローチ点、デパーチャ点、あるいはモーションパラメータの設定値の修正等に対処することができる。
【００８７】  ストレージ２２（第２記憶部および第３記憶部の例）は、仮想空間におけるロボットＲの３次元モデルと、対象物の３次元モデルの情報と、を含む３次元モデルデータベース２２３を記憶する。  状態情報算出部１０９は、プログラム実行部１０８による実行結果に基づいて、時間の経過に応じたロボットの状態を示す情報であるロボット状態データ（状態情報の例）を演算する機能を備える。  シミュレーション部１１０は、状態情報算出部１０９によって得られたロボット状態データに基づいて、３次元モデルを仮想空間内で動作させて表示装置２４に表示する機能を備える。
【００８８】  状態情報算出部１０９およびシミュレーション部１１０の機能を実現するために、ロボット制御装置３の制御部３１は、上述したように、各タスクに基づいて作成されたプログラムを順に実行するようにして、情報処理装置２から受信したロボットプログラムを実行する。そして、制御部３１は、ロボットプログラムの実行結果として、ジョブ全体におけるロボット状態データを取得する。ロボット状態データは、時間の経過に応じたロボットの状態を示す物理量（例えば、アームの関節角、アームの速度や加速度、各部の軌跡）のデータである。情報処理装置２の制御部２１はロボット制御装置３から、ロボット状態データを含む実行ログデータを取得し、実行ログデータベース２２４に記録する。さらに制御部２１は、実行ログデータを基に仮想空間上でロボットおよび対象物の３次元モデルを動作させて表示装置２４に表示する。  したがって、オペレータは、各タスクのロボットの動作を視覚的に確認することができるため、各タスクの設定値（例えば、アプローチ点、デパーチャ点、モーションパラメータ等）や対象物の配置（例えば、図３のキャップトレイ１２の配置等）を再検討することが容易となる。
【００８９】  判定部１１１は、階層型リストにおいて、オペレータの操作入力に基づいて、いずれか１つのロボットの構成要素、および、少なくとも１つの対象物が選択された場合に、当該少なくとも１つの対象物が仮想空間においてロボットＲのハンド５２（ロボットの構成要素の例）により到達可能であるか否かを判定する機能を備える。当該機能は、前述したエリアチェックに相当する。  判定部１１１の機能を実現するために、情報処理装置２の制御部２１は、通信インタフェース部２５を介して、ロボットおよび対象物の３次元モデルに基づく座標データ、対象物のＴＣＰの座標のデータをロボット制御装置３へ送信する。ロボット制御装置３の制御部３１は、受信したデータを基に、特定の対象物に対して逆運動学によりロボットのアームの関節角を求めることができるか否かを判定する。関節角を求めることができればロボットのハンドが対象物に到達可能であることを意味し、関節角を求めることができなければロボットのハンドが対象物に到達不可能であることを意味する。  判定部１１１によりロボットプログラムを作成する前に特定の対象物に対するロボットのハンドの到達可否がわかるため、対象物の配置の最適化等の検討を前もって行うことができ、ティーチング作業の効率化が図れる。
【００９０】  表示制御部１０１は、複数の対象物のうち判定部１１１により到達可能でないと判定された対象物である到達不可対象物が、当該到達不可対象物以外の対象物と識別可能となるように、階層型データを表示してもよい。  エリアチェックでは、図１３に示したように、好ましくは、複数の対象物のうち到達可能でないと判定された対象物（到達不可対象物）が、到達不可対象物以外の対象物と識別可能となるように、階層型リストを表示する。図１３では、マークＭ２の有無によって到達不可対象物を識別可能に表示しているが、識別方法は様々な方法を採りうる。例えば、図１３の例に代えて、到達不可のペン(Pen)を赤色にするか、あるいは輝度を低下させる等の表示処理を施してもよい。
【００９１】  姿勢選択部１１２は、オペレータの操作入力に基づいて、ロボットに対して予め定められた複数の姿勢の中からいずれかの姿勢を選択する機能を備える。  その場合、判定部１１１は、ロボットが姿勢選択部１１２によって選択された姿勢をとることを条件として、少なくとも１つの対象物がロボットの構成要素により到達可能であるか否かを判定する。姿勢選択が行われた場合には、ロボット制御装置３の制御部３１は、ロボットを選択された姿勢に固定した状態で、特定の対象物に対して逆運動学によりロボットのアームの関節角を求めることができるか否かを判定する。  姿勢選択部１１２を設けることで、オペレータは、ロボットの様々な姿勢を考慮しながら、対象物の配置等の検討を前もって行うことができる。
【００９２】  基準点設定部１１３は、対象物の３次元モデルの仮想空間内の位置に基づいて、ロボットの対象物に対する作業の基準となる、仮想空間内のＴＣＰ（基準点の例）を算出し、ＴＣＰを対象物に関連付ける機能を備える。  基準点設定部１１３の機能を実現するために、情報処理装置２の制御部２１は、処理対象となる対象物の３次元モデルのデータに基づき、当該対象物のＴＣＰを設定するとともに、ＴＣＰを基準とした当該対象物のローカル座標系を設定する。本実施形態では、教示ソフトウェアとＣＡＤソフトウェアが連携しているため、対象物のＴＣＰを自動的、かつ正確に算出することができる。基準点設定部１１３は、ＴＣＰとして対象物の重心位置を算出することが好ましい。  本実施形態では、ロボットのハンドの軌道は、対象物を把持する作業に対応したハンドに設定されたＴＣＰと、目標物である当該対象物のＴＣＰおよびそのローカル座標系とに基づいて決定されるため、ハンドによる作業を精度良くティーチングすることができる。また、ＴＣＰとして対象物の重心位置を算出することで、対象物以外の物体（他の対象物や設備等）との干渉を回避しやすい位置をＴＣＰとして特定することができる。
【００９３】  モデル配置部１１４は、対象物の３次元モデルと、ＴＣＰと、ＴＣＰを原点とした３次元モデルのローカル座標系と、を仮想空間に配置して表示する機能を備える。モデル配置部１１４の機能を実現するために、情報処理装置２の制御部２１は、ＴＣＰと、ＴＣＰを原点とした３次元モデルのローカル座標系のデータとを、各対象物に関連付けるようにしてストレージ２２の３次元モデルデータベース２２３に記録する。制御部２１は、３次元モデルデータベース２２３を参照して、対象物の３次元モデルと当該対象物のＴＣＰおよびローカル座標系とを表示装置２４に表示する。  対象物の３次元モデルと当該対象物のＴＣＰおよびローカル座標系とが表示されることで、オペレータは、アプローチ点ＡＰおよびデパーチャ点ＤＰの位置についてＣＡＤ用ウィンドウ上で検討しやすくなる。
【００９４】  図９に関連付けて説明したように、ＴＣＰの対象物への関連付けは、自動的ではなく、オペレータの操作入力に基づいて行われてもよい。  すなわち、表示制御部１０１は、３次元モデルを仮想空間内に表示し、基準点設定部１１３は、仮想空間内の所定点と、階層型データの対象物とを関連付けるオペレータの操作入力に基づいて、上記所定点をＴＣＰとして対象物に関連付けてもよい。このとき、基準点設定部１１３は、対象物にＴＣＰが関連付けられていない場合には、対象物にＴＣＰが関連付けられていないことを報知してもよい。  この基準点設定部１１３の機能を実現するために、情報処理装置２の入力装置２３が、ＴＣＰモデル（図９参照）を所定点にセットし、かつ階層型リストの特定の対象物に対応するノードまでドラッグする操作入力を受け付ける。制御部２１は、当該所定点を対象物のＴＣＰとして対象物に関連付けるように、ストレージ２２の３次元モデルデータベース２２３を更新する。  制御部２１は、対象物にＴＣＰが関連付けられていない場合に、例えば表示装置２４に警告表示を出力することで、当該対象物にＴＣＰを関連付けることをオペレータに促すことができる。
【００９５】  表示制御部１０１は、対象物に関連付けられたＴＣＰを、階層型データ上の対象物の下層に階層的に表示してもよい。この場合、情報処理装置２の制御部２１は、階層型リストを表示するときに、階層型リストデータベース２２２において各対象物と関連付けられたＴＣＰを読み出して、階層型リストに各対象物の下層にＴＣＰの座標を表示する。それにより、オペレータが、各対象物のＴＣＰの座標を人目で認識できるようになる。
【００９６】  インターロック設定部１１５は、オペレータの操作入力に基づき、タスクに設定された目標点、アプローチ点およびデパーチャ点の少なくともいずれかの点においてロボットの動作を待機させる待機時間のタイムアウト値を設定する機能を備える。  インターロック設定部１１５の機能を実現するために、情報処理装置２の制御部２１は、入力装置２３が受け付けたオペレータの操作入力（例えば、図６の教示用ウィンドウＷ３における操作入力）に基づいてストレージ２２にアクセスし、タスクデータベース２２１に含まれるタスクに含まれる特定のアプローチ点又はデパーチャ点に設定されたインターロックの待機時間のタイムアウト値を書き換える。  インターロック設定部１１５により、ロボットのオフラインティーチングを行うときに、インターロックによる待機時間のタイムアウト値を作業要素ごとにオペレータが容易に設定することができる。
【００９７】  なお、シミュレーション部１１０は、インターロックによる待機時間を無効化して、３次元モデルを仮想空間内で動作させてもよい。つまり、シミュレーション用プログラムを実行するときには、インターロックによる待機を行わずに３次元モデルを動作させる。それによって、オペレータは、仮想空間上でロボットを停止させずに、ロボットの動きに着目してプログラムの実行結果を確認することができる。
【００９８】  （４）ロボット教示装置１の主要な処理  次に、図１５および図１６を参照して、ロボット教示装置１の主要な処理についてシーケンスチャートを参照して説明する。  図１５は、本実施形態に係るロボット教示装置のエリアチェックの処理を示すシーケンスチャートの例である。図１６は、本実施形態に係るロボット教示装置のジョブの実行処理を示すシーケンスチャートの例である。
【００９９】  （４−１）エリアチェック（図１５）  先ず、図１５のシーケンスチャートを参照してエリアチェックの処理について説明する。  図４に示した階層型リストのロボット領域ＲＡ内のいずれかの対象物に対応するノードをポインティングデバイスで右クリックしてから「エリアチェック」が選択されることで（ステップＳ１０：ＹＥＳ）、エリアチェックの実行が開始される。  先ず、姿勢選択部１１２は、オペレータのロボットＲの姿勢を選択する操作入力があった場合（ステップＳ１２：ＹＥＳ）、当該操作入力に基づいて、ロボットＲに対して予め定められた複数の姿勢の中からいずれかの姿勢を選択する。
【０１００】  次いで、判定部１１１は、「エリアチェック」の選択時に指定した対象物が仮想空間においてロボットＲのハンド５２により到達可能であるか否かを判定し、到達可否結果を表示装置２４に表示する。なお、２以上の対象物を指定してエリアチェックを行うことも可能である。判定部１１１の処理は、具体的には、以下のようにして行われる。  情報処理装置２は、通信インタフェース部２５を介して、ロボットＲおよび各対象物の３次元モデルに基づく座標データ、各対象物のＴＣＰの座標データをロボット制御装置３へ送信する（ステップＳ１４）。ロボット制御装置３は、受信したデータを基に、指定された各対象物に対して逆運動学によりロボットＲのアーム５１の関節角を計算する（ステップＳ１６）。ロボット制御装置３は、ステップＳ１６によりアーム５１の関節角が求められるか否かに基づいて、アーム５１の対象物に対する到達可否を決定する（ステップＳ１８）。ステップＳ１６，Ｓ１８の処理は、姿勢選択部１１２により選択されたすべてのロボットＲの姿勢について１つずつ行われる。ロボット制御装置３は、すべての姿勢についての処理を終了した場合には（ステップＳ２０：ＹＥＳ）、ロボットＲの姿勢ごとのエリアチェック結果（到達可否の結果）を情報処理装置２へ返す（ステップＳ２２）。情報処理装置２は、受信したエリアチェック結果を、例えば図１３に示したように、表示装置２４に表示する（ステップＳ２４）。
【０１０１】  （４−２）ジョブのシミュレーションの実行（図１６）  次に、図１６のシーケンスチャートを参照してジョブのシミュレーションの実行の処理について説明する。  図１０の教示用ウィンドウＷ４においてオペレータによるボタンｂ４に対する操作入力（シミュレーションの実行指示）を受け付けると（ステップＳ３０：ＹＥＳ）、プログラム作成部１０７は、ジョブをロボットＲに実行するためのロボットプログラムを作成する（ステップＳ３２）。このロボットプログラムには、ジョブに対応するタスクリストの各タスクに対応する作業要素をロボットＲに実行させるためのプログラムが記述された複数の関数が含まれる。
【０１０２】  作成されたロボットプログラムは、情報処理装置２からロボット制御装置３へ送信されて（ステップＳ３４）、ロボット制御装置３において実行される。すなわち、プログラム実行部１０８は、タスク単位でロボットプログラムを実行する（ステップＳ３６）。状態情報算出部１０９は、プログラム実行部１０８による実行結果に基づいて、時間の経過に応じたロボットＲの状態を示す情報であるロボット状態データを演算し、ロボット状態データを含む実行ログデータをストレージ３２に記録する（ステップＳ３８）。ステップＳ３６，Ｓ３８の処理は、タスクリストに含まれるすべてのタスクが終了するまで行われる。  すべてのタスクについての処理が終了すると（ステップＳ４０：ＹＥＳ）、ロボット制御装置３は、ストレージ３２に記録した実行ログデータを情報処理装置２に送信する（ステップＳ４２）。情報処理装置２は、受信した実行ログデータを実行ログデータベース２２４に記録する。  次いで、シミュレーション部１１０は、ステップＳ４２で受信した実行ログデータに含まれるロボット状態データ（つまり、状態情報算出部１０９によって得られたロボット状態データ）に基づいて、３次元モデルを仮想空間内で動作させて表示装置２４に表示する（ステップＳ４４）。
【０１０３】  （５）変形例  次に、上述した実施形態の変形例について説明する。  （５−１）変形例１  上述した実施形態で説明したエリアチェックでは、ロボットＲのハンド５２による対象物への到達可否のみを表示する例（図１３参照）を挙げたが、より詳細な情報を提供することで、オペレータによるオフラインティーチングを支援することができる。例えば、ロボットＲのハンド５２により到達可能でないと判定された対象物が、ハンド５２にどの程度近接しているかについての情報を提供するようにしてもよい。それによって、例えば対象物の再配置についての有用な情報が得られる。  本変形例では、判定部１１１は、ロボットＲのハンド５２（ロボットの構成要素の例）により到達可能でないと判定した対象物である到達不可対象物に対するロボットＲのハンド５２の近接の程度を特定し、表示制御部１０１は、到達不可対象物に対するロボットＲのハンド５２の近接の程度が認識可能となるように表示する。  ハンド５２の近接の程度を示す指標の表示例を図１７に示す。図１７に示すように、到達不可対象物に対してマークＭ３を表示する。マークＭ３は、「ＮＧ（＊）（＊：１〜５）」という表示形式となっており、括弧内の数字によって近接の程度（例えば、数字が小さいほど近接している）がわかるようになっている。近接の程度は、求められたアーム５１の関節角と、関節角の限界角度との差分値によって算出できる。
【０１０４】  （５−２）変形例２  変形例２では、ロボットＲのハンド５２により到達可能であると判定された対象物が、ハンド５２に対してどの程度余裕があるかについての情報が提供される。かかる情報を提供することによっても、オフラインティーチングを支援することができる。例えば対象物の再配置についての有用な情報が得られる。  本変形例では、判定部１１１は、ロボットＲのハンド５２により到達可能と判定した対象物である到達可能対象物に対するロボットＲのハンド５２の到達の余裕度を特定し、表示制御部１０１は、到達可能対象物に対するロボットＲのハンド５２の到達の余裕度が認識可能となるように表示する。例えば図１７に示すように、到達可能対象物に対してマークＭ４を表示する。マークＭ４は、「ＯＫ（＊）（＊：１〜５）」という表示形式となっており、括弧内の数字によって余裕度（例えば、数字が大きいほど余裕がある）がわかるようになっている。  余裕度は、求められたアーム５１の関節角と、関節角の限界角度との差分値によって算出できる。
【０１０５】  （５−３）変形例３  判定部１１１は、オペレータの操作入力に基づいていずれか１つのロボットが選択された場合に、複数の対象物の各々がロボットＲのハンド５２により到達可能であるか否かを判定してもよい。  つまり、階層型リストにおいてロボットＲを選択した操作入力に基づいて、すべての対象物に対する到達可否を判定してもよい。それによって、オペレータがエリアチェックを行う対象物を選択する手間を省くことができる。また、すべての対象物に対する到達可否を判定することで、すべての対象物の全体的な配置について検討するための有用な情報が得られる。
【０１０６】  （５−４）変形例４  プログラム作成部１０７は、インターロックによる待機時間がタイムアウト値に達した場合には、エラーと判断するようにプログラムを作成してもよい。  ロボットプログラムを実行したときにインターロックによる待機時間がタイムアウト値に達した場合には、エラーと判断することで、例えばロボットＲに対する入出力信号に不具合があること等をオペレータが認識することができる。
【０１０７】  （５−５）変形例５  プログラム作成部１０７は、インターロックのタイムアウトによりエラーと判断した場合にロボットＲを予め決められた基準姿勢にするように、プログラムを作成してもよい。  変形例４に示したようにしてエラーと判断した場合には、エラーが発生した後の動作を行うよりもロボットＲの動作を中止して基準姿勢（例えば、初期の姿勢）に戻す方が好ましい場合がある。
【０１０８】  （５−６）変形例６  プログラム作成部１０７は、インターロックのタイムアウトによりエラーと判断した場合には、ストレージ２２（第１記憶部の例）のタスクデータベース２２１を参照して、オペレータの操作入力に基づく複数のタスクのうちのいずれかのタスクに対応する作業要素をロボットＲに実行させるように、プログラムを作成してもよい。  変形例４に示したようにしてエラーと判断した場合には、ロボットＲに特定の作業要素を実行させてもよい。特定の作業要素の例としては、現在把持している対象物をエラー用の棚に置くことが挙げられる。
【０１０９】  以上、本発明のロボット教示装置の実施形態について詳述したが、本発明は上記の実施形態に限定されない。また、上記の実施形態は、本発明の主旨を逸脱しない範囲において、種々の改良や変更が可能である。  例えば、上述した実施形態に係るロボット教示装置は、図１４の機能ブロック図に記載されたすべての機能を備えている必要はなく、少なくとも一部の機能を備えていればよい。  上述した実施形態では、ロボット教示装置は、情報処理装置とロボット制御装置の２つの装置を含む場合について例示したが、その限りではなく、一体の装置として構成してもよい。  上述した実施形態では、情報処理装置の入力装置にポインティングデバイスが含まれる場合について説明したが、その限りではなく、他のデバイスであってもよい。例えば、タッチ入力機能を備えた表示パネルを使用し、オペレータによるタッチ入力を受け付けてもよい。
【０１１０】  上述した説明により、図１４の機能ブロック図に記載された機能のうち少なくとも一部の機能をコンピュータに実現させるためのプログラム、および、当該プログラムが記録されたコンピュータ可読記憶媒体（不揮発性の記憶媒体をも含む。）が開示されていることは当業者に理解される。
【符号の説明】
【０１１１】１…ロボット教示装置、２…情報処理装置、２１…制御部、２２…ストレージ、２３…入力装置、２４…表示装置、２５…通信インタフェース部、３…ロボット制御装置、３１…制御部、３２…ストレージ、３３…通信インタフェース部、１１…ペントレイ、Ｐ…ペン群、１２…キャップトレイ、Ｃ…キャップ群、１３…治具、１４…製品トレイ、Ａ１〜Ａ１２…製品、ＥＣ…通信ネットワークケーブル、Ｒ…ロボット、５１…アーム、５２…ハンド、６１〜６８…ノード、１０１…表示制御部、１０２…タスク作成部、１０３…タスク更新部、１０４…タスク入替部、１０５…設定更新部、１０６…グルーピング部、１０７…プログラム作成部、１０８…プログラム実行部、１０９…状態情報算出部、１１０…シミュレーション部、１１１…判定部、１１２…姿勢選択部、１１３…基準点設定部、１１４…モデル配置部、１１５…インターロック設定部、２２１…タスクデータベース、２２２…階層型リストデータベース、２２３…３次元モデルデータベース、２２４…実行ログデータベース、ＲＡ…ロボット領域、ＰＡ…対象物領域、Ｗ１〜Ｗ６…ウィンドウ、ｂ１〜ｂ４…ボタン、ＡＰ…アプローチ点、ＴＰ…目標点、ＤＰ…デパーチャ点、Ｔ…テーブル
【図１】
2019064915.tif 000003
【図２】
2019064915.tif 000004
【図３】
2019064915.tif 000005
【図４】
2019064915.tif 000006
【図５】
2019064915.tif 000007
【図６】
2019064915.tif 000008
【図７】
2019064915.tif 000009
【図８】
2019064915.tif 000010
【図９】
2019064915.tif 000011
【図１０】
2019064915.tif 000012
【図１１】
2019064915.tif 000013
【図１２】
2019064915.tif 000014
【図１３】
2019064915.tif 000015
【図１４】
2019064915.tif 000016
【図１５】
2019064915.tif 000017
【図１６】
2019064915.tif 000018
【図１７】
2019064915.tif 000019
【国際調査報告】
2019064915.tif 000020
2019064915.tif 000021
2019064915.tif 000022
2019064915.tif 000023