特開2019-171499(P2019-171499A)IP Force 特許公報掲載プロジェクト 2015.5.11 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電産株式会社の特許一覧
特開2019-171499ロボットの干渉判定装置、ロボットの干渉判定方法、プログラム
<>
  • 特開2019171499-ロボットの干渉判定装置、ロボットの干渉判定方法、プログラム 図000003
  • 特開2019171499-ロボットの干渉判定装置、ロボットの干渉判定方法、プログラム 図000004
  • 特開2019171499-ロボットの干渉判定装置、ロボットの干渉判定方法、プログラム 図000005
  • 特開2019171499-ロボットの干渉判定装置、ロボットの干渉判定方法、プログラム 図000006
  • 特開2019171499-ロボットの干渉判定装置、ロボットの干渉判定方法、プログラム 図000007
  • 特開2019171499-ロボットの干渉判定装置、ロボットの干渉判定方法、プログラム 図000008
  • 特開2019171499-ロボットの干渉判定装置、ロボットの干渉判定方法、プログラム 図000009
  • 特開2019171499-ロボットの干渉判定装置、ロボットの干渉判定方法、プログラム 図000010
  • 特開2019171499-ロボットの干渉判定装置、ロボットの干渉判定方法、プログラム 図000011
  • 特開2019171499-ロボットの干渉判定装置、ロボットの干渉判定方法、プログラム 図000012
  • 特開2019171499-ロボットの干渉判定装置、ロボットの干渉判定方法、プログラム 図000013
  • 特開2019171499-ロボットの干渉判定装置、ロボットの干渉判定方法、プログラム 図000014
  • 特開2019171499-ロボットの干渉判定装置、ロボットの干渉判定方法、プログラム 図000015
  • 特開2019171499-ロボットの干渉判定装置、ロボットの干渉判定方法、プログラム 図000016
  • 特開2019171499-ロボットの干渉判定装置、ロボットの干渉判定方法、プログラム 図000017
  • 特開2019171499-ロボットの干渉判定装置、ロボットの干渉判定方法、プログラム 図000018
  • 特開2019171499-ロボットの干渉判定装置、ロボットの干渉判定方法、プログラム 図000019
  • 特開2019171499-ロボットの干渉判定装置、ロボットの干渉判定方法、プログラム 図000020
  • 特開2019171499-ロボットの干渉判定装置、ロボットの干渉判定方法、プログラム 図000021
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】特開2019-171499(P2019-171499A)
(43)【公開日】2019年10月10日
(54)【発明の名称】ロボットの干渉判定装置、ロボットの干渉判定方法、プログラム
(51)【国際特許分類】
   B25J 19/06 20060101AFI20190913BHJP
   G05B 19/4069 20060101ALI20190913BHJP
【FI】
   B25J19/06
   G05B19/4069
