(57)【要約】【課題】ユーザがロボットプログラムの作成中に動作軌道の修正が必要か否かを判断できるようにする。【解決手段】演算部が、ロボットを教示する教示点の入力を受け、特異点及び干渉点に重ならないかチェックした後、チェック済みの教示点を設定する（Ｓ１）。演算部が、命令文のうち、教示点間の動作軌道を作成する動作命令文の入力を受ける度に、動作軌道上の複数の補間点を算出する（Ｓ５）。演算部が、複数の補間点のうち、特異点又は干渉点と重なる補間点が存在するか否かを判断する（Ｓ６）。【選択図】図５
2015098076.tif 000002
【特許請求の範囲】
【請求項１】
ロボットに対する命令文を組み合わせたロボットプログラムの作成中に、演算部が前記ロボットプログラムに従う前記ロボットの動作を検証するロボットプログラム作成方法であって、
前記演算部が、前記ロボットを教示する第１教示点及び第２教示点の入力を受ける教示点入力工程と、
前記演算部が、前記命令文のうち、前記第１教示点と前記第２教示点との間の動作軌道を作成する動作命令文の入力を受ける度に、前記動作軌道上の複数の補間点を算出する補間点算出工程と、
前記演算部が、前記複数の補間点のうち、前記ロボットの特異点又は前記ロボットが他部材に干渉する干渉点と重なる重合補間点が存在するか否かを判断する判断工程と、を備えたことを特徴とするロボットプログラム作成方法。
【請求項２】
前記演算部が、前記判断工程における判断結果をユーザに報知する判断結果報知工程を備えたことを特徴とする請求項１に記載のロボットプログラム作成方法。
【請求項３】
前記動作命令文には、前記動作軌道を作成する補間方法を指定する命令が含まれており、
前記補間点算出工程では、前記演算部が、前記動作命令文により指定された補間方法で前記第１教示点と前記第２教示点との間の前記動作軌道を生成し、前記複数の補間点を算出することを特徴とする請求項１又は２に記載のロボットプログラム作成方法。
【請求項４】
前記演算部が、前記判断工程において前記重合補間点が存在すると判断した場合、前記補間方法とは別の補間方法を指定するようユーザに提示する補間方法提示工程を備えたことを特徴とする請求項３に記載のロボットプログラム作成方法。
【請求項５】
前記演算部が、前記判断工程において前記重合補間点が存在すると判断した場合、前記第２教示点の修正をユーザに促す教示点修正工程を備えたことを特徴とする請求項１乃至４のいずれか１項に記載のロボットプログラム作成方法。
【請求項６】
前記教示点修正工程にて前記第２教示点が修正された場合、前記補間点算出工程では、前記演算部が再度、前記複数の補間点を算出し、前記判断工程では、前記演算部が再度、前記重合補間点が存在するか否かを判断することを特徴とする請求項５に記載のロボットプログラム作成方法。
【請求項７】
前記演算部が、前記判断工程において前記重合補間点が存在すると判断した場合、前記第１教示点と前記第２教示点との間に中間教示点を追加するのをユーザに促す教示点追加工程を備えたことを特徴とする請求項１乃至６のいずれか１項に記載のロボットプログラム作成方法。
【請求項８】
前記教示点追加工程にて前記中間教示点が追加された場合、前記補間点算出工程では、前記演算部が、前記中間教示点を新たな前記第２教示点として、再度、前記第１教示点と前記第２教示点との間の動作軌道を生成して該動作軌道上の前記複数の補間点を算出し、前記判断工程では、前記演算部が再度、前記重合補間点が存在するか否かを判断することを特徴とする請求項７に記載のロボットプログラム作成方法。
【請求項９】
前記補間点算出工程では、前記演算部が、互いに異なる複数の補間方法で前記第１教示点と前記第２教示点との間の前記動作軌道を複数生成し、前記各動作軌道に対して前記複数の補間点を算出することを特徴とする請求項１乃至８のいずれか１項に記載のロボットプログラム作成方法。
【請求項１０】
前記演算部が、前記判断工程における判断の結果、前記複数の動作軌道のうち、前記重合補間点がない動作軌道をユーザに提示する動作軌道提示工程を備えたことを特徴とする請求項９に記載のロボットプログラム作成方法。
【請求項１１】
ロボットに教示する第１教示点及び第２教示点の入力操作が可能な教示部と、
前記ロボットに対する命令文を組み合わせたロボットプログラムの入力操作が可能な操作部と、
前記操作部から前記ロボットプログラムの入力を受け、前記ロボットプログラムに従う前記ロボットの動作を検証する演算部と、を備え、
前記演算部は、
前記命令文のうち、前記第１教示点と前記第２教示点との間の動作軌道を作成する動作命令文の入力を受ける度に、前記動作軌道上の複数の補間点を算出し、
前記複数の補間点のうち、前記ロボットの特異点又は前記ロボットが他部材に干渉する干渉点と重なる重合補間点が存在するか否かを判断する、ことを特徴とするロボットプログラム作成装置。
【請求項１２】
コンピュータに請求項１乃至１０のいずれか１項に記載のロボットプログラム作成方法の各工程を実行させるためのプログラム。
【請求項１３】
請求項１２に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットに対する命令文を組み合わせたロボットプログラムの作成中に、ロボットの動作を検証するロボットプログラム作成方法、ロボットプログラム作成装置、プログラム及び記録媒体に関する。
【背景技術】
【０００２】
ロボットプログラミングは、一般にロボット言語と呼ばれる言語を用いて行われている。例えばＭｏｖｓ  Ｐ１（現在位置から教示点Ｐ１に向かって直線補間移動）などの動作命令文を組み合わせてロボットプログラムが作成される。
【０００３】
近年では１つのワークステーションで多工程をこなすようになり、ロボットの動作軌道中に特異点や周辺機器との干渉点が発生しやすくなっている。このような中、各教示点において干渉が発生しないようにロボットプログラムを作成する方法に関して、特許文献１に示す技術が知られていた。
【０００４】
特許文献１においては、ロボットプログラムを作成するロボットモデル及びワークモデルをディスプレイ画面に表示し、干渉チェックするか否か、ニアミスチェックするか否か、及びニアミス距離を予め設定し、ロボットモデルを第１教示点に移動させる。このときの干渉の有無を判定する。判定の結果、干渉又はニアミスが生じる場合は警告を発し、警告に従ってオペレータはロボットモデルの誘導経路等を変更する。この操作を繰返し、かつロボットの全ての教示点についてこの操作を行い、干渉がなくなった時点でプログラムを完成させる、という方法をとっていた。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−１９０２２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、ロボットの動作軌道は、教示点間を補間して滑らかな動きを実現している。しかしながら、上記特許文献１に記載の動作プログラム作成方法を用いてロボットプログラムを作成しようとした場合、教示点で干渉が生じるか否かのみ調べるため、教示点間の動作軌道中に干渉が生じる点が存在するか否かがわからないという問題があった。また、上記特許文献１に記載の動作プログラム作成方法では、動作軌道中に特異点となる点が存在するか否かもわからないという問題もあった。そのため、ロボットプログラムの作成終了後にシミュレーション又は実機動作確認を行った時点で軌道上に問題があることが発覚することがあり、ロボットプログラミングをし直す、いわゆる手戻りが発生する問題があった。
【０００７】
そこで、本発明は、ユーザがロボットプログラムの作成中に動作軌道の修正が必要か否かを判断できるロボットプログラム作成方法、ロボットプログラム作成装置、プログラム及び記録媒体を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明は、ロボットに対する命令文を組み合わせたロボットプログラムの作成中に、演算部が前記ロボットプログラムに従う前記ロボットの動作を検証するロボットプログラム作成方法であって、前記演算部が、前記ロボットを教示する第１教示点及び第２教示点の入力を受ける教示点入力工程と、前記演算部が、前記命令文のうち、前記第１教示点と前記第２教示点との間の動作軌道を作成する動作命令文の入力を受ける度に、前記動作軌道上の複数の補間点を算出する補間点算出工程と、前記演算部が、前記複数の補間点のうち、前記ロボットの特異点又は前記ロボットが他部材に干渉する干渉点と重なる重合補間点が存在するか否かを判断する判断工程と、を備えたことを特徴とする。
【発明の効果】
【０００９】
本発明によれば、ユーザがロボットプログラムの作成中に動作軌道の修正が必要か否かを判断できるので、手戻りの少ない好適なロボットプログラムの作成が可能となる。
【図面の簡単な説明】
【００１０】
【図１】第１実施形態に係るロボットシステムの概略構成を示す説明図である。
【図２】第１実施形態に係るロボットプログラム作成装置を示すブロック図である。
【図３】第１実施形態に係るロボットコントローラ及びロボットプログラム作成装置を示す概要図である。
【図４】ワールド座標系において教示点を設定した状態を示す模式図である。
【図５】第１実施形態に係るロボットプログラム作成方法を示すフローチャートである。
【図６】プログラムがインストールされたロボットプログラム作成装置を示す図である。
【図７】第２実施形態に係るロボットプログラム作成方法を示すフローチャートである。
【図８】第３実施形態に係るロボットプログラム作成方法を示すフローチャートである。
【図９】第４実施形態に係るロボットプログラム作成方法を示すフローチャートである。
【図１０】第５実施形態に係るロボットプログラム作成方法を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、本発明を実施するための形態を、図面を参照しながら詳細に説明する。
【００１２】
［第１実施形態］
図１は、本発明の第１実施形態に係るロボットシステムの概略構成を示す説明図である。ロボットシステム１００は、垂直多関節のロボット２００と、ロボットコントローラである制御装置３００と、ロボットプログラム作成装置４００と、を備えている。
【００１３】
ロボット２００は、多軸（例えば６軸）のロボットアーム２０１と、ロボットアーム２０１の先端に取り付けられたグリッパ状のロボットハンド等のエンドエフェクタ２０２と、を有しており、電力線及び通信線で制御装置３００に接続されている。制御装置３００は通信線を介してロボットプログラム作成装置４００に接続されている。
【００１４】
ロボット２００のエンドエフェクタ２０２の代表点として、ツールセンターポイント（ＴＣＰ）２０３が、グリッパの把持中心に設定されている。
【００１５】
ロボットプログラム作成装置４００を用いることにより、ユーザがロボット言語で記述された命令文や制御文からなるテキスト形式のロボットプログラムを作成する。その際、ロボットプログラム作成装置４００は、ロボットプログラムの作成中に、命令文中の動作命令文に基づき、ロボット２００の動作をシミュレートするものである。
【００１６】
図２は、本発明の第１実施形態に係るロボットプログラム作成装置４００を示すブロック図である。ロボットプログラム作成装置４００は、装置本体４１１と、装置本体４１１に接続された入出力装置４２１，４２２，４２３とからなる。
【００１７】
装置本体４１１は、演算部としてのＣＰＵ（Central  Processing  Unit）４０１を備えている。また、装置本体４１１は、記憶部として、ＲＯＭ（Read  Only  Memory）４０２、ＲＡＭ（Random  Access  Memory）４０３、ＨＤＤ（Hard  Disk  Drive）４０４を備えている。また、装置本体４１１は、記録ディスクドライブ４０５及び各種のインタフェース４０６〜４０９を備えている。
【００１８】
ＣＰＵ４０１には、ＲＯＭ４０２、ＲＯＭ４０３、ＨＤＤ４０４、記録ディスクドライブ４０５及び各種のインタフェース４０６〜４０９が、バス４１０を介して接続されている。ＲＯＭ４０２には、ＢＩＯＳ等の基本プログラムが格納されている。ＲＡＭ４０３は、ＣＰＵ４０１の演算処理結果等、各種データを一時的に記憶する記憶装置である。
【００１９】
ＨＤＤ４０４は、ＣＰＵ４０１の演算処理結果や外部から取得した各種データ等を記憶する記憶装置であると共に、ＣＰＵ４０１に、後述する各種演算処理を実行させるためのプログラム（ロボットプログラム作成プログラム）４３０を記録するものである。ＣＰＵ４０１は、ＨＤＤ４０４に記録（格納）されたプログラム４３０に基づいてロボットプログラム作成方法の各工程を実行する。
【００２０】
記録ディスクドライブ４０５は、記録ディスク４３１に記録された各種データやプログラム等を読み出すことができる。
【００２１】
教示部である教示装置（ティーチングペンダント）４２１は、インタフェース４０６に接続されている。ティーチングペンダント４２１は、ユーザの入力操作により、ロボット２００を教示する教示点を指定するものである。教示点のデータは、インタフェース４０６及びバス４１０を通じてＣＰＵ４０１又はＨＤＤ４０４に出力される。つまり、ＣＰＵ４０１は、ティーチングペンダント４２１又はＨＤＤ４０４から教示点のデータの入力を受ける。
【００２２】
表示部である表示装置（モニタ）４２２は、インタフェース４０７に接続されており、ＣＰＵ４０１の制御の下、画像データを表示する。
【００２３】
ロボット２００に対する命令文を組み合わせたロボットプログラムの入力操作が可能な操作部である操作装置（キーボード）４２３は、インタフェース４０８に接続されている。ユーザがキーボード４２３をキー入力操作することで、キーボード４２３からはユーザの操作に応じた信号がＣＰＵ４０１に出力される。具体的には、ユーザがキーボード４２３に命令文や制御文を打ち込むことで、キーボード４２３からは命令文や制御文のデータがＣＰＵ４０１に出力される。これにより、ＣＰＵ４０１は、キーボード４２３から命令文又は制御文の入力を受ける。なお、ロボットプログラム作成装置４００は、操作部としてマウスを備えていてもよい。
【００２４】
インタフェース４０９には、制御装置３００が接続されており、制御装置３００と通信可能となっている。
【００２５】
図３は、本発明の第１実施形態に係る制御装置３００及びロボットプログラム作成装置４００を示す概要図である。
【００２６】
ロボットプログラム作成装置４００において、記憶部として例えばＨＤＤ４０４には、ロボット２００や他部材（例えば不図示のワーク）の位置関係を表すメカ情報７０１や教示点情報７０２が格納されている。また、ＨＤＤ４０４には、ロボット２００の形状やロボット２００の周辺に配置された他部材の形状を表現するポリゴン情報７０３が格納されている。
【００２７】
また、ロボットプログラム作成装置４００において、演算部としてのＣＰＵ４０１がプログラム４３０を実行することにより、逆運動学計算モジュール７０５及び教示点間補間モジュール７０６として機能する。
【００２８】
ここで、教示点とは、ロボット２００に動作・姿勢・手順を教えるために必要となる点のことであり、通常エンドエフェクタ２０２の代表点２０３をそこに位置決めする点のことである。
【００２９】
逆運動学計算モジュール７０５は、設定された教示点に代表点２０３を位置決めするときのロボット２００の各軸への指令を計算する。教示点間補間モジュール７０６は、動作命令に従って教示点の間に補間点を計算する。例えば動作命令が直線補間命令であった場合は、動作の開始位置となる教示点から動作の終了位置となる教示点の間に直線上に分割点が並ぶように、教示点間を均等に分割し、この分割点が補間点となる。
【００３０】
ロボット言語としては、標準規格のＳＬＩＭ準拠の文法を用いている。メカ情報７０１や教示点情報７０２、またロボットプログラム作成装置４００で作成されたロボットプログラム（不図示）は、通信線６０７を介して制御装置３００に転送され、ロボット２００の制御に用いられる。
【００３１】
制御装置３００は、ロボット制御モジュール７０４や、ロボットプログラム作成装置４００と同様、逆運動学計算モジュール７０５及び教示点間補間モジュール７０６を備える。ロボット制御モジュール７０４は、ロボットプログラム（不図示）を解釈し、ロボット２００の各軸に指令を与えてロボット２００を制御する。
【００３２】
第１実施形態においては、ロボットプログラムの作成の前に、ＣＰＵ４０１は、ティーチングペンダント４２１又はＨＤＤ４０４から教示点のデータの入力を受ける（教示点入力工程）。そして、ＣＰＵ４０１は、教示点の設定に先立って、教示点が、特異点又はロボット２００が他部材に干渉する点（干渉点）に位置するか否かを判断する。
【００３３】
図４は、ワールド座標系Σ１において教示点を設定した状態を示す模式図である。図４においては、教示点Ｐ０，Ｐ１，Ｐ２，Ｐ３が設定され、代表点２０３が教示点Ｐ０に位置決めされている様子が示されている。
【００３４】
ＣＰＵ４０１は、教示点Ｐ０，Ｐ１，Ｐ２，Ｐ３を設定する際に教示点そのものが特異点でないことをチェックし、また干渉点でないことをチェックすれば、教示点自体が特異点や干渉点でないことは保証される。
【００３５】
なお、特異点とは特異姿勢とも呼ばれ、ある関節速度に理論上無限大の速度が求められる姿勢を意味し、ロボット２００の軌道において避けなければならない点のことである。特異点チェックは、各教示点について逆運動学を解き、各関節角度を求めることで特異姿勢か否かがわかる。
【００３６】
干渉点チェックについても同様に各関節角度を求めれば、ワールド座標系Σ１においてメカ情報７０１及びポリゴン情報７０３を用いて、ロボット２００や治具（他部材）を表現するポリゴン同士の当たり判定（距離チェック）を行うことができる。
【００３７】
第１実施形態では、ロボット２００に対する命令文を組み合わせた、ロボット言語で記述されるロボットプログラムの作成中に、ＣＰＵ４０１がロボットプログラムに従うロボット２００の動作を検証する。
【００３８】
以下、第１実施形態のロボットプログラム作成方法について、図５のフローチャートに基づいて説明する。ロボット２００の動作としては、エンドエフェクタ２０２が教示点Ｐ０に位置決めされた状態でワーク（不図示）を把持し、教示点Ｐ１、教示点Ｐ２、教示点Ｐ３の順に移動して教示点Ｐ３でワーク（不図示）を離す動作を想定する。なお、第１実施形態においてはこれらの教示点はロボットプログラム入力前に設定済みでありかつ特異点チェック及び干渉点チェックをクリアしているものとする。
【００３９】
まず、ロボットプログラム入力前に、ＣＰＵ４０１は、複数の教示点を設定する（Ｓ１）。このとき、教示点は、特異点や干渉点にならないように設定される。また、ＣＰＵ４０１は、動作の始点（例えば教示点Ｐ０）を記憶部に記憶させる。
【００４０】
次に、ＣＰＵ４０１は、ロボットプログラムの入力が終了したか否かを判断する（Ｓ２）。プログラムの入力を終了するか否かは、ユーザがキーボード４２３等を使用して入力する。つまり、ＣＰＵ４０１は、ユーザの入力操作に応じて、ロボットプログラムの入力が終了したか否かを判断する。ＣＰＵ４０１は、ロボットプログラムの入力が終了したと判断した場合（Ｓ２：Ｙｅｓ）は、終了状態に遷移し、ロボットプログラムの入力が終了していないと判断した場合（Ｓ２：Ｎｏ）は、次のステップＳ３に遷移する。
【００４１】
ＣＰＵ４０１は、ユーザがロボットプログラムを構成する命令文や制御文を、キーボード４２３を用いて入力したり編集したりした場合に、その入力を受ける（Ｓ３）。命令文は、動作命令を示す動作命令文やＩ／Ｏ命令を示すＩ／Ｏ命令文などからなる。
【００４２】
次に、ＣＰＵ４０１は、ステップＳ３で入力・編集した命令文が動作命令文か否かを判断する（Ｓ４）。動作命令文は、例えば、Ｍｏｖｓ  Ｐ１（始点（第１教示点）Ｐ０から終点（第２教示点）Ｐ１に向かって直線補間移動）や、Ｍｏｖ  Ｐ１（始点Ｐ０から終点Ｐ１に向ってＰＴＰ補間移動）、のようなロボット言語の構文を持っている。
【００４３】
ここで、始点とは現在ロボット２００が移動している教示点を意味し、終点とは次にロボット２００が移動する教示点を意味する。なお、ロボットプログラム作成段階ではロボット２００は移動しないので、仮想的に移動する場合を想定している。
【００４４】
動作命令文には、動作軌道を作成する補間方法（直線補間やＰＴＰ補間等）を指定する命令が含まれている。動作命令文であれば、次のステップＳ５に遷移し、動作命令文でなければ始点を更新せずにステップＳ２に遷移する。
【００４５】
ステップＳ５において、ＣＰＵ４０１は、動作命令文の入力を受ける度に、現在記憶している始点（例えば教示点Ｐ０）と、動作命令文に記述された終点（例えば教示点Ｐ１）との間の動作軌道を生成する。そして、ＣＰＵ４０１は、動作軌道上の複数の補間点を算出する（補間点算出工程）。これら補間点は、教示点Ｐ１，Ｐ２間を所定の分割数で等分割（例えば２［ｍｓ］間隔で分割）して計算する。
【００４６】
次に、ＣＰＵ４０１は、複数の補間点のうち、ロボット２００の特異点又は干渉点と重なる（一致する）補間点（以下、「重合補間点」という）が存在するか否かを判断する（Ｓ６：判断工程）。つまり、補間点に特異点や干渉点が存在するか否かを判断する。このように、ステップＳ６では、複数の補間点の各点について、特異点であるか、干渉点であるかをチェックする（特異点チェック及び干渉点チェック）。
【００４７】
ＣＰＵ４０１は、ステップＳ６における判断結果をユーザに報知（提示）する（Ｓ７、Ｓ８：判断結果報知工程）。具体的には、ＣＰＵ４０１は、モニタ４２２に判断結果を表示させる。つまり、ＣＰＵ４０１は、重合補間点が存在すると判断した場合（Ｓ６：Ｙｅｓ）は、その旨をモニタ４２２に表示させ（Ｓ７）、重合補間点が存在しないと判断した場合（Ｓ６：Ｎｏ）は、その旨をモニタ４２２に表示させる（Ｓ８）。
【００４８】
即ち、複数の補間点のなかに特異点又は干渉点が存在すればＹｅｓであるのでステップＳ７に遷移する。複数の補間点のなかに特異点及び干渉点のいずれも存在しなければＮｏであるので、動作命令に記述された終点（例えば教示点Ｐ１）を新たな始点としてＨＤＤ４０４等の記憶部に記憶させ、ステップＳ２に遷移する。なお、ステップＳ６でＮｏの場合は、ステップＳ８を省略して、ステップＳ２に遷移しても構わない。
【００４９】
ステップＳ６にてＹｅｓであれば、補間点の中に特異点や干渉点が存在したことをユーザに提示する。提示の方法としては、該当行をハイライト表示したり、ポップアップによって表示したりしてもよい。チェック結果を提示した後に、終了状態に遷移する。
【００５０】
また、ステップＳ６にてＮｏであれば、補間点の中に特異点及び干渉点が存在しないことをユーザに提示する。提示の方法としては、「ＯＫ」などを表示する。
【００５１】
図６は、プログラム４３０がインストールされたロボットプログラム作成装置４００を示す図であり、図６（ａ）は、プログラム４３０起動前の状態を示し、図６（ｂ）は、プログラム４３０を起動してユーザが入力操作をしている状態を示している。
【００５２】
図６（ａ）に示すアイコン群Ｉ１〜Ｉ４のなかから適切なアイコン（例えばアイコンＩ１）をカーソルＣで選択（例えばマウスのボタンをワンクリックやダブルクリック）することで、プログラム４３０が起動し、ウィンドウが立ち上がる。
【００５３】
図６（ｂ）において、ウィンドウ内左端の数字はロボットプログラムの行番号を意味している。行番号１では現在の教示点（第１教示点）Ｐ０から次の教示点（第２教示点）Ｐ１へ直線補間移動せよ、という移動命令文「Ｍｏｖｓ  Ｐ１」が記述されている。ユーザが当該記述をキーボード４２３を用いて行い、実行キー（例えばＥｎｔｅｒキー）を操作したときに、装置本体４１１内部のＣＰＵ４０１が、軌道演算して特異点チェック及び干渉点チェックを行う。その結果、問題がなかったのでモニタ４２２に「ＯＫ」の表示がなされている。
【００５４】
行番号２ではＩ／Ｏ命令文（つまり、動作命令ではない）「Ｏｕｔ」が記述されているので、チェックは行われない。行番号３では、行番号１と同様である。行番号４では、現在の教示点（第１教示点）Ｐ２から次の教示点（第２教示点）Ｐ３へ直線補間移動せよ、という命令文「Ｍｏｖｓ  Ｐ３」が記述される。そして、ＣＰＵ４０１で特異点及び干渉点チェックが行われた結果、補間点が重なるため「ＮＧ」の表示がなされている。このように、移動命令文１行ごとに動作軌道を生成して補間点を算出し、各補間点が特異点又は干渉点と重なり合うか否かを判断する。
【００５５】
以上、第１実施形態によれば、ユーザがロボットプログラムの作成中に動作軌道の修正が必要か否かを判断できるので、手戻りの少ない好適なロボットプログラムの作成が可能となる。
【００５６】
また、補間点の中に特異点や干渉点が生じた場合に、モニタ４２２でユーザに提示（報知）するので、実機動作確認前に、特異点や干渉点によるエラーを避けることができる。
【００５７】
［第２実施形態］
次に、本発明の第２実施形態に係るロボットプログラム作成装置による処理動作について説明する。図７は、本発明に係る第２実施形態のロボットプログラム作成方法を示すフローチャートである。なお、ロボットプログラム作成装置の各部の構成は、上記第１実施形態の図２で説明した構成と同様であり、詳細な説明は省略する。第２実施形態において、上記第１実施形態と異なるのは、演算部であるＣＰＵ４０１を用いたロボットプログラム作成方法、即ちプログラム４３０の内容が異なるものであり、以下、上記第１実施形態と異なる部分について説明する。
【００５８】
図７のステップＳ１１〜Ｓ１８は、図５のステップＳ１〜Ｓ８と同様であるため、説明を省略する。なお、ステップＳ１７の処理は省略してもよい。
【００５９】
ＣＰＵ４０１は、ステップＳ１６にて補間点に特異点又は干渉点が存在すると判断した場合（Ｓ１６：Ｙｅｓ）、補間点の中に特異点や干渉点が存在する旨をユーザに警告し、別の補間方法を指定するようユーザに提示する（Ｓ１９：補間方法提示工程）。
【００６０】
例えばＣＰＵ４０１は、動作命令としてＰＴＰ補間を使用していて警告を出した場合、ユーザに対して直線補間による補間方法を試すよう提案する。警告の方法としては、モニタ４２２において、該当行をハイライト表示したり、ポップアップによって表示したりしても良い。
【００６１】
次に、ＣＰＵ４０１は、ユーザがロボットプログラムの入力を終了したか否かを判断する（Ｓ２０）。例えばＣＰＵ４０１は、ＰＴＰ補間命令を使用して警告を出した後に、まだ直線補間命令を試していない場合などは、入力を終了していないと判断する（Ｓ２０：Ｎｏ）。また例えばＣＰＵ４０１は、ＰＴＰ補間命令を使用して警告を出した後に、直線補間命令を使用しても再度警告が出た場合などは、補間方法の変更では特異点・干渉点の回避は不可能であると判断して、入力終了と判断し（Ｓ２０：Ｙｅｓ）、終了状態に遷移する。
【００６２】
ＣＰＵ４０１は、別の補間方法をユーザに提示した後、ユーザが別の補間方法を指定するのを待ち受け（Ｓ２１）、ユーザにより別の補間方法が指定されたら、ステップＳ１５に遷移する。
【００６３】
このように第２実施形態によれば、代替の補間方法をユーザに提示することで、ユーザは、別の補間方法を試すべきことを迷わずに実行できる、という効果を奏する。
【００６４】
［第３実施形態］
次に、本発明の第３実施形態に係るロボットプログラム作成装置による処理動作について説明する。図８は、本発明に係る第３実施形態のロボットプログラム作成方法を示すフローチャートである。なお、ロボットプログラム作成装置の各部の構成は、上記第１実施形態の図２で説明した構成と同様であり、詳細な説明は省略する。第３実施形態において、上記第１、第２実施形態と異なるのは、演算部であるＣＰＵ４０１を用いたロボットプログラム作成方法、即ちプログラム４３０の内容が異なるものであり、以下、上記第１、第２実施形態と異なる部分について説明する。
【００６５】
図８のステップＳ３１〜Ｓ３３は、図５のステップＳ１〜Ｓ３と同様であるため、説明を省略する。
【００６６】
ステップＳ３３の後、ＣＰＵ４０１は、入力を受けたのが動作命令文であるか否かを判断する（Ｓ３４）。このとき、動作命令文としては、上記第１、第２実施形態では、補間方法を指定する命令が含まれていたが、第３実施形態では、動作命令文に補間方法を指定する命令が含まれている必要はない。
【００６７】
ＣＰＵ４０１は、動作命令文ではない場合（Ｓ３４：Ｎｏ）、ステップＳ３２に遷移する。ＣＰＵ４０１は、動作命令文である場合（Ｓ３４：Ｙｅｓ）、互いに異なる複数の補間方法で始点（第１教示点）と終点（第２教示点）との間の動作軌道を複数生成し、各動作軌道に対して複数の補間点を算出する（Ｓ３５：補間点算出工程）。例えばＣＰＵ４０１は、ＰＴＰ補間と直線補間の双方で教示点間の補間を行う。
【００６８】
次に、ＣＰＵ４０１は、各動作軌道における各補間点の特異点チェック及び干渉点チェックを行う（Ｓ３６：判断工程）。その結果、どちらか一方の補間方法を用いた場合に補間点のなかに特異点や干渉点が存在し、他方の補間方法を用いた場合には特異点や干渉点は存在しなかったとする。
【００６９】
次に、ＣＰＵ４０１は、ステップＳ３６でのチェック結果をユーザに提示する（Ｓ３７：動作軌道提示工程）。具体的には、ＣＰＵ４０１は、ステップＳ３６における判断の結果、複数の動作軌道のうち、特異点又は干渉点に重なる重合補間点がない動作軌道を、モニタ４２２に表示してユーザに提示する。
【００７０】
次に、ＣＰＵ４０１は、ユーザによる補間方法の選択を待ち受けて、ユーザにより補間方法が選択されたら、補間方法を確定し、ステップＳ３２の処理に遷移する（Ｓ３８）。
【００７１】
以上第３実施形態によれば、ユーザは動作命令文において補間方法を予め指定しなくても、補間点の特異点チェック及び干渉点チェック済みの補間方法、即ち特異点及び干渉点に重ならない動作軌道を選ぶことができるので、さらに工数削減が可能となる。
【００７２】
［第４実施形態］
次に、本発明の第４実施形態に係るロボットプログラム作成装置による処理動作について説明する。図９は、本発明に係る第４実施形態のロボットプログラム作成方法を示すフローチャートである。なお、ロボットプログラム作成装置の各部の構成は、上記第１実施形態の図２で説明した構成と同様であり、詳細な説明は省略する。第４実施形態において、上記第１〜第３実施形態と異なるのは、演算部であるＣＰＵ４０１を用いたロボットプログラム作成方法、即ちプログラム４３０の内容が異なるものであり、以下、上記第１〜第３実施形態と異なる部分について説明する。
【００７３】
図９のステップＳ４１〜Ｓ４６は、図８のステップＳ３１〜Ｓ３６と同様であるため、説明を省略する。なお、ステップＳ４６の判断の結果、いずれの補間方法を用いても、補間点の中に特異点又は干渉点が存在したとする。
【００７４】
ＣＰＵ４０１は、ステップＳ４６において重合補間点が存在すると判断した場合、終点（第２教示点）の修正をユーザに促す（Ｓ４７：教示点修正工程）。或いは、ＣＰＵ４０１は、ステップＳ４６において重合補間点が存在すると判断した場合、始点（第１教示点）と終点（第２教示点）との間に中間教示点を追加するのをユーザに促す（Ｓ４７：教示点追加工程）。つまり、いずれの補間方法を用いても、補間点の中に特異点や干渉点が存在したことをユーザに警告し、終点の修正・追加をユーザに促す。警告の方法としては、該当行をハイライト表示したり、ポップアップによって表示したりしても良い。
【００７５】
ＣＰＵ４０１は、ユーザによる教示点の修正（例えば教示点Ｐ１の位置を修正）や、追加（例えば教示点Ｐ１近傍に教示点Ｐ４を追加）を行い、ステップＳ４２の処理に遷移する。教示点の修正・追加の際には特異点チェック、干渉点チェックが行われる。つまり、ＣＰＵ４０１は、ユーザがステップＳ４７により促されて終点（第２教示点）を修正した場合、ステップＳ４５では、ＣＰＵ４０１が再度、複数の補間点を算出し、ステップＳ４６では、ＣＰＵ４０１が再度、重合補間点が存在するか否かを判断する。
【００７６】
或いは、ＣＰＵ４０１は、ステップＳ４７により促されて中間教示点が追加された場合、ステップＳ４５では、中間教示点を新たな終点（第２教示点）とし、始点（第１教示点）と終点との間の動作軌道を生成して該動作軌道上の複数の補間点を算出する。そして、ＣＰＵ４０１は、ステップＳ４６では、再度、重合補間点が存在するか否かを判断する。
【００７７】
このように第４実施形態によれば、ユーザは教示点の修正・追加が必要であることを即座に知ることができるので、さらに工数削減が可能となる、という効果を奏する。
【００７８】
［第５実施形態］
次に、本発明の第５実施形態に係るロボットプログラム作成装置による処理動作について説明する。図１０は、本発明に係る第５実施形態のロボットプログラム作成方法を示すフローチャートである。なお、ロボットプログラム作成装置の各部の構成は、上記第１実施形態の図２で説明した構成と同様であり、詳細な説明は省略する。第５実施形態において、上記第１〜第４実施形態と異なるのは、演算部であるＣＰＵ４０１を用いたロボットプログラム作成方法、即ちプログラム４３０の内容が異なるものであり、以下、上記第１〜第４実施形態と異なる部分について説明する。
【００７９】
第５実施形態では、ロボットプログラム作成前に教示点を設定せず、若しくは特異点チェック、干渉チェックを実施せずに教示点を設定しておき、プログラミングを進めながら教示点を設定・修正するという点において上記第１実施形態とは異なる。ただし、初期位置である教示点Ｐ０のみは設定済みとする。おおまかな流れは上記第１実施形態と同様であるので、差異のある部分について図１０を用いて説明する。
【００８０】
図１０のステップＳ５１〜Ｓ５３は、図５のステップＳ２〜Ｓ４と同様であり、図１０のステップＳ５５〜Ｓ５７は、図５のステップＳ５〜Ｓ７と同様であるため、説明を省略する。
【００８１】
ここで、ステップＳ５３までは、ロボットプログラムにおける終点（第２教示点）は、変数として定義され、数値データは入力されておらず、ステップＳ５４で数値データが設定される。即ち、ＣＰＵ４０１は、ユーザがティーチングペンダント４２１を操作して、ティーチングペンダント４２１からの終点となる教示点のデータの入力を受け、終点となる教示点（例えば教示点Ｐ１）を設定する（Ｓ５４：教示点入力工程）。このとき、特異点チェック、干渉点チェックが行われ、特異点、干渉点でないように教示点を設定する。なお、ＣＰＵ４０１は、ティーチングペンダント４２１からの入力を受け、第１教示点としての最初の教示点Ｐ０も、教示点Ｐ１に先立って設定する。また、始点（第１教示点）を教示点Ｐ１に更新する場合は、終点（第２教示点）である教示点Ｐ２のみを設定すればよい。
【００８２】
教示点間の補間点が特異点又は干渉点である場合、ＣＰＵ４０１は、終点（第２教示点）の修正をユーザに促す（Ｓ５７：教示点修正工程）。具体的には、ＣＰＵ４０１は、チェック結果として、重合補間点が存在する、即ち複数の補間点のうち特異点又は干渉点に重なる補間点が存在する旨をモニタ４２２に表示させる。
【００８３】
次に、ＣＰＵ４０１は、ロボットプログラムの入力を終了するか否かを判断する（Ｓ５８）。
【００８４】
ＣＰＵ４０１は、教示点を何度修正しても補間点に特異点や干渉点が発生してしまうような場合にはユーザの選択により、入力を終了し（Ｓ５８：Ｙｅｓ）、終了状態に遷移する。教示点を修正する場合には、ユーザの選択により入力を終了せず（Ｓ５８：Ｎｏ）、ステップＳ５９に遷移する。
【００８５】
次に、ＣＰＵ４０１は、ユーザによる教示点の修正を待ち受けて、ユーザにより教示点が修正されたら、修正を確定し、ステップＳ５５の処理に遷移する（Ｓ５９）。教示点の修正の際には特異点チェック、干渉点チェックが行われる。
【００８６】
このように第５実施形態によれば、ロボットプログラム作成と同時に教示点を設定していくので、無駄な教示点を設定することなく手戻りのないプログラミングが可能となる。
【００８７】
なお、本発明は、以上説明した実施形態に限定されるものではなく、本発明の技術的思想内で多くの変形が可能である。
【００８８】
上記実施形態では、ロボットプログラム作成装置が、制御装置３００とは別の装置である場合について説明したが、これに限定するものではなく、制御装置３００がロボットプログラム作成装置を兼ねてもよい。
【００８９】
また、上記実施形態では、ティーチングペンダント４２１を用いて教示点の入力を行う場合について説明したが、他の入力装置（操作装置）、例えばキーボード４２３を用いて教示点の入力を行うようにしてもよい。
【００９０】
また、上記実施形態の各処理動作は具体的には演算部としてのＣＰＵ４０１により実行されるものである。従って上述した機能を実現するプログラムを記録した記録媒体を装置本体４１１に供給し、装置本体４１１のコンピュータ（ＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムを読み出し実行することによって達成されるようにしてもよい。この場合、記録媒体から読み出されたプログラム自体が上述した実施形態の機能を実現することになり、プログラム自体及びそのプログラムを記録した記録媒体は本発明を構成することになる。
【００９１】
また、上記実施形態では、コンピュータ読み取り可能な記録媒体がＨＤＤ４０４であり、ＨＤＤ４０４にプログラム４３０が格納される場合について説明したが、これに限定するものではない。プログラムは、コンピュータ読み取り可能な記録媒体であれば、いかなる記録媒体に記録されていてもよい。例えば、プログラムを供給するための記録媒体としては、図２に示すＲＯＭ４０２、記録ディスク４３１、不図示の外部記憶装置等を用いてもよい。具体例を挙げて説明すると、記録媒体として、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、書き換え可能な不揮発性のメモリ（例えばＵＳＢメモリ）、ＲＯＭ等を用いることができる。
【００９２】
また、上記実施形態におけるプログラムを、ネットワークを介してダウンロードしてコンピュータにより実行するようにしてもよい。
【００９３】
また、コンピュータが読み出したプログラムコードを実行することにより、上記実施形態の機能が実現されるだけに限定するものではない。そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【００９４】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれてもよい。そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって上記実施形態の機能が実現される場合も含まれる。
【００９５】
また、上記実施形態では、コンピュータがＨＤＤ等の記録媒体に記録されたプログラムを実行することにより、画像処理を行う場合について説明したが、これに限定するものではない。プログラムに基づいて動作する演算部の一部又は全部の機能をＡＳＩＣやＦＰＧＡ等の専用ＬＳＩで構成してもよい。なお、ＡＳＩＣはApplication  Specific  Integrated  Circuit、ＦＰＧＡはField-Programmable  Gate  Arrayの頭字語である。
【符号の説明】
【００９６】
１００…ロボットシステム、２００…ロボット、４００…ロボットプログラム作成装置、４０１…ＣＰＵ（演算部）、４２１…ティーチングペンダント（教示部）
【図１】
2015098076.tif 000003
【図２】
2015098076.tif 000004
【図３】
2015098076.tif 000005
【図４】
2015098076.tif 000006
【図５】
2015098076.tif 000007
【図６】
2015098076.tif 000008
【図７】
2015098076.tif 000009
【図８】
2015098076.tif 000010
【図９】
2015098076.tif 000011
【図１０】
2015098076.tif 000012