(57)【要約】【課題】ロボットの特定の動作に注目して干渉判定を実行できるようにする。【解決手段】本発明の一実施形態は、ロボットの作業対象であるワークに対するロボットの要素作業に関する情報の一覧である要素作業リストを、要素作業の内容がオペレータに認識可能な表示態様で表示装置に表示させる第１表示制御部と、ロボット、ワーク、および、ロボットの周辺に配置される周辺配置物の３次元データを記憶する記憶部と、ロボット、ワーク、および、周辺配置物の３次元データを仮想空間内に配置して表示装置に表示させる第２表示制御部と、要素作業リストに含まれるいずれか１つの要素作業を選択するオペレータの操作入力に基づいて、選択された要素作業をロボットが行ったときに当該要素作業内に、ロボット、ワーク、および、周辺配置物の３次元データの干渉が仮想空間において発生するか否かを判定する干渉判定部と、を備えた、ロボットの干渉判定装置である。【選択図】図１８
2019171500.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)
【００５４】
図９に示す教示用ウィンドウＷ５では、展開アイコンＥＩに代えて折畳みアイコンＦＩがタスクＴ２に対応付けられるとともに、タスクＴ２に含まれるモーション名称Ｍ２１〜Ｍ２５が表示される。なお、折畳みアイコンＦＩが操作されると、モーション名称Ｍ２１〜Ｍ２５が非表示となり、再度図８に示す教示用ウィンドウＷ４が表示される。
【００５５】
（２−６）近似形状データについて
本実施形態の干渉判定装置１では、後述するタスク内干渉チェックおよびタスク間干渉チェックを高速で実行するために、ロボットおよび部品の３次元モデルと対応付けて、近似形状データが作成されてストレージ２２に記憶される。近似形状データは、３次元モデル同士の干渉の有無を高速で行うために、３次元モデルの外表面を球体等の基本形状で覆うように、３次元モデルを基本形状の集合によって近似したデータである。なお、基本形状としては、干渉判定を高速で行うことができる点で球体であることが好ましい。その場合、３次元モデルの外表面を覆うように１または複数の球体が配置される。
【００５６】
好適には、１つの３次元モデルに対応して、基本形状（例えば球体）のサイズが異なる複数の近似形状データが作成される。
図１０には、ロボットの３次元モデルと異なるレベルの近似形状データとが例示される。図１０において、レベル１、レベル２、および、レベル３の近似形状データは、順に基本形状である球体の径が小さくなっていることがわかる。球体の径が小さいほど近似形状データに含まれる球体の数が多くなるため、レベル３の近似形状データは、３次元モデルの外表面が精度良く再現されたモデルである。また、球体の径をさらに小さくすることで、近似形状データのレベルをさらに上げてもよい。その一方で、干渉判定に要する計算時間については、近似形状データのレベル１〜３の順に多くの時間がかかることになる。本実施形態は、後述するように、近似形状データの低レベルから高レベルへ順に上げていきながら干渉判定を行うことで、短時間で干渉判定を行うように構成される。
近似形状データごとに、異なるレベルの球体のデータがツリー構造で管理されている。例えば、近似形状データの特定のレベル１の球体１つに対して、レベル２の球体２つが対応付けられ、当該レベル２の球体１つに対してレベル３の球体が４つ対応付けられている、といった具合である。
【００５７】
図１１に、ロボットおよび部品のデータ構成を概念的に示す図である。
図１１に示すように、本実施形態では、階層型リストを構成するロボットＲおよび各部品に対して、３次元モデルと、レベル１〜３（Ｌ１〜Ｌ３）の近似形状データとが対応付けられる。ロボットＲの干渉判定結果を可視化するためにロボットＲの動作のシミュレーションを実行するときには、ロボットＲおよび各部品の３次元モデル、または３次元モデルに対応付けられた近似形状データが仮想空間に配置される。
【００５８】
本実施形態では、同一である２以上の３次元モデルに対応付けられる近似形状データが効率的に作成される。すなわち、同一である２以上の３次元モデルのうちいずれかの３次元モデルに対応する近似形状データが作成済みで近似形状モデルデータベース２２５に含まれている場合には、近似形状データが作成されていない３次元モデルに対して、作成済みの近似形状データが対応付けられる。例えば、図１１に示す例において、ペンPen1に対応する３次元モデルに対する近似形状データが作成済みである場合には、残りのペンPen2〜Pen12に対する近似形状データとして、ペンPen1の近似形状データが複製され、ペンPen2〜Pen12に対する３次元モデルに対応付けられる。
【００５９】
ロボットＲに対応する近似形状データを構成する各球体は、それぞれ局所座標を有するか、または局所座標が参照される。ロボットＲに対応する近似形状データの各球体の局所座標は、ロボットＲの各リンク座標系と同じである。
本実施形態の干渉判定装置１では、ロボットＲが動作するときの干渉チェックを行うときに、３次元モデルの仮想空間における位置の変更に伴って、３次元モデルに対応する近似形状データの仮想空間内の位置を逐次（例えば、干渉チェックを行う所定期間のタイミング毎に）変更する処理が行われる。このとき、近似形状データの各球体に設定された局所座標を利用して球体の位置の更新が行われる。
例えばロボットＲが６関節ロボットである場合に、ロボットＲの基準座標（ロボット座標）に対する隣接するリンク座標系間の同次変換行列をＴ１，Ｔ２，Ｔ３，Ｔ４，Ｔ５，Ｔ６とすると、各同次変換行列は、各関節の角度からもとめられる。そこで、本実施形態では、更新後のロボット座標系における球体の原点の座標は、更新前のロボット座標系における球体の原点の座標に対して、同次変換行列Ｔ１，Ｔ２，Ｔ３，Ｔ４，Ｔ５，Ｔ６のうち球体が属するリンクに応じた分の１または複数の行列を掛け合わせることで算出される。例えば、Ｔ１およびＴ２によって変換される局所座標を有する球体について、変更前および変更後のロボット座標系における球体の原点の座標をＰｔ，Ｐｔ＋１とすると、Ｐｔ＋１＝（Ｔ１・Ｔ２）Ｐｔ，となる。なお、ロボットＲの移動に応じて同次変換行列も更新されるため、原点の座標の更新に当たっては、更新後の行列が適用される。
ロボットＲの移動に応じて球体の原点の位置を順次更新していくことで、ロボットＲが移動する度に３次元モデルに球体を再設定する必要がなくなるため、干渉判定処理のさらなる高速化を実現できる。
【００６０】
（２−７）タスク内干渉チェック
次に、タスク内干渉チェックについて、図１２〜１５を参照して説明する。図１２は、実施形態の一例に係る教示用ウィンドウの遷移を示す図である。図１３は、球体同士の干渉判定方法について説明する図である。図１４は、ロボットの３次元モデルと部品とが干渉する場合の表示態様を例示する図である。図１５は、タスクリストの表示例を示す図である。
【００６１】
タスク内干渉チェックとは、オペレータによって選択されたタスクをロボットが行ったときに当該タスク内に、ロボット、ワーク、および、周辺配置物の３次元モデルの干渉が仮想空間において発生するか否かを判定することである。
タスク内干渉チェックを実行するには、タスクリストに登録されたいずれかのタスクを選択することにより行う。例えば、図１２に示すように、タスクリストのうちタスクＴ２のタスク内干渉チェックを行うには、オペレータは、タスクＴ２を選択した上で右クリックし、ボタンｂ１４（「動作確認」）を選択し、ボタンｂ１４１（「タスク内干渉チェック」）を選択する操作を行う。
【００６２】
タスク内干渉チェックでは、選択されたタスクのタスクプログラムが情報処理装置２からロボット制御装置３へ送信され、ロボット制御装置３においてタスクプログラムが実行される。ロボット制御装置３は、タスクプログラムの実行結果としてロボット状態データを含む実行ログデータを情報処理装置２に返す。ロボット状態データは、マニピュレータ５０のモデルを基に演算された時間の経過に応じたロボットの状態を示す物理量（例えば、所定の基準時間（例えば１ｍｓ）ごとの関節角、基準点の座標位置等）のデータである。
【００６３】
情報処理装置２のＣＡＤソフトウェアは、ロボット状態データに従って仮想空間内でロボットＲおよびロボットＲに把持されたワークの３次元モデルを動作させる。このとき、情報処理装置２は、当該３次元モデルに対応する近似形状データが、他のロボットＲおよび部品の３次元モデルに対応する近似形状データと干渉するか否かについて判定を行う。
干渉判定のタイミングは適宜設定してよいが、例えば、ロボットの基準点が１０ｍｍ移動する度に干渉判定が行われる。干渉判定のタイミングで、前述したように、ロボットの近似形状データを構成する各球体の位置が更新されて、干渉判定に利用される。
【００６４】
本実施形態の例では、近似形状データが複数の球体で構成されているため、干渉の判定処理が容易である。すなわち、図１３において、干渉判定対象の２個の球体が球体Ｃｂ１，Ｃｂ２（各球体の半径ｒ１，ｒ２はレベルに応じて既知である。）とした場合、球体Ｃｂ１，Ｃｂ２のそれぞれのロボット座標系における更新後の原点Ｏ１，Ｏ２が、前述したようにして算出される。そして、原点Ｏ１，Ｏ２間の距離Ｌが、球体Ｃｂ１の半径ｒ１と球体Ｃｂ２の半径ｒ２の和よりも大きい場合には、球体Ｃｂ１と球体Ｃｂ２の干渉が無いと判断できる。逆に、原点Ｏ１，Ｏ２間の距離Ｌが、球体Ｃｂ１の半径ｒ１と球体Ｃｂ２の半径ｒ２の和と同じかそれより小さい場合には、球体Ｃｂ１と球体Ｃｂ２の干渉があると判断できる。球体Ｃｂ１と球体Ｃｂ２の干渉がある場合には、球体Ｃｂ１が属するロボットまたは部品と、球体Ｃｂ２が属するロボットまたは部品とが干渉したと判断される。
【００６５】
ロボットＲ同士およびロボットＲと部品との干渉判定は、基本的には総当りで行われるが、明らかに干渉しない組合せについては干渉判定を行わなくてもよい。例えば、(i) ロボットＲのハンドと、ハンド上のワーク、(ii) 周辺配置物と、周辺配置物に配置されたワーク、(iii) ハンド上のワークと、周辺配置物に配置された当該ワーク、については、干渉判定を行わなくてもよい。(i)については干渉が発生し得ず、(ii)については両者とも静止関係にあるために干渉が発生し得ず、(iii)については同時に存在し得ないもの同士であるためである。
また、干渉判定の対象の特定の組合せについては、タスクの種別に応じて干渉判定を行う期間を限定してもよい。例えば、ロボット若しくは周辺配置物と、ハンド上のワークとの干渉を判定する際に、タスクの種別が「取る（Pick up）」である場合には最初のデパーチャ点以降の期間において干渉判定を行い、タスクの種別が「置く（Place）」である場合には最初のアプローチ点から目標点までの期間において干渉判定を行うようにしてもよい。
【００６６】
干渉判定の結果は、３次元モデルのうち干渉が発生する部分を、干渉が発生しない部分と異なる態様で表示してもよい。例えば図１４に示すように、ロボットＲの３次元モデルのうち部品と干渉する部分ＲＩＮＦを干渉していない部分と異なる態様（例えば、異なる色、模様、輝度など）で表示してもよい。それによって、ロボットＲのどの部位に干渉が発生するのかオペレータが認識できるため、ロボットＲの教示点を変更する、あるいは部品の配置を変更する等の教示作業を支援することができる。
干渉する部分ＲＩＮＦを３次元モデルと異なる様態で表示するとともに、干渉する部分ＲＩＮＦを近似形状データで表示してもよい。その際、近似形状データを構成する球体のサイズを表示することが好ましい。それによってオペレータは、近似形状データを構成する球体のサイズから、ロボットＲの教示点をどの程度変更することで干渉を回避することができるのか認識することが容易となる。
なお、図１４では、ロボットＲの３次元モデルが表示される場合について例示しているが、ロボットＲの３次元モデルに代えて当該３次元モデルに対応する近似形状データが表示されてもよい。
【００６７】
干渉判定の結果に基づき、干渉が発生するタスクと干渉が発生しないタスクとで異なる態様となるようにタスクリストを表示してもよい。例えば図１５には、干渉が発生するタスクＴ２のタスク名称の文字列の表示態様（例えば、異なる大きさ、字体、輝度など）を、干渉が発生しない他のタスクと異なる態様で表示する例が示される。タスク名称の文字列を異なる表示態様で表示する代わりに、タスク名称の文字列の背景画像を異なる表示態様で表示してもよい。
このようなタスクリストの表示態様とすることで、特定のジョブに含まれる複数のタスクの中で、ロボットＲの教示点を変更する、あるいは部品の配置を変更する等の教示作業を行うべきタスクをオペレータが直ぐに認識でき、教示作業の効率化を図ることができる。
【００６８】
なお、ＣＡＤソフトウェアは、オペレータによって選択されたいずれかの３次元モデルを仮想空間内で非表示にしてもよい。その場合、ＣＡＤソフトウェアにより仮想空間内で非表示にされた３次元モデルについては、干渉が発生するか否かについての判定の対象としないようにすることが好ましい。それによって、オペレータが注目したい部分についての干渉の有無が認識しやすくなる。例えば、仮想空間を表示するときの視点によっては、オペレータが注目したい部分と、部品とが重なってしまう場合が生じうるが、その場合に、当該部品を非表示とすることで注目したい部分で干渉が生ずるか否かオペレータが確認しやすくなる。
【００６９】
（２−８）タスク間干渉チェック
次に、タスク間干渉チェックについて、図１６および図１７を参照して説明する。図１６は、実施形態の一例に係る教示用ウィンドウの遷移を示す図である。図１７は、タスク間干渉チェックの判定結果の表示例を示す図である。
【００７０】
タスク間干渉チェックは、オペレータによって選択された２つのタスク間のロボットの移動中に、ロボット、ワーク、および、周辺配置物の３次元モデルの干渉が仮想空間において発生するか否かを判定することである。
タスク間干渉チェックを実行するには、タスクリストに登録された少なくとも２以上のタスクを選択することにより行う。例えば、図１６に示すように、タスクリストのうちタスクＴ２〜Ｔ４のタスク間干渉チェックを行うには、オペレータは、タスクＴ２〜Ｔ４を選択した上で右クリックし、ボタンｂ１４（「動作確認」）を選択し、ボタンｂ１４２（「タスク間干渉チェック」）を選択する操作を行う。
【００７１】
タスク間干渉チェックでは、選択された２以上のタスクのタスク間の動作が設定された部分のロボットプログラム（例えば、上記move(AP1)）が情報処理装置２からロボット制御装置３へ送信され、ロボット制御装置３においてロボットプログラムが実行される。ロボット制御装置３は、ロボットプログラムの実行結果としてロボット状態データを含む実行ログデータを情報処理装置２に返す。ロボット状態データは、マニピュレータ５０のモデルを基に演算された時間の経過に応じたロボットの状態を示す物理量（例えば、所定の基準時間（例えば１ｍｓ）ごとの関節角、基準点の座標位置等）のデータである。
【００７２】
情報処理装置２のＣＡＤソフトウェアは、ロボット状態データに従って仮想空間内でロボットＲおよびロボットＲに把持されたワークの３次元モデルを動作させる。このとき、情報処理装置２は、当該３次元モデルに対応する近似形状データが、他のロボットＲおよび部品の３次元モデルに対応する近似形状データと干渉するか否かについて判定を行う。
干渉判定のタイミングは適宜設定してよいが、例えば、ロボットの基準点が１０ｍｍ移動する度に干渉判定が行われる。干渉判定のタイミングで、前述したように、ロボットの近似形状データを構成する各球体の位置が更新されて、干渉判定に利用される。
【００７３】
タスク内干渉チェックと同様の観点から、タスク間干渉チェックにおいても干渉判定の結果は、３次元モデルのうち干渉が発生する部分を、干渉が発生しない部分と異なる態様で表示してもよい。
【００７４】
タスク内干渉チェックと同様の観点から、タスク間干渉チェックにおいても干渉判定の結果に基づき、干渉が発生するタスクと干渉が発生しないタスクとで異なる態様となるようにタスクリストを表示してもよい。
【００７５】
ＣＡＤソフトウェアは、オペレータによって選択されたいずれかの３次元モデルを仮想空間内で非表示にしてもよい。その場合、タスク内干渉チェックと同様の観点から、タスク間干渉チェックにおいてもＣＡＤソフトウェアにより仮想空間内で非表示にされた３次元モデルについては、干渉が発生するか否かについての判定の対象としないようにすることが好ましい。
【００７６】
図１６に示す例では３個のタスクが選択された場合のタスク間干渉チェックを実行する場合について説明したが、本実施形態の教示プログラムは、所定の操作入力に応じて、タスクリストに含まれるすべてのタスクの中の任意の２つのタスク間の干渉判定を行ってもよい。その場合、干渉判定の結果は、図１７に示すように、タスクリストに含まれる複数のタスクの中の任意の２つのタスク間の判定結果が一覧できるテーブルを表示することが好ましい。このように一覧表示することで、どのタスク間で問題が生ずるか把握でき、タスクの順序設定等を支援することができる。なお、所定の操作入力に基づいて、判定結果が一覧できるテーブルをファイル出力できるようにすることが好ましい。それによってオペレータが、干渉が発生しない範囲でタスクの実行順序を変更することが容易となる。
【００７７】
図１７に示すテーブルでは、タスクリストに含まれるすべてのタスクが行と列に配置され、行に配置されたいずれかのタスクと列に配置されたいずれかのタスクとの間のタスク間移動における干渉の判定結果が、「○」（干渉無し）、「×」（干渉有り）、または、「▲」（干渉無いが余裕小）のいずれかのマークで示される。「▲」のマークを判定結果とする基準は、例えば図１３において、球体Ｃｂ１，Ｃｂ２の原点Ｏ１，Ｏ２間の距離Ｌから、球体Ｃｂ１の半径ｒ１と球体Ｃｂ２の半径ｒ２の和を減算した値が、所定の閾値以下の正の値であることを条件とすることができる。
【００７８】
図１７に示すテーブルにおいて、タスク間干渉チェックの判定結果である「○」、「×」、または、「▲」のいずれかのマークをクリックする操作を行うことで、当該マークに対応するタスク間のロボットの移動中に３次元モデルのうち干渉が発生する部分を、干渉が発生しない部分と異なる態様で表示してもよい。その場合の表示例は、図１４に示したとおりである。
判定結果を示すマークから直ちに干渉の状況を可視化して表示させるように構成することで、ロボットのタスク間移動について検討することがさらに容易となる。
【００７９】
タスク間干渉チェックにおいてロボットＲ同士およびロボットＲと部品との干渉判定は、基本的には総当りで行われるが、明らかに干渉しない組合せについて干渉判定を行わなくてもよい点については、タスク内干渉チェックと同様である。
また、干渉判定の対象の特定の組合せについては、タスク間移動の前の方のタスクの種別に応じて、当該タスク間移動の干渉判定を行わなくてもよい。例えば、ロボット若しくは周辺配置物と、ハンド上のワークとの干渉を判定する際に、タスク間移動の前の方のタスクの種別が「置く（Place）」である場合には、タスク間移動中にハンド上のワークが存在しないため、タスク間移動における干渉判定を行わなくてもよい。
【００８０】
（３）干渉判定装置１の機能
次に、本実施形態の干渉判定装置１の機能について、図１８を参照して説明する。図１８は、実施形態に係る干渉判定装置１の機能ブロック図である。
図１８に示すように、干渉判定装置１は、表示制御部１０１、データ作成部１０２、関連付け部１０３、プログラム実行部１０４、状態情報算出部１０５、位置変更部１０６、および、干渉判定部１０７を備える。
干渉判定装置１のストレージ２２は、前述したように、ロボットプログラム２２１、階層型リストデータベース２２２、３次元モデルデータベース２２３、実行ログデータベース２２４、および、近似形状モデルデータベース２２５を備える。
【００８１】
以下の説明において、情報処理装置２の制御部２１の処理について言及するときには、制御部２１に含まれるＣＰＵが教示ソフトウェア及び／又はＣＡＤソフトウェアを実行することにより処理が行われる。
【００８２】
表示制御部１０１は、教示ソフトウェアおよびＣＡＤソフトウェアの実行結果を表示装置２４に表示させる制御を行う。表示制御部１０１の機能を実現するために、情報処理装置２の制御部２１は、教示ソフトウェアおよびＣＡＤソフトウェアの出力を含む画像データを生成し、バッファリングし、表示装置２４へ送信する。表示装置２４は、表示駆動回路を駆動して画像を表示パネルに表示する。
【００８３】
表示制御部１０１は、ロボットの作業対象であるワークに対するロボットのタスクについてのタスクプログラム名称の一覧であるタスクリストを、タスクの内容がオペレータに認識可能な表示態様で表示装置２４に表示させる機能を備える。図８に示す例では、表示されるタスクプログラム名称（例えばタスクＴ２の場合、“Place_to_PenJ_in_PenProduct”）によりタスクの内容がオペレータに認識可能となっている。
【００８４】
表示制御部１０１の機能を実現するために、本実施形態では、以下のようにしてロボットプログラムが作成される。
すなわち、情報処理装置２のストレージ２２には、タスクの種別（Function）ごとに、テンプレートとなるプログラムコードがタスクの関数として記録されている。オペレータによりタスクの種別（Function）、タスクの目標物（Target）、アプローチ点、デパーチャ点、モーションパラメータ等が設定されると（図７参照）、情報処理装置２の制御部２１は、設定されたタスクの種別に対応するプログラムコードのテンプレートに、設定された情報を埋め込むことで、ロボットプログラムのコードを作成する。
また、タスクの種別ごとのテンプレートとなるプログラムコードには、当該タスクに含まれる複数のモーションの各々に対応するプログラムコードが含まれている。そのため、上記設定された情報をテンプレートに埋め込むことで、モーションプログラムのコードが自動的に生成されることになる。
【００８５】
例えば、タスクの種別として「取る（Pick up）」が設定された場合、「取る（Pick up）」に対応するプログラムコードのテンプレートには、アプローチ点ＡＰ１まで移動させる関数move(AP1)やアプローチ点ＡＰ２まで移動させる関数move(AP2)等が含まれており、設定されたアプローチ点ＡＰ１，ＡＰ２の具体的な座標値を埋め込むことで、モーションプログラムである関数move(AP1)，move(AP2)が作成される。「取る（Pick up）」に含まれるすべてのモーションプログラムが作成されると、結果的に「取る（Pick up）」に対応するタスクプログラムが作成される。
タスクプログラムの名称およびモーションプログラムの名称として、テンプレートに応じた名称が自動的に設定される。情報処理装置２の制御部２１は、生成されたタスクプログラムおよびモーションプログラムをそれぞれの名称と関連付けてストレージ２２に記録する。
【００８６】
ロボットが行うジョブは、複数のタスクを含む。オペレータがロボットのタスク間移動のためのモーションパラメータを設定することで、ロボットにタスク間移動させる関数（例えば、上記move(AP1)；以下、「タスク間移動プログラム」という。）が作成される。ロボットの動作内容によっては、２以上のタスクの中からいずれかのタスクを条件分岐によって実行させる場合に当該条件が設定される。
【００８７】
以上説明したように、ジョブに対応する全体のロボットプログラムは、複数のタスクプログラムと、タスク間移動プログラムとを含む。各タスクプログラムは、タスクプログラムの名称によって識別される。
教示プログラムを実行すると、情報処理装置２の制御部２１は、ストレージ２２に記憶されているロボットプログラムを読み出し、ロボットプログラムに含まれる複数のタスクプログラムに基づいてタスクリストを構成し、表示装置２４に表示させる。
【００８８】
表示制御部１０１は、ロボット、ワーク、および、周辺配置物の３次元モデルを仮想空間内に配置して表示装置２４に表示させる機能を備える。当該機能は、ＣＡＤソフトウェアが３次元モデルデータベース２２３を参照することによって実現される。
【００８９】
表示制御部１０１は、近似形状データを仮想空間内に配置して表示装置２４に表示させる機能を備えてもよい。当該機能を実現するために、情報処理装置２の制御部２１は、ストレージ２２の近似形状モデルデータベース２２５にアクセスして、仮想空間に配置すべき近似形状データを読み出す。近似形状データは、３次元モデルデータベース２２３の３次元モデルに対応付けられている。
【００９０】
データ作成部１０２は、３次元モデルデータベース２２３に含まれる３次元データを基本形状の集合によって近似した近似形状データを作成する機能を備える。当該機能を実現するために、情報処理装置２の制御部２１が、３次元モデルデータベース２２３からロボットおよび部品の３次元モデルを読み出し、３次元モデルの外表面を１または複数の球体で覆うようにして球体を配置することで、３次元モデルに対応する近似形状データを作成する。作成された近似形状データは、近似形状モデルデータベース２２５に記録される。
【００９１】
関連付け部１０３は、同一である２以上の３次元データが前記第１記憶部に記憶され、かつ前記２以上の３次元データのうちいずれかの３次元データに対応して前記第２記憶部に近似形状データが記憶されている場合、当該近似形状データを前記２以上の３次元データのうち他の３次元データに関連付ける機能を備える。
当該機能を実現するために、情報処理装置２の制御部２１は、同一である２以上の３次元モデルのうちいずれかの３次元モデルに対応付けられた近似形状データ（作成済みデータ）が近似形状モデルデータベース２２５に含まれている場合には、以下の処理を行う。すなわち、制御部２１は、上記同一である２以上の３次元モデルのうち近似形状データが対応付けられていない３次元モデルに対して、作成済みデータを複製して対応付けて近似形状モデルデータベース２２５に追加する。
【００９２】
プログラム実行部１０４は、オペレータの操作入力に応じて、ロボットプログラムの全部または一部を実行する機能を備える。
プログラム実行部１０４の機能を実現するために、タスクリストのうちいずれかのタスクを選択した状態でのボタンｂ１４１（「タスク内干渉チェック」）の操作、または、タスクリストのうち２以上のタスクを選択した状態でのボタンｂ１４２（「タスク間干渉チェック」）を選択する操作に応じて、通信インタフェース部２５を介してロボットプログラムをロボット制御装置３へ送信する。送信対象とするロボットプログラムの範囲は、タスクリストにおいて選択されたタスクに基づく。ロボット制御装置３の制御部３１は、ロボットプログラムを受信すると、ロボットプログラムを実行する。
【００９３】
状態情報算出部１０５は、プログラム実行部１０４による実行結果に基づいて、時間の経過に応じたロボットの状態を示す情報であるロボット状態データを演算する機能を備える。
【００９４】
状態情報算出部１０５の機能を実現するために、ロボット制御装置３の制御部３１は、情報処理装置２からロボットプログラムを実行し、ロボットプログラムの実行結果として、ロボット状態データを演算して順次、ストレージ３２に記録する。
ロボット状態データは、マニピュレータ５０のモデルを基に演算された時間の経過に応じたロボットの状態を示す物理量（例えば、所定の基準時間（例えば１ｍｓ）ごとの関節角、基準点の座標位置等）のデータである。
ロボットプログラムの実行が終了すると、制御部３１は、ストレージ３２から、時間軸に沿った所定の基準時間（例えば１ｍｓ）ごとのロボット状態データを読み出す。制御部３１は、読み出したロボット状態データを含む実行ログデータを、通信インタフェース部３３を介して情報処理装置２へ送信する。情報処理装置２の制御部２１は、ロボット制御装置３からロボット状態データを含む実行ログデータを取得すると、実行ログデータを実行ログデータベース２２４に記録する。
【００９５】
位置変更部１０６は、３次元データの前記仮想空間における位置の変更に伴って、当該３次元データに対応する近似形状データの前記仮想空間内の位置を変更する機能を備える。
位置変更部１０６の機能を実現するため、情報処理装置２の制御部２１は、実行ログデータベース２２４に記録した実行ログデータを読み出す。ＣＡＤソフトウェアは、実行ログデータベース２２４に記録した実行ログデータに含まれるロボット状態データ（例えば、所定の基準時間（例えば１ｍｓ）ごとの関節角、基準点の座標位置等）に基づき、仮想空間におけるロボットおよび部品の３次元モデルを動作させて表示する。このとき、３次元モデルに対応付けられた近似形状データの各球体に設定された局所座標を利用して各球体の位置の更新を逐次（例えば、干渉チェックを行う所定期間のタイミング毎に）行う。更新後の各球体の原点の位置は、前述したように、ロボット座標に対する隣接するリンク座標系間の同次変換行列Ｔ１，Ｔ２，Ｔ３，Ｔ４，Ｔ５，Ｔ６を用いて算出される。
【００９６】
干渉判定部１０７は、ロボットを動作させたときに、仮想空間内の１または複数の近似形状データの干渉が発生するか否かを判定する機能を備える。かかる判定機能には、タスク内干渉チェックとタスク間干渉チェックが含まれる。
タスク内干渉チェックは、タスクリストに含まれるいずれか１つのタスクを選択するオペレータの操作入力に基づいて、選択されたタスクをロボットが行ったときに当該タスク内に、ロボット、ワーク、および、周辺配置物の３次元モデルの干渉が仮想空間において発生するか否かを判定することである。
タスク間干渉チェックは、タスクリストに含まれるいずれか１つのタスクを選択するオペレータの操作入力に基づいて、選択された２つのタスク間のロボットの移動中に、ロボット、ワーク、および、周辺配置物の３次元モデルの干渉が仮想空間において発生するか否かを判定することである。
【００９７】
以下、干渉判定部１０７の機能を実現するための一例について、図１９のフローチャートを参照して説明する。図１９のフローチャートは、主として情報処理装置２の制御部２１によって実行される。
【００９８】
図１９に示すフローチャートにおいて、ロボットＲの基準点が１０ｍｍ移動する度にステップＳ１２以降の処理が行わる。ロボットＲの基準点が前回から１０ｍｍ移動した場合（ステップＳ１０：ＹＥＳ）、近似形状データの位置の更新を行う（ステップＳ１２）。近似形状データの位置の更新は、当該近似形状データを構成する１または複数の球体の原点をすべて更新することによって行われる。
【００９９】
次いで、制御部２１は、ロボットＲ同士、およびロボットＲと部品との干渉判定を総当りで行う。このとき、ロボットＲおよび部品の近似形状データとして、最も球体のサイズが大きいレベル１の近似形状データを用いて、干渉判定が行われる（ステップＳ１４）。干渉の有無は、図１３を参照して説明したように、干渉判定の対象となる２つの近似形状データからそれぞれ１つの球体に着目し、球体同士が干渉するか否かを、原点間の距離と、レベル１として予め設定されている各球体の半径の和との大小に基づいて行う。干渉判定の対象となる２つの近似形状データに対して着目する球体を順次変更し、総当りで球体同士が干渉するか否かを判定する。その結果、１つも球体同士が干渉しない場合には（ステップＳ１６：ＮＯ）、制御部２１は、２つの近似形状データが干渉しないと判断し（ステップＳ１８）、終了する。
【０１００】
ステップＳ１４のレベル１の近似形状データでの干渉チェックにおいて、ロボットＲ同士の組合せ、およびロボットＲと部品の組合せのうち、干渉が生じた組合せについては（ステップＳ１６：ＹＥＳ）、制御部２１は、球体のサイズがレベル１より小さいレベル２の近似形状データを用いて干渉判定を行う（ステップＳ２０）。球体のサイズが異なる点を除けば、干渉判定の処理は、ステップＳ１４と同じである。すなわち、制御部２１は、干渉判定の対象となる２つの近似形状データについて１つも球体同士が干渉しない場合には（ステップＳ２２：ＮＯ）、２つの近似形状データが干渉しないと判断し（ステップＳ１８）、終了する。
【０１０１】
ステップＳ２０のレベル２の近似形状データでの干渉チェックにおいて、ロボットＲ同士の組合せ、およびロボットＲと部品の組合せのうち、干渉が生じた組合せについては（ステップＳ２２：ＹＥＳ）、制御部２１は、球体のサイズがレベル２よりさらに小さいレベル３の近似形状データを用いて干渉判定を行う（ステップＳ２４）。球体のサイズが異なる点を除けば、干渉判定の処理は、ステップＳ１４と同じである。すなわち、制御部２１は、干渉判定の対象となる２つの近似形状データについて１つも球体同士が干渉しない場合には（ステップＳ２６：ＮＯ）、２つの近似形状データが干渉しないと判断し（ステップＳ１８）、終了する。
【０１０２】
ステップＳ２４のレベル３の近似形状データでの干渉チェックにおいて、ロボットＲ同士の組合せ、およびロボットＲと部品の組合せのうち、干渉が生じた組合せについては（ステップＳ２６：ＹＥＳ）、制御部２１は干渉があると判断して干渉判定結果のデータをストレージ２２に記録し（ステップＳ２８）、終了する。干渉判定結果のデータは、ロボットＲ、および／または、ロボットＲと部品における干渉した球体の位置のデータが含まれる。
図１９のフローチャートに示すように、好ましくは、干渉判定は、精度が低いレベル１の近似形状データから精度が高いレベル３の近似形状データを順に用いて、段階的に干渉判定が行われる。また、好ましくは、干渉チェックにおいて、干渉が生じた組合せのうち、干渉した球体のみを高精度のレベルの近似形状データとする。そのため、最初から精度が高いレベル３の近似形状データを用いて干渉判定を行う場合と比較して、干渉判定に要する演算負荷が低減される。
【０１０３】
以上説明したように、本実施形態の干渉判定装置１は、３次元モデルを基本形状の集合によって近似して得られる近似形状データが基礎となる３次元モデルに対応付けて管理するとともに、ロボットを動作させたときの仮想空間における近似形状データ同士の干渉判定を行う。すなわち、ＣＡＤソフトウェアの３次元モデルと近似形状データとがリンクしているため、いったん３次元モデルに対する近似形状データが作成されると、作成済みの近似形状データを他の同一の３次元モデルに適用することが可能となる。そのため、同一形状の複数のロボットまたは同一形状の複数の部品に対して近似形状データを作成する演算が１回で済み、演算時間が従来よりも大幅に短縮される。よって、本実施形態の干渉判定装置１によれば、ロボットの干渉判定を精度良く、かつ、より短時間で行うことが可能となる。
【０１０４】
本実施形態の干渉判定装置１では、タスクリストに含まれる複数のタスクのうちいずれか１つのタスクのオペレータのよる選択に基づき、選択されたタスクについてのタスク内干渉チェックが実行可能となるように構成される。そのため、ロボットの全体作業の中でロボットの要素作業であるタスク単位での干渉チェックが可能となることから、ロボットの教示作業を効率的に支援することができる。
【０１０５】
本実施形態の干渉判定装置１では、タスクリストに含まれる２以上のタスクのオペレータのよる選択に基づき、選択された２以上のタスクのタスク間干渉チェックが実行可能となるように構成される。そのため、ロボットの全体作業の中でロボットの２つのタスクの間の干渉チェックが可能となることから、タスク間移動におけるロボットの教示作業を効率的に支援することができる。
【０１０６】
以上、本発明の干渉判定装置の実施形態について詳述したが、本発明は上記の実施形態に限定されない。また、上記の実施形態は、本発明の主旨を逸脱しない範囲において、種々の改良や変更が可能である。
例えば、上記実施形態では、３次元モデルを基本形状の集合によって近似する際に基本形状が球体である場合について例示したが、その限りではない。基本形状として、立方体あるいは直方体を適用してもよい。
【０１０７】
上述した説明により、図１８の機能ブロック図に記載された機能のうち少なくとも一部の機能をコンピュータに実現させるためのプログラム、および、当該プログラムが記録されたコンピュータ可読記憶媒体（不揮発性の記憶媒体をも含む。）が開示されていることは当業者に理解される。
【符号の説明】
【０１０８】
１…干渉判定装置、２…情報処理装置、２１…制御部、２２…ストレージ、２３…入力装置、２４…表示装置、２５…通信インタフェース部、３…ロボット制御装置、３１…制御部、３２…ストレージ、３３…通信インタフェース部、１１…ペントレイ、Ｐ…ペン群、１２…キャップトレイ、Ｃ…キャップ群、１３…治具、１４…製品トレイ、Ａ１〜Ａ１２…製品、ＥＣ…イーサネットケーブル、ＷＣ…ケーブル、Ｒ…ロボット、５１…アーム、５２…ハンド、６１〜６８…ノード、１０１…表示制御部、１０２…データ作成部、１０３…関連付け部、１０４…プログラム実行部、１０５…状態情報算出部、１０６…位置変更部、１０７…干渉判定部、２２１…ロボットプログラム、２２２…階層型リストデータベース、２２３…３次元モデルデータベース、２２４…実行ログデータベース、２２５…近似形状モデルデータベース、ＲＡ…ロボット領域、ＰＡ…パーツ領域、Ｗ１〜Ｗ６…ウィンドウ、ｂ１〜ｂ８…ボタン、ＡＰ…アプローチ点、ＴＰ…目標点、ＤＰ…デパーチャ点、ＴＬ…テーブル、Ｔ…タスク、Ｍ…モーション名称、Ｃｂ１，Ｃｂ２…球体、Ｏ１，Ｏ２…原点
【図１】
2019171500.tif 000003
【図２】
2019171500.tif 000004
【図３】
2019171500.tif 000005
【図４】
2019171500.tif 000006
【図５】
2019171500.tif 000007
【図６】
2019171500.tif 000008
【図７】
2019171500.tif 000009
【図８】
2019171500.tif 000010
【図９】
2019171500.tif 000011
【図１０】
2019171500.tif 000012
【図１１】
2019171500.tif 000013
【図１２】
2019171500.tif 000014
【図１３】
2019171500.tif 000015
【図１４】
2019171500.tif 000016
【図１５】
2019171500.tif 000017
【図１６】
2019171500.tif 000018
【図１７】
2019171500.tif 000019
【図１８】
2019171500.tif 000020
【図１９】
2019171500.tif 000021