ツールを搭載したロボット、ワーク、及び少なくとも一つの周辺機器の三次元モデルを画面に配置して同時に表示し、前記ツールまたは前記ロボットが前記ワークまたは前記周辺機器と干渉を回避しつつワークの加工作業を行うためのロボット動作プログラムの教示を行うロボットプログラミング装置において、ワークの三次元モデル上で加工線を指定する加工線指定部と、該加工線指定部により指定された加工線に基づいて生成される教示点の動作形式、速度、位置、及び姿勢を指定する動作形式指定部と、前記加工線指定部により指定された加工線と、前記動作形式指定部により指定された動作形式、速度、位置、及び姿勢とに基づいて前記ロボットの動作プログラムを生成するプログラム生成部と、前記ツールが前記ワークに直接接触して加工する場合または前記ツールが前記ワークに接近して加工する場合に、前記ワークに直接接触するかまたは前記ワークに接近する、前記ツールの三次元モデルにおける一部分以外のツール非加工部位を干渉対象として指定する干渉対象指定部と、前記動作プログラムの前記教示点における前記ロボットまたは前記ツール非加工部位と前記ワークまたは前記周辺機器との干渉を検出する干渉検出部と、前記干渉検出部が干渉を検出した場合には、干渉時における前記ロボットの位置からの前記ロボットの前記ツールのツール先端点の並進移動、及び前記ツール先端点を中心とする前記ロボットの回転運動のうちの少なくとも一方を行うことにより、前記ロボットまたは前記ツール非加工部位と前記ワークまたは前記周辺機器とが干渉しない非干渉位置を検索する非干渉位置検索部と、該非干渉位置検索部による検索結果に基づいて前記教示点の位置を修正する修正部と、を具備するロボットプログラミング装置。前記ワークは周辺機器としての他のロボットに把持されている請求項1に記載のロボットプログラミング装置。前記ワークは周辺機器としてのポジショナに把持されている請求項1に記載のロボットプログラミング装置。ツールを搭載したロボット、ワーク、及び少なくとも一つの周辺機器の三次元モデルを画面に配置して同時に表示し、前記ツールまたは前記ロボットが前記ワークまたは前記周辺機器と干渉を回避しつつワークの加工作業を行うためのロボット動作プログラムの教示を行うロボットプログラミング装置において、前記ロボットを三次元空間上の指定位置に移動させる移動部と、前記ツールが前記ワークに直接接触して加工する場合または前記ツールが前記ワークに接近して加工する場合に、前記ワークに直接接触するかまたは前記ワークに接近する、前記ツールの三次元モデルにおける一部分以外のツール非加工部位を干渉対象として指定する干渉対象指定部と、前記指定位置における前記ロボットまたは前記ツール非加工部位と前記ワークまたは前記周辺機器との干渉を検出する干渉検出部と、前記干渉検出部が干渉を検出した場合には、干渉時における前記ロボットの位置からの前記ロボットの前記ツールのツール先端点の並進移動、及び前記ツール先端点を中心とする前記ロボットの回転運動のうちの少なくとも一方を行うことにより、前記ロボットまたは前記ツール非加工部位と前記ワークまたは前記周辺機器とが干渉しない非干渉位置を検索する非干渉位置検索部と、該非干渉位置検索部による検索結果に基づいて前記指定位置を修正する修正部と、を具備するロボットプログラミング装置。前記並進運動の並進範囲および前記回転運動の回転範囲を指定する範囲指定部を含む、請求項1から4のいずれか一項に記載のロボットプログラミング装置。所定の方向における前記並進移動および前記回転運動による検索を無効にする無効指定部を含む、請求項1から5のいずれか一項に記載のロボットプログラミング装置。所定の方向における前記並進移動および回転運動による検索を優先的に行うように検索順序を指定する検索順序指定部を含む、請求項1から6のいずれか一項に記載のロボットプログラミング装置。前記非干渉位置検索部により複数の非干渉位置が検出された場合に、最初に見つかった非干渉位置を検索結果として設定するか、または、前記複数の非干渉位置のそれぞれと対応する前記ロボットの位置との間の差が最も小さい非干渉位置を検索結果として設定する検索結果設定部を含む請求項1から7のいずれか一項に記載のロボットプログラミング装置。しかしながら、ワークのCADモデル上において教示点を生成する際には、各教示点におけるロボットまたはツール非加工部位とワークまたは周辺機器との干渉は考慮されていない。このため、教示点の生成後に作業者が各教示点に関して修正する必要があるので、修正作業に多大な時間が必要とされる。また、三次元空間上でロボットを或る位置まで移動させて干渉が検出された場合にも、作業者がロボットまたはツール非加工部位とワークまたは周辺機器とが干渉しないようにロボットの位置を微調整する必要がある。このため、三次元空間上での調整作業にも多大な時間が必要とされる。本発明はこのような事情に鑑みてなされたものであり、ワークのCADモデル上において教示点を生成する場合および三次元空間上でロボットを或る位置まで移動させる場合であっても、作業者が干渉を修正する修正作業を排除できるロボットオフラインプログラミング装置を提供することを目的とする。前述した目的を達成するために1番目の発明によれば、ツールを搭載したロボット、ワーク、及び少なくとも一つの周辺機器の三次元モデルを画面に配置して同時に表示し、前記ツールまたは前記ロボットが前記ワークまたは前記周辺機器と干渉を回避しつつワークの加工作業を行うためのロボット動作プログラムの教示を行うロボットプログラミング装置において、ワークの三次元モデル上で加工線を指定する加工線指定部と、該加工線指定部により指定された加工線に基づいて生成される教示点の動作形式、速度、位置、及び姿勢を指定する動作形式指定部と、前記加工線指定部により指定された加工線と、前記動作形式指定部により指定された動作形式、速度、位置、及び姿勢とに基づいて前記ロボットの動作プログラムを生成するプログラム生成部と、前記ツールが前記ワークに直接接触して加工する場合または前記ツールが前記ワークに接近して加工する場合に、前記ワークに直接接触するかまたは前記ワークに接近する、前記ツールの三次元モデルにおける一部分以外のツール非加工部位を干渉対象として指定する干渉対象指定部と、前記動作プログラムの前記教示点における前記ロボットまたは前記ツール非加工部位と前記ワークまたは前記周辺機器との干渉を検出する干渉検出部と、前記干渉検出部が干渉を検出した場合には、干渉時における前記ロボットの位置からの前記ロボットの前記ツールのツール先端点の並進移動、及び前記ツール先端点を中心とする前記ロボットの回転運動のうちの少なくとも一方を行うことにより、前記ロボットまたは前記ツール非加工部位と前記ワークまたは前記周辺機器とが干渉しない非干渉位置を検索する非干渉位置検索部と、該非干渉位置検索部による検索結果に基づいて前記教示点の位置を修正する修正部と、を具備するロボットプログラミング装置が提供される。2番目の発明によれば、1番目の発明において、前記ワークは周辺機器としての他のロボットに把持されている。3番目の発明によれば、1番目の発明において、前記ワークは周辺機器としてのポジショナに把持されている。4番目の発明によれば、ツールを搭載したロボット、ワーク、及び少なくとも一つの周辺機器の三次元モデルを画面に配置して同時に表示し、前記ツールまたは前記ロボットが前記ワークまたは前記周辺機器と干渉を回避しつつワークの加工作業を行うためのロボット動作プログラムの教示を行うロボットプログラミング装置において、前記ロボットを三次元空間上の指定位置に移動させる移動部と、前記ツールが前記ワークに直接接触して加工する場合または前記ツールが前記ワークに接近して加工する場合に、前記ワークに直接接触するかまたは前記ワークに接近する、前記ツールの三次元モデルにおける一部分以外のツール非加工部位を干渉対象として指定する干渉対象指定部と、前記指定位置における前記ロボットまたは前記ツール非加工部位と前記ワークまたは前記周辺機器との干渉を検出する干渉検出部と、前記干渉検出部が干渉を検出した場合には、干渉時における前記ロボットの位置からの前記ロボットの前記ツールのツール先端点の並進移動、及び前記ツール先端点を中心とする前記ロボットの回転運動のうちの少なくとも一方を行うことにより、前記ロボットまたは前記ツール非加工部位と前記ワークまたは前記周辺機器とが干渉しない非干渉位置を検索する非干渉位置検索部と、該非干渉位置検索部による検索結果に基づいて前記指定位置を修正する修正部と、を具備するロボットプログラミング装置が提供される。5番目の発明によれば、1番目から4番目のいずれかの発明において、前記並進運動の並進範囲および前記回転運動の回転範囲を指定する範囲指定部を含む。6番目の発明によれば、1番目から5番目のいずれかの発明において、所定の方向における前記並進移動および前記回転運動による検索を無効にする無効指定部を含む。7番目の発明によれば、1番目から6番目のいずれかの発明において、所定の方向における前記並進移動および回転運動による検索を優先的に行うように検索順序を指定する検索順序指定部を含む。8番目の発明によれば、1番目から7番目のいずれかの発明において、前記非干渉位置検索部により複数の非干渉位置が検出された場合に、最初に見つかった非干渉位置を検索結果として設定するか、または、前記複数の非干渉位置のそれぞれと対応する前記ロボットの位置との間の差が最も小さい非干渉位置を検索結果として設定する検索結果設定部を含む。1番目の発明においては、指定された加工線に基づいて生成される動作プログラムの各教示点においてロボットまたはツール非加工部位とワークまたは周辺機器との干渉を検出し、干渉する場合には、非干渉位置を検索して教示点の位置を自動で修正している。従って、ロボットまたはツール非加工部位とワークまたは周辺機器とが干渉することのないプログラムを自動的に生成できる。その結果、従来ではプログラムの確認作業や教示修正に必要としていた時間を大幅に削減することができる。また、ツールがワークに直接接触して加工する場合またはツールがワークに接近して加工する場合に、ツール非加工部位を干渉対象としている。従って、バリ取り作業のようにツールがワークと干渉する部位を必ず備える場合であっても、非干渉位置を適切に検索することができる。なお、ツール非加工部位を干渉対象とする代わりに、ツール非加工部位以外のツール加工部位を干渉の検出対象から除外するようにしてもよい。2番目の発明においては、ワークが周辺機器としての他のロボットに把持されている場合であっても、ロボットまたはツール非加工部位とワークまたは周辺機器とが干渉することのないプログラムを自動的に生成できる。その結果、従来ではプログラムの確認作業や教示修正に必要としていた時間を大幅に削減することができる。3番目の発明においては、ワークが周辺機器としてのポジショナに把持されている場合であっても、ロボットまたはツール非加工部位とワークまたは周辺機器とが干渉することのないプログラムを自動的に生成できる。その結果、従来ではプログラムの確認作業や教示修正に必要としていた時間を大幅に削減することができる。4番目の発明においては、ロボットを三次元空間上の指定位置に移動させる際に、ロボットまたはツール非加工部位とワークまたは周辺機器とが干渉する場合には、非干渉位置を検索して指定位置を自動で修正している。従って、教示作業において、非干渉位置を検索するために必要としていた時間を大幅に削減することができる。また、ツールがワークに直接接触して加工する場合またはツールがワークに接近して加工する場合に、ツール非加工部位を干渉対象としている。従って、バリ取り作業のようにツールがワークと干渉する部位を必ず備える場合であっても、非干渉位置を適切に検索することができる。なお、ツール非加工部位を干渉対象とする代わりに、ツール非加工部位以外のツール加工部位を干渉の検出対象から除外するようにしてもよい。5番目の発明においては、並進運動の並進範囲および回転運動の回転範囲を、バリ取りやアーク溶接などアプリケーションに応じて詳細に指定できる。このため、ロボットまたはツール非加工部位とワークまたは周辺機器とが干渉しない位置を適切に検索できる。6番目の発明においては、バリ取りやアーク溶接などアプリケーションに応じて定まる所定の方向に姿勢を変更することが望ましくない場合に、所定の方向における並進移動および回転運動を無効にできる。このため、ロボットまたはツール非加工部位とワークまたは周辺機器とが干渉しない位置を適切に検索できる。7番目の発明においては、バリ取りやアーク溶接などアプリケーションに応じて定まる所定の方向から優先的に検索することが望ましい場合に、所定の方向における並進移動および回転運動による検索を所望の検索順序で行うことができる。このため、ロボットまたはツール非加工部位とワークまたは周辺機器とが干渉しない位置を適切に検索できる。8番目の発明においては、最初に見つかった非干渉位置を検索結果として設定するか、または、ロボットの位置との間の差が最も小さい非干渉位置を検索結果として設定している。従って、バリ取りやアーク溶接などアプリケーションに応じて非干渉位置の最適な検索条件が異なる場合であっても、非干渉位置の検索結果の採用方法を切替え、それにより、ロボットまたはツール非加工部位とワークまたは周辺機器とが干渉しない適切な位置を検索できる。以下、添付図面を参照して本発明の実施形態を説明する。以下の図面において同様の部材には同様の参照符号が付けられている。理解を容易にするために、これら図面は縮尺を適宜変更している。図1は本発明の第一の実施形態に基づくロボットプログラミング装置の概念図である。ロボットプログラミング装置10は、表示部11、例えば液晶ディスプレイ、CRTと、表示部11に接続された制御装置20、例えばデジタルコンピュータとを主に含んでいる。図1において、表示部11には、ロボット12、例えば多関節ロボットの三次元モデル、およびロボット12の先端に取付けられたツール13の三次元モデルが表示されている。ツール13は、ロボット12によって行われる作業、例えばバリ取り作業、アーク溶接などに応じて異なるものとする。さらに、表示部11には、ツール13により加工されるべきワーク14の三次元モデルおよび周辺機器15A、15Bの三次元モデルも表示されている。なお、以下においては、ロボット12の三次元モデルを単にロボット12と呼ぶ場合があり、他の部材および他の部品についても同様であるものとする。図1に示されるように、ロボットプログラミング装置10の制御装置20は、ワーク14の三次元モデル上で加工線を指定する加工線指定部21と、加工線指定部21により指定された加工線に基づいて生成される教示点の動作形式、速度、位置、及び姿勢を指定する動作形式指定部22と、加工線指定部21により指定された加工線と動作形式指定部22により指定された動作形式、速度、位置、及び姿勢とに基づいてロボット12の動作プログラムを生成するプログラム生成部23としての役目を果たす。さらに、制御装置20は、ツール13がワーク14に直接接触して加工する場合またはツール13がワーク14に接近して加工する場合に、ワーク14に直接接触するかまたはワーク14に接近する、ツール13の三次元モデルにおける一部分以外のツール非加工部位を干渉対象として指定する干渉対象指定部24としての役目を果たす。さらに、制御装置20は、動作プログラムの教示点におけるロボット12またはツール非加工部位とワーク14または周辺機器15A、15Bとの干渉を検出する干渉検出部25としての役目を果たす。さらに、制御装置20は、干渉検出部25が干渉を検出した場合には、干渉時におけるロボット12の位置からのロボット12のツール13のツール先端点13cの並進移動、及びツール先端点13cを中心とするロボット12の回転運動のうちの少なくとも一方を行うことにより、ロボット12またはツール非加工部位とワーク14または周辺機器15A、15Bとが干渉しない非干渉位置を検索する非干渉位置検索部26としての役目を果たす。さらに、制御装置20は、非干渉位置検索部26による検索結果に基づいて教示点の位置および指定位置を修正する修正部27としての役目を果たす。また、制御装置20は、ロボット12を三次元空間上の指定位置に移動させる移動部28と、しての役目も果たす。そして、制御装置20は、並進運動の並進範囲および回転運動の回転範囲を指定する範囲指定部29と、所定の方向における並進移動および回転運動による検索を無効にする無効指定部30と、所定の方向における並進移動および回転運動による検索を優先的に行うように検索順序を指定する検索順序指定部31としての役目を果たす。さらに、制御装置20は、非干渉位置検索部26により複数の非干渉位置が検出された場合に、最初に見つかった非干渉位置を検索結果として設定するか、または、複数の非干渉位置のそれぞれと対応するロボット12の位置との間の差が最も小さい非干渉位置を検索結果として設定する検索結果設定部32としての役目も果たす。なお、制御装置20は、各種のデータを記憶する記憶部図示しないも含んでいるものとする。図2は図1に示されるロボットプログラミング装置の動作を示すフローチャートである。以下、図2を参照しつつ、ロボットプログラミング装置10がオフラインでロボット12の動作プログラムを生成することについて説明する。図2のステップS11においては、ロボット12、ツール13、ワーク14および周辺機器15A、15Bの三次元モデルを表示部11上に表示する。これら部品の位置関係は予め把握されており、表示部11上においては、予め把握された位置関係でロボット12等の三次元モデルが表示されるものとする。次いで、ステップS12において、加工線指定部21がワーク14の三次元モデル上で加工線を指定する。加工線は、ワーク14がツール13により加工されるべき線である。ワークの三次元モデルを示す図3においては、加工線指定部21によって、ワーク14の頂面における縁部の一部分が加工線41として指定されている。さらに、ステップS13においては、動作形式指定部22が加工線41に基づいてロボットの教示点Aを生成して、各教示点Aの動作形式、速度、位置、及び姿勢を指定する図3を参照されたい。動作形式は、例えば各軸移動または直線移動である。後述する図5に示されるように、教示点Aは加工線41上に位置するものとする。そして、プログラム生成部23は、加工線指定部21により指定された加工線41と、動作形式指定部22により指定された教示点Aの動作形式、速度、位置、及び姿勢とに基づいて、公知の手法でロボット12の動作プログラムを作成する。ここで、図4aは、ツールの三次元モデルを示す図である。ツール13がバリ取り作業に使用される場合には、図4aに示されるように、ツール13はワーク14に直接接触するツール加工部位13aと、ワーク14に直接接触しないツール非加工部位13bとを含んでいる。図4aにおいては、干渉対象指定部24が、ツール加工部位13aを後述する干渉チェックにおける干渉対象から除外するように設定する。あるいは、図4bに示されるように、干渉対象指定部24が、ツール非加工部位13bを干渉チェックにおける干渉対象として指定してもよい。なお、ツール13がアーク溶接作業で使用される場合には、干渉対象指定部24によって、ツール13全体がツール非加工部位として指定されるものとする。次いで、図2のステップS14においては、干渉検出部25が各教示点Aにおいてロボット12またはツール非加工部位13bと、ワーク14または周辺機器15A、15Bとが干渉するか否かをチェックする。図5は第一の実施形態において干渉チェックを説明するための概念図である。図5においては、説明を簡単にする目的で、一つの周辺機器15Bは図示を省略している。図5においては、ロボット12およびツール13の三次元モデルがそれらの元位置から一つの教示点Aに対応する位置まで表示部11上で移動される。当然のことながら、ワーク14および周辺機器15Aの三次元モデルの位置は変化しない。そのような状態で、干渉検出部25はロボット12またはツール非加工部位13bと、ワーク14または周辺機器15A、15Bとが干渉するかをチェックする。このようなチェック動作は、各教示点Aにおいて行われる。そして、干渉検出部25が干渉を検出しなかった場合には、ステップS17に進んで、修正無しで動作プログラムを完成させる。図6a~図6eは、ツール、ワークおよび周辺機器の三次元モデルを示す図である。図6aにおいては、ツール13のツール加工部位13aのツール先端点13cが、ワーク14の加工線41における教示点Aに配置されている。図6aからわかるように、この状態においては、ツール13のツール非加工部位13bが周辺機器15Aに干渉している。干渉検出部25がこのような干渉を検出した場合には、図2のステップS15に進む。ステップS15においては、非干渉位置検索部26がロボット12またはツール非加工部位とワーク14または周辺機器15A、15Bとが干渉しない非干渉位置を検索する。図6bに示されるように、非干渉位置検索部26は、所定の検索範囲SA内において、ツール13をそのツール先端点13c回りに回転させる。図6bにおいてはツール13を時計回りに回転させている。ただし、所定の検索範囲SA内であれば、ツール13を反時計回りに回転させてもよい。そして、図6cに示される位置までツール13を回転させると、ツール13は周辺機器15Aに干渉しないようになる。非干渉位置検索部26は、このような非干渉位置を検索し、非干渉位置におけるツール13をツール13’として表示部11に表示する。そして、修正部27によって、位置や姿勢などを含む教示点Aの情報が、検索された非干渉位置に対応するように修正されるステップS16。非干渉位置検索部26はツール先端点13c回りの回転運動以外の運動、例えば並進移動を通じて、非干渉位置を検索してもよい。図6dにおいては、所定の検索範囲SB内においてツール13をワーク14の加工線41に沿って右方向に並進移動させている。そして、図6eに示される位置までツール13を並進移動させると、ツール13は周辺機器15Aに干渉しないようになる。このような位置を非干渉位置として、ツール13’を表示して、修正部27が教示点Aの情報を同様に修正してもよいステップS16。なお、ツール13を移動させる際には、ロボット12がツール13の運動に従って移動される場合がある。従って、非干渉位置は、ツール13およびロボット12が周辺機器15Aおよびワーク14に干渉しないように検索されるものとする。再び図2を参照すると、ステップS17においては、プログラム生成部23は修正された教示点Aに基づいて、ロボット12の動作プログラムを再作成する。本発明においては、加工線41に基づいて生成される全ての教示点Aに関し、ロボット12またはツール非加工部位13bとワーク14または周辺機器15A、15Bとが干渉するか否かがチェックされ、干渉する場合には、非干渉位置が検索される。そして、非干渉位置に対応する教示点Aの情報を更新し、更新された教示点Aに基づいてロボット12の動作プログラムが再作成される。このようにして、本発明の第一の実施形態においては、ロボット12またはツール非加工部位13bとワーク14または周辺機器15A、15Bとが干渉することのない動作プログラムを自動的に生成することができる。その結果、従来ではプログラムの確認作業や教示修正に必要としていた時間を大幅に削減できるのが分かるであろう。また、本発明の第一の実施形態においては、干渉対象指定部24が、ツール非加工部位13bを干渉対象として指定するようにしている。例えばツール13がバリ取り作業を行う場合には、ツール13はツール加工部位13aを必ず備えることになる。そのような場合であっても、本発明では、非干渉位置の検索が可能となっている。ところで、図7は本発明の他の実施形態に基づくロボットプログラミング装置の概念図であり、図8は他の実施形態において干渉チェックを説明するための概念図である。図7に示されるように、他の実施形態においては、ツール13はロボット12aの先端に取付けられている。そして、ワーク14は、周辺機器としての他のロボット12bの先端に取付けられたベース16上に載置されている。図7に示される他の実施形態においても、図2に示したのと概ね同様にロボット12の動作プログラムが生成される。ただし、図8から分かるように、他の実施形態においては、ステップS14において、干渉検出部25は、ロボット12aまたはツール非加工部位13bと、ロボット12b、ベース16、ワーク14または周辺機器15Aとが干渉するか否かを検出する。そして、非干渉位置検索部26は、ロボット12aまたはツール非加工部位13bと、ロボット12b、ベース16、ワーク14または周辺機器15Aとが干渉しない非干渉位置を検索し、非干渉位置に基づいて教示点Aの情報が更新されるものとする。従って、図7に示される他の実施形態においては、ワーク14が周辺機器としての他のロボット12bに把持されている場合であっても、ロボット12aまたはツール非加工部位13bと、ロボット12b、ベース16、ワーク14または周辺機器15Aとが干渉することのないプログラムを自動的に生成することができる。その結果、図7に示される他の実施形態においても、従来ではプログラムの確認作業や教示修正に必要としていた時間を大幅に削減できるのが分かるであろう。図9は本発明のさらに他の実施形態に基づくロボットプログラミング装置の概念図であり、図10はさらに他の実施形態において干渉チェックを説明するための概念図である。図9に示されるように、ワーク14は、周辺機器としてのポジショナ18の先端に取付けられたベース16上に載置されている。ポジショナ18はベース16をジョイント19回りに回転させて所望の位置で固定できる装置である。図9に示されるさらに他の実施形態においても、図2に示したのと概ね同様にロボット12の動作プログラムが生成される。ただし、図10から分かるように、さらに他の実施形態においては、ステップS14において、干渉検出部25は、ロボット12またはツール非加工部位13bと、ポジショナ18、ベース16、ワーク14または周辺機器15Aとが干渉するか否かを検出する。そして、非干渉位置検索部26は、ロボット12またはツール非加工部位13bと、ポジショナ18、ベース16、ワーク14または周辺機器15Aとが干渉しない非干渉位置を検索し、非干渉位置に基づいて教示点Aの情報が更新されるものとする。従って、図9に示されるさらに他の実施形態においては、ワーク14が周辺機器としてのポジショナ18に担持されている場合であっても、ロボット12またはツール非加工部位13bと、ポジショナ18、ベース16、ワーク14または周辺機器15Aとが干渉することのないプログラムを自動的に生成することができる。その結果、図9に示されるさらに他の実施形態においても、従来ではプログラムの確認作業や教示修正に必要としていた時間を大幅に削減できるのが分かるであろう。ところで、図11は本発明の第二の実施形態に基づくロボットプログラミング装置の概念図であり、図1と概ね同様である。そして、図12は、第二の実施形態におけるロボットプログラミング装置の動作を示すフローチャートである。さらに、図13は、第二の実施形態において干渉チェックを説明するための概念図である。図12に示されるように、第二の実施形態においても、はじめにステップS21にてロボット12、ツール13、ワーク14および周辺機器15Aの三次元モデルを表示部11上に表示する。次いで、ステップS22においては、制御装置20の移動部28図1を参照されたいがロボット12の三次元モデルを表示部11上において任意の指定位置まで移動させる。指定位置は三次元空間内のワーク14に接触していない位置に在るものとする。図13から分かるように、ステップS22においては、湾曲矢印で示されるようにロボット12を移動させている。ここで、図4aおよび図4bを参照して前述したように、干渉対象指定部24が、ツール13のツール加工部位13aを干渉チェックにおける干渉対象から除外するように設定する。あるいは、図4bに示されるように、干渉対象指定部24が、ツール非加工部位13bを干渉チェックにおける干渉対象として指定してもよい。そして、ステップS23においては、前述したように干渉検出部25が、ロボット12またはツール非加工部位13bと、ワーク14または周辺機器15Aとが干渉するか否かをチェックする図13を参照されたい。そして、干渉検出部25が干渉を検出した場合にはステップS24に進む。次いで、ステップS24においては、非干渉位置検索部26が、ロボット12またはツール非加工部位13bと、ワーク14または周辺機器15Aとが干渉しない非干渉位置を前述したのと同様に検索する。図14a~図14dはツールおよび周辺機器の三次元モデルを示す図であり、実線で示されるようにツール13は周辺機器15Aに干渉している。以下、これら図面を参照して非干渉位置検索部26の動作について簡潔に説明する。図14aにおいては、非干渉位置検索部26は、所定の検索範囲SA内において、ツール13をそのツール先端点13c回りに回転させる。そして、図14bに示される位置までツール13を回転させると、ツール13は周辺機器15Aに干渉しないようになる。非干渉位置検索部26は、このような非干渉位置を検索し、非干渉位置におけるツール13をツール13’として表示部11に表示する。そして、修正部27は、指定位置が非干渉位置に対応するように修正する。また、非干渉位置検索部26はツール13を並進移動させることにより、非干渉位置を検索してもよい。図14cにおいては、所定の検索範囲SB内においてツール13をワーク14の加工線41に沿って右方向に並進移動させている。そして、図14dに示される位置までツール13を並進移動させると、ツール13は周辺機器15Aに干渉しないようになる。このような位置を非干渉位置として、ツール13’を表示して、修正部27は指定位置が非干渉位置に対応するように更新する。最終的に図12に示されるステップS25においては、新たな指定位置である非干渉位置にロボット12およびツール13を表示部11上で移動させて処理を終了する。このようにして、本発明の第二の実施形態においては、ロボット12を三次元空間上の指定位置に移動させる際に、ロボット12またはツール非加工部位13bとワーク14または周辺機器15Aとが干渉する場合には、非干渉位置を検索して指定位置を自動で修正している。従って、教示作業において、非干渉位置を検索するために必要としていた時間を大幅に削減できるのが分かるであろう。また、本発明の第二の実施形態においても、干渉対象指定部24が、ツール非加工部位13bを干渉対象として指定するようにしている。例えばツール13がバリ取り作業を行う場合には、ツール13はツール加工部位13aを必ず備えることになる。そのような場合であっても、本発明では、非干渉位置の検索が可能となっている。ところで、図1に示される制御装置20の範囲指定部29は検索範囲SA、SBを指定することができる。例えば、アーク溶接では、ツール13の移動範囲は小さくするのが好ましく、バリ取り作業では、検索範囲を大きく設定するのが好ましい。さらに、バリ取りやアーク溶接などアプリケーションによっては、特定の方向にツール13等を移動させるのが好ましくない場合がある。そのような場合には、図1に示される無効指定部30によって、特定の方向におけるツール13等の回転運動および並進移動を無効にするように設定するのが好ましい。また、図1に示される検索順序指定部31は、所定の方向におけるツール13等の並進移動および回転運動による検索を優先的に行うように検索順序を指定することができる。この検索順序は、バリ取りやアーク溶接などアプリケーションに応じて定まるものとする。また、図1に示される非干渉位置検索部26によって複数の非干渉位置が検索範囲SA、SB内に検出される場合がある。そのような場合には、検索結果設定部32によって、一つの非干渉位置のみが検索結果として採用されるようにするのが好ましい。非干渉位置検索部26は、例えば無効指定部30により無効とされた方向以外の方向で且つ、検索順序指定部31により指定された順序で、非干渉位置を検索する。そして、検索結果設定部32は、最初に見つかった非干渉位置を検索結果として設定できる。この場合には、一つの非干渉位置が検出されると、非干渉位置の検索処理は停止する。従って、例えば他の方向についての非干渉位置の検索が終了していない場合であっても、他の方向についての検索は省略される。あるいは、検索結果設定部32は、複数の非干渉位置のそれぞれと対応するロボット12の位置との間の差を算出する。そして、検索結果設定部32は、そのような差が最も小さい非干渉位置を検索結果として採用してもよい。このように、本発明では、範囲指定部29、無効指定部30、検索順序指定部31および検索結果設定部32を備えているので、バリ取りやアーク溶接などアプリケーションに応じた最適な検索内容を詳細に設定でき、アプリケーションに応じて非干渉位置を適切に検索できるのが分かるであろう。