【審査請求】未請求
【請求項の数】7
【出願形態】OL
【全頁数】26
(21)【出願番号】特願2018-60191(P2018-60191)
(22)【出願日】2018年3月27日
(71)【出願人】
【識別番号】000232302
【氏名又は名称】日本電産株式会社
(74)【代理人】
【識別番号】110000165
【氏名又は名称】グローバル・アイピー東京特許業務法人
(72)【発明者】
【氏名】ドアン ナット タン
(72)【発明者】
【氏名】吉田 昌弘
(72)【発明者】
【氏名】常田 晴弘
(72)【発明者】
【氏名】小菅 昌克
(72)【発明者】
【氏名】浪越 孝宏
【テーマコード(参考)】
3C269
3C707
【Fターム(参考)】
3C269AB33
3C269BB14
3C269EF39
3C269QE10
3C269SA15
3C707AS06
3C707JS03
3C707LS09
3C707LS11
3C707LS20
3C707LV14
3C707MS08
(57)【要約】
【課題】ロボットの干渉判定を精度良く、かつ、より短時間で行う。
【解決手段】本発明の一実施形態は、ロボット、ロボットの作業対象となるワーク、および、前記ロボットの周辺に配置される周辺配置物のうち少なくともいずれかの3次元データを記憶する第1記憶部と、第1記憶部に記憶される3次元データを基本形状の集合によって近似した近似形状データを作成するデータ作成部と、データ作成部によって作成された近似形状データを、当該近似形状データの基礎となる3次元データに対応付けて記憶する第2記憶部と、3次元データ、またはデータ作成部によって作成された近似形状データを、仮想空間内に配置して表示装置に表示させる表示制御部と、ロボットを動作させたときに、仮想空間内の1または複数の近似形状データの干渉が発生するか否かを判定する干渉判定部と、を備えた、ロボットの干渉判定装置である。
【選択図】図9
【特許請求の範囲】
【請求項1】
ロボット、前記ロボットの作業対象となるワーク、および、前記ロボットの周辺に配置される周辺配置物のうち少なくともいずれかの3次元データを記憶する第1記憶部と、
前記第1記憶部に記憶される3次元データを基本形状の集合によって近似した近似形状データを作成するデータ作成部と、
前記データ作成部によって作成された近似形状データを、当該近似形状データの基礎となる3次元データに対応付けて記憶する第2記憶部と、
前記3次元データ、または前記データ作成部によって作成された近似形状データを、仮想空間内に配置して表示装置に表示させる表示制御部と、
前記ロボットを動作させたときに、前記仮想空間内の1または複数の前記近似形状データの干渉が発生するか否かを判定する干渉判定部と、
を備えた、ロボットの干渉判定装置。
【請求項2】
同一である2以上の3次元データが前記第1記憶部に記憶され、かつ前記2以上の3次元データのうちいずれかの3次元データに対応して前記第2記憶部に近似形状データが記憶されている場合、当該近似形状データを前記2以上の3次元データのうち他の3次元データに関連付ける関連付け部、をさらに備えた、
請求項1に記載された、ロボットの干渉判定装置。
【請求項3】
前記データ作成部は、前記3次元データに対応して、前記基本形状のサイズが異なる複数の近似形状データを作成する、
請求項1または2に記載された、ロボットの干渉判定装置。
【請求項4】
3次元データの前記仮想空間における位置の変更に伴って、当該3次元データに対応する近似形状データの前記仮想空間内の位置を変更する位置変更部を備えた、
請求項1から3のいずれか1項に記載された、ロボットの干渉判定装置。
【請求項5】
前記基本形状は球体であって、
前記データ作成部は、3次元データの外表面を覆うように1または複数の前記球体を配置することで当該3次元データの近似形状データを作成する、
請求項1から4のいずれか1項に記載された、ロボットの干渉判定装置。
【請求項6】
ロボット、前記ロボットの作業対象となるワーク、および、前記ロボットの周辺に配置される周辺配置物のうち少なくともいずれかの3次元データを基本形状の集合によって近似した近似形状データを作成し、
前記作成された近似形状データを、当該近似形状データの基礎となる3次元データに対応付けて記憶装置に記憶し、
前記3次元データ、または前記作成された近似形状データを、仮想空間内に配置して表示装置に表示させ、
前記ロボットを動作させたときに、前記仮想空間内の1または複数の前記近似形状データの干渉が発生するか否かを判定する、
ロボットの干渉判定方法。
【請求項7】
コンピュータに、
ロボット、前記ロボットの作業対象となるワーク、および、前記ロボットの周辺に配置される周辺配置物のうち少なくともいずれかの3次元データを基本形状の集合によって近似した近似形状データを作成する手順、
前記作成された近似形状データを、当該近似形状データの基礎となる3次元データに対応付けて記憶装置に記憶する手順、
前記3次元データ、または前記作成された近似形状データを、仮想空間内に配置して表示装置に表示させる手順、
前記ロボットを動作させたときに、前記仮想空間内の1または複数の前記近似形状データの干渉が発生するか否かを判定する手順、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ロボットの干渉判定装置、ロボットの干渉判定方法、および、プログラムに関する。
【背景技術】
【0002】
ロボットが動作したときに、ロボット同士、またはロボットと周辺部品との間の干渉の有無をシミュレーションで判定する干渉判定装置が知られている。
例えば特許文献1には、干渉チェックの対象であるモデル化対象に設定する幾何的モデルの上限数が入力されるモデル数上限入力部と、モデル化対象を包含できる直方体を新たな幾何的モデルに置き換えることによってモデル化対象をモデル化するモデル化処理部と、上記新たな幾何的モデルを用いたモデルをモデル候補として記憶しておくモデル候補記憶部と、モデル候補の中から、設定された演算上限量以下で干渉チェックの計算処理を実行できるモデル候補を抽出するとともに、抽出したモデル候補の中からモデルの包含体積が最も小さいモデル候補をモデル化対象のモデルに決定する体積モデル決定部と、を備えた干渉チェック装置が記載されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特許第5872077号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかし、引用文献1に記載されている干渉チェック装置は、複雑なモデル化処理を行っているため、モデル化処理時間が長くかかることから、干渉チェックの処理時間も長くなる虞がある。
【0005】
そこで、本発明は、ロボットの干渉判定を精度良く、かつ、より短時間で行うことを目的とする。
【課題を解決するための手段】
【0006】
本願の例示的な第1発明は、ロボット、前記ロボットの作業対象となるワーク、および、前記ロボットの周辺に配置される周辺配置物のうち少なくともいずれかの3次元データを記憶する第1記憶部と、前記第1記憶部に記憶される3次元データを基本形状の集合によって近似した近似形状データを作成するデータ作成部と、前記データ作成部によって作成された近似形状データを、当該近似形状データの基礎となる3次元データに対応付けて記憶する第2記憶部と、前記3次元データ、または前記データ作成部によって作成された近似形状データを、仮想空間内に配置して表示装置に表示させる表示制御部と、前記ロボットを動作させたときに、前記仮想空間内の1または複数の前記近似形状データの干渉が発生するか否かを判定する干渉判定部と、を備えた、ロボットの干渉判定装置である。
【発明の効果】
【0007】
本発明によれば、ロボットの干渉判定を精度良く、かつ、より短時間で行うことができる。
【図面の簡単な説明】
【0008】
図1図1は、実施形態の干渉判定装置の全体構成について示す図である。
図2図2は、実施形態の干渉判定装置に含まれる各装置のハードウェア構成を示す図である。
図3図3は、実施形態の一例に係る3次元CAD用ウィンドウを示す図である。
図4図4は、実施形態の一例に係る教示用ウィンドウを示す図である。
図5図5は、ジョブを概念的に説明するための図である。
図6図6は、タスクを概念的に説明するための図である。
図7図7は、実施形態の一例に係る教示用ウィンドウの遷移を示す図である。
図8図8は、タスクリストの表示例を示す図である。
図9図9は、タスクリストの表示例を示す図である。
図10図10は、ロボットの3次元モデルと異なるレベルの近似形状データとを例示する図である。
図11図11は、ロボットおよび部品のデータ構成を概念的に示す図である。
図12図12は、実施形態の一例に係る教示用ウィンドウの遷移を示す図である。
図13図13は、球体同士の干渉判定方法について説明する図である。
図14図14は、ロボットの3次元モデルと部品とが干渉する場合の表示態様を例示する図である。
図15図15は、タスクリストの表示例を示す図である。
図16図16は、実施形態の一例に係る教示用ウィンドウの遷移を示す図である。
図17図17は、タスク間干渉チェックの判定結果の表示例を示す図である。
図18図18は、実施形態に係る干渉判定装置の機能ブロック図である。
図19図19は、実施形態に係る干渉判定のフローチャートの一例である。
【発明を実施するための形態】
【0009】
以下、本発明のロボットの干渉判定装置の実施形態について説明する。
以下の説明において、ロボットの要素作業を「タスク」という。ロボットの要素作業とは、物体を「取る」や「置く」等、一連の作業の中でロボットが行う最小単位の作業を意味する。
「部品」とは、ロボットの作業の対象となる物体を意味し、ロボットが把持する物体(例えば、工場内のワーク)に限らず、ロボットの周辺に配置される周辺配置物(例えば、ロボットが把持する物体を置く棚)をも含む。
ロボットの「基準点」は、後述するロボットのアプローチ点、目標点、デパーチャ点等のロボットの教示点の基準となるロボットの位置を意味し、例えばロボットの作用点(TCP:Tool Center Point)である。
【0010】
ロボットの干渉判定装置は、ロボット自体の干渉(例えば、ハンドとアームの干渉)、あるいはロボットと部品との干渉の有無をシミュレーションによって判定する装置である。ロボットの干渉判定装置によって、ロボットの実機に接続しないオフラインティーチングを支援することができる。
【0011】
(1)本実施形態に係る干渉判定装置の構成
以下、本実施形態の干渉判定装置1の構成について、図1および図2を参照して説明する。図1は、本実施形態の干渉判定装置1の全体構成について示す図である。図2は、本実施形態の干渉判定装置1に含まれる各装置のハードウェア構成を示す図である。
【0012】
図1に示すように、干渉判定装置1は、情報処理装置2およびロボット制御装置3を備える。情報処理装置2とロボット制御装置3とは、例えばイーサネット(登録商標)ケーブルECにより通信可能に接続される。
情報処理装置2は、工場のラインに設置されたロボットに対して動作を教示するための装置である。情報処理装置2は、オペレータによるオフラインティーチングを行うために設けられており、例えばロボットが設置される工場から離れた位置(例えば、オペレータの作業場所)に配置される。
【0013】
ロボット制御装置3は、情報処理装置2から送信されるロボットプログラムを実行する。本実施形態ではロボット制御装置3はロボットと接続されないが、ロボットと接続された場合には、ロボットプログラムの実行結果に応じた制御パルスをロボットに送り、ロボットを動作させることが可能である。そのため、ロボット制御装置3は、好ましくはロボットの実機の近傍に配置される。
【0014】
図2に示すように、情報処理装置2は、制御部21と、ストレージ22と、入力装置23と、表示装置24と、通信インタフェース部25とを備える。
制御部21は、CPU(Central Processing Unit)、ROM(Read Only Memory)、および、RAM(Random Access Memory)を含む。ROMには、3次元CADアプリケーションプログラムと教示ソフトウェアが記憶されている。CPUは、ROM上の3次元CADアプリケーションソフトウェア(以下、適宜「CADソフトウェア」という。)と教示ソフトウェアをRAMに展開して実行する。教示ソフトウェアとCADソフトウェアは、API(Application Program Interface)を介して協調して処理を実行する。
制御部21は、CADソフトウェアによる動画再生を行うために、フレーム単位で画像を連続的に表示装置24に表示させる。
【0015】
ストレージ22は、HDD(Hard Disk Drive)あるいはSSD(Solid State Drive)等の大容量記憶装置であり、制御部21のCPUにより逐次アクセス可能に構成されている。後述するように、ストレージ22には、ロボットプログラム221、階層型リストデータベース222、3次元モデルデータベース223、実行ログデータベース224、および、近似形状モデルデータベース225が格納される。
階層型リストデータベース222には、後述する階層型リストを構成するデータが含まれる。
3次元モデルデータベース223には、CADソフトウェアを実行するときに参照される3次元モデルのデータが含まれる。本実施形態の例では、3次元モデルデータベース223には、ロボットおよび部品(例えば、後述するペン、キャップ、製品、ペントレイ、キャップトレイ、製品トレイ)の3次元モデルのデータが含まれる。
実行ログデータベース224には、ロボット制御装置3から取得した実行ログデータが含まれる。実行ログデータは、ロボットプログラムの実行結果と、後述するロボット状態データとを含む。ロボット状態データは、3次元CADによってロボットの動作を仮想空間内で動画(アニメーション)により再現するため、および、後述する干渉判定を行うために使用される。
近似形状モデルデータベース225には、近似形状データが当該近似形状データの基礎となる3次元モデル(3次元データの一例)に対応付けられている。近似形状データは、後述するように、3次元モデルを基本形状の集合によって近似したデータである。
ストレージ22は、第1記憶部と第2記憶部の一例である。
【0016】
入力装置23は、オペレータによる操作入力を受け付けるためのデバイスであり、ポインティングデバイスを含む。
表示装置24は、教示ソフトウェアおよびCADソフトウェアの実行結果を表示するためのデバイスであり、表示駆動回路および表示パネルを含む。
通信インタフェース部25は、ロボット制御装置3との間でイーサネット通信を行うための通信回路を含む。
【0017】
ロボット制御装置3は、制御部31と、ストレージ32と、通信インタフェース部33とを備える。
制御部31は、CPU、ROM、RAM、および、制御回路を含む。制御部31は、情報処理装置2から受信するロボットプログラムを実行し、実行ログデータを出力する。上述したように、実行ログデータには、ロボットプログラムの実行結果と、ロボットプログラムに記述された作業を実行するロボットのロボット状態データとを含む。
ストレージ32は、ロボットのマニピュレータ(アーム51、ハンド52を含むロボット本体)のモデルのデータ(例えばリンクパラメータ等)を備えている。制御部31は、ロボットプログラムの実行結果に基づいて、マニピュレータを構成する各部のジョブを実行中の時間の経過に応じた物理量(例えば、所定の基準時間(例えば1ms)ごとの関節角、基準点の座標位置等のデータ)を演算する。かかる物理量のデータが上記ロボット状態データに含まれる。
【0018】
ストレージ32は、HDDあるいはSSD等の大容量記憶装置であり、制御部31のCPUにより逐次アクセス可能に構成されている。ストレージ32には、ロボットのマニピュレータのモデルのデータの他に、情報処理装置2から送信されるロボットプログラムと、実行ログデータとが格納される。
通信インタフェース部33は、情報処理装置2との間でイーサネット通信を行うための通信回路を含む。
【0019】
(2)オフラインティーチングにおけるユーザインタフェース
ロボットのシミュレーションを実行する前に、オペレータは、情報処理装置2を使用して、ロボットに対するオフラインティーチングを行い、ロボットプログラムを作成する。ロボットプログラムを作成するに当たって、本実施形態の好ましい例では、CADソフトウェアと教示ソフトウェアを情報処理装置2に実行させる。
CADソフトウェアの実行結果はCAD用ウィンドウに表示され、教示ソフトウェアの実行結果は教示用ウィンドウに表示される。オペレータは、CAD用ウィンドウと教示用ウィンドウの両方を情報処理装置2に表示させ、あるいはCAD用ウィンドウと教示用ウィンドウを切り替えながら情報処理装置2に表示させ、ティーチングやCADによる動画再生に関連する操作を行う。
【0020】
図3に、本実施形態の一例に係るCAD用ウィンドウW1を示す。図3には、テーブルTLの上に、ロボットRと、ペントレイ11と、キャップトレイ12と、治具13と、製品トレイ14とが、仮想空間に配置された状態の画像(以下、適宜「CAD画像」という。)が表示されている。
図3に示す例では、ロボットRがペンにキャップを嵌めて製品(ペンにキャップが嵌められた状態の完成品)を組み立てる一連の作業を行うことが想定されている。ペントレイ11には複数のペンからなるペン群Pが配置され、キャップトレイ12には複数のキャップからなるキャップ群Cが配置されている。治具13は、ロボットRがペンを一時的に配置してキャップを嵌める作業を行うための部材である。製品トレイ14は、製品を置くための部材である。
【0021】
図3に示す例では、ペン群Pに含まれる各ペン、キャップ群Cに含まれる各キャップ、ペントレイ11、キャップトレイ12、治具13、製品トレイ14の各々は、ロボットRの作業対象である部品の例である。また、ペンにキャップが嵌められた製品も部品の例である。
各ペン、各キャップ、および、ペンにキャップが嵌められた製品は、それぞれワークの一例である。ペントレイ11、キャップトレイ12、治具13、および、製品トレイ14は、それぞれ周辺配置物の一例である。
【0022】
(2−1)階層型リスト
図4に、本実施形態の一例に係る教示用ウィンドウW2を示す。教示用ウィンドウW2に表示されているのは、図3のCAD画像に含まれているロボットR、および、部品の階層関係を示す階層型リストである。
【0023】
教示ソフトウェアは、CADソフトウェアと連携して階層型リストを作成することができる。階層型リストとして木構造のデータフォーマットが教示ソフトウェアによって用意される。オペレータは、CAD用ウィンドウと教示用ウィンドウを表示させた状態で、CAD画像内のロボットRおよび部品をポインティングデバイスで選択した状態で上記木構造のデータフォーマットの所望のノードまでドラッグする操作を行う。この操作を、ロボットRの教示を行うのに必要となるすべての部品に対して順に行うことで、階層型リストを完成させることができる。階層型リストに表示される各ノードの名称は、元となる3次元モデルの名称がそのまま適用されてもよいが、後で名称を変更できるようにしてもよい。
【0024】
以下の説明では、CAD画像内のロボットR、部品を階層型リストのいずれかのノードに含めるようにすることを、ロボットR又は部品を「階層型リストに登録する」という。図3では、ロボットが1体である場合のCAD画像を例示しているが、ロボットが2体以上存在する場合には、当該2体以上のロボットを階層型リストに登録することができる。
【0025】
図4に示す階層型リストにおいて、ロボットR(Robot_R)のノードの下層には、ハンドに関連する3個のノードが設けられている。ハンドに対して複数のノードを設けているのは、ハンドに想定される作業状態を考慮するためである。すなわち、ノード61〜63は、以下の内容を意味する。
【0026】
・ノード61(Pen)…ペンを把持する作業に対応したハンド
・ノード62(Cap)…キャップを把持する作業に対応したハンド
・ノード63(Pen_with_Cap)…キャップが嵌められたペンを把持する作業に対応したハンド
【0027】
ノード61〜63のいずれかを対象として右クリック操作を行い、「ハンドシーケンス操作」を選択すると、アクチュエーション方式(シングルソレノイド、又はダブルソレノイド等)、センサ種類などのハンドシーケンスに関連する設定を行うことができる。
ハンドシーケンスは、ロボットRのハンド52が把持する部品に依存するため、ハンド52が把持する部品ごとに設定される。ハンドシーケンスが設定されていない場合に後述するタスクを作成した場合には、タスクに基づくプログラムを実行できないため、表示装置24に警告表示を出力してもよい。
【0028】
部品の構成要素には、治具(JIG)、ペントレイ(PenTray)、キャップトレイ(CapTray)、製品トレイ(ProductTray)、ペン(Pen1, Pen2,…,Pen12)、キャップ(Cap1, Cap2,…,Cap12)、および、製品(PenProduct1, PenProduct2,…,PenProduct12)が含まれる。
治具(JIG)のノードの下位には、治具を対象とした作業に対応して、例えば、以下のノードが設けられる。
【0029】
・ノード64(PenProduct)…製品(PenProduct)を保持した状態の治具
・ノード65(PenJ)…ペン(Pen)を保持した状態の治具
・ノード66(CapJ)…キャップ(Cap)を保持した状態の治具
【0030】
ペントレイ(PenTray)のノードの下位には、ペンPen1, Pen2,…,Pen12に対応する各ノードが設けられる。キャップトレイ(CapTray)のノードの下位には、キャップCap1, Cap2,…,Cap12に対応する各ノードが設けられる。製品トレイ(ProductTray)のノードの下位には、製品PenProduct1, PenProduct2,…,PenProduct12に対応する各ノードが設けられる。
【0031】
階層型リストの中のロボットR(図4のRobot_R)、および部品(治具(JIG)、ペントレイ(PenTray)、キャップトレイ(CapTray)、製品トレイ(ProductTray)、ペンPen1, Pen2,…,Pen12、キャップCap1, Cap2,…,Cap12、および、製品PenProduct1, PenProduct2,…,PenProduct12)の各ノードは、各々に対応する3次元モデルのデータと関連付けられた状態となっている。そのため、階層型リストを作成後に階層型リスト内のロボットRおよび部品の3次元モデルに変更があった場合であっても、階層型リストに再度登録する必要はない。
【0032】
(2−2)ジョブおよびタスクについて
次に、ジョブおよびタスクについて、図5および図6を参照して説明する。
図5は、ジョブを概念的に説明するための図である。図6は、タスクを概念的に説明するための図である。
【0033】
ジョブとは、ロボットRが行う一連の作業である。タスクとは、前述したように一連の作業の中でロボットRが行う最小単位の作業である要素作業を意味する。従って、図5に示すように、ジョブ(JOB)に相当する期間には、複数のタスクT,T,…,Tn−1,Tに対応する期間と、ロボットRのタスク間の移動(以下、適宜「タスク間移動」という。)と、が含まれる。図5に示すように、本実施形態では、ロボットRが行うジョブに対して複数のタスクが定義される。
【0034】
各タスクには、複数のモーション(「ロボットRの動き」を意味する。)M〜Mが含まれる。タスクには、モーションの他、ハンドシーケンス(HS)が含まれてもよい。ハンドシーケンスは、ロボットRのハンド52による部品の把持についての一連の処理である。隣接するモーションの間には、後述するインターロック等による待機時間WTが設定される場合がある。
【0035】
図6において、矢印付きの線は、ロボットRのハンド52の軌跡を概念的に示している。当該軌跡は、タスクの目標点TPに到達する前の通過点であるアプローチ点AP1,AP2と、目標点TPと、目標点TPに到達した後の通過点であるデパーチャ点DP1,DP2とを含む。目標点TPは、タスクの対象である部品の位置を示している。
【0036】
図6に示す例では、アプローチ点AP1に到達する前のロボットRの動作が、タスク間の移動(つまり、前のタスクと図6に示すタスクとの間の移動)に相当する。デパーチャ点DP2から後のロボットRの動作が、タスク間の移動(つまり、図6に示すタスクと次のタスクとの間の移動)に相当する。アプローチ点AP1からデパーチャ点DP2までのロボットRの動作が1つのタスクに対応し、当該タスク内において隣接する点間のロボットRの動きが1つのモーションに相当する。
タスクを実行させるロボットプログラムには、タスクの内容に関する情報のほか、目標点TP、アプローチ点AP、およびデパーチャ点DPのうち少なくともいずれかの点に関する情報が含まれうる。
【0037】
図6では、アプローチ点AP1,AP2においてそれぞれインターロックIL1,IL2が設定されている場合が例示されている。インターロックは、他のロボット等との干渉を回避するために、所定の信号が入力されるまで、目標点TP、アプローチ点AP、およびデパーチャ点DPの少なくともいずれかの点においてロボットRの動作を待機させる処理である。
タスクには、インターロックを設定する点と、インターロックによる待機時間のタイムアウト値とを含むインターロック設定に関する情報を含んでもよい。
【0038】
(2−3)タスクに対応するロボットプログラムの作成
次に、階層型リストを用いたタスクに対応するロボットプログラム(以下、適宜「タスクプログラム」という。)の作成方法について、図4および図7を参照して説明する。図7は、本実施形態の一例に係る教示用ウィンドウの遷移を示す図である。
図4に示す階層型リストにおいてタスクプログラムを作成するには、先ず、ロボット領域RAに含まれるロボットR(Robot_R)のハンド(Hand)のノード61〜63のうちいずれかのノードを、オペレータがポインティングデバイスで選択して右クリック操作を行い、「タスク作成」を選択する。すなわち、ノードの選択は、オペレータの操作入力に基づいて、タスクにおけるロボットRのハンドの把持対象から選択される。
【0039】
「タスク作成」が選択されると、図7のタスクプログラム作成のための教示用ウィンドウW3が表示される。教示用ウィンドウW3はタスクの詳細設定を行うための画面であり、タスク名称(Name)と、タスクの種別(Function)、タスクの目標物(Target)の各項目が表示される。ここで、階層型リストのパーツ領域PAの中からいずれかの部品に対応するノードをポインティングデバイスで左クリックすることで、教示用ウィンドウW3の目標物(Target)の項目に、左クリックにより選択された部品が入力される。タスクの種別(Function)の欄には、予め設定された複数の種類のタスクの種別(例えば、取る(Pick up)、置く(Place)等)の候補からなるプルダウンメニューの中からいずれかのタスクの種別を選択できるように構成されている。
【0040】
次いで、階層型リストのパーツ領域PAの中から作業対象となる部品をポインティングデバイスで選択して左クリック操作を行うことにより、教示用ウィンドウW3の目標物(Target)の項目に、選択された部品が入力される。
タスクの種別(Function)と目標物(Target)の各項目についてデータが入力されると、当該データに基づいて、タスクの名称(Name)が自動的に決定されて表示される。
【0041】
例えば、ロボットRのハンドが何も把持していない状態において、「ペントレイからペンPen1を取る」というタスクを作成するには、図4に示す階層型リストのロボット領域RA内のノード61を、オペレータはポインティングデバイスで右クリックしてから「タスク作成」を選択する。次いで、階層型リストのパーツ領域PAの中からペントレイ(PenTray)に対応するノード67を対象としてポインティングデバイスで左クリック操作を行うことで教示用ウィンドウW3の目標物(Target)の項目に、ペントレイ(PenTray)が入力される。タスクの種別(Function)の欄では、複数のタスクの種別の候補の中から「取る(Pick up)」を選択する。そして、階層型リストのパーツ領域PAの中から作業対象となるペンPen1に対応するノード68を対象としてポインティングデバイスで左クリック操作を行うことで、図7に示す教示用ウィンドウW3が表示される。
【0042】
以上の操作の結果、「ペントレイからペンPen1を取る」というタスクに対応して、“Pickup_Pen1_From_PenTray”という名称のタスクプログラムが作成される。
本実施形態では、要素作業の対象となる部品(ここでは「ペンPen1」)と、要素作業の始点(例えば「ペントレイ」)若しくは終点とを階層型リスト上で指定することで、オペレータは直感的にタスクプログラムを作成することができる。また、タスクプログラムの名称は、タスクの作業内容(例えば「Pickup」)と、タスクの作業対象(例えば「ペンPen1」)と、タスクの始点となる部品(例えば「ペントレイ」)、又は終点となる部品とを含むように自動的に作成されるため、タスクプログラムの名称からタスクの内容が直ちに分かるようになっている。
【0043】
タスクプログラムを作成する際に、タスクに含まれるアプローチ点AP、目標点TP、および、デパーチャ点DPについての情報が自動的に作成されてもよい。あるいは、オペレータが教示用ウィンドウW3のボタンb1(「詳細設定」)を操作し、1又は複数のアプローチ点及び/又はデパーチャ点を設定してもよい。自動的にアプローチ点AP、目標点TP、および、デパーチャ点DPを作成する場合、部品の重心を目標点TPとして設定し、部品の重心を基準とした部品のローカル座標系において所定の軸上(例えばZ軸上)にアプローチ点APおよびデパーチャ点DPを設定してもよい。
【0044】
図7を参照すると、教示用ウィンドウW3のボタンb1(「詳細設定」)を操作することで、オペレータは、「アプローチ点、デパーチャ点設定」のほか、「モーションパラメータ設定」および「インターロック設定」のいずれかを選択することができる。
モーションパラメータとは、タスクに含まれる隣接するアプローチ点AP間、アプローチ点APから目標点TPまでの間、および、目標点TPからデパーチャ点DPまでの間のロボットRのハンド52等の動きに関するパラメータである。例えば、かかるパラメータとして、移動速度、加速度、加速時間、減速時間、ロボットRの姿勢等が挙げられる。「モーションパラメータ設定」を選択することで、上記モーションパラメータをデフォルト値から変更することができる。
「インターロック設定」を選択することで、インターロックの待機時間のタイムアウト値と、待機時間がタイムアウト値を超えてエラーと判断したときの動作の設定とを、デフォルト値から変更することができる。
【0045】
図7の教示用ウィンドウW3には、ボタンb2(「作成」)が設けられている。ボタンb2(「作成」)が操作されることで、教示用ウィンドウW3によって設定されたタスクが後述するタスクリストに登録される。
【0046】
(2−4)タスクに基づくプログラムの作成
例えば、図6に示すタスクに対応するタスクプログラムは、以下の複数の関数からなり、各関数は、ロボットRに対応するモーションを実行させるためのプログラム(以下、適宜「モーションプログラム」という。)によって記述されている。
なお、以下のmove(AP1)は、タスク間の移動として別に定義されてもよい。
【0047】
・move(AP1) …アプローチ点AP1までの移動
・interlock(IL1)…アプローチ点AP1でインターロック(IL1)による待機
・move(AP2)…アプローチ点AP2までの移動
・interlock(IL2)…アプローチ点AP2でインターロック(IL2)による待機
・move(TP)…目標点TPまでの移動
・handSequence()…ハンドシーケンス処理
・move(DP1)…デパーチャ点DP1までの移動
・move(DP2)…デパーチャ点DP2までの移動
なお、interlock(IL1)およびinterlock(IL2)の関数において、タスクごとの動作確認を行う場合、プログラムは作成されるが、インターロックによる待機時間のタイムアウト値が無効となっている。
【0048】
(2−5)タスクリスト
タスクリストとは、ロボットRが行うジョブに含まれる複数のタスクを含む情報であり、複数のタスクの各々に対応するタスクプログラムの名称の一覧の情報である。特定のジョブを対象として教示用ウィンドウW3によって定義されたタスクは、順次、当該ジョブに対応するタスクリストに登録されていく。タスクリストに含まれる複数のタスクの順序は、当該複数のタスクの実行順序を示していることが、ジョブを管理する上で好ましい。
【0049】
図8の教示用ウィンドウW4は、「ペンにキャップを嵌めて製品を組み立てる」という一連の作業であるジョブ(「Pen Assembly」)に対応するタスクリストの一例を表示する。このタスクリストの一例は、以下の(i)〜(vi)の6個のタスクを含む。この場合、タスクプログラム作成のための教示用ウィンドウW3によって、括弧内に表された名称のタスクプログラムが作成された場合を示している。
(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)
【0050】
オペレータは、タスクリストにおいて、いずれかのタスクをポインティングデバイスで選択した状態でドラッグ操作を行うことで、選択されたタスクをタスクリスト中の任意の順序に設定することができる。
【0051】
図8に示すように、タスクリストのいずれかのタスクをポインティングデバイスで選択した状態で右クリックを行うと、「タスク編集」、「タスク追加」、「タスク削除」のいずれかの処理を選択できる。ここで、「タスク編集」が選択された場合には、選択されているタスクの教示用ウィンドウW3に戻って、当該タスクについての情報を変更することができる。「タスク追加」が選択された場合には、選択されているタスクのすぐ後の順序に、作成済みのタスクを読み込んで挿入するか、あるいは、教示用ウィンドウW3に戻ってタスクを作成して挿入することができる。「タスク削除」が選択された場合には、選択されているタスクをタスクリストから削除することができる。
オペレータの操作に応じてタスクプログラムが変更され、追加され、あるいは削除される。
【0052】
図8に示すように、タスクリスト中の各タスクには、各タスクに含まれる複数のモーションを表示するための展開アイコンEIが対応付けられている。いずれかの展開アイコンEIを操作することで、操作された展開アイコンEIに対応するタスクに含まれる複数のモーションが表示される。例えば、図8のタスクリストにおいてタスクTに対応する展開アイコンEIが操作されると、図9に示す教示用ウィンドウW5が表示される。
【0053】
図9に示す例では、タスクTには、タスクTに含まれる以下の複数のモーションを特定する名称であるモーション名称M21〜M25が対応付けられて表示される。
・モーション名称M21… アプローチ点AP2までの動作 (Approach_point_2)
・モーション名称M22… アプローチ点AP1までの動作 (Approach_point_1)
・モーション名称M23… 目標点TPまでの動作 (Target_point)
・モーション名称M24… ハンドの動作(Hand-Open)
・モーション名称M25… デパーチャ点DP1までの動作 (Departure_point_1)
【0054】
図9に示す教示用ウィンドウW5では、展開アイコンEIに代えて折畳みアイコンFIがタスクTに対応付けられるとともに、タスクTに含まれるモーション名称M21〜M25が表示される。なお、折畳みアイコンFIが操作されると、モーション名称M21〜M25が非表示となり、再度図8に示す教示用ウィンドウW4が表示される。
【0055】
(2−6)近似形状データについて
本実施形態の干渉判定装置1では、後述するタスク内干渉チェックおよびタスク間干渉チェックを高速で実行するために、ロボットおよび部品の3次元モデルと対応付けて、近似形状データが作成されてストレージ22に記憶される。近似形状データは、3次元モデル同士の干渉の有無を高速で行うために、3次元モデルの外表面を球体等の基本形状で覆うように、3次元モデルを基本形状の集合によって近似したデータである。なお、基本形状としては、干渉判定を高速で行うことができる点で球体であることが好ましい。その場合、3次元モデルの外表面を覆うように1または複数の球体が配置される。
【0056】
好適には、1つの3次元モデルに対応して、基本形状(例えば球体)のサイズが異なる複数の近似形状データが作成される。
図10には、ロボットの3次元モデルと異なるレベルの近似形状データとが例示される。図10において、レベル1、レベル2、および、レベル3の近似形状データは、順に基本形状である球体の径が小さくなっていることがわかる。球体の径が小さいほど近似形状データに含まれる球体の数が多くなるため、レベル3の近似形状データは、3次元モデルの外表面が精度良く再現されたモデルである。また、球体の径をさらに小さくすることで、近似形状データのレベルをさらに上げてもよい。その一方で、干渉判定に要する計算時間については、近似形状データのレベル1〜3の順に多くの時間がかかることになる。本実施形態は、後述するように、近似形状データの低レベルから高レベルへ順に上げていきながら干渉判定を行うことで、短時間で干渉判定を行うように構成される。
近似形状データごとに、異なるレベルの球体のデータがツリー構造で管理されている。例えば、近似形状データの特定のレベル1の球体1つに対して、レベル2の球体2つが対応付けられ、当該レベル2の球体1つに対してレベル3の球体が4つ対応付けられている、といった具合である。
【0057】
図11に、ロボットおよび部品のデータ構成を概念的に示す図である。
図11に示すように、本実施形態では、階層型リストを構成するロボットRおよび各部品に対して、3次元モデルと、レベル1〜3(L1〜L3)の近似形状データとが対応付けられる。ロボットRの干渉判定結果を可視化するためにロボットRの動作のシミュレーションを実行するときには、ロボットRおよび各部品の3次元モデル、または3次元モデルに対応付けられた近似形状データが仮想空間に配置される。
【0058】
本実施形態では、同一である2以上の3次元モデルに対応付けられる近似形状データが効率的に作成される。すなわち、同一である2以上の3次元モデルのうちいずれかの3次元モデルに対応する近似形状データが作成済みで近似形状モデルデータベース225に含まれている場合には、近似形状データが作成されていない3次元モデルに対して、作成済みの近似形状データが対応付けられる。例えば、図11に示す例において、ペンPen1に対応する3次元モデルに対する近似形状データが作成済みである場合には、残りのペンPen2〜Pen12に対する近似形状データとして、ペンPen1の近似形状データが複製され、ペンPen2〜Pen12に対する3次元モデルに対応付けられる。
【0059】
ロボットRに対応する近似形状データを構成する各球体は、それぞれ局所座標を有するか、または局所座標が参照される。ロボットRに対応する近似形状データの各球体の局所座標は、ロボットRの各リンク座標系と同じである。
本実施形態の干渉判定装置1では、ロボットRが動作するときの干渉チェックを行うときに、3次元モデルの仮想空間における位置の変更に伴って、3次元モデルに対応する近似形状データの仮想空間内の位置を逐次(例えば、干渉チェックを行う所定期間のタイミング毎に)変更する処理が行われる。このとき、近似形状データの各球体に設定された局所座標を利用して球体の位置の更新が行われる。
例えばロボットRが6関節ロボットである場合に、ロボットRの基準座標(ロボット座標)に対する隣接するリンク座標系間の同次変換行列をT,T,T,T,T,Tとすると、各同次変換行列は、各関節の角度からもとめられる。そこで、本実施形態では、更新後のロボット座標系における球体の原点の座標は、更新前のロボット座標系における球体の原点の座標に対して、同次変換行列T,T,T,T,T,Tのうち球体が属するリンクに応じた分の1または複数の行列を掛け合わせることで算出される。例えば、TおよびTによって変換される局所座標を有する球体について、変更前および変更後のロボット座標系における球体の原点の座標をP,Pt+1とすると、Pt+1=(T・T)P,となる。なお、ロボットRの移動に応じて同次変換行列も更新されるため、原点の座標の更新に当たっては、更新後の行列が適用される。
ロボットRの移動に応じて球体の原点の位置を順次更新していくことで、ロボットRが移動する度に3次元モデルに球体を再設定する必要がなくなるため、干渉判定処理のさらなる高速化を実現できる。
【0060】
(2−7)タスク内干渉チェック
次に、タスク内干渉チェックについて、図12〜15を参照して説明する。図12は、実施形態の一例に係る教示用ウィンドウの遷移を示す図である。図13は、球体同士の干渉判定方法について説明する図である。図14は、ロボットの3次元モデルと部品とが干渉する場合の表示態様を例示する図である。図15は、タスクリストの表示例を示す図である。
【0061】
タスク内干渉チェックとは、オペレータによって選択されたタスクをロボットが行ったときに当該タスク内に、ロボット、ワーク、および、周辺配置物の3次元モデルの干渉が仮想空間において発生するか否かを判定することである。
タスク内干渉チェックを実行するには、タスクリストに登録されたいずれかのタスクを選択することにより行う。例えば、図12に示すように、タスクリストのうちタスクTのタスク内干渉チェックを行うには、オペレータは、タスクTを選択した上で右クリックし、ボタンb14(「動作確認」)を選択し、ボタンb141(「タスク内干渉チェック」)を選択する操作を行う。
【0062】
タスク内干渉チェックでは、選択されたタスクのタスクプログラムが情報処理装置2からロボット制御装置3へ送信され、ロボット制御装置3においてタスクプログラムが実行される。ロボット制御装置3は、タスクプログラムの実行結果としてロボット状態データを含む実行ログデータを情報処理装置2に返す。ロボット状態データは、マニピュレータ50のモデルを基に演算された時間の経過に応じたロボットの状態を示す物理量(例えば、所定の基準時間(例えば1ms)ごとの関節角、基準点の座標位置等)のデータである。
【0063】
情報処理装置2のCADソフトウェアは、ロボット状態データに従って仮想空間内でロボットRおよびロボットRに把持されたワークの3次元モデルを動作させる。このとき、情報処理装置2は、当該3次元モデルに対応する近似形状データが、他のロボットRおよび部品の3次元モデルに対応する近似形状データと干渉するか否かについて判定を行う。
干渉判定のタイミングは適宜設定してよいが、例えば、ロボットの基準点が10mm移動する度に干渉判定が行われる。干渉判定のタイミングで、前述したように、ロボットの近似形状データを構成する各球体の位置が更新されて、干渉判定に利用される。
【0064】
本実施形態の例では、近似形状データが複数の球体で構成されているため、干渉の判定処理が容易である。すなわち、図13において、干渉判定対象の2個の球体が球体Cb1,Cb2(各球体の半径r1,r2はレベルに応じて既知である。)とした場合、球体Cb1,Cb2のそれぞれのロボット座標系における更新後の原点O1,O2が、前述したようにして算出される。そして、原点O1,O2間の距離Lが、球体Cb1の半径r1と球体Cb2の半径r2の和よりも大きい場合には、球体Cb1と球体Cb2の干渉が無いと判断できる。逆に、原点O1,O2間の距離Lが、球体Cb1の半径r1と球体Cb2の半径r2の和と同じかそれより小さい場合には、球体Cb1と球体Cb2の干渉があると判断できる。球体Cb1と球体Cb2の干渉がある場合には、球体Cb1が属するロボットまたは部品と、球体Cb2が属するロボットまたは部品とが干渉したと判断される。
【0065】
ロボットR同士およびロボットRと部品との干渉判定は、基本的には総当りで行われるが、明らかに干渉しない組合せについては干渉判定を行わなくてもよい。例えば、(i) ロボットRのハンドと、ハンド上のワーク、(ii) 周辺配置物と、周辺配置物に配置されたワーク、(iii) ハンド上のワークと、周辺配置物に配置された当該ワーク、については、干渉判定を行わなくてもよい。(i)については干渉が発生し得ず、(ii)については両者とも静止関係にあるために干渉が発生し得ず、(iii)については同時に存在し得ないもの同士であるためである。
また、干渉判定の対象の特定の組合せについては、タスクの種別に応じて干渉判定を行う期間を限定してもよい。例えば、ロボット若しくは周辺配置物と、ハンド上のワークとの干渉を判定する際に、タスクの種別が「取る(Pick up)」である場合には最初のデパーチャ点以降の期間において干渉判定を行い、タスクの種別が「置く(Place)」である場合には最初のアプローチ点から目標点までの期間において干渉判定を行うようにしてもよい。
【0066】
干渉判定の結果は、3次元モデルのうち干渉が発生する部分を、干渉が発生しない部分と異なる態様で表示してもよい。例えば図14に示すように、ロボットRの3次元モデルのうち部品と干渉する部分RINFを干渉していない部分と異なる態様(例えば、異なる色、模様、輝度など)で表示してもよい。それによって、ロボットRのどの部位に干渉が発生するのかオペレータが認識できるため、ロボットRの教示点を変更する、あるいは部品の配置を変更する等の教示作業を支援することができる。
干渉する部分RINFを3次元モデルと異なる様態で表示するとともに、干渉する部分RINFを近似形状データで表示してもよい。その際、近似形状データを構成する球体のサイズを表示することが好ましい。それによってオペレータは、近似形状データを構成する球体のサイズから、ロボットRの教示点をどの程度変更することで干渉を回避することができるのか認識することが容易となる。
なお、図14では、ロボットRの3次元モデルが表示される場合について例示しているが、ロボットRの3次元モデルに代えて当該3次元モデルに対応する近似形状データが表示されてもよい。
【0067】
干渉判定の結果に基づき、干渉が発生するタスクと干渉が発生しないタスクとで異なる態様となるようにタスクリストを表示してもよい。例えば図15には、干渉が発生するタスクTのタスク名称の文字列の表示態様(例えば、異なる大きさ、字体、輝度など)を、干渉が発生しない他のタスクと異なる態様で表示する例が示される。タスク名称の文字列を異なる表示態様で表示する代わりに、タスク名称の文字列の背景画像を異なる表示態様で表示してもよい。
このようなタスクリストの表示態様とすることで、特定のジョブに含まれる複数のタスクの中で、ロボットRの教示点を変更する、あるいは部品の配置を変更する等の教示作業を行うべきタスクをオペレータが直ぐに認識でき、教示作業の効率化を図ることができる。
【0068】
なお、CADソフトウェアは、オペレータによって選択されたいずれかの3次元モデルを仮想空間内で非表示にしてもよい。その場合、CADソフトウェアにより仮想空間内で非表示にされた3次元モデルについては、干渉が発生するか否かについての判定の対象としないようにすることが好ましい。それによって、オペレータが注目したい部分についての干渉の有無が認識しやすくなる。例えば、仮想空間を表示するときの視点によっては、オペレータが注目したい部分と、部品とが重なってしまう場合が生じうるが、その場合に、当該部品を非表示とすることで注目したい部分で干渉が生ずるか否かオペレータが確認しやすくなる。
【0069】
(2−8)タスク間干渉チェック
次に、タスク間干渉チェックについて、図16および図17を参照して説明する。図16は、実施形態の一例に係る教示用ウィンドウの遷移を示す図である。図17は、タスク間干渉チェックの判定結果の表示例を示す図である。
【0070】
タスク間干渉チェックは、オペレータによって選択された2つのタスク間のロボットの移動中に、ロボット、ワーク、および、周辺配置物の3次元モデルの干渉が仮想空間において発生するか否かを判定することである。
タスク間干渉チェックを実行するには、タスクリストに登録された少なくとも2以上のタスクを選択することにより行う。例えば、図16に示すように、タスクリストのうちタスクT〜Tのタスク間干渉チェックを行うには、オペレータは、タスクT〜Tを選択した上で右クリックし、ボタンb14(「動作確認」)を選択し、ボタンb142(「タスク間干渉チェック」)を選択する操作を行う。
【0071】
タスク間干渉チェックでは、選択された2以上のタスクのタスク間の動作が設定された部分のロボットプログラム(例えば、上記move(AP1))が情報処理装置2からロボット制御装置3へ送信され、ロボット制御装置3においてロボットプログラムが実行される。ロボット制御装置3は、ロボットプログラムの実行結果としてロボット状態データを含む実行ログデータを情報処理装置2に返す。ロボット状態データは、マニピュレータ50のモデルを基に演算された時間の経過に応じたロボットの状態を示す物理量(例えば、所定の基準時間(例えば1ms)ごとの関節角、基準点の座標位置等)のデータである。
【0072】
情報処理装置2のCADソフトウェアは、ロボット状態データに従って仮想空間内でロボットRおよびロボットRに把持されたワークの3次元モデルを動作させる。このとき、情報処理装置2は、当該3次元モデルに対応する近似形状データが、他のロボットRおよび部品の3次元モデルに対応する近似形状データと干渉するか否かについて判定を行う。
干渉判定のタイミングは適宜設定してよいが、例えば、ロボットの基準点が10mm移動する度に干渉判定が行われる。干渉判定のタイミングで、前述したように、ロボットの近似形状データを構成する各球体の位置が更新されて、干渉判定に利用される。
【0073】
タスク内干渉チェックと同様の観点から、タスク間干渉チェックにおいても干渉判定の結果は、3次元モデルのうち干渉が発生する部分を、干渉が発生しない部分と異なる態様で表示してもよい。
【0074】
タスク内干渉チェックと同様の観点から、タスク間干渉チェックにおいても干渉判定の結果に基づき、干渉が発生するタスクと干渉が発生しないタスクとで異なる態様となるようにタスクリストを表示してもよい。
【0075】
CADソフトウェアは、オペレータによって選択されたいずれかの3次元モデルを仮想空間内で非表示にしてもよい。その場合、タスク内干渉チェックと同様の観点から、タスク間干渉チェックにおいてもCADソフトウェアにより仮想空間内で非表示にされた3次元モデルについては、干渉が発生するか否かについての判定の対象としないようにすることが好ましい。
【0076】
図16に示す例では3個のタスクが選択された場合のタスク間干渉チェックを実行する場合について説明したが、本実施形態の教示プログラムは、所定の操作入力に応じて、タスクリストに含まれるすべてのタスクの中の任意の2つのタスク間の干渉判定を行ってもよい。その場合、干渉判定の結果は、図17に示すように、タスクリストに含まれる複数のタスクの中の任意の2つのタスク間の判定結果が一覧できるテーブルを表示することが好ましい。このように一覧表示することで、どのタスク間で問題が生ずるか把握でき、タスクの順序設定等を支援することができる。なお、所定の操作入力に基づいて、判定結果が一覧できるテーブルをファイル出力できるようにすることが好ましい。それによってオペレータが、干渉が発生しない範囲でタスクの実行順序を変更することが容易となる。
【0077】
図17に示すテーブルでは、タスクリストに含まれるすべてのタスクが行と列に配置され、行に配置されたいずれかのタスクと列に配置されたいずれかのタスクとの間のタスク間移動における干渉の判定結果が、「○」(干渉無し)、「×」(干渉有り)、または、「▲」(干渉無いが余裕小)のいずれかのマークで示される。「▲」のマークを判定結果とする基準は、例えば図13において、球体Cb1,Cb2の原点O1,O2間の距離Lから、球体Cb1の半径r1と球体Cb2の半径r2の和を減算した値が、所定の閾値以下の正の値であることを条件とすることができる。
【0078】
図17に示すテーブルにおいて、タスク間干渉チェックの判定結果である「○」、「×」、または、「▲」のいずれかのマークをクリックする操作を行うことで、当該マークに対応するタスク間のロボットの移動中に3次元モデルのうち干渉が発生する部分を、干渉が発生しない部分と異なる態様で表示してもよい。その場合の表示例は、図14に示したとおりである。
判定結果を示すマークから直ちに干渉の状況を可視化して表示させるように構成することで、ロボットのタスク間移動について検討することがさらに容易となる。
【0079】
タスク間干渉チェックにおいてロボットR同士およびロボットRと部品との干渉判定は、基本的には総当りで行われるが、明らかに干渉しない組合せについて干渉判定を行わなくてもよい点については、タスク内干渉チェックと同様である。
また、干渉判定の対象の特定の組合せについては、タスク間移動の前の方のタスクの種別に応じて、当該タスク間移動の干渉判定を行わなくてもよい。例えば、ロボット若しくは周辺配置物と、ハンド上のワークとの干渉を判定する際に、タスク間移動の前の方のタスクの種別が「置く(Place)」である場合には、タスク間移動中にハンド上のワークが存在しないため、タスク間移動における干渉判定を行わなくてもよい。
【0080】
(3)干渉判定装置1の機能
次に、本実施形態の干渉判定装置1の機能について、図18を参照して説明する。図18は、実施形態に係る干渉判定装置1の機能ブロック図である。
図18に示すように、干渉判定装置1は、表示制御部101、データ作成部102、関連付け部103、プログラム実行部104、状態情報算出部105、位置変更部106、および、干渉判定部107を備える。
干渉判定装置1のストレージ22は、前述したように、ロボットプログラム221、階層型リストデータベース222、3次元モデルデータベース223、実行ログデータベース224、および、近似形状モデルデータベース225を備える。
【0081】
以下の説明において、情報処理装置2の制御部21の処理について言及するときには、制御部21に含まれるCPUが教示ソフトウェア及び/又はCADソフトウェアを実行することにより処理が行われる。
【0082】
表示制御部101は、教示ソフトウェアおよびCADソフトウェアの実行結果を表示装置24に表示させる制御を行う。表示制御部101の機能を実現するために、情報処理装置2の制御部21は、教示ソフトウェアおよびCADソフトウェアの出力を含む画像データを生成し、バッファリングし、表示装置24へ送信する。表示装置24は、表示駆動回路を駆動して画像を表示パネルに表示する。
【0083】
表示制御部101は、ロボットの作業対象であるワークに対するロボットのタスクについてのタスクプログラム名称の一覧であるタスクリストを、タスクの内容がオペレータに認識可能な表示態様で表示装置24に表示させる機能を備える。図8に示す例では、表示されるタスクプログラム名称(例えばタスクTの場合、“Place_to_PenJ_in_PenProduct”)によりタスクの内容がオペレータに認識可能となっている。
【0084】
表示制御部101の機能を実現するために、本実施形態では、以下のようにしてロボットプログラムが作成される。
すなわち、情報処理装置2のストレージ22には、タスクの種別(Function)ごとに、テンプレートとなるプログラムコードがタスクの関数として記録されている。オペレータによりタスクの種別(Function)、タスクの目標物(Target)、アプローチ点、デパーチャ点、モーションパラメータ等が設定されると(図7参照)、情報処理装置2の制御部21は、設定されたタスクの種別に対応するプログラムコードのテンプレートに、設定された情報を埋め込むことで、ロボットプログラムのコードを作成する。
また、タスクの種別ごとのテンプレートとなるプログラムコードには、当該タスクに含まれる複数のモーションの各々に対応するプログラムコードが含まれている。そのため、上記設定された情報をテンプレートに埋め込むことで、モーションプログラムのコードが自動的に生成されることになる。
【0085】
例えば、タスクの種別として「取る(Pick up)」が設定された場合、「取る(Pick up)」に対応するプログラムコードのテンプレートには、アプローチ点AP1まで移動させる関数move(AP1)やアプローチ点AP2まで移動させる関数move(AP2)等が含まれており、設定されたアプローチ点AP1,AP2の具体的な座標値を埋め込むことで、モーションプログラムである関数move(AP1),move(AP2)が作成される。「取る(Pick up)」に含まれるすべてのモーションプログラムが作成されると、結果的に「取る(Pick up)」に対応するタスクプログラムが作成される。
タスクプログラムの名称およびモーションプログラムの名称として、テンプレートに応じた名称が自動的に設定される。情報処理装置2の制御部21は、生成されたタスクプログラムおよびモーションプログラムをそれぞれの名称と関連付けてストレージ22に記録する。
【0086】
ロボットが行うジョブは、複数のタスクを含む。オペレータがロボットのタスク間移動のためのモーションパラメータを設定することで、ロボットにタスク間移動させる関数(例えば、上記move(AP1);以下、「タスク間移動プログラム」という。)が作成される。ロボットの動作内容によっては、2以上のタスクの中からいずれかのタスクを条件分岐によって実行させる場合に当該条件が設定される。
【0087】
以上説明したように、ジョブに対応する全体のロボットプログラムは、複数のタスクプログラムと、タスク間移動プログラムとを含む。各タスクプログラムは、タスクプログラムの名称によって識別される。
教示プログラムを実行すると、情報処理装置2の制御部21は、ストレージ22に記憶されているロボットプログラムを読み出し、ロボットプログラムに含まれる複数のタスクプログラムに基づいてタスクリストを構成し、表示装置24に表示させる。
【0088】
表示制御部101は、ロボット、ワーク、および、周辺配置物の3次元モデルを仮想空間内に配置して表示装置24に表示させる機能を備える。当該機能は、CADソフトウェアが3次元モデルデータベース223を参照することによって実現される。
【0089】
表示制御部101は、近似形状データを仮想空間内に配置して表示装置24に表示させる機能を備えてもよい。当該機能を実現するために、情報処理装置2の制御部21は、ストレージ22の近似形状モデルデータベース225にアクセスして、仮想空間に配置すべき近似形状データを読み出す。近似形状データは、3次元モデルデータベース223の3次元モデルに対応付けられている。
【0090】
データ作成部102は、3次元モデルデータベース223に含まれる3次元データを基本形状の集合によって近似した近似形状データを作成する機能を備える。当該機能を実現するために、情報処理装置2の制御部21が、3次元モデルデータベース223からロボットおよび部品の3次元モデルを読み出し、3次元モデルの外表面を1または複数の球体で覆うようにして球体を配置することで、3次元モデルに対応する近似形状データを作成する。作成された近似形状データは、近似形状モデルデータベース225に記録される。
【0091】
関連付け部103は、同一である2以上の3次元データが前記第1記憶部に記憶され、かつ前記2以上の3次元データのうちいずれかの3次元データに対応して前記第2記憶部に近似形状データが記憶されている場合、当該近似形状データを前記2以上の3次元データのうち他の3次元データに関連付ける機能を備える。
当該機能を実現するために、情報処理装置2の制御部21は、同一である2以上の3次元モデルのうちいずれかの3次元モデルに対応付けられた近似形状データ(作成済みデータ)が近似形状モデルデータベース225に含まれている場合には、以下の処理を行う。すなわち、制御部21は、上記同一である2以上の3次元モデルのうち近似形状データが対応付けられていない3次元モデルに対して、作成済みデータを複製して対応付けて近似形状モデルデータベース225に追加する。
【0092】
プログラム実行部104は、オペレータの操作入力に応じて、ロボットプログラムの全部または一部を実行する機能を備える。
プログラム実行部104の機能を実現するために、タスクリストのうちいずれかのタスクを選択した状態でのボタンb141(「タスク内干渉チェック」)の操作、または、タスクリストのうち2以上のタスクを選択した状態でのボタンb142(「タスク間干渉チェック」)を選択する操作に応じて、通信インタフェース部25を介してロボットプログラムをロボット制御装置3へ送信する。送信対象とするロボットプログラムの範囲は、タスクリストにおいて選択されたタスクに基づく。ロボット制御装置3の制御部31は、ロボットプログラムを受信すると、ロボットプログラムを実行する。
【0093】
状態情報算出部105は、プログラム実行部104による実行結果に基づいて、時間の経過に応じたロボットの状態を示す情報であるロボット状態データを演算する機能を備える。
【0094】
状態情報算出部105の機能を実現するために、ロボット制御装置3の制御部31は、情報処理装置2からロボットプログラムを実行し、ロボットプログラムの実行結果として、ロボット状態データを演算して順次、ストレージ32に記録する。
ロボット状態データは、マニピュレータ50のモデルを基に演算された時間の経過に応じたロボットの状態を示す物理量(例えば、所定の基準時間(例えば1ms)ごとの関節角、基準点の座標位置等)のデータである。
ロボットプログラムの実行が終了すると、制御部31は、ストレージ32から、時間軸に沿った所定の基準時間(例えば1ms)ごとのロボット状態データを読み出す。制御部31は、読み出したロボット状態データを含む実行ログデータを、通信インタフェース部33を介して情報処理装置2へ送信する。情報処理装置2の制御部21は、ロボット制御装置3からロボット状態データを含む実行ログデータを取得すると、実行ログデータを実行ログデータベース224に記録する。
【0095】
位置変更部106は、3次元データの前記仮想空間における位置の変更に伴って、当該3次元データに対応する近似形状データの前記仮想空間内の位置を変更する機能を備える。
位置変更部106の機能を実現するため、情報処理装置2の制御部21は、実行ログデータベース224に記録した実行ログデータを読み出す。CADソフトウェアは、実行ログデータベース224に記録した実行ログデータに含まれるロボット状態データ(例えば、所定の基準時間(例えば1ms)ごとの関節角、基準点の座標位置等)に基づき、仮想空間におけるロボットおよび部品の3次元モデルを動作させて表示する。このとき、3次元モデルに対応付けられた近似形状データの各球体に設定された局所座標を利用して各球体の位置の更新を逐次(例えば、干渉チェックを行う所定期間のタイミング毎に)行う。更新後の各球体の原点の位置は、前述したように、ロボット座標に対する隣接するリンク座標系間の同次変換行列T,T,T,T,T,Tを用いて算出される。
【0096】
干渉判定部107は、ロボットを動作させたときに、仮想空間内の1または複数の近似形状データの干渉が発生するか否かを判定する機能を備える。かかる判定機能には、タスク内干渉チェックとタスク間干渉チェックが含まれる。
タスク内干渉チェックは、タスクリストに含まれるいずれか1つのタスクを選択するオペレータの操作入力に基づいて、選択されたタスクをロボットが行ったときに当該タスク内に、ロボット、ワーク、および、周辺配置物の3次元モデルの干渉が仮想空間において発生するか否かを判定することである。
タスク間干渉チェックは、タスクリストに含まれるいずれか1つのタスクを選択するオペレータの操作入力に基づいて、選択された2つのタスク間のロボットの移動中に、ロボット、ワーク、および、周辺配置物の3次元モデルの干渉が仮想空間において発生するか否かを判定することである。
【0097】
以下、干渉判定部107の機能を実現するための一例について、図19のフローチャートを参照して説明する。図19のフローチャートは、主として情報処理装置2の制御部21によって実行される。
【0098】
図19に示すフローチャートにおいて、ロボットRの基準点が10mm移動する度にステップS12以降の処理が行わる。ロボットRの基準点が前回から10mm移動した場合(ステップS10:YES)、近似形状データの位置の更新を行う(ステップS12)。近似形状データの位置の更新は、当該近似形状データを構成する1または複数の球体の原点をすべて更新することによって行われる。
【0099】
次いで、制御部21は、ロボットR同士、およびロボットRと部品との干渉判定を総当りで行う。このとき、ロボットRおよび部品の近似形状データとして、最も球体のサイズが大きいレベル1の近似形状データを用いて、干渉判定が行われる(ステップS14)。干渉の有無は、図13を参照して説明したように、干渉判定の対象となる2つの近似形状データからそれぞれ1つの球体に着目し、球体同士が干渉するか否かを、原点間の距離と、レベル1として予め設定されている各球体の半径の和との大小に基づいて行う。干渉判定の対象となる2つの近似形状データに対して着目する球体を順次変更し、総当りで球体同士が干渉するか否かを判定する。その結果、1つも球体同士が干渉しない場合には(ステップS16:NO)、制御部21は、2つの近似形状データが干渉しないと判断し(ステップS18)、終了する。
【0100】
ステップS14のレベル1の近似形状データでの干渉チェックにおいて、ロボットR同士の組合せ、およびロボットRと部品の組合せのうち、干渉が生じた組合せについては(ステップS16:YES)、制御部21は、球体のサイズがレベル1より小さいレベル2の近似形状データを用いて干渉判定を行う(ステップS20)。球体のサイズが異なる点を除けば、干渉判定の処理は、ステップS14と同じである。すなわち、制御部21は、干渉判定の対象となる2つの近似形状データについて1つも球体同士が干渉しない場合には(ステップS22:NO)、2つの近似形状データが干渉しないと判断し(ステップS18)、終了する。
【0101】
ステップS20のレベル2の近似形状データでの干渉チェックにおいて、ロボットR同士の組合せ、およびロボットRと部品の組合せのうち、干渉が生じた組合せについては(ステップS22:YES)、制御部21は、球体のサイズがレベル2よりさらに小さいレベル3の近似形状データを用いて干渉判定を行う(ステップS24)。球体のサイズが異なる点を除けば、干渉判定の処理は、ステップS14と同じである。すなわち、制御部21は、干渉判定の対象となる2つの近似形状データについて1つも球体同士が干渉しない場合には(ステップS26:NO)、2つの近似形状データが干渉しないと判断し(ステップS18)、終了する。
【0102】
ステップS24のレベル3の近似形状データでの干渉チェックにおいて、ロボットR同士の組合せ、およびロボットRと部品の組合せのうち、干渉が生じた組合せについては(ステップS26:YES)、制御部21は干渉があると判断して干渉判定結果のデータをストレージ22に記録し(ステップS28)、終了する。干渉判定結果のデータは、ロボットR、および/または、ロボットRと部品における干渉した球体の位置のデータが含まれる。
図19のフローチャートに示すように、好ましくは、干渉判定は、精度が低いレベル1の近似形状データから精度が高いレベル3の近似形状データを順に用いて、段階的に干渉判定が行われる。また、好ましくは、干渉チェックにおいて、干渉が生じた組合せのうち、干渉した球体のみを高精度のレベルの近似形状データとする。そのため、最初から精度が高いレベル3の近似形状データを用いて干渉判定を行う場合と比較して、干渉判定に要する演算負荷が低減される。
【0103】
以上説明したように、本実施形態の干渉判定装置1は、3次元モデルを基本形状の集合によって近似して得られる近似形状データが基礎となる3次元モデルに対応付けて管理するとともに、ロボットを動作させたときの仮想空間における近似形状データ同士の干渉判定を行う。すなわち、CADソフトウェアの3次元モデルと近似形状データとがリンクしているため、いったん3次元モデルに対する近似形状データが作成されると、作成済みの近似形状データを他の同一の3次元モデルに適用することが可能となる。そのため、同一形状の複数のロボットまたは同一形状の複数の部品に対して近似形状データを作成する演算が1回で済み、演算時間が従来よりも大幅に短縮される。よって、本実施形態の干渉判定装置1によれば、ロボットの干渉判定を精度良く、かつ、より短時間で行うことが可能となる。
【0104】
本実施形態の干渉判定装置1では、タスクリストに含まれる複数のタスクのうちいずれか1つのタスクのオペレータのよる選択に基づき、選択されたタスクについてのタスク内干渉チェックが実行可能となるように構成される。そのため、ロボットの全体作業の中でロボットの要素作業であるタスク単位での干渉チェックが可能となることから、ロボットの教示作業を効率的に支援することができる。
【0105】
本実施形態の干渉判定装置1では、タスクリストに含まれる2以上のタスクのオペレータのよる選択に基づき、選択された2以上のタスクのタスク間干渉チェックが実行可能となるように構成される。そのため、ロボットの全体作業の中でロボットの2つのタスクの間の干渉チェックが可能となることから、タスク間移動におけるロボットの教示作業を効率的に支援することができる。
【0106】
以上、本発明の干渉判定装置の実施形態について詳述したが、本発明は上記の実施形態に限定されない。また、上記の実施形態は、本発明の主旨を逸脱しない範囲において、種々の改良や変更が可能である。
例えば、上記実施形態では、3次元モデルを基本形状の集合によって近似する際に基本形状が球体である場合について例示したが、その限りではない。基本形状として、立方体あるいは直方体を適用してもよい。
【0107】
上述した説明により、図18の機能ブロック図に記載された機能のうち少なくとも一部の機能をコンピュータに実現させるためのプログラム、および、当該プログラムが記録されたコンピュータ可読記憶媒体(不揮発性の記憶媒体をも含む。)が開示されていることは当業者に理解される。
【符号の説明】
【0108】
1…干渉判定装置、2…情報処理装置、21…制御部、22…ストレージ、23…入力装置、24…表示装置、25…通信インタフェース部、3…ロボット制御装置、31…制御部、32…ストレージ、33…通信インタフェース部、11…ペントレイ、P…ペン群、12…キャップトレイ、C…キャップ群、13…治具、14…製品トレイ、A1〜A12…製品、EC…イーサネットケーブル、WC…ケーブル、R…ロボット、51…アーム、52…ハンド、61〜68…ノード、101…表示制御部、102…データ作成部、103…関連付け部、104…プログラム実行部、105…状態情報算出部、106…位置変更部、107…干渉判定部、221…ロボットプログラム、222…階層型リストデータベース、223…3次元モデルデータベース、224…実行ログデータベース、225…近似形状モデルデータベース、RA…ロボット領域、PA…パーツ領域、W1〜W6…ウィンドウ、b1〜b8…ボタン、AP…アプローチ点、TP…目標点、DP…デパーチャ点、TL…テーブル、T…タスク、M…モーション名称、Cb1,Cb2…球体、O1,O2…原点
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19