(57)【要約】【課題】ロボットにより製造する製造品の機種毎の仮想環境を容易に構築する。【解決手段】教示装置６００の処理部は、仮想ロボット、仮想周辺物、ＴＣＰ及び教示点をそれぞれ構成要素とし、各構成要素を、各仮想環境に共通に用いるか個別に用いるかをユーザに選択操作させる画像を、画面７１０に表示させる。処理部は、ユーザの操作に従って、各構成要素を、各仮想環境に共通に用いる共通構成要素、又は各仮想環境に個別に用いる個別構成要素のいずれかに分類する。処理部は、分類処理により分類した、共通構成要素と、対象となる個別構成要素とで、仮想環境を構築する。【選択図】図１
2017213644.tif 000002
【特許請求の範囲】
【請求項１】
ユーザの操作により、ロボットに対応する仮想ロボット、及び前記ロボットの周辺に存在する周辺物に対応する仮想周辺物を仮想空間に配置して構成された仮想環境を、前記ロボットにより製造する製造品の機種毎にそれぞれ設定するとともに、前記機種毎の各仮想環境に前記ロボットの基準点、及び前記基準点の動作目標位置を表す教示点を設定する処理部を備え、
前記処理部は、
前記仮想ロボット、前記仮想周辺物、前記基準点及び前記教示点をそれぞれ構成要素とし、前記各構成要素を、前記各仮想環境に共通に用いるか個別に用いるかをユーザに選択操作させる画像を、画面に表示させる分類表示処理と、
ユーザの操作に従って、前記各構成要素を、前記各仮想環境に共通に用いる共通構成要素、又は前記各仮想環境に個別に用いる個別構成要素のいずれかに分類する分類処理と、
前記分類処理により分類した、前記共通構成要素と、対象となる前記個別構成要素とで、前記仮想環境を構築する構築処理と、を実行することを特徴とする教示装置。
【請求項２】
前記処理部により読み書き可能な記憶部を備え、
前記処理部は、前記分類処理では、分類した結果を前記記憶部に記憶させ、前記構築処理では、前記記憶部に記憶させた分類の結果に基づいて、前記仮想環境を構築することを特徴とする請求項１に記載の教示装置。
【請求項３】
前記処理部は、第１ボタンを前記画面に表示する第１ボタン表示処理を実行し、ユーザにより前記第１ボタンが操作されたときに、前記分類表示処理を実行することを特徴とする請求項１又は２に記載の教示装置。
【請求項４】
前記処理部は、
前記各仮想環境において、前記仮想ロボット及び前記仮想周辺物で干渉するか否かを判断する干渉判断処理と、
前記干渉判断処理にて前記仮想ロボット及び前記仮想周辺物で干渉すると判断した場合には、前記画面に警告画像を表示させる干渉警告処理と、を実行することを特徴とする請求項１乃至３のいずれか１項に記載の教示装置。
【請求項５】
前記処理部は、第２ボタンを前記画面に表示する第２ボタン表示処理を実行し、ユーザにより前記第２ボタンが操作されたときに、前記干渉判断処理を実行することを特徴とする請求項４に記載の教示装置。
【請求項６】
前記処理部は、
前記基準点を前記教示点に移動させたときに前記仮想ロボットの各関節が可動域内に収まっているか否かを判断する姿勢判断処理と、
前記仮想ロボットの各関節が可動域内に収まっていないと判断した場合には、前記画面に警告画像を表示させる姿勢警告処理と、を実行することを特徴とする請求項１乃至５のいずれか１項に記載の教示装置。
【請求項７】
前記処理部は、第３ボタンを前記画面に表示する第３ボタン表示処理を実行し、ユーザにより前記第３ボタンが操作されたときに、前記姿勢判断処理を実行することを特徴とする請求項６に記載の教示装置。
【請求項８】
前記処理部は、前記仮想空間において前記仮想周辺物の位置が変更された際に前記仮想周辺物との相対位置関係を維持しつつ前記教示点の位置が変更されるよう、前記教示点と前記仮想周辺物とを関連付けることを特徴とする請求項１乃至７のいずれか１項に記載の教示装置。
【請求項９】
前記処理部は、前記各仮想環境において、前記構成要素をノードとする樹形図形式で管理し、ユーザの操作に従って前記各構成要素にノード名を付与し、前記教示点を、前記仮想周辺物を親ノードとする子ノードとし、前記基準点を、前記仮想ロボットを親ノードとする子ノードとして、ノード名を樹形図形式で前記画面に表示させる請求項８に記載の教示装置。
【請求項１０】
前記処理部は、前記分類処理において、前記各仮想環境のうちいずれかの仮想環境に含まれる構成要素について、前記個別構成要素から前記共通構成要素に分類を変更する操作がユーザによりなされた場合であって、残りの仮想環境で、変更対象とする構成要素のノード名と同じノード名の構成要素が存在し、かつ同じノード名の構成要素同士が異なる場合には、ユーザの操作に応じて同じノード名の構成要素の中から１つを選択して、前記共通構成要素とすることを特徴とする請求項９に記載の教示装置。
【請求項１１】
前記処理部は、前記分類処理において、前記仮想環境に前記共通構成要素として含まれる構成要素について、前記共通構成要素から前記個別構成要素に分類を変更する操作がユーザによりなされた場合には、複数の前記仮想環境のうち、ユーザの操作により選択した仮想環境に対して、分類の変更対象となる構成要素を、前記個別構成要素として設定することを特徴とする請求項９又は１０に記載の教示装置。
【請求項１２】
前記処理部は、ユーザの操作により前記構成要素を削除する指示がなされたとき、削除の指示がなされた前記構成要素に子ノードが存在するか否かを確認し、子ノードが存在する場合には、前記画面に警告画像の表示を行う削除警告処理を実行することを特徴とする請求項９乃至１１のいずれか１項に記載の教示装置。
【請求項１３】
前記処理部は、前記削除警告処理において、前記画面に削除を許可する許可ボタンと許可しない不許可ボタンの表示を行い、ユーザに前記許可ボタンが操作された場合には、削除対象の構成要素を削除するとともに、削除対象の構成要素に対する子ノードの構成要素を削除することを特徴とする請求項１２に記載の教示装置。
【請求項１４】
前記処理部は、
第４ボタンを前記画面に表示する第４ボタン表示処理と、
ユーザにより、前記第４ボタンが操作され、かつ前記画面に表示されたノード名のうちいずれかが選択されたとき、前記各仮想環境の間で、選択されたノード名と同じノード名の構成要素の情報を、前記画面にリスト表示させるリスト表示処理と、を実行することを特徴とする請求項９乃至１３のいずれか１項に記載の教示装置。
【請求項１５】
前記処理部は、前記リスト表示処理にて、表示対象となっている前記各仮想環境の構成要素の情報の編集を受け付け、編集されたときには、編集後の情報を表示させることを特徴とする請求項１４に記載の教示装置。
【請求項１６】
請求項１乃至１５のいずれか１項に記載の教示装置と、
前記画面を有する表示装置と、
ユーザの操作を受け付ける操作装置と、を備えた教示システム。
【請求項１７】
請求項１乃至１５のいずれか１項に記載の教示装置と、
前記ロボットと、
前記教示点のデータ、及び前記ロボットを動作させる命令を含む動作プログラムに基づき、前記ロボットの動作を制御する制御装置と、を備えたロボットシステム。
【請求項１８】
処理部が、ユーザの操作により、ロボットに対応する仮想ロボット、及び前記ロボットの周辺に存在する周辺物に対応する仮想周辺物を仮想空間に配置して構成された仮想環境を、前記ロボットにより製造する製造品の機種毎にそれぞれ設定するとともに、前記機種毎の各仮想環境に前記ロボットの基準点、及び前記基準点の動作目標位置を表す教示点を設定する教示方法であって、
前記処理部が、前記仮想ロボット、前記仮想周辺物、前記基準点及び前記教示点をそれぞれ構成要素とし、前記各構成要素を、前記各仮想環境に共通に用いるか個別に用いるかをユーザに選択操作させる画像を、画面に表示させる分類表示工程と、
前記処理部が、ユーザの操作に従って、前記各構成要素を、前記各仮想環境に共通に用いる共通構成要素、又は前記各仮想環境に個別に用いる個別構成要素のいずれかに分類する分類工程と、
前記処理部が、前記分類工程により分類した、前記共通構成要素と、対象となる前記個別構成要素とで、前記仮想環境を構築する構築工程と、を備えたことを特徴とする教示方法。
【請求項１９】
請求項１８に記載の教示方法により設定された前記教示点のデータ、及び前記ロボットを動作させる命令を含む動作プログラムに基づき、前記ロボットを動作させて、前記ロボットに製造品を製造させる製造品の製造方法。
【請求項２０】
コンピュータに請求項１８に記載の教示方法の各工程を実行させるためのプログラム。
【請求項２１】
請求項２０に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットのオフライン教示に関する。
【背景技術】
【０００２】
近年、ロボットを使用した生産ラインにおいて、多品種少量生産化が進められており、複数種類の製品を生産可能な汎用のロボットシステムの開発が進められている。中でも、複数の部品の組み立てに対応した多能工化されたロボットシステムの開発が進められている。
【０００３】
多能工化されたロボットシステムの特徴として、以下のような制約事項が生じることが多い。まず、ロボットの動作領域内に、部品、部品を供給する供給機、部品の組み立てで利用するドライバーや部品の固定台などの治工具を配置しなければならない。また、複数台のロボットで協調して作業を行う場合、製品の受け渡しをロボット同士に行わせる関係上、ロボット同士の可動範囲が重なるため、ロボット同士が衝突しないようにしなければならない。さらに、生産が開始された後にメンテナンスを行い易くするため、ロボット、及びその周辺物の配置を考慮しなければならない。このように、開発に伴う制約事項も多いため、多能工化されたロボットシステムの開発には細心の注意が必要であり、直接実機で検討できず、事前検証が必要となっている。
【０００４】
そこで、実機と同様の装置構成をコンピュータの仮想空間内に用意し、ユーザの操作により、ロボットの教示及び動作確認をオフラインで行うことができる教示装置が利用されるようになった（例えば特許文献１参照）。この教示装置では、３Ｄコンピュータグラフィックスによる演算で表示装置に仮想空間内の仮想構造物を２次元画像で表示させ、視覚的に確認が可能となっている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−１４５０９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
近年では、治工具やロボットの一部の構成（例えばロボットハンドの爪など）を、製造する製造品の機種に応じて変更するだけで、製造する製造品の機種を拡大することができるロボット開発が進められている。
【０００７】
このような場合、オフライン教示で用いる仮想環境は１つでは済まず、製造品の機種毎に、ロボットやワーク、治工具等の構造物に対応する仮想構造物の形状や配置等が異なる仮想環境を用意しなければならない場合がある。一方、これら複数の機種の製造で共通に用いる構造物もあり、各仮想環境において同じ仮想構造物を用意することになる。
【０００８】
しかし、ある仮想環境において、複数の仮想環境で共通に用いる仮想構造物を新たに追加したり編集したりした場合、ユーザの手作業で残りの仮想環境に反映させる必要があった。したがって、ユーザはこの反映作業を行う際に入力ミスが発生しないように注意を払わなければならず、作業が煩雑であり、作業に要する時間が長くなっていた。
【０００９】
そこで、本発明は、ロボットにより製造する製造品の機種毎の仮想環境を容易に構築することを目的とする。
【課題を解決するための手段】
【００１０】
本発明の教示装置は、ユーザの操作により、ロボットに対応する仮想ロボット、及び前記ロボットの周辺に存在する周辺物に対応する仮想周辺物を仮想空間に配置して構成された仮想環境を、前記ロボットにより製造する製造品の機種毎にそれぞれ設定するとともに、前記機種毎の各仮想環境に前記ロボットの基準点、及び前記基準点の動作目標位置を表す教示点を設定する処理部を備え、前記処理部は、前記仮想ロボット、前記仮想周辺物、前記基準点及び前記教示点をそれぞれ構成要素とし、前記各構成要素を、前記各仮想環境に共通に用いるか個別に用いるかをユーザに選択操作させる画像を、画面に表示させる分類表示処理と、ユーザの操作に従って、前記各構成要素を、前記各仮想環境に共通に用いる共通構成要素、又は前記各仮想環境に個別に用いる個別構成要素のいずれかに分類する分類処理と、前記分類処理により分類した、前記共通構成要素と、対象となる前記個別構成要素とで、前記仮想環境を構築する構築処理と、を実行することを特徴とする。
【発明の効果】
【００１１】
本発明によれば、ロボットにより製造する製造品の機種毎の仮想環境を容易に構築することができる。
【図面の簡単な説明】
【００１２】
【図１】第１実施形態に係るロボットシステムの概略構成を示す説明図である。
【図２】第１実施形態に係る製造品の製造方法を示すフローチャートである。
【図３】第１実施形態に係る教示装置の構成を示すブロック図である。
【図４】第１実施形態に係る表示装置の画面に表示される画像を示す説明図である。
【図５】（ａ）は教示装置の処理部を機能別にブロック化した教示システムの制御ブロック図である。（ｂ）は教示装置の記憶部を示す説明図である。
【図６】第１実施形態において各仮想環境の構成要素を新規作成するフローチャートである。
【図７】（ａ）は第１実施形態において仮想環境の構成要素を新規作成する前の画面における表示状態を示す説明図である。（ｂ）は第１実施形態において機種Ａに対応する仮想環境の構成要素を作成完了したときの画面における表示状態を示す説明図である。
【図８】第１実施形態に係る教示装置の処理部において構成要素を分類するときの制御を示すフローチャートである。
【図９】（ａ）及び（ｂ）は分類ボタンが操作されたときに画面に表示する分類設定画像を示す説明図である。
【図１０】（ａ）及び（ｂ）は記憶部に記憶されている機種Ａに対応する仮想環境のデータをリスト化した説明図である。
【図１１】（ａ）は機種Ａから機種Ｂに切り替える際の画面における表示状態を示す説明図である。（ｂ）は機種Ｂに切り替え完了したときの画面における表示状態を示す説明図である。（ｃ）は機種Ｂに対応する仮想環境の各構成要素の作成が完了したときの画面における表示状態を示す説明図である。
【図１２】分類ボタンが操作されたときに画面に表示する分類設定画像を示す説明図である。
【図１３】（ａ）及び（ｂ）は記憶部に記憶されている機種Ｂに対応する仮想環境のデータをリスト化した説明図である。
【図１４】（ａ）は機種Ｂから機種Ｃに切り替える際の画面における表示状態を示す説明図である。（ｂ）は、機種Ｃに切り替え完了したときの画面における表示状態を示す説明図である。（ｃ）は機種Ｃに対応する仮想環境の各構成要素の作成が完了したときの画面における表示状態を示す説明図である。
【図１５】分類ボタンが操作されたときに画面に表示する分類設定画像を示す説明図である。
【図１６】（ａ）及び（ｂ）は記憶部に記憶されている機種Ｃに対応する仮想環境のデータをリスト化した説明図である。
【図１７】第２実施形態において干渉確認を行うフローチャートである。
【図１８】（ａ）〜（ｃ）は第２実施形態における干渉確認を行うときの画面の表示を示す説明図である。
【図１９】（ａ）は干渉確認の際の警告画像の一例を示す説明図である。（ｂ）は姿勢確認の際の警告画像の一例を示す説明図である。
【図２０】第２実施形態において姿勢確認を行うフローチャートである。
【図２１】（ａ）〜（ｃ）は第２実施形態における姿勢確認を行うときの画面の表示を示す説明図である。
【図２２】第３実施形態における分類処理を示すフローチャートである。
【図２３】（ａ）及び（ｂ）は分類ボタンが操作されたときに画面に表示する分類設定画像を示す説明図である。
【図２４】（ａ）及び（ｂ）はフラグ変更確認ダイアログを示す説明図である。
【図２５】（ａ）及び（ｂ）はフラグ変更確認ダイアログを示す説明図である。
【図２６】（ａ）は分類処理確定後の機種Ａに対応する分類設定画像を示す説明図である。（ｂ）は分類処理確定後の機種Ｂに対応する分類設定画像を示す説明図である。（ｃ）は分類処理確定後の機種Ｃに対応する分類設定画像を示す説明図である。
【図２７】第４実施形態における削除処理を示すフローチャートである。
【図２８】（ａ）は構成要素の削除前の画面における表示状態を示す説明図である。（ｂ）は構成要素の削除後の画面における表示状態を示す説明図である。
【図２９】削除処理の際の警告画像の一例を示す説明図である。
【図３０】第５実施形態における機種間の同一名称のノードを一覧表示及び編集する処理を示すフローチャートである。
【図３１】第５実施形態において画面表示の初期状態を示す説明図である。
【図３２】（ａ）及び（ｂ）は第５実施形態において画面にリスト表示させたリスト画像を示す説明図である。
【発明を実施するための形態】
【００１３】
以下、本発明を実施するための形態を、図面を参照しながら詳細に説明する。
【００１４】
［第１実施形態］
図１は、第１実施形態に係るロボットシステムの概略構成を示す説明図である。図１に示すように、ロボットシステム１００は、ロボット２００、ツール３００、制御装置４００及び教示システム５００を有して構成されており、製造品を生産する生産ラインに設けられる。ツール３００は、例えば塗料などを塗布する塗布装置である。制御装置４００は、ロボット２００やツール３００の動作を制御する。
【００１５】
教示システム５００は、コンピュータで構成された教示装置６００と、教示装置６００に接続された表示装置７００と、教示装置６００に接続されたポインティングデバイスであるマウス８０１やキーボード８０２等の操作装置８００とを有している。教示装置６００は、ロボット２００のオフライン教示を行う装置である。表示装置７００は、例えば液晶モニタ等のモニタであり、教示装置６００の制御により画像を画面７１０に表示する。
【００１６】
制御装置４００は、このオフライン教示により作成されたロボットプログラムに基づき、ロボット２００の動作を制御する。
【００１７】
ロボット２００は、ロボットアーム２０１と、ロボットアーム２０１の先端部に取り付けられたエンドエフェクタであるロボットハンド２０２とを有する。ロボットアーム２０１は、垂直多関節のロボットアームであり、複数（例えば６つ）の関節を有する。
【００１８】
ロボット２００及びツール３００は、架台１１０上に固定され、架台１１０上には、ワークＷやワークＷを保持する治工具１３０が設けられる。なお、架台１１０上には、ロボット２００に隣接する壁１２０が設けられている。
【００１９】
制御装置４００と教示装置６００とは、データ通信可能に有線（又は無線）で接続されている。なお、不図示の外部記憶装置を用いて制御装置４００と教示装置６００との間でデータの受け渡しを行うようにしてもよい。
【００２０】
ここで、ロボット２００の手先、つまりロボットハンド２０２のフィンガーの先端近傍には、基準点であるツールセンターポイント（ＴＣＰ）が設定される。ＴＣＰは、位置を表す３つのパラメータ（ｘ，ｙ，ｚ）と、姿勢を表す３つのパラメータ（α，β，γ）、即ち６つのパラメータ（ｘ，ｙ，ｚ，α，β，γ）で表され、タスク空間上では、１つの点としてみなすことができる。つまり、タスク空間は、これら６つの座標軸で規定された空間である。このＴＣＰの動作目標位置として、教示点が設定される。
【００２１】
教示点は、例えば「Ｐ００１」、「Ｐ００２」等の名称と、名称に対応させたパラメータ（数値）とのデータで構成される。ロボットプログラムは、教示点のデータと、ロボット（ＴＣＰ）を動作させる命令を含む動作プログラムと、を有してなる。この命令には、教示点間を補間する補間命令が含まれている。動作プログラム中にも教示点は用いられるが、動作プログラムに用いられる教示点は、パラメータではなく、名称で記述されるのが好ましい。そして、教示点のデータは、動作プログラムとは別ファイルにしておくのが好ましい。
【００２２】
制御装置４００は、動作プログラムに含まれる補間命令に従って教示点間を補間し、ＴＣＰが辿る経路データを生成する。ここで、教示点間を補間する補間方法としては、直線補間、円弧補間、Ｓｐｌｉｎｅ補間、Ｂ−Ｓｐｌｉｎｅ補間、ベジェ曲線など、種々の方法がある。
【００２３】
そして、制御装置４００は、動作プログラムに含まれる命令に従い、ＴＣＰの軌道データを計算する。ＴＣＰの軌道データとは、時間をパラメータとしてＴＣＰの経路データを表したものである。具体的には、制御装置４００は、ＴＣＰの速度命令や加速度命令等の時間命令に基づき、ＴＣＰの軌道データを計算する。軌道データは、時刻毎（例えば１ｍｓ毎）のＴＣＰの位置指令の集合である。位置指令は、６つのパラメータ（ｘ，ｙ，ｚ，α，β，γ）で表される。
【００２４】
制御装置４００は、最終的には位置指令を各関節の関節角度を示す関節指令に逆運動学計算に基づき変換する。そして、制御装置４００は、関節指令をロボットアーム２０１の各関節の関節駆動装置に出力することで、ロボット２００（ロボットアーム２０１）の動作を制御する。
【００２５】
以下、製造品の製造方法について説明する。図２は、第１実施形態に係る製造品の製造方法を示すフローチャートである。教示装置６００は、第１実施形態の教示方法によるオフライン教示を行うことで、教示点のデータを含む仮想環境のデータ作成し、制御装置４００に送信する（Ｓ１：オフライン教示工程）。制御装置４００は、取得した仮想環境のデータと、動作プログラムとからなるロボットプログラムに基づき、軌道データを生成する（Ｓ２：軌道生成工程）。そして、制御装置４００は、軌道データに従ってロボット２００を動作させて、ロボット２００に製造品を製造させる（Ｓ３：生産工程）。以上、ステップＳ２及びステップＳ３において、ロボットプログラムに基づき、ロボット２００に製造品を製造させる。
【００２６】
図３は、第１実施形態に係る教示装置の構成を示すブロック図である。オフライン教示を行う教示装置６００は、処理部としてのＣＰＵ（Central  Processing  Unit）６０１を備えている。また、教示装置６００は、内部記憶装置として、ＲＯＭ（Read  Only  Memory）６０２、ＲＡＭ（Random  Access  Memory）６０３、ＨＤＤ（Hard  Disk  Drive）６０４を備えている。また、教示装置６００は、記録ディスクドライブ６０５及び各種のインタフェース６１１〜６１４を備えている。
【００２７】
ＣＰＵ６０１には、ＲＯＭ６０２、ＲＡＭ６０３、ＨＤＤ６０４、記録ディスクドライブ６０５及びインタフェース６１１〜６１４が、バス６１０を介して接続されている。ＲＯＭ６０２には、ＢＩＯＳ等の基本プログラムが格納されている。ＲＡＭ６０３は、ＣＰＵ６０１の演算処理結果等、各種データを一時的に記憶する記憶装置である。
【００２８】
ＨＤＤ６０４は、ＣＰＵ６０１の演算処理結果や外部から取得した各種データ等を記憶する記憶装置であると共に、ＣＰＵ６０１に、後述する各種演算処理を実行させるためのプログラム６４０を記録する記録媒体でもある。ＣＰＵ６０１は、ＨＤＤ６０４に記録（格納）されたプログラム６４０に基づいて、オフライン教示を行う教示方法の各工程を実行する。
【００２９】
記録ディスクドライブ６０５は、記録ディスク６４１に記録された各種データやプログラム等を読み出すことができる。
【００３０】
インタフェース６１１には、表示装置７００が接続されている。表示装置７００は、ＣＰＵ６０１の制御に従って画面７１０（図１）に画像を表示するモニタである。インタフェース６１２には、操作装置８００が接続されている。操作装置８００は、ユーザの操作を受け付けるデバイスであり、前述のマウス８０１やキーボード８０２（図１）で構成されている。第１実施形態では、ユーザインタフェースは、表示装置７００の画面７１０に操作画像を表示して、操作装置８００により各種の操作を可能とするグラフィカルユーザインターフェース（ＧＵＩ）となっている。
【００３１】
インタフェース６１３には、制御装置４００が接続されている。制御装置４００は、ＣＰＵ６０１からインタフェース６１３を介して仮想環境のデータと、動作プログラムとからなるロボットプログラムを取得し、ロボット２００の軌道を計算して、軌道データに従ってロボット２００の動作を制御する。インタフェース６１４には、書き換え可能な不揮発性メモリや外付けＨＤＤ等の外部記憶装置９００が接続されている。
【００３２】
なお、第１実施形態では、コンピュータ読み取り可能な記録媒体がＨＤＤ６０４であり、ＨＤＤ６０４にプログラム６４０が格納されるが、これに限定するものではない。プログラム６４０は、コンピュータ読み取り可能な記録媒体であれば、いかなる記録媒体に記録されていてもよい。例えば、プログラム６４０を供給するための記録媒体としては、図３に示すＲＯＭ６０２や、記録ディスク６４１、外部記憶装置９００を用いてもよい。具体例を挙げて説明すると、記録媒体として、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ＣＤ−Ｒ、ＤＶＤ−Ｒ、磁気テープ、ＵＳＢメモリ等の不揮発性メモリ、ＲＯＭ等を用いることができる。
【００３３】
内部記憶装置であるＨＤＤ６０４又は外部記憶装置９００には、予めロボット２００、ツール３００、架台１１０、壁１２０、治工具１３０、ワークＷ等の３次元の形状データ（モデル）を示す３Ｄ−ＣＡＤデータが記憶されている。コンピュータ上の仮想空間には、３Ｄ−ＣＡＤデータに基づく仮想モデルが配置される。
【００３４】
ここで、ロボット２００に対応する仮想空間内の仮想モデルを仮想ロボットといい、ツール３００、架台１１０、壁１２０、治工具１３０、ワークＷ等の、ロボット２００の周辺に存在する周辺物に対応する仮想空間内の仮想モデルを仮想周辺物という。そして、仮想ロボットや仮想周辺物を総称して仮想構造物という。
【００３５】
ＣＰＵ６０１は、複数の仮想構造物を仮想空間に配置して構成された仮想環境において、ＴＣＰと教示点を設定する。仮想ロボット、仮想周辺物、ＴＣＰ及び教示点をどの位置に配置するかは、ポインティングデバイスであるマウス８０１やキーボード８０２を用いたユーザの操作により行われる。
【００３６】
第１実施形態では、ＣＰＵ６０１は、ロボット２００により製造する製造品の機種毎にそれぞれ仮想環境を設定する。つまり、製造する製造品の機種に応じて、ロボットハンド２０２を取り替えたり、治工具１３０やツール３００の位置を変えたりすることがあり、製造する製造品の機種毎にそれぞれ仮想環境を設定する必要がある。
【００３７】
図４は、第１実施形態に係る表示装置の画面に表示される画像を示す説明図である。表示装置７００の画面７１０には、ＣＰＵ６０１の制御の下、仮想環境Ｇを２次元で表したモデル表示部１０と、パラメータ設定部２０と、モデル管理部３０と、マウスのカーソル４０とが表示される。モデル表示部１０、パラメータ設定部２０及びモデル管理部３０は、ＧＵＩであり、表示と操作を兼ねている。
【００３８】
モデル表示部１０には、３Ｄ−ＣＡＤデータに基づく仮想モデルで再現された複数の仮想構造物を仮想空間に配置して構成された仮想環境Ｇが表示される。
【００３９】
モデル管理部３０は、製造対象の機種を選択する画像を表示する機種設定部３１と、機種にて選択された機種に対応するノードをツリー表示するノード表示部３２とを有する。また、モデル管理部３０は、分類ボタン（第１ボタン）３３と、干渉確認ボタン（第２ボタン）３４と、姿勢確認ボタン（第３ボタン）３５とを有する。
【００４０】
ＣＰＵ６０１は、仮想ロボット、仮想周辺物、ＴＣＰ及び教示点をそれぞれ構成要素とし、各構成要素をノードとして樹形図形式で管理する。ＣＰＵ６０１は、ユーザの操作に従って各構成要素にノード名を付与し、モデル管理部３０のノード表示部３２に、ノード名を樹形図形式で表示させる。各ノード名は、カーソル４０により選択可能となっている。
【００４１】
具体例を挙げて説明すると、ロボット２００に対応する仮想ロボットに対しては「Ｒｏｂｏｔ」、ロボット２００のロボットハンド２０２に対応する仮想ロボットハンドに対しては「Ｈａｎｄ」の名称が付与される。また、ワークＷに対応する仮想ワークに対しては「Ｗｏｒｋ」、治工具１３０に対応する仮想治工具に対しては「Ｂｏｘ」、ツール３００に対応する仮想ツールに対しては「Ｔｏｏｌ」、壁１２０に対応する仮想壁に対しては「Ｗａｌｌ」の名称が付与される。また、ＴＣＰに対しては「ＴＣＰ」、教示点に対しては「Ｐ００１」〜「Ｐ００５」の名称が付与される。そして、ＣＰＵ６０１は、これらノード名を樹形図形式で表示させる。
【００４２】
ユーザがマウス８０１を操作して、カーソル４０をノード表示部３２のノード名を示す画像に移動させて選択（例えば左クリック）すると、ＣＰＵ６０１は、パラメータ設定部２０に、ユーザに選択されたノード名に対応するノードのパラメータを表示させる。このように、パラメータ設定部２０には、モデル管理部３０で選択されたノードの配置情報を表したパラメータが表示される。例えば、モデル管理部３０において「Ｐ００１」が選択された場合、パラメータ設定部２０には、「Ｐ００１」が表示されるとともに、「Ｐ００１」の名称が付与された教示点のパラメータが表示される。
【００４３】
ここで、ＣＰＵ６０１は、ユーザの操作により、仮想空間において仮想周辺物の位置が変更された際に仮想周辺物との相対位置関係を維持しつつ教示点の位置が変更されるよう、教示点と仮想周辺物とを関連付けておく。
【００４４】
具体例を挙げて説明すると、ノード名が「Ｐ００１」，「Ｐ００２」である教示点は、ノード名が「Ｗｏｒｋ」である仮想ワークと関連付けられている。更に詳細に説明すると、ノード名が「Ｐ００１」である教示点は、ノード名が「Ｗｏｒｋ」である仮想ワークと直接関連付けられており、ノード名が「Ｐ００２」である教示点も同様に、ノード名が「Ｗｏｒｋ」である仮想ワークと直接関連付けられている。
【００４５】
ノード名が「Ｐ００３」，「Ｐ００４」である教示点は、ノード名が「Ｂｏｘ」である仮想治工具と関連付けられている。更に詳細に説明すると、ノード名が「Ｐ００３」である教示点は、ノード名が「Ｂｏｘ」である仮想治工具と直接関連付けられており、ノード名が「Ｐ００４」である教示点も同様に、ノード名が「Ｂｏｘ」である仮想治工具と直接関連付けられている。ノード名が「Ｐ００５」である教示点は、ノード名が「Ｔｏｏｌ」である仮想ツールと関連付けられている。
【００４６】
このように、ＣＰＵ６０１は、モデル表示部１０に表示させる仮想モデルや、パラメータ設定部２０に表示させる教示点パラメータなどの情報を一括でノード管理し、モデル管理部３０に樹形図形式で表示している。ノード管理は、一番上の根のノード情報を原点（ＲＯＯＴ）とし、根のノードを「親ノード」と、枝のノードを「子ノード」とする。
【００４７】
第１実施形態では、ＣＰＵ６０１は、教示点を、仮想周辺物を親ノードとする子ノードとし、ＴＣＰを、仮想ロボット（具体的には仮想ロボットハンド）を親ノードとする子ノードとし、ノード名を樹形図形式で表示装置７００の画面に表示させる。
【００４８】
具体例を挙げて説明すると、ＣＰＵ６０１は、ノード名が「Ｐ００１」，「Ｐ００２」である教示点を、ノード名が「Ｗｏｒｋ」の仮想ワークを親ノードとする子ノードとして管理する。また、ＣＰＵ６０１は、ノード名が「Ｐ００３」，「Ｐ００４」である教示点を、ノード名が「Ｂｏｘ」の仮想治工具を親ノードとする子ノードとして管理する。また、ＣＰＵ６０１は、ノード名が「Ｐ００５」である教示点を、ノード名が「Ｔｏｏｌ」の仮想ツールを親ノードとする子ノードとして管理する。
【００４９】
また、第１実施形態では、ノード名が「Ｒｏｂｏｔ」である仮想ロボットを親ノードとし、仮想ロボットの構成の一部である、ノード名が「Ｈａｎｄ」である仮想ロボットハンドを子ノードとして管理する。更に、ノード名が「Ｈａｎｄ」である仮想ロボットハンドを親ノードとし、ノード名が「ＴＣＰ」であるＴＣＰを子ノードとして管理する。このように、ＣＰＵ６０１は、ノード名が「Ｒｏｂｏｔ」である仮想ロボット、より具体的には、ノード名が「Ｈａｎｄ」である仮想ロボットハンドを親ノードとし、ＴＣＰを子ノードとして管理する。
【００５０】
親子間のノードの配置情報は、相対値情報または絶対値情報で保有される。具体的に説明すると、架台１１０に固定して設定された絶対座標系がある。ロボット２００の配置は、絶対値情報として、絶対座標系を基準としてパラメータを設定する。教示点も同様に、絶対値情報として、絶対座標系を基準にパラメータを設定する。制御装置４００は、ロボット２００の絶対値情報と教示点の絶対値情報を基に、ロボット２００を基準とした教示点の相対値（パラメータ）を計算する。その後、計算した教示点の相対値（パラメータ）を基に、軌道を計算して、逆運動学計算により各関節の関節指令を計算することになる。この絶対値情報とは別に、親ノードに対する相対値情報を設定することも可能である。例えば、ノード名が「Ｐ００１」，「Ｐ００２」である教示点は、ノード名が「Ｗｏｒｋ」の仮想ワークと関連付けられており、親ノードである仮想ワークを基準とした相対値（パラメータ）を設定することが可能である。
【００５１】
ここで、子ノードにおいてユーザにより設定されるのは、絶対値情報又は相対値情報のいずれであってもよい。ユーザにより絶対値情報又は相対値情報のいずれか一方が設定された場合、ＣＰＵ６０１は、行列演算により、他方を演算することができる。図４の例では、ユーザがキーボード８０２を操作して絶対値情報を入力した例を示している。なお、教示点として、各関節の関節値で指定することも可能である。この場合、ＣＰＵ６０１は、順運動学計算により、タスク空間における絶対値情報（パラメータ）を求めることができ、また、行列演算により、相対値情報を求めることができる。
【００５２】
親ノードの配置（絶対値情報）が編集された場合、ＣＰＵ６０１は、親ノードとの相対値情報を一定に維持して子ノードの配置（絶対値情報）を変更する。例えば、仮想治工具へのアプローチ姿勢となる、ノード名が「Ｐ００３」，「Ｐ００４」の教示点を、ノード名が「Ｂｏｘ」である仮想治工具の子ノードと定義した場合、仮想治工具を移動させると、教示点も相対値関係を維持して配置が変更されることになる。よって、親ノードの配置を変更した際に、子ノードの配置をＣＰＵ６０１が自動的に変更するので、ユーザが変更する必要が無くなる。これにより、ユーザの作業回数を減らし、教示工数を削減できる。
【００５３】
ここで、仮想環境の構成要素を示すノードには、３Ｄモデルノードとパラメータノードとが存在する。３Ｄモデルノードは、主に仮想ロボットや仮想ワークなど、物理的な構成を持つノードであり、配置情報と、モデル表示部１０に表示される３Ｄモデル情報を持つノードである。パラメータノードは、主に教示点やＴＣＰなど、物理的な構成を持たないノードであり、配置情報（パラメータ）のみを持つノードである。
【００５４】
なお、教示点とＴＣＰは、３Ｄモデル情報を持たないが、仮想空間のどの場所に配置されているのか、モデル表示部１０で目視できるようにする必要がある。そのため、３Ｄモデル情報とは別に、仮想環境Ｇに定義された標準の３Ｄベクトルモデルを自動的に表示するものとする。
【００５５】
次に、教示システムの制御ブロックについて説明する。図５（ａ）は、教示装置の処理部を機能別にブロック化した教示システムの制御ブロック図である。図５（ｂ）は、教示装置の記憶部を示す説明図である。
【００５６】
教示システム５００は、前述したとおり、教示装置６００と、表示装置７００と、操作装置８００とを有する。教示装置６００の処理部であるＣＰＵ６０１（図３）は、図５（ａ）に示すように、操作入力部６４２、制御部６４３、計算部６４４、及び入出力部６４６として機能する。教示装置６００のＲＡＭ６０３（図３）は、図５（ａ）に示すように、記憶部６４５として機能する。なお、記憶部６４５は、ＣＰＵ６０１により読み書き可能であればよく、ＲＡＭに限定するものではない。
【００５７】
表示装置７００には、前述したとおり、モデル表示部１０やパラメータ設定部２０、モデル管理部３０（図４）などのＧＵＩが表示されている。操作装置８００は、前述したとおり、マウス８０１やキーボード８０２（図１）からなる。
【００５８】
操作入力部６４２は、操作装置８００による表示装置７００のＧＵＩの操作を認識する。制御部６４３は、操作入力部６４２で入力した情報を元に、計算部６４４へ計算処理の依頼、計算結果より表示装置７００へ情報の更新依頼、記憶部６４５から情報入出力など、教示システム５００全体の制御を行う。計算部６４４は、制御部６４３から依頼のあった計算処理を行い、制御部６４３に計算結果を出力する。また、計算部６４４は、計算結果を記憶部６４５に保存する。
【００５９】
記憶部６４５には、モデル表示部１０に表示されているノードのモデル情報や配置情報が保存されており、制御部６４３からの要求に応じて情報を出力する。
【００６０】
入出力部６４６は、制御部６４３からの保存要求に応じ、記憶部６４５に保存されたノード情報を、ファイルＨとして出力する。また、入出力部６４６は、制御部６４３からの読込要求に応じ、過去に出力したファイルＨを読み込み、記憶部６４５を更新し、読み込んだ仮想環境Ｇを再現する。ファイルＨには、仮想環境Ｇを構成する構成要素のデータが記述されている。
【００６１】
記憶部６４５には、図５（ｂ）に示すように、共通記憶領域６５１と機種別記憶領域６５２１，６５２２，…，６５２Ｎとが確保される。
【００６２】
共通記憶領域４５１は、製造する製造品の全機種に対応する全仮想環境で共通に用いる構成要素として定義するノード情報（共通ノード、共通構成要素）を保存する領域である。共通記憶領域４５１に記憶されたノード情報である共通ノードは、機種に関わらず全ての仮想環境Ｇの構築に用いられ、作成、編集を行うことができる。これにより、特定の機種に対応する仮想環境を構築するときに１回だけ作成又は編集するだけで、他の機種に対応する仮想環境を構築するときのノードとして利用することができ、自動的に登録が可能となり、入力ミスと教示工数の削減を図ることができる。
【００６３】
機種別記憶領域６５２１，６５２２，…，６５２Ｎは、各仮想環境の構築で個別に用いる構成要素として定義するノード情報（機種別ノード、個別構成要素）を保存する領域であり、製造する機種の数（Ｎ個）だけ、動的に確保されるものである。機種別記憶領域６５２１，６５２２，…，６５２Ｎは、機種毎にアクセスされる領域が切り替えられる。切り替えられた領域を機種別記憶領域６５２ｉとする。なお、ｉは、１〜Ｎの整数であり、設定対象を表す数字である。機種別記憶領域６５２ｉに格納された機種別ノードは、切り替えられた機種のみの仮想環境Ｇの構築に用いられ、作成、編集することができる。
【００６４】
これにより、特定の機種のみで使用されるノード情報を機種別に登録することができ、仮想環境の作成対象となる機種を切り替えると、その機種別のノード情報の表示も変更され、作業が簡単になり、教示工数の削減を図ることができる。
【００６５】
以下、機種毎に異なる仮想環境Ｇを構築する際にノードを新規作成する手順について説明する。なお、機種Ａ、機種Ｂ、機種Ｃの３機種の製造品のそれぞれの仮想環境Ｇを構築する作業を例に説明する。
【００６６】
図６は、第１実施形態において各仮想環境の構成要素を新規作成するフローチャートである。まず、機種Ａで初期構成を新規に作成する（Ｓ１１）。次に、新規に作成した構成要素を、共通ノードと機種Ａの機種別ノードに分類する（Ｓ１２）。次に、機種Ｂに切り替えて（Ｓ１３）、機種Ｂの機種別ノードを追加する（Ｓ１４）。最後に、機種Ｃに切り替えて（Ｓ１５）、機種Ｃの機種別ノードを追加する（Ｓ１６）。
【００６７】
以下、各ステップについて詳細に説明する。図７（ａ）は、第１実施形態において仮想環境の構成要素を新規作成する前の画面における表示状態を示す説明図である。ステップＳ１１（図６）において、ＣＰＵ６０１は、オフライン教示を行うソフトウェアが起動すると、ＧＵＩであるモデル表示部１０、パラメータ設定部２０及びモデル管理部３０を表示装置７００の画面７１０に表示させる。モデル管理部３０には、分類ボタン（第１ボタン）３３と、干渉確認ボタン（第２ボタン）３４と、姿勢確認ボタン（第３ボタン）３５とが含まれている。したがって、ＣＰＵ６０１は、ステップＳ１１において、これらボタン３３，３４，３５も表示させることになる（第１ボタン表示処理、第２ボタン表示処理、第３ボタン表示処理）。
【００６８】
ユーザが機種設定部３１をマウスのカーソル４０で操作（例えばマウスを左クリック）すると、「機種Ａ」、「機種Ｂ」、「機種Ｃ」の機種選択リストが表示される。機種選択リストとして表示された「機種Ａ」、「機種Ｂ」、「機種Ｃ」のうち、「機種Ａ」がマウスのカーソル４０により選択されるか、又は初期状態として「機種Ａ」が自動選択される。すると、ノード表示部３２には、原点を示す文字「ＲＯＯＴ」のみが表示される状態となる。つまり、機種Ａに対応する仮想環境Ｇに構成要素が配置されていない空の状態である。モデル表示部１０には、文字「ＲＯＯＴ」に対応する仮想架台１１０Ｇが表示される。この状態で、ユーザは、操作装置８００を操作することにより、機種Ａに対応する仮想環境に含まれる構成要素を新規作成する。
【００６９】
図７（ｂ）は、第１実施形態において機種Ａに対応する仮想環境の構成要素を作成完了したときの画面における表示状態を示す説明図である。機種Ａに対応する仮想環境の構成要素を作成完了した状態で、仮想架台１１０Ｇ上に、仮想ロボット２００Ｇ、仮想ワークＷＧ、仮想治工具１３０Ｇ、仮想ツール３００Ｇ、仮想壁１２０Ｇが定義されている。仮想ロボット２００Ｇ、仮想ロボットハンド２０２Ｇ、仮想ワークＷＧ、仮想治工具１３０Ｇ、仮想ツール３００Ｇ、仮想壁１２０Ｇにはそれぞれ「Ｒｏｂｏｔ」、「Ｈａｎｄ」、「Ｗｏｒｋ」、「Ｂｏｘ」、「Ｔｏｏｌ」、「Ｗａｌｌ」の名称が付与される。また、ＴＣＰ、５つの教示点Ｐ１，Ｐ２，Ｐ３，Ｐ４，Ｐ５にはそれぞれ「ＴＣＰ」，「Ｐ００１」，「Ｐ００２」，「Ｐ００３」，「Ｐ００４」，「Ｐ００５」の名称が付与される。これら名称をノード名という。
【００７０】
仮想ロボット２００Ｇには仮想ロボットハンド２０２Ｇが関連付けられ、仮想ロボットハンド２０２ＧにはＴＣＰが関連付けられている。仮想ワークＷＧには教示点Ｐ１が関連付けられ、教示点Ｐ１には教示点Ｐ２が関連付けられている。仮想治工具１３０Ｇには、教示点Ｐ３が関連付けられ、教示点Ｐ３には教示点Ｐ４が関連付けられている。仮想ツール３００Ｇには教示点Ｐ５が関連付けられている。
【００７１】
ＣＰＵ６０１は、ノード名が「Ｐ００１」，「Ｐ００２」である教示点Ｐ１，Ｐ２を、ノード名が「Ｗｏｒｋ」の仮想ワークＷＧを親ノードとする子ノードとして管理する。また、ＣＰＵ６０１は、ノード名が「Ｐ００３」，「Ｐ００４」である教示点Ｐ３，Ｐ４を、ノード名が「Ｂｏｘ」の仮想治工具１３０Ｇを親ノードとする子ノードとして管理する。また、ＣＰＵ６０１は、ノード名が「Ｐ００５」である教示点Ｐ５を、ノード名が「Ｔｏｏｌ」の仮想ツール３００Ｇを親ノードとする子ノードとして管理する。
【００７２】
また、ＣＰＵ６０１は、ノード名が「Ｒｏｂｏｔ」である仮想ロボット２００Ｇを親ノードとし、仮想ロボット２００Ｇの構成の一部である、ノード名が「Ｈａｎｄ」である仮想ロボットハンド２０２Ｇを子ノードとして管理する。更に、ノード名が「Ｈａｎｄ」である仮想ロボットハンド２０２Ｇを親ノードとし、ノード名が「ＴＣＰ」であるＴＣＰを子ノードとして管理する。
【００７３】
ノード表示部３２には、これらノード名「ＲＯＯＴ」，「Ｒｏｂｏｔ」，「Ｈａｎｄ」，「Ｗｏｒｋ」，「Ｂｏｘ」，「Ｔｏｏｌ」，「Ｗａｌｌ」，「ＴＣＰ」，「Ｐ００１」〜「Ｐ００５」が樹形図形式で表示され、カーソル４０により選択可能となっている。
【００７４】
モデル表示部１０には、機種Ａに対応する仮想環境として定義した各ノード（構成要素）の３Ｄモデル情報が表示され、一目で配置環境の確認を行うことができる。モデル表示部１０中の教示点がカーソル４０で選択されると、ＣＰＵ６０１により選択のタイミングで仮想ロボット２００Ｇの姿勢計算が行われ、選択した教示点の姿勢に仮想ロボット２００Ｇ（ＴＣＰ）を移動させ、モデル表示部１０の表示を更新する。図７（ｂ）では、モデル表示部１０には教示点Ｐ１が選択された時の仮想ロボット２００Ｇの姿勢を示している。全ての教示点Ｐ１〜Ｐ５は、ＴＣＰの目標動作位置として関連付けられている。
【００７５】
次に、ステップＳ１２（図６）におけるＣＰＵ６０１の制御動作について説明する。図８は、第１実施形態に係る教示装置の処理部において構成要素を分類するときの制御を示すフローチャートである。
【００７６】
ＣＰＵ６０１は、モデル管理部３０の分類ボタン３３がカーソル４０で操作（例えばマウスを左クリック）されたか否かを判断する（Ｓ２１）。つまり、ＣＰＵ６０１は、ユーザにより分類ボタン３３が操作されたか否かを判断する。
【００７７】
ＣＰＵ６０１は、ユーザにより分類ボタン３３が操作されたと判断したとき（Ｓ２１：Ｙｅｓ）、各構成要素を各仮想環境に共通に用いるか個別に用いるかをユーザに選択操作させる分類設定画像を、画面に表示させる（Ｓ２２：分類表示処理、分類表示工程）。つまり、ＣＰＵ６０１は、ノードの「共通」，「機種別」の分類設定を行うための分類設定画像を表示装置７００の画面７１０に表示させる。
【００７８】
ＣＰＵ６０１は、ユーザの操作に従って、各ノード（構成要素）を、各仮想環境Ｇに共通に用いる共通ノード（共通構成要素）、又は各仮想環境Ｇに個別に用いる機種別ノード（個別構成要素）のいずれかに分類する（Ｓ２３，Ｓ２４：分類処理、分類工程）。
【００７９】
図９（ａ）及び図９（ｂ）は、分類ボタン３３が操作されたときに画面に表示する分類設定画像を示す説明図である。図９（ａ）は分類前、図９（ｂ）は分類後を示す。
【００８０】
分類設定画像５０には、追加したノード名が列挙され、各ノード名に対応して、「共通」の選択欄５１と「機種別」の選択欄５２が設けられている。また、確定ボタン５５とキャンセルボタン５６が表示され、確定ボタン５５で変更が確定し、キャンセルボタン５６で変更がキャンセルされる。
【００８１】
あるノード名においてユーザがマウスのカーソル４０で「共通」の選択欄５１を選択（例えば左クリック）すれば、「共通」の選択欄５１にフラグ５３が設定される。また、あるノード名においてユーザがマウスのカーソル４０で「機種別」の選択欄５２を選択（例えば左クリック）すれば、「機種別」の選択欄５２にフラグ５３が設定される。
【００８２】
なお、各機種に対応する仮想環境においてノードが新規追加されると、追加されたノードは全て機種別ノードとして登録され、機種別記憶領域４５２ｉに記憶される。したがって、ノードを新規に追加完了した状態では、図９（ａ）に示すように、全てのノード名において、「機種別」の選択欄５２にフラグ５３が設定される。よって、ユーザは、共通ノードにする対象のノードについては、フラグ５３を「共通」の選択欄５１に設定変更し、機種別ノードにする対象のノードについては、フラグ５３の変更を行わなければよい。
【００８３】
親ノードにおける「機種別」の選択欄５２にフラグ５３が設定されている場合、子ノードについては「共通」の選択欄５１にフラグ５３を設定することはできないため、インターロックされる。また、子ノードにおける「共通」の選択欄５１にフラグ５３が設定されている場合、親ノードについいては「機種別」の選択欄５２にフラグ５３を設定することはできないため、インターロックされる。
【００８４】
第１実施形態では、図９（ｂ）に示すように、ノード名「Ｒｏｂｏｔ」（仮想ロボット２００Ｇ）、「Ｂｏｘ」（仮想治工具１３０Ｇ）、「Ｔｏｏｌ」（仮想ツール３００Ｇ）、「Ｗａｌｌ」（仮想壁１２０Ｇ）を共通ノードとする。また、図９（ｂ）に示すように、ノード名「Ｐ００３」（教示点Ｐ３）、「Ｐ００４」（教示点Ｐ４）、「Ｐ００５」（教示点Ｐ５）を共通ノードとする。これら以外を機種Ａに対応する仮想環境に設定する機種別ノードとする。
【００８５】
ＣＰＵ６０１は、確定ボタン５５が操作（例えば左クリック）されたか否かを判断する（Ｓ２３）。ＣＰＵ６０１は、確定ボタン５５が操作されたときに、分類設定画像５０に従い、フラグ５３が「共通」又は「機種別」の選択欄５１，５２のいずれに設定されたかに応じて、ノードを、共通ノード又は機種別ノードに分類する（Ｓ２４）。このステップＳ２４において、ＣＰＵ６０１は、分類した結果を記憶部６４５（図５（ｂ））に記憶させる。
【００８６】
このように、分類設定画像５０の確定ボタン５５を操作することで、分類設定を完了することができる。なお、分類設定画像５０のキャンセルボタン５６を操作することで、分類ボタン３３の操作前の状態に戻すことができる。
【００８７】
図１０（ａ）及び図１０（ｂ）は、記憶部に記憶されている機種Ａに対応する仮想環境のデータをリスト化した説明図である。図１０（ａ）は分類前、図１０（ｂ）は分類後を示す。分類前において、機種Ａに対応する機種別記憶領域６５２１に、追加された全ての構成要素が記憶され、共通記憶領域６５１には何も記憶されていない状態である。分類設定後、図１０（ｂ）に示すように、上記した共通ノードが共通記憶領域６５１に記憶され、機種Ａに対応する機種別記憶領域６５２１には、機種別ノードが記憶されている。
【００８８】
ＣＰＵ６０１は、ステップＳ２４で分類した、共通ノード（共通構成要素）と、対象となる「機種Ａ」に対応する機種別ノード（個別構成要素）とで、「機種Ａ」に対応する仮想環境Ｇを構築する（Ｓ２５：構築処理、構築工程）。具体的には、ＣＰＵ６０１は、記憶部６４５に記憶させた分類の結果に基づいて、「機種Ａ」に対応する仮想環境Ｇを構築する。ここで、構築するとは、本実施形態では、教示点のデータを含む仮想環境Ｇのデータが記述されたファイルＨを作成することである。ＣＰＵ６０１は、この仮想環境Ｇのデータが記述されたファイルＨと、動作の命令が記述された動作プログラムとでロボットプログラムを作成する。なお、動作プログラムは、教示装置６００において作成してもよいが、制御装置４００において作成してもよいし、別のコンピュータにおいて作成してもよい。
【００８９】
次に、ステップＳ１３（図６）について説明する。ステップＳ１３では、機種Ｂに対応する仮想環境の構成要素を作成するため、機種Ｂに切り替えられる。
【００９０】
図１１（ａ）は、機種Ａから機種Ｂに切り替える際の画面における表示状態を示す説明図である。設定対象の仮想環境（機種）の切り替えは、モデル管理部３０の機種設定部３１をカーソル４０で操作（例えばマウスを左クリック）し、機種選択リスト３６を表示させる。機種選択リスト３６には、「機種Ａ」、「機種Ｂ」、「機種Ｃ」が表示されるので、「機種Ｂ」をカーソル４０で選択することで切り替えることができる。
【００９１】
機種設定部３１において「機種Ａ」に設定されている状態では、図５（ａ）及び図５（ｂ）において、制御部６４３は、共通記憶領域６５１と機種Ａに対応する機種別記憶領域６５２１にアクセスする。機種設定部３１を「機種Ｂ」に切り替えると、機種Ａに対応する機種別記憶領域６５２１から機種Ｂに対応する機種別記憶領域６５２２にアクセスが切り替えられる。切り替え後、共通記憶領域６５１と機種Ｂに対応する機種別記憶領域６５２２に記憶されたノード情報を制御部６４３が読み込み、表示装置７００の画面７１０に表示される。
【００９２】
図１１（ｂ）は、機種Ｂに切り替え完了したときの画面における表示状態を示す説明図である。機種設定部３１が機種Ｂになっている状態である。機種設定部３１において「機種Ｂ」に切り替えられたタイミングでは、機種Ｂに対応する機種別記憶領域４５２２にはノード情報（構成要素）が何も存在しない。そのため、モデル表示部１０には、「機種Ａ」で設定した共通ノードのうち、３Ｄモデルノードである仮想ロボット２００Ｇ、仮想治工具１３０Ｇ、仮想ツール３００Ｇ、仮想壁１２０Ｇが表示される。
【００９３】
共通ノードのうち、パラメータノードである教示点Ｐ３、教示点Ｐ４及び教示点Ｐ５は、教示点に対応するＴＣＰが存在しないため、仮想ロボット２００Ｇの姿勢計算ができない。したがって、ＣＰＵ６０１は、移動不可能であることを示す印「×」をノード表示部３２の教示点Ｐ３を示すノード名「Ｐ００３」、教示点Ｐ４を示すノード名「Ｐ００４」及び教示点Ｐ５を示すノード名「Ｐ００５」の隣に表示させる。
【００９４】
この状態で移動不可能であることを示す印「×」が表示された教示点のノードを、カーソル４０で選択しても、モデル表示部１０における仮想ロボット２００Ｇは、ＴＣＰが設定されていないので、選択された教示点の姿勢とはならない。また、モデル表示部１０において、教示点Ｐ３、Ｐ４、Ｐ５は非表示となる。
【００９５】
以上、機種設定部３１において「機種Ａ」に設定された状態で作成した共通ノードは、「機種Ｂ」に切り替えても、編集可能な状態で表示されるようになり、新たに作成する必要がなく、入力ミスや教示工数を大幅に削減することができる。
【００９６】
次に、ステップＳ１４（図６）について説明する。ステップＳ１４では、機種設定部３１において「機種Ｂ」に設定された状態で仮想環境Ｇに機種別ノードを追加する。
【００９７】
図１１（ｃ）は、機種Ｂに対応する仮想環境の各構成要素の作成が完了したときの画面における表示状態を示す説明図である。原点であるノード名「ＲＯＯＴ」の仮想架台１１０Ｇ上に、ノード名「Ｗｏｒｋ」の仮想ワークＷＧと、ノード名「Ｔｏｏｌ２」の仮想ツール３０２Ｇとが追加されている。ノード名「Ｒｏｂｏｔ」の仮想ロボット２００Ｇには、ノード名「Ｈａｎｄ」の仮想ロボットハンド２０２Ｇが関連付けられて追加され、ノード名「Ｈａｎｄ」の仮想ロボットハンド２０２Ｇにはノード名「ＴＣＰ」のＴＣＰが関連付けられて追加されている。ノード名「Ｗｏｒｋ」の仮想ワークＷＧには、ノード名「Ｐ００１」の教示点Ｐ１と、ノード名「Ｐ００２」の教示点Ｐ２が関連付けられて追加されている。「機種Ｂ」のＴＣＰは、「機種Ａ」のＴＣＰと同一名称のノードとして定義されている。これらノード（構成要素）は、追加された時点で、ＣＰＵ６０１により自動的に機種別ノード（個別構成要素）に分類される。つまり、「機種Ａ」に対応する仮想環境Ｇの設定において共通ノードを分類したので、「機種Ｂ」に対応する仮想環境Ｇの設定においても同様の共通ノードが分類されており、その後追加する構成要素は、機種別ノードに分類すればよい。よって、追加された構成要素をＣＰＵ６０１により自動的に機種別ノードに分類するが、共通ノードはユーザが分類しているので、機種別ノードもユーザの意思で分類したことになる。
【００９８】
ここで、共通ノードの教示点には、ノード名「ＴＣＰ」であるＴＣＰが関連付けられており、同一のノード名「ＴＣＰ」の構成要素が作成されたとき、自動的にその構成要素が適応される。そのため、同一名称「ＴＣＰ」でＴＣＰ（構成要素）を定義したことで、教示点Ｐ３、Ｐ４、Ｐ５にＴＣＰを移動させたときの仮想ロボット２００Ｇの姿勢を計算できる状態になり、移動不可能を示す印「×」がノード表示部３２から削除される。
【００９９】
図１２は、分類ボタン３３が操作されたときに画面に表示する分類設定画像を示す説明図である。「機種Ｂ」で構成要素を作成完了した状態で分類ボタン３３が操作されると、図１２の分類設定画像５０が画面に表示される。「機種Ｂ」で新たに追加したノード（構成要素）は、全て機種別ノードとなっているので、分類設定画像５０において、新たに追加したノードのノード名に対応する「機種別」の選択欄５２には、フラグ５３が設定される。
【０１００】
図１３（ａ）及び図１３（ｂ）は、記憶部に記憶されている機種Ｂに対応する仮想環境のデータをリスト化した説明図である。図１３（ａ）はノード（構成要素）の追加前、図１３（ｂ）はノード（構成要素）の追加後を示す。ノードの追加前において、機種Ｂに対応する機種別記憶領域６５２２には何も記憶されていない状態である。ノード追加後、図１３（ｂ）に示すように、機種Ｂに対応する機種別記憶領域６５２２には、機種別ノードが記憶されている。
【０１０１】
そして、ＣＰＵ６０１は、共通ノード（共通構成要素）と、対象となる「機種Ｂ」に対応する機種別ノード（個別構成要素）とで、「機種Ｂ」に対応する仮想環境Ｇを構築する。具体的には、ＣＰＵ６０１は、記憶部６４５に記憶させた分類の結果に基づいて、「機種Ｂ」に対応する仮想環境Ｇを構築する。
【０１０２】
次に、ステップＳ１５（図６）について説明する。ステップＳ１５では、機種Ｃに対応する仮想環境の構成要素を作成するため、機種Ｃに切り替えられる。
【０１０３】
図１４（ａ）は、機種Ｂから機種Ｃに切り替える際の画面における表示状態を示す説明図である。設定対象の仮想環境（機種）の切り替えは、モデル管理部３０の機種設定部３１をカーソル４０で操作（例えばマウスを左クリック）し、機種選択リスト３６を表示させる。機種選択リスト３６には、「機種Ａ」、「機種Ｂ」、「機種Ｃ」が表示されるので、「機種Ｃ」をカーソル４０で選択することで切り替えることができる。
【０１０４】
機種設定部３１において「機種Ｂ」に設定されている状態では、図５（ａ）及び図５（ｂ）において、制御部６４３は、共通記憶領域６５１と機種Ｂに対応する機種別記憶領域６５２２にアクセスする。機種設定部３１を「機種Ｃ」に切り替えると、機種Ｂに対応する機種別記憶領域６５２２から機種Ｃに対応する機種別記憶領域６５２３にアクセスが切り替えられる。切り替え後、共通記憶領域６５１と機種Ｃに対応する機種別記憶領域６５２３に記憶されたノード情報を制御部６４３が読み込み、表示装置７００の画面７１０に表示される。
【０１０５】
図１４（ｂ）は、機種Ｃに切り替え完了したときの画面における表示状態を示す説明図である。機種設定部３１が機種Ｃになっている状態である。
【０１０６】
機種設定部３１において「機種Ｃ」に切り替えられたタイミングでは、機種Ｃに対応する機種別記憶領域４５２３にはノード情報（構成要素）が何も存在しない。そのため、モデル表示部１０には、「機種Ａ」で設定した共通ノードのうち、３Ｄモデルノードである仮想ロボット２００Ｇ、仮想治工具１３０Ｇ、仮想ツール３００Ｇ、仮想壁１２０Ｇが表示される。
【０１０７】
共通ノードのうち、パラメータノードである教示点Ｐ３、教示点Ｐ４及び教示点Ｐ５は、教示点に対応するＴＣＰが存在しないため、仮想ロボット２００Ｇの姿勢計算ができない。したがって、ＣＰＵ６０１は、移動不可能であることを示す印「×」をノード表示部３２の教示点Ｐ３を示すノード名「Ｐ００３」、教示点Ｐ４を示すノード名「Ｐ００４」及び教示点Ｐ５を示すノード名「Ｐ００５」の隣に表示させる。
【０１０８】
この状態で移動不可能であることを示す印「×」が表示された教示点のノードを、カーソル４０で選択しても、モデル表示部１０における仮想ロボット２００Ｇは、ＴＣＰが設定されていないので、選択された教示点の姿勢とはならない。また、モデル表示部１０において、教示点Ｐ３，Ｐ４，Ｐ５は非表示となる。
【０１０９】
以上、機種設定部３１において「機種Ａ」に設定された状態で作成した共通ノードは、「機種Ｃ」に切り替えても、編集可能な状態で表示されるようになり、新たに作成する必要がなく、入力ミスや教示工数を大幅に削減することができる。
【０１１０】
次に、ステップＳ１６（図６）について説明する。ステップＳ１６では、機種設定部３１において「機種Ｃ」に設定された状態で仮想環境Ｇに機種別ノードを追加する。
【０１１１】
図１４（ｃ）は、機種Ｃに対応する仮想環境の各構成要素の作成が完了したときの画面における表示状態を示す説明図である。原点であるノード名「ＲＯＯＴ」の仮想架台１１０Ｇ上に、ノード名「Ｗｏｒｋ」の仮想ワークＷＧが追加されている。ノード名「Ｒｏｂｏｔ」の仮想ロボット２００Ｇには、ノード名「Ｈａｎｄ」の仮想ロボットハンド２０２Ｇが関連付けられて追加され、ノード名「Ｈａｎｄ」の仮想ロボットハンド２０２Ｇにはノード名「ＴＣＰ」のＴＣＰが関連付けられて追加されている。ノード名「Ｗｏｒｋ」の仮想ワークＷＧには、ノード名「Ｐ００１」の教示点Ｐ１と、ノード名「Ｐ００２」の教示点Ｐ２が関連付けられて追加されている。「機種Ｃ」のＴＣＰは、「機種Ａ」，「機種Ｂ」のＴＣＰと同一名称のノードとして定義されている。これらノード（構成要素）は、追加された時点で、ＣＰＵ６０１により自動的に機種別ノード（個別構成要素）に分類される。つまり、「機種Ａ」に対応する仮想環境Ｇの設定において共通ノードを分類したので、「機種Ｃ」に対応する仮想環境Ｇの設定においても同様の共通ノードが分類されており、その後追加する構成要素は、機種別ノードに分類すればよい。よって、追加された構成要素をＣＰＵ６０１により自動的に機種別ノードに分類するが、共通ノードはユーザが分類しているので、機種別ノードもユーザの意思で分類したことになる。
【０１１２】
ここで、共通ノードの教示点には、ノード名「ＴＣＰ」であるＴＣＰが関連付けられており、同一のノード名「ＴＣＰ」の構成要素が作成されたとき、自動的にその構成要素が適応される。そのため、同一名称「ＴＣＰ」でＴＣＰ（構成要素）を定義したことで、教示点Ｐ３、Ｐ４、Ｐ５にＴＣＰを移動させたときの仮想ロボット２００Ｇの姿勢を計算できる状態になり、移動不可能を示す印「×」がノード表示部３２から削除される。
【０１１３】
図１５は、分類ボタンが操作されたときに画面に表示する分類設定画像を示す説明図である。「機種Ｃ」で構成要素を作成完了した状態で分類ボタン３３が操作されると、図１５の分類設定画像５０が画面に表示される。「機種Ｃ」で新たに追加したノード（構成要素）は、全て機種別ノードとなっているので、分類設定画像５０において、新たに追加したノードのノード名に対応する「機種別」の選択欄５２には、フラグ５３が設定される。
【０１１４】
図１６（ａ）及び図１６（ｂ）は、記憶部に記憶されている機種Ｃに対応する仮想環境のデータをリスト化した説明図である。図１６（ａ）はノード（構成要素）の追加前、図１６（ｂ）はノード（構成要素）の追加後を示す。ノードの追加前において、機種Ｃに対応する機種別記憶領域６５２３には何も記憶されていない状態である。ノード追加後、図１６（ｂ）に示すように、機種Ｃに対応する機種別記憶領域６５２３には、機種別ノードが記憶されている。
【０１１５】
そして、ＣＰＵ６０１は、共通ノード（共通構成要素）と、対象となる「機種Ｃ」に対応する機種別ノード（個別構成要素）とで、「機種Ｃ」に対応する仮想環境Ｇを構築する。具体的には、ＣＰＵ６０１は、記憶部６４５に記憶させた分類の結果に基づいて、「機種Ｃ」に対応する仮想環境Ｇを構築する。
【０１１６】
以降、モデル管理部３０の機種設定部３１をカーソル４０で選択し、機種選択リスト３６で「機種Ａ」をカーソル４０で選択すると図７（ｂ）の表示となる。また、モデル管理部３０の機種設定部３１をカーソル４０で選択し、機種選択リスト３６で「機種Ｂ」をカーソル４０で選択すると図１１（ｃ）の表示となる。また、モデル管理部３０の機種設定部３１をカーソル４０で選択し、機種選択リスト３６で「機種Ｃ」をカーソル４０で選択すると図１４（ｃ）の表示となる。
【０１１７】
記憶部６４５に関しては、共通記憶領域６５１は全ての機種でアクセスされる。機種別記憶領域６５２１は機種設定部３１にて「機種Ａ」が選択されたときに、機種別記憶領域６５２２は機種設定部３１にて「機種Ｂ」が選択されたときに、機種別記憶領域６５２３は機種設定部３１にて「機種Ｃ」が選択されたときにアクセスされる。
【０１１８】
以上で３つ（全て）の仮想環境Ｇの新規作成を終了する。新規作成された機種Ａ、機種Ｂ、機種Ｃに対応する各仮想環境Ｇは、前述した保存要求を行うことによりファイルＨとして出力することができ、読込要求を行うことにより機種Ａ、機種Ｂ、機種Ｃの各仮想環境Ｇを再現することができる。
【０１１９】
以上、ノード情報（構成要素）を共通ノード（共通構成要素）と機種別ノード（個別構成要素）とに分類するようにしたので、各仮想環境の構築の際に各仮想環境で共通する共通ノードについては、一括管理することができ、入力ミスを低減することができる。また、共通ノードについては各仮想環境で共有されるので、教示工数を削減することができる。よって、ロボット２００により製造する製造品の機種毎の仮想環境Ｇを容易に構築することができる。
【０１２０】
なお、ファイルＨは、全機種の仮想環境Ｇのデータを１ファイルで記録する場合と、１機種毎に仮想環境Ｇのデータを１ファイルずつ記録する場合とを切り替えることもできる。例えば、制御装置４００が１機種毎の仮想環境Ｇのデータしか取得できないような場合には、ファイルＨは、機種毎にファイルを分けて、３つのファイルで記録する必要がある。この場合、記憶部６４５にある共通記憶領域４５１の情報と、機種設定部３１で選択された機種の機種別記憶領域４５２ｉの情報とを入出力部６４６に受け渡し、１つのファイルＨとして保存する。ファイルＨには、どの機種の情報を出力しているものか機種情報も保存する。出力したファイルＨを、制御装置４００で読み込むことで、選択した機種の製造品を製造するようにロボット２００を動作させることができる。
【０１２１】
さらに、制御装置４００でファイルＨを編集した後、ファイルＨを仮想環境Ｇに反映させることも可能である。この場合、制御装置４００で編集した後のファイルＨを入出力部４６で読み込み、記憶部６４５の共通記憶領域６５１と機種別記憶領域６５２ｉに分類して上書き保存を行えばよい。このとき、ファイルＨには機種情報も保存されているため、保存された機種の機種別記憶領域４５２ｉに上書き保存を行い、仮想環境Ｇに反映させることもできる。
【０１２２】
また、第１実施形態では、仮想ロボット２００Ｇは共通ノードとして定義しているが、仮想ロボット２００Ｇを機種別ノードとして定義することも可能である。例えば、既存の装置に対して新しい装置に入れ替える場合、ロボット２００のみを入れ替えるケースも考えられる。この場合、ロボット２００のみ入れ替えを行うので、仮想ロボット２００Ｇは機種別ノードに分類し、それ以外の構成要素（３Ｄモデルノード）は共通ノードに分類すればよい。これにより、仮想環境の構築が簡略化され、教示工数の削減を図ることもできる。
【０１２３】
［第２実施形態］
次に、本発明の第２実施形態に係るロボットシステムについて説明する。第１実施形態では、仮想環境を新規作成する手順について説明した。新規作成した各機種に対応する仮想環境について、仮想ロボットや仮想周辺物の形状や配置、又はＴＣＰや教示点の配置を変更する必要が生じる場合がある。
【０１２４】
このように、仮想環境を作成した後に、仮想環境に含まれる構成要素を変更すると、複数の仮想環境のうち、仮想構造物同士が干渉する仮想環境が生じることがある。具体的には、仮想ロボットと仮想周辺物、仮想周辺物が複数ある場合は仮想周辺物同士が干渉することがある。また、仮想環境を作成した後に仮想ロボットの形状や配置を変更したことで、教示点に仮想ロボットがアプローチするときの姿勢が変わり、その姿勢に移動できない状態が発生することがある。第２実施形態では、干渉確認や姿勢確認を行う場合について説明する。なお、ロボットシステムの構成は、第１実施形態と同様であるため、説明を省略する。
【０１２５】
第２実施形態では、第１実施形態で説明した製造品の機種Ａ、機種Ｂ、機種Ｃに対応する各仮想環境Ｇの構成要素に対して、変更を施したときに、干渉確認や姿勢確認を行う場合を例に説明する。具体的には、機種別ノードの仮想構造物と共通ノードの仮想構造物とが干渉するか否かを判断する場合と、共通ノードの教示点を変更した際に仮想環境間で仮想ロボットの姿勢確認をする場合を例に説明する。
【０１２６】
まず、最初に干渉確認について説明する。図１７は、第２実施形態において干渉確認を行うフローチャートである。図１８（ａ）〜図１８（ｃ）は、第２実施形態における干渉確認を行うときの画面の表示を示す説明図である。
【０１２７】
ＣＰＵ６０１は、図１８（ａ）に示す干渉確認ボタン３４がユーザによってカーソル４０で操作（例えば左クリック）されることで、干渉確認をするＯＮ状態となる（Ｓ３１）。このとき、ＣＰＵ６０１は、干渉確認をするＯＮ状態となっていることがユーザにより視認可能なように、図１８（ａ）に示す干渉確認ボタン３４の色やトーンなどの表示を変更する。これにより、ＣＰＵ６０１は、干渉チェックを自動的に行い、警告表示を行う状態に設定される。なお、ＣＰＵ６０１は、再度干渉確認ボタン３４がユーザによってカーソル４０で操作（例えば左クリック）されることで、干渉確認をしないＯＦＦ状態となる。また、干渉確認ボタン３４により干渉チェックの実行をＯＮ、ＯＦＦしているが、干渉確認ボタン３４を無くし、初期状態から常時、ＯＮ状態に設定してもよい。
【０１２８】
次に、ユーザが、機種設定部３１において「機種Ａ」に設定されている状態で、共通ノード、例えばノード名「Ｔｏｏｌ」の仮想ツール３００Ｇの配置を編集する（Ｓ３２）。図１８（ａ）には、機種設定部３１において「機種Ａ」に設定されている状態で、ノード名「Ｔｏｏｌ」の仮想ツール３００Ｇの配置を編集している状態を示している。
【０１２９】
ＣＰＵ６０１は、機種Ａに対応する仮想環境Ｇにおいて、仮想構成物同士が干渉（接触）しているか否かを総当たりで確認を行う（Ｓ３３：干渉判断処理、干渉判断工程）。つまり、仮想ロボット及び仮想周辺物で干渉が生じているか否かを判断する。ＣＰＵ６０１は、干渉確認ボタン３４によりＯＮ状態となっているため、干渉チェックは常時行っており、共通記憶領域６５１に記憶されている３Ｄモデルノードと機種Ａの機種別記憶領域６５２１に記憶されている３Ｄモデルノードの総当たりの干渉確認を行う。
【０１３０】
ＣＰＵ６０１は、ステップＳ３３で仮想構造物同士が干渉すると判断した場合（Ｓ３３：Ｙｅｓ）、表示装置７００の画面７１０に警告画像を表示させる（Ｓ３４：干渉警告処理、干渉警告工程）。この警告画像を見たユーザは、機種Ａで干渉が無くなるまで繰り返し再編集を行う（Ｓ３２に戻る）。
【０１３１】
干渉確認の結果、干渉がなければ（Ｓ３３：Ｎｏ）、ユーザは、干渉状態を未確認である他機種に切り替える（Ｓ３５）。例えば、図１８（ｂ）に示すように、機種設定部３１において「機種Ａ」から「機種Ｂ」に切り替える。機種Ｂに切り替えると、図１８（ｃ）のように、機種Ａで編集した共通ノードの仮想ツール３００Ｇが反映された状態で、表示が行われる。そして、ＣＰＵ６０１は、ステップＳ３３と同様、機種Ｂに対応する仮想環境Ｇにおいて、仮想構成物同士が干渉（接触）しているか否かを総当たりで確認を行う（Ｓ３６）。
【０１３２】
ＣＰＵ６０１は、ステップＳ３６で仮想構造物同士が干渉すると判断した場合（Ｓ３６：Ｙｅｓ）、表示装置７００の画面７１０に警告画像を表示させる（Ｓ３４）。この警告画像を見たユーザは、機種Ｂで干渉が無くなるまで繰り返し再編集を行う（Ｓ３２に戻る）。
【０１３３】
図１８（ｃ）の例では、機種別ノードのノード名「Ｔｏｏｌ２」である仮想ツール３０２Ｇと共通ノードのノード名「Ｔｏｏｌ」である仮想ツール３００Ｇとが干渉している。したがって、ステップＳ３２に戻ったときには、機種別ノードのノード名「Ｔｏｏｌ２」である仮想ツール３０２Ｇと共通ノードのノード名「Ｔｏｏｌ」である仮想ツール３００Ｇのいずれか一方又は両方の配置を編集すればよい。
【０１３４】
図１９（ａ）は、干渉確認の際の警告画像の一例を示す説明図である。図１９（ａ）に示すように、警告画像として警告表示ダイアログ６０が表示される。警告表示ダイアログ６０内の詳細表示ボックス６１に干渉した対象のノードのノード名が表示され、ユーザは、どのノード同士が干渉しているのかが、一目して理解することができる。なお、警告表示ダイアログ６０は、干渉の度に表示されると、手間になるため、機種切り替えを行うタイミングでのみ表示が行われるようにするのが好ましい。警告表示ダイアログ６０は確認ボタン６２を操作することで非表示にでき、次の処理に進む。
【０１３５】
また、図１８（ｃ）に示すように、モデル表示部１０においては、両方の仮想モデル３００Ｇ，３０２Ｇの表示色が変更されている。干渉確認の結果、干渉が有りの場合は、モデル表示部１１でも確認することができる。
【０１３６】
ステップＳ３２で干渉したノードの配置を再編集した結果、干渉が発生していない場合は、機種Ｂにおいて干渉しているノードを変更したので、再び機種Ａに切り替える（Ｓ３５）。そして、ステップＳ３６で干渉確認を行い、その結果、干渉が発生していない場合（Ｓ３６：Ｎｏ）は、ステップＳ３７で未確認機種を判断し、機種Ｃが未確認であるので、再びステップＳ３５に戻る。「機種Ａ」、「機種Ｂ」及び「機種Ｃ」の干渉確認が終了した場合は、未確認機種は存在しないため、干渉確認は終了となる。
【０１３７】
以上のようにＣＰＵ６０１が各仮想環境Ｇに対して干渉確認を行うことで、ユーザは各仮想環境Ｇにおいて干渉しないように構成要素を変更することができ、入力ミスを低減することができる。また、干渉確認を瞬時に行えるため、教示工数を削減することができる。
【０１３８】
次に、姿勢確認について説明する。図２０は、第２実施形態において姿勢確認を行うフローチャートである。図２１（ａ）〜図２１（ｃ）は、第２実施形態における姿勢確認を行うときの画面の表示を示す説明図である。
【０１３９】
ところで、第２実施形態では、機種Ａの製造品を製造する場合と機種Ｂの製造品を製造する場合では、ロボット２００を同一構成としている。一方、機種Ａ，Ｂの製造品を製造する場合と機種Ｃの製造品を製造する場合とでは、ロボット２００、より具体的にはロボットハンド２０２の構成、例えばフィンガーの長さを異ならせている。即ち、機種Ａ，Ｂの製造品を製造する場合と機種Ｃの製造品を製造する場合とでロボットハンド２０２全体又はフィンガーのみを、取り替えるようにしている。したがって、仮想ロボット２００Ｇ、より具体的には仮想ロボットハンド２０２Ｇの構成が、機種設定部３１において「機種Ａ」，「機種Ｂ」を選択した場合と、「機種Ｃ」を選択した場合とで異ならせている。
【０１４０】
ＴＣＰは、フィンガーの先端付近に設定するため、各仮想環境においてノード名は「ＴＣＰ」で同じものの、機種Ａ，Ｂを製造する場合の仮想環境におけるＴＣＰの位置情報と、機種Ｃを製造する場合の仮想環境におけるＴＣＰの位置情報とが異なっている。よって、ノード名「ＴＣＰ」であるＴＣＰ（構成要素）は、機種別ノード（個別構成要素）に分類されている。そのため、各仮想環境下で同一の教示点にＴＣＰが移動するよう仮想ロボット２００Ｇを動作させようとしても、その姿勢に動作できるかどうか不明である。そこで、第２実施形態では、仮想ロボット２００Ｇの姿勢確認を行うようにしている。
【０１４１】
まず、ＣＰＵ６０１は、図２１（ａ）に示す姿勢確認ボタン３５がユーザによってカーソル４０で操作（例えば左クリック）されることで、各教示点にＴＣＰを移動させたときの仮想ロボット２００Ｇの姿勢確認をするＯＮ状態となる（Ｓ４１）。このとき、ＣＰＵ６０１は、姿勢確認をするＯＮ状態となっていることがユーザにより視認可能なように、図２１（ａ）に示す姿勢確認ボタン３５の色やトーンなどの表示を変更する。これにより、ＣＰＵ６０１は、姿勢チェックを自動的に行い、警告表示を行う状態に設定される。なお、ＣＰＵ６０１は、再度姿勢確認ボタン３５がユーザによってカーソル４０で操作（例えば左クリック）されることで、姿勢確認をしないＯＦＦ状態となる。また、姿勢確認ボタン３５により姿勢チェックの実行をＯＮ、ＯＦＦしているが、姿勢確認ボタン３５を無くし、初期状態から常時、ＯＮ状態に設定してもよい。
【０１４２】
次に、ユーザが、機種設定部３１において「機種Ａ」に設定されている状態で、共通ノード、例えばノード名「Ｂｏｘ」である仮想治工具１３０Ｇの配置を編集する（Ｓ４２）。図２１（ａ）には、機種設定部３１において「機種Ａ」に設定されている状態で、ノード名「Ｂｏｘ」の仮想治工具１３０Ｇの配置を編集している状態を示している。
【０１４３】
ノード名「Ｂｏｘ」の仮想治工具１３０Ｇが変更されると、仮想治工具１３０Ｇに関連付けされた教示点Ｐ３と教示点Ｐ４が相対値情報を維持して仮想治工具１３０Ｇと共に変更される。
【０１４４】
ＣＰＵ６０１は、機種Ａに対応する仮想環境Ｇにおいて、ＴＣＰを教示点に移動させたときに仮想ロボット２００Ｇの各関節が可動域内に収まっているか否かを判断する（Ｓ４３：姿勢判断処理、姿勢判断工程）。
【０１４５】
教示点における仮想ロボット２００Ｇの姿勢確認は、モデル表示部１０において教示点がカーソル４０にて選択（例えば左クリック）されたときに行う。仮想ロボット２００Ｇの各関節が可動域内に収まっている場合は、モデル表示部１０に表示されている仮想ロボット２００Ｇをその姿勢に瞬時に動作させる。
【０１４６】
ＣＰＵ６０１は、ステップＳ４３で仮想ロボットの各関節が可動域内に収まっていないと判断した場合（Ｓ４３：Ｎｏ）、表示装置７００の画面７１０に警告画像を表示させる（Ｓ４４：姿勢警告処理、姿勢警告工程）。この警告画像を見たユーザは、仮想ロボット２００Ｇの姿勢が許容されるまで繰り返し仮想治工具１３０Ｇの再編集を行う（Ｓ４２に戻る）。
【０１４７】
図２１（ｂ）には、モデル表示部１０において、教示点Ｐ３がユーザに選択され、仮想ロボット２００Ｇ（ＴＣＰ）がその姿勢に動作している状態が図示されている。
【０１４８】
姿勢確認の結果、仮想ロボット２００Ｇの姿勢が許容されれば（Ｓ４３：Ｙｅｓ）、ユーザは、姿勢状態を未確認である他機種に切り替える（Ｓ４５）。例えば、図２１（ｂ）に示すように、機種設定部３１において「機種Ａ」から「機種Ｃ」にカーソル４０で切り替える。機種Ｃに切り替えると、図２１（ｃ）のように、機種Ａで編集した共通ノードの仮想治工具１３０Ｇが反映された状態で、表示が行われる。そして、ＣＰＵ６０１は、機種Ｃに対応する仮想環境Ｇにおいて、ＴＣＰを教示点に移動させたときに仮想ロボット２００Ｇの各関節が可動域内に収まっているか否かを判断する（Ｓ４６）。
【０１４９】
ＣＰＵ６０１は、姿勢確認ボタン３５によりＯＮ状態となっているため、機種設定部３１にて切り替えられた時に、ＴＣＰを各教示点に移動させたときの仮想ロボット２００Ｇの姿勢計算を自動的に行う。具体的に説明すると、まず、ＣＰＵ６０１は、共通記憶領域６５１と機種Ｃに対応する機種別記憶領域４５２３に記憶されている全ての教示点のリストを取得する。そして、ＣＰＵ６０１は、取得した全ての教示点リストに対して仮想ロボット２００Ｇの姿勢計算を行う。これにより、ＴＣＰを各教示点に移動させたときに仮想ロボット２００Ｇの各関節が可動域内に収まっているか否かを判断する。
【０１５０】
ＣＰＵ６０１は、ステップＳ４６で仮想ロボット２００Ｇの各関節が可動域内に収まっていないと判断した場合（Ｓ４６：Ｙｅｓ）、表示装置７００の画面７１０に警告画像を表示させる（Ｓ４４）。この警告画像を見たユーザは、仮想ロボット２００Ｇの姿勢が許容されるまで繰り返し仮想治工具１３０Ｇの再編集を行う（Ｓ４２に戻る）。
【０１５１】
図２１（ｃ）の例では、共通ノードのノード名「Ｐ００３」である教示点Ｐ３に仮想ロボット２００Ｇに関連付けられたＴＣＰを移動させたときに、リミットオーバーとなっている。したがって、ステップＳ４２に戻ったときには、教示点Ｐ３が関連付けられた共通ノードのノード名「Ｂｏｘ」である仮想治工具１３０Ｇの配置を編集すればよい。
【０１５２】
図１９（ｂ）は、姿勢確認の際の警告画像の一例を示す説明図である。図１９（ｂ）に示すように、警告画像として警告表示ダイアログ７０が表示される。警告表示ダイアログ７０内の詳細表示ボックス７１に、姿勢が取れない教示点のノード名「Ｐ００３」が表示され、ユーザは、どの教示点で仮想ロボット２００Ｇの姿勢が取れないのかが、一目して理解することができる。なお、警告表示ダイアログ７０は、姿勢が取れない教示点が発生する度に表示されると、手間になるため、機種切り替えを行うタイミングでのみ表示が行われるようにするのが好ましい。警告表示ダイアログ７０は確認ボタン７２を操作することで非表示にでき、次の処理に進む。
【０１５３】
また、図２１（ｃ）に示すように、ノード表示部３２においては、ＴＣＰが移動不可能であることを示す印「×」が、ノード名「Ｐ００３」の隣に表示される。これにより、姿勢確認の結果、仮想ロボット２００Ｇの姿勢が取れない教示点がある場合は、ノード表示部３２でも確認することができる。
【０１５４】
ステップＳ４２で共通ノードのノード名「Ｂｏｘ」である仮想治工具１３０Ｇの配置を再編集した結果、仮想ロボット２００Ｇの各関節が可動域であれば、機種Ｃにおいて共通ノードである仮想治工具１３０Ｇを変更したので再び機種Ａに切り替える（Ｓ４５）。そして、ステップＳ４６で姿勢確認を行い、その結果、仮想ロボット２００Ｇの各関節が可動域であれば、ステップＳ４７で未確認機種を判断し、機種Ｂが未確認であるので、再びステップＳ４５に戻る。「機種Ａ」、「機種Ｂ」及び「機種Ｃ」の姿勢確認が終了した場合は、未確認機種は存在しないため、姿勢確認は終了となる。
【０１５５】
以上のようにＣＰＵ６０１が各仮想環境Ｇに対して姿勢確認を行うことで、ユーザは各仮想環境Ｇにおいて仮想ロボット２００Ｇの各関節が可動域に収まるように構成要素を変更することができ、入力ミスを低減することができる。また、姿勢確認を瞬時に行えるため、教示工数を削減することができる。
【０１５６】
［第３実施形態］
次に、本発明の第３実施形態に係るロボットシステムについて説明する。第１実施形態で説明した通り、フラグ５３を「機種別」の選択欄５２から「共通」の選択欄５１に変更すると、機種別記憶領域６５２ｉから共通記憶領域６５１にノード情報を移動させる分類処理が行われる。
【０１５７】
第１実施形態で説明した分類処理は、統合するノードが存在せず、機種別ノード（個別構成要素）が１つの仮想環境のみで定義されていた場合に適応できる。「統合するノード」とは、機種Ａ、機種Ｂ、機種Ｃそれぞれに対応する機種別記憶領域６５２１，６５２２，６５２３に記憶されている同一名称のノードのことである。
【０１５８】
複数の仮想環境で同一名称の機種別ノード（個別構成要素）が定義されており、このノード（構成要素）を共通ノード（共通構成要素）に変更したい場合がある。この場合、同一名称だが、各仮想環境で異なるパラメータが定義されている可能性がある。また、共通ノードから機種別ノードに変更したい場合もある。この場合、表示している仮想環境に対してだけ機種別ノードに変更するのであれば容易であるが、他の仮想環境においても機種別ノードを設定したい場合もある。
【０１５９】
以下、分類処理として、第１実施形態で作成した仮想環境に対して、仮想環境を構成するノード（構成要素）の分類を変更の手順ついて説明する。ロボットシステムの構成は、第１実施形態と同様であるため、説明を省略する。
【０１６０】
図２２は、第３実施形態における分類処理を示すフローチャートである。図２３（ａ）及び図２３（ｂ）は、分類ボタンが操作されたときに画面に表示する分類設定画像を示す説明図である。図２３（ａ）は変更前、図２３（ｂ）は変更後を示す。
【０１６１】
ＣＰＵ６０１は、機種設定部３１において「機種Ａ」、「機種Ｂ」、「機種Ｃ」のいずれか、例えば「機種Ａ」に設定された状態で分類ボタン３３が操作されると、図２３（ａ）に示す分類設定画像５０を表示装置７００（図１）の画面７１０に表示する。そして、ＣＰＵ６０１は、フラグ５３の変更を受け付ける（Ｓ５１）。
【０１６２】
例えば、図２３（ｂ）に示すように、ノード名「Ｈａｎｄ」に対応するフラグ５３が「機種別」の選択欄５２から「共通」の選択欄５１に変更されているものとする。即ち、全仮想環境のうちいずれかの仮想環境に含まれるノード（構成要素）として、仮想ロボットハンドについて、機種別ノード（個別構成要素）から共通ノード（共通構成要素）に分類を変更する操作がユーザによりなされているものとする。また、図２３（ｂ）に示すように、ノード名「Ｔｏｏｌ」の仮想ツールに関連付けされた教示点のノード名「Ｐ００５」に対応するフラグ５３が「共通」の選択欄５１から「機種別」の選択欄５２に変更されているものとする。即ち、全仮想環境のうちいずれかの仮想環境に含まれるノード（構成要素）として、教示点Ｐ５について、共通ノード（共通構成要素）から機種別ノード（個別構成要素）に分類を変更する操作がユーザによりなされているものとする。
【０１６３】
確定ボタン５５がユーザにより操作されると、ＣＰＵ６０１は、変更したノードのリストを取得する（Ｓ５２）。変更したノードのリストにおいては、変更したフラグとノード名とが紐付けられている。よって、リストには、ノード名「Ｈａｎｄ」、「Ｐ００５」が含まれている。
【０１６４】
ＣＰＵ６０１は、リストの中から未選択のノード名を１つ選択する（Ｓ５３）。そして、ＣＰＵ６０１は、選択したノード名について、「機種別」の選択欄５２から「共有」の選択欄５１にフラグ５３が変更されたものであるか否かを判断する（Ｓ５４）。
【０１６５】
ノード名「Ｈａｎｄ」が選択されている場合、「機種別」の選択欄５２から「共有」の選択欄５１にフラグ５３が変更されている（Ｓ５４：Ｙｅｓ）。この場合、ＣＰＵ６０１は、統合するノードが存在するか否かを判断する（Ｓ５５）。即ち、全仮想環境のうち、ある仮想環境において「機種別」の選択欄５２から「共有」の選択欄５１にフラグ５３の変更が行われるが、残りの仮想環境で、変更対象とする構成要素のノード名と同じノード名の構成要素が存在するか否かを判断する。よって、ＣＰＵ６０１は、ステップＳ５５では、ノード名「Ｈａｎｄ」と同一名称のノードが機種Ａ以外の機種Ｂ，Ｃに対応する機種別記憶領域６５２２，６５２３に記憶されているか否かを確認する。ＣＰＵ６０１は、統合するノードが存在すると判断した場合（Ｓ５５：Ｙｅｓ）、同じノード名のノード同士（構成要素同士）が一致するか否かを判断する（Ｓ５６）。
【０１６６】
例えば、ノード名「Ｈａｎｄ」と同一名称のノードが機種別記憶領域６５２２，６５２３に記憶されているので、ＣＰＵ６０１は、統合するノードが存在すると判断し、ステップＳ５６の処理に移行する。なお、ＣＰＵ６０１は、同一名称の機種別ノードが他の機種別記憶領域４５２ｉに記憶されていない場合（Ｓ５５：Ｎｏ）は、後述するステップＳ６２の処理に移行する。
【０１６７】
ＣＰＵ６０１は、ステップＳ５６において、同一名称の機種別ノードが一致すると判断した場合（Ｓ５６：Ｙｅｓ）、自動で統合する処理を実行する（Ｓ５７）。ステップＳ５７の処理は、機種別記憶領域６５２１に保存されている１機種の機種別ノードを共通記憶領域６５１に格納し、それ以外の機種別記憶領域６５２２，６５２３に格納されている機種別ノードは削除する。ＣＰＵ６０１は、ステップＳ５７の処理が完了すると、後述するステップＳ６２の処理に移行する。
【０１６８】
ＣＰＵ６０１は、ステップＳ５６において、同一名称の機種別ノードが一致しないと判断した場合、即ち同じノード名の構成要素同士が異なると判断した場合（Ｓ５６：Ｎｏ）、ユーザの操作に応じて同じノード名の構成要素の中から１つを選択する（Ｓ５８）。即ち、ＣＰＵ６０１は、統合対象の機種を選択する。ＣＰＵ６０１は、このユーザの操作を受け付ける画像として、フラグ変更確認ダイアログを表示装置７００（図１）の画面７１０に表示させる。
【０１６９】
図２４（ａ）及び図２４（ｂ）は、フラグ変更確認ダイアログを示す説明図である。図２４（ａ）及び図２４（ｂ）に示すフラグ変更確認ダイアログ８０には、確認項目の文章が記述されている。そして、フラグ変更確認ダイアログ８０は、確認すべき対象のノードを示す詳細表示ボックス８１と、どの仮想環境のノード（構成要素）に統一するかをユーザに選択させる統合機種選択８２とを備えている。
【０１７０】
対象であるノード名「Ｈａｎｄ」の仮想ロボットハンドの情報は、機種Ｂ，Ｃに対応する機種別記憶領域６５２２，６５２３にも記憶されている。共通記憶領域６５１に移動させるためには、どの機種の機種別記憶領域４５２ｉに記憶されているノード情報を統合すべきかを、ユーザに選択させる必要がある。図２４（ｂ）では、統合機種選択８２の「機種Ａ」がカーソル４０で選択（例えば左クリック）されている。そのため、ＣＰＵ６０１は、統合機種選択８２で共通記憶領域４５１に統合する、機種別記憶領域４５２ｉの選択状況に応じて、対象となる仮想環境のノード（構成要素）を選択する。統合機種選択８２のいずれかが選択されると、確定ボタン８３及びキャンセルボタン８４をアクティブとし、いずれかに確定できる状態となる。
【０１７１】
ＣＰＵ６０１は、確定ボタン８３及びキャンセルボタン８４のうち、ユーザに操作されたのが確定ボタン８３か否かを判断する（Ｓ５９）。ＣＰＵ６０１は、確定ボタン８３が操作されたと判断した場合（Ｓ５９：Ｙｅｓ）、統合処理を実行し（Ｓ６０）、選択した、機種Ａに対応する機種別記憶領域６５２１に格納されたノード名「Ｈａｎｄ」のノード情報を、共通記憶領域６５１に移動させる。即ちＣＰＵ６０１は、選択したノード情報を、共通ノード（共通構成要素）に設定する。
【０１７２】
このように、共通ノードに変更する機種の機種別ノードだけを選択して変更し、その他の機種の機種別ノードを自動的に削除することにより、簡易的に分類の変更を行うことができるようになる。
【０１７３】
ＣＰＵ６０１は、統合処理が終了すると、次のステップＳ６２の処理に移行する。ＣＰＵ６０１は、確定ボタン８３が操作されていない、即ちキャンセルボタン８４が操作されたと判断した場合（Ｓ５９：Ｎｏ）、図２３（ｂ）で行った、ノード名「Ｈａｎｄ」に対するフラグ５３の変更をキャンセルする（Ｓ６１）。そして、ＣＰＵ６０１は、次のステップＳ６２の処理に移行する。
【０１７４】
次に、ＣＰＵ６０１は、ステップＳ６２において、変更したノードのリストの全てのノードの処理を完了したか否かを判断する。ＣＰＵ６０１は、ステップＳ６２において、完了していないと判断した場合（Ｓ６２：Ｎｏ）、ステップＳ５３の処理に戻る。上述の例では、リストに存在するノード名「Ｐ００５」の処理が完了していないため、ステップＳ５３の処理に戻る。ＣＰＵ６０１は、ステップＳ５３においてノード名「Ｐ００５」を選択し、ステップＳ５４の判断処理を行う。
【０１７５】
ノード名「Ｐ００５」が選択されている場合、「共有」の選択欄５１から「機種別」の選択欄５２にフラグ５３が変更されている（Ｓ５４：Ｎｏ）。共通ノード（共通構成要素）から機種別ノード（個別構成要素）に分類を変更する操作がユーザによりなされている。この場合、ＣＰＵ６０１は、複製対象とする機種の選択を行う（Ｓ６３）。ＣＰＵ６０１は、複数の仮想環境のうち、機種別ノード（個別構成要素）として設定させる仮想環境をユーザに選択させるフラグ変更確認ダイアログを表示装置７００（図１）の画面７１０に表示させる。
【０１７６】
図２５（ａ）及び図２５（ｂ）は、フラグ変更確認ダイアログを示す説明図である。図２５（ａ）及び図２５（ｂ）に示すフラグ変更確認ダイアログ８５には、確認項目の文章が記述されている。そして、フラグ変更確認ダイアログ８５は、確認すべき対象のノードを示す詳細表示ボックス８６と、どの仮想環境に変更対象のノード情報を機種別ノード（個別構成要素）として設定するかをユーザに選択させる複製機種選択８７とを備えている。
【０１７７】
対象であるノード名「Ｐ００５」の教示点の情報は、共通記憶領域６５１に格納（記憶）されている。したがって、共通記憶領域６５１からいずれの機種別記憶領域６５２１，６５２２，６５２３にノード情報を複製すべきかを選択させる必要がある。図２５（ｂ）では、複製機種選択８７の「機種Ａ」、「機種Ｂ」及び「機種Ｃ」がカーソル４０で選択（例えば左クリック）されている。そのため、ＣＰＵ６０１は、複製機種選択８７における選択状況に応じて、複製の対象となる仮想環境を選択する。複製機種選択８７のいずれかが選択されると、確定ボタン８８及びキャンセルボタン８９をアクティブとし、いずれかに確定できる状態となる。
【０１７８】
ＣＰＵ６０１は、確定ボタン８８及びキャンセルボタン８９のうち、ユーザに操作されたのが確定ボタン８８か否かを判断する（Ｓ６４）。ＣＰＵ６０１は、確定ボタン８８が操作されたと判断した場合（Ｓ６４：Ｙｅｓ）、複製処理を実行する（Ｓ６５）。具体的には、共通記憶領域６５１に記憶されているノード名「Ｐ００５」の教示点のデータ（ノード情報）を、各機種別記憶領域６５２１，６５２２，６５２３に複製して記憶させ、共通記憶領域６５１のノード名「Ｐ００５」の教示点のデータを削除する。このように、ＣＰＵ６０１は、複数の仮想環境のうち、ユーザの操作により選択した仮想環境に対して、共有ノードとして設定されている分類の変更対象となるノード情報（構成要素）を、機種別ノード（個別構成要素）として設定する。
【０１７９】
ＣＰＵ６０１は、確定ボタン８８が操作されていない、即ちキャンセルボタン８９が操作されたと判断した場合（Ｓ６４：Ｎｏ）、図２３（ｂ）で行った、ノード名「Ｐ００５」に対するフラグ５３の変更をキャンセルする（Ｓ６６）。そして、ＣＰＵ６０１は、次のステップＳ６２の処理に移行する。
【０１８０】
ＣＰＵ６０１は、ステップＳ６２において、変更したノードのリストの全てのノードの処理を完了したと判断した場合、分類処理を終了する。このように、機種別ノードに変更する機種選択して、選択された機種の機種別ノードとして自動で複製して作成することで、簡易的に分類の変更を行うことができるようになる。
【０１８１】
図２６（ａ）は、分類処理確定後の機種Ａに対応する分類設定画像を示す説明図である。図２６（ｂ）は、分類処理確定後の機種Ｂに対応する分類設定画像を示す説明図である。図２６（ｃ）は、分類処理確定後の機種Ｃに対応する分類設定画像を示す説明図である。各機種ともに、ノード名「Ｈａｎｄ」のフラグ５３は「共通」の選択欄５１に、ノード名「Ｔｏｏｌ」に関連付けした「Ｐ００５」のフラグ５３は「機種別」の選択欄５２に設定される。
【０１８２】
以上、第３実施形態によれば、「共通」から「機種別」又は「機種別」から「共通」に分類変更するとき（つまり、分類処理時）に発生する入力ミスを低減させることができ、また作業に必要な教示工数を削減することができる。
【０１８３】
［第４実施形態］
次に、本発明の第４実施形態に係るロボットシステムについて説明する。第４実施形態では、不要なノードを削除する際に、削除対象となるノードが、子ノードが存在する親ノードである場合について説明する。なお、各仮想環境におけるノード（構成要素）の設定は、第３実施形態で説明した図２６（ａ）〜図２６（ｃ）の状態として説明する。ロボットシステムの構成は、第１実施形態と同様であるため、説明を省略する。
【０１８４】
図２７は、第４実施形態における削除処理を示すフローチャートである。図２８（ａ）は、構成要素の削除前の画面における表示状態を示す説明図である。図２８（ｂ）は、構成要素の削除後の画面における表示状態を示す説明図である。なお、機種設定部３１において「機種Ａ」、「機種Ｂ」、「機種Ｃ」のいずれか、例えば「機種Ａ」に設定された状態であるとする。
【０１８５】
図２８（ａ）に示すように、カーソル４０により例えばノード表示部３２のノード名「Ｔｏｏｌ」が選択され、キーボード８０２（図１）の削除コマンドである「Ｄｅｌｅｔｅ」キーが操作され、ＣＰＵ６０１に、削除の指示がなされたとする（Ｓ７１）。即ち、ＣＰＵ６０１には、ユーザの操作装置８００（図１）の操作により、ノード（構成要素）を削除する指示がなされる。この場合、削除対象としているのは、共有ノードに分類された構成要素である。
【０１８６】
ＣＰＵ６０１は、ユーザの操作により削除の指示がなされたノード（構成要素）、例えばノード名「Ｔｏｏｌ」のノードに子ノードが存在するか否かを確認する（Ｓ７２）。ＣＰＵ６０１は、子ノードが存在しない場合（Ｓ７２：Ｎｏ）、指示されたノードのみ削除を行い、削除処理を完了する。
【０１８７】
ＣＰＵ６０１は、子ノードが存在する場合（Ｓ７２：Ｙｅｓ）、子ノードのリスト取得処理を行う（Ｓ７３）。子ノードは、共通記憶領域６５１、及び機種別記憶領域６５２１，６５２２，６５２３（図５（ａ）及び図５（ｂ））にそれぞれ存在する可能性があるため、記憶領域ごとの子ノードのリストを取得する。
【０１８８】
ＣＰＵ６０１は、リスト取得後、表示装置７００（図１）の画面７１０に警告画像の表示を行う（Ｓ７４：削除警告処理、削除警告工程）。
【０１８９】
図２９は、削除処理の際の警告画像の一例を示す説明図である。図２９に示すように、警告画像として警告表示ダイアログ９０が表示される。警告表示ダイアログ９０は、削除対象の子ノードの詳細が記される警告詳細ボックス９１を含んでいる。
【０１９０】
図２６（ａ）〜図２６（ｃ）に示す例の場合、ノード名「Ｔｏｏｌ」のノードには、それぞれの機種において、ノード名「Ｐ００５」の教示点が子ノードとして関連付けられている。したがって、図２９の警告詳細ボックス９１には、機種別記憶領域６５２１，６５２２，６５２３にそれぞれ記憶されているノード名「Ｔｏｏｌ」のノードに関連づけられたノード名「Ｐ００５」の教示点の情報が記される。よって、ユーザは、警告表示ダイアログ９０を見ることにより、削除対象のノードに関連付けられた子ノードが存在するか否かを確認することができる。
【０１９１】
なお、図示は省略するが、共通記憶領域６５１に記憶されている子ノードが存在する場合には、「対象」の表示の代わりに「共通」の表示がなされる。
【０１９２】
図２９に示す警告表示ダイアログ９０には、削除を許可する許可ボタンである確定ボタン９２と、削除を許可しない不許可ボタンを示すキャンセルボタン９３が含まれている。即ち、ＣＰＵ６０１は、ステップＳ７４において、画面７１０（図１）に確定ボタン９２とキャンセルボタン９３とを表示させる。
【０１９３】
ステップＳ７４の後、ＣＰＵ６０１は、確定ボタン９２とキャンセルボタン９３のうち、ユーザに確定ボタン９２が操作されたか否かを判断する（Ｓ７５）。ＣＰＵ６０１は、ユーザに確定ボタン９２が操作された場合（Ｓ７５：Ｙｅｓ）、削除対象の構成要素を削除するとともに、削除対象の構成要素に対する子ノードの構成要素を削除する。即ち、確定ボタン９２が操作されると、削除が確定し、ノード名「Ｔｏｏｌ」のノード情報と関連付けられたノード名「Ｐ００５」のノード情報が削除される。そして、図２８（ｂ）に示すように、仮想ツール３００Ｇと教示点Ｐ５の表示がモデル表示部１０から削除され、ノード名「Ｔｏｏｌ」及びノード名「Ｐ００５」の表示がモデル管理部３０から削除される。
【０１９４】
ＣＰＵ６０１は、キャンセルボタン９３が操作された場合（Ｓ７５：Ｎｏ）、削除をキャンセルし、削除指示前の状態に戻る。この場合、図２８（ａ）の削除指示前の状態を維持する。
【０１９５】
以上のように、関連する子ノードの存在の有無を確認し、子ノードが存在する場合、削除されることを警告することで、削除ミスが低減する。また、共有ノードを削除する場合には、それぞれの仮想環境に対して個別に削除作業を行わなくてもよいので、削除を行う教示工数を削減することができる。
【０１９６】
なお、機種Ａ，Ｂ，Ｃに対応する仮想環境を作成した後、不要になったノードを削除する必要が生じた場合、最端の枝である子ノードの削除であれば、そのまま削除しても問題ない。
【０１９７】
［第５実施形態］
次に、本発明の第５実施形態に係るロボットシステムについて説明する。第５実施形態では、同一名称のノード情報を一覧表示で確認及び編集を行う場合について説明する。図３０は、第５実施形態における機種間の同一名称のノードを一覧表示及び編集する処理を示すフローチャートである。図３１は、第５実施形態において画面表示の初期状態を示す説明図である。なお、第５実施形態において、初期状態は、第３実施形態で説明した図２６（ａ）〜図２６（ｃ）の状態として説明する。ロボットシステムの構成は、第１実施形態と同様であるため、説明を省略する。
【０１９８】
ここで、ＣＰＵ６０１は、前述したとおり、オフライン教示を行うソフトウェアが起動すると、ＧＵＩであるモデル表示部１０、パラメータ設定部２０及びモデル管理部３０を表示装置７００（図１）の画面７１０に表示させる。第４実施形態では、モデル管理部３０には、分類ボタン（第１ボタン）３３と、干渉確認ボタン（第２ボタン）３４と、姿勢確認ボタン（第３ボタン）３５と、機種間編集ボタン（第４ボタン）３７とが含まれている。したがって、ＣＰＵ６０１は、これらボタン３３，３４，３５，３７も表示させることになる（第１ボタン表示処理、第２ボタン表示処理、第３ボタン表示処理、第４ボタン表示処理）。また、機種設定部３１では、「機種Ａ」が選択されているものとする。
【０１９９】
ＣＰＵ６０１は、図３１に示す機種間編集ボタン３７がユーザの操作によってカーソル４０で操作（例えば左クリック）されることで、編集対象とするノードの選択が可能な状態となる（Ｓ８１）。よって、ステップＳ８１では、ユーザにより、機種間編集ボタン３７が操作され、かつノード表示部３２に表示された複数のノード名のうちいずれかのノード名が選択される。以下、例えばノード表示部３２においてユーザによりノード名「Ｗｏｒｋ」が選択された場合について説明する。
【０２００】
ＣＰＵ６０１は、各仮想環境の間で、選択されたノード名「Ｗｏｒｋ」と同じノード名の構成要素の情報を、画面７１０（図１）にリスト表示させる（Ｓ８２：リスト表示処理、リスト表示工程）。
【０２０１】
図３２（ａ）及び図３２（ｂ）は、第５実施形態において画面にリスト表示させたリスト画像を示す説明図である。図３２（ａ）は編集前、図３２（ｂ）は編集後を示す。
【０２０２】
図３２（ａ）に示すリスト画像９４には、編集中のノード名を表示する編集ボックス９５と、編集中の仮想環境毎のパラメータリスト９６とが含まれている。編集ボックス９５と、パラメータリスト９６の内容を、ユーザがキーボード８０２等を操作することにより編集することで、仮想環境間で同一名称のノード（パラメータや名称）を編集することができる。
【０２０３】
よって、ＣＰＵ６０１は、リスト画像９４を表示させたとき、表示対象となっている各仮想環境のノード（構成要素）の情報の編集を受け付け、編集されたときには、編集後の情報を表示させる（Ｓ８３）。即ち、ＣＰＵ６０１は、編集結果をリスト画像９４に反映させる。
【０２０４】
例えば、図３２（ｂ）に示すように、編集ボックス９５でノード名を「Ｗｏｒｋ」から「Ｗｏｒｋ１」に変更する。また、機種ＢのＹ軸のパラメータ値を「−８０」から「０」に変更する。
【０２０５】
次にＣＰＵ６０１は、リスト画像９４として表示させている確定ボタン９７及びキャンセルボタン９８のうち、ユーザに操作されたのが確定ボタン９７か否かを判断する（Ｓ８４）。ＣＰＵ６０１は、確定ボタン９７が操作されたと判断した場合（Ｓ８４：Ｙｅｓ）、編集結果を機種別記憶領域のそれぞれに反映する（Ｓ８５）。
【０２０６】
ＣＰＵ６０１は、確定ボタン９７が操作されていない、即ちキャンセルボタン９８が操作されたと判断した場合（Ｓ８４：Ｎｏ）、編集結果を削除して、リスト画像９４を非表示にし、機種間編集ボタンが操作される前の状態（Ｓ８２）まで戻る。
【０２０７】
以上のように、複数の仮想環境間で同一名称のノードを一覧で表示し、編集可能としたことで、一目で確認を行えるようになり、教示作業の効率が向上する。また、複数の仮想環境間で共通する名称などを一括して変更することができるので、入力ミスが低減し、教示工数を削減することができる。また、複数の仮想環境間で対比しながらパラメータの編集を行うことができ、教示作業の効率が向上する。
【０２０８】
なお、本発明は、以上説明した実施形態に限定されるものではなく、本発明の技術的思想内で多くの変形が可能である。また、本発明の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本発明の実施形態に記載されたものに限定されない。
【０２０９】
上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【０２１０】
上述の実施形態では、分類ボタン（第１ボタン）３３、干渉確認ボタン（第２ボタン）３４、姿勢確認ボタン（第３ボタン）３５、機種間編集ボタン（第４ボタン）３７がソフトウェアで実現した画面上のボタンとしたが、これに限定するものではない。ソフトウェアで構成されたボタンの代わりにハードウェアで構成されたボタン（実ボタン）で構成してもよい。この場合、教示装置が実ボタンを備えていることになる。
【０２１１】
また、上述の実施形態では、表示装置７００が液晶モニタ等のモニタであり、操作装置８００がマウス８０１及びキーボード８０２である場合について説明したが、これに限定するものではない。表示装置と操作装置とでタッチパネルディスプレイが構成されていてもよい。この場合、ユーザが直接画面をタッチ操作することで、画面に表示されたボタン等を選択することが可能である。
【符号の説明】
【０２１２】
１００…ロボットシステム、１２０…壁（周辺物）、１３０…治工具（周辺物）、２００…ロボット、３００…ツール（周辺物）、４００…制御装置、５００…教示システム、６００…教示装置、６０１…ＣＰＵ（処理部）、７００…表示装置、７１０…画面、８００…操作装置、８０１…マウス、８０２…キーボード、Ｗ…ワーク（周辺物）
【図１】
2017213644.tif 000003
【図２】
2017213644.tif 000004
【図３】
2017213644.tif 000005
【図４】
2017213644.tif 000006
【図５】
2017213644.tif 000007
【図６】
2017213644.tif 000008
【図７】
2017213644.tif 000009
【図８】
2017213644.tif 000010
【図９】
2017213644.tif 000011
【図１０】
2017213644.tif 000012
【図１１】
2017213644.tif 000013
【図１２】
2017213644.tif 000014
【図１３】
2017213644.tif 000015
【図１４】
2017213644.tif 000016
【図１５】
2017213644.tif 000017
【図１６】
2017213644.tif 000018
【図１７】
2017213644.tif 000019
【図１８】
2017213644.tif 000020
【図１９】
2017213644.tif 000021
【図２０】
2017213644.tif 000022
【図２１】
2017213644.tif 000023
【図２２】
2017213644.tif 000024
【図２３】
2017213644.tif 000025
【図２４】
2017213644.tif 000026
【図２５】
2017213644.tif 000027
【図２６】
2017213644.tif 000028
【図２７】
2017213644.tif 000029
【図２８】
2017213644.tif 000030
【図２９】
2017213644.tif 000031
【図３０】
2017213644.tif 000032
【図３１】
2017213644.tif 000033
【図３２】
2017213644.tif 000034