(57)【特許請求の範囲】
【請求項１】
部品の３次元形状データから前記部品が平面上で安定する安定姿勢を算出する安定姿勢算出部と、
ハンドの３次元データ及び前記３次元形状データから前記部品を前記ハンドで把持する把持方法を算出する把持方法算出部と、
ロボットによる前記把持方法と前記ロボット以外による前記把持方法及び前記安定姿勢との組合せ群から、前記ハンドの接続先の情報を含むシステム構成データ、前記安定姿勢、及び前記把持方法に基づいて、前記ハンドが干渉しない前記組合せ群を算出する組合せ可否算出部と、
前記組合せ可否算出部で算出された前記組合せを用いて前記部品の移動回数が最小となる持ち替え経路を全て算出する持ち替え経路算出部と、
仮置き台で取扱う前記部品の姿勢である投入姿勢及び整列台に整列させる前記部品の姿勢である整列姿勢を指定する姿勢データに基づいて、前記持ち替え経路において教示点を共有することで前記教示点の数が最小となる経路を経路群として算出する経路群算出部と、
前記ロボットを用いてバラ積み供給された前記部品を持ち替えて前記整列台に整列させるプログラムを前記経路群に基づいて生成するプログラム生成部とを備えたことを特徴とするロボットプログラムの生成装置。
【請求項２】
請求項１に記載のロボットプログラムの生成装置であって、
前記システム構成データは、前記ハンドが作業をする作業位置のデータを含み、
前記作業位置に前記部品があるときの前記ハンドの位置を算出して前記教示点の位置を出力する教示点出力部を備えたことを特徴とするロボットプログラムの生成装置。
【請求項３】
請求項１に記載のロボットプログラムの生成装置であって、
前記システム構成データは、前記ハンドが作業をする作業位置のデータを含み、
前記作業位置に前記部品があるときに前記教示点となる位置で前記ロボットが教示位置姿勢をとれるかの可否を判定する教示点判定部を備えたことを特徴とするロボットプログラムの生成装置。
【請求項４】
請求項３に記載のロボットプログラムの生成装置であって、
前記教示点判定部は、平面となる前記作業位置に前記部品がある場合には、前記部品を前記平面に垂直な軸で回転させた全範囲で前記ロボットが前記教示位置姿勢をとることができる場合に可と判定することを特徴とするロボットプログラムの生成装置。
【請求項５】
請求項３に記載のロボットプログラムの生成装置であって、
前記教示点判定部は、平面となる前記作業位置に前記部品がある場合には、前記部品を前記平面に垂直な軸で回転させて前記ロボットが前記教示位置姿勢をとることができる設置角度を算出し、
前記教示点判定部で前記教示位置姿勢をとることができる前記設置角度に前記部品がある場合には、前記ハンドで前記部品を把持する経路として算出する把持経路算出部を備えたことを特徴とするロボットプログラムの生成装置。
【請求項６】
請求項１から５のいずれか１項に記載のロボットプログラムの生成装置であって、
前記ロボットの運転状況データに基づき前記ロボットの移動速度を制限し、前記ロボットの保守作業を要求する保守作業プログラムを生成する保守作業プログラム生成部を備えたことを特徴とするロボットプログラムの生成装置。
【請求項７】
部品の３次元形状データから前記部品が平面上で安定する安定姿勢を複数算出する安定姿勢算出工程と、
ハンドの３次元データ及び前記３次元形状データから前記部品を前記ハンドで把持する把持方法を算出する把持方法算出工程と、
ロボットによる前記把持方法と前記ロボット以外による前記把持方法及び前記安定姿勢との組合せ群から、前記ハンドの接続先の情報を含むシステム構成データ、前記安定姿勢、及び前記把持方法に基づいて、前記ハンドが干渉しない前記組合せを算出する組合せ可否算出工程と、
前記組合せ可否算出工程で算出された前記組合せを用いて前記部品の移動回数が最小となる持ち替え経路を全て算出する持ち替え経路算出工程と、
仮置き台で取扱う前記部品の姿勢である投入姿勢及び整列台に整列させる前記部品の姿勢である整列姿勢を指定する姿勢データに基づいて、前記持ち替え経路において教示点を共有することで前記教示点の数が最小となる経路を経路群として算出する経路群算出工程と、
前記ロボットを用いてバラ積み供給された前記部品を持ち替えて前記整列台に整列させるプログラムを前記経路群に基づいて生成するプログラム生成工程とを備えたことを特徴とするロボットプログラムの生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、産業用ロボットのプログラムを生成する装置及びその方法に関するものであり、特に、ロボットを用いてバラ積み供給された部品を整列するプログラムを生成するものである。
【背景技術】
【０００２】
従来の産業用ロボットのプログラム生成方法としては、作業者がデモンストレーションした部品の移動経路を３次元計測し、その移動経路で部品を移動させるロボットプログラムを出力する方法が知られている。プログラム出力時には、ロボットの身体性を考慮し、経路の実現可否も判定する。また、単体のロボットで移動が不可能な場合には、複腕による持ち替えも、プログラムの候補として出力する（特許文献１）。【０００３】
部品の移動経路を２次元平面内で探索するプログラム生成方法も知られている。作業エリアを上空から見た２次元で表現し、適当なサイズのエリアに分割する。部品の初期位置と最終位置とを分割されたエリアから選択する。各エリアでロボットアームの到達可否を判定し、初期位置から最終位置までの連続した、ロボットアームが到達可能なエリアを抽出して移動経路とする。一つのロボットアームで移動経路が見つからない場合には、複数のロボットアーム間で部品の持ち替えを行う（特許文献２）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１５−０５４３７８
【特許文献２】特開２０１５−０５８４９２
【発明の概要】
【発明が解決しようとする課題】
【０００５】
このようなプログラムの生成方法においては、移動経路毎にロボットの教示作業が必要になる。産業用ロボットでは、移動の目標位置は、教示という現物合わせを行い、教示点として設定する必要がある。ロボットハンドと部品の形状によっては、この教示作業は１ミリメータ以下の精度が必要な作業である。また、ロボットハンドの姿勢を含めると６自由度で合わせる必要があり、設定と確認とを合わせると時間のかかる煩わしい作業である。ビジョンセンサを利用した作業においても、一般的には、基本となる把持方法は教示で設定している。【０００６】
これに対して、複数の移動経路を設定する場合においても、教示点を共通化して、教示作業の負荷を低減したいという課題がある。特に、近年のロボットシステムにおいては、バラ積み供給された部品への対応も求められており、部品の姿勢及び把持方法が複数あることから、移動経路が増加している。【０００７】
この発明は、上記のような問題点を解決するためになされたものであり、複数の姿勢で供給される部品について、それらの姿勢毎の移動経路において、教示点を共通化したロボットプログラムを生成するものである。
【課題を解決するための手段】
【０００８】
この発明に係るロボットプログラムの生成装置は、部品の３次元形状データから部品が平面上で安定する安定姿勢を算出する安定姿勢算出部と、ハンドの３次元データ及び３次元形状データから部品をハンドで把持する把持方法を算出する把持方法算出部と、ロボットによる把持方法とロボット以外による把持方法及び安定姿勢との組合せ群から、ハンドの接続先の情報を含むシステム構成データ、安定姿勢、及び把持方法に基づいて、ハンドが干渉しない組合せを算出する組合せ可否算出部と、組合せ可否算出部で算出された組合せを用いて部品の移動回数が最小となる持ち替え経路を全て算出する持ち替え経路算出部と、仮置き台で取扱う部品の姿勢である投入姿勢及び整列台に整列させる部品の姿勢である整列姿勢を指定する姿勢データに基づいて、持ち替え経路において教示点を共有することで教示点の数が最小となる経路を経路群として算出する経路群算出部と、ロボットを用いてバラ積み供給された部品を持ち替えて整列台に整列させるプログラムを経路群に基づいて生成するプログラム生成部とを備えたものである。
【０００９】
また、この発明に係るロボットプログラムの生成方法は、部品の３次元形状データから部品が平面上で安定する安定姿勢を複数算出する安定姿勢算出工程と、ハンドの３次元データ及び３次元形状データから部品をハンドで把持する把持方法を算出する把持方法算出工程と、ロボットによる把持方法とロボット以外による把持方法及び安定姿勢との組合せ群から、ハンドの接続先の情報を含むシステム構成データ、安定姿勢、及び把持方法に基づいて、ハンドが干渉しない組合せを算出する組合せ可否算出工程と、組合せ可否算出工程で算出された組合せを用いて部品の移動回数が最小となる持ち替え経路を全て算出する持ち替え経路算出工程と、仮置き台で取扱う部品の姿勢である投入姿勢及び整列台に整列させる部品の姿勢である整列姿勢を指定する姿勢データに基づいて、持ち替え経路において教示点を共有することで教示点の数が最小となる経路を経路群として算出する経路群算出工程と、ロボットを用いてバラ積み供給された部品を持ち替えて整列台に整列させるプログラムを経路群に基づいて生成するプログラム生成工程とを備えたものである。
【発明の効果】
【００１０】
本発明によれば、複数の移動経路において教示点を共有した、教示点数の少ないロボットプログラムを生成することができる。
【図面の簡単な説明】
【００１１】
【図１】図１は本発明の実施の形態１によるロボットシステムの一例の構成図である。
【図２】図２は本発明の実施の形態１によるプログラム生成装置の機能構成図である。
【図３】図３は本発明のハードウェア構成を説明するための図である。
【図４】図４は本発明の実施の形態１による組合せ可否算出部が出力する組合せ可否結果の例を示す図である。
【図５】本発明の実施の形態１による移動回数を説明する組合せの一例を示す図である。
【図６】図６は本発明の実施の形態１によるプログラム生成部が出力するロボットプログラムのフローチャートの例である。
【図７】図７は本発明の実施の形態２によるプログラム生成装置の機能構成図である。
【図８】図８は本発明の実施の形態３によるプログラム生成装置の機能構成図である。
【図９】図９は平面となる作業位置にある部品の例を示す図である。
【図１０】図１０は本発明の実施の形態４によるプログラム生成装置の機能構成図である。
【図１１】図１１は本発明の実施の形態５によるプログラム生成装置の機能構成図である。
【発明を実施するための形態】
【００１２】
実施の形態１．
図１は本発明の代表的な適用先である、バラ積み部品１７０を整列させるロボットシステムの一例の模式図である。ロボット１００は、垂直多関節型ロボット１００で広く普及しているものである。部品供給台１１０は、バラ積みされた部品１７０が供給される台である。部品供給方法としては、部品供給台１１０に固定されたパレットに部品１７０が順次供給される方法の他に、部品１７０が詰め込まれたパレット単位で交換する方法、及びそれらを組合せた方法がある。
【００１３】
部品供給台１１０からは３次元ビジョンセンサ１５０の認識結果を利用して、部品１７０を一つだけ仮置き台１２０に取り出す。取り出し方法としては、ロボットハンド（単に「ハンド」と称することもある。）の指が挿入可能な領域を導出して、挿入可能な領域に指を挿入して指を閉じることで部品１７０を把持して取り出す方法が知られている。他にも、部品１７０の全体又は一部の特徴部の位置姿勢から、把持位置を計算する方法もある。ここでは、部品供給台１１０上の部品１７０同士が接触しているバラ積みの状態から、部品１７０同士が接触していない状態で、部品１７０を仮置き台１２０に置ければ、その手段は問わない。ここで、位置姿勢とは、位置及び姿勢を意味するロボット分野の技術用語であり、剛体を３次元空間上に設定するものである。例えば、位置とは重心など代表点となる１点を設定し、座標値で表現されるものである。姿勢とは、例えば回転変換行列で決めることができるものである。
【００１４】
仮置き台１２０上の平面に部品１７０を置くと、特殊な部品形状を除き、部品１７０の姿勢は有限個の姿勢パターンの何れかの姿勢で安定する。ここで、特殊な部品形状とは、接地面を変えることなく連続的に姿勢を変更できる形状を有する部品１７０をいい、例えば、球面又は筒状の側面を接地した状態で安定する形状を有する部品１７０である。仮置き台１２０で平面上に置かれた部品形状の姿勢は有限個に限定され、また部品形状の姿勢毎に部品１７０の高さも一定になるので、２次元ビジョンセンサ１６０で位置姿勢の認識が可能になる。
【００１５】
その後は、２次元ビジョンセンサ１６０で高精度に部品１７０の位置姿勢を認識し、整列台１４０上の予め決められた部品１７０の最終姿勢に、ロボット１００が移動させる。把持方法の関係から最終姿勢で整列台１４０に直接移動させることができない場合には、部品１７０を把持可能な持ち替え治具１３０を利用して、ロボット１００が部品１７０を持ち替えてから、最終姿勢となるように整列台１４０に移動させる。なお、持ち替え治具１３０だけでなく、仮置き台１２０に部品１７０を置き直して持ち替えてもよい。
【００１６】
図２は実施の形態１によるプログラム生成装置の機能構成図である。ハンド３次元データ２００には、対象のシステムで使用するロボットハンドと持ち替え治具１３０といった、部品１７０を把持するハンドの形状に関する３次元データが含まれる。ここで、ハンド３次元データ２００には、ハンドの把持部の指定、指の移動方向、ハンドの向き等といった、ハンドに関する付加情報が含まれてもよい。
【００１７】
部品形状３次元データ２１０には、対象のシステムで扱う部品１７０の形状に関する３次元データが含まれる。こちらにも、部品１７０の把持可能領域等の部品１７０に関する付加情報が含まれてもよい。図３はハードウェア構成を説明するための図である。ハンド３次元データ２００及び部品形状３次元データ２１０は、データベースであり、ハードディスクなどの記憶装置３０１に記憶されている。例えば、入力は作業者による教示による把持方法である。
【００１８】
把持方法算出部２２０は、ハンド３次元データ２００と部品形状３次元データ２１０とから、各ハンドでの部品１７０の把持方法を算出して、その把持方法を出力する。部品１７０の把持方法を算出する方法としては、ハンドと部品１７０との接触点で囲まれる領域に重心位置が存在するかを確認する方法等、様々な方法が提案されている。また、把持方法算出部２２０は、作業者からの入力に従って把持方法を算出してもよい。作業者に入力させる方法としては、部品１７０とハンドとの３次元表示と、その３次元表示内でのハンドの移動手段を提供する方法等がある。何れの方法にせよ、把持方法算出部２２０は、ハンド３次元データ２００と部品形状３次元データ２１０との入力から、各ハンドでの部品１７０の把持方法を出力する。このように、把持方法算出部２２０は、ロボット１００のハンドの３次元データ及び３次元形状データから部品１７０をハンドで把持する把持方法を一つ以上、算出する。なお、把持方法とは、部品１７０を把持する方法といった狭義の概念だけでは無く、部品１７０を把持してハンドが適切な把持姿勢をとることを含めて広義の概念である。よって、全文を通じて把持方法には、技術用語としての把持姿勢の概念も含んでいる。
【００１９】
安定姿勢算出部２３０は、部品形状３次元データ２１０から、部品１７０を平面に置いた時の安定姿勢を全て算出して、部品安定姿勢データとして出力する。安定姿勢算出部２３０は、複数の安定姿勢を算出することになる。安定姿勢の算出方法としては、例えば、部品１７０を囲む最小体積の凸多面体を導出し、各面を含む平面に重心を射影した時に、射影した点が凸多面体の表面内にあれば安定姿勢とする方法がある。ここで、安定姿勢とは、部品１７０が静的な安定性を保つことができる姿勢のことである。部品形状３次元データ２１０から、部品１７０が取り得る全ての部品安定姿勢データが出力されれば、その方法は問わない。このように、安定姿勢算出部２３０は、部品１７０の３次元形状データから部品１７０が平面上で安定する安定姿勢を算出する。
【００２０】
システム構成データ２４０は、少なくともハンドが接続される設備の情報が含まれ、加えて、各設備がアクセスできる先方の情報、さらには作業場の環境による制約等が含まれていてもよい。例えば、ロボット１００に取付けられたハンドは、部品供給台１１０、仮置き台１２０、持ち替え治具１３０、整列台１４０といった全ての設備にアクセスが可能である。一方、持ち替え治具１３０に取付けられたハンドは他の設備にアクセスすることはできず、ロボット１００に取付けたハンドからアクセスされる必要がある。システム構成データ２４０は、データベースであり、記憶装置３０１に記憶されている。
【００２１】
組合せ可否算出部２５０について説明する。把持方法算出部２２０からハンドによる部品１７０の把持方法と、安定姿勢算出部２３０から部品１７０が取り得る全ての部品安定姿勢データと、システム構成データ２４０からハンドが接続される設備の情報とが、組合せ可否算出部２５０に入力される。組合せ可否算出部２５０は、ロボット１００と持ち替え治具１３０との把持方法の組合せにおける持ち替え実現可否と、ロボット１００の把持方法と安定姿勢との組合せにおける把持実現可否を算出して、組合せ可否結果として出力する。
【００２２】
持ち替え実現可否の算出では、ロボット１００に接続されたハンドの把持方法と、持ち替え治具１３０に接続されたハンドの把持方法との組合せにおいて、２つのハンドが干渉しなければ、持ち替え可能と判断する。逆に、ハンドが干渉する場合には、持ち替え不可と判断する。また、把持実現可否の算出では、ロボット１００に接続されたハンドの把持方法と、安定姿勢との組合せにおいて、部品１７０が接地している平面にハンドが干渉しなければ、把持可能と判断する。逆に、干渉する場合には把持不可と判断する。把持可能と判定された安定姿勢と把持方法との組合せでは、その把持方法を用いて、その安定姿勢で部品１７０を置くことも可能である。このように、組合せ可否算出部２５０は、安定姿勢及び把持方法のいずれか一方と把持方法との組合せ群から、ハンドの接続先の情報を含むシステム構成データ２４０、安定姿勢、及び把持方法に基づいて、ハンドが干渉しない組合せを一つ以上、算出することになる。換言すれば、組合せ可否算出部２５０は、安定姿勢及び把持方法のいずれか一方と把持方法との組合せからハンドが干渉しない組合せを算出する
【００２３】
図４は組合せ可否算出部２５０が出力する組合せ可否結果の例を示す図である。行に記載の状態から、列に記載の状態へ部品１７０の持ち替え、すなわち、部品１７０の移動が直接できるか否かを示している。把持方法１、２、３はロボット１００に接続されたハンドの把持方法、把持方法４、５は持ち替え治具１３０に接続されたハンドの把持方法である。安定姿勢１、２、３は部品１７０の平面上での安定姿勢であり、仮置き台１２０と整列台４０とで共通している。
【００２４】
ここでは、アームを一つ持つロボット１００が１台で構成されているロボットを前提にしている。６行目から８行目は仮置き台１２０からロボット１００が部品１７０を把持する場合を表し、６列目から８列目は整列台１４０にロボット１００が部品１７０を置く場合を表している。なお、例えば、ロボット１００が２台であれば、２台のロボット１００を区別して、追加されたロボット１００に対応した把持方法が追加されることになる。
【００２５】
ロボット１００の把持方法と持ち替え治具１３０の把持方法との間で、部品１７０を直接持ち替え可能な組合せは「○」とし、干渉して部品１７０を直接持ち替えることができない組合せは「×」としている。また、ロボット１００の把持方法と仮置き台１２０又は整列台１４０の安定姿勢との組合せにおいて、部品１７０を直接把持可能な組合せは「○」とし、平面に干渉して部品１７０を直接把持することができない組合せは「×」としている。
【００２６】
例えば、ロボット１００が複数ある場合には、複数のロボット１００間で部品１７０を直接持ち替えることもある。より具体的には、一方のロボット１００の把持方法Ａと他方のロボットの把持方法Ｂとで、干渉せずに部品１７０を直接持ち替えることができれば、「○」となる。同様に、一台のロボット１００であっても、アームが複数ある場合には、アーム毎に把持方法を規定することになる。
【００２７】
また、持ち替え治具１３０は複数あってもよいが、持ち替え治具１３０の把持方法が直接変化することはあり得ない。さらに、持ち替え治具１３０で部品１７０が把持された状態から直接、整列台１４０の安定姿勢に移動することはあり得ない。同様に、仮置き台１２０に置かれた部品１７０が持ち替え治具１３０又は整列台１４０に直接移動することもない。以上のことから、４行４列から８行８列までは全て「−」となっている。このように、組合せてとしては考えられても、部品１７０を直接持ち替えることができない、すなわち、部品１７０が持ち替えずに直接移動できない場合を「×」として表示し、組合せとして意味がない場合は「−」としている。
【００２８】
また、把持した時のハンド間の干渉に限らずに、把持するまでの移動時の干渉を考慮してもよい。移動とは、例えば、ハンドの爪の開閉、把持位置までのハンドの移動である。把持位置までの移動方向は、単純にはハンドの基部から先端方向であるが、それ以外にも作業者が設定してもよい。
【００２９】
持ち替え経路算出部２６０では、組合せ可否算出部２５０が出力する組合せ可否結果から、各組合せの一方を初期状態に、もう一方を最終状態とする経路において、移動回数が最小となる経路を全て算出して、持ち替え経路群として出力する。
【００３０】
図５は実施の形態１による移動回数を説明する組合せの一例を示す図である。より具体的には、把持方法及び安定姿勢の組合せにおける、持ち替え経路算出部２６０で算出される部品１７０の最小の移動回数を纏めた図である。ｉ行ｊ列の項目は、ｉの状態からｊの状態までの最低移動回数を表現している。６行目から８行目は、仮置き台１２０の安定姿勢からの移動を表し、６列目から８列目は整列台１４０の安定姿勢への移動を表している。
【００３１】
ここで、図５の移動回数の数え方について説明する。図４と図５とを比較すると、図４で組合せが「○」となっている箇所は、部品１７０を持ち替えることなく直接、移動することができるので、図５では全て移動回数は１回になっている。また、把持方法１から把持方法１へのように同じ把持方法の場合、部品１７０は移動しないことになるので、移動回数は０回になっている。一方、仮置き台１２０の安定姿勢１から整列台１４０の安定姿勢１へとなる組合せ（図４では「−」の箇所）では、例えば、仮置き台１２０の安定姿勢１から把持方法１へ、把持方法１から整列台１４０の安定姿勢１へと、図４で組合せが「○」となっている箇所を２回介することで、部品１７０を移動させることができるので、移動回数は２回となる。さらに、図４で「×」となっている箇所でも、「○」となっている組合せ（経路）を複数回介することで、部品１７０を移動させることができる。
【００３２】
例えば、１行２列目は、把持方法１から把持方法４へ、把持方法４から把持方法２へと至るので、移動回数としては２回となる。６行６列は、仮置き台１２０の安定姿勢１から把持方法１へ、把持方法１から整列台１４０の安定姿勢１へと至るので、移動回数としては２回となる。６行８列は、仮置き台１２０の安定姿勢１から把持方法１へ、把持方法１から把持方法４へ、把持方法４から把持方法２へ、把持方法２から整列台１４０の安定姿勢３に至るので、移動回数としては４回となる。以上のように、移動回数の数え方は、最小となる図４の「○」の組合せ（経路）の回数となる。
【００３３】
最小の移動回数を実現する経路は複数ある。例えば、６行８列は、上記の他に、仮置き台１２０の安定姿勢１から把持方法３、把持方法５、把持方法２と順番に経由して、整列台１４０の安定姿勢３に至るので、経路が異なるが、移動回数としては同じ４回となる。持ち替え経路算出部２６０では、全ての初期状態と最終状態との組合せにおいて、最小の移動回数となる全ての経路を算出して、持ち替え経路群として出力する。
【００３４】
ここで、移動回数が最小となる経路を抽出しているが、移動時間が短くなる経路を抽出してもよい。各移動が単純で、ロボット１００の移動時間がどの移動時間でも殆ど同じ場合には、移動回数で移動時間を近似することができる。ところが、複雑な移動が含まれる場合、単純な移動の場合と比較して移動時間がより大きくなる。このような場合には、移動回数だけでは移動時間を近似することは困難である。そこで、最小の移動時間を実現する経路と、その移動時間からの差が小さい経路を抽出してもよい。移動時間の差は、何秒といった絶対値でも良いし、何％といった割合でもよい。
【００３５】
持ち替え経路算出部２６０は、各組合せの初期状態から最終状態までの経路において、部品１７０の移動回数が最小となる経路を全て算出するものである。前段落でも説明したように、部品１７０の移動回数が最小となる経路の群が、必ずしも部品１７０の移動時間が最小となる経路を含んでいるとは限らない。このため、持ち替え経路算出部２６０は、移動回数ではなく、移動時間を算出して、最短の移動時間から所定の移動時間内に移動できる経路を全て算出するものでもよい。ここで、所定の移動時間とは、最短の移動時間に対して何秒といった絶対値であったり、最短の移動時間の何％といった割合であったりする。また、この場合、図５の代わりに、又は図５の移動回数の情報と組み合わせて、移動時間の情報を持つことになる。このように、持ち替え経路算出部２６０は、組合せ可否算出部２５０で算出された組合せを用いて部品１７０の持ち替え経路を算出することになる。
【００３６】
姿勢データ２７０は、仮置き台１２０上で取扱う部品１７０の姿勢である投入姿勢データと、最終的に整列台１４０上で整列させる姿勢である整列姿勢データの両方が設定されている。姿勢データ２７０は、部品１７０の投入姿勢データ及び整列姿勢データのデータベースであり、記憶装置３０１に記憶されている。
【００３７】
経路群算出部２８０は、姿勢データ２７０のデータ及び持ち替え経路算出部２６０が算出する経路を基に、指定された投入姿勢から最終的な整列状態へ至る持ち替え経路群から、適切な経路の組合せを経路群として算出して出力する。ここで適切であるとは、例えば、教示点の数が最小となる経路の組合せのことをいう。別の言葉で表現すると、図４で「○」が埋められている組合せの内、使用される組合せが最小となる経路の組合せである。このように、経路群算出部２８０は、部品１７０の投入姿勢及び整列姿勢を指定する投入及び整列姿勢データに基づいて、持ち替え経路から教示点の数が最小となる経路を経路群として算出することになる。
【００３８】
プログラム生成部２９０では、経路群算出部２８０が出力する経路群を実現するロボットプログラムを生成して出力する。なお、経路群算出部２８０が出力する適切な経路の組合せである経路群は、１つが算出されるとは限らない。経路群算出部２８０が複数の経路群を出力することもあり、この場合、プログラム生成部２９０では、それぞれの経路群にあわせたロボットプログラムを生成して出力することになる。複数のロボットプログラムが生成される場合には、例えば、教示作業者がどのロボットプログラムを適用するか、適宜選択すればよい。
【００３９】
把持方法算出部２２０、安定姿勢算出部２３０、組合せ可否算出部２５０、持ち替え経路算出部２６０、経路群算出部２８０、及びプログラム生成部２９０での演算は、図３のプロセッサ３００で演算されるものであり、プログラム生成部２９０はプログラムを出力することになる。
【００４０】
ロボットプログラムは、ロボット１００の移動及び信号処理の流れを表現するものであり、例えば、移動の目標位置は位置変数として扱われるのが一般的である。この位置変数は教示作業によって現物合わせで入力される。このため、位置変数は、例えば、初期値として全て０が入力されており、実際にロボット１００を運転させることはできないものである。
【００４１】
本発明では、プログラムで利用されている位置変数は、異なる移動経路であっても、同じ目標位置であれば共有される。図４及び図５を用いた例では、仮置き台１２０の安定姿勢３から整列台１４０の安定姿勢１に移動させる移動経路と、仮置き台１２０の安定姿勢３から整列台１４０の安定姿勢３に移動させる移動経路とでは、どちらの移動経路にも含まれるものとして、仮置き台１２０の安定姿勢３をロボット１００の把持方法２で把持する目標位置は、共通の教示点として共有する。また、ロボット１００の把持方法１から持ち替え治具１３０の把持方法４に部品１７０を渡す時のロボット１００の目標位置と、持ち替え治具１３０の把持方法４からロボット１００の把持方法１に部品１７０を渡す時のロボット１００の目標位置とでは、作業は異なっているも同じ目標位置でよく、共通の教示点として共有する。
【００４２】
図６はプログラム生成部２９０が出力するロボットプログラムのフローチャートの例である。初期化Ｓ５０１は、ロボットプログラムの起動時に一度だけ実行される処理である。変数及びパラメータの初期化、初期位置への移動等の処理が行われる。次に、３次元ビジョンセンサ認識処理Ｓ５０２は、３次元ビジョンセンサ１５０で部品供給台１１０のバラ積み部品１７０を認識し、ロボット１００が部品１７０を把持するための目標位置姿勢を計算する処理である。また、バラ積みからの取出しＳ５０３は、３次元ビジョンセンサ認識Ｓ５０２の結果を基に、バラ積み状態の部品１７０から、部品１７０を取り出して仮置き台１２０に投入する処理である。説明を簡単にするため、ここでは部品１７０が一つだけ取り出されるとする。
【００４３】
２次元ビジョンセンサ認識処理Ｓ５０４は、仮置き台１２０に設置された部品１７０の位置姿勢を２次元ビジョンセンサ１６０で認識する処理である。次に、移動経路選択Ｓ５０５は、部品１７０の位置姿勢の認識結果から、部品１７０がどの安定姿勢であるかを判定し、仮置き台１２０から整列台１４０までの移動経路を選択する処理である。経路群算出部２８０が出力した経路群の内、２次元ビジョンセンサ１６０で認識した安定姿勢から始まる移動経路を選択する処理である。さらに、部品整列Ｓ５０６は、選択された移動経路で、仮置き台１２０上の部品１７０を整列台１４０に移動させる一連の処理である。部品整列Ｓ５０６で部品１７０を整列させた後は、３次元ビジョンセンサ認識処理Ｓ５０２に戻る。
【００４４】
このフローチャートでは、説明を簡単にするため、バラ積み状態から部品１７０を一つだけ仮置き台１２０に取り出せることを前提にしている。ところが、バラ積みからの取出しＳ５０３の工程で、一度に複数の部品１７０を取り出すことは、よくあることである。このようなことがあるため、処理の流れとしては、エラーリカバリ―を含めて様々なバリエーションがある。
【００４５】
例えば、複数の部品１７０を取り出すことを前提に、部品整列Ｓ５０６の後は２次元ビジョンセンサ認識処理Ｓ５０４に戻り、認識した結果、仮置き台１２０に部品１７０が存在しない場合には、３次元ビジョンセンサ認識処理Ｓ５０２に戻るといったフローもある。本発明は、部品１７０の位置姿勢が確定された後に、部品１７０の移動プログラムを生成させることに主眼があり、移動プログラム周辺のプログラム構成は、どのようなものであってもよい。
【００４６】
最後に作業者は、プログラム生成部２９０が出力したプログラムで利用されている位置変数を教示し、ロボット１００が移動可能な教示点とすることで、運転可能なロボットプログラムが完成する。
【００４７】
以上の説明は、説明を簡単にするために、適用するロボットシステムを限定し、発明内の各機能の処理も限定したが、これに限定されるものではない。例えば、複数のロボット１００を利用したロボットシステムとしてもよい。
【００４８】
持ち替え治具１３０等を利用して、一台のロボット１００で複数の工程をこなすと、部品１７０あたりの平均整列時間が伸びることになる。例えば、図５では、仮置き台１２０の安定姿勢１を整列台１４０上の安定姿勢３で整列させるためには、持ち替え治具１３０を利用しているため、４回の移動を伴っている。仮に、この工程を２台のロボット１００でパイプライン処理すれば、システム全体としては、１台のロボット１００が２回の移動で整列するのと同じ時間で整列させ続けることができる。このように、複数のロボット１００を用いれば、システムのスループットを向上することができる。
【００４９】
このように複数のロボット１００を利用する場合には、システム構成データ２４０で設定された、各ロボット１００のアクセス可能先（ハンドの接続先）が異なることになる。ロボット１００が１台の構成では、そのロボット１００は全ての台（部品供給台１１０、仮置き台１２０、整列台１４０）及び持ち替え治具１３０にアクセスできたが、複数のロボット１００で分業するようなシステムを組む場合には、各ロボット１００のハンドの接続先が異なることになる。また、他のロボット１００との持ち替えも発生するため、アクセス先としては部品供給台１１０、仮置き台１２０、整列台１４０、持ち替え治具１３０に加えて、他のロボット１００も追加されることになる。システム構成データ２４０としては、これらのハンドの接続先の情報が必要となる。
【００５０】
組合せ可否算出部２５０では、各ハンドのアクセス先を考慮して、アクセスが不可能な組合せにおいては、組合せ不可と判断する。持ち替え経路算出部２６０と経路群算出部２８０との処理は変わらない。また、プログラム生成部２９０は、複数のロボット１００のプログラムを出力することになるが、１台のロボット１００の処理と同様の出力となる。
【００５１】
図１では、適用するロボット１００システムとして、３次元ビジョンセンサ１５０と２次元ビジョンセンサ１６０とを、それぞれ部品供給台１１０と仮置き台１２０の上に固定しているものとして説明した。これに拘ることはなく、別のハードウェアを利用するのではなく、２次元ビジョンセンサ１６０の処理を３次元ビジョンセンサ１５０で実施してもよい。また、それぞれのカメラ（３次元ビジョンセンサ１５０、２次元ビジョンセンサ１６０など）を台の上に固定するのではなく、上空に取付けた駆動部に取付けてもよいし、ロボット１００に取付けて移動可能としてもよい。これらカメラの設置構成を問わず、本発明は適用可能である。
【００５２】
組合せ可否算出部２５０では、システム構成データ２４０に含まれるハンドの接続先情報を基に、可否を判断する組合せを限定していた。例えば、図４では、ロボット１００に取付けられたハンドの把持方法間と、持ち替え治具１３０に取付けられたハンドの把持方法間での組合せにおける可否は算出していなかった。
【００５３】
ロボット１００が複数の場合には接続先のロボット１００によってアクセス可能先は異なっており、アクセス不可（持ち替え実現の可否)の組合せも、当然、図４の場合とは異なことになる。そこで、どこに接続されているかの制約を無視して、全ての把持方法及び安定姿勢による組合せで可否の判断を実施してもよい。もっとも、同じハンドをシステム内の複数の機器で利用する場合には、接続先が異なるハンド毎に組合せ可否を算出するのではなく、ハンド毎に算出した方が算出する組合せが少なくなることがある。
【００５４】
この場合、システム構成情報は持ち替え経路算出部２６０で初めて利用されることになる。持ち替え経路算出部２６０では、接続先によってハンドのアクセス可能先が変わるので、ハンド接続先の情報が必要となるからである。
【００５５】
これまでは、部品１７０が実現し得る全ての安定姿勢に対して、仮置き台１２０から最終の整列姿勢への移動経路を含むプログラムの生成方法を説明してきた。プログラムで生成する移動経路について、自由度があってもよい。
【００５６】
先ず、安定姿勢算出部２３０が導出した全ての安定姿勢を取扱う必要がない場合がある。部品１７０によっては、非常に不安定で、現実的には仮置き台１２０上で現れない安定姿勢が存在する場合がある。例えば、ペンを立たせることはできるが、その姿勢は非常に不安定であり、仮置き台１２０に乱暴に投入した場合には、その発生確率は無視できる程に小さい。そのような姿勢に対するプログラムの作成・調整は無駄な作業になる。
そのため、非常に不安定な安定姿勢については、安定姿勢算出部２３０で安定姿勢から除去してもよい。小さな外力を与えた場合であっても、別の安定姿勢に遷移する安定姿勢を除外するものである。例えば、ペンのような細長い形状の部品を立てたような安定姿勢である。また、安定姿勢算出部２３０で除去する以外に、姿勢データ２７０で除外してもよい。
【００５７】
また、移動経路の初期状態として安定姿勢以外を設定してもよい。これによって、ロボット１００が部品１７０を把持した状態からの移動経路が含まれたプログラムが出力される。例えば、確率的な手法で部品１７０を把持し、その把持状態を画像認識するようなシステムで利用される。
【００５８】
さらに、移動経路の最終状態として、一つの安定姿勢だけでなく、複数の安定姿勢、又は複数の把持状態を設定してもよい。この時、全ての初期状態と最終状態との組合せを移動経路としてプログラムを生成してもよいし、姿勢データ２７０で、取扱う初期状態と最終状態との組合せを設定してもよい。
【００５９】
本実施の形態で記載したロボットシステムの形態及び各機能の処理は一例であり、これに限定されるものではない。また、作業者が入力する外部からのデータ入力で、一部の機能を補うこともできる。
【００６０】
また、経路群算出部２８０が出力した経路群を作業者に提示して、作業者が移動経路を選択・修正するようにしてもよい。他の機能に関しても出力結果及び候補を作業者に提示し、作業者が選択又は修正してもよい。
【００６１】
以上、本発明のロボットプログラム生成装置は、ハンドと部品１７０の３次元形状データから部品１７０の把持方法を出力する把持方法算出部２２０と、３次元形状データから部品１７０の平面上で安定する姿勢を算出して、部品１７０の安定姿勢として出力する安定姿勢算出部２３０と、少なくともハンドの接続先情報が含まれるシステム構成データ２４０と、部品１７０の把持方法及び部品１７０の安定姿勢から、２つの把持方法間の組合せ及び把持方法の内の一つと部品１７０の安定姿勢の内の一つとの間の組合せの、少なくともどちらか一方の組合せにおける、ハンドの干渉について判定して、組合せ可否を出力する組合せ可否算出部２５０と、組合せ可否から、部品１７０の把持方法及び安定姿勢の、少なくともどちらか一方の組合せにおける、全ての持ち替え経路を算出して出力する持ち替え経路算出部２６０と、部品１７０の投入姿勢及び最終の整列姿勢を指定する姿勢データ２７０を基に、持ち替え経路から、教示点の数が最小となる経路の組合せを経路群として出力する経路群算出部２８０と、経路群からロボットのプログラムを出力するプログラム生成部２９０とを備えている。
【００６２】
換言すれば、本発明のロボットプログラム生成装置は、部品の３次元形状データから部品が平面上で安定する安定姿勢を算出する安定姿勢算出部と、ハンドの３次元データ及び３次元形状データから部品をハンドで把持する把持方法を算出する把持方法算出部と、当該ロボットによる把持方法と当該ロボット以外による把持方法及び安定姿勢との組合せ群から、ハンドの接続先の情報を含むシステム構成データ、安定姿勢、及び把持方法に基づいて、ハンドが干渉しない組合せを算出する組合せ可否算出部と、組合せ可否算出部で算出された組合せを用いて部品の持ち替え経路を算出する持ち替え経路算出部と、部品の投入姿勢及び整列姿勢を指定する姿勢データに基づいて、持ち替え経路から教示点の数が最小となる経路を経路群として算出する経路群算出部と、ロボットのプログラムを経路群に基づいて生成するプログラム生成部とを備えたので、複数の移動経路において教示点を共有することで、教示点数の少ないロボットプログラムを生成することができる。これによって、作業者による教示作業の調整工数を減らすことができる。このように、組合せ可否算出部は、安定姿勢及び把持方法のいずれか一方と把持方法との組合せ群からハンドが干渉しない組合せを一つ以上、算出している。
【００６３】
実施の形態２．
実施の形態１では、ロボットプログラムを生成した後に、作業者が教示点を教示していたが、プログラムで教示点のデータを生成してもよい。ここでは、実施の形態１との相違点を中心に説明する。説明が不足する箇所については、実施の形態１と同様の構成である。
【００６４】
図７は本発明の実施の形態２によるプログラム生成装置の機能構成図である。説明を簡単にするため、先ずは、ロボット１００が１台の場合で説明する。なお、図において、同一の符号を付したものは、同一またはこれに相当するものであり、このことは明細書の全文、図面の全図において共通することである。さらに、明細書全文に表れている構成要素の形態は、あくまで例示であってこれらの記載に限定されるものではない。
【００６５】
システム構成データ２４０に実施の形態１の情報に加えて、仮置き台１２０、整列台１４０、持ち替え治具１３０の位置情報を設定する。システム構成データ２４０は、ハンドの接続先の情報の他に、ハンドが作業をする作業位置のデータを含むことになる。これらの位置情報はロボット１００座標系の基、ロボット１００のベース位置からの相対位置で設定される。
【００６６】
教示点出力部６００は、プログラム生成部２９０が出力したプログラムで使用されている教示点をロボット１００の座標系の基で計算する。まず、出力されたプログラムの教示点が、どの位置の作業であるかを経路情報から抽出する。ロボット１００の作業位置とは、仮置き台１２０、整列台１４０、持ち替え治具１３０のことである。この作業位置の位置情報に部品１７０が設置された場合に、経路情報で設定されている把持方法を実現した時のロボット１００の位置姿勢データを算出し、教示点として出力する。なお、教示点出力部６００はプロセッサ３００で演算されるものであり、教示点出力部６００は教示点を出力することになる。
【００６７】
ここで、ハンドの位置姿勢を実現する際に、ロボット１００の位置姿勢が複数あり、ロボット１００の位置姿勢データが一意に定まらないこともある。このような場合には、そのハンドの位置を実現するロボット１００の位置姿勢の何れかを教示点として出力するようにしてもよいし、複数の教示点の候補から作業者が選択できるように提示してもよい。
【００６８】
作業位置が、平面ではなく持ち替え治具１３０の場合には、持ち替え治具１３０の位置と、持ち替え治具１３０の把持方法を基に、部品１７０の設置位置姿勢が決まる。
【００６９】
次に、複数のロボット１００を利用する場合には、システム構成データ２４０に各ロボット１００の設置位置を含め、そのロボット１００からの相対位置で教示点データを計算する。また、ロボット１００間で受け渡しを行う場合には、少なくともどちらか一方のロボット１００の受渡し作業時の位置姿勢をシステム構成データ２４０で設定する。
【００７０】
図７では、プログラム生成部２９０でプログラムを生成した後に、教示点出力部６００で教示点データを出力したが、プログラム生成部２９０より前の段階で出力してもよい。作業者が作業位置と把持方法とを設定することで、教示点データを出力することは可能である。このため、把持方法算出部２２０で把持方法が設定された後であれば、作業者からの任意の要求タイミングで教示点データは出力可能だからである。
【００７１】
以上、本実施の形態によれば、システム構成データ２４０で作業位置のデータを設定し、作業位置に部品１７０があるとして把持方法を実現するハンドの位置を計算し、教示点データを出力する移動経路教示点出力部６００を備えたことで、教示作業を省力できる効果がある。
【００７２】
換言すれば、本発明のロボットプログラム生成装置は、部品の３次元形状データから部品が平面上で安定する安定姿勢を算出する安定姿勢算出部と、ハンドの３次元データ及び３次元形状データから部品をハンドで把持する把持方法を算出する把持方法算出部と、当該ロボットによる把持方法と当該ロボット以外による把持方法及び安定姿勢との組合せ群から、ハンドの接続先の情報を含むシステム構成データ、安定姿勢、及び把持方法に基づいて、ハンドが干渉しない組合せを算出する組合せ可否算出部と、組合せ可否算出部で算出された組合せを用いて部品の持ち替え経路を算出する持ち替え経路算出部と、部品の投入姿勢及び整列姿勢を指定する姿勢データに基づいて、持ち替え経路から教示点の数が最小となる経路を経路群として算出する経路群算出部と、ロボットのプログラムを経路群に基づいて生成するプログラム生成部とを備えたので、複数の移動経路において教示点を共有した、教示点数の少ないロボットプログラムを生成することができる。また、教示点が出力されるので、作業者の調整工数を減らすことができる。なお、組合せ可否算出部は、安定姿勢及び把持方法のいずれか一方と把持方法との組合せ群からハンドが干渉しない組合せを一つ以上、算出している。
【００７３】
実施の形態３．
実施の形態２では教示点のデータを生成していたが、教示点でロボット１００が位置姿勢をとれるかの可否を判定して、教示点を出力してもよい。ロボット１００が教示位置姿勢をとれない（実現できない）ことがあるからである。ここでは、実施の形態１及び２との相違点、特に実施の形態２との相違点を中心に説明する。説明が不足する箇所については、実施の形態１及び２と同様の構成である。
【００７４】
実施の形態１及び２を実施しようとしても、ロボット１００が教示位置姿勢をとることができないことがある。分かりやすい例として、台の上にある部品１７０が遠すぎてロボット１００のハンドが届かない場合がある。その他にも、ロボット１００の関節角度が実現できない角度となる場合がある。ロボット１００が６自由度を有していても、全ての関節で３６０度の可動領域を有するわけではない。また、ロボット１００の一部がロボット１００本体内に入り込むような間接角度の組合せも存在する。そのため、ロボット１００の関節によっては、可動領域が制限されるのが通常である。また、ロボット１００毎にこの可動領域も異なり、使用を予定しているロボット１００固有の制約条件になる。さらに、ここに床面及び壁といった外部環境による動作可能領域の制約が加わることもある。このように、教示点でロボット１００が教示位置姿勢をとれない（実現できない）ことがある。
【００７５】
図８は本発明の実施の形態３によるプログラム生成装置の機能構成図である。使用するロボット１００に関連する情報を基に、教示点となる位置でロボット１００が教示位置姿勢を実現できるかを教示点判定部７００で判定している。なお、教示点判定部７００は、図８の組合せ可否算出部２５０の工程以降で行ってもよい。
【００７６】
もっとも、教示点判定部７００の工程が組合せ可否算出部２５０の工程の前にあれば、教示点判定部７００の判定結果を組合せ可否算出部２５０の工程でも反映させることができるので、より作業者による教示作業の省力化を図ることができる。また、教示点出力部６０１も教示点判定部７００の工程以降であれば、どこであってもよい。ロボット１００に関連する情報には、ハンドの接続先の情報及びハンドが作業をする作業位置のデータを含むシステム構成データ２４０と、安定姿勢と、把持方法が含まれる。
【００７７】
使用するロボット１００の情報、少なくともハンドの接続先の情報、及びハンドが作業をする作業位置のデータをシステム構成データ２４０に設定し、教示点判定部７００で教示点を実現できるかの可否を判定する。この他にも、システム構成データ２４０には、使用を予定しているロボット１００が有する固有の制約条件、必要に応じて外部環境による制約が含まれることもある。
【００７８】
教示点判定部７００の判定結果を教示点出力部６０１で出力することになる。教示点判定部７００の判定結果として、例えば、実現できない（否の）場合には、教示点出力部６０１で作業者にエラーを出力し、実現できる（可の）場合には、教示点を出力することになる。なお、教示点判定部７００及び教示点出力部６０１はプロセッサ３００で演算されるものである。
【００７９】
以上のように、システム構成データ２４０は、ハンドの接続先の情報及びハンドが作業をする作業位置のデータを含み、作業位置に部品１７０があるときに教示点となる位置で、ロボット１００が教示位置姿勢とれるかの可否を判定する教示点判定部７００を備えたので、システム構成の実現性を事前に検証できるようになる。
【００８０】
ここで、教示点判定部７００の判定方法の例について詳述する。図９は平面となる作業位置（例えば、仮置き台１２０）にある部品１７０の例を示す図である。図９は仮置き台１２０上にある部品１７０を上方からみた状態の例であり、図９の（ａ）から（ｉ）まで、部品１７０を平面となる仮置き台１２０上で、平面に垂直な軸（法線）で右側に４５度毎に回転させたものである。一周することで部品１７０は、図９の（ａ）と（ｉ）とで同じ位置となる。図９の（ａ）と（ｉ）とは、平面内で回転させた設置角度が同じになっている。
【００８１】
教示点判定部７００は、システム構成データ２４０で指定した作業位置で部品１７０を回転させながら、教示点となる位置でロボット１００による教示位置姿勢の実現可否を判断する。具体的には、仮置き台１２０に部品１７０を投入した場合には、図９のように、部品１７０を平面上で平面に垂直な軸（法線）で回転させる。部品１７０を把持する位置姿勢をロボット１００が常に実現できるかを判定するためには、部品１７０を平面内で回転させて判定する必要があるからである。平面内で回転させた全範囲の設置角度で把持方法を実現できるかで可否を判定する。
【００８２】
教示点判定部は、平面となる作業位置に部品１７０がある場合には、部品１７０を平面に垂直な軸（法線）で回転させた全範囲でロボット１００が教示位置姿勢をとることができる場合に可と判定することになる。判定が可であれば、全範囲でロボット１００が教示位置姿勢をとることができるので、図９の例では、（ａ）から（ｉ）までのどの設置角度であっても、当然、ロボット１００は教示位置姿勢をとることができる。このようにして、使用するロボット１００の位置姿勢の実現可否を判定することで、システム構成の実現性を事前に検証できる効果が得られる。
【００８３】
このように、本発明のロボットプログラム生成装置は、部品の３次元形状データから部品が平面上で安定する安定姿勢を算出する安定姿勢算出部と、ハンドの３次元データ及び３次元形状データから部品をハンドで把持する把持方法を算出する把持方法算出部と、当該ロボットによる把持方法と当該ロボット以外による把持方法及び安定姿勢との組合せ群から、ハンドの接続先の情報を含むシステム構成データ、安定姿勢、及び把持方法に基づいて、ハンドが干渉しない組合せを算出する組合せ可否算出部と、組合せ可否算出部で算出された組合せを用いて部品の持ち替え経路を算出する持ち替え経路算出部と、部品の投入姿勢及び整列姿勢を指定する姿勢データに基づいて、持ち替え経路から教示点の数が最小となる経路を経路群として算出する経路群算出部と、ロボットのプログラムを経路群に基づいて生成するプログラム生成部とを備えている。なお、組合せ可否算出部は、安定姿勢及び把持方法のいずれか一方と把持方法との組合せ群からハンドが干渉しない組合せを一つ以上、算出している。
【００８４】
特に、教示点判定部は、平面となる作業位置に部品がある場合には、部品を平面に垂直な軸で回転させた全範囲でロボットが教示位置姿勢をとることができる場合に可と判定する。これらによって、複数の移動経路において教示点を共有した、教示点数の少ないロボットプログラムを生成することができる。また、使用するロボットの位置姿勢の実現可否を判定することで、システム構成の実行性を判断できる。
【００８５】
実施の形態４．
実施の形態３では、教示点判定部７００は、平面となる作業位置に部品１７０がある場合には、部品１７０を平面に垂直な軸で回転させた全範囲でロボット１００が教示位置姿勢をとることができる場合に可と判定した。実施の形態４では、部品１７０を平面に垂直な軸で回転させた全範囲ではなく、所定の設置角度の範囲内であれば、ロボット１００が教示位置姿勢をとることができる場合は、ロボット１００が教示位置姿勢をとることができる場合として、把持が実現できる把持方法を組合せたプログラムを生成してもよい。
【００８６】
図１０は本発明の実施の形態４によるプログラム生成装置の機能構成図である。教示点判定部７０１は教示点判定部７００と異なり、部品１７０を平面に垂直な軸で回転させた全範囲ではなく、所定の設置角度の範囲内であれば、教示点となる位置でロボット１００が教示位置姿勢とれる場合に、所定の設置角度の範囲内については可と判定することになる。その他の点については、教示点判定部７０１と教示点判定部７００とで異なる点は無い。
【００８７】
把持方法と安定姿勢の組合せ毎に、例えば、仮置き台１２０上で部品１７０を回転させたとき、ロボット１００が把持方法を実現できる部品１７０の回転範囲を算出する。教示点判定部７０１は、平面となる作業位置に部品１７０がある場合には、部品１７０を平面に垂直な軸（法線）で回転させて、教示点となる位置でロボット１００が教示位置姿勢をとれる設置角度の範囲を算出して可と判定することになる。
【００８８】
例えば、図９の例では、（ｂ）から（ｄ）までと、（ｆ）から（ｈ）までとであれば、部品１７０を平面に垂直な軸で回転させてロボット１００が教示位置姿勢をとることができならば、該当の設置角度の範囲で教示点判定部７０１は可と判定することになる。このように、設置角度の範囲は３６０度の中でも、複数の範囲で可に該当することもある。また、図９の例では４５度単位であったが、これは例示に過ぎず、設置角度の範囲を決定する際には、より細かな単位、あるいはより大きな単位でも設定することができる。
【００８９】
把持経路算出部８００は、教示点判定部７０１で可となる設置角度の範囲にある部品１７０をハンドで把持する経路を算出する。部品１７０の安定姿勢毎に、平面内で回転させた全範囲の設置角度において、ロボット１００が位置姿勢を実現できる設置角度が特定できているので、把持方法の組合せを算出することができる。
【００９０】
把持経路算出部８００は、平面となる作業位置（例えば、仮置き台１２０）の部品１７０について、教示点判定部７０１の判定結果で可となる設置角度の部品１７０をハンドで把持する経路を算出して、把持経路を算出する。これによって、一律に否とせずに、所定の範囲内にある設置角度の部品１７０であれば、把持可能な把持方法を用いた移動経路を選択するプログラムを生成することができる。
【００９１】
教示点出力部６０２は、教示点出力部６００，６０１と同様の働きをするもので、教示点をロボット１００の座標系の基で計算し出力する。また、教示点出力部６０２は、教示点判定部７０１の工程以降のどこにあってもよい。なお、教示点判定部７０１、把持経路算出部８００及び教示点出力部６０２はプロセッサ３００で演算されるものである。
【００９２】
以上、教示点判定部は、平面となる作業位置に部品がある場合には、部品を平面に垂直な軸で回転させて可となる設置角度を算出し、教示点判定部で可となる設置角度の部品をハンドで把持する経路を算出する把持経路算出部を備えるので、平面となる作業位置で部品１７０が回転した際に、一つの把持方法だけでは対応できない場合でも、複数の把持方法を組合せて対応するプログラムを出力することができる。
【００９３】
このように、本発明のロボットプログラム生成装置は、本発明のロボットプログラム生成装置は、部品の３次元形状データから部品が平面上で安定する安定姿勢を算出する安定姿勢算出部と、ハンドの３次元データ及び３次元形状データから部品をハンドで把持する把持方法を算出する把持方法算出部と、当該ロボットによる把持方法と当該ロボット以外による把持方法及び安定姿勢との組合せ群から、ハンドの接続先の情報を含むシステム構成データ、安定姿勢、及び把持方法に基づいて、ハンドが干渉しない組合せを算出する組合せ可否算出部と、組合せ可否算出部で算出された組合せを用いて部品の持ち替え経路を算出する持ち替え経路算出部と、部品の投入姿勢及び整列姿勢を指定する姿勢データに基づいて、持ち替え経路から教示点の数が最小となる経路を経路群として算出する経路群算出部と、ロボットのプログラムを経路群に基づいて生成するプログラム生成部とを備えている。なお、組合せ可否算出部は、安定姿勢及び把持方法のいずれか一方と把持方法との組合せ群からハンドが干渉しない組合せを一つ以上、算出している。
【００９４】
特に、教示点判定部は、平面となる作業位置に部品がある場合には、部品を平面に垂直な軸で回転させてロボットが教示位置姿勢をとることができる設置角度を算出し、教示点判定部で教示位置姿勢をとることができる設置角度に部品がある場合には、ハンドで部品を把持する経路として算出する把持経路算出部を備えているので、平面となる作業位置で部品が回転した時に、一つの把持方法だけでは対応できない場合にも、複数の把持方法を組合せて対応するプログラムを出力することができる。
【００９５】
実施の形態５．
実施の形態５は、実施の形態１から実施の形態４のいずれか一つの実施の形態に対して、ロボットの運転状況に応じて、ハンドの移動速度を制限した上で、保守作業を要求するプログラムを生成するものが追加されたものである。
【００９６】
バラ積み部品１７０の整列システムでは、部品１７０の取りこぼしなどの作業失敗なしに運転し続けることは困難であり、適切なタイミングで保守作業を実施する必要がある。バラ積み部品１７０の取り扱いでは、部品１７０の位置姿勢の不確定性が高く、また、不良部品１７０が混入している可能性も高い。このため、一般的な化設備のように、１００％に近い作業成功率を実現するのは困難である。
【００９７】
このため、作業を失敗する度に作業者による復旧作業を行う運用は効率が悪く、ある一定量の失敗は許容して運転を続行するシステムが要求される。ここで、許容する失敗とは、部品１７０を移動中に落とすなど、他の部品１７０を整列させる作業には支障をきたさない失敗を指す。
【００９８】
もっとも、あまりにも多くの部品１７０を落として、堆積した場合には問題が発生する。また、部品１７０管理の観点から、落とした部品１７０の種類と数を把握することが重要である。さらに、システム内のどの工程で部品１７０を落としたが分かれば、保守作業者による部品１７０の回収も容易となる。
【００９９】
図１１は本発明の実施の形態５によるプログラム生成装置の機能構成図である。ここでは、基本形の実施の形態である実施の形態１に対して、保守作業プログラム生成部９００と運転状況データ９１０とが追加されている。運転状況データ９１０は、ロボットの運転状況に関するデータベースであり、記憶装置３０１に記憶されている。また、保守作業プログラム生成部９００での演算は、プロセッサ３００で演算されるものであり、保守作業プログラム生成部９００はプログラムを出力することになる。
【０１００】
保守作業プログラム生成部９００は、プログラム生成部２９０が出力したロボットプログラムに、保守作業を要求するプログラムを生成して出力するものでる。保守作業プログラム生成部９００の出力は、プログラム生成部２９０が生成するプログラムに追加してプログラムを出力してもよい。追加するプログラムとしては、運転履歴が一定の条件を満たしたら、ロボット１００の移動速度を安全速度に制限し、保守作業を要求するものである。
【０１０１】
ここで、運転履歴の一定条件とは、例えば、前回の保守作業から、指定した回数の作業失敗が発生するなどである。作業失敗は、例えば、２次元ビジョンセンサ１６０による仮置き台１２０の認識、又はロボット１００の力覚センサによる把持部品１７０の監視、整列台１４０の整列部品１７０の確認等で検知できる。また、安全速度とは、例えば、手先合成速度が２５０ｍｍ／ｓｅｃ以下といった教示作業時の移動速度であり、作業者がロボット１００との衝突を回避することが容易な速度である。
【０１０２】
これによって、ロボット１００の移動速度を制限することで、ロボット１００を運転停止することなく保守作業を安全に行うことができる。また、保守作業の要求とは、落下させた部品１７０除去の保守作業者への要求である。このとき、作業失敗を検知したときの部品１７０の種別と、想定される落下場所等の情報を付加してもよい。保守作業が完了した後は、移動速度の制限を解除して、運転を継続すればよい。
【０１０３】
本発明のロボットプログラム生成装置は、部品の３次元形状データから部品が平面上で安定する安定姿勢を算出する安定姿勢算出部と、ハンドの３次元データ及び３次元形状データから部品をハンドで把持する把持方法を算出する把持方法算出部と、当該ロボットによる把持方法と当該ロボット以外による把持方法及び安定姿勢との組合せ群から、ハンドの接続先の情報を含むシステム構成データ、安定姿勢、及び把持方法に基づいて、ハンドが干渉しない組合せを算出する組合せ可否算出部と、組合せ可否算出部で算出された組合せを用いて部品の持ち替え経路を算出する持ち替え経路算出部と、部品の投入姿勢及び整列姿勢を指定する姿勢データに基づいて、持ち替え経路から教示点の数が最小となる経路を経路群として算出する経路群算出部と、ロボットのプログラムを経路群に基づいて生成するプログラム生成部と、ロボットの運転状況データに基づきロボットの移動速度を制限し、ロボットの保守作業を要求する保守作業プログラムを生成する保守作業プログラム生成部とを備えたので、保守作業者が運転状況から保守必要性を確認し、ロボットシステムを停止して保守する場合と比較して、ロボットシステムの運転効率を高めることができる。なお、組合せ可否算出部は、安定姿勢及び把持方法のいずれか一方と把持方法との組合せ群からハンドが干渉しない組合せを一つ以上、算出している。
【符号の説明】
【０１０４】
１００  ロボット、１１０  部品供給台、１２０  仮置き台、１３０  持ち替え治具、１４０  整列台、１５０  ３次元ビジョンセンサ、１６０  ２次元ビジョンセンサ、１７０  部品、２００  ハンド３次元データ、２１０  部品形状３次元データ、２２０  把持方法算出部、２３０  安定姿勢算出部、２４０  システム構成データ、２５０  組合せ可否算出部、２６０  持ち替え経路算出部、２７０  姿勢データ、２８０  経路群算出部、２９０  プログラム生成部、３００  プロセッサ、３０１  記憶装置、６００、６０１、６０２  教示点出力部、７００、７０１  教示点判定部、８００  把持経路算出部、９００  保守作業プログラム生成部、９１０  運転状況データ。
【要約】
ロボット（１００）を用いてバラ積み供給された部品（１７０）を複数の移動経路で整列するプログラムについて、教示点を共有化したプログラムを生成する。部品（１７０）の３次元形状データから部品（１７０）が平面上で安定する安定姿勢を算出し、ハンドで把持する把持方法を算出し、ハンドの接続先の情報を含むシステム構成データ（２４０）、把持方法と安定姿勢との組合せ群からハンドが干渉しない組合せを算出する組合せ可否算出部（２５０）と、算出された組合せを用いて部品の持ち替え経路を算出する持ち替え経路算出部（２６０）と、部品（１７０）の投入姿勢及び整列姿勢を指定する姿勢データ（２７０）に基づいて、持ち替え経路から教示点の数が最小となる経路を経路群として算出する経路群算出部（２８０）と、ロボット（１００）のプログラムを経路群に基づいて生成するプログラム生成部（２９０）とを備える。【図１】
0006418359.tif 000002
【図２】
0006418359.tif 000003
【図３】
0006418359.tif 000004
【図４】
0006418359.tif 000005
【図５】
0006418359.tif 000006
【図６】
0006418359.tif 000007
【図７】
0006418359.tif 000008
【図８】
0006418359.tif 000009
【図９】
0006418359.tif 000010
【図１０】
0006418359.tif 000011
【図１１】
0006418359.tif 000012